- 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
This commit is contained in:
rvelices 2006-11-08 03:01:28 +00:00
parent 8f52e36a6f
commit e44f0b0154
4 changed files with 93 additions and 232 deletions

View file

@ -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

View file

@ -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');
}
}

View file

@ -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');
}
?>

View file

@ -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',
)
);
}