diff options
Diffstat (limited to 'BSF/include/functions_category.inc.php')
-rw-r--r-- | BSF/include/functions_category.inc.php | 509 |
1 files changed, 0 insertions, 509 deletions
diff --git a/BSF/include/functions_category.inc.php b/BSF/include/functions_category.inc.php deleted file mode 100644 index 721cc0038..000000000 --- a/BSF/include/functions_category.inc.php +++ /dev/null @@ -1,509 +0,0 @@ -<?php -// +-----------------------------------------------------------------------+ -// | Piwigo - a PHP based picture gallery | -// +-----------------------------------------------------------------------+ -// | Copyright(C) 2008 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. | -// +-----------------------------------------------------------------------+ - -/** - * 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; - - // $filter['visible_categories'] and $filter['visible_images'] - // are not used because it's not necessary (filter <> restriction) - if (in_array($category_id, explode(',', $user['forbidden_categories']))) - { - access_denied(); - } -} - -function get_categories_menu() -{ - global $page, $user, $filter; - - $query = ' -SELECT '; - // From CATEGORIES_TABLE - $query.= ' - id, name, permalink, nb_images, global_rank,'; - // From USER_CACHE_CATEGORIES_TABLE - $query.= ' - date_last, max_date_last, count_images, count_categories'; - - // $user['forbidden_categories'] including with USER_CACHE_CATEGORIES_TABLE - $query.= ' -FROM '.CATEGORIES_TABLE.' INNER JOIN '.USER_CACHE_CATEGORIES_TABLE.' - ON id = cat_id and user_id = '.$user['id']; - - // Always expand when filter is activated - if (!$user['expand'] and !$filter['enabled']) - { - $where = ' -(id_uppercat is NULL'; - if (isset($page['category'])) - { - $where .= ' OR id_uppercat IN ('.$page['category']['uppercats'].')'; - } - $where .= ')'; - } - else - { - $where = ' - '.get_sql_condition_FandF - ( - array - ( - 'visible_categories' => 'id', - ), - null, - true - ); - } - - $where = trigger_event('get_categories_menu_sql_where', - $where, $user['expand'], $filter['enabled'] ); - - $query.= ' -WHERE '.$where.' -;'; - - $result = pwg_query($query); - $cats = array(); - while ($row = mysql_fetch_assoc($result)) - { - array_push($cats, $row); - } - usort($cats, 'global_rank_compare'); - - // Update filtered data - if (function_exists('update_cats_with_filtered_data')) - { - update_cats_with_filtered_data($cats); - } - - return get_html_menu_category($cats, @$page['category'] ); -} - - -/** - * 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 ) -{ - $query = ' -SELECT * - FROM '.CATEGORIES_TABLE.' - WHERE id = '.$id.' -;'; - $cat = mysql_fetch_assoc(pwg_query($query)); - if (empty($cat)) - return null; - - foreach ($cat as $k => $v) - { - // If the field is true or false, the variable is transformed into a - // boolean value. - if ($cat[$k] == 'true' or $cat[$k] == 'false') - { - $cat[$k] = get_boolean( $cat[$k] ); - } - } - - $upper_ids = explode(',', $cat['uppercats']); - if ( count($upper_ids)==1 ) - {// no need to make a query for level 1 - $cat['upper_names'] = array( - array( - 'id' => $cat['id'], - 'name' => $cat['name'], - 'permalink' => $cat['permalink'], - ) - ); - } - else - { - $names = array(); - $query = ' - SELECT id, name, permalink - FROM '.CATEGORIES_TABLE.' - WHERE id IN ('.$cat['uppercats'].') - ;'; - $names = hash_from_query($query, 'id'); - - // category names must be in the same order than uppercats list - $cat['upper_names'] = array(); - foreach ($upper_ids as $cat_id) - { - array_push( $cat['upper_names'], $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 -// Piwigo 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 -// Piwigo 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']; -} - -// returns an array of image orders available for users/visitors -function get_category_preferred_image_orders() -{ - global $conf; - return array( - array(l10n('default_sort'), '', true), - array(l10n('Average rate'), 'average_rate DESC', $conf['rate']), - array(l10n('most_visited_cat'), 'hit DESC', true), - array(l10n('Creation date'), 'date_creation DESC', true), - array(l10n('Post date'), 'date_available DESC', true), - array(l10n('File name'), 'file ASC', true) - ); -} - -function display_select_categories($categories, - $selecteds, - $blockname, - $fullname = true) -{ - global $template; - - $tpl_cats = array(); - foreach ($categories as $category) - { - if ($fullname) - { - $option = get_cat_display_name_cache($category['uppercats'], - null, - false); - } - else - { - $option = str_repeat(' ', - (3 * substr_count($category['global_rank'], '.'))); - $option.= '- '.$category['name']; - } - $tpl_cats[ $category['id'] ] = $option; - } - - $template->assign( $blockname, $tpl_cats); - $template->assign( $blockname.'_selected', $selecteds); -} - -function display_select_cat_wrapper($query, $selecteds, $blockname, - $fullname = true) -{ - $result = pwg_query($query); - $categories = array(); - if (!empty($result)) - { - while ($row = mysql_fetch_assoc($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) - { - is_numeric($category_id) - or trigger_error( - 'get_subcat_ids expecting numeric, not '.gettype($category_id), - E_USER_WARNING - ); - 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; -} - -/** finds a matching category id from a potential list of permalinks - * @param array permalinks example: holiday holiday/france holiday/france/paris - * @param int idx - output of the index in $permalinks that matches - * return category id or null if no match - */ -function get_cat_id_from_permalinks( $permalinks, &$idx ) -{ - $in = ''; - foreach($permalinks as $permalink) - { - if ( !empty($in) ) $in.=', '; - $in .= '"'.$permalink.'"'; - } - $query =' -SELECT cat_id AS id, permalink, 1 AS is_old - FROM '.OLD_PERMALINKS_TABLE.' - WHERE permalink IN ('.$in.') -UNION -SELECT id, permalink, 0 AS is_old - FROM '.CATEGORIES_TABLE.' - WHERE permalink IN ('.$in.') -;'; - $perma_hash = hash_from_query($query, 'permalink'); - - if ( empty($perma_hash) ) - return null; - for ($i=count($permalinks)-1; $i>=0; $i--) - { - if ( isset( $perma_hash[ $permalinks[$i] ] ) ) - { - $idx = $i; - $cat_id = $perma_hash[ $permalinks[$i] ]['id']; - if ($perma_hash[ $permalinks[$i] ]['is_old']) - { - $query=' -UPDATE '.OLD_PERMALINKS_TABLE.' SET last_hit=NOW(), hit=hit+1 - WHERE permalink="'.$permalinks[$i].'" AND cat_id='.$cat_id.' - LIMIT 1'; - pwg_query($query); - } - return $cat_id; - } - } - return null; -} - -function global_rank_compare($a, $b) -{ - return strnatcasecmp($a['global_rank'], $b['global_rank']); -} - -function rank_compare($a, $b) -{ - if ($a['rank'] == $b['rank']) - { - return 0; - } - - return ($a['rank'] < $b['rank']) ? -1 : 1; -} - -/** - * returns display text for information images of category - * - * @param array categories - * @return string - */ -function get_display_images_count($cat_nb_images, $cat_count_images, $cat_count_categories, $short_message = true, $Separator = '\n') -{ - $display_text = ''; - - if ($cat_count_images > 0) - { - if ($cat_nb_images > 0 and $cat_nb_images < $cat_count_images) - { - $display_text.= get_display_images_count($cat_nb_images, $cat_nb_images, 0, $short_message, $Separator).$Separator; - $cat_count_images-= $cat_nb_images; - $cat_nb_images = 0; - } - - //at least one image direct or indirect - $display_text.= l10n_dec('%d element', '%d elements', $cat_count_images); - - if ($cat_count_categories == 0 or $cat_nb_images == $cat_count_images) - { - //no descendant categories or descendants do not contain images - if (! $short_message) - { - $display_text.= ' '.l10n('images_available_cpl'); - } - } - else - { - $display_text.= ' '.l10n_dec('images_available_cat', 'images_available_cats', $cat_count_categories); - } - } - - return $display_text; -} - -/** - * returns the link of upload menu - * - * @param null - * @return string or null - */ -function get_upload_menu_link() -{ - global $conf, $page, $user; - - $show_link = false; - $arg_link = null; - - if (is_autorize_status($conf['upload_user_access'])) - { - if (isset($page['category']) and $page['category']['uploadable'] ) - { - // upload a picture in the category - $show_link = true; - $arg_link = 'cat='.$page['category']['id']; - } - else - if ($conf['upload_link_everytime']) - { - // upload a picture in the category - $query = ' -SELECT - 1 -FROM '.CATEGORIES_TABLE.' INNER JOIN '.USER_CACHE_CATEGORIES_TABLE.' - ON id = cat_id and user_id = '.$user['id'].' -WHERE - uploadable = \'true\' - '.get_sql_condition_FandF - ( - array - ( - 'visible_categories' => 'id', - ), - 'AND' - ).' -LIMIT 1'; - - $show_link = mysql_num_rows(pwg_query($query)) <> 0; - } - } - if ($show_link) - { - return get_root_url().'upload.php'.(empty($arg_link) ? '' : '?'.$arg_link); - } - else - { - return; - } -} - -?> |