plugin.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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: plugin.php 27335 2012-01-16 10:15:37Z monkey $
  7. */
  8. define('APPTYPEID', 127);
  9. define('CURSCRIPT', 'plugin');
  10. require './source/class/class_core.php';
  11. $discuz = C::app();
  12. $cachelist = array('plugin', 'diytemplatename');
  13. $discuz->cachelist = $cachelist;
  14. $discuz->init();
  15. if(!empty($_GET['id'])) {
  16. list($identifier, $module) = explode(':', $_GET['id']);
  17. $module = $module !== NULL ? $module : $identifier;
  18. } else {
  19. showmessage('plugin_nonexistence');
  20. }
  21. $mnid = 'plugin_'.$identifier.'_'.$module;
  22. $pluginmodule = isset($_G['setting']['pluginlinks'][$identifier][$module]) ? $_G['setting']['pluginlinks'][$identifier][$module] : (isset($_G['setting']['plugins']['script'][$identifier][$module]) ? $_G['setting']['plugins']['script'][$identifier][$module] : array('adminid' => 0, 'directory' => preg_match("/^[a-z]+[a-z0-9_]*$/i", $identifier) ? $identifier.'/' : ''));
  23. if(!preg_match('/^[\w\_]+$/', $identifier)) {
  24. showmessage('plugin_nonexistence');
  25. }
  26. if(empty($identifier) || !preg_match("/^[a-z0-9_\-]+$/i", $module) || !in_array($identifier, $_G['setting']['plugins']['available'])) {
  27. showmessage('plugin_nonexistence');
  28. } elseif($pluginmodule['adminid'] && ($_G['adminid'] < 1 || ($_G['adminid'] > 0 && $pluginmodule['adminid'] < $_G['adminid']))) {
  29. showmessage('plugin_nopermission');
  30. } elseif(@!file_exists(DISCUZ_ROOT.($modfile = './source/plugin/'.$pluginmodule['directory'].$module.'.inc.php'))) {
  31. showmessage('plugin_module_nonexistence', '', array('mod' => $modfile));
  32. }
  33. define('CURMODULE', $identifier);
  34. runhooks();
  35. include DISCUZ_ROOT.$modfile;
  36. ?>