From 07f5140771388c9e0c8a99b0dd2e5d950bdb173b Mon Sep 17 00:00:00 2001 From: Yuchen Pei Date: Thu, 14 Oct 2021 15:16:42 +1100 Subject: moving h-source subdir out. --- h-source/admin/Library/Files/Log.php | 97 ------- h-source/admin/Library/Files/Upload.php | 451 -------------------------------- h-source/admin/Library/Files/index.html | 1 - 3 files changed, 549 deletions(-) delete mode 100644 h-source/admin/Library/Files/Log.php delete mode 100755 h-source/admin/Library/Files/Upload.php delete mode 100644 h-source/admin/Library/Files/index.html (limited to 'h-source/admin/Library/Files') diff --git a/h-source/admin/Library/Files/Log.php b/h-source/admin/Library/Files/Log.php deleted file mode 100644 index 895c26d..0000000 --- a/h-source/admin/Library/Files/Log.php +++ /dev/null @@ -1,97 +0,0 @@ -splFile = new SplFileObject($path,'a+'); - //change the permission of the file - @chmod($path,self::$logPermission); - } - - // The singleton method - // $instanceName: name of the key of self::$instance. It is also the name of the log file to open - public static function getInstance($instanceName) - { - if (!isset(self::$instance[$instanceName])) { - $className = __CLASS__; - self::$instance[$instanceName] = new $className($instanceName); - } - - return self::$instance[$instanceName]; - } - - //write the string $string at the end of the file - public function writeString($string,$format = 'Y-m-d H:i:s') - { - $date = date($format); - $this->splFile->fwrite("[$date]\t".$string."\n"); - } - - //get the date string of the line $line - public function getDateString($line) - { - if (preg_match('/^[\[]{1}([a-zA-Z0-9:\-\s])*[\]]{1}/',$line,$match)) - { - $match[0] = str_replace('[',null,$match[0]); - $match[0] = str_replace(']',null,$match[0]); - return $match[0]; - } - else - { - return false; - } - } - - //delete all the lines older than a number of days equal to $days - public function clearBefore($days = 30) - { - $tempArray = array(); - $newTime = time() - (int)$days * 24 * 3600; - foreach ($this->splFile as $line) - { - $lineTime = strtotime($this->getDateString($line)); - if ($lineTime !== false and $lineTime > $newTime) - { - $tempArray[] = $line; - } - } - $this->splFile->ftruncate(0); - foreach ($tempArray as $row) - { - $this->splFile->fwrite($row); - } - } - - // Prevent users to clone the instance - public function __clone() - { - throw new Exception('error in '. __METHOD__.': clone is not allowed'); - } - -} \ No newline at end of file diff --git a/h-source/admin/Library/Files/Upload.php b/h-source/admin/Library/Files/Upload.php deleted file mode 100755 index 47289fd..0000000 --- a/h-source/admin/Library/Files/Upload.php +++ /dev/null @@ -1,451 +0,0 @@ -directory. The path starts from the $base folder - private $files = array(); //files inside the current directory - private $relFiles = array(); //files inside $this->directory. The path starts from the $base directory - private $params; //class parameters - private $pattern = null; //the pattern for the preg_match function - - protected $_resultString; //reference to the class uploadStrings containing all the result strings - - public $fileName = null; //the name of the last file that has been uploaded - public $notice = null; //the result string of the operation - - public function __construct($base,$params = null, $directory = null) { - - $this->base = $this->addTrailingSlash($base); - - //set the match pattern - $tmp = str_replace(self::DS,'\\'.self::DS,$this->base); - $this->pattern = "/^(".$tmp.")/"; - - $defaultParams = array( - 'filesPermission'=>0777, - 'delFolderAction'=>'delFolderAction', - 'delFileAction'=>'delFileAction', - 'createFolderAction'=>'createFolderAction', - 'uploadFileAction'=>'uploadFileAction', - 'maxFileSize' => 3000000, - 'language' => 'eng', - 'allowedExtensions'=>'jpg,jpeg,png,gif,txt', - 'fileUploadKey' => 'userfile' - ); - - //set the $this->scaffold->params array - if (is_array($params)) - { - foreach ($params as $key => $value) - { - $defaultParams[$key] = $value; - } - } - $this->params = $defaultParams; - - //instantiate the $_resultString object - $stringClass = 'Lang_'.$this->params['language'].'_UploadStrings'; - if (!class_exists($stringClass)) - { - $stringClass = 'Lang_Eng_UploadStrings'; - } - $this->_resultString = new $stringClass(); - - $this->setDirectory($directory); - - } - - //obtain the current directory - public function setDirectory($directory = null) - { - $relDir = (strcmp($directory,"") !== 0) ? $this->addTrailingSlash($directory) : null; - $absDir = $this->addTrailingSlash($this->base.$directory); - - if (is_dir($absDir)) - { - if ($this->isValidFolder($absDir)) - { - $this->directory = $relDir; - return true; - } - else - { - $this->notice = $this->_resultString->getString('not-child'); - } - } - else - { - $this->directory = null; - $this->notice = $this->_resultString->getString('not-dir'); - } - return false; - } - - //check if $folder is a folder and is subfolder of $this->base - protected function isValidFolder($folder) - { - if (is_dir($folder)) - { - $folder = $this->addTrailingSlash(realpath($folder)); - if ($this->isMatching($folder)) return true; - } - return false; - } - - protected function isMatching($path) - { - if (preg_match($this->pattern,$path)) - { - if (strstr($path,'..')) return false; - return true; - } - return false; - } - - public function getDirectory() { - return $this->directory; - } - - public function getBase() - { - return $this->base; - } - - public function getSubDir() { - return $this->subDir; - } - - public function getRelSubDir() - { - return $this->relSubDir; - } - - public function getFiles() { - return $this->files; - } - - public function getRelFiles() - { - return $this->relFiles; - } - - public function getParentDir() { - return $this->parentDir; - } - - //add the trailing slash to the string - protected function addTrailingSlash($string) - { - $finalChar = $string[strlen($string) - 1]; - if (strcmp($finalChar,self::DS) !== 0) - { - return $string.self::DS; - } - return $string; - } - - protected function urlDeep($dir) { #funzione per creare l'indirizzo completo della cartella all'interno della quale voglio entrare - #$dir:cartella all'interno della quale voglio entrare - return $this->base.$this->directory.$dir.self::DS; - } - - public function listFiles() { #creo la lista di file e cartelle all'interno della directory corrente - $items = scandir($this->base.$this->directory); - foreach( $items as $this_file ) { - if( strcmp($this_file,".") !== 0 && strcmp($this_file,"..") !== 0 ) { - if (is_dir($this->urlDeep($this_file))) { - $this->subDir[] = $this_file; - $this->relSubDir[] = $this->directory.$this_file; - } else { - $this->files[] = $this_file; - $this->relFiles[] = $this->directory.$this_file; - } - } - } - //get the parent dir - $this->parentDir(); - } - - //get the extension of the file - protected function getFileExtension($file) - { - return strtolower(end(explode('.', $file))); - } - - protected function parentDir() { #individuo la cartella madre - - $folders = explode(self::DS,$this->directory); - array_pop($folders); - array_pop($folders); - $parent = implode(self::DS,$folders); - $parent = (strcmp($parent,"") !== 0) ? $this->addTrailingSlash($parent) : null; - - if ($this->isValidFolder($this->base.$parent)) - { - $this->parentDir = $parent; - } - else - { - $this->parentDir = null; - } - } - - //create the $name subfolder of the $this->directory folder - public function createFolder($name) { #funzione per creare una cartella nella directory corrente - $name = basename($name); - if (strcmp(trim($name),'') !== 0) - { - if (is_writable($this->base.$this->directory)) - { - $path = $this->base.$this->directory.$name; - - if ($this->isMatching($path)) - { - if (!file_exists($path)) - { - if (@mkdir($path,$this->params['filesPermission'])) - { - @chmod($path, $this->params['filesPermission']); - $this->notice = $this->_resultString->getString('executed'); - return true; - } - else - { - $this->notice = $this->_resultString->getString('error'); - } - } - else - { - $this->notice = $this->_resultString->getString('dir-exists'); - } - } - else - { - $this->notice = $this->_resultString->getString('not-child'); - } - } - else - { - $this->notice = $this->_resultString->getString('not-writable'); - } - } - else - { - $this->notice = $this->_resultString->getString('no-folder-specified'); - } - return false; - } - - //check if the $name folder is empty or not - protected function isEmpty($name) - { - $items = scandir($name); - foreach( $items as $this_file ) { - if( strcmp($this_file,".") !== 0 && strcmp($this_file,"..") !== 0 ) { - return false; - } - } - return true; - } - - public function removeFile($name) - { - $name = basename($name); - if (strcmp(trim($name),'') !== 0) - { - $path = $this->base.$this->directory.$name; - if ($this->isMatching($path)) - { - if ($this->removeAbsFile($path)) return true; - } - else - { - $this->notice = $this->_resultString->getString('not-child'); - } - } - else - { - $this->notice = $this->_resultString->getString('no-file-specified'); - } - return false; - } - - //remove the $name file - protected function removeAbsFile($name) - { - if (strcmp(trim($name),'') !== 0) - { - if (is_writable($name)) - { - if (@unlink($name)) - { - $this->notice = $this->_resultString->getString('executed'); - return true; - } - else - { - $this->notice = $this->_resultString->getString('error'); - } - } - else - { - $this->notice = $this->_resultString->getString('not-writable-file'); - } - } - else - { - $this->notice = $this->_resultString->getString('no-file-specified'); - } - return false; - } - - public function removeFolder($name) - { - $name = basename($name); - if (strcmp(trim($name),'') !== 0) - { - $dir = $this->base.$this->directory.$name; - if ($this->isMatching($dir)) - { - if ($this->removeAbsFolder($dir)) return true; - } - else - { - $this->notice = $this->_resultString->getString('not-child'); - } - } - else - { - $this->notice = $this->_resultString->getString('no-folder-specified'); - } - return false; - } - - //remove the $name folder - protected function removeAbsFolder($name) { - if (strcmp(trim($name),'') !== 0) { - if (is_writable($name)) - { - if ($this->isEmpty($name)) - { - if (@rmdir($name)) - { - $this->notice = $this->_resultString->getString('executed'); - return true; - } - else - { - $this->notice = $this->_resultString->getString('error'); - } - } - else - { - $this->notice = $this->_resultString->getString('not-empty'); - } - } - else - { - $this->notice = $this->_resultString->getString('not-writable'); - } - } - else - { - $this->notice = $this->_resultString->getString('no-folder-specified'); - } - return false; - } - - //upload a file in the current directory - //$fileName: name of the file - public function uploadFile($fileName = null) { - $userfile = $this->params['fileUploadKey']; - $ext = $this->getFileExtension($_FILES[$userfile]["name"]); - $fileName = isset($fileName) ? $fileName.".$ext" : basename($_FILES[$userfile]["name"]); - - $this->fileName = $fileName; - - if(strcmp(trim($_FILES[$userfile]["name"]),"") !== 0) - { - if(@is_uploaded_file($_FILES[$userfile]["tmp_name"])) { - if ($_FILES[$userfile]["size"] <= $this->params['maxFileSize']) - { - //check the extension of the file - $AllowedExtensionsArray = explode(',',$this->params['allowedExtensions']); - - if (in_array($ext,$AllowedExtensionsArray)) - { - //check if the file doesn't exists - if (!file_exists($this->base.$this->directory.$fileName)) - { - if (@move_uploaded_file($_FILES[$userfile]["tmp_name"],$this->base.$this->directory.$fileName)) - { - @chmod($this->base.$this->directory.$fileName, $this->params['filesPermission']); - $this->notice = $this->_resultString->getString('executed'); - return true; - } - else - { - $this->notice = $this->_resultString->getString('error'); - } - } - else - { - $this->notice = $this->_resultString->getString('file-exists'); - } - } - else - { - $this->notice = $this->_resultString->getString('not-allowed-ext'); - } - } - else - { - $this->notice = $this->_resultString->getString('size-over'); - } - } - else - { - $this->notice = $this->_resultString->getString('no-upload-file'); - } - } - else - { - $this->notice = $this->_resultString->getString('no-upload-file'); - } - return false; - } - - //update the folder tree - public function updateTree() { - - if (isset($_POST[$this->params['delFolderAction']])) { - $this->removeFolder($_POST[$this->params['delFolderAction']]); - } - - if (isset($_POST[$this->params['delFileAction']])) { - $this->removeFile($_POST[$this->params['delFileAction']]); - } - - if (isset($_POST[$this->params['createFolderAction']])) { - $this->createFolder($_POST['folderName']); - } - - if (isset($_POST[$this->params['uploadFileAction']])) { - $this->uploadFile(); - } - - } -} \ No newline at end of file diff --git a/h-source/admin/Library/Files/index.html b/h-source/admin/Library/Files/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/admin/Library/Files/index.html +++ /dev/null @@ -1 +0,0 @@ - -- cgit v1.2.3