module.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. defined('IN_PHPCMS') or exit('No permission resources.');
  3. pc_base::load_app_class('admin','admin',0);
  4. class module extends admin {
  5. private $db;
  6. public function __construct() {
  7. $this->db = pc_base::load_model('module_model');
  8. parent::__construct();
  9. }
  10. public function init() {
  11. $dirs = $module = $dirs_arr = $directory = array();
  12. $dirs = glob(PC_PATH.DIRECTORY_SEPARATOR.'modules'.DIRECTORY_SEPARATOR.'*');
  13. foreach ($dirs as $d) {
  14. if (is_dir($d)) {
  15. $d = basename($d);
  16. $dirs_arr[] = $d;
  17. }
  18. }
  19. define('INSTALL', true);
  20. $modules = $this->db->select('', '*', '', '', '', 'module');
  21. $total = count($dirs_arr);
  22. $dirs_arr = array_chunk($dirs_arr, 20, true);
  23. $page = max(intval($_GET['page']), 1);
  24. $pages = pages($total, $page, 20);
  25. $directory = $dirs_arr[intval($page-1)];
  26. include $this->admin_tpl('module_list');
  27. }
  28. /**
  29. * 模块安装
  30. */
  31. public function install() {
  32. $this->module = $_POST['module'] ? $_POST['module'] : $_GET['module'];
  33. $module_api = pc_base::load_app_class('module_api');
  34. if (!$module_api->check($this->module)) showmessage($module_api->error_msg, 'blank');
  35. if ($_POST['dosubmit']) {
  36. if ($module_api->install()) showmessage(L('success_module_install').L('update_cache'), '?m=admin&c=module&a=cache&pc_hash='.$_SESSION['pc_hash']);
  37. else showmesage($module_api->error_msg, HTTP_REFERER);
  38. } else {
  39. include PC_PATH.'modules'.DIRECTORY_SEPARATOR.$this->module.DIRECTORY_SEPARATOR.'install'.DIRECTORY_SEPARATOR.'config.inc.php';
  40. include $this->admin_tpl('module_config');
  41. }
  42. }
  43. /**
  44. * 模块卸载
  45. */
  46. public function uninstall() {
  47. if(!isset($_GET['module']) || empty($_GET['module'])) showmessage(L('illegal_parameters'));
  48. $module_api = pc_base::load_app_class('module_api');
  49. if(!$module_api->uninstall($_GET['module'])) showmessage($module_api->error_msg, 'blank');
  50. else showmessage(L('uninstall_success'), '?m=admin&c=module&a=cache&pc_hash='.$_SESSION['pc_hash']);
  51. }
  52. /**
  53. * 更新模块缓存
  54. */
  55. public function cache() {
  56. echo '<script type="text/javascript">parent.right.location.href = \'?m=admin&c=cache_all&a=init&pc_hash='.$_SESSION['pc_hash'].'\';window.top.art.dialog({id:\'install\'}).close();</script>';
  57. //showmessage(L('update_cache').L('success'), '', '', 'install');
  58. }
  59. }
  60. ?>