X-Cart: shopping cart software

X-Cart forums (https://forum.x-cart.com/index.php)
-   Dev Questions (https://forum.x-cart.com/forumdisplay.php?f=20)
-   -   Sort Users Online statistics (https://forum.x-cart.com/showthread.php?t=54861)

Torres 08-01-2010 09:20 PM

Sort Users Online statistics
 
I'm not sure why I can't sort in the Statistics -> Users Online screen, but it was driving me crazy each time I used it. In anycase, this is what I did to sort it by "Last Entry" Date:

Create a new file called modifier.sortby.php with the following code, and place it in your \include\lib\smarty\plugins\ folder.

PHP Code:

<?php
#
# sorts an array of named arrays by the supplied fields
#   code by dholmes at jccc d0t net
#   taken from http://au.php.net/function.uasort
# modified by cablehead, messju and pscs at http://www.phpinsider.com/smarty-forum

function array_sort_by_fields(&$data$sortby){
      static 
$sort_funcs = array();

    if (empty(
$sort_funcs[$sortby]))
    {
        
$code "\$c=0;";
        foreach (
split(','$sortby) as $key)
        {
           
$d '1';
              if (
substr($key01) == '-')
              {
                 
$d '-1';
                 
$key substr($key1);
              }
              if (
substr($key01) == '#')
              {
                 
$key substr($key1);
               
$code .= "if ( ( \$c = (\$a['$key'] - \$b['$key'])) != 0 ) return $d * \$c;\n";
              }
              else
              {
               
$code .= "if ( (\$c = strcasecmp(\$a['$key'],\$b['$key'])) != 0 ) return $d * \$c;\n";
            }
        }
        
$code .= 'return $c;';
        
$sort_func $sort_funcs[$sortby] = create_function('$a, $b'$code);
    }
    else
    {
        
$sort_func $sort_funcs[$sortby];
    }
    
uasort($data$sort_func);
}

#
# Modifier: sortby - allows arrays of named arrays to be sorted by a given field
#
function smarty_modifier_sortby($arrData,$sortfields) {
   
array_sort_by_fields($arrData,$sortfields);
   return 
$arrData;
}

$smarty->register_modifier"sortby""smarty_modifier_sortby" );
?>



Next, locate the following line in \skin1\modules\Users_online\stats.tpl:

PHP Code:

{foreach from=$statistics item=v


Change it to this:

PHP Code:

{foreach from=$statistics|@sortby:"-current_date" item=v


That's it. This will sort the "Users online" by last entry date in descending order. If you want it in ascending order, just remove the minus sign or replace it with a # sign. You can sort by multiple fields by separating them with a comma.


All times are GMT -8. The time now is 06:34 AM.

Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.