2012-04-29 17:15:06 +00:00
|
|
|
<?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
|
2015-11-09 20:39:42 +00:00
|
|
|
* @version 0.22
|
2012-04-29 17:15:06 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
2012-04-30 20:58:08 +00:00
|
|
|
* zerobin_abstract
|
2012-04-29 17:15:06 +00:00
|
|
|
*
|
2012-04-30 20:58:08 +00:00
|
|
|
* Abstract model for ZeroBin data access, implemented as a singleton.
|
2012-04-29 17:15:06 +00:00
|
|
|
*/
|
2012-04-30 20:58:08 +00:00
|
|
|
abstract class zerobin_abstract
|
2012-04-29 17:15:06 +00:00
|
|
|
{
|
2015-09-27 01:03:55 +00:00
|
|
|
/**
|
2012-04-29 17:15:06 +00:00
|
|
|
* singleton instance
|
|
|
|
*
|
2015-08-16 13:55:31 +00:00
|
|
|
* @access protected
|
2012-04-29 17:15:06 +00:00
|
|
|
* @static
|
2015-10-03 13:52:37 +00:00
|
|
|
* @var zerobin_abstract
|
2012-04-29 17:15:06 +00:00
|
|
|
*/
|
2012-04-30 20:58:08 +00:00
|
|
|
protected static $_instance = null;
|
2012-04-29 17:15:06 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* enforce singleton, disable constructor
|
|
|
|
*
|
|
|
|
* Instantiate using {@link getInstance()}, zerobin is a singleton object.
|
|
|
|
*
|
|
|
|
* @access protected
|
|
|
|
*/
|
|
|
|
protected function __construct() {}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* enforce singleton, disable cloning
|
|
|
|
*
|
|
|
|
* Instantiate using {@link getInstance()}, zerobin is a singleton object.
|
|
|
|
*
|
|
|
|
* @access private
|
|
|
|
*/
|
|
|
|
private function __clone() {}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* get instance of singleton
|
|
|
|
*
|
|
|
|
* @access public
|
|
|
|
* @static
|
2015-08-16 13:55:31 +00:00
|
|
|
* @param array $options
|
2012-05-19 21:59:41 +00:00
|
|
|
* @return zerobin_abstract
|
2012-04-29 17:15:06 +00:00
|
|
|
*/
|
2012-08-25 22:49:11 +00:00
|
|
|
public static function getInstance($options) {}
|
2012-04-29 17:15:06 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Create a paste.
|
|
|
|
*
|
|
|
|
* @access public
|
|
|
|
* @param string $pasteid
|
|
|
|
* @param array $paste
|
2015-09-03 20:55:36 +00:00
|
|
|
* @return bool
|
2012-04-29 17:15:06 +00:00
|
|
|
*/
|
2012-04-30 20:58:08 +00:00
|
|
|
abstract public function create($pasteid, $paste);
|
2012-04-29 17:15:06 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Read a paste.
|
|
|
|
*
|
|
|
|
* @access public
|
|
|
|
* @param string $pasteid
|
|
|
|
* @return string
|
|
|
|
*/
|
2012-04-30 20:58:08 +00:00
|
|
|
abstract public function read($pasteid);
|
2012-04-29 17:15:06 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Delete a paste and its discussion.
|
|
|
|
*
|
|
|
|
* @access public
|
|
|
|
* @param string $pasteid
|
|
|
|
* @return void
|
|
|
|
*/
|
2012-04-30 20:58:08 +00:00
|
|
|
abstract public function delete($pasteid);
|
2012-04-29 17:15:06 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Test if a paste exists.
|
|
|
|
*
|
|
|
|
* @access public
|
|
|
|
* @param string $dataid
|
2015-09-27 01:03:55 +00:00
|
|
|
* @return bool
|
2012-04-29 17:15:06 +00:00
|
|
|
*/
|
2012-04-30 20:58:08 +00:00
|
|
|
abstract public function exists($pasteid);
|
2012-04-29 17:15:06 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Create a comment in a paste.
|
|
|
|
*
|
|
|
|
* @access public
|
|
|
|
* @param string $pasteid
|
|
|
|
* @param string $parentid
|
|
|
|
* @param string $commentid
|
|
|
|
* @param array $comment
|
2015-09-03 20:55:36 +00:00
|
|
|
* @return bool
|
2012-04-29 17:15:06 +00:00
|
|
|
*/
|
2012-04-30 20:58:08 +00:00
|
|
|
abstract public function createComment($pasteid, $parentid, $commentid, $comment);
|
2012-04-29 17:15:06 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Read all comments of paste.
|
|
|
|
*
|
|
|
|
* @access public
|
|
|
|
* @param string $pasteid
|
|
|
|
* @return array
|
|
|
|
*/
|
2012-04-30 20:58:08 +00:00
|
|
|
abstract public function readComments($pasteid);
|
2012-04-29 17:15:06 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Test if a comment exists.
|
|
|
|
*
|
|
|
|
* @access public
|
|
|
|
* @param string $dataid
|
|
|
|
* @param string $parentid
|
|
|
|
* @param string $commentid
|
|
|
|
* @return void
|
|
|
|
*/
|
2012-04-30 20:58:08 +00:00
|
|
|
abstract public function existsComment($pasteid, $parentid, $commentid);
|
2015-10-12 19:07:41 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Get next free slot for comment from postdate.
|
|
|
|
*
|
|
|
|
* @access public
|
|
|
|
* @param array $comments
|
|
|
|
* @param int|string $postdate
|
|
|
|
* @return void
|
|
|
|
*/
|
|
|
|
protected function getOpenSlot(&$comments, $postdate)
|
|
|
|
{
|
|
|
|
if (array_key_exists($postdate, $comments))
|
|
|
|
{
|
|
|
|
$parts = explode('.', $postdate, 2);
|
|
|
|
if (!array_key_exists(1, $parts)) $parts[1] = 0;
|
|
|
|
++$parts[1];
|
2015-10-16 21:13:36 +00:00
|
|
|
return $this->getOpenSlot($comments, implode('.', $parts));
|
2015-10-12 19:07:41 +00:00
|
|
|
}
|
|
|
|
return $postdate;
|
|
|
|
}
|
2012-04-29 17:15:06 +00:00
|
|
|
}
|