Source for file jAcl.class.php

Documentation is available at jAcl.class.php

  1. <?php
  2. /**
  3. @package     jelix
  4. @subpackage  acl
  5. @author      Laurent Jouanneau
  6. @copyright   2006-2009 Laurent Jouanneau
  7. @link        http://www.jelix.org
  8. @licence     http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public Licence, see LICENCE file
  9. @since 1.0a3
  10. */
  11.  
  12. /**
  13.  * interface for jAcl drivers
  14.  * @package jelix
  15.  * @subpackage acl
  16.  */
  17. interface jIAclDriver {
  18.  
  19.     /**
  20.      * return the possible values of the right on the given subject (and on the optional resource)
  21.      * @param string $subject the key of the subject
  22.      * @param string $resource the id of a resource
  23.      * @return array list of values corresponding to the right
  24.      */
  25.     public function getRight($subject$resource=null);
  26.  
  27.     /**
  28.      * clear some cached data, it a cache exists in the driver..
  29.      */
  30.     public function clearCache();
  31.  
  32. }
  33.  
  34. /**
  35.  * Main class to query the acl system, and to know value of a right
  36.  *
  37.  * you should call this class (all method are static) when you want to know if
  38.  * the current user have a right
  39.  * @package jelix
  40.  * @subpackage acl
  41.  * @static
  42.  */
  43. class jAcl {
  44.  
  45.     /**
  46.      * @internal The constructor is private, because all methods are static
  47.      */
  48.     private function __construct ()}
  49.  
  50.     /**
  51.      * load the acl driver
  52.      * @return jIAclDriver 
  53.      */
  54.     protected static function _getDriver(){
  55.         static $driver null;
  56.         if($driver == null){
  57.             global $gJConfig;
  58.             $db strtolower($gJConfig->acl['driver']);
  59.             if($db == '' || !isset($gJConfig->_pluginsPathList_acl
  60.                 || !isset($gJConfig->_pluginsPathList_acl[$db])
  61.                 || !file_exists($gJConfig->_pluginsPathList_acl[$db]) ){
  62.                 throw new jException('jelix~errors.acl.driver.notfound',$db);
  63.             }
  64.             require_once($gJConfig->_pluginsPathList_acl[$db].$db.'.acl.php');
  65.             $dname $gJConfig->acl['driver'].'AclDriver';
  66.             $driver new $dname($gJConfig->acl);
  67.         }
  68.         return $driver;
  69.     }
  70.  
  71.     /**
  72.      * call this method to know if the current user has the right with the given value
  73.      * @param string $subject the key of the subject to check
  74.      * @param string $value the value to test against
  75.      * @param string $resource the id of a resource
  76.      * @return boolean true if yes
  77.      */
  78.     public static function check($subject$value=true$resource=null){
  79.         $val self::getRight($subject$resource);
  80.         return in_array($value,$val);
  81.     }
  82.  
  83.     /**
  84.      * return the value of the right on the given subject (and on the optional resource)
  85.      * @param string $subject the key of the subject
  86.      * @param string $resource the id of a resource
  87.      * @return array list of values corresponding to the right
  88.      */
  89.     public static function getRight($subject$resource=null){
  90.         $dr self::_getDriver();
  91.         return $dr->getRight($subject$resource);
  92.     }
  93.  
  94.     /**
  95.      * clear right cache
  96.      * @since 1.0b2
  97.      */
  98.     public static function clearCache(){
  99.         $dr self::_getDriver();
  100.         $dr->clearCache();
  101.     }
  102. }

Documentation generated on Thu, 22 Mar 2012 22:13:49 +0100 by phpDocumentor 1.4.3