From 554d6f7670a434502fcbf2e1788e61d8545d8e7d Mon Sep 17 00:00:00 2001 From: Alexei Karpenko Date: Mon, 4 May 2026 12:07:51 +0200 Subject: [PATCH] added FileCheckJob for checking files in file system, but not in db --- application/controllers/jobs/FileCheckJob.php | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 application/controllers/jobs/FileCheckJob.php diff --git a/application/controllers/jobs/FileCheckJob.php b/application/controllers/jobs/FileCheckJob.php new file mode 100644 index 000000000..0a59ca59c --- /dev/null +++ b/application/controllers/jobs/FileCheckJob.php @@ -0,0 +1,64 @@ +load->model('content/Dms_model', 'DmsModel'); + $this->_checkFiles(); + } + + /** + * + * @param + * @return object success or error + */ + private function _checkFiles() + { + $nonExistentFiles = []; + $count = 0; + + $dir = DMS_PATH; + + $it = new RecursiveDirectoryIterator($dir); + + foreach (new RecursiveIteratorIterator($it) as $file) { + if($file->isDir()) continue; + $filename = $file->getFilename(); + //echo "Checking $filename...\n"; + $this->DmsModel->addSelect('dms_id'); + $this->DmsModel->addJoin('campus.tbl_dms_version', 'dms_id'); + $result = $this->DmsModel->loadWhere(['filename' => $filename]); + + if (isError($result)) + { + echo getError($result); + continue; + } + + if (!hasData($result)) + { + $nonExistentFiles[] = $filename; + } + $count++; + } + + echo "\n$count files checked, ".count($nonExistentFiles)." files exist in file system, but not in database:\n"; + echo $dir.implode("\n$dir", $nonExistentFiles)."\n"; + } +}