public function setLevel($level)
 {
     if (!c\LevelValues::isLevel($level)) {
         throw new e\UnacceptableValueException("The level {$level} is unacceptable.");
     }
     $this->level = $level;
     return $this;
 }
 private function setAccess(a\Asset $a, $level)
 {
     $type = $a->getType();
     if ($type != c\T::USER && $type != c\T::GROUP) {
         throw new e\WrongAssetTypeException(c\M::ACCESS_TO_USERS_GROUPS);
     }
     if (!c\LevelValues::isLevel($level)) {
         throw new e\UnacceptableValueException("The level {$level} is unacceptable.");
     }
     $entry = $this->getEntry($a);
     // not exist
     if ($entry == NULL) {
         $entry_std = new \stdClass();
         $entry_std->level = $level;
         $entry_std->type = $a->getType();
         $entry_std->name = $a->getName();
         $this->acl_entries[] = new AclEntry($entry_std);
     } else {
         $entry->setLevel($level);
     }
 }
 public function grantAccess($type, $id_path, $site_name = NULL, $applied_to_children = false, Asset $a = NULL, $level = c\T::READ)
 {
     $ari = $this->getAccessRights($type, $id_path, $site_name);
     if ($a == NULL || $a->getType() != Group::TYPE && $a->getType() != User::TYPE) {
         throw new e\WrongAssetTypeException(S_SPAN . c\M::ACCESS_TO_USERS_GROUPS . E_SPAN);
     }
     if (!c\LevelValues::isLevel($level)) {
         throw new e\UnacceptableValueException(S_SPAN . "The level {$level} is unacceptable." . E_SPAN);
     }
     if ($a->getType() == Group::TYPE && $level == c\T::READ) {
         if (self::DEBUG) {
             u\DebugUtility::out("Granting " . $a->getName() . " read access to " . $id_path);
         }
         $func_name = 'grantGroupReadAccess';
     } else {
         if ($a->getType() == Group::TYPE && $level == c\T::WRITE) {
             if (self::DEBUG) {
                 u\DebugUtility::out("Granting " . $a->getName() . " write access to " . $id_path);
             }
             $func_name = 'grantGroupWriteAccess';
         } else {
             if ($a->getType() == User::TYPE && $level == c\T::READ) {
                 if (self::DEBUG) {
                     u\DebugUtility::out("Granting " . $a->getName() . " read access to " . $id_path);
                 }
                 $func_name = 'grantUserReadAccess';
             } else {
                 if ($a->getType() == User::TYPE && $level == c\T::WRITE) {
                     if (self::DEBUG) {
                         u\DebugUtility::out("Granting " . $a->getName() . " write access to " . $id_path);
                     }
                     $func_name = 'grantUserWriteAccess';
                 }
             }
         }
     }
     if (isset($func_name)) {
         $ari->{$func_name}($a);
         $this->setAccessRights($ari, $applied_to_children);
     } else {
         if (self::DEBUG) {
             u\DebugUtility::out("The function name is not set.");
         }
     }
     return $this;
 }