예제 #1
0
 public function actionRightsAcoUpdate($aco_class, $aco_key, $aco_value, $operation, $value, $is_deny = 0)
 {
     $ret = true;
     $savedItems = AccessItem::model()->findAllByAttributes(array('aco_class' => $aco_class, 'aco_key' => $aco_key, 'aco_value' => $aco_value, 'action' => $operation, 'is_deny' => $is_deny));
     $items = explode(',', $value);
     foreach ($items as $item) {
         list($aro_class, $aro_key, $aro_value) = explode(':', $item);
         $alreadySaved = false;
         foreach ($savedItems as $i => $saveItem) {
             if ($saveItem['aro_class'] == $aro_class && $saveItem['aro_key'] == $aro_key && $saveItem['aro_value'] == $aro_value) {
                 $alreadySaved = true;
                 unset($savedItems[$i]);
                 break;
             }
         }
         if (!$alreadySaved) {
             $accessItem = new AccessItem();
             $accessItem->aco_class = $aco_class;
             $accessItem->aco_key = $aco_key;
             $accessItem->aco_value = $aco_value;
             $accessItem->aro_class = $aro_class;
             $accessItem->aro_key = $aro_key;
             $accessItem->aro_value = $aro_value;
             $accessItem->action = $operation;
             $accessItem->is_deny = (bool) $is_deny;
             $ret = $ret && $accessItem->save();
         }
     }
     foreach ($savedItems as $saveItem) {
         $saveItem->delete();
     }
     echo intval($ret);
 }