/** * Переопределенная функция сохранения группы LDAP. * Помимо сохранения данных группы LDAP, присваиваются выбранные права доступа * * @param type $runValidation * @param type $attributes * @throws CHttpException */ public function Save($runValidation = true, $attributes = null) { /* $selectedRows - массив выбранных ролей группы LDAP */ $selectedRows = (string) filter_input(INPUT_POST, 'items') !== '' ? json_decode((string) filter_input(INPUT_POST, 'items'), true) : []; /* $_POST['oper'] может быть "edit" или "add", редактирование или добавление новой записи */ if ((string) filter_input(INPUT_POST, 'oper') === '') { throw new CHttpException(500, 'Отсутствует POST переменная "oper"'); } /* ИД группы LDAP, который редактируется, если необходим */ $editid = (string) filter_input(INPUT_POST, 'editid'); $oper = (string) filter_input(INPUT_POST, 'oper'); if ($oper === 'edit' && $editid === '') { throw new CHttpException(500, 'Отсутствует POST переменная "editid"'); } /* Сохраняем модель группы LDAP и присваиваем роли */ if (parent::save($runValidation, $attributes) !== false) { /* $auth = Yii::app()->authManager; */ /* Удаляем все роли группы LDAP при сохранении изменений профиля групп LDAP */ if ($editid !== '') { AuthAssignmentLdap::model()->deleteAll('groupid = :groupid', array(':groupid' => $editid)); } /* Присваиваем выбранные роли группе LDAP */ if ($editid === '' && $oper === 'add') { $editid = parent::getPrimaryKey(); } if (count((array) $selectedRows) > 0) { foreach (array_keys($selectedRows) as $AuthItem) { $model = new AuthAssignmentLdap(); $model->itemname = $AuthItem; $model->groupid = $editid; $model->save(); } } } }