Exemplo n.º 1
0
 public static function create($field_name, $structure, $module)
 {
     $field = new __cms_field();
     $field->do_retrieve([], ['where_equals' => ['mid' => $module, 'field_name' => $field_name]]);
     if (!$field->get_primary_key()) {
         $field->field_name = $field_name;
         $field->mid = $module;
         $field->type = $structure->type;
         $field->title = isset($structure->title) ? $structure->title : ucwords(str_replace('_', ' ', $field_name));
         if (isset($structure->module) && $structure->module) {
             $_module = new __cms_module();
             $_module->do_retrieve(['mid'], ['where_equals' => ['table_name' => $structure->module]]);
             $field->link_module = $_module->mid;
             if (isset($structure->field) && $structure->field) {
                 $_field = new __cms_field();
                 $_field->do_retrieve(['fid'], ['where_equals' => ['field_name' => $structure->field, 'mid' => $_module->mid]]);
                 if ($_field->get_primary_key()) {
                     $field->link_field = $_field->fid;
                 }
             }
         }
         $field->list = isset($structure->list) ? $structure->list : true;
         $field->filter = isset($structure->filter) ? $structure->filter : true;
         $field->required = isset($structure->required) ? $structure->required : true;
         $field->do_save();
     } else {
         throw new \Exception('Field ' . $field_name . ' already exists in module ' . $module);
     }
     return $field;
 }
Exemplo n.º 2
0
 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());
 }
Exemplo n.º 3
0
 public function do_submit()
 {
     $module = new _cms_module();
     $module->do_retrieve_from_id(['mid', 'title'], $this->mid);
     $module->gid = $this->gid;
     $module->do_save();
     ajax::add_script('$.fn.colorbox.close()');
 }
Exemplo n.º 4
0
 public function do_submit()
 {
     $module = new _cms_module([], $this->mid);
     if ($module->table_name != $this->table_name) {
         db::rename_table($module->table_name, $this->table_name);
     }
     if ($module->primary_key != $this->primary_key) {
         db::rename_column($this->table_name, $module->primary_key, $this->primary_key);
     }
     \classes\table::rebuild_modules();
     $module->set_from_request();
     $module->do_save();
 }
Exemplo n.º 5
0
 public function do_submit($no_session = false)
 {
     if (!$no_session) {
         foreach ($this->fields as $field) {
             if ($field instanceof field_boolean && !$this->{$field->field_name}) {
                 session::un_set('cms', 'filter', $this->_mid, $field->field_name);
             } else {
                 session::set($this->{$field->field_name}, 'cms', 'filter', $this->_mid, $field->field_name);
             }
         }
     }
     $module = new _cms_module();
     $module->do_retrieve([], ['where_equals' => ['mid' => $this->_mid]]);
     $list = new _cms_table_list($module, 1);
     ajax::update($list->get_table());
 }
Exemplo n.º 6
0
 /**
  * @param $mid
  */
 public function set_from_mid($mid)
 {
     $this->mid = $mid;
     $this->module = new object\_cms_module([], $this->mid);
     $this->current = $this->module->get_class();
     $this->current->mid = $this->mid;
 }
Exemplo n.º 7
0
 public function reprocess()
 {
     $_field = new _cms_field([], $this->fid);
     $_module = new _cms_module([], $_field->mid);
     $base_path = root . '/uploads/' . $_module->table_name . '/' . $_field->fid . '/';
     /** @var table $class */
     $class = $_module->get_class_name();
     $objects = $class::get_all([]);
     $extensions = ['png', 'jpg', 'gif'];
     $objects->iterate(function (table $object) use($base_path, $extensions) {
         foreach ($extensions as $extension) {
             $path = $base_path . $object->get_primary_key() . '.' . $extension;
             if (file_exists($path)) {
                 echo 'Reprocessing image ' . $object->get_primary_key() . '...';
                 $object->do_process_image($path, $this);
                 echo ' done<br/>';
             }
         }
     });
 }
Exemplo n.º 8
0
 public function get_module_list()
 {
     $modules = _cms_module::get_all(['mid', 'title', 'primary_key', '_cms_group.title', 'table_name'], ['join' => ['_cms_group' => '_cms_group.gid = _cms_module.gid']]);
     if ($modules) {
         $html = node::create('div', [], node::create('table.module.table.table-striped', [], node::create('thead', [], node::create('th', [], 'Module ID') . node::create('th', [], 'Group') . node::create('th', [], 'Title') . node::create('th', [], 'Table Name') . node::create('th', [], 'Primary Key')) . $modules->iterate_return(function (_cms_module $module) {
             $attributes = ['href' => '/cms/admin_edit/' . $module->mid];
             return node::create('tr', [], node::create('td a', $attributes, $module->mid) . node::create('td a', $attributes, $module->_cms_group->title) . node::create('td a', $attributes, $module->title) . node::create('td a', $attributes, $module->table_name) . node::create('td a', $attributes, $module->primary_key));
         })));
         return $html;
     }
     return '';
 }
Exemplo n.º 9
0
 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());
 }
Exemplo n.º 10
0
 public static function create_table_join($source, $destination)
 {
     $source_module = new _cms_module();
     $source_module->do_retrieve(['primary_key'], ['where_equals' => ['table_name' => $source]]);
     $destination_module = new _cms_module();
     $destination_module->do_retrieve(['primary_key'], ['where_equals' => ['table_name' => $destination]]);
     $sql = 'CREATE TABLE IF NOT EXISTS ' . $source . '_link_' . $destination . '
         (
             `' . $source_module->primary_key . '` INT(6) NOT NULL DEFAULT 0,
             `link_' . $destination_module->primary_key . '` INT(6) NOT NULL DEFAULT 0,
             `fid` INT(6) NOT NULL DEFAULT 0,
             INDEX(`' . $source_module->primary_key . '`,`link_' . $destination_module->primary_key . '`,`fid`),
             INDEX(`link_' . $destination_module->primary_key . '`)
         )
     ';
     $setting_strings = [];
     foreach (_db::$default_table_settings as $setting => $value) {
         if (is_numeric($setting)) {
             $setting_strings[] = $value;
         } else {
             $setting_strings[] = $setting . ' = ' . $value;
         }
     }
     $sql .= implode(',', $setting_strings);
     _db::query($sql);
 }
Exemplo n.º 11
0
 public static function do_paginate()
 {
     $module = new __cms_module();
     $module->do_retrieve_from_id([], $_REQUEST['_mid']);
     $object = new static($module, $_REQUEST['value']);
     ajax::update($object->get_table());
 }
Exemplo n.º 12
0
 /** Add user level management
  * ---CMS User
  * ---CMS User level
  * ---CMS User --> CMS Module
  * */
 public function patch_v4()
 {
     if (!db::table_exists('_cms_user')) {
         self::create_from_structure('_cms_user');
         table::reload_table_definitions();
         $user_level = new _cms_user_level();
         $user_level->title = 'User';
         $user_level->do_save();
         $user_level->ulid = 0;
         $user_level->title = 'Webmaster';
         $user_level->do_save();
         $user_level->ulid = 0;
         $user_level->title = 'Admin';
         $user_level->do_save();
         $cms_user = new _cms_user();
         $cms_user->title = 'admin';
         $cms_user->password = '******';
         $cms_user->ulid = 3;
         $cms_user->do_save();
         $_module = new _cms_module();
         $_module->do_retrieve([], ['where_equals' => ['table_name' => '_cms_module']]);
         $_field = new _cms_field();
         $_field->do_retrieve([], ['where_equals' => ['mid' => $_module->get_primary_key(), 'field_name' => 'user_level_view']]);
         static::modify_link_field($_field, '_cms_user_level', 'title');
         $_field = new _cms_field();
         $_field->do_retrieve([], ['where_equals' => ['mid' => $_module->get_primary_key(), 'field_name' => 'user_level_add']]);
         static::modify_link_field($_field, '_cms_user_level', 'title');
         $_field = new _cms_field();
         $_field->do_retrieve([], ['where_equals' => ['mid' => $_module->get_primary_key(), 'field_name' => 'user_level_delete']]);
         static::modify_link_field($_field, '_cms_user_level', 'title');
     }
 }
Exemplo n.º 13
0
 public static function rebuild_modules()
 {
     $modules = _cms_module::get_all(_cms_module::$default_fields);
     $fields = _cms_field::get_all(_cms_field::$default_fields);
     $json = [];
     $modules->iterate(function (_cms_module $row) use(&$json) {
         $result = [];
         foreach (_cms_module::$default_fields as $field) {
             $result[$field] = $row->{$field};
         }
         $json[$row->mid] = $result;
     });
     $fields->iterate(function (_cms_field $row) use(&$json) {
         $result = [];
         foreach (_cms_field::$default_fields as $field) {
             $result[$field] = $row->{$field};
         }
         $json[$row->mid]['fields'][$row->field_name] = $result;
     });
     file_put_contents(root . '/.cache/.modules.json', json_encode($json));
 }