mirror of
https://github.com/Piwigo/Piwigo.git
synced 2026-07-20 08:33:03 +02:00
permalinks: admin fix on some tricky cases when setting a new permalinks.inc.php
permalinks: added ability to sort the permalink tables in the admin added new action in category_cats.inc.php git-svn-id: http://piwigo.org/svn/trunk@1873 68402e56-0260-453c-a942-63ccdbb3a9ee
This commit is contained in:
@@ -102,12 +102,13 @@ function set_cat_permalink( $cat_id, $permalink, $save )
|
||||
|
||||
$sanitized_permalink = preg_replace( '#[^a-zA-Z0-9_-]#', '' ,$permalink);
|
||||
if ( $sanitized_permalink != $permalink
|
||||
or preg_match( '#^(\d)+-?#', $permalink) )
|
||||
or preg_match( '#^(\d)+(-.*)?$#', $permalink) )
|
||||
{
|
||||
$page['errors'][] = l10n('Permalink_name_rule');
|
||||
return false;
|
||||
}
|
||||
|
||||
// check if the new permalink is actively used
|
||||
$existing_cat_id = get_cat_id_from_permalink( $permalink );
|
||||
if ( isset($existing_cat_id) )
|
||||
{
|
||||
@@ -126,35 +127,32 @@ function set_cat_permalink( $cat_id, $permalink, $save )
|
||||
}
|
||||
}
|
||||
|
||||
if ($save)
|
||||
// check if the new permalink was historically used
|
||||
$old_cat_id = get_cat_id_from_old_permalink($permalink, false);
|
||||
if ( isset($old_cat_id) and $old_cat_id!=$cat_id )
|
||||
{
|
||||
$old_cat_id = get_cat_id_from_old_permalink($permalink, false);
|
||||
if ( isset($old_cat_id) )
|
||||
{
|
||||
if ( $old_cat_id!=$cat_id )
|
||||
{
|
||||
$page['errors'][] =
|
||||
sprintf(
|
||||
l10n('Permalink_%s_histo_used_by_%s'),
|
||||
$permalink, $old_cat_id
|
||||
);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
$query = '
|
||||
DELETE FROM '.OLD_PERMALINKS_TABLE.'
|
||||
WHERE cat_id='.$cat_id.' AND permalink="'.$permalink.'"';
|
||||
pwg_query($query);
|
||||
}
|
||||
}
|
||||
$page['errors'][] =
|
||||
sprintf(
|
||||
l10n('Permalink_%s_histo_used_by_%s'),
|
||||
$permalink, $old_cat_id
|
||||
);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
if ( !delete_cat_permalink($cat_id, $save ) )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( isset($old_cat_id) )
|
||||
{// the new permalink must not be active and old at the same time
|
||||
assert( $old_cat_id==$cat_id );
|
||||
$query = '
|
||||
DELETE FROM '.OLD_PERMALINKS_TABLE.'
|
||||
WHERE cat_id='.$old_cat_id.' AND permalink="'.$permalink.'"';
|
||||
pwg_query($query);
|
||||
}
|
||||
|
||||
$query = '
|
||||
UPDATE '.CATEGORIES_TABLE.'
|
||||
SET permalink="'.$permalink.'"
|
||||
|
||||
+94
-12
@@ -23,6 +23,56 @@
|
||||
// | USA. |
|
||||
// +-----------------------------------------------------------------------+
|
||||
|
||||
function parse_sort_variables(
|
||||
$sortable_by, $default_field,
|
||||
$get_param, $get_rejects,
|
||||
$template_var )
|
||||
{
|
||||
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;
|
||||
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) );
|
||||
}
|
||||
$disp = '⇓'; // TODO: an small image is better
|
||||
}
|
||||
else
|
||||
{
|
||||
array_push($ret, $field);
|
||||
$disp = '<em>⇓</em>'; // TODO: an small image is better
|
||||
}
|
||||
if ( isset($template_var) )
|
||||
{
|
||||
$template->assign_var( $template_var.strtoupper($field),
|
||||
'<a href="'.$url.'" 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');
|
||||
@@ -48,6 +98,7 @@ DELETE FROM '.OLD_PERMALINKS_TABLE.'
|
||||
array_push($page['errors'], 'Cannot delete the old permalink !');
|
||||
}
|
||||
|
||||
|
||||
$template->set_filename('permalinks', 'admin/permalinks.tpl' );
|
||||
|
||||
$query = '
|
||||
@@ -59,30 +110,61 @@ 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, name, permalink
|
||||
SELECT id, permalink, uppercats, global_rank
|
||||
FROM '.CATEGORIES_TABLE.'
|
||||
WHERE permalink IS NOT NULL';
|
||||
WHERE permalink IS NOT NULL
|
||||
';
|
||||
if ( count($sort_by) and
|
||||
($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) )
|
||||
{
|
||||
$display_name = get_cat_display_name( array($row) );
|
||||
$template->assign_block_vars( 'permalink',
|
||||
array(
|
||||
'CAT_ID' => $row['id'],
|
||||
'CAT' => $display_name,
|
||||
'PERMALINK' => $row['permalink'],
|
||||
)
|
||||
);
|
||||
$row['name'] = get_cat_display_name_cache( $row['uppercats'] );
|
||||
$categories[] = $row;
|
||||
}
|
||||
|
||||
$url_del_base = get_root_url().'admin.php?page=permalinks';
|
||||
if ( !count($sort_by) or $sort_by[0]='name')
|
||||
{
|
||||
usort($categories, 'global_rank_compare');
|
||||
}
|
||||
foreach ($categories as $cat)
|
||||
{
|
||||
$template->assign_block_vars( 'permalink', $cat );
|
||||
}
|
||||
|
||||
|
||||
// --- 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_' );
|
||||
|
||||
$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);
|
||||
while ( $row=mysql_fetch_assoc($result) )
|
||||
{
|
||||
$row['display_name'] = get_cat_display_name_cache($row['cat_id']);
|
||||
$row['name'] = get_cat_display_name_cache($row['cat_id']);
|
||||
$row['U_DELETE'] =
|
||||
add_url_params(
|
||||
$url_del_base,
|
||||
|
||||
@@ -177,7 +177,7 @@ if (count($categories) > 0)
|
||||
{
|
||||
update_cats_with_filtered_data($categories);
|
||||
}
|
||||
|
||||
trigger_action('loc_begin_index_categories');
|
||||
if ($conf['subcatify'])
|
||||
{
|
||||
$template->set_filename('mainpage_categories', 'mainpage_categories.tpl');
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<h2>{lang:Permalinks}</h2>
|
||||
</div>
|
||||
|
||||
<form method="post">
|
||||
<form method="post" action="{F_ACTION}">
|
||||
<fieldset><legend>{lang:Add/delete a permalink}</legend>
|
||||
<label>Category:
|
||||
<select name="cat_id">
|
||||
@@ -33,15 +33,15 @@
|
||||
<h3>{lang:Permalinks}</h3>
|
||||
<table class="table2">
|
||||
<tr class="throw">
|
||||
<td>Id</td>
|
||||
<td>{lang:Category}</td>
|
||||
<td>{lang:Permalink}</td>
|
||||
<td>Id {SORT_ID}</td>
|
||||
<td>{lang:Category} {SORT_NAME}</td>
|
||||
<td>{lang:Permalink} {SORT_PERMALINK}</td>
|
||||
</tr>
|
||||
<!-- BEGIN permalink -->
|
||||
<tr>
|
||||
<td>{permalink.CAT_ID}</td>
|
||||
<td>{permalink.CAT}</td>
|
||||
<td>{permalink.PERMALINK}</td>
|
||||
<td>{permalink.id}</td>
|
||||
<td>{permalink.name}</td>
|
||||
<td>{permalink.permalink}</td>
|
||||
</tr>
|
||||
<!-- END permalink -->
|
||||
</table>
|
||||
@@ -49,18 +49,18 @@
|
||||
<h3>{lang:Permalink history}</h3>
|
||||
<table class="table2">
|
||||
<tr class="throw">
|
||||
<td>Id</td>
|
||||
<td>Id {SORT_OLD_CAT_ID}</td>
|
||||
<td>{lang:Category}</td>
|
||||
<td>{lang:Permalink}</td>
|
||||
<td>Deleted on</td>
|
||||
<td>Last hit</td>
|
||||
<td>Hit</td>
|
||||
<td>{lang:Permalink} {SORT_OLD_PERMALINK}</td>
|
||||
<td>Deleted on {SORT_OLD_DATE_DELETED}</td>
|
||||
<td>Last hit {SORT_OLD_LAST_HIT}</td>
|
||||
<td>Hit {SORT_OLD_HIT}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<!-- BEGIN deleted_permalink -->
|
||||
<tr>
|
||||
<td>{deleted_permalink.cat_id}</td>
|
||||
<td>{deleted_permalink.display_name}</td>
|
||||
<td>{deleted_permalink.name}</td>
|
||||
<td>{deleted_permalink.permalink}</td>
|
||||
<td>{deleted_permalink.date_deleted}</td>
|
||||
<td>{deleted_permalink.last_hit}</td>
|
||||
|
||||
Reference in New Issue
Block a user