Ejemplo n.º 1
0
    protected function createObject()
    {
        // Проверяем обязательность полей
        reset($this->fields);
        while (list($fname, $field) = each($this->fields)) {
            if ($field['f_required'] && $field['f_relation'] == 2) {
                if (empty($this->new_parents) && !$this->issetParents()) {
                    $this->newError(40, 'Поле "' . $field['f_name'] . '" обязательно для заполнения!', $fname);
                }
            } else {
                if (($field['f_type'] == 40 || $field['f_type'] == 45) && isset($this->new_prop[$fname]) && empty($this->new_prop[$fname])) {
                    $this->new_prop[$fname] = 0;
                } else {
                    if ($field['f_required'] && empty($this->new_prop[$fname]) && (empty($this->cur_prop[$fname]) || isset($this->new_prop[$fname]))) {
                        $this->newError(40, 'Поле "' . $field['f_name'] . '" обязательно для заполнения!', $fname);
                    }
                }
            }
        }
        if ($this->issetErrors() > 0) {
            return false;
        }
        // Основные характеристики объекта
        $sql = 'INSERT INTO <<objects>>
					SET o_class_id = "' . $this->class->id() . '",
						o_name = "' . $this->name . '",
						o_change_date = "' . date('Y-m-d H:i:s') . '",
						o_create_date = "' . date('Y-m-d H:i:s') . '";';
        $this->id = db::q($sql);
        if ($this->id === false) {
            $this->newError(42, 'Ошибка в SQL запросе, при добавлении объекта!');
            return false;
        }
        // Изменяем данные объекта
        $fields = '';
        if (!empty($this->new_prop)) {
            while (list($key, $value) = each($this->new_prop)) {
                if (!$this->isPageField($key) && $key != 'name') {
                    if ($this->fields[$key]['f_type'] != 105) {
                        $fields .= $this->procValue($key, $value);
                    } else {
                        tags::changeTags($value, $this->id);
                    }
                }
            }
        }
        $fields = substr($fields, 0, strlen($fields) - 2);
        if (!empty($fields)) {
            $fields = ', ' . $fields;
        }
        $sql = 'INSERT INTO  <<__' . $this->class->getSName() . '>>
					SET obj_id = "' . $this->id . '"' . $fields . ';';
        if (db::q($sql) !== false) {
            /*
                    if (!empty($this->new_prop))
            while (list($key, $value) = each ($this->new_prop))
                $this->procValue($key, $value);
            */
            while (list($key, $field_id) = each($this->subject)) {
                $form = new ormMultiForm('subject_list_' . $field_id);
                $form->process('save_subject', $this->id);
            }
            $this->next_prinud = true;
            $this->changeParents(false);
            return $this->id;
        } else {
            $this->newError(42, 'Ошибка в SQL запросе, при добавлении данных объекта!');
            return false;
        }
    }