1: <?php
2: 3: 4: 5: 6: 7: 8: 9:
10:
11: if (!defined('XOOPS_ROOT_PATH')) exit();
12:
13: define('LEGACY_ADMINMENU_CACHEPREFIX', XOOPS_CACHE_PATH.'/'.urlencode(XOOPS_URL).'_admin_menu_');
14:
15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
25: class Legacy_AdminSideMenu extends Legacy_AbstractBlockProcedure
26: {
27: var $mModules = array();
28:
29: 30: 31: 32: 33:
34: var $mCurrentModule = null;
35:
36: function getName()
37: {
38: return "sidemenu";
39: }
40:
41: function getTitle()
42: {
43: return "TEST: AdminSideMenu";
44: }
45:
46: function getEntryIndex()
47: {
48: return 0;
49: }
50:
51: function isEnableCache()
52: {
53: return false;
54: }
55:
56: function execute()
57: {
58: $root =& XCube_Root::getSingleton();
59:
60:
61: $langMgr =& $root->mLanguageManager;
62: $langMgr->loadModuleAdminMessageCatalog('legacy');
63:
64: $langMgr->loadModinfoMessageCatalog('legacy');
65:
66: $controller =& $root->mController;
67: $user =& $root->mContext->mXoopsUser;
68: $groups = implode(",", $user->getGroups());
69: $cachePath = LEGACY_ADMINMENU_CACHEPREFIX . md5(XOOPS_SALT . "($groups)". $langMgr->mLanguageName).'.html';
70: $render =& $this->getRenderTarget();
71: if (file_exists($cachePath)) {
72: $render->mRenderBuffer = file_get_contents($cachePath);
73: return;
74: }
75: $render->setAttribute('legacy_module', 'legacy');
76:
77: $this->mCurrentModule =& $controller->mRoot->mContext->mXoopsModule;
78:
79: if ($this->mCurrentModule->get('dirname') == 'legacy') {
80: if (xoops_getrequest('action') == "help") {
81: $moduleHandler =& xoops_gethandler('module');
82: $t_module =& $moduleHandler->getByDirname(xoops_gethandler('dirname'));
83: if (is_object($t_module)) {
84: $this->mCurrentModule =& $t_module;
85: }
86: }
87: }
88:
89: $db=&$controller->getDB();
90:
91: $mod = $db->prefix("modules");
92: $perm = $db->prefix("group_permission");
93:
94:
95:
96:
97: if ($root->mContext->mUser->isInRole('Site.Owner')) {
98: $sql = "SELECT DISTINCT mid FROM ${mod} WHERE isactive=1 AND hasadmin=1 ORDER BY weight, mid";
99: }
100: else {
101: $sql = "SELECT DISTINCT ${mod}.mid FROM ${mod},${perm} " .
102: "WHERE ${mod}.isactive=1 AND ${mod}.mid=${perm}.gperm_itemid AND ${perm}.gperm_name='module_admin' AND ${perm}.gperm_groupid IN (${groups}) " .
103: "AND ${mod}.hasadmin=1 " .
104: "ORDER BY ${mod}.weight, ${mod}.mid";
105: }
106:
107:
108: $result=$db->query($sql);
109:
110: $handler =& xoops_gethandler('module');
111:
112: while(list($mid) = $db->fetchRow($result)) {
113: $xoopsModule = & $handler->get($mid);
114: $module =& Legacy_Utils::createModule($xoopsModule, false);
115:
116: $this->mModules[] =& $module;
117: unset($module);
118: }
119:
120: $tpl = $db->prefix("tplfile");
121: $tpl_modules = array();
122: $sql = "SELECT DISTINCT tpl_module FROM ${tpl}";
123: $result = $db->query($sql);
124: while($row = $db->fetchArray($result)) {
125: $tpl_modules[] = $row['tpl_module'];
126: }
127: $render->setAttribute('tplmodules', $tpl_modules);
128:
129:
130: $render->setTemplateName('legacy_admin_block_sidemenu.html');
131: $render->setAttribute('modules', $this->mModules);
132: $render->setAttribute('currentModule', $this->mCurrentModule);
133:
134: $renderSystem =& $root->getRenderSystem($this->getRenderSystemName());
135:
136: $renderSystem->renderBlock($render);
137: file_put_contents($cachePath, $render->mRenderBuffer);
138: }
139:
140: static function clearCache()
141: {
142: $adminMenucache = glob(LEGACY_ADMINMENU_CACHEPREFIX . '*.html');
143: if ($adminMenucache) {
144: foreach ($adminMenucache as $file) {
145: unlink($file);
146: }
147: }
148: }
149: }
150:
151: ?>