2017-03-24 22:42:11 +00:00
|
|
|
<?php
|
|
|
|
/**
|
|
|
|
* PrivateBin
|
|
|
|
*
|
|
|
|
* a zero-knowledge paste bin
|
|
|
|
*
|
|
|
|
* @link https://github.com/PrivateBin/PrivateBin
|
|
|
|
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
|
|
|
|
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
|
|
|
|
* @version 1.1
|
|
|
|
*/
|
|
|
|
|
|
|
|
namespace PrivateBin\Persistence;
|
|
|
|
|
|
|
|
use Exception;
|
|
|
|
use PrivateBin\Json;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* DataStore
|
|
|
|
*
|
|
|
|
* Handles data storage for Data\Filesystem.
|
|
|
|
*/
|
|
|
|
class DataStore extends AbstractPersistence
|
|
|
|
{
|
2017-10-08 09:03:17 +00:00
|
|
|
/**
|
|
|
|
* First line in JSON files, to hide contents
|
|
|
|
*
|
|
|
|
* @const string
|
|
|
|
*/
|
|
|
|
const PROTECTION_LINE = '<?php http_response_code(403); /*';
|
|
|
|
|
2017-03-24 22:42:11 +00:00
|
|
|
/**
|
|
|
|
* store the data
|
|
|
|
*
|
|
|
|
* @access public
|
|
|
|
* @static
|
|
|
|
* @param string $filename
|
2017-03-24 22:54:37 +00:00
|
|
|
* @param array $data
|
2017-03-24 22:42:11 +00:00
|
|
|
* @return bool
|
|
|
|
*/
|
|
|
|
public static function store($filename, $data)
|
|
|
|
{
|
|
|
|
$path = self::getPath();
|
|
|
|
if (strpos($filename, $path) === 0) {
|
|
|
|
$filename = substr($filename, strlen($path));
|
|
|
|
}
|
|
|
|
try {
|
2017-10-08 09:03:17 +00:00
|
|
|
self::_store($filename, self::PROTECTION_LINE . PHP_EOL . Json::encode($data));
|
2017-03-24 22:42:11 +00:00
|
|
|
return true;
|
|
|
|
} catch (Exception $e) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
2017-10-08 09:31:41 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* get the data
|
|
|
|
*
|
|
|
|
* @access public
|
|
|
|
* @static
|
|
|
|
* @param string $filename
|
|
|
|
* @return array $data
|
|
|
|
*/
|
|
|
|
public static function get($filename)
|
|
|
|
{
|
|
|
|
return json_decode(substr(file_get_contents($filename), strlen(self::PROTECTION_LINE . PHP_EOL)));
|
|
|
|
}
|
2017-03-24 22:42:11 +00:00
|
|
|
}
|