cache_advs.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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_advs.php 30323 2012-05-22 09:33:36Z monkey $
  7. */
  8. if(!defined('IN_DISCUZ')) {
  9. exit('Access Denied');
  10. }
  11. function build_cache_advs() {
  12. global $_G;
  13. $advlist = $data = array();
  14. $data['code'] = $data['parameters'] = $data['evalcode'] = array();
  15. foreach(C::t('common_advertisement')->fetch_all_old() as $adv) {
  16. foreach(explode("\t", $adv['targets']) as $target) {
  17. $data['code'][$target][$adv['type']][$adv['advid']] = $adv['code'];
  18. }
  19. $etype = explode(':', $adv['type']);
  20. if(count($etype) > 1) {
  21. $advtype_class = DISCUZ_ROOT.'./source/plugin/'.$etype[0].'/adv/adv_'.$etype[1].'.php';
  22. if(!file_exists($advtype_class) || !in_array($etype[0], $_G['setting']['plugins']['available'])) {
  23. continue;
  24. }
  25. require_once $advtype_class;
  26. $advclass = 'adv_'.$etype[1];
  27. } else {
  28. $advtype_class = libfile('adv/'.$adv['type'], 'class');
  29. if(!file_exists($advtype_class)) {
  30. continue;
  31. }
  32. require_once $advtype_class;
  33. $advclass = 'adv_'.$adv['type'];
  34. }
  35. $advclass = new $advclass;
  36. $adv['parameters'] = unserialize($adv['parameters']);
  37. unset($adv['parameters']['style'], $adv['parameters']['html'], $adv['parameters']['displayorder']);
  38. $data['parameters'][$adv['type']][$adv['advid']] = $adv['parameters'];
  39. if($adv['parameters']['extra']) {
  40. $data['parameters'][$adv['type']][$adv['advid']] = array_merge($data['parameters'][$adv['type']][$adv['advid']], $adv['parameters']['extra']);
  41. unset($data['parameters'][$adv['type']][$adv['advid']]['extra']);
  42. }
  43. $advlist[] = $adv;
  44. $data['evalcode'][$adv['type']] = $advclass->evalcode($adv);
  45. }
  46. updateadvtype();
  47. savecache('advs', $data);
  48. }
  49. function updateadvtype() {
  50. global $_G;
  51. $advtype = array();
  52. foreach(C::t('common_advertisement')->fetch_all_old() as $row) {
  53. $advtype[$row['type']] = 1;
  54. }
  55. $_G['setting']['advtype'] = $advtype = array_keys($advtype);
  56. C::t('common_setting')->update('advtype', $advtype);
  57. }
  58. ?>