cache_plugin.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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_plugin.php 33987 2013-09-13 06:48:25Z nemohou $
  7. */
  8. if(!defined('IN_DISCUZ')) {
  9. exit('Access Denied');
  10. }
  11. function build_cache_plugin() {
  12. global $importtxt;
  13. $data = $pluginsetting = array();
  14. foreach(C::t('common_plugin')->fetch_all_data(1) as $plugin) {
  15. $dir = substr($plugin['directory'], 0, -1);
  16. $plugin['modules'] = unserialize($plugin['modules']);
  17. if($plugin['modules']['extra']['langexists']) {
  18. $file = DISCUZ_ROOT.'./source/plugin/'.$dir.'/discuz_plugin_'.$dir.($plugin['modules']['extra']['installtype'] ? '_'.$plugin['modules']['extra']['installtype'] : '').'.xml';
  19. if(file_exists($file)) {
  20. require_once libfile('function/plugin');
  21. require_once libfile('function/admincp');
  22. $importtxt = @implode('', file($file));
  23. $pluginarray = getimportdata('Discuz! Plugin', 0, 1);
  24. if($pluginarray) {
  25. updatepluginlanguage($pluginarray);
  26. }
  27. }
  28. }
  29. foreach(C::t('common_pluginvar')->fetch_all_by_pluginid($plugin['pluginid']) as $var) {
  30. $data[$plugin['identifier']][$var['variable']] = $var['value'];
  31. if(in_array(substr($var['type'], 0, 6), array('group_', 'forum_'))) {
  32. $stype = substr($var['type'], 0, 5).'s';
  33. $type = substr($var['type'], 6);
  34. if($type == 'select') {
  35. foreach(explode("\n", $var['extra']) as $key => $option) {
  36. $option = trim($option);
  37. if(strpos($option, '=') === FALSE) {
  38. $key = $option;
  39. } else {
  40. $item = explode('=', $option);
  41. $key = trim($item[0]);
  42. $option = trim($item[1]);
  43. }
  44. $var['select'][] = array($key, $option);
  45. }
  46. }
  47. $pluginsetting[$stype][$plugin['identifier']]['name'] = $plugin['name'];
  48. $pluginsetting[$stype][$plugin['identifier']]['setting'][$var['pluginvarid']] = array('title' => $var['title'], 'description' => $var['description'], 'type' => $type, 'select' => $var['select']);
  49. }
  50. }
  51. }
  52. writetocache('pluginsetting', getcachevars(array('pluginsetting' => $pluginsetting)));
  53. savecache('plugin', $data);
  54. }
  55. ?>