Changeset 1873 for trunk/admin


Ignore:
Timestamp:
Mar 6, 2007, 3:07:15 AM (17 years ago)
Author:
rvelices
Message:

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

Location:
trunk/admin
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/admin/include/functions_permalinks.php

    r1866 r1873  
    103103  $sanitized_permalink = preg_replace( '#[^a-zA-Z0-9_-]#', '' ,$permalink);
    104104  if ( $sanitized_permalink != $permalink
    105       or preg_match( '#^(\d)+-?#', $permalink) )
     105      or preg_match( '#^(\d)+(-.*)?$#', $permalink) )
    106106  {
    107107    $page['errors'][] = l10n('Permalink_name_rule');
     
    109109  }
    110110 
     111  // check if the new permalink is actively used
    111112  $existing_cat_id = get_cat_id_from_permalink( $permalink );
    112113  if ( isset($existing_cat_id) )
     
    127128  }
    128129
    129   if ($save)
     130  // check if the new permalink was historically used
     131  $old_cat_id = get_cat_id_from_old_permalink($permalink, false);
     132  if ( isset($old_cat_id) and $old_cat_id!=$cat_id )
    130133  {
    131     $old_cat_id = get_cat_id_from_old_permalink($permalink, false);
    132     if ( isset($old_cat_id) )
    133     {
    134       if ( $old_cat_id!=$cat_id )
    135       {
    136         $page['errors'][] =
    137           sprintf(
    138             l10n('Permalink_%s_histo_used_by_%s'),
    139             $permalink, $old_cat_id
    140           );
    141         return false;
    142       }
    143       else
    144       {
    145         $query = '
    146 DELETE FROM '.OLD_PERMALINKS_TABLE.'
    147   WHERE cat_id='.$cat_id.' AND permalink="'.$permalink.'"';
    148         pwg_query($query);
    149       }
    150     }
     134    $page['errors'][] =
     135      sprintf(
     136        l10n('Permalink_%s_histo_used_by_%s'),
     137        $permalink, $old_cat_id
     138      );
     139    return false;
    151140  }
    152  
     141
    153142  if ( !delete_cat_permalink($cat_id, $save ) )
    154143  {
     
    156145  }
    157146
     147  if ( isset($old_cat_id) )
     148  {// the new permalink must not be active and old at the same time
     149    assert( $old_cat_id==$cat_id );
     150    $query = '
     151DELETE FROM '.OLD_PERMALINKS_TABLE.'
     152  WHERE cat_id='.$old_cat_id.' AND permalink="'.$permalink.'"';
     153    pwg_query($query);
     154  }
     155 
    158156  $query = '
    159157UPDATE '.CATEGORIES_TABLE.'
  • trunk/admin/permalinks.php

    r1866 r1873  
    2323// | USA.                                                                  |
    2424// +-----------------------------------------------------------------------+
     25
     26function parse_sort_variables(
     27    $sortable_by, $default_field,
     28    $get_param, $get_rejects,
     29    $template_var )
     30{
     31  global $template;
     32 
     33  $url_components = parse_url( $_SERVER['REQUEST_URI'] );
     34
     35  $base_url = $url_components['path'];
     36 
     37  parse_str($url_components['query'], $vars);
     38  $is_first = true;
     39  foreach ($vars as $key => $value)
     40  {
     41    if (!in_array($key, $get_rejects) and $key!=$get_param)
     42    {
     43      $base_url .= $is_first ? '?' : '&';
     44      $is_first = false;
     45      $base_url .= $key.'='.urlencode($value);
     46    }
     47  }
     48
     49  $ret = array();
     50  foreach( $sortable_by as $field)
     51  {
     52    $url = $base_url;
     53    if ( $field !== @$_GET[$get_param] )
     54    {
     55      if ( !isset($default_field) or $default_field!=$field )
     56      { // the first should be the default
     57        $url = add_url_params($url, array($get_param=>$field) );
     58      }
     59      $disp = '⇓'; // TODO: an small image is better
     60    }
     61    else
     62    {
     63      array_push($ret, $field);
     64      $disp = '<em>&dArr;</em>'; // TODO: an small image is better
     65    }
     66    if ( isset($template_var) )
     67    {
     68      $template->assign_var( $template_var.strtoupper($field),
     69            '<a href="'.$url.'" title="'.l10n('Sort order').'">'.$disp.'</a>'
     70         );
     71    }
     72  }
     73  return $ret;
     74}
    2575
    2676if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
     
    4999}
    50100
     101
    51102$template->set_filename('permalinks', 'admin/permalinks.tpl' );
    52103
     
    60111display_select_cat_wrapper( $query, $selected_cat, 'categories', false );
    61112
     113
     114// --- generate display of active permalinks -----------------------------------
     115$sort_by = parse_sort_variables(
     116    array('id', 'name', 'permalink'), 'name',
     117    'psf',
     118    array('delete_permanent'),
     119    'SORT_' );
     120
    62121$query = '
    63 SELECT id, name, permalink
     122SELECT id, permalink, uppercats, global_rank
    64123  FROM '.CATEGORIES_TABLE.'
    65   WHERE permalink IS NOT NULL';
     124  WHERE permalink IS NOT NULL
     125';
     126if ( count($sort_by) and
     127      ($sort_by[0]=='id' or $sort_by[0]=='permalink')
     128    )
     129{
     130  $query .= ' ORDER BY '.$sort_by[0];
     131}
     132$categories=array();
    66133$result=pwg_query($query);
    67134while ( $row=mysql_fetch_assoc($result) )
    68135{
    69   $display_name = get_cat_display_name( array($row) );
    70   $template->assign_block_vars( 'permalink',
    71     array(
    72       'CAT_ID' => $row['id'],
    73       'CAT' => $display_name,
    74       'PERMALINK' => $row['permalink'],
    75     )
    76     );
     136  $row['name'] = get_cat_display_name_cache( $row['uppercats'] );
     137  $categories[] = $row;
    77138}
    78139
     140if ( !count($sort_by) or $sort_by[0]='name')
     141{
     142  usort($categories, 'global_rank_compare');
     143}
     144foreach ($categories as $cat)
     145{
     146  $template->assign_block_vars( 'permalink', $cat );
     147}
     148
     149
     150// --- generate display of old permalinks --------------------------------------
     151
     152$sort_by = parse_sort_variables(
     153    array('cat_id','permalink','date_deleted','last_hit','hit'), null,
     154    'dpsf',
     155    array('delete_permanent'),
     156    'SORT_OLD_' );
     157
    79158$url_del_base = get_root_url().'admin.php?page=permalinks';
    80 
    81159$query = 'SELECT * FROM '.OLD_PERMALINKS_TABLE;
     160if ( count($sort_by) )
     161{
     162  $query .= ' ORDER BY '.$sort_by[0];
     163}
    82164$result = pwg_query($query);
    83165while ( $row=mysql_fetch_assoc($result) )
    84166{
    85   $row['display_name'] = get_cat_display_name_cache($row['cat_id']);
     167  $row['name'] = get_cat_display_name_cache($row['cat_id']);
    86168  $row['U_DELETE'] =
    87169      add_url_params(
Note: See TracChangeset for help on using the changeset viewer.