Overview

Packages

  • Perms

Classes

  • Horde_Perms
  • Horde_Perms_Base
  • Horde_Perms_Datatree
  • Horde_Perms_Exception
  • Horde_Perms_Null
  • Horde_Perms_Permission
  • Horde_Perms_Permission_Datatree
  • Horde_Perms_Permission_Kolab
  • Horde_Perms_Permission_Kolab_Acl
  • Horde_Perms_Permission_Kolab_Acl_Anonymous
  • Horde_Perms_Permission_Kolab_Acl_Anyone
  • Horde_Perms_Permission_Kolab_Acl_Creator
  • Horde_Perms_Permission_Kolab_Acl_Group
  • Horde_Perms_Permission_Kolab_Acl_User
  • Horde_Perms_Permission_Kolab_AclIterator
  • Horde_Perms_Permission_Kolab_Element
  • Horde_Perms_Permission_Kolab_Element_Creator
  • Horde_Perms_Permission_Kolab_Element_Default
  • Horde_Perms_Permission_Kolab_Element_Group
  • Horde_Perms_Permission_Kolab_Element_Guest
  • Horde_Perms_Permission_Kolab_Element_User
  • Horde_Perms_Permission_Kolab_ElementIterator
  • Horde_Perms_Permission_Sql
  • Horde_Perms_Sql
  • Horde_Perms_Translation

Interfaces

  • Horde_Perms_Permission_Kolab_Storage
  • Overview
  • Package
  • Class
  • Tree
  1: <?php
  2: /**
  3:  * Extension of the Horde_Permission class for storing permission
  4:  * information in the SQL driver.
  5:  *
  6:  * Copyright 2008-2012 Horde LLC (http://www.horde.org/)
  7:  *
  8:  * See the enclosed file COPYING for license information (LGPL). If you
  9:  * did not receive this file, see http://www.horde.org/licenses/lgpl21.
 10:  *
 11:  * @author   Duck <duck@obala.net>
 12:  * @category Horde
 13:  * @package  Perms
 14:  */
 15: class Horde_Perms_Permission_Sql extends Horde_Perms_Permission
 16: {
 17:     /**
 18:      * The string permission id.
 19:      *
 20:      * @var string
 21:      */
 22:     protected $_id;
 23: 
 24:     /**
 25:      * Cache object.
 26:      *
 27:      * @var Horde_Cache
 28:      */
 29:     protected $_cache;
 30: 
 31:     /**
 32:      * Database handle for saving changes.
 33:      *
 34:      * @var Horde_Db_Adapter
 35:      */
 36:     protected $_db;
 37: 
 38:     /**
 39:      * Tasks to run on serialize().
 40:      *
 41:      * @return array  Parameters that are stored.
 42:      */
 43:     public function __sleep()
 44:     {
 45:         return array_diff(array_keys(get_class_vars(__CLASS__)), array('_cache', '_db'));
 46:     }
 47: 
 48:     /**
 49:      * Sets the helper functions within the object.
 50:      *
 51:      * @param Horde_Cache $cache    The cache object.
 52:      * @param Horde_Db_Adapter $db  The database object.
 53:      */
 54:     public function setObs(Horde_Cache $cache, Horde_Db_Adapter $db)
 55:     {
 56:         $this->_cache = $cache;
 57:         $this->_db = $db;
 58:     }
 59: 
 60:     /**
 61:      * Get permission ID.
 62:      *
 63:      * @return TODO
 64:      */
 65:     public function getId()
 66:     {
 67:         return $this->_id;
 68:     }
 69: 
 70:     /**
 71:      * Set permission id.
 72:      *
 73:      * @param string $id  Permission ID.
 74:      */
 75:     public function setId($id)
 76:     {
 77:         $this->_id = $id;
 78:     }
 79: 
 80:     /**
 81:      * Saves any changes to this object to the backend permanently. New
 82:      * objects are added instead.
 83:      *
 84:      * @throws Horde_Perms_Exception
 85:      */
 86:     public function save()
 87:     {
 88:         if (!isset($this->_db)) {
 89:             throw new Horde_Perms_Exception('Cannot save because the DB instances has not been set in this object.');
 90:         }
 91: 
 92:         $name = $this->getName();
 93:         if (empty($name)) {
 94:             throw new Horde_Perms_Exception('Permission names must be non-empty');
 95:         }
 96: 
 97:         $query = 'UPDATE horde_perms SET perm_data = ? WHERE perm_id = ?';
 98:         $params = array(serialize($this->data), $this->getId());
 99: 
100:         try {
101:             $this->_db->update($query, $params);
102:         } catch (Horde_Db_Exception $e) {
103:             throw new Horde_Perms_Exception($e);
104:         }
105: 
106:         $this->_cache->expire('perm_sql_' . $this->_cacheVersion . $name);
107:         $this->_cache->expire('perm_sql_exists_' . $this->_cacheVersion . $name);
108:     }
109: 
110: }
111: 
API documentation generated by ApiGen