public function search() { $lang = Router::getLanguage(); $dbc = Connect::getConnection(); $indexModel = new IndexModel(); $material_type_array = $indexModel->getType_of_Materials(); $data_total = array(); foreach ($material_type_array as $val) { $material_type = $val['type_name']; if ($material_type != 'Admin') { $fields = new FieldsModel($material_type); $fields_list = ''; $fields_list_value = ''; foreach ($fields->getFields() as $v) { if ($v != 'id' && $v != 'alias' && $v != 'id_' . $material_type . '') { $fields_list .= ',`' . $v . '` '; $fields_list_value .= $v . " LIKE '%" . $this->search_request . "%' OR "; } } $fields_list_value = trim($fields_list_value, 'OR '); $sql = "SELECT `id`, `id_{$material_type}` {$fields_list}, `alias` FROM `{$material_type}_{$lang}` WHERE {$fields_list_value}"; $placeholders = array(); $data = $dbc->getDate($sql, $placeholders); $data_total[$material_type] = $data; } } return $data_total; }
public function totalListAction() { if (Session::hasUser('admin')) { $menuModel = new MenuModel(); $menu_data = array(); foreach (Config::get('languages') as $v) { foreach ($menuModel->getMainMenu($v) as $val) { $t = $val['id_page']; $menu_data[$v][$t] = $val; } } // Debugger::PrintR($menu_data); $adminModel = new AdminModel(); $data_admin = $adminModel->getAdminPage(Router::getId()); $indexModel = new IndexModel(); $material_type = $this->totalListMaterialType(); $data_materials = $indexModel->getTotalList($material_type); foreach ($data_materials as $k => $v) { if ($v['status'] == 1) { $v['status'] = __t('yes'); } else { $v['status'] = __t('no'); } $data_materials[$k] = $v; } $items_count = $indexModel->getCount($material_type); $items_per_page = Config::get('materials_per_page'); $request = new Request(); $currentPage = $request->get('page') ? (int) $request->get('page') : 1; $data_pagination = self::getPagination($items_count, $items_per_page, $currentPage); if ($items_count) { $data_materials_page = array_chunk($data_materials, $items_per_page, true); if (isset($data_materials_page[$currentPage - 1])) { $data_materials_page = $data_materials_page[$currentPage - 1]; } else { throw new Exception('Page (' . Router::getUri() . ') not found', 404); } } else { $data_materials_page = null; } $data_url = explode('?', Router::getUri()); $type_of_materials = array(); foreach ($indexModel->getType_of_Materials() as $v) { $type_of_materials[] = strtolower($v['type_name']); } $system_doc = array('404' => Config::get('default_id_error_404'), '403' => Config::get('default_id_error_403'), '204' => Config::get('default_id_error_204'), '500' => Config::get('default_id_error_500'), 'default_page' => Config::get('default_id'), 'not_publish' => Config::get('not_publish'), 'contacts' => Config::get('contacts'), 'news' => Config::get('news'), 'search' => Config::get('search')); $system_doc_rev = array_flip($system_doc); $args = array('data_admin' => $data_admin[0], 'data_materials' => $data_materials_page, 'data_pagination' => $data_pagination, 'data_url' => $data_url[0], 'type_of_materials' => $type_of_materials, 'system_doc' => $system_doc_rev, 'menu_data' => $menu_data, 'items_per_page' => $items_per_page); return $this->render_admin($args); } else { throw new Exception('Access is forbidden', 403); } }
public function add($with_without_menu = null) { $publish = $this->publication ? 1 : 0; $indexModel = new IndexModel(); $id_mat_type = ''; foreach ($indexModel->getType_of_Materials() as $v) { if ($v['type_name'] == $this->material_type) { $id_mat_type = $v['id']; } } $controller = $this->material_type == 'basic_page' ? 'Index' : ucfirst($this->material_type); $placeholders = array('controller' => $controller, 'action' => 'index', 'publish' => $publish); $dbc = Connect::getConnection(); $sql = "INSERT INTO `pages`(`id_mat_type`, `status`, `controller`, `action`) VALUES ({$id_mat_type},:publish,:controller,:action)"; $sth = $dbc->getPDO()->prepare($sql); $sth->execute($placeholders); $sql = "SELECT MAX(id) AS max_id FROM pages"; $placeholders = array(); $date = $dbc->getDate($sql, $placeholders); $id_new_page = $date[0]['max_id']; $placeholders = array('id_new_page' => $id_new_page, 'img' => $this->img, 'date' => $this->date); $sql = "INSERT INTO `{$this->material_type}`(`id_page`, `img`, `date`) VALUES (:id_new_page, :img, :date)"; $sth = $dbc->getPDO()->prepare($sql); $sth->execute($placeholders); if (!isset($with_without_menu)) { $placeholders = array('id_new_page' => $id_new_page, 'id_parent' => $this->id_parent); $sql = "INSERT INTO `main_menu`(`id_page`, `id_parent_page`, `status`) VALUES (:id_new_page,:id_parent,1)"; $sth = $dbc->getPDO()->prepare($sql); $sth->execute($placeholders); $sql = "SELECT MAX(id) AS max_id FROM main_menu"; $placeholders = array(); $date = $dbc->getDate($sql, $placeholders); $id_new_menu = $date[0]['max_id']; $placeholders = array('id_new_menu' => $id_new_menu, 'title' => $this->title_or_menu_name, 'alias' => $this->new_alias); $lang = Config::get('default_language'); $sql = "INSERT INTO `main_menu_{$lang}`(`id_main_menu`, `name`, `alias_menu`) VALUES (:id_new_menu,:title,:alias)"; $sth = $dbc->getPDO()->prepare($sql); $sth->execute($placeholders); // Добавление укр данных в англ. меню - необходимо для нормальной работы меню foreach (Config::get('languages') as $v) { if ($v != Config::get('default_language')) { $sql = "INSERT INTO `main_menu_{$v}`(`id_main_menu`, `name`, `alias_menu`) VALUES (:id_new_menu,:title,:alias)"; $sth = $dbc->getPDO()->prepare($sql); $sth->execute($placeholders); } } } $sql = "SELECT MAX(id) AS max_id FROM {$this->material_type}"; $placeholders = array(); $date = $dbc->getDate($sql, $placeholders); $id_new_page = $date[0]['max_id']; $placeholders = array('id_new_page' => $id_new_page, 'title' => $this->title, 'alias' => $this->new_alias); $additional_fields = ''; foreach ($this->additional_fields_arr as $v) { $additional_fields .= ", `{$v}`"; } $lang = Config::get('default_language'); $sql = "INSERT INTO {$this->material_type}_{$lang} (`id_{$this->material_type}`,`title`, `alias` {$additional_fields})\n VALUES (:id_new_page, :title, :alias {$this->additional_fields_value})"; $sth = $dbc->getPDO()->prepare($sql); $sth->execute($placeholders); //Добавление тайтла и алиаса для англоязычной версии (пока укр вариант алиаса), необходимо для меню $placeholders = array('id_new_page' => $id_new_page, 'alias' => $this->new_alias); foreach (Config::get('languages') as $v) { if ($v != Config::get('default_language')) { $sql = "INSERT INTO {$this->material_type}_{$v} (`id_{$this->material_type}`, `alias`) VALUES (:id_new_page, :alias)"; $sth = $dbc->getPDO()->prepare($sql); $sth->execute($placeholders); } } }