array('label'=>'Identifiant', 'type'=>'key'), 'firm' => array('label'=>'Id de l\'établissement concerné', 'type'=>'integer','link'=>'class/Firm.class.php'), 'read' => array('label'=>'Droit de lecture', 'type'=>'boolean'), 'edit' => array('label'=>'Droit d\'édition', 'type'=>'boolean'), 'delete' => array('label'=>'Droit de supression', 'type'=>'boolean'), 'recursive' => array('label'=>'Droit récursif', 'type'=>'boolean'), 'configure' => array('label'=>'Droit de configuration', 'type'=>'boolean'), 'uid' => array('label'=>'Identifiant de l\'entité liée', 'type'=>'string'), 'scope' => array('label'=>'Périmetre de l\'entité liée', 'type'=>'string'), 'targetScope' => array('label'=>'Périmetre de l\'entité cible', 'type'=>'text'), 'targetUid' => array('label'=>'Identifiant de l\'entité cible', 'type'=>'integer') ); //Colonnes indexées public $indexes = array('firm', 'targetScope', 'targetUid', 'scope', 'uid'); //enregistrement d'un droit possible sur un module, une entité ... public static function register($scope,$options){ //options par defaut $options = array_merge(array( 'global' => true, 'check' => function($action,$right){ global $myUser; //Droits sur la section/le module sans cible entité if($right->uid != 0) throw new Exception('Droit non ciblé, ne pas spécifier d\'id'); if($myUser->superadmin) throw new Exception('Vous n\'avez pas les privilèges pour définir des droits dans ce contexte'); } ),$options); $GLOBALS['rights'][$scope] = $options; } //récuperation des meta information d'un droit public static function getOption($scope) { if(!isset($GLOBALS['rights'][$scope])) return; return $GLOBALS['rights'][$scope]; } //récuperation de la liste des droits possibles public static function availables() { if(!isset($GLOBALS['rights'])) return array(); return $GLOBALS['rights']; } function __construct(){ parent::__construct(); $this->uid = 0; $this->firm = 0; $this->read = 0; $this->edit = 0; $this->delete = 0; $this->configure = 0; $this->recursive = 0; } }