Пример #1
0
 function init()
 {
     $domain = $_SERVER['HTTP_HOST'];
     if (isset(d()->sitemap['settings']['domain'])) {
         $domain = d()->sitemap['settings']['domain'];
     }
     foreach (d()->sitemap as $key => $value) {
         if ($key == 'settings') {
             continue;
         }
         $table = $key;
         if (isset($value['table'])) {
             $table = $value['table'];
         }
         if (isset($value['url'])) {
             $url = $value['url'];
         } else {
             $url = '/' . $table . '/';
         }
         $last_change = false;
         $model_name = to_camel(to_o($table));
         foreach (d()->{$model_name} as $row) {
             $page_url = $row->url;
             if ($page_url == '') {
                 $page_url = $row->id;
             }
             if ($page_url == 'index') {
                 $page_url = '';
             }
             $uri = 'http://' . $domain . $url . $page_url;
             $data = array();
             $data['priority'] = '0.5';
             $data['url'] = $uri;
             if ($url . $page_url == '/') {
                 $data['priority'] = '1';
             }
             $data['last_change'] = substr($row->updated_at, 0, 10);
             $this->add_row($data);
             if ($last_change == false || $last_change < $row->updated_at) {
                 $last_change = $row->updated_at;
             }
         }
         if (isset($value['root'])) {
             if ($last_change == false) {
                 $last_change = Date("Y-m-d H:i:s");
             }
             $data = array();
             $data['priority'] = '0.5';
             $uri = 'http://' . $domain . $value['root'];
             $data['url'] = $uri;
             $data['last_change'] = substr($last_change, 0, 10);
             $this->add_row($data);
         }
     }
 }
Пример #2
0
 function create_table($table, $one_element = "")
 {
     if ($one_element == '') {
         $result = d()->db->exec("CREATE TABLE `" . $table . "` (\r\n\t\t\t\t`id`  int(11) NOT NULL AUTO_INCREMENT ,\r\n\t\t\t\t`url`  text CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,\r\n\t\t\t\t`text`  text CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,\r\n\t\t\t\t`title`  text CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,\r\n\t\t\t\t`template`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,\r\n\t\t\t\t`type`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,\r\n\t\t\t\t`multi_domain`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,\r\n\t\t\t\t`created_at`  datetime NULL,\t\t\r\n\t\t\t\t`updated_at`  datetime NULL,\t\t\r\n\t\t\t\t`sort`  int(11) NULL DEFAULT NULL ,\r\n\t\t\t\tPRIMARY KEY (`id`)\r\n\t\t\t\t)\r\n\t\t\t\tENGINE=MyISAM\r\n\t\t\t\tDEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci\r\n\t\t\t\t;");
     } else {
         $result = d()->db->exec("CREATE TABLE `" . $table . "` (\r\n\t\t\t\t`id`  int(11) NOT NULL AUTO_INCREMENT ,\r\n\t\t\t\t`url`  text CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,\r\n\t\t\t\t`text`  text CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,\r\n\t\t\t\t`title`  text CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,\r\n\t\t\t\t`" . $one_element . "_id`  int(11) NULL DEFAULT NULL ,\r\n\t\t\t\t`template`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,\r\n\t\t\t\t`type`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,\r\n\t\t\t\t`multi_domain`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,\t\t\t\t\r\n\t\t\t\t`created_at`  datetime NULL,\t\t\r\n\t\t\t\t`updated_at`  datetime NULL,\t\t\r\n\t\t\t\t`sort`  int(11) NULL DEFAULT NULL ,\r\n\t\t\t\tPRIMARY KEY (`id`)\r\n\t\t\t\t)\r\n\t\t\t\tENGINE=MyISAM\r\n\t\t\t\tDEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci\r\n\t\t\t\t;");
     }
     if (strpos($table, '_to_') !== false) {
         //Создаём дополнительные столбики
         $tablefields = explode('_to_', $table);
         foreach ($tablefields as $field) {
             $field = to_o($field) . '_id';
             d()->Scaffold->create_field($table, $field);
         }
     }
     return $result;
 }
Пример #3
0
 function linked($tablename = false)
 {
     if ($tablename == false) {
         return $this->_options['table'];
     }
     //Случай первый: Catalog->_goods (many_to_one): дочерние
     if ($this->table_exists(strtolower(to_p(get_class($this))))) {
         $column_name = et(to_o($this->_options['table']) . '_id');
         //catalog_id
         if ($this->column_exists($column_name, $tablename)) {
             //Получаем массив идентификаторов
             $ids = $this->fast_all_of('id');
             $model = activerecord_factory_from_table($tablename)->where($column_name . ' IN (?)', $ids);
             return $model;
         }
     } else {
         $column_name = et(strtolower(get_class($this)) . '_id');
         //catalog_id
         if ($this->column_exists($column_name, $tablename)) {
             //Получаем массив идентификаторов
             $ids = $this->fast_all_of('id');
             $model = activerecord_factory_from_table($tablename)->where($column_name . ' IN (?)', $ids);
             return $model;
         }
     }
     //Случай третий: Good->_catalogs (one_to_many): родительские
     if ($this->table_exists($tablename)) {
         $column_name = et(to_o($tablename) . '_id');
         //catalog_id
         if ($this->column_exists($column_name)) {
             //Получаем массив идентификаторов
             $ids = $this->fast_all_of($column_name);
             $model = activerecord_factory_from_table($tablename)->where('id IN (?)', $ids);
             return $model;
         }
     } else {
         if (class_exists(to_o($tablename))) {
             $column_name = et(to_o($tablename) . '_id');
             //catalog_id
             if ($this->column_exists($column_name)) {
                 //Получаем массив идентификаторов
                 $ids = $this->fast_all_of($column_name);
                 $model = activerecord_factory_from_table($tablename)->where('id IN (?)', $ids);
                 return $model;
             }
         }
     }
     //Случай второй: Catalog->goods (many_to_many)
     //Случай непонятный
     return '';
 }
Пример #4
0
function admin_scaffold_new()
{
    d()->table_name = '';
    if (isset($_GET['table'])) {
        d()->table_name = $_GET['table'];
    }
    if (d()->validate('admin_scaffold_create')) {
        $result_messages = '';
        $table = d()->params['name'];
        $one_element = to_o(d()->params['name']);
        $_first_letter = strtoupper(substr($one_element, 0, 1));
        $model = $_first_letter . substr($one_element, 1);
        $_first_letter_controller = strtoupper(substr($table, 0, 1));
        $controller_name = $_first_letter_controller . substr($table, 1);
        include 'cms/mod_admin/scaffold_templates/scaffold_templates.php';
        foreach ($scaffold_templates as $scaffold_name => $scaffold_value) {
            $scaffold_templates[$scaffold_name] = str_replace(array('#table#', '#one_element#', '#model#', '#controller_name#'), array($table, $one_element, $model, $controller_name), $scaffold_value);
        }
        //Создание таблицы
        if (d()->params['create_table'] == 'yes') {
            $result_messages .= "Создаём таблицу " . h($table) . "... ";
            $result = d()->Scaffold->create_table($table, $one_element);
            if ($result !== false) {
                $result_messages .= "<span style='color:#198E58'>готово</span><br>";
            } else {
                $result_messages .= "<span style='color:#B01414'>неудачно</span><br>";
            }
        }
        //Создание папки для модуля
        if (d()->params['create_show'] == 'yes' || d()->params['create_list'] == 'yes' || d()->params['create_model'] == 'yes') {
            $result_messages .= "Создаём папку mod_" . h($table) . "... ";
            $result = mkdir($_SERVER['DOCUMENT_ROOT'] . '/app/mod_' . $table);
            chmod($_SERVER['DOCUMENT_ROOT'] . '/app/mod_' . $table, 0777);
            if ($result) {
                $result_messages .= "<span style='color:#198E58'>готово</span><br>";
            } else {
                $result_messages .= "<span style='color:#B01414'>неудачно</span><br>";
            }
        }
        //Создание файла с контроллером
        if ((d()->params['create_show'] == 'yes' || d()->params['create_list'] == 'yes') && !file_exists($_SERVER['DOCUMENT_ROOT'] . '/app/mod_' . $table . '/' . $table . '.func.php')) {
            $result_messages .= "Создаём файл mod_" . h($table) . "/" . h(et($table)) . ".func.php... ";
            $result = fopen($_SERVER['DOCUMENT_ROOT'] . '/app/mod_' . $table . '/' . $table . '.func.php', 'w+');
            $t_result = fwrite($result, "<" . "?php\r\n\r\n");
            fclose($result);
            chmod($_SERVER['DOCUMENT_ROOT'] . '/app/mod_' . $table . '/' . $table . '.func.php', 0777);
            if ($result !== 'false' && $t_result !== 'false') {
                $result_messages .= "<span style='color:#198E58'>готово</span><br>";
            } else {
                $result_messages .= "<span style='color:#B01414'>неудачно</span><br>";
            }
        }
        //Создание функций в функциональном стиле
        if (d()->params['create_type'] == 'func') {
            if (d()->params['create_show'] == 'yes' && file_exists($_SERVER['DOCUMENT_ROOT'] . '/app/mod_' . $table . '/' . $table . '.func.php')) {
                $check = file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/app/mod_' . $table . '/' . $table . '.func.php');
                if (false === strpos($check, $table . "_show")) {
                    $result_messages .= "Создаём функцию  " . h($table) . "_show... ";
                    $result = fopen($_SERVER['DOCUMENT_ROOT'] . '/app/mod_' . $table . '/' . $table . '.func.php', 'a');
                    $t_result = fwrite($result, $scaffold_templates["show_controller_func"]);
                    fclose($result);
                    if ($result !== 'false' && $t_result !== 'false') {
                        $result_messages .= "<span style='color:#198E58'>готово</span><br>";
                    } else {
                        $result_messages .= "<span style='color:#B01414'>неудачно</span><br>";
                    }
                }
            }
            if (d()->params['create_list'] == 'yes' && file_exists($_SERVER['DOCUMENT_ROOT'] . '/app/mod_' . $table . '/' . $table . '.func.php')) {
                $check = file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/app/mod_' . $table . '/' . $table . '.func.php');
                if (false === strpos($check, $table . "_index")) {
                    $result_messages .= "Создаём функцию  " . h($table) . "_index... ";
                    $result = fopen($_SERVER['DOCUMENT_ROOT'] . '/app/mod_' . $table . '/' . $table . '.func.php', 'a');
                    $t_result = fwrite($result, $scaffold_templates["list_controller_func"]);
                    fclose($result);
                    if ($result !== 'false' && $t_result !== 'false') {
                        $result_messages .= "<span style='color:#198E58'>готово</span><br>";
                    } else {
                        $result_messages .= "<span style='color:#B01414'>неудачно</span><br>";
                    }
                }
            }
        } else {
            //ООП подход
            if ((d()->params['create_show'] == 'yes' || d()->params['create_list'] == 'yes') && file_exists($_SERVER['DOCUMENT_ROOT'] . '/app/mod_' . $table . '/' . $table . '.func.php')) {
                $check = file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/app/mod_' . $table . '/' . $table . '.func.php');
                if (false === strpos($check, $controller_name . "Controller")) {
                    $result_messages .= "Создаём и открываем класс  " . h($controller_name) . "Controller... ";
                    $result = fopen($_SERVER['DOCUMENT_ROOT'] . '/app/mod_' . $table . '/' . $table . '.func.php', 'a');
                    $t_result = fwrite($result, $scaffold_templates["controller_start"]);
                    if ($result !== 'false' && $t_result !== 'false') {
                        $result_messages .= "<span style='color:#198E58'>готово</span><br>";
                    } else {
                        $result_messages .= "<span style='color:#B01414'>неудачно</span><br>";
                    }
                    //Создание методов
                    if (d()->params['create_show'] == 'yes') {
                        $check = file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/app/mod_' . $table . '/' . $table . '.func.php');
                        if (false === strpos($check, "show(")) {
                            $result_messages .= "Создаём метод show... ";
                            $t_result = fwrite($result, $scaffold_templates["show_controller_method"]);
                            if ($result !== 'false' && $t_result !== 'false') {
                                $result_messages .= "<span style='color:#198E58'>готово</span><br>";
                            } else {
                                $result_messages .= "<span style='color:#B01414'>неудачно</span><br>";
                            }
                        }
                    }
                    if (d()->params['create_list'] == 'yes') {
                        $check = file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/app/mod_' . $table . '/' . $table . '.func.php');
                        if (false === strpos($check, "index(")) {
                            $result_messages .= "Создаём метод index... ";
                            $t_result = fwrite($result, $scaffold_templates["list_controller_method"]);
                            if ($result !== 'false' && $t_result !== 'false') {
                                $result_messages .= "<span style='color:#198E58'>готово</span><br>";
                            } else {
                                $result_messages .= "<span style='color:#B01414'>неудачно</span><br>";
                            }
                        }
                    }
                    $result_messages .= "Закрываем класс  " . h($controller_name) . "Controller... ";
                    $t_result = fwrite($result, $scaffold_templates["controller_end"]);
                    if ($result !== 'false' && $t_result !== 'false') {
                        $result_messages .= "<span style='color:#198E58'>готово</span><br>";
                    } else {
                        $result_messages .= "<span style='color:#B01414'>неудачно</span><br>";
                    }
                    fclose($result);
                }
            }
        }
        if (d()->params['create_show'] == 'yes' && !file_exists($_SERVER['DOCUMENT_ROOT'] . '/app/mod_' . $table . '/_show.html')) {
            $result_messages .= "Создаём файл mod_" . h($table) . "/_show.html... ";
            $result = fopen($_SERVER['DOCUMENT_ROOT'] . '/app/mod_' . $table . '/_show.html', 'w');
            $t_result = fwrite($result, $scaffold_templates["show_template"]);
            fclose($result);
            chmod($_SERVER['DOCUMENT_ROOT'] . '/app/mod_' . $table . '/_show.html', 0777);
            if ($result !== 'false' && $t_result !== 'false') {
                $result_messages .= "<span style='color:#198E58'>готово</span><br>";
            } else {
                $result_messages .= "<span style='color:#B01414'>неудачно</span><br>";
            }
        }
        if (d()->params['create_list'] == 'yes' && !file_exists($_SERVER['DOCUMENT_ROOT'] . '/app/mod_' . $table . '/_index.html')) {
            $result_messages .= "Создаём файл mod_" . h($table) . "/_index.html... ";
            $result = fopen($_SERVER['DOCUMENT_ROOT'] . '/app/mod_' . $table . '/_index.html', 'w');
            $t_result = fwrite($result, $scaffold_templates["list_template"]);
            fclose($result);
            chmod($_SERVER['DOCUMENT_ROOT'] . '/app/mod_' . $table . '/_index.html', 0777);
            if ($result !== 'false' && $t_result !== 'false') {
                $result_messages .= "<span style='color:#198E58'>готово</span><br>";
            } else {
                $result_messages .= "<span style='color:#B01414'>неудачно</span><br>";
            }
        }
        if (d()->params['create_fields'] == 'yes' && !file_exists($_SERVER['DOCUMENT_ROOT'] . '/app/fields/' . $table . '.ini')) {
            $result_messages .= 'Создаём файл fields/' . $table . '.ini... ';
            $result = fopen($_SERVER['DOCUMENT_ROOT'] . '/app/fields/' . $table . '.ini', 'w');
            $t_result = fwrite($result, $scaffold_templates["field_template"]);
            fclose($result);
            chmod($_SERVER['DOCUMENT_ROOT'] . '/app/fields/' . $table . '.ini', 0777);
            if ($result !== 'false' && $t_result !== 'false') {
                $result_messages .= "<span style='color:#198E58'>готово</span><br>";
            } else {
                $result_messages .= "<span style='color:#B01414'>неудачно</span><br>";
            }
        }
        //Записив роутер в соотвествиии с выбранным стилем
        if (d()->params['create_router'] == 'yes' && file_exists($_SERVER['DOCUMENT_ROOT'] . '/app/router.init.ini')) {
            if (d()->params['create_type'] == 'func') {
                $check = file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/app/router.init.ini');
                if (false === strpos($check, $table . "_index") && false === strpos($check, $table . "_show")) {
                    $result_messages .= 'Записываем адреса в роутер... ';
                    $result = fopen($_SERVER['DOCUMENT_ROOT'] . '/app/router.init.ini', 'a');
                    $t_result = fwrite($result, $scaffold_templates["router_template_func"]);
                    fclose($result);
                    if ($result !== 'false' && $t_result !== 'false') {
                        $result_messages .= "<span style='color:#198E58'>готово</span><br>";
                    } else {
                        $result_messages .= "<span style='color:#B01414'>неудачно</span><br>";
                    }
                }
            } else {
                $check = file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/app/router.init.ini');
                if (false === strpos($check, $table . "_index") && false === strpos($check, $table . "_show")) {
                    $result_messages .= 'Записываем адреса в роутер... ';
                    $result = fopen($_SERVER['DOCUMENT_ROOT'] . '/app/router.init.ini', 'a');
                    $t_result = fwrite($result, $scaffold_templates["router_template_oop"]);
                    fclose($result);
                    if ($result !== 'false' && $t_result !== 'false') {
                        $result_messages .= "<span style='color:#198E58'>готово</span><br>";
                    } else {
                        $result_messages .= "<span style='color:#B01414'>неудачно</span><br>";
                    }
                }
            }
        }
    }
    d()->result_messages = $result_messages;
    print d()->view();
}
Пример #5
0
 function model_name()
 {
     $current_class = get_class($this);
     $current_obj = to_camel(to_o(strtolower(substr($current_class, 0, -10))));
     return $current_obj;
 }