PHP Classes

File: htdocs/class/smarty/xoops_plugins/function.xoInboxCount.php

Recommend this page to a friend!
  Classes of Michael Beck   Xoops 2.5   htdocs/class/smarty/xoops_plugins/function.xoInboxCount.php   Download  
File: htdocs/class/smarty/xoops_plugins/function.xoInboxCount.php
Role: Example script
Content type: text/plain
Description: Example script
Class: Xoops 2.5
Modular content management publication system
Author: By
Last change:
Date: 7 years ago
Size: 1,853 bytes
 

Contents

Class file image Download
<?php

/**
 * xoInboxCount lets templates access private message inbox statistics for the current user
 *
 * Example: <{xoInboxCount assign='unread_count' total='inbox_total'}>
 *
 * Both assign and total parameters are optional. If neither is specified the unread count is displayed.
 * - assign = variable name to assign with the current unread message count
 * - total = variable name to assign with the current inbox total
 *
 * @param $params
 * @param $smarty
 * @return null
 */
function smarty_function_xoInboxCount($params, &$smarty)
{
    global
$xoopsUser;

    if (!isset(
$xoopsUser) || !is_object($xoopsUser)) {
        return
null;
    }
   
$time = time();
    if (isset(
$_SESSION['xoops_inbox_count']) && @$_SESSION['xoops_inbox_count_expire'] > $time) {
       
$totals['assign'] = (int)$_SESSION['xoops_inbox_count'];
       
$totals['total'] = (int)$_SESSION['xoops_inbox_total'];
    } else {
       
$pm_handler = xoops_getHandler('privmessage');

       
$xoopsPreload = XoopsPreload::getInstance();
       
$xoopsPreload->triggerEvent('core.class.smarty.xoops_plugins.xoinboxcount', array($pm_handler));

       
$criteria = new CriteriaCompo(new Criteria('to_userid', $xoopsUser->getVar('uid')));
       
$totals['total'] = $pm_handler->getCount($criteria);

       
$criteria->add(new Criteria('read_msg', 0));
       
$totals['assign'] = $pm_handler->getCount($criteria);

       
$_SESSION['xoops_inbox_count'] = $totals['assign'];
       
$_SESSION['xoops_inbox_total'] = $totals['total'];
       
$_SESSION['xoops_inbox_count_expire'] = $time + 60;
    }

   
$printCount = true;
    foreach (
$totals as $key => $count) {
        if (!empty(
$params[$key])) {
           
$smarty->assign($params[$key], $count);
           
$printCount = false;
        }
    }
    if (
$printCount) {
        echo
$totals['assign'];
    }
}