<?php /** * ZeroBin * * a zero-knowledge paste bin * * @link http://sebsauvage.net/wiki/doku.php?id=php:zerobin * @copyright 2012 Sébastien SAUVAGE (sebsauvage.net) * @license http://www.opensource.org/licenses/zlib-license.php The zlib/libpng License * @version 0.17 */ /** * persistence * * persists data in PHP files */ abstract class persistence { /** * @access private * @static * @var string */ private static $_path = 'data'; /** * set the path * * @access public * @static * @param string $path * @return void */ public static function setPath($path) { self::$_path = $path; } /** * get the path * * @access public * @static * @param string $filename * @return void */ public static function getPath($filename = null) { if(strlen($filename)) { return self::$_path . '/' . $filename; } else { return self::$_path; } } /** * checks if the file exists * * @access protected * @static * @param string $filename * @return bool */ protected static function _exists($filename) { self::_initialize(); return is_file(self::$_path . '/' . $filename); } /** * prepares path for storage * * @access protected * @static * @return void */ protected static function _initialize() { // Create storage directory if it does not exist. if (!is_dir(self::$_path)) mkdir(self::$_path, 0705); // Create .htaccess file if it does not exist. $file = self::$_path . '/.htaccess'; if (!is_file($file)) { file_put_contents( $file, 'Allow from none' . PHP_EOL . 'Deny from all'. PHP_EOL ); } } /** * store the data * * @access protected * @static * @param string $filename * @param string $data * @return string */ protected static function _store($filename, $data) { self::_initialize(); $file = self::$_path . '/' . $filename; file_put_contents($file, $data); chmod($file, 0705); return $file; } }