cache_bbcodes.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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_bbcodes.php 24610 2011-09-28 03:02:49Z zhengqingpeng $
  7. */
  8. if(!defined('IN_DISCUZ')) {
  9. exit('Access Denied');
  10. }
  11. function build_cache_bbcodes() {
  12. $data = array();
  13. $regexp = array (
  14. 1 => "/\[{bbtag}]([^\"\[]+?)\[\/{bbtag}\]/is",
  15. 2 => "/\[{bbtag}=(['\"]?)([^\"\[]+?)(['\"]?)\]([^\"\[]+?)\[\/{bbtag}\]/is",
  16. 3 => "/\[{bbtag}=(['\"]?)([^\"\[]+?)(['\"]?),(['\"]?)([^\"\[]+?)(['\"]?)\]([^\"\[]+?)\[\/{bbtag}\]/is"
  17. );
  18. foreach(C::t('forum_bbcode')->fetch_all_by_available_icon(0, false, '>') as $bbcode) {
  19. $bbcode['perm'] = explode("\t", $bbcode['perm']);
  20. if(in_array('', $bbcode['perm']) || !$bbcode['perm']) {
  21. continue;
  22. }
  23. $search = str_replace('{bbtag}', $bbcode['tag'], $regexp[$bbcode['params']]);
  24. $bbcode['replacement'] = preg_replace("/([\r\n])/", '', $bbcode['replacement']);
  25. switch($bbcode['params']) {
  26. case 2:
  27. $bbcode['replacement'] = str_replace('{1}', '\\2', $bbcode['replacement']);
  28. $bbcode['replacement'] = str_replace('{2}', '\\4', $bbcode['replacement']);
  29. break;
  30. case 3:
  31. $bbcode['replacement'] = str_replace('{1}', '\\2', $bbcode['replacement']);
  32. $bbcode['replacement'] = str_replace('{2}', '\\5', $bbcode['replacement']);
  33. $bbcode['replacement'] = str_replace('{3}', '\\7', $bbcode['replacement']);
  34. break;
  35. default:
  36. $bbcode['replacement'] = str_replace('{1}', '\\1', $bbcode['replacement']);
  37. break;
  38. }
  39. if(preg_match("/\{(RANDOM|MD5)\}/", $bbcode['replacement'])) {
  40. $search = str_replace('is', 'ies', $search);
  41. $replace = '\''.str_replace('{RANDOM}', '_\'.random(6).\'', str_replace('{MD5}', '_\'.md5(\'\\1\').\'', $bbcode['replacement'])).'\'';
  42. } else {
  43. $replace = $bbcode['replacement'];
  44. }
  45. foreach($bbcode['perm'] as $groupid) {
  46. for($i = 0; $i < $bbcode['nest']; $i++) {
  47. $data[$groupid]['searcharray'][] = $search;
  48. $data[$groupid]['replacearray'][] = $replace;
  49. }
  50. }
  51. }
  52. savecache('bbcodes', $data);
  53. }
  54. ?>