cache_smilies_js.php 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?php
  2. /**
  3. * [Discuz!] (C)2001-2099 Comsenz Inc.
  4. * This is NOT a freeware, use is subject to license terms
  5. *
  6. * $Id: cache_smilies_js.php 24968 2011-10-19 09:51:28Z zhengqingpeng $
  7. */
  8. if(!defined('IN_DISCUZ')) {
  9. exit('Access Denied');
  10. }
  11. function build_cache_smilies_js() {
  12. global $_G;
  13. $fastsmiley = C::t('common_setting')->fetch('fastsmiley', true);
  14. $return_type = 'var smilies_type = new Array();';
  15. $return_array = 'var smilies_array = new Array();var smilies_fast = new Array();';
  16. $spp = $_G['setting']['smcols'] * $_G['setting']['smrows'];
  17. $fpre = '';
  18. foreach(C::t('forum_imagetype')->fetch_all_by_type('smiley', 1) as $type) {
  19. $return_data = array();
  20. $return_datakey = '';
  21. $i = 0;$j = 1;$pre = '';
  22. $return_type .= 'smilies_type[\'_'.$type['typeid'].'\'] = [\''.str_replace('\'', '\\\'', $type['name']).'\', \''.str_replace('\'', '\\\'', $type['directory']).'\'];';
  23. $return_datakey .= 'smilies_array['.$type['typeid'].'] = new Array();';
  24. foreach(C::t('common_smiley')->fetch_all_by_type_code_typeid('smiley', $type['typeid']) as $smiley) {
  25. if($i >= $spp) {
  26. $return_data[$j] = 'smilies_array['.$type['typeid'].']['.$j.'] = ['.$return_data[$j].'];';
  27. $j++;$i = 0;$pre = '';
  28. }
  29. if($size = @getimagesize(DISCUZ_ROOT.'./static/image/smiley/'.$type['directory'].'/'.$smiley['url'])) {
  30. $smiley['code'] = str_replace('\'', '\\\'', $smiley['code']);
  31. $smileyid = $smiley['id'];
  32. $s = smthumb($size, $_G['setting']['smthumb']);
  33. $smiley['w'] = $s['w'];
  34. $smiley['h'] = $s['h'];
  35. $l = smthumb($size);
  36. $smiley['lw'] = $l['w'];
  37. unset($smiley['id'], $smiley['directory']);
  38. $return_data[$j] .= $pre.'[\''.$smileyid.'\', \''.$smiley['code'].'\',\''.str_replace('\'', '\\\'', $smiley['url']).'\',\''.$smiley['w'].'\',\''.$smiley['h'].'\',\''.$smiley['lw'].'\']';
  39. if(is_array($fastsmiley[$type['typeid']]) && in_array($smileyid, $fastsmiley[$type['typeid']])) {
  40. $return_fast .= $fpre.'[\''.$type['typeid'].'\',\''.$j.'\',\''.$i.'\']';
  41. $fpre = ',';
  42. }
  43. $pre = ',';
  44. }
  45. $i++;
  46. }
  47. $return_data[$j] = 'smilies_array['.$type['typeid'].']['.$j.'] = ['.$return_data[$j].'];';
  48. $return_array .= $return_datakey.implode('', $return_data);
  49. }
  50. $cachedir = DISCUZ_ROOT.'./data/cache/';
  51. if(@$fp = fopen($cachedir.'common_smilies_var.js', 'w')) {
  52. fwrite($fp, 'var smthumb = \''.$_G['setting']['smthumb'].'\';'.$return_type.$return_array.'var smilies_fast=['.$return_fast.'];');
  53. fclose($fp);
  54. } else {
  55. exit('Can not write to cache files, please check directory ./data/ and ./data/cache/ .');
  56. }
  57. }
  58. ?>