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; }
/** * 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; }