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); } } }
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; }
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 ''; }
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(); }
function model_name() { $current_class = get_class($this); $current_obj = to_camel(to_o(strtolower(substr($current_class, 0, -10)))); return $current_obj; }