/** * Save data. * * @param array $data Data. * @return bool|mixed * * @throws SystemException 'ERR_VALIDATE_FORM' */ protected function saveData($data) { $result = false; //создаем объект описания данных $dataDescriptionObject = new DataDescription(); //получаем описание полей для метода $configDataDescription = $this->getConfig()->getStateConfig($this->getPreviousState()); //если в конфиге есть описание полей для метода - загружаем их if (isset($configDataDescription->fields)) { $dataDescriptionObject->loadXML($configDataDescription->fields); } //Создаем объект описания данных взятых из БД $DBDataDescription = new DataDescription(); //Загружаем в него инфу о колонках $DBDataDescription->load($this->loadDataDescription()); $this->setDataDescription($dataDescriptionObject->intersect($DBDataDescription)); $dataObject = new Data(); $dataObject->load($data); $this->setData($dataObject); //Создаем сейвер $saver = new Saver(); //Устанавливаем его режим $saver->setMode(self::COMPONENT_TYPE_FORM_ADD); $saver->setDataDescription($this->getDataDescription()); $saver->setData($this->getData()); if ($saver->validate() === true) { $saver->setFilter($this->getFilter()); $saver->save(); $result = $saver->getResult(); } else { //выдвигается пустой exception который перехватывается в методе save throw new SystemException('ERR_VALIDATE_FORM', SystemException::ERR_WARNING, $saver->getErrors()); } return $result; }
/** * Save data. * * @param array $data Data. * @return mixed * * @throws SystemException 'ERR_VALIDATE_FORM' */ protected function saveData(&$data) { //Обрабатываем аплоадсы $result = false; if (isset($_FILES) && !empty($_FILES)) { list($dbName, $tName) = QAL::getFQTableName($this->getTableName(), true); if (isset($_FILES[$phpTableName = $dbName . '_' . $tName])) { $fileData = []; //Переворачиваем пришедший массив в удобный для нас вид foreach ($_FILES[$phpTableName] as $fParam => $fileInfo) { foreach ($fileInfo as $fName => $val) { $fileData[$fName][$fParam] = $val; } } $uploader = new FileUploader(); foreach ($fileData as $fieldName => $fileInfo) { //Завантажувати лише якщо файл дійсно завантажили if (!empty($fileInfo['name']) && $fileInfo['size'] > 0) { $uploader->setFile($fileInfo); $uploader->upload('uploads/forms'); $data[$this->getTableName()][$fieldName] = $uploader->getFileObjectName(); $uploader->cleanUp(); } } } } //создаем объект описания данных $dataDescriptionObject = new DataDescription(); //получаем описание полей для метода $configDataDescription = $this->getConfig()->getStateConfig($this->getPreviousState()); //если в конфиге есть описание полей для метода - загружаем их if (isset($configDataDescription->fields)) { $dataDescriptionObject->loadXML($configDataDescription->fields); } //Создаем объект описания данных взятых из БД $DBDataDescription = new DataDescription(); //Загружаем в него инфу о колонках $DBDataDescription->load($this->loadDataDescription()); $this->setDataDescription($dataDescriptionObject->intersect($DBDataDescription)); $this->getDataDescription()->getFieldDescriptionByName('form_date')->removeProperty('pattern'); $dataObject = new Data(); foreach ($data[$this->getTableName()] as $key => $value) { if (is_scalar($value)) { $data[$this->getTableName()][$key] = strip_tags($value); } } $dataObject->load($data); $this->setData($dataObject); //Создаем сейвер $this->saver = new Saver(); //Устанавливаем его режим $this->saver->setMode(self::COMPONENT_TYPE_FORM_ADD); $this->saver->setDataDescription($this->getDataDescription()); $this->saver->setData($this->getData()); if ($this->saver->validate() === true) { $this->saver->setFilter($this->getFilter()); $this->saver->save(); $result = $this->saver->getResult(); } else { //выдвигается пустой exception который перехватывается в методе save //выдвигается exception который перехватывается в методе save throw new SystemException('ERR_VALIDATE_FORM', SystemException::ERR_WARNING, $this->saver->getErrors()); } return $result; }