示例#1
0
 /**
  * Enter description here...
  *
  * @param string $aro
  * @param string $aco
  * @param string $action
  * @param integer $value
  * @return boolean
  * @access public
  */
 function allow($aro, $aco, $action = "*", $value = 1)
 {
     $Perms = new ArosAco();
     $perms = $this->getAclLink($aro, $aco);
     $permKeys = $this->_getAcoKeys($Perms->loadInfo());
     $save = array();
     if ($perms == false) {
         trigger_error('DB_ACL::allow() - Invalid node', E_USER_WARNING);
         return false;
     }
     if (isset($perms[0])) {
         $save = $perms[0]['ArosAco'];
     }
     if ($action == "*") {
         $permKeys = $this->_getAcoKeys($Perms->loadInfo());
         foreach ($permKeys as $key) {
             $save[$key] = $value;
         }
     } else {
         if (in_array('_' . $action, $permKeys)) {
             $save['_' . $action] = $value;
         } else {
             trigger_error('DB_ACL::allow() - Invalid ACO action', E_USER_WARNING);
             return false;
         }
     }
     $save['aro_id'] = $perms['aro'];
     $save['aco_id'] = $perms['aco'];
     if ($perms['link'] != null && count($perms['link']) > 0) {
         $save['id'] = $perms['link'][0]['ArosAco']['id'];
     }
     return $Perms->save(array('ArosAco' => $save));
 }