Esempio n. 1
0
 /**
  * Сохранение дополнительных полей
  * документа
  */
 protected function fieldsSave()
 {
     if ($this->fields) {
         $field_count = 0;
         foreach ($this->fields as $field_id => $field) {
             if (isset($field['data']) && count($field['data']) && in_array($field['type'], array_keys(Field::getTypes()))) {
                 foreach ($field['data'] as $data_id => $data) {
                     // Перебираем все значения дополнительных полей
                     if (in_array($field['type'], array_keys(ValueNumeric::getTypes()))) {
                         // Числовой тип
                         $item[$field_count] = substr_count($data_id, 'new') ? new ValueNumeric() : ValueNumeric::findOne($data_id);
                     } elseif (in_array($field['type'], array_keys(ValueString::getTypes()))) {
                         // Строковый тип
                         $item[$field_count] = substr_count($data_id, 'new') ? new ValueString() : ValueString::findOne($data_id);
                     } elseif (in_array($field['type'], array_keys(ValueText::getTypes()))) {
                         // Текстовый тип
                         $item[$field_count] = substr_count($data_id, 'new') ? new ValueText() : ValueText::findOne($data_id);
                     } elseif (in_array($field['type'], array_keys(ValueDate::getTypes()))) {
                         // Тип дата
                         $item[$field_count] = substr_count($data_id, 'new') ? new ValueDate() : ValueDate::findOne($data_id);
                     }
                     $item[$field_count]->document_id = $this->id;
                     $item[$field_count]->field_id = $field_id;
                     $item[$field_count]->type = $field['type'];
                     // Преобразуем дату в формат для хранения в БД
                     if ($field['type'] == 7) {
                         if (isset($data['value']) && $data['value'] != '') {
                             $date = new \DateTime($data['value']);
                             $value = $date->format('Y-m-d');
                         } else {
                             $value = null;
                         }
                     } else {
                         $value = isset($data['value']) ? $data['value'] : null;
                     }
                     $item[$field_count]->value = $value;
                     $item[$field_count]->position = isset($data['position']) ? $data['position'] : null;
                     // Не сохраняем если значение пустое или равно 0 когда тип Флажок
                     if ($item[$field_count]->value == '' || $item[$field_count]->value == 0 && $item[$field_count]->type == 3) {
                         // Удаляем если значение пустое, но оно есть в базе данных
                         if (!$item[$field_count]->isNewrecord) {
                             $item[$field_count]->delete();
                         }
                     } else {
                         // Сохраняем если значение не пустое
                         $item[$field_count]->save();
                     }
                     $field_count++;
                 }
             }
         }
     }
 }