theme_common.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | Fanwe 方维直播系统
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2011 http://www.fanwe.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Author: 云淡风轻(1956838968@qq.com)
  8. // +----------------------------------------------------------------------
  9. define("IS_DEBUG",false);
  10. define("SHOW_DEBUG",0);
  11. define("CTL",'c');
  12. define("ACT",'a');
  13. define("APP_INDEX",'APP_INDEX');
  14. $file_dir = str_replace('\\', '/', __FILE__);
  15. if(!defined('APP_ROOT_PATH'))
  16. define('APP_ROOT_PATH', substr($file_dir,0,strpos($file_dir,"system/")));
  17. require APP_ROOT_PATH.'public/directory_init.php';
  18. //=====正式环境删掉=========
  19. if(IS_DEBUG){
  20. ini_set("display_errors", 1);
  21. error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING ^ E_DEPRECATED);
  22. define('MAGIC_QUOTES_GPC',get_magic_quotes_gpc()?True:False);
  23. if(!defined('IS_CGI'))
  24. define('IS_CGI',substr(PHP_SAPI, 0,3)=='cgi' ? 1 : 0 );
  25. if(!defined('_PHP_FILE_')) {
  26. if(IS_CGI) {
  27. //CGI/FASTCGI模式下
  28. $_temp = explode('.php',$_SERVER["PHP_SELF"]);
  29. define('_PHP_FILE_', rtrim(str_replace($_SERVER["HTTP_HOST"],'',$_temp[0].'.php'),'/'));
  30. }else {
  31. define('_PHP_FILE_', rtrim($_SERVER["SCRIPT_NAME"],'/'));
  32. }
  33. }else{
  34. ini_set("display_errors", 0);
  35. error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING ^ E_DEPRECATED);
  36. }
  37. // 网站URL根目录
  38. $_root = dirname(_PHP_FILE_);
  39. $_root = (($_root=='/' || $_root=='\\')?'':$_root);
  40. $_root_array = explode('/',$_root);
  41. if(@isset($_root_array[2])){
  42. $_root = '/'.$_root_array[2];
  43. }
  44. }
  45. //=====正式环境删掉=========
  46. $query = $_SERVER["REQUEST_URI"];
  47. $_root = '';
  48. $_root = $_root?$_root:'/theme';
  49. if(!defined('APP_ROOT'))
  50. define('APP_ROOT', substr($query,0,strpos($query,$_root)));
  51. function get_domain()
  52. {
  53. /* 协议 */
  54. $protocol = get_http();
  55. /* 域名或IP地址 */
  56. if (isset($_SERVER['HTTP_X_FORWARDED_HOST']))
  57. {
  58. $host = $_SERVER['HTTP_X_FORWARDED_HOST'];
  59. }
  60. elseif (isset($_SERVER['HTTP_HOST']))
  61. {
  62. $host = $_SERVER['HTTP_HOST'];
  63. }
  64. else
  65. {
  66. /* 端口 */
  67. if (isset($_SERVER['SERVER_PORT']))
  68. {
  69. $port = ':' . $_SERVER['SERVER_PORT'];
  70. if ((':80' == $port && 'http://' == $protocol) || (':443' == $port && 'https://' == $protocol))
  71. {
  72. $port = '';
  73. }
  74. }
  75. else
  76. {
  77. $port = '';
  78. }
  79. if (isset($_SERVER['SERVER_NAME']))
  80. {
  81. $host = $_SERVER['SERVER_NAME'] . $port;
  82. }
  83. elseif (isset($_SERVER['SERVER_ADDR']))
  84. {
  85. $host = $_SERVER['SERVER_ADDR'] . $port;
  86. }
  87. }
  88. return $protocol . $host;
  89. }
  90. function get_http()
  91. {
  92. return (isset($_SERVER['HTTPS']) && (strtolower($_SERVER['HTTPS']) != 'off')) ? 'https://' : 'http://';
  93. }
  94. function theme_parse_css($urls)
  95. {
  96. $url = md5(implode(',',$urls));
  97. $url = md5($url.$GLOBALS['_root']);
  98. $css_url = 'public/runtime/statics/'.$url.'.css';
  99. $url_path = APP_ROOT_PATH.$css_url;
  100. if(!file_exists($url_path)||IS_DEBUG)
  101. {
  102. if(!file_exists(APP_ROOT_PATH.'public/runtime/statics/'))
  103. mkdir(APP_ROOT_PATH.'public/runtime/statics/',0777);
  104. $tmpl_path = file_domain().$GLOBALS['_root'];
  105. if($GLOBALS['distribution_cfg']['IS_JQ']&&$GLOBALS['distribution_cfg']['JQ_URL']){
  106. $font_path = $GLOBALS['distribution_cfg']['JQ_URL'].APP_ROOT.$GLOBALS['_root'];
  107. }else{
  108. $font_path = get_domain().APP_ROOT.$GLOBALS['_root'];
  109. }
  110. $css_content = '';
  111. foreach($urls as $url)
  112. {
  113. $css_content .= @file_get_contents($url);
  114. }
  115. $css_content = preg_replace("/[\r\n]/",'',$css_content);
  116. //字体替换
  117. $css_content = str_replace("../../images/iconfont/",$font_path."/images/iconfont/",$css_content);
  118. $css_content = str_replace("../../images/",$tmpl_path."/images/",$css_content);
  119. $css_content = str_replace("../images/",$tmpl_path."/images/",$css_content);
  120. // @file_put_contents($url_path, unicode_encode($css_content));
  121. @file_put_contents($url_path, $css_content);
  122. if($GLOBALS['distribution_cfg']['CSS_JS_OSS']&&$GLOBALS['distribution_cfg']['OSS_TYPE']&&$GLOBALS['distribution_cfg']['OSS_TYPE']!="NONE")
  123. {
  124. syn_to_remote_file_server($css_url);
  125. $GLOBALS['refresh_page'] = true;
  126. }
  127. }
  128. return file_domain()."/".$css_url;
  129. }
  130. function theme_parse_script($urls,$encode_url=array())
  131. {
  132. $url = md5(implode(',',$urls));
  133. $url = md5($url.$GLOBALS['_root']);
  134. $js_url = 'public/runtime/statics/'.$url.'.js';
  135. $url_path = APP_ROOT_PATH.$js_url;
  136. if(!file_exists($url_path)||IS_DEBUG)
  137. {
  138. if(!file_exists(APP_ROOT_PATH.'public/runtime/statics/'))
  139. mkdir(APP_ROOT_PATH.'public/runtime/statics/',0777);
  140. $js_content = '';
  141. foreach($urls as $url)
  142. {
  143. $append_content = @file_get_contents($url)."\r\n";
  144. $js_content .= $append_content;
  145. }
  146. @file_put_contents($url_path,$js_content);
  147. if($GLOBALS['distribution_cfg']['CSS_JS_OSS']&&$GLOBALS['distribution_cfg']['OSS_TYPE']&&$GLOBALS['distribution_cfg']['OSS_TYPE']!="NONE")
  148. {
  149. syn_to_remote_file_server($js_url);
  150. $GLOBALS['refresh_page'] = true;
  151. }
  152. }
  153. return file_domain()."/".$js_url;
  154. }
  155. function show_css_script($pagecss){
  156. $css = theme_parse_css($pagecss);
  157. echo '<link rel="stylesheet" href="'.$css.'">';
  158. }
  159. function show_js_script($pagejs){
  160. $js = theme_parse_script($pagejs);
  161. echo '<script src="'.$js.'"></script>';
  162. }
  163. function show_header($header){
  164. $pagecss = array();
  165. $pagecss[] = "js/fanwe_utils/sui-mobile/sm.min.css";
  166. $pagecss[] = "js/fanwe_utils/sui-mobile/sm-extend.min.css";
  167. $pagecss[] = "css/fanwe_utils/animate.css";
  168. $pagecss[] = "css/common_css/base.reset.css";
  169. $pagecss[] = "css/common_css/base.frame.css";
  170. $pagecss[] = "css/common_css/base.ui.css";
  171. $pagecss[] = "css/common_css/base.theme.css";
  172. $pagecss[] = "css/common_css/style.css";
  173. $pagecss[] = "css/banner.css";
  174. $pagecss[] = "css/index.css";
  175. $pagecss[] = "css/login.css";
  176. $pagecss[] = "css/user_center.css";
  177. $pagejs = array();
  178. $pagejs[] = 'js/fanwe_utils/sui-mobile/zepto.min.js';
  179. $pagejs[] = 'js/fanwe_utils/zepto.picLazyLoad.js';
  180. $pagejs[] = 'js/fanwe_utils/fanweUI.js';
  181. $pagejs[] = 'js/fanwe_utils/plupload/plupload.full.min.js';
  182. $pagejs[] = 'js/fanwe_utils/vue/vue.min.js';
  183. $pagejs[] = 'js/fanwe_utils/vue/vue-resource.js';
  184. $pagejs[] = 'js/common_js/script.js';
  185. $css = theme_parse_css($pagecss);
  186. $js = theme_parse_script($pagejs);
  187. $header = str_replace('{$css}',$css,$header);
  188. $header = str_replace('{$js}',$js,$header);
  189. echo $header;
  190. }
  191. function show_footer($foot){
  192. $pagejs = array();
  193. $pagejs[] = "js/fanwe_utils/sui-mobile/sm.min.js";
  194. $pagejs[] = "js/fanwe_utils/sui-mobile/sm-extend.min.js";
  195. $pagejs[] = "js/editdata.js";
  196. $pagejs[] = "js/sui_mobile_footer.js";
  197. $js = theme_parse_script($pagejs);
  198. $foot = str_replace('{$js}',$js,$foot);
  199. echo $foot;
  200. }
  201. function url($route="index",$param=array())
  202. {
  203. $route_array = explode("#",$route);
  204. if(isset($param)&&$param!=''&&!is_array($param))
  205. {
  206. $param['id'] = $param;
  207. }
  208. if(isset($route_array[0])){
  209. $module = strtolower(trim($route_array[0]));
  210. }else{
  211. $module = "";
  212. }
  213. if(isset($route_array[1])){
  214. $action = strtolower(trim($route_array[1]));
  215. }else{
  216. $action = "";
  217. }
  218. if(!$module||$module=='index')$module="";
  219. if(!$action||$action=='index')$action="";
  220. if(true )
  221. {
  222. //原始模式
  223. $url = APP_ROOT."/index.php";
  224. if($module!=''||$action!=''||count($param)>0) //有后缀参数
  225. {
  226. $url.="?";
  227. }
  228. if($module&&$module!='')
  229. $url .= CTL."=".$module."&";
  230. if($action&&$action!='')
  231. $url .= ACT."=".$action."&";
  232. if(count($param)>0)
  233. {
  234. foreach($param as $k=>$v)
  235. {
  236. if($k&&$v)
  237. $url =$url.$k."=".urlencode($v)."&";
  238. }
  239. }
  240. if(substr($url,-1,1)=='&'||substr($url,-1,1)=='?') $url = substr($url,0,-1);
  241. return $url;
  242. }
  243. else
  244. {
  245. //重写的默认
  246. $url = APP_ROOT;
  247. if($module==''&&$action==''){
  248. $url .='/index';
  249. }else{
  250. if($module&&$module!='')
  251. $url .= "/".$module;
  252. if($action&&$action!='')
  253. $url .= "-".$action;
  254. }
  255. if(count($param)>0)
  256. {
  257. $url.="/";
  258. foreach($param as $k=>$v)
  259. {
  260. $url =$url.$k."-".urlencode($v)."-";
  261. }
  262. }
  263. $route = $module."#".$action;
  264. switch ($route)
  265. {
  266. case "xxx":
  267. break;
  268. default:
  269. break;
  270. }
  271. if(substr($url,-1,1)=='/'||substr($url,-1,1)=='-') $url = substr($url,0,-1);
  272. $url=trim($url);
  273. if($url==''){
  274. $url="/index.html";
  275. }else{
  276. if($module=='article_cate'){
  277. if($param['id']){
  278. if($GLOBALS['article_cates'][$param['id']]['seo_title']){
  279. if($param['p']){
  280. $url=APP_ROOT."/".$GLOBALS['article_cates'][$param['id']]['seo_title']."?p=".$param['p'];
  281. }else{
  282. $url=APP_ROOT."/".$GLOBALS['article_cates'][$param['id']]['seo_title'];
  283. }
  284. }else{
  285. $url.='.html';
  286. }
  287. }elseif($param['p']){
  288. $url=APP_ROOT."/article_cate?p=".$param['p'];
  289. }elseif($param['tag']){
  290. $url=APP_ROOT."/article_cate?tag=".$param['tag'];
  291. }
  292. else{
  293. $url=APP_ROOT."/article_cate";
  294. }
  295. }elseif($module=='article'){
  296. if($param['id']){
  297. if($GLOBALS['article_cates'][$GLOBALS['articles'][$param['id']]['cate_id']]['seo_title']){
  298. $url=APP_ROOT."/".$GLOBALS['article_cates'][$GLOBALS['articles'][$param['id']]['cate_id']]['seo_title']."/".$param['id'].".html";
  299. }else{
  300. $url.='.html';
  301. }
  302. }else{
  303. $url=APP_ROOT."/article_cate";
  304. }
  305. }else{
  306. $url.='.html';
  307. }
  308. }
  309. if($url=='')$url="/";
  310. return $url;
  311. }
  312. }
  313. function deal_with_content($path){
  314. $content = file_get_contents($path);
  315. $content = str_replace("\"images/",'"'.file_domain()."/theme/images/",$content);
  316. return $content;
  317. }
  318. function get_theme_url(){
  319. echo get_domain().APP_ROOT.'/theme/';
  320. }
  321. function isWeixin(){
  322. $agent = strtolower($_SERVER['HTTP_USER_AGENT']);
  323. $is_weixin = strpos($agent, 'micromessenger') ? true : false ;
  324. if($is_weixin){
  325. return true;
  326. }else{
  327. return false;
  328. }
  329. }
  330. /**
  331. * 同步脚本样式缓存 $url:'public/runtime/statics/biz/'.$url.'.css';
  332. * @param unknown_type $url
  333. */
  334. function syn_to_remote_file_server($url)
  335. {
  336. if ($GLOBALS['distribution_cfg']['OSS_TYPE'] && $GLOBALS['distribution_cfg']['OSS_TYPE'] != "NONE") {
  337. if ($GLOBALS['distribution_cfg']['OSS_TYPE'] == "ES_FILE") {
  338. $pathinfo = pathinfo($url);
  339. $file = $pathinfo['basename'];
  340. $dir = $pathinfo['dirname'];
  341. $dir = str_replace("public/", "", $dir);
  342. $filefull = SITE_DOMAIN . APP_ROOT . "/public/" . $dir . "/" . $file;
  343. $syn_url = $GLOBALS['distribution_cfg']['OSS_DOMAIN'] . "/es_file.php?username=" . $GLOBALS['distribution_cfg']['OSS_ACCESS_ID'] . "&password=" . $GLOBALS['distribution_cfg']['OSS_ACCESS_KEY'] . "&file=" .
  344. $filefull . "&path=" . $dir . "/&name=" . $file . "&act=0";
  345. @file_get_contents($syn_url);
  346. } elseif ($GLOBALS['distribution_cfg']['OSS_TYPE'] == "ALI_OSS") {
  347. $pathinfo = pathinfo($url);
  348. $file = $pathinfo['basename'];
  349. $dir = $pathinfo['dirname'];
  350. require_once APP_ROOT_PATH . "system/alioss/sdk.class.php";
  351. $oss_sdk_service = new ALIOSS();
  352. //设置是否打开curl调试模式
  353. $oss_sdk_service->set_debug_mode(true);
  354. $bucket = $GLOBALS['distribution_cfg']['OSS_BUCKET_NAME'];
  355. $object = $dir . "/" . $file;
  356. $file_path = APP_ROOT_PATH . $dir . "/" . $file;
  357. $oss_sdk_service->upload_file_by_file($bucket, $object, $file_path);
  358. }
  359. }
  360. }
  361. function file_domain(){
  362. if($GLOBALS['distribution_cfg']['CSS_JS_OSS']&&$GLOBALS['distribution_cfg']['OSS_TYPE']&&$GLOBALS['distribution_cfg']['OSS_TYPE']!="NONE")
  363. {
  364. $domain = $GLOBALS['distribution_cfg']['OSS_FILE_DOMAIN'];
  365. }
  366. else
  367. {
  368. $domain = get_domain().APP_ROOT;
  369. }
  370. return $domain;
  371. }
  372. ?>