Вход Регистрация
Файл: Application/system/classes/class_page.php
Строк: 196
<?php
    
    
class page
    
{
        public function 
__construct()
        {
            
$this->network    = & $GLOBALS['network'];
            
$this->user        = & $GLOBALS['user'];
            
$this->db1        = & $GLOBALS['db1'];
            
$this->db2        = & $GLOBALS['db2'];
            
$this->request    = array();
            
$this->params    = new stdClass;
            
$this->params->user    FALSE;
            
$this->params->group    FALSE;
            
$this->title    NULL;
            
$this->html        NULL;
            
$this->controllers    $GLOBALS['C']->INCPATH.'controllers/';
            
$this->lang_data        = array();
            
$this->tpl_name         'default';
        }
        
        public function 
load()
        {
            
$this->_parse_input();
            
$this->_set_template();
            
$this->_send_headers();
            
$this->_load_controller();
        }
        
        private function 
_parse_input()
        {
            global 
$C;
            
$this->params->user    FALSE;
            
$this->params->group    FALSE;
            
$request    $_SERVER['REQUEST_URI'];
            
$pos        strpos($request'?');
            if( 
FALSE !== $pos ) {
                
$request    substr($request0$pos);
            }
            if( 
FALSE !== strpos($request'//') ) {
                
$request    preg_replace('//+/iu''/'$request);
            }
            
$tmp    str_replace(array('http://','https://'), ''$C->SITE_URL);
            if( 
FALSE !== strpos($tmp'//') ) {
                
$tmp    preg_replace('//+/iu''/'$tmp);
            }
            
$tmp    substr($tmpstrpos($tmp'/'));
            if( 
substr($request,0,strlen($tmp)) == $tmp ) {
                
$request    substr($requeststrlen($tmp));
            }

            if( 
$_SERVER['HTTP_HOST']!=$C->DOMAIN && FALSE!==strpos($_SERVER['HTTP_HOST'], '.'.$C->DOMAIN) ) {
                
$tmp    str_replace('.'.$C->DOMAIN''$_SERVER['HTTP_HOST']);
                
$tmp    preg_replace('/^www./'''$tmp);
                
$tmp    trim($tmp);
                if( ! empty(
$tmp) ) {
                    
$request    $tmp.'/'.$request;
                }
            }
            
$request    trim($request'/');
            if( empty(
$request) ) {
                
$this->request[]    = 'home';
                return;
            }
            if( 
substr($request02) == 'm/' ) {
                
$request    substr($request2);
            }
            
$request    explode('/'$request);
            foreach(
$request as $i=>$one) {
                if( 
FALSE!==strpos($one,':') && preg_match('/^([a-z0-9-_]+):(.*)$/iu',$one,$m) ) {
                    
$this->params->{$m[1]}    = $m[2];
                    unset(
$request[$i]);
                    continue;
                }
                if( ! 
preg_match('/^([a-z0-9-._]+)$/iu'$one) ) {
                    unset(
$request[$i]);
                    continue;
                }
            }
            
$request    array_values($request);
            if( 
== count($request) ) {
                
$this->request[]    = 'home';
                return;
            }
            if( 
$request[0] == 'oauth' || $request[0] == '1' ) {
                
$this->controllers    $GLOBALS['C']->INCPATH.'controllers/api/';
                if( 
$request[0] == 'oauth' ) {
                    
$this->controllers    .= 'oauth/';
                }
                unset(
$request[0]);
                foreach(
$request as &$v) {
                    if( 
preg_match('/.(xml|json|rss|atom)$/iu'$v$m) ) {
                        
$v    str_ireplace('.'.$m[1], ''$v);
                        
$this->params->format    strtolower($m[1]);
                    }
                }
                
$request        array_values($request);
                foreach(
$request as $i=>$one) {
                    
$t    $this->request;
                    
$t[]    = $one;
                    if( 
file_exists$this->controllers.implode('_'$t).'.php') ) {
                        
$this->request[]    = $one;
                        unset(
$request[$i]);
                        continue;
                    }
                    break;
                }
                
$request        array_values($request);
                if( 
== count($this->request) ) {
                    
$this->request[]    = 'home';
                }
                
$this->params->more    $request;
                return;
            }
            
$first    $request[0];
            if( 
file_exists($this->controllers.$first.'.php') ) {
                
$this->request[]    = $first;
            }

            elseif( 
$u $this->network->get_user_by_username($firstFALSETRUE) ) {
                
$this->params->username $first;
                
$this->params->iduser $u;
                
                
$blocknumber count($request);
                
                if (
$blocknumber 1) {
                    
$cadbloque01 strtolower($request[1]);
                    switch(
$cadbloque01) {
                        case 
'activity':
                            
$this->request[] = 'profile';
                            break;

                        case 
'likes':
                            
$this->request[] = 'likes';
                            break;
                                    
                        case 
'location':
                            
$this->request[] = 'location';
                            break;
                            
                        case 
'photos':
                            
$this->request[] = 'photos';
                            break;
                            
                        case 
'videos':
                            
$this->request[] = 'videos';
                            break;
                            
                        case 
'posts':
                            
$this->request[] = 'posts';
                            if (
$blocknumber 2) {
                                    
$this->params->codpost $request[2];
                            }
                            break;

                        case 
'info':
                            
$this->request[] = 'infouser';
                            break;

                                    
                        case 
'followers':
                            
$this->request[] = 'followers';
                            break;

                        case 
'following':
                            
$this->request[] = 'following';
                            break;
                            
                        case 
'messages':
                            
$this->request[] = 'messages';
                            break;
                                    
                        default:
                            
//$this->request[] = 'error404';
                            
$this->request[] = 'profile';
                    }
                } else {
                    
$this->request[] = 'profile';
                }
                
            } else {
                
//$this->request[] = 'error404';
                
$this->request[] = 'home';
                return;
            }

            unset(
$request[0]);
            foreach(
$request as $one) {
                
$t    $this->request;
                
$t[]    = $one;
                if( 
file_exists$this->controllers.implode('_'$t).'.php') ) {
                    
$this->request[]    = $one;
                    continue;
                }
                break;
            }
            if( ! 
$this->params->user ) {
                
$this->params->user    $this->user->is_logged $this->user->id FALSE;
            }
            if( 
== count($this->request) ) {
                
$this->request[]    = 'home';
                return;
            }
        }
        
        private function 
_send_headers()
        {
            
header('Cache-Control: no-store, no-cache, must-revalidate');
            
header('Cache-Control: post-check=0, pre-check=0'FALSE);
            
header('Pragma: no-cache');
            
header('Last-Modified: '.gmdate('D, d M Y H:i:s'). ' GMT');
            if( 
$this->request[0] == 'ajax' ) {
                if( 
$this->param('ajaxtp') == 'xml' ) {
                    
header('Content-type: application/xml; charset=utf-8');
                }
                else {
                    
header('Content-type: text/plain; charset=utf-8');
                }
            }elseif(isset(
$this->params->format)){
                switch(
$this->params->format){
                    case 
'xml':  header('Content-type: application/xml');
                             break;
                    case 
'json'header('Content-type: application/json');
                             break;
                    case 
'rss':  header('Content-type: application/rss+xml');
                             break;
                    case 
'atom'header('Content-type: application/atom+xml');
                             break;
                    default:      
header('Content-type: application/xml');
                             break;
                }    
            }
            else {
                
header('Content-type: text/html; charset=utf-8');
            }
        }
        
        public function 
_set_template()
        {
            if( isset(
$GLOBALS['C']->THEME) && file_exists($GLOBALS['C']->INCPATH.'../themes/'.$GLOBALS['C']->THEME.'/theme.php') ) {
                
$this->tpl_name        $GLOBALS['C']->THEME;
            }
            
$this->tpl_dir        $GLOBALS['C']->INCPATH.'../themes/'.$this->tpl_name.'/';
            
$current_theme    FALSE;
            @include( 
$this->tpl_dir.'theme.php' );
            
$GLOBALS['C']->LOGO_HEIGHT    0;
            if( 
$current_theme && isset($current_theme->logo_height) ) {
                
$GLOBALS['C']->LOGO_HEIGHT    intval($current_theme->logo_height);
            }
            
$GLOBALS['C']->THEME    $this->tpl_name;
            return 
$current_theme;
        }
        
        private function 
_load_controller()
        {
            global 
$C$D;
            
$D    = new stdClass;
            
$D->page_title    $C->SITE_TITLE;
            
$db1        = & $this->db1;
            
$db2        = & $this->db2;
            
$db        = & $db2;
            
$user        = & $this->user;
            
$network    = & $this->network;
            
            require_once( 
$this->controllers.implode('_',$this->request).'.php' );
        }
        
        public function 
load_template($filename$output_content=TRUE)
        {
            global 
$C$D;
            
$filename    $this->tpl_dir.'html/'.$filename;
            if( 
$output_content ) {
                require(
$filename);
                return 
TRUE;
            }
            else {
                
ob_start();
                require(
$filename);
                
$cnt    ob_get_contents();
                
ob_end_clean();
                return 
$cnt;
            }
        }
        
        public function 
load_langfile($filename)
        {
            if( ! isset(
$this->tmp_loaded_langfiles) ) {
                
$this->tmp_loaded_langfiles    = array();
            }
            
$this->tmp_loaded_langfiles[]    = $filename;
            global 
$C;
            
$lang    = array();
            
ob_start();
            require( 
$GLOBALS['C']->INCPATH.'languages/'.$GLOBALS['C']->LANGUAGE.'/'.$filename );
            
ob_end_clean();
            if( ! 
is_array($lang) ) {
                return 
FALSE;
            }
            foreach(
$lang as $k=>$v) {
                
$this->lang_data[$k]    = $v;
            }
        }
        
        public function 
lang($key$replace_strings=array())
        {
            if( empty(
$key) ) {
                return 
'';
            }
            if( ! isset(
$this->lang_data[$key]) ) {
                return 
'';
            }
            
$txt    $this->lang_data[$key];
            if( 
== count($replace_strings) ) {
                return 
$txt;
            }
            return 
str_replace(array_keys($replace_strings), array_values($replace_strings), $txt);
        }
        
        
        public function 
param($key)
        {
            if( 
FALSE == isset($this->params->$key) ) {
                return 
FALSE;
            }
            
$value    $this->params->$key;
            if( 
is_numeric($value) ) {
                return 
floatval($value);
            }
            if( 
$value=="true" || $value=="TRUE" ) {
                return 
TRUE;
            }
            if( 
$value=="false" || $value=="FALSE" ) {
                return 
FALSE;
            }
            return 
$value;
        }
        
        public function 
redirect($loc$abs=FALSE)
        {
            global 
$C;
            if( ! 
$abs && preg_match('/^http(s)?:///'$loc) ) {
                
$abs    TRUE;
            }
            if( ! 
$abs ) {
                if( 
$loc{0} != '/' ) {
                    
$loc    $C->SITE_URL.$loc;
                }
            }
            if( ! 
headers_sent() ) {
                
header('Location: '.$loc);
            }
            echo 
'<meta http-equiv="refresh" content="0;url='.$loc.'" />';
            echo 
'<script type="text/javascript"> self.location = "'.$loc.'"; </script>';
            exit;
        }
        
        public function 
set_lasturl($url='')
        {
            if( ! empty(
$url) ) {
                
$_SESSION['LAST_URL']    = $url;
            }
            else {
                
$_SESSION['LAST_URL']    = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
            }
            
$_SESSION['LAST_URL']    = rtrim($_SESSION['LAST_URL'], '/');
        }
        public function 
get_lasturl()
        {
            return isset(
$_SESSION['LAST_URL']) ? $_SESSION['LAST_URL'] : '/';
        }
    }
    
?>
Онлайн: 0
Реклама