public function do_delete() { $module = new _cms_module([], $_REQUEST['mid']); $object = $module->get_class(); $class = $module->get_class_name(); $class::$retrieve_deleted = true; $object->do_retrieve_from_id(['deleted'], $_REQUEST['id']); if ($object->get_primary_key()) { if ($object->deleted) { db::delete(get::__class_name($class))->filter($object->get_primary_key_name() . '=' . $_REQUEST['id'])->execute(); } else { $object->deleted = true; $object->do_save(); } } $list = new object\_cms_table_list($module, 1); ajax::update($list->get_table()); }
/** * @return string */ public function do_save() { $class = _get::__class_name($this); if ($this->get_primary_key()) { $query = new update($class); } else { $query = new insert($class); $top_pos = _db::select($class)->add_field_to_retrieve('max(position) as pos')->execute()->fetchObject()->pos; $query->add_value('position', $top_pos ?: 1); } /** @var field $field */ $this->get_fields()->iterate(function ($field) use($query) { $field->parent_form = $this; if ($field->field_name != $this->get_primary_key_name()) { if (isset($this->{$field->field_name}) && !$field instanceof field_file && !$field instanceof field_mlink) { if (!$this->{$field->field_name} && $field instanceof field_fn && isset($this->title)) { $this->{$field->field_name} = _get::unique_fn(_get::__class_name($this), $field->field_name, $this->title); } try { $data = $field->get_save_sql(); $query->add_value($field->field_name, $data); } catch (\RuntimeException $e) { } } } }); $query->add_value('live', isset($this->live) ? $this->live : true); $query->add_value('deleted', isset($this->deleted) ? $this->deleted : false); $query->add_value('ts', date('Y-m-d H:i:s')); if ($this->get_primary_key()) { $query->filter_field($this->get_primary_key_name(), $this->get_primary_key()); } $key = $query->execute(); if (!$this->get_primary_key()) { $this->set_primary_key($key); } $this->get_fields()->iterate(function ($field) { if ($field->field_name != $this->get_primary_key_name()) { if (isset($this->{$field->field_name}) && $field instanceof field_mlink) { $source_module = new _cms_module(['table_name', 'primary_key'], $field->get_link_mid()); $module = new _cms_module(['table_name', 'primary_key'], static::get_module_id()); _db::delete($module->table_name . '_link_' . $source_module->table_name)->filter_field($module->primary_key, $this->get_primary_key())->execute(); if ($this->{$field->field_name}) { foreach ($this->{$field->field_name} as $value) { _db::insert($module->table_name . '_link_' . $source_module->table_name)->add_value($module->primary_key, $this->get_primary_key())->add_value('link_' . $source_module->primary_key, $value)->add_value('fid', $field->fid)->execute(); } } } } }); if ($this->get_primary_key()) { $this->get_fields()->iterate(function ($field) { if ($field instanceof field_file) { $this->do_upload_file($field); } }); } return $this->get_primary_key(); }