Beispiel #1
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());
 }
Beispiel #2
0
 public function get_title_tag()
 {
     $parts = [parent::get_title_tag(), 'CMS', ucwords(str_replace('_', ' ', \classes\get::__class_name($this)))];
     if (isset($this->module->current)) {
         $parts[] = ucwords(str_replace('_', ' ', get::__class_name($this->module->current)));
         if ($this->module->current->get_primary_key()) {
             if ($title = $this->module->current->get_title()) {
                 $parts[] = $title;
             } else {
                 $parts[] = $this->module->current->get_primary_key();
             }
         }
     }
     return implode(' | ', $parts);
 }
Beispiel #3
0
 public function filter()
 {
     $res = $this->getIterator();
     if (!isset($this->filters)) {
         $this->set_filters();
     }
     foreach ($this->filters->fields as $field) {
         if ($field->field_name != 'identifier' && isset($this->filters->{$field->field_name}) && $this->filters->{$field->field_name}) {
             $key = $field->field_name;
             if ($field->original_field instanceof field_link) {
                 $key = get::__class_name($field->original_field->get_link_module());
             }
             $res = new collection_filter($res, $key, $this->filters->{$field->field_name});
         }
     }
     $result_set = [];
     foreach ($res as $object) {
         $result_set[] = $object;
     }
     $this->exchangeArray($result_set);
 }
Beispiel #4
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());
 }
Beispiel #5
0
 public function get_table_class()
 {
     return get::__class_name($this->get_table_object());
 }
Beispiel #6
0
 public function get_cms_admin_edit()
 {
     $cols = [];
     $cols[] = node::create('td span.btn.btn-default.live' . ($this->live ? '' : '.not_live'), [], icon::get($this->live ? 'ok' : 'remove'));
     $cols[] = node::create('td span.btn.btn-default.edit', ['href' => '/' . $this->fid . '/?module=\\module\\cms\\object\\_cms_module&act=get_edit_field_form&fid=' . $this->fid, 'data-target' => '#modal', 'data-toggle' => 'modal'], icon::get('pencil'));
     $cols[] = node::create('td', [], $this->fid);
     $cols[] = node::create('td', [], node::create('a.up.reorder.btn.btn-default', ['data-ajax-click' => 'cms:do_reorder_fields', 'data-ajax-post' => '{"mid":' . $this->parent_form->get_module_id() . ',"fid":' . $this->fid . ',"dir":"up"}'], icon::get('arrow-up')) . node::create('a.down.reorder.btn.btn-default', ['data-ajax-click' => 'cms:do_reorder_fields', 'data-ajax-post' => '{"mid":' . $this->parent_form->get_module_id() . ',"fid":' . $this->fid . ',"dir":"down"}'], icon::get('arrow-down')));
     $cols[] = node::create('td', [], $this->title);
     $cols[] = node::create('td', [], $this->field_name);
     $cols[] = node::create('td', [], get::__class_name($this));
     $fields = ['list', 'required', 'filter'];
     foreach ($fields as $field) {
         $list_options = ['data-ajax-change' => 'form\\field_boolean:update_cms_setting', 'data-ajax-post' => '{"fid":' . $this->fid . ', "field":"' . $field . '"}', 'value' => 1, 'type' => 'checkbox'];
         if ($this->{$field}) {
             $list_options['checked'] = 'checked';
         }
         $cols[] = node::create('td input#' . $this->fid . '_list', $list_options);
     }
     $cols[] = node::create('td', [], $this instanceof field_image ? $this->get_image_edit_link() : '');
     return $cols;
 }
Beispiel #7
0
 /**
  * @param $object
  * @param array $fields_to_retrieve
  * @param $options
  * @return \db\select
  */
 public static function get_query($object, array $fields_to_retrieve, $options)
 {
     $query = db::select(_get::__class_name($object));
     $base_object = _get::__class_name($object);
     if (!empty($fields_to_retrieve)) {
         foreach ($fields_to_retrieve as $field) {
             if (strstr($field, '.') && !strstr($field, '.*') && !strstr($field, ' AS ')) {
                 $query->add_field_to_retrieve($field . ' AS `' . str_replace('.', '@', $field) . '`');
             } else {
                 if (strstr($field, '(') === false && strstr($field, '.*') === false && strstr($field, '.') === false) {
                     $query->add_field_to_retrieve($base_object . '.' . $field);
                 } else {
                     $query->add_field_to_retrieve($field);
                 }
             }
         }
     } else {
         $query->add_field_to_retrieve($base_object . '.*');
     }
     if (isset($options['parameters'])) {
         $query->filter('1', $options['parameters']);
     }
     if (isset($options['join'])) {
         foreach ($options['join'] as $key => $val) {
             $query->add_join($key, $val);
         }
     }
     if (isset($options['where'])) {
         $query->filter($options['where']);
     }
     if (isset($options['where_equals']) && $options['where_equals']) {
         foreach ($options['where_equals'] as $key => $val) {
             $query->filter_field($key, $val);
         }
     }
     if (isset($options['order'])) {
         $query->set_order($options['order']);
     }
     if (isset($options['limit'])) {
         $query->set_limit($options['limit']);
     }
     if (isset($options['group'])) {
         $query->add_grouping($options['group']);
     }
     return $query;
 }
Beispiel #8
0
 /**
  * @param table_array $elements
  * @param string      $class
  *
  * @return node
  */
 public function get_table_rows($elements, $class = '')
 {
     $nodes = node::create('tbody');
     $keys = $this->allowed_keys;
     /**
      * @var \classes\table $obj
      * @return string
      */
     return $elements->iterate_return(function (table $obj) use($nodes, $keys, $class) {
         if ($obj->_has_child && in_array($obj->get_primary_key(), $keys)) {
             $obj->_is_expanded = true;
             $children = $this->get_elements($obj->get_primary_key());
         } else {
             $obj->_is_expanded = false;
             $children = false;
         }
         return node::create('tr#' . get::__class_name($obj) . $obj->get_primary_key() . ($obj->deleted ? '.danger.deleted' : '') . $class . '.vertical-align', [], $obj->get_cms_list()) . ($children ? $this->get_table_rows($children, '.active') : '');
     });
 }
Beispiel #9
0
 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());
 }
Beispiel #10
0
 public function get_id()
 {
     return str_replace('\\', '_', _get::__class_name($this));
 }
Beispiel #11
0
 public function get_view()
 {
     $html = node::create('div', [], node::create('h2.page-header.container-fluid', [], 'View all ' . ucwords(get::__class_name($this->module->current)) . 's') . $this->module->get_inner());
     return $html;
 }
Beispiel #12
0
 /**
  *
  */
 public function do_reorder()
 {
     if (isset($_REQUEST['id'])) {
         /** @var table $object */
         static::$retrieve_unlive = true;
         static::$retrieve_deleted = true;
         $object = new static(['position'], $_REQUEST['id']);
         if (isset($_REQUEST['dir']) && $_REQUEST['dir'] == 'down') {
             _db::update(_get::__class_name($object))->add_value('position', $object->position)->filter_field('position', $object->position + 1)->execute();
             _db::update(_get::__class_name($object))->add_value('position', $object->position + 1)->filter_field($object->get_primary_key_name(), $object->get_primary_key())->execute();
         } else {
             _db::update(_get::__class_name($object))->add_value('position', $object->position)->filter_field('position', $object->position - 1)->execute();
             _db::update(_get::__class_name($object))->add_value('position', $object->position - 1)->filter_field($object->get_primary_key_name(), $object->get_primary_key())->execute();
         }
         $list = new _cms_table_list(self::$cms_modules[get_called_class()], 1);
         _ajax::update($list->get_table());
     }
 }