Current Path : /var/www/html/clients/nsmk.e-nk.ru/application/controllers/ |
Current File : /var/www/html/clients/nsmk.e-nk.ru/application/controllers/maxsite.php |
<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); /** * MaxSite CMS * (c) hhttp://max-3000.com/ */ class Maxsite extends Controller { var $data_def = array(); function Maxsite() { parent::Controller(); # подключаем свою библиотеку $this->load->library('maxsite_lib'); # получаем к своему массиву параметров текущий URI $this->data_def['uri_segment'] = mso_segment_array(); $this->data_def['uri_get'] = mso_url_get(); // здесь строчка _GET # в случае ошибки с адресами, расскоментируйте это строчку # $this->data_def['uri_segment'] = $this->uri->segment_array(); # проверяем rss if ( ( count($this->data_def['uri_segment']) > 0 ) and ( $this->data_def['uri_segment'][count($this->data_def['uri_segment'])] == 'feed' ) ) $this->data_def['is_feed'] = '1'; else $this->data_def['is_feed'] = '0'; # инициализация + проверка залогиненности mso_initalizing(); $this->data_def['session'] = $this->session->userdata; # $this->session->sess_destroy(); // для тестирования - обнуление сессии } function _remap($method) { ### в случае ошибок с адресами, закоментируйте эти две строчки if ( isset($this->data_def['uri_segment'][1]) ) $method = $this->data_def['uri_segment'][1]; else { global $mso_install; if ($mso_install == false) { $CI = & get_instance(); if ( !$CI->db->table_exists('options')) return $this->install(); } else $method = 'home'; // нет сегмента, значит это главная } ### if ( ($method == 'home') or ($method == 'archive') or ($method == 'author') or ($method == 'category') or ($method == 'page') or ($method == 'users') or ($method == 'search') or ($method == 'tag') or ($method == 'comments') or ($method == 'loginform') ) { $this->_view_i($method); } elseif ($method == 'index') $this->index(); elseif ($method == 'feed') $this->index('home'); elseif ($method == 'install') $this->install(); elseif ($method == 'remote') $this->_view_i('remote', 'remote'); elseif ($method == 'ajax') $this->_view_i('ajax', 'ajax'); elseif ($method == 'require-maxsite') $this->_view_i('require-maxsite', 'require-maxsite'); elseif ($method == 'admin') $this->_view_i('admin', 'admin'); elseif ($method == 'url') $this->_view_i('url', 'url/url'); elseif ($method == 'xmlrpc') $this->_view_i('xmlrpc', 'xmlrpc/xmlrpc'); elseif ($method == 'xmlrpc_server') $this->_view_i('xmlrpc_server', 'xmlrpc/xmlrpc_server'); // elseif ($method == 'trackback') $this->_view_i('trackback', 'xmlrpc/trackback'); // elseif ($method == 'ping') $this->_view_i('ping', 'xmlrpc/ping'); elseif ($method == 'login') $this->_view_i('login', 'login'); elseif ($method == 'logout') $this->_view_i('logout', 'logout'); else $this->page_404(); } function _view_i($type = 'home', $vievers = 'index') { global $MSO; $data = array('type'=>$type); $MSO->data = array_merge($this->data_def, $data); // если главная страница то проверим в сессии служебный массив _add_to_cookie // если он есть, то внесем из него все данные в куки // [_add_to_cookie] => Array // ( // [namecooke] => Array // ( // [value] => ru // [expire] => 1221749019 // ) // ) // [_add_to_cookie_redirect] => http://max-3000.com/page/about if ($type == 'home' and isset($this->session->userdata['_add_to_cookie'])) // есть { foreach ($this->session->userdata['_add_to_cookie'] as $key=>$val) { if (isset($val['value']) and isset($val['expire'])) { setcookie($key, $val['value'], $val['expire']); // записали в куку } } $this->session->unset_userdata('_add_to_cookie'); // удаляем добавленное // редирект на главную страницу if (isset($this->session->userdata['_add_to_cookie_redirect'])) { $r = $this->session->userdata['_add_to_cookie_redirect']; if (is_bool($r) or is_numeric($r)) // === true or $r === false) // логическая переменная mso_redirect(getinfo('siteurl'), true); // редирект на главную else mso_redirect($r, true); // редирект по указанному адресу } else mso_redirect(getinfo('siteurl'), true); // редирект на главную exit; } if (function_exists('mso_autoload_plugins')) mso_autoload_plugins(); mso_hook('init'); $this->load->view($vievers, $MSO->data); } function page_404() { # если страница не определена здесь, то # возможно существует расширение # для этого подключим нужный файл если есть $fn = APPPATH . 'controllers/' . $this->data_def['uri_segment'][1] . EXT; if ( file_exists($fn) ) require($fn); else { # проверим короткую ссылку - может быть это slug из page или category # если это так, то выставить тип вручную $slug = $this->data_def['uri_segment'][1]; // первый сегмент $this->db->select('page_id'); $this->db->where(array('page_slug'=>$slug)); $this->db->or_where(array('page_id'=>$slug)); $this->db->limit('1'); $query = $this->db->get('page'); if ($query->num_rows() > 0) // есть страница { # добавим недостающий сегмент в uri_segment array_unshift($this->data_def['uri_segment'], 'page'); // в этом массиве индексы начинаются с 1, а не 0 переделываем $out = array(); foreach ($this->data_def['uri_segment'] as $key => $val) $out[$key + 1] = $val; $this->data_def['uri_segment'] = $out; $this->_view_i('page'); } else { // теперь тоже самое, только с рубрикой $this->db->select('category_id'); $this->db->where(array('category_slug'=>$slug)); $query = $this->db->get('category'); if ($query->num_rows() > 0) // есть рубрика { array_unshift($this->data_def['uri_segment'], 'category'); $out = array(); foreach ($this->data_def['uri_segment'] as $key => $val) $out[$key + 1] = $val; $this->data_def['uri_segment'] = $out; $this->_view_i('category'); } else { $this->_view_i('page_404'); } } } } function index() { global $mso_install; if ($mso_install == false) { $CI = & get_instance(); if ( !$CI->db->table_exists('options')) return $this->install(); } $this->_view_i('home'); } function install() { global $MSO, $mso_install; if ($mso_install == true) { $this->_view_i('home'); return; } $CI = & get_instance(); if ($CI->db->table_exists('options')) // echo 'уже есть'; { $this->_view_i('home'); return; } $css = $CI->config->config['base_url'] . APPPATH . 'views/install/install.css'; if ( ( count($this->data_def['uri_segment']) > 0 ) and ( $this->data_def['uri_segment'][count($this->data_def['uri_segment'])] == '2' ) ) $step = 2; else $step = 1; $data = array('type'=>'install', 'url_css'=>$css, 'step'=>$step); $MSO->data = array_merge($this->data_def, $data); $this->load->view('install/install', $MSO->data); } } ?>