public function save() { $group = $this->group; $roles = array(); if (array_key_exists("roles", $group)) { $roles = $group["roles"]; unset($group["roles"]); } $groupObj = new CUserGroup(); $groupObj->setAttributes($group); /** * Удаляем старые задачи группы и пользователей */ foreach (CActiveRecordProvider::getWithCondition(TABLE_USER_GROUP_HAS_ROLES, "user_group_id = " . $groupObj->getId())->getItems() as $ar) { $ar->remove(); } $groupObj->save(); /** * Создаем новые задачи группы и пользователей */ foreach ($roles as $role => $level) { if ($level != 0) { $ar = new CActiveRecord(array("id" => null, "user_group_id" => $groupObj->getId(), "task_id" => $role, "task_rights_id" => $level)); $ar->setTable(TABLE_USER_GROUP_HAS_ROLES); $ar->insert(); } } }
public function actionSaveMembers() { $aclItems = CRequest::getArray("members"); $group = new CUserGroup(); $group->setAttributes(CRequest::getArray($group::getClassName())); // удаляем все старые записи и создаем новые $transaction = new CTransaction(); foreach ($group->getACLRelations()->getItems() as $item) { $item->remove(); } // создаем новый записи foreach ($aclItems["id"] as $key => $value) { $entry = new CACLGroupEntry(); $entry->group_id = $group->getId(); $entry->setType($aclItems["type"][$key]); $entry->setValue($value); $entry->save(); } $transaction->commit(); $this->redirect("?action=index"); }