85 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?
 | |
| 
 | |
| class FileStorage {
 | |
| 
 | |
| 	function FileStorage($path, $shoutLog = false) {
 | |
| 		$this->shoutLog = $shoutLog;
 | |
| 		$folder = 'logs';
 | |
| 		if (!is_dir($folder)) $folder = '../' . $folder;
 | |
| 		if (!is_dir($folder)) $folder = '../' . $folder;
 | |
| 	
 | |
| 		$this->path = $folder . '/' . $path . '.txt';
 | |
| 	}
 | |
| 	
 | |
| 	function open($lock = false) {
 | |
| 		$this->handle = fopen($this->path, 'a+');
 | |
| 
 | |
| 		if ($lock) {
 | |
| 			$this->lock();
 | |
| 			return $this->load();
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	function close(&$array) {
 | |
| 		if (isset($array))
 | |
| 			$this->save($array);
 | |
| 				
 | |
| 		$this->unlock();
 | |
| 		fclose($this->handle);
 | |
| 		unset($this->handle);
 | |
| 	}
 | |
| 
 | |
| 	function load() {
 | |
| 		if (($contents = $this->read($this->path)) == null)
 | |
| 			return $this->resetArray();
 | |
| 
 | |
| 		return unserialize($contents);
 | |
| 	}
 | |
| 
 | |
| 	function save(&$array, $unlock = true) {
 | |
| 		$contents = serialize($array);
 | |
| 		$this->write($contents);
 | |
| 		if ($unlock) $this->unlock();
 | |
| 	}
 | |
| 
 | |
| 	function unlock() {
 | |
| 		if (isset($this->handle))
 | |
| 			flock($this->handle, LOCK_UN);
 | |
| 	}
 | |
| 	
 | |
| 	function lock() {
 | |
| 		if (isset($this->handle))
 | |
| 			flock($this->handle, LOCK_EX);
 | |
| 	}
 | |
| 
 | |
| 	function read() {
 | |
| 		fseek($this->handle, 0);
 | |
| 		//return stream_get_contents($this->handle);
 | |
| 		return file_get_contents($this->path);
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	function write($contents) {
 | |
| 		ftruncate($this->handle, 0);
 | |
| 		fwrite($this->handle, $contents);
 | |
| 	}
 | |
| 
 | |
| 	function resetArray() {
 | |
| 		if ($this->shoutLog)
 | |
| 			$default = array(
 | |
| 				'info' => array(
 | |
| 					'latestTimestamp' => -1
 | |
| 				),
 | |
| 	
 | |
| 				'posts' => array()
 | |
| 			);
 | |
| 		else
 | |
| 			$default = array();
 | |
| 
 | |
| 		$this->save($default, false);
 | |
| 		return $default;
 | |
| 	}
 | |
| 
 | |
| }
 | |
| 
 | |
| ?>
 |