1: <?php
2:
3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
18: class ModuleAdmin
19: {
20: private $_itemButton = array();
21: private $_itemInfoBox = array();
22: private $_itemInfoBoxLine = array();
23: private $_itemConfigBoxLine = array();
24:
25: 26: 27:
28: private $_obj;
29:
30: 31: 32:
33: public function __construct()
34: {
35:
36: global $xoopsModule;
37: $this->_obj =& $xoopsModule;
38: echo "<style type=\"text/css\" media=\"screen\">@import \"" . XOOPS_URL . "/Frameworks/moduleclasses/moduleadmin/css/admin.css\";</style>";
39:
40: $this->loadLanguage();
41: }
42:
43: 44: 45:
46: public function getInfo()
47: {
48: $infoArray = array();
49: if (!isset($infoArray) || empty($infoArray)) {
50: $infoArray = array();
51: $infoArray['version'] = $this->getVersion();
52: $infoArray['releasedate'] = $this->getReleaseDate();
53: $infoArray['methods'] = $this->getClassMethods();
54: }
55:
56: return $infoArray;
57: }
58:
59: 60: 61: 62:
63: public function getVersion()
64: {
65: 66: 67:
68: include_once 'xoops_version.php';
69: $version = XOOPS_FRAMEWORKS_MODULEADMIN_VERSION;
70:
71: return $version;
72: }
73:
74: 75: 76: 77:
78: public function getReleaseDate()
79: {
80: 81: 82:
83: include_once 'xoops_version.php';
84: $releasedate = XOOPS_FRAMEWORKS_MODULEADMIN_RELEASEDATE;
85:
86: return $releasedate;
87: }
88:
89: 90: 91: 92: 93:
94: public function getClassMethods()
95: {
96: $myMethods = get_class_methods(__CLASS__);
97:
98: return $myMethods;
99: }
100:
101:
102:
103:
104:
105:
106: 107: 108:
109: public function loadLanguage()
110: {
111: $language = $GLOBALS['xoopsConfig']['language'];
112: if (!file_exists($fileinc = XOOPS_ROOT_PATH . "/Frameworks/moduleclasses/moduleadmin/language/{$language}/main.php")) {
113: if (!file_exists($fileinc = XOOPS_ROOT_PATH . '/Frameworks/moduleclasses/moduleadmin/language/english/main.php')) {
114: return false;
115: }
116: }
117: $ret = include_once $fileinc;
118:
119: return $ret;
120: }
121:
122:
123:
124:
125:
126: 127: 128:
129: public function renderMenuIndex()
130: {
131: $path = XOOPS_URL . '/modules/' . $this->_obj->getVar('dirname') . '/';
132: $pathsystem = XOOPS_URL . '/modules/system/';
133: $this->_obj->loadAdminMenu();
134: $ret = "<div class=\"rmmenuicon\">\n";
135: foreach (array_keys($this->_obj->adminmenu) as $i) {
136: if ($this->_obj->adminmenu[$i]['link'] !== 'admin/index.php') {
137: $ret .= "<a href=\"../" . $this->_obj->adminmenu[$i]['link'] . "\" title=\"" . (isset($this->_obj->adminmenu[$i]['desc']) ? $this->_obj->adminmenu[$i]['desc'] : '') . "\">";
138:
139:
140: $ret .= "<img src=\"" . (filter_var($this->_obj->adminmenu[$i]['icon'], FILTER_VALIDATE_URL) ? $this->_obj->adminmenu[$i]['icon'] : $path . $this->_obj->adminmenu[$i]['icon']) . "\" alt=\"" . $this->_obj->adminmenu[$i]['title'] . "\" />";
141:
142: $ret .= '<span>' . $this->_obj->adminmenu[$i]['title'] . '</span>';
143: $ret .= '</a>';
144: }
145: }
146: if ($this->_obj->getInfo('help')) {
147: if (substr(XOOPS_VERSION, 0, 9) >= 'XOOPS 2.5') {
148: $ret .= "<a href=\"" . $pathsystem . 'help.php?mid=' . $this->_obj->getVar('mid', 's') . '&' . $this->_obj->getInfo('help') . "\" title=\"" . _AM_SYSTEM_HELP . "\">";
149: $ret .= "<img width=\"32px\" src=\"" . XOOPS_URL . "/Frameworks/moduleclasses/icons/32/help.png\" alt=\"" . _AM_SYSTEM_HELP . "\" /> ";
150: $ret .= '<span>' . _AM_SYSTEM_HELP . '</span>';
151: $ret .= '</a>';
152: }
153: }
154: $ret .= "</div>\n<div style=\"clear: both;\"></div>\n";
155:
156: return $ret;
157: }
158:
159:
160:
161:
162:
163: 164: 165: 166: 167: 168:
169: public function renderButton($position = 'right', $delimeter = ' ')
170: {
171: $path = XOOPS_URL . '/Frameworks/moduleclasses/icons/32/';
172: switch ($position) {
173: default:
174: case 'right':
175: $ret = "<div class=\"floatright\">\n";
176: break;
177:
178: case 'left':
179: $ret = "<div class=\"floatleft\">\n";
180: break;
181:
182: case 'center':
183: $ret = "<div class=\"aligncenter\">\n";
184: }
185: $ret .= "<div class=\"xo-buttons\">\n";
186: foreach (array_keys($this->_itemButton) as $i) {
187: $ret .= "<a class='ui-corner-all tooltip' href='" . $this->_itemButton[$i]['link'] . "' title='" . $this->_itemButton[$i]['title'] . "' " . $this->_itemButton[$i]['extra'] . '>';
188: $ret .= "<img src='"
189:
190:
191: . (filter_var($this->_itemButton[$i]['icon'], FILTER_VALIDATE_URL) ? $this->_itemButton[$i]['icon'] : $path . $this->_itemButton[$i]['icon']) . "' title='" . $this->_itemButton[$i]['title'] . "' alt='" . $this->_itemButton[$i]['title'] . "' />" . $this->_itemButton[$i]['title'];
192: $ret .= "</a>\n";
193: $ret .= $delimeter;
194: }
195: $ret .= "</div>\n</div>\n";
196: $ret .= '<br> <br><br>';
197:
198: return $ret;
199: }
200:
201: 202: 203: 204: 205: 206: 207: 208:
209: public function addItemButton($title, $link, $icon = 'add', $extra = '')
210: {
211: $ret = array();
212: $ret['title'] = $title;
213: $ret['link'] = $link;
214: $ret['icon'] = $icon . '.png';
215: $ret['extra'] = $extra;
216: $this->_itemButton[] = $ret;
217:
218: return true;
219: }
220:
221:
222:
223:
224:
225:
226:
227:
228:
229: 230: 231: 232: 233: 234:
235: public function addConfigBoxLine($value = '', $type = 'default')
236: {
237: $line = '';
238: $path = XOOPS_URL . '/Frameworks/moduleclasses/icons/16/';
239: switch ($type) {
240: default:
241: case 'default':
242: $line .= '<span>' . $value . '</span>';
243: break;
244:
245: case 'folder':
246: if (!is_dir($value)) {
247: $line .= "<span style='color : red; font-weight : bold;'>";
248: $line .= "<img src='" . $path . "0.png' >";
249: $line .= sprintf(_AM_MODULEADMIN_CONFIG_FOLDERKO, $value);
250: $line .= "</span>\n";
251: } else {
252: $line .= "<span style='color : green;'>";
253: $line .= "<img src='" . $path . "1.png' >";
254: $line .= sprintf(_AM_MODULEADMIN_CONFIG_FOLDEROK, $value);
255: $line .= "</span>\n";
256: }
257: break;
258:
259: case 'chmod':
260: if (is_dir($value[0])) {
261: if (substr(decoct(fileperms($value[0])), 2) != $value[1]) {
262: $line .= "<span style='color : red; font-weight : bold;'>";
263: $line .= "<img src='" . $path . "0.png' >";
264: $line .= sprintf(_AM_MODULEADMIN_CONFIG_CHMOD, $value[0], $value[1], substr(decoct(fileperms($value[0])), 2));
265: $line .= "</span>\n";
266: } else {
267: $line .= "<span style='color : green;'>";
268: $line .= "<img src='" . $path . "1.png' >";
269: $line .= sprintf(_AM_MODULEADMIN_CONFIG_CHMOD, $value[0], $value[1], substr(decoct(fileperms($value[0])), 2));
270: $line .= "</span>\n";
271: }
272: }
273: break;
274: }
275: $this->_itemConfigBoxLine[] = $line;
276:
277: return true;
278: }
279:
280:
281:
282:
283:
284: 285: 286:
287: public function renderIndex()
288: {
289: $ret = "<table id='xo-modadmin-index'>\n<tr>\n";
290: $ret .= "<td width=\"40%\">\n";
291: $ret .= $this->renderMenuIndex();
292: $ret .= "</td>\n";
293: $ret .= "<td width=\"60%\">\n";
294: $ret .= $this->renderInfoBox();
295: $ret .= "</td>\n";
296: $ret .= "</tr>\n";
297:
298: if ($this->_obj->getInfo('min_php') || $this->_obj->getInfo('min_xoops') || !empty($this->_itemConfigBoxLine)) {
299: $ret .= "<tr>\n";
300: $ret .= "<td colspan=\"2\">\n";
301: $ret .= "<fieldset><legend class=\"label\">";
302: $ret .= _AM_MODULEADMIN_CONFIG;
303: $ret .= "</legend>\n";
304:
305:
306: $path = XOOPS_URL . '/Frameworks/moduleclasses/icons/16/';
307: if ($this->_obj->getInfo('min_php')) {
308: if (version_compare(phpversion(), $this->_obj->getInfo('min_php'), '<')) {
309: $ret .= "<span style='color : red; font-weight : bold;'><img src='" . $path . "0.png' >" . sprintf(_AM_MODULEADMIN_CONFIG_PHP, $this->_obj->getInfo('min_php'), phpversion()) . "</span>\n";
310: } else {
311: $ret .= "<span style='color : green;'><img src='" . $path . "1.png' >" . sprintf(_AM_MODULEADMIN_CONFIG_PHP, $this->_obj->getInfo('min_php'), phpversion()) . "</span>\n";
312: }
313: $ret .= '<br>';
314: }
315:
316:
317: $path = XOOPS_URL . '/Frameworks/moduleclasses/icons/16/';
318: $dbarray = $this->_obj->getInfo('min_db');
319:
320: if ($dbarray[XOOPS_DB_TYPE]) {
321:
322: switch (XOOPS_DB_TYPE) {
323:
324: case 'mysql':
325: case 'mysqli':
326: global $xoopsDB;
327: $dbCurrentVersion = $xoopsDB->getServerVersion();
328: break;
329:
330:
331:
332:
333: default:
334: $dbCurrentVersion = '0';
335: break;
336: }
337: $currentVerParts = explode('.', (string)$dbCurrentVersion);
338: $iCurrentVerParts = array_map('intval', $currentVerParts);
339: $dbRequiredVersion = $dbarray[XOOPS_DB_TYPE];
340: $reqVerParts = explode('.', (string)$dbRequiredVersion);
341: $iReqVerParts = array_map('intval', $reqVerParts);
342: $icount = $j = count($iReqVerParts);
343: $reqVer = $curVer = 0;
344: for ($i = 0; $i < $icount; ++$i) {
345: $j--;
346: $reqVer += $iReqVerParts[$i] * pow(10, $j);
347: if (isset($iCurrentVerParts[$i])) {
348: $curVer += $iCurrentVerParts[$i] * pow(10, $j);
349: } else {
350: $curVer *= pow(10, $j);
351: }
352: }
353: if ($reqVer > $curVer) {
354: $ret .= "<span style='color : red; font-weight : bold;'><img src='" . $path . "0.png' >" . sprintf(XOOPS_DB_TYPE . ' ' . _AM_MODULEADMIN_CONFIG_DB, $dbRequiredVersion, $dbCurrentVersion) . "</span><br>\n";
355: } else {
356: $ret .= "<span style='color : green;'><img src='" . $path . "1.png' >" . sprintf(strtoupper(XOOPS_DB_TYPE) . ' ' . _AM_MODULEADMIN_CONFIG_DB, $dbRequiredVersion, $dbCurrentVersion) . "</span><br>\n";
357: }
358: }
359:
360:
361: if ($this->_obj->getInfo('min_xoops')) {
362: if (substr(XOOPS_VERSION, 6, strlen(XOOPS_VERSION) - 6) < $this->_obj->getInfo('min_xoops')) {
363: $ret .= "<span style='color : red; font-weight : bold;'><img src='" . $path . "0.png' >" . sprintf(_AM_MODULEADMIN_CONFIG_XOOPS, $this->_obj->getInfo('min_xoops'), substr(XOOPS_VERSION, 6, strlen(XOOPS_VERSION) - 6)) . "</span>\n";
364: } else {
365: $ret .= "<span style='color : green;'><img src='" . $path . "1.png' >" . sprintf(_AM_MODULEADMIN_CONFIG_XOOPS, $this->_obj->getInfo('min_xoops'), substr(XOOPS_VERSION, 6, strlen(XOOPS_VERSION) - 6)) . "</span>\n";
366: }
367: $ret .= '<br>';
368: }
369:
370:
371: if ($this->_obj->getInfo('min_admin')) {
372: if ($this->getVersion() < $this->_obj->getInfo('min_admin')) {
373: $ret .= "<span style='color : red; font-weight : bold;'><img src='" . $path . "0.png' >" . sprintf(_AM_MODULEADMIN_CONFIG_ADMIN, $this->_obj->getInfo('min_admin'), $this->getVersion()) . "</span>\n";
374: } else {
375: $ret .= "<span style='color : green;'><img src='" . $path . "1.png' >" . sprintf(_AM_MODULEADMIN_CONFIG_ADMIN, $this->_obj->getInfo('min_admin'), $this->getVersion()) . "</span>\n";
376: }
377: $ret .= '<br>';
378: }
379: if (!empty($this->_itemConfigBoxLine)) {
380: foreach (array_keys($this->_itemConfigBoxLine) as $i) {
381: $ret .= $this->_itemConfigBoxLine[$i];
382: $ret .= '<br>';
383: }
384: }
385: $ret .= "</fieldset>\n";
386: $ret .= "</td>\n";
387: $ret .= "</tr>\n";
388: }
389: $ret .= "</table>\n";
390:
391: return $ret;
392: }
393:
394:
395:
396:
397:
398: 399: 400: 401: 402:
403: public function addInfoBox($title)
404: {
405: $ret = array();
406: $ret['title'] = $title;
407: $this->_itemInfoBox[] = $ret;
408:
409: return true;
410: }
411:
412:
413:
414:
415:
416:
417:
418:
419:
420:
421: 422: 423: 424: 425: 426: 427: 428: 429:
430: public function addInfoBoxLine($label, $text, $value = '', $color = 'inherit', $type = 'default')
431: {
432: $ret = array();
433: $ret['label'] = $label;
434: $line = '';
435: switch ($type) {
436: default:
437: case 'default':
438: $line .= sprintf($text, "<span style='color : " . $color . "; font-weight : bold;'>" . $value . '</span>');
439: break;
440:
441: case 'information':
442: $line .= $text;
443: break;
444: }
445: $ret['line'] = $line;
446: $this->_itemInfoBoxLine[] = $ret;
447:
448: return true;
449: }
450:
451: 452: 453:
454: public function renderInfoBox()
455: {
456: $ret = '';
457: foreach (array_keys($this->_itemInfoBox) as $i) {
458: $ret .= "<fieldset><legend class=\"label\">";
459: $ret .= $this->_itemInfoBox[$i]['title'];
460: $ret .= "</legend>\n";
461: foreach (array_keys($this->_itemInfoBoxLine) as $k) {
462: if ($this->_itemInfoBoxLine[$k]['label'] == $this->_itemInfoBox[$i]['title']) {
463: $ret .= $this->_itemInfoBoxLine[$k]['line'];
464: $ret .= '<br>';
465: }
466: }
467: $ret .= "</fieldset>\n";
468: $ret .= "<br>\n";
469: }
470:
471: return $ret;
472: }
473:
474: 475: 476: 477: 478: 479: 480: 481:
482: public function renderAbout($business = '', $logo_xoops = true)
483: {
484: $path = XOOPS_URL . '/Frameworks/moduleclasses/icons/32/';
485: $date = preg_replace('/-\\\/', '/', $this->_obj->getInfo('release_date'));
486: $date = explode('/', $date);
487: $author = explode(',', $this->_obj->getInfo('author'));
488: $nickname = explode(',', $this->_obj->getInfo('nickname'));
489: $release_date = formatTimestamp(mktime(0, 0, 0, $date[1], $date[2], $date[0]), 's');
490: $module_dir = $this->_obj->getVar('dirname');
491: $module_info = "<div id=\"about\"><label class=\"label_after\">" . _AM_MODULEADMIN_ABOUT_DESCRIPTION . "</label>\n"
492: . "<text>" . $this->_obj->getInfo('description') . "</text><br>\n"
493: . "<label class=\"label_after\">" . _AM_MODULEADMIN_ABOUT_UPDATEDATE . "</label>\n"
494: . "<text class=\"bold\">" . formatTimestamp($this->_obj->getVar('last_update'), 'm') . "</text><br>\n"
495: . "<label class=\"label_after\">" . _AM_MODULEADMIN_ABOUT_MODULESTATUS . "</label>\n"
496: . "<text>" . $this->_obj->getInfo('module_status') . "</text><br>\n"
497: . "<label class=\"label_after\">" . _AM_MODULEADMIN_ABOUT_WEBSITE . "</label>\n"
498: . "<text><a class=\"tooltip\" href=\"http://" . $this->_obj->getInfo('module_website_url') . "\" rel=\"external\" title=\""
499: . $this->_obj->getInfo('module_website_name') . " - " . $this->_obj->getInfo('module_website_url') . "\">"
500: . $this->_obj->getInfo('module_website_name') . "</a></text>\n"
501: . "</div>\n";
502: $authorArray = array();
503: foreach ( $author as $k => $aName ) {
504: $authorArray[$k] = ( isset( $nickname[$k] ) && ( '' != $nickname[$k] ) ) ? "{$aName} ({$nickname[$k]})" : "{$aName}";
505: }
506: $license_url = $this->_obj->getInfo('license_url');
507: $license_url = preg_match('%^(https?:)?//%', $license_url) ? $license_url : 'http://' . $license_url;
508: $website = $this->_obj->getInfo('website');
509: $website = preg_match('%^(https?:)?//%', $website) ? $website : 'http://' . $website;
510:
511: $ret = "<table>\n<tr>\n"
512: . "<td width=\"50%\">\n"
513: . "<table>\n<tr>\n<td style=\"width: 100px;\">\n"
514: . "<img src=\"" . XOOPS_URL . '/modules/' . $module_dir . '/' . $this->_obj->getInfo('image') . "\" alt=\"" . $module_dir . "\" style=\"float: left; margin-right: 10px;\">\n"
515: . "</td><td>\n"
516: . "<div style=\"margin-top: 1px; margin-bottom: 4px; font-size: 18px; line-height: 18px; color: #2F5376; font-weight: bold;\">\n"
517: . $this->_obj->getInfo('name') . ' ' . $this->_obj->getInfo('version') . ' ' . $this->_obj->getInfo('module_status') . " ({$release_date})\n"
518: . "<br>\n"
519: . "</div>\n"
520: . "<div style=\"line-height: 16px; font-weight: bold;\">\n"
521: . _AM_MODULEADMIN_ABOUT_BY . implode(', ', $authorArray) . "\n"
522: . "</div>\n"
523: . "<div style=\"line-height: 16px;\">\n"
524: . "<a href=\"$license_url\" target=\"_blank\" rel=\"external\">" . $this->_obj->getInfo('license') . "</a>\n"
525: . "<br>\n"
526: . "<a href=\"$website\" target=\"_blank\">" . $this->_obj->getInfo('website') . "</a>\n"
527: . "<br>\n"
528: . "<br>\n"
529: . "</div>\n"
530: . "</td></tr>\n";
531: if ((1 !== preg_match('/[^a-zA-Z0-9]/', $business)) || (false !== checkEmail($business))) {
532: $ret .= "<td colspan=\"2\">"
533: . "<div id=\"about_donate\"><fieldset><legend class=\"label\">Donation</legend><br>\n"
534: . "<div style=\"clear: both; height: 1em;\"></div>\n"
535: . "<form action=\"https://www.paypal.com/cgi-bin/webscr\" method=\"post\" target=\"_blank\" rel=\external\">\n"
536: . "<input name=\"cmd\" type=\"hidden\" value=\"_donations\">\n"
537: . "<input name=\"business\" type=\"hidden\" value=\"{$business}\">\n"
538: . "<input name=\"currency_code\" type=\"hidden\" value=\"" . _AM_MODULEADMIN_ABOUT_AMOUNT_CURRENCY . "\">\n"
539: . "<label class=\"label_after\" for=\"amount\">" . _AM_MODULEADMIN_ABOUT_AMOUNT . "</label><text><input class=\"donate_amount\" type=\"text\" name=\"amount\" value=\"" . _AM_MODULEADMIN_ABOUT_AMOUNT_SUGGESTED . "\" title=\"" . _AM_MODULEADMIN_ABOUT_AMOUNT_TTL . "\" pattern=\"" . _AM_MODULEADMIN_ABOUT_AMOUNT_PATTERN . "\"></text>\n"
540: . "<br>\n"
541: . "<text><input type=\"image\" name=\"submit\" class=\"donate_button\" src=\"https://www.paypal.com/en_US/i/btn/btn_donate_LG.gif\" alt=\"" . _AM_MODULEADMIN_ABOUT_DONATE_IMG_ALT . "\"></text>\n"
542: . "<img alt=\"\" height=\"1\" src=\"https://www.paypalobjects.com/en_US/i/scr/pixel.gif\" style=\"border-width: 0px;\" width=\"1\">\n"
543: . "</form>\n"
544: . "<br>\n"
545: . "</fieldset>\n"
546: . "</div>\n"
547: . "</td>\n</tr>\n";
548: }
549: $ret .= "</table>\n";
550: $this->addInfoBox( _AM_MODULEADMIN_ABOUT_MODULEINFO );
551: $this->addInfoBoxLine( _AM_MODULEADMIN_ABOUT_MODULEINFO, $module_info, '', '', 'information' );
552: $ret .= $this->renderInfoBox()
553: . "</td>\n"
554: . "<td width=\"50%\">\n"
555: . "<fieldset><legend class=\"label\">" . _AM_MODULEADMIN_ABOUT_CHANGELOG . "</legend><br>\n"
556: . "<div class=\"txtchangelog\">\n";
557: $language = empty( $GLOBALS['xoopsConfig']['language'] ) ? 'english' : $GLOBALS['xoopsConfig']['language'];
558: $file = XOOPS_ROOT_PATH . "/modules/{$module_dir}/language/{$language}/changelog.txt";
559: if ( !is_file( $file ) && ( 'english' !== $language ) ) {
560: $file = XOOPS_ROOT_PATH . "/modules/{$module_dir}/language/english/changelog.txt";
561: }
562: if ( is_readable( $file ) ) {
563: $ret .= ( implode( '<br>', file( $file ) ) ) . "\n";
564: } else {
565: $file = XOOPS_ROOT_PATH . "/modules/{$module_dir}/docs/changelog.txt";
566: if ( is_readable( $file ) ) {
567: $ret .= implode( '<br>', file( $file ) ) . "\n";
568: }
569: }
570: $ret .= "</div>\n"
571: . "</fieldset>\n"
572: . "</td>\n"
573: . "</tr>\n"
574: . "</table>\n";
575: if ( true === $logo_xoops ) {
576: $ret .= "<div class=\"center\">"
577: . "<a href=\"http://www.xoops.org\" target=\"_blank\"><img src=\"{$path}xoopsmicrobutton.gif\" alt=\"XOOPS\" title=\"XOOPS\"></a>"
578: . "</div>";
579: }
580: return $ret;
581: }
582:
583: 584: 585: 586: 587:
588: public function addNavigation($menu = '')
589: {
590: $ret = '';
591: $navigation = '';
592: $path = XOOPS_URL . '/modules/' . $this->_obj->getVar('dirname') . '/';
593: $this->_obj->loadAdminMenu();
594: foreach (array_keys($this->_obj->adminmenu) as $i) {
595: if ($this->_obj->adminmenu[$i]['link'] == 'admin/' . $menu) {
596: $navigation .= $this->_obj->adminmenu[$i]['title'] . ' | ';
597: $ret = "<div class=\"CPbigTitle\" style=\"background-image: url(" . $path . $this->_obj->adminmenu[$i]['icon'] . "); background-repeat: no-repeat; background-position: left; padding-left: 50px;\">
598: <strong>" . $this->_obj->adminmenu[$i]['title'] . '</strong></div><br>';
599: } else {
600: $navigation .= "<a href = '../" . $this->_obj->adminmenu[$i]['link'] . "'>" . $this->_obj->adminmenu[$i]['title'] . '</a> | ';
601: }
602: }
603: if (substr(XOOPS_VERSION, 0, 9) < 'XOOPS 2.5') {
604: $navigation .= "<a href = '../../system/admin.php?fct=preferences&op=showmod&mod=" . $this->_obj->getVar('mid') . "'>" . _MI_SYSTEM_ADMENU6 . '</a>';
605: $ret = $navigation . '<br><br>' . $ret;
606: }
607:
608: return $ret;
609: }
610: }
611: