1
PatTang
Multimenu PM Inbox Count
  • 2008/3/10 3:25

  • PatTang

  • Just popping in

  • Posts: 9

  • Since: 2008/3/8 4


I have created a User Menu same as the default but I need the In-box message count to show in a different colour from the rest of the link text, like it does in the default menu it shows red so it stands out.
Also i wish to show the logged in Display name in the menu, i can show ID but thats just a number.

Using 2.2.6

2
blueteen
Re: Multimenu PM Inbox Count
  • 2008/3/10 9:14

  • blueteen

  • Quite a regular

  • Posts: 379

  • Since: 2004/7/16


Hello,
in your menu, you can use something like this :
PM <font color="red">({pm_new})</font>

Same with {pm_total}

For your second question, you can modify multimenu's code to create your own variable (to display name instead of user_id).

Here's a file with this new variable {user_name} : /modules/multiMenu/blocks/multimenu_functions.php
Based on multimenu 1.9 code (rc1 but really stable since months).

<?php
/**
* XOOPS - PHP Content Management System
* Copyright (c) 2001 - 2006 <https://xoops.org/>
*
* Module: multiMenu 1.90
* Licence : GPL
* Authors :
*           - solo (http://www.wolfpackclan.com/wolfactory)
*            - herve
*            - blueteen
*            - DuGris
*/

function multimenu_makelink( $options, $myrow ) {
    global 
$xoopsUser, $xoopsConfig;
    global 
$columns_limit, $columns_limit_drop, $align;

    
$myts =& MyTextSanitizer::getInstance();
    
$imenu['submenu'] = $myrow['submenu'];

    
///////////////////////// Create Titles /////////////////////////
    // Link title
    
if ( eregi('{alt}', $myrow['title']) )  {
        
$titles = explode( '{alt}', $myrow['title'] );
        
$title = $myts->makeTareaData4Show($titles[0]);
        
$alt_title = strip_tags( $myts->makeTareaData4Show( $titles[1] ) );
     } else {
        
$title = $myts->makeTareaData4Show($myrow['title']);
        
$alt_title = strip_tags($myts->makeTareaData4Show($myrow['title']));
    }

    if ( ((
$options[0] == 'dyn_02' OR $options[0] == 'dyn_03' )
    AND ( 
$myrow['submenu'] == 1  OR $myrow['submenu'] == 2 ) ) OR $options[0] == 'dyn_06' OR $options[0] == 'dyn_07' OR $options[0] == 'dyn_10' )
    { 
$title = addslashes($title);  $alt_title = addslashes($alt_title); }  // Get ride of special characters which cause dynamic's menu crash

    // If link title is too long...
    
if ( $options[4] ) {
         
//if ( $options[0] == 'dyn_06') { $title = strip_tags($title); } //Get ride of html if context menu
        
if (strlen($title) >= $options[5]) {
            
$mm_title = $myts->makeTboxData4Show(substr($title,0,($options[5]-1)))."...";
        } else {
            
$mm_title = $myts->makeTareaData4Show($title);
        }
        
$imenu['title'] = $mm_title;
    } else {
        
$imenu['title'] = '';
    }

    
// PM detection and conversion
    
if ( eregi("{pm_new}", $title) || eregi("{pm_readed}", $title) || eregi("{pm_total}", $title) || eregi("{user_id}", $title) || eregi("{user_name}", $title) ) {  //xoops username
        
$new_messages = 0;
        
$old_messages = 0;
        
$som = 0;
        
$user_id = 0;
        
$user_name = '';//xoops username
        
if (is_object($xoopsUser)) {
            
$user_id = $xoopsUser->getVar('uid');
            
$user_name = XoopsUser::getUnameFromId($user_id);//xoops username
            
$pm_handler =& xoops_gethandler('privmessage');
            
$uid = $xoopsUser->getVar('uid');
            
$criteria_new = new CriteriaCompo(new Criteria('read_msg', 0));
            
$criteria_new->add(new Criteria('to_userid', $xoopsUser->getVar('uid')));
            
$new_messages = $pm_handler->getCount($criteria_new);

            
$criteria_old = new CriteriaCompo(new Criteria('read_msg', 1));
            
$criteria_old->add(new Criteria('to_userid', $xoopsUser->getVar('uid')));
            
$old_messages = $pm_handler->getCount($criteria_old);
            
$som =  $old_messages +  $new_messages;

            
$title = preg_replace('/{pm_new}/',     $new_messages,     $title);
            
$title = preg_replace('/{pm_readed}/',     $old_messages,     $title);
            
$title = preg_replace('/{pm_total}/',     $som,         $title);
            
$title = preg_replace('/{user_id}/',     $user_id,         $title);
            
$title = preg_replace('/{user_name}/',     $user_name,         $title);//xoops username

            
$imenu['title'] = $title;

        } else {
            
$imenu['title'] = 'Message';
        }

        
//    $links = XOOPS_URL."/viewpmsg.php"; // Unquote if you want to automatically send to the PM box
    
}

    
// Create and remove html for alt title
    // $alt_title = strip_tags($myts->makeTareaData4Show($title));
    
$imenu['alt_title'] = $alt_title;

    if (
is_object($xoopsUser))    {
        
$user_id = $xoopsUser->getVar('uid');
        
$user_name = XoopsUser::getUnameFromId($user_id);//xoops username
    
}

    
//gère ces balises PM dans le title et le alt (pour les blocs)
    
if ( eregi("{pm_new}", $imenu['alt_title']) || eregi("{pm_readed}", $imenu['alt_title']) ||
         
eregi("{pm_total}", $imenu['alt_title']) || eregi("{user_id}", $imenu['alt_title']) || eregi("{user_name}", $imenu['alt_title']) ) {      //xoops username

        
$imenu['alt_title'] = preg_replace('/{pm_new}/', $new_messages, $imenu['alt_title']);
        
$imenu['alt_title'] = preg_replace('/{pm_readed}/', $old_messages, $imenu['alt_title']);
        
$imenu['alt_title'] = preg_replace('/{pm_total}/', $som, $imenu['alt_title']);
        
$imenu['alt_title'] = preg_replace('/{user_id}/', $user_id, $imenu['alt_title']);
        
$imenu['alt_title'] = preg_replace('/{user_name}/', $user_name, $imenu['alt_title']);
    }
    
//fin gestion de ces balises PM dans le title et le alt (pour les blocs)


    ///////////////////////// Create urls /////////////////////////
    // Link url
    
if ($myrow['link']) {
        
$user_id = 0;
        
$user_name = '';//xoops username
        
if (is_object($xoopsUser)) {
            
$user_id = $xoopsUser->getVar('uid');
            
$user_name = XoopsUser::getUnameFromId($user_id);//xoops username
            
}

        
// Link Type
        
if ((eregi("mailto:", $myrow['link'])) || (eregi("http://", $myrow['link']))  ||
            (
eregi("https://", $myrow['link'])) || (eregi("file://", $myrow['link']))  || (eregi("ftp://", $myrow['link']))) {

            
$link = $myrow['link'];
            
$link = preg_replace('/{user_id}/', $user_id, $link);
            
$link = preg_replace('/{user_name}/', $user_name, $link);//xoops username
        
} else {
            
$link = XOOPS_URL."/".$myrow['link'];
            
$link = preg_replace('/{user_id}/', $user_id, $link);
            
$link = preg_replace('/{user_name}/', $user_name, $link);//xoops username
        
}

        
// Target function
        
if ($myrow['target'] != '_self') {
            
$target = 'target="'.$myrow['target'].'" ';
        } else {
            
$target = ' ';
        }
        
$imenu['target'] = $target;
        
$imenu['target_context'] = $myrow['target']; // utilisé dans le menu contextuel 2

        // Create link
        
$imenu['link'] = '<a href="'.$link.'" '.$target.'title="'.$alt_title.'">';
        
$imenu['linkurl'] = $link;
        
$imenu['a'] = '</a>';
    } else {
        
$imenu['link'] = '';
        
$imenu['linkurl'] = '';
        
$imenu['a'] = '';
    }

    
///////////////////////// Create images /////////////////////////
    // Create image
    
if( $myrow['imageurl'] AND $options[6] ) {

//        Image type : relative or absolute link
/*
        if ((eregi("http://", $myrow['imageurl'])) || (eregi("file://", $myrow['imageurl'])) || (eregi("https://", $myrow['imageurl']))) {
            $image = $myrow['imageurl'];
        } else {
*/
            
$image = XOOPS_URL.'/uploads/multiMenu/'.$myrow['imageurl'];
/*
        }
*/

        // Theme and module tag replace
        
$image = str_replace('{theme}', $xoopsConfig['theme_set'], $image);
        if ( !empty(
$xoopsModule) ) {
               
$image = str_replace('{module}', $xoopsModule->getVar('dirname'), $image); } else { $image = str_replace('{module}', 'default', $image);
        }

        
// Image resize if bigger
        
if     ( $options[7] == '' ) {
            
$image_width = '';
            
$width = '1';
        } else {
            
$image_size = getimagesize("$image");
            
$width     = $image_size[0];
            if (
$options[1] <= $width) {
                
$image_width = 'width="'.$options[7].'" ';
            } else {
                
$image_width = 'width="'.$width.'" ';
            }
        }

        
// Create image
        
$imenu['image'] = '<img src="'.$image.'" '.$image_width.'alt="'.$alt_title.'" '.$align.' style="vertical-align:middle;" />';
        
$imenu['imageurl'] = $image;

        if ( !
$width ) {
            
$imenu['image'] = '<img src="'.XOOPS_URL.'/modules/multiMenu/images/error.gif" '.$image_width.'alt="'.$alt_title.'" '.$align.' style="vertical-align:middle;" />';
        }
    } else {
        
$imenu['image'] = "";
    }

    return 
$imenu;
}

?>

3
PatTang
Re: Multimenu PM Inbox Count
  • 2008/3/10 9:54

  • PatTang

  • Just popping in

  • Posts: 9

  • Since: 2008/3/8 4


Message inbox color works perfect.
Will try out other mod soon.
Thank you very much