예제 #1
0
 public function actionSiteSave()
 {
     $args = filter_input_array(INPUT_POST, ['s_title' => FILTER_SANITIZE_STRING, 's_key' => ['filter' => FILTER_VALIDATE_INT, 'options' => ['min_range' => 0, 'max_range' => 31, 'default' => 0]], 's_link' => FILTER_VALIDATE_URL, 'sid' => FILTER_VALIDATE_INT, 'passkey' => FILTER_SANITIZE_STRING]);
     $args['del'] = 0;
     $args['s_link'] = $args['s_link'] ?: 'http://wtf.asu.ngres/';
     $args['passkey'] = get_param($args, 'passkey') ?: Cipher::generate_token();
     // Проверку на повтор индекса будем делать тут,
     // т.к. на уровне БД сделать это не получилось
     // ( дублируемая запись затирается )
     $list = $this->model->getSiteList();
     $exist = false;
     foreach ($list as $site) {
         // если id проверяемого отличается от текущего
         if (get_param($args, 'sid') !== intval(get_param($site, 'id'))) {
             $exist |= get_param($args, 's_key') === intval(get_param($site, 'sitekey'));
         }
     }
     if (!$exist) {
         $this->model->editSite($args);
         $this->preparePopup('Информация сохранена', 'alert-success');
         $this->preparePopup($this->model->getErrorList());
     } else {
         $this->preparePopup('Указанный индекс сайта занят');
     }
     $this->redirect($this->createActionUrl('sitelist'));
 }