common.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. <?php
  2. //编译生成css文件
  3. function parse_css($urls)
  4. {
  5. $path = get_resource_path('css', $urls);
  6. return file_domain() . APP_ROOT . "/" . $path . "?v=" . app_conf("DB_VERSION");
  7. }
  8. /**
  9. *
  10. * @param $urls 载入的脚本
  11. * @param $encode_url 需加密的脚本
  12. */
  13. function parse_script($urls, $encode_url = array())
  14. {
  15. $path = get_resource_path('js', $urls, $encode_url);
  16. return file_domain() . APP_ROOT . "/" . $path . "?v=" . app_conf("DB_VERSION");
  17. }
  18. function get_resource_path($type, $urls, $encode_url = null)
  19. {
  20. $statics_path = 'public/runtime/statics/';
  21. $app_info = json_decode(@file_get_contents(APP_ROOT_PATH . $statics_path . 'app.json'), true);
  22. if (empty($app_info)) {
  23. $app_info = array();
  24. }
  25. $key = md5(implode(',', $urls));
  26. if (!IS_DEBUG && isset($app_info[$key]) && file_exists(APP_ROOT_PATH . $app_info[$key]['path'])) {
  27. return $app_info[$key]['path'];
  28. }
  29. if (!file_exists(APP_ROOT_PATH . $statics_path)) {
  30. mkdir(APP_ROOT_PATH . $statics_path, 0777, true);
  31. }
  32. switch ($type) {
  33. case 'js':
  34. $path = get_script_path($urls, $encode_url);
  35. break;
  36. case 'css':
  37. $path = get_css_path($urls);
  38. break;
  39. default:
  40. return;
  41. }
  42. if (empty($app_info[$key]) || $app_info[$key]['path'] != $path) {
  43. $app_info [$key] = array(
  44. 'type' => $type,
  45. 'path' => $path,
  46. 'urls' => $urls,
  47. 'encode_url' => $encode_url,
  48. );
  49. @file_put_contents(APP_ROOT_PATH . $statics_path . 'app.json', json_encode($app_info));
  50. }
  51. return $path;
  52. }
  53. function get_css_path($urls)
  54. {
  55. $statics_path = 'public/runtime/statics/';
  56. $tmpl_path = $GLOBALS['tmpl']->_var['TMPL'];
  57. $css_content = '';
  58. foreach ($urls as $url) {
  59. $css_content .= @file_get_contents($url);
  60. }
  61. $css_content = preg_replace("/[\r\n]/", '', $css_content);
  62. $css_content = str_replace("../images/",$tmpl_path."/images/",$css_content);
  63. $css_url = $statics_path . md5($css_content) . '.css';
  64. if (!file_exists(APP_ROOT_PATH . $css_url)) {
  65. @file_put_contents(APP_ROOT_PATH . $css_url, $css_content);
  66. if ($GLOBALS['distribution_cfg']['CSS_JS_OSS']) {
  67. syn_to_remote_file_server($css_url);
  68. }
  69. }
  70. return $css_url;
  71. }
  72. function get_script_path($urls, $encode_url = array())
  73. {
  74. $statics_path = 'public/runtime/statics/';
  75. if (count($encode_url) > 0) {
  76. require_once APP_ROOT_PATH . "system/libs/javascriptpacker.php";
  77. }
  78. $js_content = '';
  79. foreach ($urls as $url) {
  80. $append_content = @file_get_contents($url) . "\r\n";
  81. if (in_array($url, $encode_url)) {
  82. $packer = new JavaScriptPacker($append_content);
  83. $append_content = $packer->pack();
  84. }
  85. $js_content .= $append_content;
  86. }
  87. $js_url = $statics_path . md5($js_content) . '.js';
  88. if (!file_exists(APP_ROOT_PATH . $js_url)) {
  89. @file_put_contents(APP_ROOT_PATH . $js_url, $js_content);
  90. if ($GLOBALS['distribution_cfg']['CSS_JS_OSS']) {
  91. syn_to_remote_file_server($js_url);
  92. }
  93. }
  94. return $js_url;
  95. }
  96. /*ajax返回*/
  97. function api_ajax_return($data,$is_debug=false)
  98. {
  99. if($_REQUEST['post_type']!='json'){
  100. header("Content-Type:text/html; charset=utf-8");
  101. header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate');
  102. $GLOBALS['tmpl']->assign('data',$data);
  103. $tmpl_dir=$GLOBALS['class_name'].'-'.$GLOBALS['act'].'.html';
  104. $GLOBALS['tmpl']->display($tmpl_dir);
  105. die();
  106. }else{
  107. echo json_encode($data);
  108. die();
  109. }
  110. }
  111. ?>