public function do_submit() { $module = new _cms_module([], $this->mid); $field = new field_type([], $this->type); $type = '\\form\\field_' . $field->title; /** @var \form\field $field_type */ $field_type = new $type(''); if ($inner = $field_type->get_database_create_query()) { db::query('ALTER TABLE ' . $module->table_name . ' ADD `' . $this->field_name . '` ' . $field_type->get_database_create_query(), [], 1); } if ($field->title == 'mlink') { $source_module = new _cms_module(['table_name', 'primary_key'], $this->link_module); db::create_table_join(get::__class_name($this), $source_module->table_name); } $res = db::select('_cms_field')->retrieve('MAX(position) AS pos')->filter_field('mid', $this->mid)->execute()->fetchObject(); $insert = db::insert('_cms_field')->add_value('title', $this->title)->add_value('type', $field->title)->add_value('field_name', $this->field_name)->add_value('mid', $this->mid)->add_value('position', $res->pos + 1); if ($field->title == 'link' || $field->title == 'mlink') { $insert->add_value('link_module', $this->link_module)->add_value('link_field', $this->link_field); } $insert->execute(); table::rebuild_modules(); table::reset_module_fields($module->mid); ajax::update($module->get_fields_list()->get()); ajax::update($this->get_html()->get()); }
public function do_submit() { $module = new _cms_module([], $this->mid); $field = new field_type([], $this->type); $old_field = new _cms_field([], $this->fid); $type = '\\form\\field_' . $field->title; /** @var \form\field $field_type */ $field_type = new $type(''); if ($inner = $field_type->get_database_create_query()) { db::query('ALTER TABLE ' . $module->table_name . ' MODIFY `' . $old_field->field_name . '` `' . $this->field_name . '` ' . $field_type->get_database_create_query(), [], 1); } if ($field->title == 'mlink' && $old_field->type !== 'mlink') { $source_module = new _cms_module(['table_name', 'primary_key'], $this->link_module); db::create_table_join(\classes\get::__class_name($this), $source_module->table_name); } $insert = db::update('_cms_field')->add_value('title', $this->title)->add_value('type', $field->title)->add_value('field_name', $this->field_name)->add_value('link_module', $this->link_module)->add_value('link_field', $this->link_field)->filter_field('fid', $this->fid); $insert->execute(); table::rebuild_modules(); table::reset_module_fields($module->mid); ajax::update($module->get_fields_list()->get()); ajax::update($this->get_html()->get()); }
/** * */ public function do_reorder_fields() { if (isset($_REQUEST['mid']) && isset($_REQUEST['fid'])) { $this->set_from_mid($_REQUEST['mid']); $fields = object\_cms_field::get_all([], ['where_equals' => ['mid' => $_REQUEST['mid']]]); $reverse = false; if (isset($_REQUEST['dir']) && $_REQUEST['dir'] == 'down') { $reverse = true; $fields->reverse(); } $cnt = $reverse ? count($fields) + 1 : 0; /** @var object\_cms_field $previous */ $previous = $fields[0]; $fields->iterate(function (object\_cms_field $field) use(&$previous, $reverse, &$cnt) { $cnt += $reverse ? -1 : 1; $field->position = $cnt; $field->position = $cnt; if ($field->fid == $_REQUEST['fid']) { $field->position = $previous->position; $previous->position = $cnt; } $previous = $field; }); if ($reverse) { $fields->reverse(); } $fields->uasort(function (object\_cms_field $a, object\_cms_field $b) { return $a->position - $b->position; }); $cnt = 1; $fields->iterate(function (object\_cms_field $field) use(&$cnt) { db::update('_cms_field')->add_value('position', $cnt++)->filter_field('fid', $field->fid)->execute(); }); table::reset_module_fields($this->module->mid); ajax::update($this->module->get_fields_list()->get()); } }