From e44f0b01549d3a52c5b261767c6531044d09a1a1 Mon Sep 17 00:00:00 2001
From: rvelices <rv-github@modusoptimus.com>
Date: Wed, 8 Nov 2006 03:01:28 +0000
Subject: [PATCH] - merge category_recent_cats and category_subcats into
 category_cats (a lot of common code,and now representative selection works
 for recent cats...) - some replacements of get_thumbnail_src with
 get_thumbnail_url

git-svn-id: http://piwigo.org/svn/trunk@1597 68402e56-0260-453c-a942-63ccdbb3a9ee
---
 include/calendar_monthly.class.php            |  25 ++-
 ..._subcats.inc.php => category_cats.inc.php} | 132 ++++++++------
 include/category_recent_cats.inc.php          | 162 ------------------
 include/section_init.inc.php                  |   6 +-
 4 files changed, 93 insertions(+), 232 deletions(-)
 rename include/{category_subcats.inc.php => category_cats.inc.php} (66%)
 delete mode 100644 include/category_recent_cats.inc.php

diff --git a/include/calendar_monthly.class.php b/include/calendar_monthly.class.php
index b7af6794c..0dfdbcf63 100644
--- a/include/calendar_monthly.class.php
+++ b/include/calendar_monthly.class.php
@@ -3,11 +3,10 @@
 // | PhpWebGallery - a PHP based picture gallery                           |
 // | Copyright (C) 2003-2006 PhpWebGallery Team - http://phpwebgallery.net |
 // +-----------------------------------------------------------------------+
-// | branch        : BSF (Best So Far)
-// | file          : $RCSfile$
-// | last update   : $Date: 2006-01-27 02:11:43 +0100 (ven, 27 jan 2006) $
-// | last modifier : $Author: rvelices $
-// | revision      : $Revision: 1014 $
+// | file          : $Id$
+// | last update   : $Date$
+// | last modifier : $Author$
+// | revision      : $Revision$
 // +-----------------------------------------------------------------------+
 // | 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  |
@@ -341,7 +340,7 @@ function build_month_calendar()
   {
     $page['chronology_date'][CDAY]=$day;
     $query = '
-SELECT file,tn_ext,path, width, height, DAYOFWEEK('.$this->date_field.')-1 as dow';
+SELECT id, file,tn_ext,path, width, height, DAYOFWEEK('.$this->date_field.')-1 as dow';
     $query.= $this->inner_sql;
     $query.= $this->get_date_where();
     $query.= '
@@ -349,8 +348,8 @@ SELECT file,tn_ext,path, width, height, DAYOFWEEK('.$this->date_field.')-1 as do
   LIMIT 0,1';
     unset ( $page['chronology_date'][CDAY] );
 
-    $row = mysql_fetch_array(pwg_query($query));
-    $items[$day]['tn_path'] = get_thumbnail_src($row['path'], @$row['tn_ext']);
+    $row = mysql_fetch_assoc(pwg_query($query));
+    $items[$day]['tn_url'] = get_thumbnail_url($row);
     $items[$day]['file'] = $row['file'];
     $items[$day]['path'] = $row['path'];
     $items[$day]['tn_ext'] = @$row['tn_ext'];
@@ -448,9 +447,7 @@ SELECT file,tn_ext,path, width, height, DAYOFWEEK('.$this->date_field.')-1 as do
         }
         else
         {// item not an image (tn is either mime type or an image)
-          $thumb = get_thumbnail_src(
-                $items[$day]['path'], @$items[$day]['tn_ext'], false
-              );
+          $thumb = get_thumbnail_path($items[$day]);
           $tn_size = @getimagesize($thumb);
         }
         $tn_width = $tn_size[0];
@@ -507,11 +504,11 @@ SELECT file,tn_ext,path, width, height, DAYOFWEEK('.$this->date_field.')-1 as do
             )
           );
         $alt = $wday_labels[$dow] . ' ' . $day.
-               ' ('.$items[$day]['nb_images'].')';
+               ' ('.sprintf("%d ".l10n('pictures'), $items[$day]['nb_images']).')';
         $template->assign_block_vars('calendar.thumbnails.row.col.full',
               array(
                 'LABEL'     => $day,
-                'IMAGE'     => $items[$day]['tn_path'],
+                'IMAGE'     => $items[$day]['tn_url'],
                 'U_IMG_LINK'=> $url,
                 'STYLE'     => $css_style,
                 'IMG_WIDTH' => $img_width,
@@ -553,7 +550,7 @@ SELECT file,tn_ext,path, width, height, DAYOFWEEK('.$this->date_field.')-1 as do
       $template->assign_block_vars(
           'thumbnails.line.thumbnail',
           array(
-            'IMAGE'=>$data['tn_path'],
+            'IMAGE'=>$data['tn_url'],
             'IMAGE_ALT'=>$data['file'],
             'IMAGE_TITLE'=>$thumbnail_title,
             'U_IMG_LINK'=>$url
diff --git a/include/category_subcats.inc.php b/include/category_cats.inc.php
similarity index 66%
rename from include/category_subcats.inc.php
rename to include/category_cats.inc.php
index 7800e6319..9a3cccceb 100644
--- a/include/category_subcats.inc.php
+++ b/include/category_cats.inc.php
@@ -2,10 +2,10 @@
 // +-----------------------------------------------------------------------+
 // | PhpWebGallery - a PHP based picture gallery                           |
 // | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
-// | Copyright (C) 2003-2005 PhpWebGallery Team - http://phpwebgallery.net |
+// | Copyright (C) 2003-2006 PhpWebGallery Team - http://phpwebgallery.net |
 // +-----------------------------------------------------------------------+
 // | branch        : BSF (Best So Far)
-// | file          : $RCSfile$
+// | file          : $Id$
 // | last update   : $Date$
 // | last modifier : $Author$
 // | revision      : $Revision$
@@ -27,36 +27,45 @@
 
 /**
  * This file is included by the main page to show thumbnails for a category
- * that have only subcategories
+ * that have only subcategories or to show recent categories
  *
  */
 
-$query = '
-SELECT id, name, date_last, representative_picture_id, comment, nb_images
+if ($page['section']=='recent_cats')
+{
+  $query = '
+SELECT id,name,date_last,representative_picture_id,comment,nb_images,uppercats
+  FROM '.CATEGORIES_TABLE.'
+  WHERE date_last > SUBDATE(
+    CURRENT_DATE,INTERVAL '.$user['recent_period'].' DAY
+  )
+  AND id NOT IN ('.$user['forbidden_categories'].')';
+}
+else
+{
+  $query = '
+SELECT id,name,date_last,representative_picture_id,comment,nb_images
   FROM '.CATEGORIES_TABLE.'
   WHERE id_uppercat '.
   (!isset($page['category']) ? 'is NULL' : '= '.$page['category']).'
     AND id NOT IN ('.$user['forbidden_categories'].')
   ORDER BY rank
 ;';
+}
+
 $result = pwg_query($query);
-
-// $conf['allow_random_representative']
-
 $categories = array();
 $image_ids = array();
 
-while ($row = mysql_fetch_array($result))
+while ($row = mysql_fetch_assoc($result))
 {
   if (isset($row['representative_picture_id'])
       and is_numeric($row['representative_picture_id']))
-  {
-    // if a representative picture is set, it has priority
+  { // if a representative picture is set, it has priority
     $image_id = $row['representative_picture_id'];
   }
   else if ($conf['allow_random_representative'])
-  {
-    // searching a random representant among elements in sub-categories
+  {// searching a random representant among elements in sub-categories
     $query = '
 SELECT image_id
   FROM '.CATEGORIES_TABLE.' AS c INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic
@@ -67,14 +76,13 @@ SELECT image_id
   LIMIT 0,1
 ;';
     $subresult = pwg_query($query);
-    if (mysql_num_rows($result) > 0)
+    if (mysql_num_rows($subresult) > 0)
     {
       list($image_id) = mysql_fetch_row($subresult);
     }
   }
   else
-  {
-    // searching a random representant among representant of sub-categories
+  { // searching a random representant among representant of sub-categories
     $query = '
 SELECT representative_picture_id
   FROM '.CATEGORIES_TABLE.'
@@ -91,33 +99,16 @@ SELECT representative_picture_id
     }
   }
 
-  $comment = null;
-  if (isset($row['comment']))
-  {
-    $comment = strip_tags($row['comment'], '<a><br><p><b><i><small><strong><font>');
-  }
-
   if (isset($image_id))
   {
-    array_push(
-      $categories,
-      array(
-        'category'    => $row['id'],
-        'picture'     => $image_id,
-        'name'        => $row['name'],
-        'date_last'   => @$row['date_last'],
-        'comment'     => $comment,
-        'nb_images'   => $row['nb_images'],
-        )
-      );
-
+    $row['representative_picture_id'] = $image_id;
     array_push($image_ids, $image_id);
+    array_push($categories, $row);
   }
-
   unset($image_id);
 }
 
-if (count($image_ids) > 0)
+if (count($categories) > 0)
 {
   $thumbnail_src_of = array();
 
@@ -127,12 +118,14 @@ SELECT id, path, tn_ext
   WHERE id IN ('.implode(',', $image_ids).')
 ;';
   $result = pwg_query($query);
-  while ($row = mysql_fetch_array($result))
+  while ($row = mysql_fetch_assoc($result))
   {
-    $thumbnail_src_of[$row['id']] =
-      get_thumbnail_src($row['path'], @$row['tn_ext']);
+    $thumbnail_src_of[$row['id']] = get_thumbnail_url($row);
   }
+}
 
+if (count($categories) > 0)
+{
   if ($conf['subcatify'])
   {
     $template->set_filenames(
@@ -141,27 +134,37 @@ SELECT id, path, tn_ext
         )
       );
 
-    $template->assign_block_vars('categories', array());
-
     foreach ($categories as $category)
     {
+      $comment = strip_tags(@$category['comment'], '<a><br><p><b><i><small><strong><font>');
+      if ($page['section']=='recent_cats')
+      {
+        $name = get_cat_display_name_cache($category['uppercats'], null, false);
+        $icon_ts = '';
+      }
+      else
+      {
+        $name = $category['name'];
+        $icon_ts = get_icon(@$category['date_last']);
+      }
+
       $template->assign_block_vars(
         'categories.category',
         array(
-          'SRC'   => $thumbnail_src_of[ $category['picture'] ],
+          'SRC'   => $thumbnail_src_of[$category['representative_picture_id']],
           'ALT'   => $category['name'],
           'TITLE' => $lang['hint_category'],
-          'ICON'  => get_icon(@$category['date_last']),
+          'ICON'  => $icon_ts,
 
-          'URL' => make_index_url(
+          'URL'   => make_index_url(
             array(
-              'category' => $category['category'],
+              'category' => $category['id'],
               'cat_name' => $category['name'],
               )
             ),
-          'NAME' => $category['name'],
           'CAPTION_NB_IMAGES' => (($category['nb_images'] == 0) ? '' : sprintf("%d ".l10n('pictures'), $category['nb_images'])),
-          'DESCRIPTION' => @$category['comment'],
+          'DESCRIPTION' => @$comment,
+          'NAME'  => $name,
           )
         );
     }
@@ -171,36 +174,53 @@ SELECT id, path, tn_ext
   else
   {
     $template->set_filenames( array( 'thumbnails' => 'thumbnails.tpl',));
-    $template->assign_block_vars('thumbnails', array());
     // first line
     $template->assign_block_vars('thumbnails.line', array());
     // current row displayed
     $row_number = 0;
 
+    if ($page['section']=='recent_cats')
+    {
+      $old_level_separator = $conf['level_separator'];
+      $conf['level_separator'] = '<br />';
+    }
+
     foreach ($categories as $category)
     {
       $template->assign_block_vars(
         'thumbnails.line.thumbnail',
         array(
-          'IMAGE'       => $thumbnail_src_of[ $category['picture'] ],
+          'IMAGE'       => $thumbnail_src_of[ $category['representative_picture_id'] ],
           'IMAGE_ALT'   => $category['name'],
           'IMAGE_TITLE' => $lang['hint_category'],
-          'IMAGE_TS'    => get_icon(@$category['date_last']),
 
           'U_IMG_LINK'  => make_index_url(
             array(
-              'category' => $category['category'],
+              'category' => $category['id'],
               'cat_name' => $category['name'],
               )
             ),
           'CLASS'       => 'thumbCat',
           )
         );
-
+      if ($page['section']=='recent_cats')
+      {
+        $name = get_cat_display_name_cache($category['uppercats'], null, false);
+      }
+      else
+      {
+        $name = $category['name'];
+        $template->merge_block_vars(
+          'thumbnails.line.thumbnail',
+          array(
+            'IMAGE_TS'    => get_icon(@$category['date_last']),
+           )
+         );
+      }
       $template->assign_block_vars(
         'thumbnails.line.thumbnail.category_name',
         array(
-          'NAME' => $category['name']
+          'NAME' => $name
           )
         );
 
@@ -211,6 +231,12 @@ SELECT id, path, tn_ext
         $row_number = 0;
       }
     }
+
+    if ( isset($old_level_separator) )
+    {
+      $conf['level_separator']=$old_level_separator;
+    }
+
     $template->assign_var_from_handle('THUMBNAILS', 'thumbnails');
   }
 }
diff --git a/include/category_recent_cats.inc.php b/include/category_recent_cats.inc.php
deleted file mode 100644
index 6d4cf86f3..000000000
--- a/include/category_recent_cats.inc.php
+++ /dev/null
@@ -1,162 +0,0 @@
-<?php
-// +-----------------------------------------------------------------------+
-// | PhpWebGallery - a PHP based picture gallery                           |
-// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
-// | Copyright (C) 2003-2005 PhpWebGallery Team - http://phpwebgallery.net |
-// +-----------------------------------------------------------------------+
-// | branch        : BSF (Best So Far)
-// | file          : $RCSfile$
-// | last update   : $Date$
-// | last modifier : $Author$
-// | revision      : $Revision$
-// +-----------------------------------------------------------------------+
-// | 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.                                                                  |
-// +-----------------------------------------------------------------------+
-
-/**
- * This file is included by the main page to show thumbnails for recent_cats
- * category
- *
- */
-
-// FIXME: categories having no representant
-// ($conf['allow_random_representative'] = true) are not displayed :-/
-
-// retrieving categories recently update, ie containing pictures added
-// recently. The calculated table field categories.date_last will be
-// easier to use
-$query = '
-SELECT c.id AS category_id
-       , uppercats
-       , representative_picture_id
-       , path
-       , file
-       , c.comment
-       , tn_ext
-       , nb_images
-       , c.name AS cat_name
-  FROM '.CATEGORIES_TABLE.' AS c
-    INNER JOIN '.IMAGES_TABLE.' AS i ON i.id = c.representative_picture_id
-  WHERE date_last > SUBDATE(
-    CURRENT_DATE,INTERVAL '.$user['recent_period'].' DAY
-  )';
-if ( $user['forbidden_categories'] != '' )
-{
-  $query.= '
-    AND c.id NOT IN ('.$user['forbidden_categories'].')';
-}
-$query.= '
-;';
-$result = pwg_query( $query );
-
-if ($conf['subcatify'])
-{
-  $template->set_filenames(
-    array(
-      'mainpage_categories' => 'mainpage_categories.tpl',
-      )
-    );
-
-  // template thumbnail initialization
-  if (mysql_num_rows($result) > 0)
-  {
-    $template->assign_block_vars('categories', array());
-  }
-
-  $comment = null;
-  if (isset($row['comment']))
-  {
-    $comment = strip_tags($row['comment'], '<a><br><p><b><i><small><strong><font>');
-  }
-
-  // for each category, we have to search a recent picture to display and
-  // the name to display
-  while ( $row = mysql_fetch_array( $result ) )
-  {
-    $template->assign_block_vars(
-      'categories.category',
-      array(
-        'SRC'       => get_thumbnail_src($row['path'], @$row['tn_ext']),
-        'ALT'   => $row['file'],
-        'TITLE' => $lang['hint_category'],
-
-        'URL'  => make_index_url(
-          array(
-            'category' => $row['category_id'],
-            'cat_name' => $row['cat_name'],
-            )
-          ),
-        'NAME' => get_cat_display_name_cache($row['uppercats'], null, false),
-        'CAPTION_NB_IMAGES' => (($row['nb_images'] == 0) ? '' : sprintf("%d ".l10n('pictures'), $row['nb_images'])),
-        'DESCRIPTION' => $comment,
-        )
-      );
-  }
-
-  $template->assign_var_from_handle('CATEGORIES', 'mainpage_categories');
-}
-else
-{
-  $template->set_filenames( array( 'thumbnails' => 'thumbnails.tpl',));
-  // template thumbnail initialization
-  if (mysql_num_rows($result) > 0)
-  {
-    $template->assign_block_vars('thumbnails', array());
-    // first line
-    $template->assign_block_vars('thumbnails.line', array());
-    // current row displayed
-    $row_number = 0;
-  }
-
-  $old_level_separator = $conf['level_separator'];
-  $conf['level_separator'] = '<br />';
-  // for each category, we have to search a recent picture to display and
-  // the name to display
-  while ( $row = mysql_fetch_array( $result ) )
-  {
-    $template->assign_block_vars(
-      'thumbnails.line.thumbnail',
-      array(
-        'IMAGE'       => get_thumbnail_src($row['path'], @$row['tn_ext']),
-        'IMAGE_ALT'   => $row['file'],
-        'IMAGE_TITLE' => $lang['hint_category'],
-
-        'U_IMG_LINK'  => make_index_url(
-          array(
-            'category' => $row['category_id'],
-            'cat_name' => $row['cat_name'],
-            )
-          ),
-        )
-      );
-
-    $template->assign_block_vars(
-      'thumbnails.line.thumbnail.category_name',
-      array(
-        'NAME' => get_cat_display_name_cache($row['uppercats'], null, false),
-        )
-      );
-
-    // create a new line ?
-    if (++$row_number == $user['nb_image_line'])
-    {
-      $template->assign_block_vars('thumbnails.line', array());
-      $row_number = 0;
-    }
-  }
-  $conf['level_separator'] = $old_level_separator;
-  $template->assign_var_from_handle('THUMBNAILS', 'thumbnails');
-}
-?>
\ No newline at end of file
diff --git a/include/section_init.inc.php b/include/section_init.inc.php
index d451c3781..8d0525422 100644
--- a/include/section_init.inc.php
+++ b/include/section_init.inc.php
@@ -359,13 +359,13 @@ SELECT image_id
       $page['thumbnails_include'] =
         $result['nb_images'] > 0
         ? 'include/category_default.inc.php'
-        : 'include/category_subcats.inc.php';
+        : 'include/category_cats.inc.php';
     } //otherwise the calendar will requery all subitems
   }
   else
   {
     $page['title'] = $lang['no_category'];
-    $page['thumbnails_include'] = 'include/category_subcats.inc.php';
+    $page['thumbnails_include'] = 'include/category_cats.inc.php';
   }
 }
 // special sections
@@ -534,7 +534,7 @@ SELECT DISTINCT(id)
       $page,
       array(
         'title' => $lang['recent_cats_cat'],
-        'thumbnails_include' => 'include/category_recent_cats.inc.php',
+        'thumbnails_include' => 'include/category_cats.inc.php',
         )
       );
   }