diff options
Diffstat (limited to 'BSF/admin/permalinks.php')
-rw-r--r-- | BSF/admin/permalinks.php | 179 |
1 files changed, 179 insertions, 0 deletions
diff --git a/BSF/admin/permalinks.php b/BSF/admin/permalinks.php new file mode 100644 index 000000000..ecae18965 --- /dev/null +++ b/BSF/admin/permalinks.php @@ -0,0 +1,179 @@ +<?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. | +// +-----------------------------------------------------------------------+ + +function parse_sort_variables( + $sortable_by, $default_field, + $get_param, $get_rejects, + $template_var, + $anchor = '' ) +{ + global $template; + + $url_components = parse_url( $_SERVER['REQUEST_URI'] ); + + $base_url = $url_components['path']; + + parse_str($url_components['query'], $vars); + $is_first = true; + foreach ($vars as $key => $value) + { + if (!in_array($key, $get_rejects) and $key!=$get_param) + { + $base_url .= $is_first ? '?' : '&'; + $is_first = false; + $base_url .= $key.'='.urlencode($value); + } + } + + $ret = array(); + foreach( $sortable_by as $field) + { + $url = $base_url; + $disp = '⇓'; // TODO: an small image is better + + if ( $field !== @$_GET[$get_param] ) + { + if ( !isset($default_field) or $default_field!=$field ) + { // the first should be the default + $url = add_url_params($url, array($get_param=>$field) ); + } + elseif (isset($default_field) and !isset($_GET[$get_param]) ) + { + array_push($ret, $field); + $disp = '<em>'.$disp.'</em>'; + } + } + else + { + array_push($ret, $field); + $disp = '<em>'.$disp.'</em>'; + } + if ( isset($template_var) ) + { + $template->assign( $template_var.strtoupper($field), + '<a href="'.$url.$anchor.'" title="'.l10n('Sort order').'">'.$disp.'</a>' + ); + } + } + return $ret; +} + +if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!'); + +include_once(PHPWG_ROOT_PATH.'admin/include/functions_permalinks.php'); + +$selected_cat = array(); +if ( isset($_POST['set_permalink']) and $_POST['cat_id']>0 and !is_adviser() ) +{ + $permalink = $_POST['permalink']; + if ( empty($permalink) ) + delete_cat_permalink($_POST['cat_id'], isset($_POST['save']) ); + else + set_cat_permalink($_POST['cat_id'], $permalink, isset($_POST['save']) ); + $selected_cat = array( $_POST['cat_id'] ); +} +elseif ( isset($_GET['delete_permanent']) and !is_adviser() ) +{ + $query = ' +DELETE FROM '.OLD_PERMALINKS_TABLE.' + WHERE permalink="'.$_GET['delete_permanent'].'" + LIMIT 1'; + pwg_query($query); + if (mysql_affected_rows()==0) + array_push($page['errors'], 'Cannot delete the old permalink !'); +} + + +$template->set_filename('permalinks', 'admin/permalinks.tpl' ); + +$query = ' +SELECT + id, + CONCAT(id, " - ", name, IF(permalink IS NULL, "", " √") ) AS name, + uppercats, global_rank +FROM '.CATEGORIES_TABLE; + +display_select_cat_wrapper( $query, $selected_cat, 'categories', false ); + + +// --- generate display of active permalinks ----------------------------------- +$sort_by = parse_sort_variables( + array('id', 'name', 'permalink'), 'name', + 'psf', + array('delete_permanent'), + 'SORT_' ); + +$query = ' +SELECT id, permalink, uppercats, global_rank + FROM '.CATEGORIES_TABLE.' + WHERE permalink IS NOT NULL +'; +if ( $sort_by[0]=='id' or $sort_by[0]=='permalink' ) +{ + $query .= ' ORDER BY '.$sort_by[0]; +} +$categories=array(); +$result=pwg_query($query); +while ( $row=mysql_fetch_assoc($result) ) +{ + $row['name'] = get_cat_display_name_cache( $row['uppercats'] ); + $categories[] = $row; +} + +if ( $sort_by[0]=='name') +{ + usort($categories, 'global_rank_compare'); +} +$template->assign( 'permalinks', $categories ); + +// --- generate display of old permalinks -------------------------------------- + +$sort_by = parse_sort_variables( + array('cat_id','permalink','date_deleted','last_hit','hit'), null, + 'dpsf', + array('delete_permanent'), + 'SORT_OLD_', '#old_permalinks' ); + +$url_del_base = get_root_url().'admin.php?page=permalinks'; +$query = 'SELECT * FROM '.OLD_PERMALINKS_TABLE; +if ( count($sort_by) ) +{ + $query .= ' ORDER BY '.$sort_by[0]; +} +$result = pwg_query($query); +$deleted_permalinks=array(); +while ( $row=mysql_fetch_assoc($result) ) +{ + $row['name'] = get_cat_display_name_cache($row['cat_id']); + $row['U_DELETE'] = + add_url_params( + $url_del_base, + array( 'delete_permanent'=> $row['permalink'] ) + ); + $deleted_permalinks[] = $row; +} +$template->assign('deleted_permalinks', $deleted_permalinks); +$template->assign('U_HELP', get_root_url().'popuphelp.php?page=permalinks'); + +$template->assign_var_from_handle('ADMIN_CONTENT', 'permalinks'); +?> |