Ejemplo n.º 1
0
 /**
  * Переопределенная функция сохранения группы 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();
             }
         }
     }
 }