Advertisement
Guest User

Untitled

a guest
Apr 22nd, 2012
227
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 13.23 KB | None | 0 0
  1. <?php
  2. /*
  3.     Copyright © Eleanor CMS
  4.     URL: http://eleanor-cms.su, http://eleanor-cms.ru, http://eleanor-cms.com, http://eleanor-cms.net
  5.     E-mail: support@eleanor-cms.su, support@eleanor-cms.ru
  6.     Developing: Alexander Sunvas*
  7.     Interface: Rumin Sergey
  8.     =====
  9.     *Pseudonym. See addons/copyrights/info.txt for more information.
  10. */
  11. $start=microtime();#Начало отсчета времени движка.
  12. define('CMS',true);
  13. require dirname(__file__).'/classes/mainclass.php';
  14. $Mainclass=MainClass::getInstance();
  15. $Mainclass->start_time=$start;
  16. $Mainclass->service_id='2';#ID сервиса
  17. $Mainclass->file_name=basename(__file__);
  18. if(0<$t=strpos($Mainclass->site_path,$Mainclass->file_name))
  19.     $Mainclass->site_path=$t==1 ? '' : substr($Mainclass->site_path,0,$t-1);
  20. $Mainclass->on_begin_callback='SiteHead';
  21. $Mainclass->LoadService();#Эта строка должна быть выше следующей! Иначе бан работать не будет.
  22. $Mainclass->LoadOptions(array('system','blocker','login','mailer','public'));
  23. $Mainclass->Url->furl=$Mainclass->vars['furl'];
  24. $Mainclass->Template->default_replace['site']=$Mainclass->domain.$Mainclass->site_path;
  25. $Mainclass->Template->default_replace['sitename']=$Mainclass->vars['site_name'];
  26. $Mainclass->Template->default_replace['multilang']=$Mainclass->vars['multilang'];
  27. $title=$head_addon='';
  28. $jscripts=array('js/jquery.min.js');//http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js');
  29. $Mainclass->Url->s_delimeter=$Mainclass->vars['url_static_delimeter'];
  30. $Mainclass->Url->s_defis=$Mainclass->vars['url_static_defis'];
  31. $Mainclass->Url->ending=$Mainclass->vars['url_static_ending'];
  32. $Mainclass->Url->rep_space=$Mainclass->vars['url_rep_space'];
  33. if(isset($_GET['newtpl']) and $Mainclass->vars['templates'] and $themes=@unserialize($Mainclass->vars['templates']) and in_array($_GET['newtpl'],$themes))
  34. {
  35.     if($Mainclass->Login->IsUser())
  36.         $Mainclass->Account->Manage->UpdateUser(array('theme'=>$_GET['newtpl']));
  37.     else
  38.         $Mainclass->SCookie('theme',$_GET['newtpl']);
  39.     ExitBack();
  40. }
  41. $Mainclass->get_lang='';#Этот параметр отвечает за язык, содержащийся в ссылке.
  42. if($Mainclass->vars['multilang'])
  43. {
  44.     if(isset($_GET['language']) and is_string($_GET['language']) and isset($Mainclass->langs[$_GET['language']]))
  45.     {
  46.         if($Mainclass->Login->IsUser())
  47.             $Mainclass->Account->Manage->UpdateUser(array('lang'=>$_GET['language']));
  48.         else
  49.             $Mainclass->Functions->SetLangCookie($_GET['language'],$Mainclass->service.'_lang');
  50.         $ref=$Mainclass->MyGetEnv('HTTP_REFERER');
  51.         if(!$ref)
  52.             Functions::Redirect($Mainclass->Functions->CorrectLangUrl('','',false));
  53.         else
  54.             try
  55.             {
  56.                 Functions::Redirect($Mainclass->Functions->CorrectLangUrl($ref,$_GET['language']==ELEANOR_DEFAULT_LANGUAGE ? '' : substr($_GET['language'],0,3)));
  57.             }
  58.             catch(EE $e)
  59.             {
  60.                 ExitBack();
  61.             }
  62.         die;
  63.     }
  64.     if($Mainclass->Login->IsUser() and $lang=$Mainclass->Account->GetValue('lang') and isset($Mainclass->langs[$lang]))
  65.         $Mainclass->lang_name=$lang;
  66.     else
  67.         $Mainclass->Functions->GetLangCookie(true,$Mainclass->service.'_lang');
  68.     if($Mainclass->lang_name!=ELEANOR_DEFAULT_LANGUAGE)
  69.         $Mainclass->get_lang=substr($Mainclass->lang_name,0,3);
  70.     $lang=$Mainclass->Url->ParseToValue('lang',false);
  71.     $match=false;
  72.     do
  73.     {
  74.         if(strlen($lang)==3)
  75.             foreach($Mainclass->langs as $k=>$v)
  76.                 if(stripos($k,$lang)===0)
  77.                 {
  78.                     $match=true;
  79.                     break;
  80.                 }
  81.         if(!$match)
  82.         {
  83.             if($Mainclass->lang_name!=ELEANOR_DEFAULT_LANGUAGE)
  84.             {
  85.                 $k=ELEANOR_DEFAULT_LANGUAGE;
  86.                 $match=true;
  87.                 if($Mainclass->Login->IsUser())
  88.                     $Mainclass->Account->Manage->UpdateUser(array('lang'=>ELEANOR_DEFAULT_LANGUAGE));
  89.                 else
  90.                     $Mainclass->Functions->SetLangCookie(false,$Mainclass->service.'_lang');
  91.             }
  92.             break;
  93.         }
  94.         if($Mainclass->lang_name!=$k)
  95.             $Mainclass->Functions->SetLangCookie($k,$Mainclass->service.'_lang');
  96.         if($k==ELEANOR_DEFAULT_LANGUAGE)
  97.             $match=false;
  98.         $Mainclass->Url->string=substr($Mainclass->Url->string,stripos($Mainclass->Url->string,$lang)+4);
  99.     }
  100.     while(false);
  101.     if($match)
  102.     {
  103.         $Mainclass->lang_name=$k;
  104.         $Mainclass->get_lang=$lang;
  105.     }
  106. }
  107. $Mainclass->LoadLanguage('langs','main','user-%');
  108. $Mainclass->Cache->FilterLangVars();
  109. if($Mainclass->services[$Mainclass->service_id]['login']==$Mainclass->services[1]['login'])
  110. {
  111.     $old_service=$Mainclass->service;
  112.     $old_id=$Mainclass->service_id;
  113.     $Mainclass->service='admin';
  114.     $Mainclass->service_id='1';
  115. }
  116. if(!$Mainclass->Login->IsUser())
  117. {
  118.     $Mainclass->Login->Login();
  119.     $Mainclass->LoadLanguage('langs','main','user-%');
  120. }
  121. $theme=$Mainclass->Login->IsUser() ? $Mainclass->Account->GetValue('theme') : $Mainclass->GCookie('theme');
  122. if($Mainclass->vars['templates'] and $themes=@unserialize($Mainclass->vars['templates']) and in_array($theme,$themes))
  123.     $Mainclass->Template->theme=$theme;
  124. if($Mainclass->vars['site_closed'] and !$Mainclass->Permission->IsAdmin())
  125. {
  126.     $Mainclass->Cache->FilterLangVars();
  127.     $Mainclass->ShowDecoration(true,'');
  128.     die($Mainclass->Template->GetThemeFile('Denied',array('domain'=>$Mainclass->domain)));
  129. }
  130. if(isset($old_service))
  131. {
  132.     $Mainclass->service=$old_service;
  133.     $Mainclass->service_id=$old_id;
  134. }
  135. $Mainclass->Account->AddSession();
  136. if($Mainclass->Permission->IsBanned())
  137.     throw new EE(null,EE::BAN);
  138. $Mainclass->Account->CheckBanned();
  139. if($Mainclass->GetModVal('not_load_module'))
  140.     die;
  141. if(strcasecmp('index'.$Mainclass->Url->ending,$Mainclass->Url->string)==0 or !$Mainclass->MyGetEnv('QUERY_STRING'))
  142. {
  143.     $Mainclass->Url->string='';
  144.     MainPage();
  145. }
  146. $module_name=isset($_GET['module']) ? $_GET['module'] : $Mainclass->Url->ParseToValue('module');
  147. if(!$module_name and isset($_POST['module']))
  148.     $module_name=$_POST['module'];
  149. if($module_name)
  150. {
  151.     $Mainclass->Db->FQuery('SELECT `id`,`services`,`name`,`title`,`path`,`multiservice`,`file`,`is_class`,`resources`,`image`,`user_groups`,`blocks`,`editor` FROM {"0"} WHERE `name`={"1"} AND `active`=1 LIMIT 1',array('modules','s_'.$module_name),__file__,__line__);
  152.     if($Mainclass->Db->Num_rows()==0)
  153.         MainPage($module_name);
  154.     $arr=$Mainclass->Db->Fetch_Assoc();
  155.     if($arr['user_groups'])
  156.     {
  157.         $groups=explode(',',trim($arr['user_groups'],','));
  158.         $user_groups=$Mainclass->Account->GetUserGroups();
  159.         if(count(array_intersect($groups,$user_groups))==0)
  160.         {
  161.             Head();
  162.             echo $Mainclass->Template->Message($Mainclass->lang['main']['acc_den'],'error');
  163.             die;
  164.         }
  165.     }
  166.     if(strpos($arr['services'],','.$Mainclass->service_id.',')===false and $arr['resources'])
  167.     {
  168.         $resources=explode('·',$arr['resources']);
  169.         foreach($resources as &$v)
  170.         {
  171.             $temp=explode('=',$v,2);
  172.             if($Mainclass->service==$temp[0])
  173.             {
  174.                 $arr['file']=$temp[1];
  175.                 break;
  176.             }
  177.         }
  178.     }
  179.     if(!$arr['file'])
  180.         MainPage();
  181.     $Mainclass->module['name']=$arr['name'];
  182.     $Mainclass->module['title']=$arr['title'];
  183.     $Mainclass->module['image']=$arr['image'];
  184.     $Mainclass->module['path']=$arr['path'];
  185.     $Mainclass->module['int_name']=strpos($Mainclass->module['path'],'modules/')==0 ? basename($arr['path']) : $arr['name'];
  186.     $Mainclass->module['general']=false;
  187.     $Mainclass->module['id']=$arr['id'];
  188.     if($arr['editor']>=0)
  189.         $Mainclass->module['editor']=$arr['editor'];
  190.     if($arr['blocks'])
  191.         $Mainclass->Blocks->hidden_types=explode(',',$arr['blocks']);
  192.     $Mainclass->Url->SetPrefix($Mainclass->vars['multilang'] ? array('lang'=>$Mainclass->get_lang,'module'=>$Mainclass->module['name']) : array('module'=>$Mainclass->module['name']));
  193.     if(!$Mainclass->LoadModule($arr['path'],$arr['multiservice'],$arr['file'] ? $arr['file'] : 'index',$arr['is_class']))
  194.     {
  195.         $Mainclass->Url->SetPrefix('');
  196.         ExitPage(false);
  197.     }
  198. }
  199. elseif(isset($_REQUEST['direct']) and is_string($_REQUEST['direct']) and is_file($f=$Mainclass->root_path.'addons/direct/'.preg_replace('#[^a-z0-9]+#i','',$_REQUEST['direct']).'.php'))
  200.     include $f;
  201. else
  202.     MainPage();
  203.  
  204. function ExitPage($redirect=true)
  205. {global $Mainclass;
  206.     if($redirect)
  207.     {
  208.         header('HTTP/1.1 404 Not Found');
  209.         Functions::Redirect(ELEANOR_PROTOCOL.$Mainclass->domain.$Mainclass->site_path.'/'.$Mainclass->Url->DynamicBegin().htmlspecialchars_decode($Mainclass->Url->ConstructUrl(array('module'=>'errors','url'=>'404'),false)));
  210.     }
  211.     else
  212.     {
  213.         #Страница с Error
  214.         $oldm=$Mainclass->module;
  215.         $Mainclass->module['name']='errors';
  216.         $Mainclass->module['path']='modules/errors';
  217.  
  218.         $Mainclass->Url->string='';
  219.         $_GET['url']=404;
  220.         $Mainclass->Url->SetPrefix($Mainclass->vars['multilang'] ? array('lang'=>$Mainclass->get_lang,'module'=>'errors') : array('module'=>'errors'),false);
  221.         if(!include $Mainclass->root_path.'modules/errors/user/index.php')
  222.             ExitPage(true);
  223.         $Mainclass->module=$oldm;
  224.         die;
  225.     }
  226. }
  227.  
  228. function SiteHead()
  229. {global $title,$jscripts,$Mainclass,$head_addon;
  230.     if($site_title=$Mainclass->GetModVal('site_title'));
  231.     elseif(!$title or !empty($Mainclass->module['general']))
  232.         $site_title=$Mainclass->vars['site_name'];
  233.     else
  234.         $site_title=(is_array($title) ? implode($Mainclass->vars['site_defis'],$title) : $title).($Mainclass->vars['site_name'] ? $Mainclass->vars['site_defis'].$Mainclass->vars['site_name'] : '');
  235.     $descr=$Mainclass->GetModVal('general') ? $Mainclass->vars['site_description'] : $Mainclass->GetModVal('description');
  236.     if($descr)
  237.         $descr="\r\n".'<meta name="description" content="'.str_replace('"','&quot;',$descr).'" />';
  238.     $head='<meta http-equiv="content-type" content="text/html; charset='.ELEANOR_DISPLAYCHARSET.'" />
  239. <title>'.$site_title.'</title>
  240. <meta name="resource-type" content="document" />
  241. <meta name="generator" content="Eleanor CMS" />
  242. <meta name="copyright" content="'.str_replace('"','&quot;',$Mainclass->vars['site_name']).'" />
  243. <meta name="keywords" content="'.(($keywords=$Mainclass->GetModVal('keywords')) ? $keywords : $Mainclass->vars['site_keywords']).'" />'
  244. .$descr
  245. .'<meta name="robots" content="index, follow" />
  246. <meta name="revisit-after" content="1 days" />
  247. <meta name="rating" content="general" />
  248. <meta name="eleanor_version" content="'.ELEANOR_VERSION.'" />
  249. <base href="'.ELEANOR_PROTOCOL.$Mainclass->domain.$Mainclass->site_path.'/" />'
  250.      .(isset($head_addon) ? "\r\n".$head_addon."\r\n" : '');
  251.  
  252.     $head.='<script type="text/javascript">//<![CDATA[
  253. if(self.parent.frames.length != 0) self.parent.location="'.ELEANOR_PROTOCOL.$Mainclass->domain.$Mainclass->site_path.'";
  254. '.Strings::JsVars(
  255.                     array(
  256.                             'cookie_domain' =>$Mainclass->vars['cookie_domain'],
  257.                             'cookie_prefix' =>$Mainclass->vars['cookie_prefix'],
  258.                             'cookie_path'   =>$Mainclass->vars['cookie_path'],
  259.                             'cookie_time'   =>$Mainclass->vars['cookie_save_time'],
  260.                             'site_path'     =>$Mainclass->site_path,
  261.                     ),
  262.                     false
  263.         ).'//]]></script>';
  264.     $jscripts[]='js/lang-'.$Mainclass->lang_name.'.js';
  265.     $jscripts[]='js/class_ajax.js';
  266.     $jscripts[]='js/jMainclass.js';
  267.     $jscripts=array_unique($jscripts);
  268.     foreach($jscripts as &$v)
  269.         $head.="\r\n".Strings::AddJS($v);
  270.     $Mainclass->Template->default_replace['HEAD']=$head;
  271. }
  272.  
  273. function ExitPrefix($addon=array())
  274. {global $Mainclass;
  275.     if(!$addon)
  276.         $addon=$Mainclass->Url->Prefix();
  277.     elseif(is_array($addon))
  278.         $addon=html_entity_decode($Mainclass->Url->ConstructUrl($addon));
  279.     Functions::Redirect(ELEANOR_PROTOCOL.$Mainclass->domain.$Mainclass->site_path.'/'.$addon);
  280. }
  281.  
  282. function ExitBack()
  283. {global $Mainclass;
  284.     $ref=$Mainclass->MyGetEnv('HTTP_REFERER');
  285.     if(!$ref)
  286.         return ExitPrefix();
  287.     else
  288.         Functions::Redirect($ref);
  289. }
  290.  
  291. function Head($now=true)
  292. {global $Mainclass;
  293.     $Mainclass->ShowDecoration($now);
  294. }
  295.  
  296. function MainPage($trystatic=false)
  297. {global $Mainclass;
  298.     $Mainclass->Url->Parse();
  299.     #Попробуем загрузить статическую страницу...
  300.     if($trystatic)
  301.     {
  302.         require $Mainclass->root_path.'modules/static/plugins.php';
  303.         $Plug=new $class_name($Mainclass);
  304.         if($content=$Plug->GetPage($trystatic))
  305.         {
  306.             global $jscripts,$title;
  307.             $title[]=$content['title'];
  308.             $jscripts[]='js/rating.js';
  309.             Head();
  310.             echo $content['text'];
  311.             die;
  312.         }
  313.         else
  314.             ExitPage(false);#Functions::Redirect(ELEANOR_PROTOCOL.$Mainclass->domain.$Mainclass->site_path.'/');
  315.     }
  316.     #Тут мы по-умолчанию грузим модуль главной страницы, который настраивается в админке. Но никто не мешает пихануть сюда что-то свое.
  317.     $Mainclass->module['general']=true;
  318.     $Mainclass->LoadModule('modules/mainpage');
  319.     die;
  320. }
  321.  
  322. function DeleteEdit($darr,$earr)
  323. {global $Mainclass;
  324.     if(!$Mainclass->Permission->IsAdmin())
  325.         return '';
  326.     $res='';
  327.     if(is_array($earr))
  328.         $res.='<a href="'.$Mainclass->services[1]['file'].'?section=modules&amp;module='.$Mainclass->GetModVal('name').'&amp;no_back=1&amp;'.$Mainclass->Url->ConstructUrl($earr,false,false,false).'" title="'.$Mainclass->lang['main']['edit'].'"><img src="'.$Mainclass->Template->GetImage('edit.png').'" alt="'.$Mainclass->lang['main']['edit'].'" /></a>';
  329.     if(is_array($darr))
  330.         $res.='<a href="'.$Mainclass->services[1]['file'].'?section=modules&amp;module='.$Mainclass->GetModVal('name').'&amp;no_back=1&amp;'.$Mainclass->Url->ConstructUrl($darr,false,false,false).'" title="'.$Mainclass->lang['main']['delete'].'"><img src="'.$Mainclass->Template->GetImage('delete.png').'" alt="'.$Mainclass->lang['main']['delete'].'" /></a>';
  331.     return $res;
  332. }
  333. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement