protected function checkInput()
 {
     $fields = ['grid' => 'fatal|required|json'];
     $ret = $this->validateInput($fields);
     if ($ret) {
         $widgets = [WIDGET_SYSTEM_STATUS, WIDGET_ZABBIX_STATUS, WIDGET_LAST_ISSUES, WIDGET_WEB_OVERVIEW, WIDGET_DISCOVERY_STATUS, WIDGET_HOST_STATUS, WIDGET_FAVOURITE_GRAPHS, WIDGET_FAVOURITE_MAPS, WIDGET_FAVOURITE_SCREENS];
         /*
          * {
          *     "0": {
          *         "0": "stszbx_widget",
          *         "1": "favgrph_widget",
          *         "2": "favscr_widget",
          *         "3": "favmap_widget"
          *     },
          *     "1": {
          *         "0": "lastiss_widget",
          *         "1": "webovr_widget",
          *         "2": "dscvry_widget"
          *     },
          *     "2": {
          *         "0": "syssum_widget",
          *         "1": "hoststat_widget"
          *     }
          * }
          */
         foreach (CJs::decodeJson($this->getInput('grid')) as $col => $column) {
             if (!CNewValidator::is_int32($col) || $col < 0 || $col > 2 || !is_array($column)) {
                 $ret = false;
                 break;
             }
             foreach ($column as $row => $widgetName) {
                 if (!CNewValidator::is_int32($row) || $row < 0 || !is_string($widgetName)) {
                     $ret = false;
                     break 2;
                 }
                 $widgetName = str_replace('_widget', '', $widgetName);
                 if (!in_array($widgetName, $widgets)) {
                     $ret = false;
                     break 2;
                 }
             }
         }
     }
     if (!$ret) {
         $this->setResponse(new CControllerResponseFatal());
     }
     return $ret;
 }
Ejemplo n.º 2
0
 /**
  * Validate input parameters.
  *
  * @return var
  */
 public function validateInput($validationRules)
 {
     if (CSession::keyExists('formData')) {
         $input = array_merge($_REQUEST, CSession::getValue('formData'));
         CSession::unsetValue(['formData']);
     } else {
         $input = $_REQUEST;
     }
     $validator = new CNewValidator($input, $validationRules);
     foreach ($validator->getAllErrors() as $error) {
         info($error);
     }
     if ($validator->isErrorFatal()) {
         $this->validationResult = self::VALIDATION_FATAL_ERROR;
     } else {
         if ($validator->isError()) {
             $this->input = $validator->getValidInput();
             $this->validationResult = self::VALIDATION_ERROR;
         } else {
             $this->input = $validator->getValidInput();
             $this->validationResult = self::VALIDATION_OK;
         }
     }
     return $this->validationResult == self::VALIDATION_OK;
 }