PBOOTCMS图片清理升级版(过滤视频)

    代码如下,不会清理视频:

    <?php
    
    namespace app\admin\controller\system;
    
    use app\admin\model\content\CompanyModel;
    use app\admin\model\content\ContentModel;
    use app\admin\model\content\ContentSortModel;
    use app\admin\model\content\LinkModel;
    use app\admin\model\content\SiteModel;
    use app\admin\model\content\SlideModel;
    use app\admin\model\content\LabelModel;
    use app\home\model\MemberModel;
    use core\basic\Controller;
    
    class ImageExtController extends Controller
    {
        private $companyModel;
        private $contentSortModel;
        private $contentModel;
        private $linkModel;
        private $memberModel;
        private $siteModel;
        private $slideModel;
    	private $LabelModel;
    
        public function __construct()
        {
            $this->companyModel = new CompanyModel();
            $this->contentSortModel = new ContentSortModel();
            $this->contentModel = new ContentModel();
            $this->linkModel = new LinkModel();
            $this->memberModel = new MemberModel();
            $this->siteModel = new SiteModel();
            $this->slideModel = new SlideModel();
    		$this->LabelModel = new LabelModel();
        }
    
        /**
         * 过滤视频文件,返回非视频文件列表
         * @param array $fileList 文件列表
         * @return array 过滤后的文件列表
         */
        private function filterVideoFiles($fileList)
        {
            $videoExtensions = ['mp4', 'avi', 'mov', 'wmv', 'flv', 'webm', 'mkv', 'm4v', '3gp', 'ogv', 'ts', 'mts', 'm2ts'];
            $filteredFiles = [];
            
            foreach ($fileList as $file) {
                $extension = strtolower(pathinfo($file, PATHINFO_EXTENSION));
                if (!in_array($extension, $videoExtensions)) {
                    $filteredFiles[] = $file;
                }
            }
            
            return $filteredFiles;
        }
    
        public function index()
        {
            $this->display('system/extimage.html');
        }
    
        public function checkDataFile()
        {
            $count = 30;
            $page = get('page') ? get('page') : 1;
            $start = ($page - 1) * $count;
            $dataArr = [];
            $company = $this->companyModel->getImage();
            $contentSort = $this->contentSortModel->getImage();
            $content = $this->contentModel->getImage();
            $link = $this->linkModel->getImage();
            $member = $this->memberModel->getImage();
            $site = $this->siteModel->getImage();
            $slide = $this->slideModel->getImage();
    		$label = $this->LabelModel->getImage();
            $resArr = array_merge_recursive($company, $contentSort, $content, $link, $member, $site, $slide, $label);
            array_walk_recursive($resArr, function ($key1) use (&$dataArr) {
                if (!empty($key1)) {
                    $dataArr[] = str_replace(SITE_DIR . SITE_DIR . '/', SITE_DIR . '/', DOC_PATH . SITE_DIR .$key1);
                }
                return $dataArr;
            });
            $dataArr = array_unique($dataArr);
            //获取上传的文件
            $Filepath = DOC_PATH . STATIC_DIR . '/upload';
            $fileList = get_dir($Filepath);
            $fileArr = [];
            array_walk_recursive($fileList, function ($key) use (&$fileArr) {
                $fileArr[] = $key;
                return $fileArr;
            });
    
            // 过滤视频文件
            $fileArr = $this->filterVideoFiles($fileArr);
    
            //对比文件
            $difference = array_diff($fileArr, $dataArr);
            $pageList = array_slice($difference, $start, $count);
            $http = is_https() ? 'https://' : 'http://';
            foreach ($pageList as &$value) {
                $value = [
                    'real_path' => $value,
                    'static_path' => $http . $_SERVER['SERVER_NAME'] . str_replace(DOC_PATH, '', $value),
                    'update_time' => date('Y-m-d H:i:s', filemtime($value))
                ];
            }
            $jsonData = ['code' => 0,'msg'=> '', 'count' => count($difference),'data' => $pageList];
            return json_encode($jsonData);
    
        }
    
        public function do_ext()
        {
            $type = post('type');
            $list = post('list');
    
            $movePath = DOC_PATH . STATIC_DIR . '/backup/ImageExt';
            check_dir($movePath, true);
    
            switch ($type){
                case 0:
                    //清理所选文件
                    foreach ($list as $value){
                        // 跳过视频文件
                        $extension = strtolower(pathinfo($value['real_path'], PATHINFO_EXTENSION));
                        $videoExtensions = ['mp4', 'avi', 'mov', 'wmv', 'flv', 'webm', 'mkv', 'm4v', '3gp', 'ogv', 'ts', 'mts', 'm2ts'];
                        if (in_array($extension, $videoExtensions)) {
                            continue;
                        }
                        
                        $fileName = substr(strrchr($value['real_path'], "/"), 1);
                        $filePath = strstr($value['real_path'],'/static');
                        $fileDir = str_replace($fileName,'',$filePath);
                        check_dir($movePath . $fileDir, true);
                        rename($value['real_path'], $movePath . $filePath);
                    }
                    break;
                case 1:
                    //清理所有冗余文件
                    //获取上传的文件
                    $Filepath = DOC_PATH . STATIC_DIR . '/upload';
                    $fileList = get_dir($Filepath);
                    $fileArr = [];
                    array_walk_recursive($fileList, function ($key) use (&$fileArr) {
                        $fileArr[] = $key;
                        return $fileArr;
                    });
                    
                    // 过滤视频文件
                    $fileArr = $this->filterVideoFiles($fileArr);
                    
                    //查询数据
                    $dataArr = [];
                    $company = $this->companyModel->getImage();
                    $contentSort = $this->contentSortModel->getImage();
                    $content = $this->contentModel->getImage();
                    $link = $this->linkModel->getImage();
                    $member = $this->memberModel->getImage();
                    $site = $this->siteModel->getImage();
                    $slide = $this->slideModel->getImage();
    				$Label = $this->LabelModel->getImage();
                    $resArr = array_merge_recursive($company, $contentSort, $content, $link, $member, $site, $slide, $Label);
                    array_walk_recursive($resArr, function ($key1) use (&$dataArr) {
                        if (!empty($key1)) {
                            $dataArr[] = str_replace(SITE_DIR . SITE_DIR . '/', SITE_DIR . '/', DOC_PATH . SITE_DIR .$key1);
                        }
                        return $dataArr;
                    });
                    $dataArr = array_unique($dataArr);
                    //对比文件并执行文件迁移
                    $difference = array_diff($fileArr, $dataArr);
                    $movePath = DOC_PATH . STATIC_DIR . '/backup/ImageExt/';
                    check_dir($movePath, true);
                    foreach ($difference as $path) {
                        $fileName = substr(strrchr($path, "/"), 1);
                        $filePath = strstr($path,'/static');
                        $fileDir = str_replace($fileName,'',$filePath);
                        check_dir($movePath . $fileDir, true);
                        rename($path, $movePath . $filePath);
                    }
                    break;
            }
            json(1,'');
        }
    }