X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=include%2FPlugin%2FSkel.php;h=093000d5bacd22f63108d1eb81679e94eb385d24;hb=f7c51650828ecfd52d3b2995e6980505ed5ad688;hp=19c58a8b32f8d0f41fab743e88b5e8230dbd07ba;hpb=7aff44b2a3193e43aedfd7bf7fc3801bcffcf3e0;p=diogenes.git diff --git a/include/Plugin/Skel.php b/include/Plugin/Skel.php index 19c58a8..093000d 100644 --- a/include/Plugin/Skel.php +++ b/include/Plugin/Skel.php @@ -20,12 +20,6 @@ // dependency on PEAR require_once 'System.php'; -require_once 'Tree/Node.php'; - -define('PLUG_DISABLED', 0); -define('PLUG_ACTIVE', 1); -define('PLUG_LOCK', 2); -define('PLUG_SET', 4); /** Recursive stripslashes. * @@ -44,7 +38,7 @@ function stripslashes_recurse($value) */ class Diogenes_Plugin_Skel { /** Plugin type (object, filter) */ - var $type = ''; + var $type; /** Array of plugin parameters */ var $params = array(); @@ -59,11 +53,12 @@ class Diogenes_Plugin_Skel { var $version = "0.1"; /** Position of the plugin */ - var $pos = 0; + var $pos; + + /** Is the plugin active ? */ + var $active = 0; + - /** The plugin status (disabled, available, active) */ - var $status = PLUG_DISABLED; - /** Is the plugin allowed with respect to a given write permission on a page ? * * @param $wperms @@ -72,107 +67,89 @@ class Diogenes_Plugin_Skel { { return ($wperms != 'public'); } + - - /** Declare a plugin parameter. - */ - function declareParam($key, $val) - { - $this->params[$key]['value'] = $val; - } - - - /** Return an array of parameter names. - */ - function getParamNames() - { - return array_keys($this->params); - } - - - /** Return the value of a parameter of the plugin. - */ - function getParamValue($key) - { - return isset($this->params[$key]['value']) ? $this->params[$key]['value'] : ''; - } - - - /** Set the value of a parameter of the plugin. + /** Set plugin parameters. + * + * @param $params */ - function setParamValue($key, $val) + function setParams($params) { - if (isset($this->params[$key]['value'])) { - $this->params[$key]['value'] = $val; + $bits = explode("\0", $params); + foreach ($bits as $bit) + { + $frags = explode("=", $bit, 2); + $key = $frags[0]; + $val = isset($frags[1]) ? $frags[1] : ''; + if (isset($this->params[$key])) { + $this->params[$key] = $val; + } } } - - + + /** Erase parameters from database. * * @param $barrel * @param $page */ - function eraseParameters($barrel = '', $page = 0) + function eraseParams($barrel = '', $page = 0) { global $globals; - //echo $this->name . " : eraseParams($barrel, $page)
\n"; + + //echo $this->name . " : deleteParams($barrel, $page)
\n"; $globals->db->query("delete from diogenes_plugin where plugin='{$this->name}' and barrel='$barrel' and page='$page'"); - + + $this->active = 0; unset($this->pos); - foreach ($this->getParamNames() as $key) + foreach ($this->params as $key => $val) { - //echo "$this->name : erasing param
\n"; - $this->setParamValue($key, ''); + $this->params[$key] = ''; } } - - - /** Read parameters from an array. - */ - function fromArray($plugentry) - { - $this->pos = $plugentry['pos']; - $this->status = $plugentry['status']; - foreach ($plugentry['params'] as $key => $val) - { - $this->setParamValue($key, $val['value']); - } - } - - + + /** Store parameters to database. * * @param $barrel * @param $page - * @param $pos + * @param $pos */ - function toDatabase($barrel = '', $page = 0, $pos = 0) + function writeParams($barrel = '', $page = 0, $pos = 0) { global $globals; $this->pos = $pos; - $params = var_encode_bin($this->params); - //echo "toDatabase called for '{$this->name}' in barrel '$barrel' (status : {$this->status}, params : '$params')
"; - $globals->db->query("replace into diogenes_plugin set plugin='{$this->name}', status='{$this->status}', barrel='$barrel', page='$page', pos='$pos', params='$params'"); + $this->active = 1; + + $params = ''; + foreach ($this->params as $key => $val) + { + //echo $this->name . " $key=$val
"; + $params .= "$key=$val\0"; + } + $globals->db->query("replace into diogenes_plugin set plugin='{$this->name}', barrel='$barrel', page='$page', pos='$pos', params='$params'"); } - - + + /** Dump parameters to a table. */ - function toArray() + function dump() { $plugentr = array(); // copy over properties - $props = array('status', 'name', 'params', 'description', 'version', 'type', 'pos'); + $props = array('active', 'name', 'params', 'description', 'version', 'type', 'pos'); foreach ($props as $prop) { - $plugentr[$prop] = stripslashes_recurse($this->$prop); - } + if (isset($this->$prop)) + { + $plugentr[$prop] = stripslashes_recurse($this->$prop); + } + } return $plugentr; } - + } ?>