Exemplo n.º 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());
 }
Exemplo n.º 2
0
 /** Add
  * ---Image Format
  * ---Image Crop
  * ---Image Size
  * */
 public function patch_v3()
 {
     if (!db::table_exists('image_format')) {
         self::create_from_structure('image_crop');
         self::create_from_structure('image_format');
         self::create_from_structure('image_size');
         db::insert('image_format')->add_value('title', 'PNG')->execute();
         db::insert('image_format')->add_value('title', 'JPG')->execute();
         db::insert('image_format')->add_value('title', 'GIF')->execute();
         db::insert('image_crop')->add_value('title', 'Crop')->execute();
         db::insert('image_crop')->add_value('title', 'Scale Within Bounds')->execute();
         db::insert('image_crop')->add_value('title', 'Scale Within Height')->execute();
         db::insert('image_crop')->add_value('title', 'Scale Within Width')->execute();
     }
 }
Exemplo n.º 3
0
    public function do_submit()
    {
        db::query('CREATE TABLE IF NOT EXISTS `' . $this->table_name . '` (
            `' . $this->primary_key . '` int(4) NOT NULL AUTO_INCREMENT,
            `parent_' . $this->primary_key . '` int(4) NOT NULL DEFAULT "0",
            `ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
            `cms_created` timestamp NOT NULL DEFAULT "0000-00-00 00:00:00",
            `live` tinyint(1) NOT NULL DEFAULT "0",
            `deleted` tinyint(1) NOT NULL DEFAULT "0",
            `position` int(6) NOT NULL DEFAULT "0",
            `' . get::fn($this->title_label) . '` varchar(255) NOT NULL,
            PRIMARY KEY (`' . $this->primary_key . '`)
            ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=0;');
        $mid = db::insert('_cms_module')->add_value('gid', $this->gid)->add_value('primary_key', $this->primary_key)->add_value('title', $this->title)->add_value('table_name', $this->table_name)->add_value('namespace', $this->namespace)->execute();
        $id_field = db::insert('_cms_field')->add_value('field_name', $this->primary_key)->add_value('title', 'ID')->add_value('type', 'int')->add_value('mid', $mid)->add_value('required', false)->add_value('list', false)->add_value('editable', false)->add_value('filter', false)->execute();
        db::insert('_cms_field')->add_value('field_name', 'parent_' . $this->primary_key)->add_value('title', 'Parent ID')->add_value('type', 'link')->add_value('mid', $mid)->add_value('link_module', $mid)->add_value('link_field', (int) $id_field + 2)->add_value('required', false)->add_value('list', false)->execute();
        db::insert('_cms_field')->add_value('field_name', get::fn($this->title_label))->add_value('title', $this->title_label)->add_value('type', 'string')->add_value('mid', $mid)->execute();
        $file = null;
        if (!$this->namespace) {
            if (!is_dir(root . '/inc/object/')) {
                mkdir(root . '/inc/object/');
            }
            if (!file_exists(root . '/inc/object/' . $this->table_name)) {
                $file = root . '/inc/object/' . $this->table_name;
            }
        } else {
            if (!is_dir(root . '/inc/module/')) {
                mkdir(root . '/inc/module/');
            }
            if (!is_dir(root . '/inc/module/' . $this->namespace)) {
                mkdir(root . '/inc/module/' . $this->namespace);
            }
            if (!is_dir(root . '/inc/module/' . $this->namespace . '/object/')) {
                mkdir(root . '/inc/module/' . $this->namespace . '/object');
            }
            if (!file_exists(root . '/inc/module/' . $this->namespace . '/object/' . $this->table_name)) {
                $file = root . '/inc/module/' . $this->namespace . '/object/' . $this->table_name;
            }
        }
        if ($file) {
            $class_name = ($this->namespace ? 'module\\' . $this->namespace . '\\' : '') . 'object\\' . $this->table_name;
            file_put_contents($file . '.php', '<?php
namespace ' . ($this->namespace ? 'module\\' . $this->namespace . '\\' : '') . 'object;

use classes\\table;
use traits\\table_trait;

class ' . $this->table_name . ' extends ' . (class_exists('\\core\\' . $class_name) ? '\\core\\' . $class_name : 'table') . ' {

    use table_trait;

    /** @var string */
    public $' . get::fn($this->title_label) . ';
    /** @var int */
    public $' . get::fn($this->primary_key) . ';

}');
        }
        \classes\table::rebuild_modules();
        ajax::add_script('window.location = window.location');
    }
Exemplo n.º 4
0
 /**
  * @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();
 }