Skip to content

Instantly share code, notes, and snippets.

@nao-pon
Created June 8, 2012 07:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nao-pon/2894248 to your computer and use it in GitHub Desktop.
Save nao-pon/2894248 to your computer and use it in GitHub Desktop.
Index: html/modules/multiMenu/class/getMultiMenu.class.php
===================================================================
--- html/modules/multiMenu/class/getMultiMenu.class.php (revision 570)
+++ html/modules/multiMenu/class/getMultiMenu.class.php (working copy)
@@ -7,19 +7,34 @@
*/
class getMultiMenu {
var $block = array();
+
+ private $db;
+ private $user;
+ private $mdl;
+
+ function __construct() {
+ $root =& XCube_Root::getSingleton();
- function getMultiMenu(){
+ $this->user =& $root->mContext->mXoopsUser;
+ $this->db =& $root->mController->mDB;
+ if (is_object($root->mContext->mModule)) {
+ $this->mdl =& $root->mContext->mModule->mXoopsModule;
+ } else {
+ $this->mdl = NULL;
+ }
}
+
function getblock( $options, $db_name ) {
- global $xoopsDB, $xoopsUser, $xoopsModule;
$myts =& MyTextSanitizer::getInstance();
$block = array();
$inum = 0;
- $group = is_object($xoopsUser) ? $xoopsUser->getGroups() : array(XOOPS_GROUP_ANONYMOUS);
- $db = $xoopsDB->prefix( $db_name );
- $result = $xoopsDB->query("SELECT id, groups, link, title, target FROM ".$db." WHERE hide=0 ORDER BY weight ASC");
- while ( $myrow = $xoopsDB->fetchArray($result) ) {
+ $group = is_object($this->user) ? $this->user->getGroups() : array(XOOPS_GROUP_ANONYMOUS);
+ $db = $this->db->prefix( $db_name );
+ $sql = "SELECT id, groups, link, title, target FROM ".$db." WHERE hide=0 ORDER BY weight ASC";
+ $result = $this->db->query($sql);
+ $parent_active = false;
+ while ( $myrow = $this->db->fetchArray($result) ) {
//$title = $myts->makeTboxData4Show($myrow["title"]);
$title = $myts->stripSlashesGPC($myrow["title"]); // by bluemoon
if ( !XOOPS_USE_MULTIBYTES ) {
@@ -28,164 +43,174 @@
}
}
$title = preg_replace("/\[XOOPS_URL\]/",XOOPS_URL,$title);
+ $myrow['link'] = preg_replace("/\[XOOPS_URL\]/",XOOPS_URL,$myrow['link']);
+ $myrow['link'] = $this->replace_userinfo($myrow['link']);
$groups = explode(" ",$myrow['groups']);
if (count(array_intersect($group,$groups)) > 0) {
- // hacked by nobunobu start
- if (preg_match("/^[\s\-].*/",$myrow['link'])) {
- $isub =count($block['contents'][$inum-1]['sublinks']);
- if ($parent_active) {
- $block['contents'][$inum-1]['sublinks'][$isub]['name'] = $title;
- $link = preg_replace("/^[\s\-]/","",$myrow['link']);
-//fix by domifara eregi -> preg_match for php5.3+
- if (preg_match("/^\[([a-z0-9_\-]+)\]((.)*)$/i", $link, $moduledir)) {
+ $imenu = array();
+ $imenu['id'] = $myrow['id'];
+ $imenu['title'] = $title;
+ $imenu['target'] = $myrow['target'];
+ $imenu['sublinks'] = array();
+ $imenu['link'] = '';
+ $mid = 0;
+ $head = $myrow['link'][0];
+ switch($head) {
+ case ' ':
+ case '-':
+ // hacked by nobunobu start
+ $link = substr($myrow['link'], 1);
+ $isub = (isset($block['contents']))? count($block['contents'][$inum-1]['sublinks']) : 0;
+ if ($parent_active) {
+ $block['contents'][$inum-1]['sublinks'][$isub]['name'] = $title;
+ if (preg_match('/^\[([a-z0-9_\-]+)\](.*)$/i', $link, $moduledir)) {
+ $module_handler = & xoops_gethandler( 'module' );
+ $module =& $module_handler->getByDirname($moduledir[1]);
+ if ( is_object( $module ) && $module->getVar( 'isactive' ) ) {
+ $link = XOOPS_URL."/modules/".$moduledir[1]."/".$moduledir[2];
+ }
+ }
+ $block['contents'][$inum-1]['sublinks'][$isub]['url'] = $link;
+ }
+ continue 2;
+ // hacked by nobunobu end
+ break;
+ case '[':
+ // [module_name]xxxx.php?aa=aa&bb=bb
+ if (preg_match('/^\[([a-z0-9_\-]+)\](.*)$/i', $myrow['link'], $moduledir)) {
$module_handler = & xoops_gethandler( 'module' );
$module =& $module_handler->getByDirname($moduledir[1]);
if ( is_object( $module ) && $module->getVar( 'isactive' ) ) {
- $link = XOOPS_URL."/modules/".$moduledir[1]."/".$moduledir[2];
+ $mid = $module->getVar('mid');
+ $imenu['link'] = XOOPS_URL."/modules/".$moduledir[1]."/".$moduledir[2];
+ $parent_active = true;
}
}
- $block['contents'][$inum-1]['sublinks'][$isub]['url'] = $link;
- }
- continue;
- }
- // hacked by nobunobu end
- $imenu['id'] = $myrow['id'];
- $imenu['title'] = $title;
- $imenu['target'] = $myrow['target'];
- $imenu['sublinks'] = array();
-
- // [module_name]xxxx.php?aa=aa&bb=bb
-//fix by domifara eregi -> preg_match for php5.3+
- if (preg_match("/^\[([a-z0-9_\-]+)\]((.)*)$/i", $myrow['link'], $moduledir)) {
- $module_handler = & xoops_gethandler( 'module' );
- $module =& $module_handler->getByDirname($moduledir[1]);
- if ( is_object( $module ) && $module->getVar( 'isactive' ) ) {
- $imenu['link'] = XOOPS_URL."/modules/".$moduledir[1]."/".$moduledir[2];
- $imenu['mid'] = $module->mid();
- $parent_active = true;
- }
-
- // +[module_name]xxxx.php?aa=aa&bb=bb view submenu
-//fix by domifara eregi -> preg_match for php5.3+
- }elseif (preg_match("/^\+\[([a-z0-9_\-]+)\]((.)*)$/i", $myrow['link'], $moduledir)) {
- $module_handler = & xoops_gethandler( 'module' );
- $module =& $module_handler->getByDirname($moduledir[1]);
- if ( is_object( $module ) && $module->getVar( 'isactive' ) ) {
- $imenu['link'] = XOOPS_URL."/modules/".$moduledir[1]."/".$moduledir[2];
- $imenu['mid'] = $module->mid();
- $parent_active = true;
+ break;
+ case '+':
+ // +[module_name]xxxx.php?aa=aa&bb=bb view submenu
+ if (preg_match('/^\+\[([a-z0-9_\-]+)\](.*)$/i', $myrow['link'], $moduledir)) {
+ $module_handler = & xoops_gethandler( 'module' );
+ $module =& $module_handler->getByDirname($moduledir[1]);
+ if ( is_object( $module ) && $module->getVar( 'isactive' ) ) {
+ $imenu['link'] = XOOPS_URL."/modules/".$moduledir[1]."/".$moduledir[2];
+ $parent_active = true;
- $mid = $module->getVar('mid');
- $sublinks =& $module->subLink();
- if (count($sublinks) > 0) {
- foreach($sublinks as $sublink){
- if ( !XOOPS_USE_MULTIBYTES ) {
- if (strlen($sublink['name']) >= $options[0]) {
- $sublink['name'] = $myts->makeTboxData4Show(substr($sublink['name'],0,($options[0]-1)))."...";
+ $mid = $module->getVar('mid');
+ $sublinks =& $module->subLink();
+ if (count($sublinks) > 0) {
+ foreach($sublinks as $sublink){
+ if ( !XOOPS_USE_MULTIBYTES ) {
+ if (strlen($sublink['name']) >= $options[0]) {
+ $sublink['name'] = $myts->makeTboxData4Show(substr($sublink['name'],0,($options[0]-1)))."...";
+ }
+ }
+ $imenu['sublinks'][] = array('name' => $sublink['name'], 'url' => XOOPS_URL.'/modules/'.$moduledir[1].'/'.$sublink['url'] );
}
}
- $imenu['sublinks'][] = array('name' => $sublink['name'], 'url' => XOOPS_URL.'/modules/'.$moduledir[1].'/'.$sublink['url'] );
}
}
- }
-
- // @[module_name]xxxx.php?aa=aa&bb=bb view submennu
-//fix by domifara eregi -> preg_match for php5.3+
- }elseif (preg_match("/^\@\[([a-z0-9_\-]+)\]((.)*)$/i", $myrow['link'], $moduledir)) {
- $module_handler = & xoops_gethandler( 'module' );
- $module =& $module_handler->getByDirname($moduledir[1]);
- if ( is_object( $module ) && $module->getVar( 'isactive' ) ) {
- $imenu['link'] = XOOPS_URL."/modules/".$moduledir[1]."/".$moduledir[2];
- $imenu['mid'] = $module->mid();
+ break;
+ case '@':
+ if (preg_match('/^\@\[([a-z0-9_\-]+)\](.*)$/i', $myrow['link'], $moduledir)) {
+ $module_handler = & xoops_gethandler( 'module' );
+ $module =& $module_handler->getByDirname($moduledir[1]);
+ if ( is_object( $module ) && $module->getVar( 'isactive' ) ) {
+ $imenu['link'] = XOOPS_URL."/modules/".$moduledir[1]."/".$moduledir[2];
- $mid = $module->getVar('mid');
- $sublinks =& $module->subLink();
+ $mid = $module->getVar('mid');
+ $sublinks =& $module->subLink();
- // hacked by nobunobu start
- if ( (!empty($xoopsModule)) && ($moduledir[1] == $xoopsModule->getVar('dirname')) ){
- $parent_active = true;
- if (count($sublinks) > 0) {
- foreach($sublinks as $sublink){
- if ( !XOOPS_USE_MULTIBYTES ) {
- if (strlen($sublink['name']) >= $options[0]) {
- $sublink['name'] = $myts->makeTboxData4Show(substr($sublink['name'],0,($options[0]-1)))."...";
+ // hacked by nobunobu start
+ if ( (!empty($this->mdl)) && ($moduledir[1] == $this->mdl->get('dirname')) ){
+ $parent_active = true;
+ if (count($sublinks) > 0) {
+ foreach($sublinks as $sublink){
+ if ( !XOOPS_USE_MULTIBYTES ) {
+ if (strlen($sublink['name']) >= $options[0]) {
+ $sublink['name'] = $myts->makeTboxData4Show(substr($sublink['name'],0,($options[0]-1)))."...";
+ }
+ }
+ $imenu['sublinks'][] = array('name' => $sublink['name'], 'url' => XOOPS_URL.'/modules/'.$moduledir[1].'/'.$sublink['url'] );
}
}
- $imenu['sublinks'][] = array('name' => $sublink['name'], 'url' => XOOPS_URL.'/modules/'.$moduledir[1].'/'.$sublink['url'] );
+ } else {
+ $parent_active = false;
+ // hacked by nobunobu end
}
}
- } else {
- $parent_active = false;
- // hacked by nobunobu end
}
- }
-
- // &[module_name]xxxx.php?aa=aa&bb=bb view submenu // hacked by nobunobu
-//fix by domifara eregi -> preg_match for php5.3+
- } elseif (preg_match("/^\&\[([a-z0-9_\-]+)\]((.)*)$/i", $myrow['link'], $moduledir)) {
- $module_handler = & xoops_gethandler( 'module' );
- $module =& $module_handler->getByDirname($moduledir[1]);
- if ( is_object( $module ) && $module->getVar( 'isactive' ) ) {
- $imenu['link'] = XOOPS_URL."/modules/".$moduledir[1]."/".$moduledir[2];
- $imenu['mid'] = $module->mid();
+ break;
+ case '&':
+ // &[module_name]xxxx.php?aa=aa&bb=bb view submenu // hacked by nobunobu
+ if (preg_match('/^\&\[([a-z0-9_\-]+)\](.*)$/i', $myrow['link'], $moduledir)) {
+ $module_handler = & xoops_gethandler( 'module' );
+ $module =& $module_handler->getByDirname($moduledir[1]);
+ if ( is_object( $module ) && $module->getVar( 'isactive' ) ) {
+ $imenu['link'] = XOOPS_URL."/modules/".$moduledir[1]."/".$moduledir[2];
- $mid = $module->getVar('mid');
- if ( (!empty($xoopsModule)) && ($moduledir[1] == $xoopsModule->getVar('dirname')) ){
- $parent_active = true;
- } else {
- $parent_active = false;
+ $mid = $module->getVar('mid');
+ if ( (!empty($this->mdl)) && ($moduledir[1] == $this->mdl->get('dirname')) ){
+ $parent_active = true;
+ } else {
+ $parent_active = false;
+ }
+ }
}
- }
- } else {
- $imenu['link'] = $myrow['link'];
+ break;
+ default:
+ $imenu['link'] = $myrow['link'];
}
- if (isset($imenu['link'])){
- $slash = substr( $imenu['link'], strlen($imenu['link'])-1, 1 );
- if ( $slash == '/' ) {
- $imenu['link'] .= "index.php";
+ if ($imenu['link']) {
+ if (substr($imenu['link'], -1) === '/') {
+ $imenu['link'] .= 'index.php';
}
+ if ($mid) {
+ $imenu['mid'] = $mid;
+ }
+ $block['contents'][$inum] = $imenu;
+ $inum++;
}
- $block['contents'][$inum] = $imenu;
- $inum++;
}
}
+ //var_dump($block);die;
$this->block = $block;
return $block;
}
function replace_userinfo($str) {
- global $xoopsUser;
- if ($xoopsUser){
- $str = preg_replace("/\[xoops_uid\]/",$xoopsUser->uid(),$str);
+ if (is_object($this->user)) {
+ $str = preg_replace("/\[xoops_uid\]/",$this->user->uid(),$str);
}
return $str;
}
function getModuleConfig( $name, $mid ) {
- $ret = NULL;
+ $ret = NULL;
$config_handler =& xoops_gethandler('config');
$config =& $config_handler->getConfigsByCat(0, $mid);
if ( isset($config[$name]) ) $ret = preg_split('/,|[\r\n]+/',$config[$name]);
return $ret;
}
function assign_module_css($css_file) {
- global $xoopsTpl;
-
+ $root =& XCube_Root::getSingleton();
+ $renderSystem =& $root->getRenderSystem($root->mContext->mBaseRenderSystemName);
$css_file = preg_replace("/\[XOOPS_URL\]/i",XOOPS_URL,$css_file);
- $header = '<link rel="stylesheet" type="text/css" media="all" href="'.$css_file.'" />';
- $xoopsTpl->assign('xoops_block_header', $header);
+ $header = $renderSystem->mXoopsTpl->get_template_vars('xoops_block_header');
+ $header .= '<link rel="stylesheet" type="text/css" media="all" href="'.$css_file.'" />';
+ $renderSystem->mXoopsTpl->assign('xoops_block_header', $header);
}
function assign_css() {
- $module_handler = & xoops_gethandler( 'module' );
- $module =& $module_handler->getByDirname("multiMenu");
- $mid = $module->getVar('mid');
- $css_file = $this->getModuleConfig('css_file',$mid);
- $this->assign_module_css($css_file[0]);
+ $ch=& xoops_gethandler('config');
+ $mconf = $ch->getConfigsByDirname('multiMenu');
+ $css_file = $mconf['css_file'];
+ if (! empty($css_file)) {
+ $this->assign_module_css($css_file);
+ }
}
function theme_menu($modname="multiMenu") {
- $module_handler = & xoops_gethandler( 'module' );
- $module = $module_handler->getByDirname($modname);
- $mid = $module->getVar('mid');
- $theme_menu = $this->getModuleConfig('theme_menu',$mid);
- return intval($theme_menu[0]);
+ $ch=& xoops_gethandler('config');
+ $mconf = $ch->getConfigsByDirname($modname);
+ $theme_menu = $mconf['theme_menu'];
+ return intval($theme_menu);
}
}
?>
\ No newline at end of file
Index: html/modules/multiMenu/xoops_version.php
===================================================================
--- html/modules/multiMenu/xoops_version.php (revision 570)
+++ html/modules/multiMenu/xoops_version.php (working copy)
@@ -39,7 +39,7 @@
$modversion['blocks'][1]['name'] = _IM_MULTIMENU_NAME;
$modversion['blocks'][1]['description'] = "link menu";
$modversion['blocks'][1]['show_func'] = "a_multimenu_show";
-$modversion['blocks'][1]['edit_func'] = "a_multimenu_edit";
+$modversion['blocks'][1]['edit_func'] = "b_multimenu_edit";
$modversion['blocks'][1]['options'] = "40";
$modversion['blocks'][1]['template'] = 'multimenu_block01.html';
@@ -55,7 +55,7 @@
$modversion['blocks'][3]['name'] = _IM_MULTIMENU_NAME_2;
$modversion['blocks'][3]['description'] = "link menu";
$modversion['blocks'][3]['show_func'] = "c_multimenu_show";
-$modversion['blocks'][3]['edit_func'] = "c_multimenu_edit";
+$modversion['blocks'][3]['edit_func'] = "b_multimenu_edit";
$modversion['blocks'][3]['options'] = "40";
$modversion['blocks'][3]['template'] = 'multimenu_block03.html';
@@ -63,7 +63,7 @@
$modversion['blocks'][4]['name'] = _IM_MULTIMENU_NAME_3;
$modversion['blocks'][4]['description'] = "link menu";
$modversion['blocks'][4]['show_func'] = "d_multimenu_show";
-$modversion['blocks'][4]['edit_func'] = "d_multimenu_edit";
+$modversion['blocks'][4]['edit_func'] = "b_multimenu_edit";
$modversion['blocks'][4]['options'] = "40";
$modversion['blocks'][4]['template'] = 'multimenu_block04.html';
@@ -71,7 +71,7 @@
$modversion['blocks'][5]['name'] = _IM_MULTIMENU_NAME_4;
$modversion['blocks'][5]['description'] = "link menu";
$modversion['blocks'][5]['show_func'] = "e_multimenu_show";
-$modversion['blocks'][5]['edit_func'] = "e_multimenu_edit";
+$modversion['blocks'][5]['edit_func'] = "b_multimenu_edit";
$modversion['blocks'][5]['options'] = "40";
$modversion['blocks'][5]['template'] = 'multimenu_block05.html';
@@ -79,7 +79,7 @@
$modversion['blocks'][6]['name'] = _IM_MULTIMENU_NAME_5;
$modversion['blocks'][6]['description'] = "link menu";
$modversion['blocks'][6]['show_func'] = "f_multimenu_show";
-$modversion['blocks'][6]['edit_func'] = "f_multimenu_edit";
+$modversion['blocks'][6]['edit_func'] = "b_multimenu_edit";
$modversion['blocks'][6]['options'] = "40";
$modversion['blocks'][6]['template'] = 'multimenu_block06.html';
@@ -87,7 +87,7 @@
$modversion['blocks'][7]['name'] = _IM_MULTIMENU_NAME_6;
$modversion['blocks'][7]['description'] = "link menu";
$modversion['blocks'][7]['show_func'] = "g_multimenu_show";
-$modversion['blocks'][7]['edit_func'] = "g_multimenu_edit";
+$modversion['blocks'][7]['edit_func'] = "b_multimenu_edit";
$modversion['blocks'][7]['options'] = "40";
$modversion['blocks'][7]['template'] = 'multimenu_block07.html';
@@ -95,7 +95,7 @@
$modversion['blocks'][8]['name'] = _IM_MULTIMENU_NAME_7;
$modversion['blocks'][8]['description'] = "link menu";
$modversion['blocks'][8]['show_func'] = "h_multimenu_show";
-$modversion['blocks'][8]['edit_func'] = "h_multimenu_edit";
+$modversion['blocks'][8]['edit_func'] = "b_multimenu_edit";
$modversion['blocks'][8]['options'] = "40";
$modversion['blocks'][8]['template'] = 'multimenu_block08.html';
@@ -104,7 +104,7 @@
'name' => _IM_MULTIMENU_FLOW,
'description' => "flow menu",
'show_func' => "flow_menu_show",
- 'edit_func' => "flow_menu_edit",
+ 'edit_func' => "b_multimenu_edit",
'options' => "40",
'template' => 'multimenu_block99.html'
);
Index: html/modules/multiMenu/blocks/multimenu.php
===================================================================
--- html/modules/multiMenu/blocks/multimenu.php (revision 570)
+++ html/modules/multiMenu/blocks/multimenu.php (working copy)
@@ -1,214 +1,52 @@
<?php
-if (!defined('XOOPS_ROOT_PATH')) exit();
+/*
+ * 2011/09/09 16:45
+ * Multi-Menu block function
+ * copyright(c) Yoshi Sakai at Bluemoon inc 2011
+ * GPL ver3.0 All right reserved.
+ */
function a_multimenu_show($options) {
- $block = getMultiMenu( $options, 'multimenu01' );
- return $block;
+ return b_multimenu_show_base($options, '01');
}
-function a_multimenu_edit($options) {
- $form = _BM_MULTIMENU_CHARS."&nbsp;<input type='text' name='options[]' value='".$options[0]."' />&nbsp;"._BM_MULTIMENU_LENGTH."";
- return $form;
-}
-
-
function b_multimenu_show($options) {
- $block = getMultiMenu( $options, 'multimenu02' );
- return $block;
+ return b_multimenu_show_base($options, '02');
}
-function b_multimenu_edit($options) {
- $form = _BM_MULTIMENU_CHARS."&nbsp;<input type='text' name='options[]' value='".$options[0]."' />&nbsp;"._BM_MULTIMENU_LENGTH."";
- return $form;
-}
-
-
function c_multimenu_show($options) {
- $block = getMultiMenu( $options, 'multimenu03' );
- return $block;
-}
-function c_multimenu_edit($options) {
- $form = _BM_MULTIMENU_CHARS."&nbsp;<input type='text' name='options[]' value='".$options[0]."' />&nbsp;"._BM_MULTIMENU_LENGTH."";
- return $form;
+ return b_multimenu_show_base($options, '03');
}
-
-
function d_multimenu_show($options) {
- $block = getMultiMenu( $options, 'multimenu04' );
- return $block;
+ return b_multimenu_show_base($options, '04');
}
-function d_multimenu_edit($options) {
- $form = _BM_MULTIMENU_CHARS."&nbsp;<input type='text' name='options[]' value='".$options[0]."' />&nbsp;"._BM_MULTIMENU_LENGTH."";
- return $form;
-}
-
-
function e_multimenu_show($options) {
- $block = getMultiMenu( $options, 'multimenu05' );
- return $block;
-}
-function e_multimenu_edit($options) {
- $form = _BM_MULTIMENU_CHARS."&nbsp;<input type='text' name='options[]' value='".$options[0]."' />&nbsp;"._BM_MULTIMENU_LENGTH."";
- return $form;
+ return b_multimenu_show_base($options, '05');
}
-
function f_multimenu_show($options) {
- $block = getMultiMenu( $options, 'multimenu06' );
- return $block;
-}
-function f_multimenu_edit($options) {
- $form = _BM_MULTIMENU_CHARS."&nbsp;<input type='text' name='options[]' value='".$options[0]."' />&nbsp;"._BM_MULTIMENU_LENGTH."";
- return $form;
+ return b_multimenu_show_base($options, '06');
}
-
function g_multimenu_show($options) {
- $block = getMultiMenu( $options, 'multimenu07' );
- return $block;
+ return b_multimenu_show_base($options, '07');
}
-function g_multimenu_edit($options) {
- $form = _BM_MULTIMENU_CHARS."&nbsp;<input type='text' name='options[]' value='".$options[0]."' />&nbsp;"._BM_MULTIMENU_LENGTH."";
- return $form;
-}
-
function h_multimenu_show($options) {
- $block = getMultiMenu( $options, 'multimenu08' );
- return $block;
+ return b_multimenu_show_base($options, '08');
}
-function h_multimenu_edit($options) {
- $form = _BM_MULTIMENU_CHARS."&nbsp;<input type='text' name='options[]' value='".$options[0]."' />&nbsp;"._BM_MULTIMENU_LENGTH."";
- return $form;
+function flow_menu_show($options) {
+ return b_multimenu_show_base($options, '99');
}
-function flow_menu_show($options) {
- $block = getMultiMenu( $options, 'multimenu99' );
+function b_multimenu_show_base($options, $num) {
+ include_once XOOPS_ROOT_PATH . '/modules/multiMenu/class/getMultiMenu.class.php';
+ static $gmm;
+ if (! $gmm) {
+ $gmm = new getMultiMenu();
+ $gmm->assign_css();
+ }
+ $block = $gmm->getblock( $options, 'multimenu' . $num );
return $block;
}
-function flow_menu_edit($options) {
+
+function b_multimenu_edit($options) {
$form = _BM_MULTIMENU_CHARS."&nbsp;<input type='text' name='options[]' value='".$options[0]."' />&nbsp;"._BM_MULTIMENU_LENGTH."";
return $form;
}
-
-/**
- *
- * @ MultiMenu block main function
- *
- */
-function getMultiMenu( $options, $db_name )
-{
- global $xoopsDB, $xoopsUser, $xoopsModule;
- $myts = MyTextSanitizer::getInstance();
- $block = array();
- $inum = 0;
- $group = is_object($xoopsUser) ? $xoopsUser->getGroups() : array(XOOPS_GROUP_ANONYMOUS);
- $db = $xoopsDB->prefix( $db_name );
- $result = $xoopsDB->query("SELECT groups, link, title, target FROM ".$db." WHERE hide=0 ORDER BY weight ASC");
- while ( $myrow = $xoopsDB->fetchArray($result) ) {
- $title = $myts->makeTboxData4Show($myrow["title"]);
- if ( !XOOPS_USE_MULTIBYTES ) {
- if (strlen($myrow['title']) >= $options[0]) {
- $title = $myts->makeTboxData4Show(substr($myrow['title'],0,($options[0]-1)))."...";
- }
- }
- $groups = explode(" ",$myrow['groups']);
- if (count(array_intersect($group,$groups)) > 0) {
- // hacked by nobunobu start
- if (preg_match("/^[\s\-].*/",$myrow['link']) && inum > 0) {
- $isub =count($block['contents'][$inum-1]['sublinks']);
- if ($parent_active) {
- $block['contents'][$inum-1]['sublinks'][$isub]['name'] = $title;
- $link = preg_replace("/^[\s\-]/","",$myrow['link']);
- //fix by domifara eregi -> preg_match for php5.3+
- if (preg_match("/^\[([a-z0-9_\-]+)\]((.)*)$/i", $link, $moduledir)) {
- $module_handler = xoops_gethandler( 'module' );
- $module =& $module_handler->getByDirname($moduledir[1]);
- if ( is_object( $module ) && $module->getVar( 'isactive' ) ) {
- $link = XOOPS_URL."/modules/".$moduledir[1]."/".$moduledir[2];
- }
- }
- $block['contents'][$inum-1]['sublinks'][$isub]['url'] = $link;
- }
- continue;
- }
- // hacked by nobunobu end
- $imenu['title'] = $title;
- $imenu['target'] = $myrow['target'];
- $imenu['sublinks'] = array();
- // [module_name]xxxx.php?aa=aa&bb=bb
- //fix by domifara eregi -> preg_match for php5.3+
- if (preg_match("/^\[([a-z0-9_\-]+)\]((.)*)$/i", $myrow['link'], $moduledir)) {
- $module_handler = xoops_gethandler( 'module' );
- $module = $module_handler->getByDirname($moduledir[1]);
- if ( is_object( $module ) && $module->getVar( 'isactive' ) ) {
- $imenu['link'] = XOOPS_URL."/modules/".$moduledir[1]."/".$moduledir[2];
- $parent_active = true;
- }
- // +[module_name]xxxx.php?aa=aa&bb=bb view submenu
- //fix by domifara eregi -> preg_match for php5.3+
- }elseif (preg_match("/^\+\[([a-z0-9_\-]+)\]((.)*)$/i", $myrow['link'], $moduledir)) {
- $module_handler = xoops_gethandler( 'module' );
- $module = $module_handler->getByDirname($moduledir[1]);
- if ( is_object( $module ) && $module->getVar( 'isactive' ) ) {
- $imenu['link'] = XOOPS_URL."/modules/".$moduledir[1]."/".$moduledir[2];
- $parent_active = true;
- $mid = $module->getVar('mid');
- $sublinks = $module->subLink();
- if (count($sublinks) > 0) {
- foreach($sublinks as $sublink){
- if ( !XOOPS_USE_MULTIBYTES ) {
- if (strlen($sublink['name']) >= $options[0]) {
- $sublink['name'] = $myts->makeTboxData4Show(substr($sublink['name'],0,($options[0]-1)))."...";
- }
- }
- $imenu['sublinks'][] = array('name' => $sublink['name'], 'url' => XOOPS_URL.'/modules/'.$moduledir[1].'/'.$sublink['url'] );
- }
- }
- }
- // @[module_name]xxxx.php?aa=aa&bb=bb view submennu
- //fix by domifara eregi -> preg_match for php5.3+
- }elseif (preg_match("/^\@\[([a-z0-9_\-]+)\]((.)*)$/i", $myrow['link'], $moduledir)) {
- $module_handler = xoops_gethandler( 'module' );
- $module = $module_handler->getByDirname($moduledir[1]);
- if ( is_object( $module ) && $module->getVar( 'isactive' ) ) {
- $imenu['link'] = XOOPS_URL."/modules/".$moduledir[1]."/".$moduledir[2];
- $mid = $module->getVar('mid');
- $sublinks = $module->subLink();
- // hacked by nobunobu start
- if ( (!empty($xoopsModule)) && ($moduledir[1] == $xoopsModule->getVar('dirname')) ){
- $parent_active = true;
- if (count($sublinks) > 0) {
- foreach($sublinks as $sublink){
- if ( !XOOPS_USE_MULTIBYTES ) {
- if (strlen($sublink['name']) >= $options[0]) {
- $sublink['name'] = $myts->makeTboxData4Show(substr($sublink['name'],0,($options[0]-1)))."...";
- }
- }
- $imenu['sublinks'][] = array('name' => $sublink['name'], 'url' => XOOPS_URL.'/modules/'.$moduledir[1].'/'.$sublink['url'] );
- }
- }
- } else {
- $parent_active = false;
- // hacked by nobunobu end
- }
- }
- // &[module_name]xxxx.php?aa=aa&bb=bb view submenu // hacked by nobunobu
- //fix by domifara eregi -> preg_match for php5.3+
- } elseif (preg_match("/^\&\[([a-z0-9_\-]+)\]((.)*)$/i", $myrow['link'], $moduledir)) {
- $module_handler = xoops_gethandler( 'module' );
- $module = $module_handler->getByDirname($moduledir[1]);
- if ( is_object( $module ) && $module->getVar( 'isactive' ) ) {
- $imenu['link'] = XOOPS_URL."/modules/".$moduledir[1]."/".$moduledir[2];
- $mid = $module->getVar('mid');
- if ( (!empty($xoopsModule)) && ($moduledir[1] == $xoopsModule->getVar('dirname')) ){
- $parent_active = true;
- } else {
- $parent_active = false;
- }
- }
- } else {
- $imenu['link'] = $myrow['link'];
- }
- $block['contents'][] = $imenu;
- }
- $inum++;
- }
- return $block;
-}
?>
\ No newline at end of file
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment