Index: /trunk/include/functions_user.inc.php
===================================================================
--- /trunk/include/functions_user.inc.php	(revision 21800)
+++ /trunk/include/functions_user.inc.php	(revision 21801)
@@ -460,10 +460,12 @@
 INSERT IGNORE INTO '.USER_CACHE_TABLE.'
   (user_id, need_update, cache_update_time, forbidden_categories, nb_total_images,
+    last_photo_date,
     image_access_type, image_access_list)
   VALUES
   ('.$userdata['id'].',\''.boolean_to_string($userdata['need_update']).'\','
   .$userdata['cache_update_time'].',\''
-  .$userdata['forbidden_categories'].'\','.$userdata['nb_total_images'].',\''
-  .$userdata['image_access_type'].'\',\''.$userdata['image_access_list'].'\')';
+  .$userdata['forbidden_categories'].'\','.$userdata['nb_total_images'].','.
+  (empty($userdata['last_photo_date']) ? 'NULL': '\''.$userdata['last_photo_date'].'\'').
+  ',\''.$userdata['image_access_type'].'\',\''.$userdata['image_access_list'].'\')';
       pwg_query($query);
     }
@@ -679,5 +681,5 @@
  * @return array
  */
-function get_computed_categories($userdata, $filter_days=null)
+function get_computed_categories(&$userdata, $filter_days=null)
 {
   $query = 'SELECT c.id AS cat_id, global_rank';
@@ -703,8 +705,9 @@
 
   $query.= '
-  GROUP BY c.id, c.global_rank';
+  GROUP BY c.id';
 
   $result = pwg_query($query);
 
+  $userdata['last_photo_date'] = null;
   $cats = array();
   while ($row = pwg_db_fetch_assoc($result))
@@ -714,4 +717,8 @@
     $row['count_images'] = (int)$row['nb_images'];
     $row['max_date_last'] = $row['date_last'];
+    if ($row['date_last'] > $userdata['last_photo_date'])
+    {
+      $userdata['last_photo_date'] = $row['date_last'];
+    }
 
     $cats += array($row['cat_id'] => $row);
@@ -1516,5 +1523,5 @@
             $sql_list[]=$table_prefix.'level<='.$user['level'];
           }
-          else if ( !empty($user['image_access_list']) and !empty($user['image_access_type']) )
+          elseif ( !empty($user['image_access_list']) and !empty($user['image_access_type']) )
           {
             $sql_list[]=$field_name.' '.$user['image_access_type']
Index: /trunk/install/db/135-database.php
===================================================================
--- /trunk/install/db/135-database.php	(revision 21801)
+++ /trunk/install/db/135-database.php	(revision 21801)
@@ -0,0 +1,47 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+defined('PHPWG_ROOT_PATH') or die('Hacking attempt!');
+
+$upgrade_description = 'add nb available comments/tags';
+
+$query = 'ALTER TABLE '.USER_INFOS_TABLE.'
+ADD PRIMARY KEY (`user_id`) 
+, DROP INDEX `user_infos_ui1`';
+pwg_query($query);
+
+$query = 'ALTER TABLE '.USER_CACHE_TABLE.'
+ ADD COLUMN `last_photo_date` datetime DEFAULT NULL AFTER `nb_total_images`';
+pwg_query($query);
+invalidate_user_cache();
+
+$query = 'ALTER TABLE '.USER_CACHE_TABLE.'
+ ADD COLUMN `nb_available_tags` INT(5) DEFAULT NULL AFTER `last_photo_date`';
+pwg_query($query);
+
+$query = 'ALTER TABLE '.USER_CACHE_TABLE.'
+ ADD COLUMN `nb_available_comments` INT(5) DEFAULT NULL AFTER `nb_available_tags`';
+pwg_query($query);
+
+echo "\n".$upgrade_description."\n";
+?>
Index: /trunk/install/piwigo_structure-mysql.sql
===================================================================
--- /trunk/install/piwigo_structure-mysql.sql	(revision 21800)
+++ /trunk/install/piwigo_structure-mysql.sql	(revision 21801)
@@ -353,4 +353,7 @@
   `forbidden_categories` mediumtext,
   `nb_total_images` mediumint(8) unsigned default NULL,
+  `last_photo_date` datetime DEFAULT NULL,
+  `nb_available_tags` INT(5) DEFAULT NULL,
+  `nb_available_comments` INT(5) DEFAULT NULL
   `image_access_type` enum('NOT IN','IN') NOT NULL default 'NOT IN',
   `image_access_list` mediumtext default NULL,
@@ -417,5 +420,5 @@
   `level` tinyint unsigned NOT NULL default '0',
   `activation_key` char(20) default NULL,
-  UNIQUE KEY `user_infos_ui1` (`user_id`)
+  PRIMARY KEY (`user_id`)
 ) ENGINE=MyISAM;
 
