diff options
author | Yuchen Pei <hi@ypei.me> | 2021-10-15 09:52:00 +1100 |
---|---|---|
committer | Yuchen Pei <hi@ypei.me> | 2021-10-15 09:52:00 +1100 |
commit | 71b0e901f5fb1cfcd162d8acc23120d3f77a3152 (patch) | |
tree | 323c00faef1edc7dea2e88ff581cc2258b2b6432 /h-source/Library/Files/Log.php | |
parent | 72cce24864b064b5762f4fe97fdf40d8d2ad4b51 (diff) | |
parent | 07f5140771388c9e0c8a99b0dd2e5d950bdb173b (diff) |
Merge branch 'development' into h-node
Diffstat (limited to 'h-source/Library/Files/Log.php')
-rw-r--r-- | h-source/Library/Files/Log.php | 114 |
1 files changed, 0 insertions, 114 deletions
diff --git a/h-source/Library/Files/Log.php b/h-source/Library/Files/Log.php deleted file mode 100644 index 7eda7b7..0000000 --- a/h-source/Library/Files/Log.php +++ /dev/null @@ -1,114 +0,0 @@ -<?php - -// EasyGiant is a PHP framework for creating and managing dynamic content -// -// Copyright (C) 2009 - 2011 Antonio Gallo -// See COPYRIGHT.txt and LICENSE.txt. -// -// This file is part of EasyGiant -// -// EasyGiant is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// EasyGiant is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with EasyGiant. If not, see <http://www.gnu.org/licenses/>. - -if (!defined('EG')) die('Direct access not allowed!'); - -//class to manage a file di log -//this is a singleton class -class Files_Log -{ - - const DS = DIRECTORY_SEPARATOR; - - // array of instances of the class - //key: name of the instance, value:instance. The name of the instance is also the name of the log file to open - private static $instance = array(); - - public static $logFolder = './'; //the log folder - public static $logExtension = '.log'; //the extension of the log files - public static $logPermission = 0777; - - private $splFile; //SplFileObject - - //$fileName: the file to open - private function __construct($fileName) - { - $finalChar = self::$logFolder[strlen(self::$logFolder) - 1]; - if (strcmp($finalChar,self::DS) !== 0) self::$logFolder .= self::DS; - - $path = self::$logFolder . $fileName . self::$logExtension; - $this->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 |