예제 #1
0
 /**
  * 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;
 }
예제 #2
0
 /**
  * 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;
 }