0,0 → 1,840 |
<?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: functions_category.inc.php,v $ |
// | last update : $Date: 2005/05/02 20:59:47 $ |
// | last modifier : $Author: plg $ |
// | revision : $Revision: 1.66.2.1 $ |
// +-----------------------------------------------------------------------+ |
// | 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. | |
// +-----------------------------------------------------------------------+ |
|
/** |
* Provides functions to handle categories. |
* |
* |
*/ |
|
/** |
* Is the category accessible to the connected user ? |
* |
* Note : if the user is not authorized to see this category, page creation |
* ends (exit command in this function) |
* |
* @param int category id to verify |
* @return void |
*/ |
function check_restrictions( $category_id ) |
{ |
global $user,$lang; |
|
if ( in_array( $category_id, $user['restrictions'] ) ) |
{ |
echo '<div style="text-align:center;">'.$lang['access_forbiden'].'<br />'; |
echo '<a href="'.add_session_id( './category.php' ).'">'; |
echo $lang['thumbnails'].'</a></div>'; |
exit(); |
} |
} |
|
/** |
* Checks whether the argument is a right parameter category id |
* |
* The argument is a right parameter if corresponds to one of these : |
* |
* - is numeric and corresponds to a category in the database |
* - equals 'fav' (for favorites) |
* - equals 'search' (when the result of a search is displayed) |
* - equals 'most_visited' |
* - equals 'best_rated' |
* - equals 'recent_pics' |
* - equals 'recent_cats' |
* - equals 'calendar' |
* - equals 'list' |
* |
* The function fills the global var $page['cat'] and returns nothing |
* |
* @param mixed category id or special category name |
* @return void |
*/ |
function check_cat_id( $cat ) |
{ |
global $page; |
|
unset( $page['cat'] ); |
if ( isset( $cat ) ) |
{ |
if ( isset( $page['plain_structure'][$cat] ) ) |
{ |
$page['cat'] = $cat; |
} |
else if ( is_numeric( $cat ) ) |
{ |
$query = 'SELECT id'; |
$query.= ' FROM '.CATEGORIES_TABLE.' WHERE id = '.$cat.';'; |
$result = pwg_query( $query ); |
if ( mysql_num_rows( $result ) != 0 ) |
{ |
$page['cat'] = $cat; |
} |
} |
if ( $cat == 'fav' |
or $cat == 'most_visited' |
or $cat == 'best_rated' |
or $cat == 'recent_pics' |
or $cat == 'recent_cats' |
or $cat == 'calendar' ) |
{ |
$page['cat'] = $cat; |
} |
if ($cat == 'search' and isset($_GET['search'])) |
{ |
$page['cat'] = $cat; |
} |
if ($cat == 'list' |
and isset($_GET['list']) |
and preg_match('/^\d+(,\d+)*$/', $_GET['list'])) |
{ |
$page['cat'] = 'list'; |
} |
} |
} |
|
function get_categories_menu() |
{ |
global $page,$user; |
|
$infos = array(''); |
|
$query = ' |
SELECT name,id,date_last,nb_images,global_rank |
FROM '.CATEGORIES_TABLE.' |
WHERE 1 = 1'; // stupid but permit using AND after it ! |
if (!$user['expand']) |
{ |
$query.= ' |
AND (id_uppercat is NULL'; |
if (isset ($page['tab_expand']) and count($page['tab_expand']) > 0) |
{ |
$query.= ' OR id_uppercat IN ('.implode(',',$page['tab_expand']).')'; |
} |
$query.= ')'; |
} |
if ($user['forbidden_categories'] != '') |
{ |
$query.= ' |
AND id NOT IN ('.$user['forbidden_categories'].')'; |
} |
$query.= ' |
;'; |
|
$result = pwg_query($query); |
$cats = array(); |
while ($row = mysql_fetch_array($result)) |
{ |
array_push($cats, $row); |
} |
usort($cats, 'global_rank_compare'); |
|
return get_html_menu_category($cats); |
} |
|
function count_user_total_images() |
{ |
global $user; |
|
$query = 'SELECT SUM(nb_images) AS total'; |
$query.= ' FROM '.CATEGORIES_TABLE; |
if ( count( $user['restrictions'] ) > 0 ) |
$query.= ' WHERE id NOT IN ('.$user['forbidden_categories'].')'; |
$query.= ';'; |
|
$row = mysql_fetch_array( pwg_query( $query ) ); |
|
if ( !isset( $row['total'] ) ) $row['total'] = 0; |
return $row['total']; |
} |
|
/** |
* Retrieve informations about a category in the database |
* |
* Returns an array with following keys : |
* |
* - comment |
* - dir : directory, might be empty for virtual categories |
* - name : an array with indexes from 0 (lowest cat name) to n (most |
* uppercat name findable) |
* - nb_images |
* - id_uppercat |
* - site_id |
* - |
* |
* @param int category id |
* @return array |
*/ |
function get_cat_info( $id ) |
{ |
$infos = array('nb_images','id_uppercat','comment','site_id' |
,'dir','date_last','uploadable','status','visible' |
,'representative_picture_id','uppercats','commentable'); |
|
$query = ' |
SELECT '.implode(',', $infos).' |
FROM '.CATEGORIES_TABLE.' |
WHERE id = '.$id.' |
;'; |
$row = mysql_fetch_array(pwg_query($query)); |
|
$cat = array(); |
foreach ($infos as $info) |
{ |
if (isset($row[$info])) |
{ |
$cat[$info] = $row[$info]; |
} |
else |
{ |
$cat[$info] = ''; |
} |
// If the field is true or false, the variable is transformed into a |
// boolean value. |
if ($cat[$info] == 'true' or $cat[$info] == 'false') |
{ |
$cat[$info] = get_boolean( $cat[$info] ); |
} |
} |
$cat['comment'] = nl2br($cat['comment']); |
|
$names = array(); |
$query = ' |
SELECT name,id |
FROM '.CATEGORIES_TABLE.' |
WHERE id IN ('.$cat['uppercats'].') |
;'; |
$result = pwg_query($query); |
while($row = mysql_fetch_array($result)) |
{ |
$names[$row['id']] = $row['name']; |
} |
|
// category names must be in the same order than uppercats list |
$cat['name'] = array(); |
foreach (explode(',', $cat['uppercats']) as $cat_id) |
{ |
$cat['name'][$cat_id] = $names[$cat_id]; |
} |
|
return $cat; |
} |
|
// get_complete_dir returns the concatenation of get_site_url and |
// get_local_dir |
// Example : "pets > rex > 1_year_old" is on the the same site as the |
// PhpWebGallery files and this category has 22 for identifier |
// get_complete_dir(22) returns "./galleries/pets/rex/1_year_old/" |
function get_complete_dir( $category_id ) |
{ |
return get_site_url($category_id).get_local_dir($category_id); |
} |
|
// get_local_dir returns an array with complete path without the site url |
// Example : "pets > rex > 1_year_old" is on the the same site as the |
// PhpWebGallery files and this category has 22 for identifier |
// get_local_dir(22) returns "pets/rex/1_year_old/" |
function get_local_dir( $category_id ) |
{ |
global $page; |
|
$uppercats = ''; |
$local_dir = ''; |
|
if ( isset( $page['plain_structure'][$category_id]['uppercats'] ) ) |
{ |
$uppercats = $page['plain_structure'][$category_id]['uppercats']; |
} |
else |
{ |
$query = 'SELECT uppercats'; |
$query.= ' FROM '.CATEGORIES_TABLE.' WHERE id = '.$category_id; |
$query.= ';'; |
$row = mysql_fetch_array( pwg_query( $query ) ); |
$uppercats = $row['uppercats']; |
} |
|
$upper_array = explode( ',', $uppercats ); |
|
$database_dirs = array(); |
$query = 'SELECT id,dir'; |
$query.= ' FROM '.CATEGORIES_TABLE.' WHERE id IN ('.$uppercats.')'; |
$query.= ';'; |
$result = pwg_query( $query ); |
while( $row = mysql_fetch_array( $result ) ) |
{ |
$database_dirs[$row['id']] = $row['dir']; |
} |
foreach ($upper_array as $id) |
{ |
$local_dir.= $database_dirs[$id].'/'; |
} |
|
return $local_dir; |
} |
|
// retrieving the site url : "http://domain.com/gallery/" or |
// simply "./galleries/" |
function get_site_url($category_id) |
{ |
global $page; |
|
$query = ' |
SELECT galleries_url |
FROM '.SITES_TABLE.' AS s,'.CATEGORIES_TABLE.' AS c |
WHERE s.id = c.site_id |
AND c.id = '.$category_id.' |
;'; |
$row = mysql_fetch_array(pwg_query($query)); |
return $row['galleries_url']; |
} |
|
// initialize_category initializes ;-) the variables in relation |
// with category : |
// 1. calculation of the number of pictures in the category |
// 2. determination of the SQL query part to ask to find the right category |
// $page['where'] is not the same if we are in |
// - simple category |
// - search result |
// - favorites displaying |
// - most visited pictures |
// - best rated pictures |
// - recent pictures |
// - defined list (used for random) |
// 3. determination of the title of the page |
// 4. creation of the navigation bar |
function initialize_category( $calling_page = 'category' ) |
{ |
pwg_debug( 'start initialize_category' ); |
global $page,$lang,$user,$conf; |
|
if ( isset( $page['cat'] ) ) |
{ |
// $page['nb_image_page'] is the number of picture to display on this page |
// By default, it is the same as the $user['nb_image_page'] |
$page['nb_image_page'] = $user['nb_image_page']; |
// $url is used to create the navigation bar |
$url = PHPWG_ROOT_PATH.'category.php?cat='.$page['cat']; |
if ( isset($page['expand']) ) $url.= '&expand='.$page['expand']; |
// simple category |
if ( is_numeric( $page['cat'] ) ) |
{ |
$result = get_cat_info( $page['cat'] ); |
$page['comment'] = $result['comment']; |
$page['cat_dir'] = $result['dir']; |
$page['cat_name'] = $result['name']; |
$page['cat_nb_images'] = $result['nb_images']; |
$page['cat_site_id'] = $result['site_id']; |
$page['cat_uploadable'] = $result['uploadable']; |
$page['cat_commentable'] = $result['commentable']; |
$page['uppercats'] = $result['uppercats']; |
$page['title'] = |
get_cat_display_name($page['cat_name'], |
'', |
false); |
$page['where'] = ' WHERE category_id = '.$page['cat']; |
} |
else |
{ |
if ($page['cat'] == 'search' |
or $page['cat'] == 'most_visited' |
or $page['cat'] == 'recent_pics' |
or $page['cat'] == 'recent_cats' |
or $page['cat'] == 'best_rated' |
or $page['cat'] == 'calendar' |
or $page['cat'] == 'list') |
{ |
// we must not show pictures of a forbidden category |
if ( $user['forbidden_categories'] != '' ) |
{ |
$forbidden = ' category_id NOT IN '; |
$forbidden.= '('.$user['forbidden_categories'].')'; |
} |
} |
// search result |
if ( $page['cat'] == 'search' ) |
{ |
// analyze search string given in URL (created in search.php) |
$tokens = explode('|', $_GET['search']); |
|
if (isset($tokens[1]) and $tokens[1] == 'AND') |
{ |
$search['mode'] = 'AND'; |
} |
else |
{ |
$search['mode'] = 'OR'; |
} |
|
$search_tokens = explode('--', $tokens[0]); |
foreach ($search_tokens as $search_token) |
{ |
$tokens = explode(':', $search_token); |
$field_name = $tokens[0]; |
$field_content = $tokens[1]; |
|
$tokens = explode('~', $tokens[1]); |
if (isset($tokens[1])) |
{ |
$search['fields'][$field_name]['mode'] = $tokens[1]; |
} |
else |
{ |
$search['fields'][$field_name]['mode'] = ''; |
} |
|
$search['fields'][$field_name]['words'] = array(); |
$tokens = explode(',', $tokens[0]); |
foreach ($tokens as $token) |
{ |
array_push($search['fields'][$field_name]['words'], |
htmlentities($token)); |
} |
} |
|
$page['title'] = $lang['search_result']; |
if ( $calling_page == 'picture' ) |
{ |
$page['title'].= ' : <span style="font-style:italic;">'; |
$page['title'].= $_GET['search']."</span>"; |
} |
|
// SQL where clauses are stored in $clauses array during query |
// construction |
$clauses = array(); |
|
$textfields = array('file', 'name', 'comment', 'keywords', 'author'); |
foreach ($textfields as $textfield) |
{ |
if (isset($search['fields'][$textfield])) |
{ |
$local_clauses = array(); |
foreach ($search['fields'][$textfield]['words'] as $word) |
{ |
array_push($local_clauses, $textfield." LIKE '%".$word."%'"); |
} |
// adds brackets around where clauses |
array_walk($local_clauses,create_function('&$s','$s="(".$s.")";')); |
array_push($clauses, |
implode(' '.$search['fields'][$textfield]['mode'].' ', |
$local_clauses)); |
} |
} |
|
if (isset($search['fields']['allwords'])) |
{ |
$fields = array('file', 'name', 'comment', 'keywords', 'author'); |
// in the OR mode, request bust be : |
// ((field1 LIKE '%word1%' OR field2 LIKE '%word1%') |
// OR (field1 LIKE '%word2%' OR field2 LIKE '%word2%')) |
// |
// in the AND mode : |
// ((field1 LIKE '%word1%' OR field2 LIKE '%word1%') |
// AND (field1 LIKE '%word2%' OR field2 LIKE '%word2%')) |
$word_clauses = array(); |
foreach ($search['fields']['allwords']['words'] as $word) |
{ |
$field_clauses = array(); |
foreach ($fields as $field) |
{ |
array_push($field_clauses, $field." LIKE '%".$word."%'"); |
} |
// adds brackets around where clauses |
array_push($word_clauses, implode(' OR ', $field_clauses)); |
} |
array_walk($word_clauses, create_function('&$s','$s="(".$s.")";')); |
array_push($clauses, |
implode(' '.$search['fields']['allwords']['mode'].' ', |
$word_clauses)); |
} |
|
$datefields = array('date_available', 'date_creation'); |
foreach ($datefields as $datefield) |
{ |
$key = $datefield; |
if (isset($search['fields'][$key])) |
{ |
$local_clause = $datefield." = '"; |
$local_clause.= str_replace('.', '-', |
$search['fields'][$key]['words'][0]); |
$local_clause.= "'"; |
array_push($clauses, $local_clause); |
} |
|
foreach (array('after','before') as $suffix) |
{ |
$key = $datefield.'-'.$suffix; |
if (isset($search['fields'][$key])) |
{ |
$local_clause = $datefield; |
if ($suffix == 'after') |
{ |
$local_clause.= ' >'; |
} |
else |
{ |
$local_clause.= ' <'; |
} |
if (isset($search['fields'][$key]['mode']) |
and $search['fields'][$key]['mode'] == 'inc') |
{ |
$local_clause.= '='; |
} |
$local_clause.= " '"; |
$local_clause.= str_replace('.', '-', |
$search['fields'][$key]['words'][0]); |
$local_clause.= "'"; |
array_push($clauses, $local_clause); |
} |
} |
} |
|
if (isset($search['fields']['cat'])) |
{ |
if ($search['fields']['cat']['mode'] == 'sub_inc') |
{ |
// searching all the categories id of sub-categories |
$cat_ids = get_subcat_ids($search['fields']['cat']['words']); |
} |
else |
{ |
$cat_ids = $search['fields']['cat']['words']; |
} |
|
$local_clause = 'category_id IN ('.implode(',', $cat_ids).')'; |
array_push($clauses, $local_clause); |
} |
|
// adds brackets around where clauses |
array_walk($clauses, create_function('&$s', '$s = "(".$s.")";')); |
$page['where'] = 'WHERE '.implode(' '.$search['mode'].' ', $clauses); |
if ( isset( $forbidden ) ) $page['where'].= ' AND '.$forbidden; |
|
$query = ' |
SELECT COUNT(DISTINCT(id)) AS nb_total_images |
FROM '.IMAGES_TABLE.' |
INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON id = ic.image_id |
'.$page['where'].' |
;'; |
$url.= '&search='.$_GET['search']; |
} |
// favorites displaying |
else if ( $page['cat'] == 'fav' ) |
{ |
check_user_favorites(); |
|
$page['title'] = $lang['favorites']; |
|
$page['where'] = ', '.FAVORITES_TABLE.' AS fav'; |
$page['where'].= ' WHERE user_id = '.$user['id']; |
$page['where'].= ' AND fav.image_id = id'; |
|
$query = 'SELECT COUNT(*) AS nb_total_images'; |
$query.= ' FROM '.FAVORITES_TABLE; |
$query.= ' WHERE user_id = '.$user['id']; |
$query.= ';'; |
} |
// pictures within the short period |
else if ( $page['cat'] == 'recent_pics' ) |
{ |
$page['title'] = $lang['recent_pics_cat']; |
// We must find the date corresponding to : |
// today - $conf['periode_courte'] |
$date = time() - 60*60*24*$user['recent_period']; |
$page['where'] = " WHERE date_available > '"; |
$page['where'].= date( 'Y-m-d', $date )."'"; |
if ( isset( $forbidden ) ) $page['where'].= ' AND '.$forbidden; |
|
$query = ' |
SELECT COUNT(DISTINCT(id)) AS nb_total_images |
FROM '.IMAGES_TABLE.' INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic |
ON id = ic.image_id |
'.$page['where'].' |
;'; |
} |
// categories containing recent pictures |
else if ( $page['cat'] == 'recent_cats' ) |
{ |
$page['title'] = $lang['recent_cats_cat']; |
$page['cat_nb_images'] = 0; |
} |
// most visited pictures |
else if ( $page['cat'] == 'most_visited' ) |
{ |
$page['title'] = $conf['top_number'].' '.$lang['most_visited_cat']; |
|
$page['where'] = 'WHERE hit > 0'; |
if (isset($forbidden)) |
{ |
$page['where'] = "\n".' AND '.$forbidden; |
} |
|
$conf['order_by'] = ' ORDER BY hit DESC, file ASC'; |
|
// $page['cat_nb_images'] equals $conf['top_number'] unless there |
// are less visited items |
$query =' |
SELECT COUNT(DISTINCT(id)) AS count |
FROM '.IMAGES_TABLE.' |
INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON id = ic.image_id |
'.$page['where'].' |
;'; |
$row = mysql_fetch_array(pwg_query($query)); |
if ($row['count'] < $conf['top_number']) |
{ |
$page['cat_nb_images'] = $row['count']; |
} |
else |
{ |
$page['cat_nb_images'] = $conf['top_number']; |
} |
unset($query); |
|
if ( isset( $page['start'] ) |
and ($page['start']+$user['nb_image_page']>=$conf['top_number'])) |
{ |
$page['nb_image_page'] = $conf['top_number'] - $page['start']; |
} |
} |
else if ( $page['cat'] == 'calendar' ) |
{ |
$page['cat_nb_images'] = 0; |
$page['title'] = $lang['calendar']; |
if (isset($_GET['year']) |
and preg_match('/^\d+$/', $_GET['year'])) |
{ |
$page['calendar_year'] = (int)$_GET['year']; |
} |
if (isset($_GET['month']) |
and preg_match('/^(\d+)\.(\d{2})$/', $_GET['month'], $matches)) |
{ |
$page['calendar_year'] = (int)$matches[1]; |
$page['calendar_month'] = (int)$matches[2]; |
} |
if (isset($_GET['day']) |
and preg_match('/^(\d+)\.(\d{2})\.(\d{2})$/', |
$_GET['day'], |
$matches)) |
{ |
$page['calendar_year'] = (int)$matches[1]; |
$page['calendar_month'] = (int)$matches[2]; |
$page['calendar_day'] = (int)$matches[3]; |
} |
if (isset($page['calendar_year'])) |
{ |
$page['title'] .= ' ('; |
if (isset($page['calendar_day'])) |
{ |
if ($page['calendar_year'] >= 1970) |
{ |
$unixdate = mktime(0,0,0, |
$page['calendar_month'], |
$page['calendar_day'], |
$page['calendar_year']); |
$page['title'].= $lang['day'][date("w", $unixdate)]; |
} |
$page['title'].= ' '.$page['calendar_day'].', '; |
} |
if (isset($page['calendar_month'])) |
{ |
$page['title'] .= $lang['month'][$page['calendar_month']].' '; |
} |
$page['title'] .= $page['calendar_year']; |
$page['title'] .= ')'; |
} |
|
$page['where'] = 'WHERE '.$conf['calendar_datefield'].' IS NOT NULL'; |
if (isset($forbidden)) |
{ |
$page['where'].= ' AND '.$forbidden; |
} |
} |
else if ($page['cat'] == 'best_rated') |
{ |
$page['title'] = $conf['top_number'].' '.$lang['best_rated_cat']; |
|
$page['where'] = ' WHERE average_rate IS NOT NULL'; |
|
if (isset($forbidden)) |
{ |
$page['where'].= ' AND '.$forbidden; |
} |
|
$conf['order_by'] = ' ORDER BY average_rate DESC, id ASC'; |
|
// $page['cat_nb_images'] equals $conf['top_number'] unless there |
// are less rated items |
$query =' |
SELECT COUNT(DISTINCT(id)) AS count |
FROM '.IMAGES_TABLE.' |
INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON id = ic.image_id |
'.$page['where'].' |
;'; |
$row = mysql_fetch_array(pwg_query($query)); |
if ($row['count'] < $conf['top_number']) |
{ |
$page['cat_nb_images'] = $row['count']; |
} |
else |
{ |
$page['cat_nb_images'] = $conf['top_number']; |
} |
unset($query); |
|
|
if (isset($page['start']) |
and ($page['start']+$user['nb_image_page']>=$conf['top_number'])) |
{ |
$page['nb_image_page'] = $conf['top_number'] - $page['start']; |
} |
} |
else if ($page['cat'] == 'list') |
{ |
$page['title'] = $lang['random_cat']; |
|
$page['where'] = 'WHERE 1=1'; |
if (isset($forbidden)) |
{ |
$page['where'].= ' AND '.$forbidden; |
} |
$page['where'].= ' AND image_id IN ('.$_GET['list'].')'; |
$page['cat_nb_images'] = count(explode(',', $_GET['list'])); |
|
$url.= '&list='.$_GET['list']; |
} |
|
if (isset($query)) |
{ |
$result = pwg_query( $query ); |
$row = mysql_fetch_array( $result ); |
$page['cat_nb_images'] = $row['nb_total_images']; |
} |
} |
if ( $calling_page == 'category' ) |
{ |
$page['navigation_bar'] = |
create_navigation_bar( $url, $page['cat_nb_images'], $page['start'], |
$user['nb_image_page'], 'back' ); |
} |
} |
else |
{ |
$page['title'] = $lang['no_category']; |
} |
pwg_debug( 'end initialize_category' ); |
} |
|
function display_select_categories($categories, |
$selecteds, |
$blockname, |
$fullname = true) |
{ |
global $template; |
|
foreach ($categories as $category) |
{ |
$selected = ''; |
if (in_array($category['id'], $selecteds)) |
{ |
$selected = ' selected="selected"'; |
} |
|
if ($fullname) |
{ |
$option = get_cat_display_name_cache($category['uppercats'], |
'', |
false); |
} |
else |
{ |
$option = str_repeat(' ', |
(3 * substr_count($category['global_rank'], '.'))); |
$option.= '- '.$category['name']; |
} |
|
$template->assign_block_vars( |
$blockname, |
array('SELECTED'=>$selected, |
'VALUE'=>$category['id'], |
'OPTION'=>$option |
)); |
} |
} |
|
function display_select_cat_wrapper($query, $selecteds, $blockname, |
$fullname = true) |
{ |
$result = pwg_query($query); |
$categories = array(); |
if (!empty($result)) |
{ |
while ($row = mysql_fetch_array($result)) |
{ |
array_push($categories, $row); |
} |
} |
usort($categories, 'global_rank_compare'); |
display_select_categories($categories, $selecteds, $blockname, $fullname); |
} |
|
/** |
* returns all subcategory identifiers of given category ids |
* |
* @param array ids |
* @return array |
*/ |
function get_subcat_ids($ids) |
{ |
$query = ' |
SELECT DISTINCT(id) |
FROM '.CATEGORIES_TABLE.' |
WHERE '; |
foreach ($ids as $num => $category_id) |
{ |
if ($num > 0) |
{ |
$query.= ' |
OR '; |
} |
$query.= 'uppercats REGEXP \'(^|,)'.$category_id.'(,|$)\''; |
} |
$query.= ' |
;'; |
$result = pwg_query($query); |
|
$subcats = array(); |
while ($row = mysql_fetch_array($result)) |
{ |
array_push($subcats, $row['id']); |
} |
return $subcats; |
} |
|
function global_rank_compare($a, $b) |
{ |
return strnatcasecmp($a['global_rank'], $b['global_rank']); |
} |
?> |