mirror of
https://github.com/Piwigo/Piwigo.git
synced 2026-08-07 17:23:04 +02:00
URL rewriting: capable of fully working with urls without ?
URL rewriting: works with image file instead of image id (change make_picture_url to generate urls with file name instead of image id) URL rewriting: completely works with category/best_rated and picture/best_rated/534 (change 'category.php?' to 'category' in make_index_url and 'picture.php?' to 'picture' in make_picture_url to see it) fix: picture category display in upper bar fix: function rate_picture variables and use of the new user type fix: caddie icon appears now on category page fix: admin element_set sql query was using storage_category_id column (column has moved to #image_categories) fix: replaced some old $_GET[xxx] with $page[xxx] fix: pictures have metadata url (use ? parameter - might change later) git-svn-id: http://piwigo.org/svn/trunk@1092 68402e56-0260-453c-a942-63ccdbb3a9ee
This commit is contained in:
@@ -261,8 +261,14 @@ SELECT DISTINCT('.$this->calendar_levels[$level]['sql']
|
||||
}
|
||||
}
|
||||
|
||||
$dates = $page['chronology_date'];
|
||||
while ($level<count($dates))
|
||||
{
|
||||
array_pop($dates);
|
||||
}
|
||||
|
||||
$nav_bar = $this->get_nav_bar_from_items(
|
||||
$page['chronology_date'],
|
||||
$dates,
|
||||
$level_items,
|
||||
null,
|
||||
'calItem',
|
||||
|
||||
@@ -224,7 +224,7 @@ function build_global_calendar()
|
||||
$query.= $this->get_date_where();
|
||||
$query.= '
|
||||
GROUP BY period
|
||||
ORDER BY YEAR('.$this->date_field.') DESC';
|
||||
ORDER BY YEAR('.$this->date_field.') DESC, MONTH('.$this->date_field.')';
|
||||
|
||||
$result = pwg_query($query);
|
||||
$items=array();
|
||||
@@ -350,7 +350,9 @@ SELECT file,tn_ext,path, width, height, DAYOFWEEK('.$this->date_field.')-1 as do
|
||||
|
||||
$row = mysql_fetch_array(pwg_query($query));
|
||||
$items[$day]['tn_path'] = get_thumbnail_src($row['path'], @$row['tn_ext']);
|
||||
$items[$day]['tn_file'] = $row['file'];
|
||||
$items[$day]['file'] = $row['file'];
|
||||
$items[$day]['path'] = $row['path'];
|
||||
$items[$day]['tn_ext'] = @$row['tn_ext'];
|
||||
$items[$day]['width'] = $row['width'];
|
||||
$items[$day]['height'] = $row['height'];
|
||||
$items[$day]['dow'] = $row['dow'];
|
||||
@@ -445,7 +447,10 @@ SELECT file,tn_ext,path, width, height, DAYOFWEEK('.$this->date_field.')-1 as do
|
||||
}
|
||||
else
|
||||
{// item not an image (tn is either mime type or an image)
|
||||
$tn_size = @getimagesize($items[$day]['tn_path']);
|
||||
$thumb = get_thumbnail_src(
|
||||
$items[$day]['path'], @$items[$day]['tn_ext'], false
|
||||
);
|
||||
$tn_size = @getimagesize($thumb);
|
||||
}
|
||||
$tn_width = $tn_size[0];
|
||||
$tn_height = $tn_size[1];
|
||||
@@ -548,7 +553,7 @@ SELECT file,tn_ext,path, width, height, DAYOFWEEK('.$this->date_field.')-1 as do
|
||||
'thumbnails.line.thumbnail',
|
||||
array(
|
||||
'IMAGE'=>$data['tn_path'],
|
||||
'IMAGE_ALT'=>$data['tn_file'],
|
||||
'IMAGE_ALT'=>$data['file'],
|
||||
'IMAGE_TITLE'=>$thumbnail_title,
|
||||
'U_IMG_LINK'=>$url
|
||||
)
|
||||
|
||||
@@ -126,7 +126,7 @@ foreach ($pictures as $row)
|
||||
}
|
||||
case 'search' :
|
||||
{
|
||||
$name = replace_search($name, $_GET['search']);
|
||||
$name = replace_search($name, $page['search']);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
/**
|
||||
* This file is included by the main page to show thumbnails for recent_cats
|
||||
* category
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
// retrieving categories recently update, ie containing pictures added
|
||||
@@ -71,7 +71,7 @@ while ( $row = mysql_fetch_array( $result ) )
|
||||
'IMAGE' => get_thumbnail_src($row['path'], @$row['tn_ext']),
|
||||
'IMAGE_ALT' => $row['file'],
|
||||
'IMAGE_TITLE' => $lang['hint_category'],
|
||||
|
||||
|
||||
'U_IMG_LINK' => make_index_url(
|
||||
array(
|
||||
'category' => $row['category_id'],
|
||||
@@ -83,10 +83,10 @@ while ( $row = mysql_fetch_array( $result ) )
|
||||
$template->assign_block_vars(
|
||||
'thumbnails.line.thumbnail.category_name',
|
||||
array(
|
||||
'NAME' => get_cat_display_name_cache($row['uppercats'], '', false),
|
||||
'NAME' => get_cat_display_name_cache($row['uppercats'], null, false),
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
// create a new line ?
|
||||
if (++$row_number == $user['nb_image_line'])
|
||||
{
|
||||
|
||||
@@ -61,7 +61,7 @@ if( !get_magic_quotes_gpc() )
|
||||
}
|
||||
@reset($_GET);
|
||||
}
|
||||
|
||||
|
||||
if( is_array($_POST) )
|
||||
{
|
||||
while( list($k, $v) = each($_POST) )
|
||||
|
||||
@@ -202,7 +202,7 @@ function get_dirs($directory)
|
||||
and $file != '..'
|
||||
and is_dir($directory.'/'.$file)
|
||||
and $file != 'CVS'
|
||||
and $file != '.svn')
|
||||
and $file != '.svn')
|
||||
{
|
||||
array_push($sub_dirs, $file);
|
||||
}
|
||||
@@ -356,7 +356,7 @@ function pwg_log( $file, $category, $picture = '' )
|
||||
if ($conf['log'])
|
||||
{
|
||||
if ( ($conf['history_admin'] ) or ( (! $conf['history_admin']) and (!is_admin()) ) )
|
||||
{
|
||||
{
|
||||
$login = ($user['id'] == $conf['guest_id'])
|
||||
? 'guest' : addslashes($user['username']);
|
||||
|
||||
@@ -1141,11 +1141,13 @@ function make_picture_URL($params)
|
||||
|
||||
$url =
|
||||
get_root_url().'picture.php?'
|
||||
.'/'.$params['image_id']
|
||||
.'/'.make_section_in_URL($params)
|
||||
;
|
||||
|
||||
$url = add_well_known_params_in_url($url, $params);
|
||||
$url.= '/'.
|
||||
$params['image_id']//.'-'.
|
||||
//get_filename_wo_extension($params['image_file']).'.htm'
|
||||
;
|
||||
return $url;
|
||||
}
|
||||
|
||||
|
||||
@@ -47,9 +47,9 @@ function check_restrictions($category_id)
|
||||
if (in_array($category_id, explode(',', $user['forbidden_categories'])))
|
||||
{
|
||||
$login_url =
|
||||
'./identification.php?redirect='
|
||||
get_root_url().'identification.php?redirect='
|
||||
.urlencode(urlencode($_SERVER['REQUEST_URI']));
|
||||
|
||||
|
||||
if (!$user['is_the_guest'])
|
||||
{
|
||||
die('Fatal: you are trying to reach a forbidden category');
|
||||
@@ -278,7 +278,7 @@ function display_select_categories($categories,
|
||||
if ($fullname)
|
||||
{
|
||||
$option = get_cat_display_name_cache($category['uppercats'],
|
||||
'',
|
||||
null,
|
||||
false);
|
||||
}
|
||||
else
|
||||
|
||||
@@ -66,6 +66,7 @@ function get_icon($date)
|
||||
$title .= $user['recent_period'];
|
||||
$title .= ' '.$lang['days'];
|
||||
$size = getimagesize( $icon_url );
|
||||
$icon_url = get_root_url().$icon_url;
|
||||
$output = '<img title="'.$title.'" src="'.$icon_url.'" class="icon" style="border:0;';
|
||||
$output.= 'height:'.$size[1].'px;width:'.$size[0].'px" alt="(!)" />';
|
||||
}
|
||||
@@ -244,7 +245,7 @@ function language_select($default, $select_name = "language")
|
||||
*
|
||||
* categories string returned contains categories as given in the input
|
||||
* array $cat_informations. $cat_informations array must be an association
|
||||
* of {category_id => category_name}. If url input parameter is empty,
|
||||
* of {category_id => category_name}. If url input parameter is null,
|
||||
* returns only the categories name without links.
|
||||
*
|
||||
* @param array cat_informations
|
||||
@@ -253,7 +254,7 @@ function language_select($default, $select_name = "language")
|
||||
* @return string
|
||||
*/
|
||||
function get_cat_display_name($cat_informations,
|
||||
$url = 'category.php?/category/',
|
||||
$url = '',
|
||||
$replace_space = true)
|
||||
{
|
||||
global $conf;
|
||||
@@ -271,10 +272,16 @@ function get_cat_display_name($cat_informations,
|
||||
$output.= $conf['level_separator'];
|
||||
}
|
||||
|
||||
if ($url == '')
|
||||
if ( !isset($url) )
|
||||
{
|
||||
$output.= $name;
|
||||
}
|
||||
elseif ($url == '')
|
||||
{
|
||||
$output.= '<a class=""';
|
||||
$output.= ' href="'.make_index_url( array('category'=>$id) ).'">';
|
||||
$output.= $name.'</a>';
|
||||
}
|
||||
else
|
||||
{
|
||||
$output.= '<a class=""';
|
||||
@@ -306,7 +313,7 @@ function get_cat_display_name($cat_informations,
|
||||
* @return string
|
||||
*/
|
||||
function get_cat_display_name_cache($uppercats,
|
||||
$url = 'category.php?/category/',
|
||||
$url = '',
|
||||
$replace_space = true)
|
||||
{
|
||||
global $cat_names, $conf;
|
||||
@@ -339,10 +346,16 @@ SELECT id,name
|
||||
$output.= $conf['level_separator'];
|
||||
}
|
||||
|
||||
if ($url == '')
|
||||
if ( !isset($url) )
|
||||
{
|
||||
$output.= $name;
|
||||
}
|
||||
elseif ($url == '')
|
||||
{
|
||||
$output.= '
|
||||
<a class=""
|
||||
href="'.make_index_url( array('category'=>$category_id) ).'">'.$name.'</a>';
|
||||
}
|
||||
else
|
||||
{
|
||||
$output.= '
|
||||
@@ -474,7 +487,7 @@ function parse_comment_content($content)
|
||||
}
|
||||
|
||||
function get_cat_display_name_from_id($cat_id,
|
||||
$url = 'category.php?/category/',
|
||||
$url = '',
|
||||
$replace_space = true)
|
||||
{
|
||||
$cat_info = get_cat_info($cat_id);
|
||||
|
||||
@@ -6,10 +6,9 @@
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | branch : BSF (Best So Far)
|
||||
// | file : $RCSfile$
|
||||
// | last update : $Date: 2006-03-15 03:26:25 +0100 (mer, 15 mar 2006) $
|
||||
// | last modifier : $Author: rvelices $
|
||||
// | revision : $Revision: 1081 $
|
||||
// | revision : $Revision: 1081 $
|
||||
// | last update : $Date$
|
||||
// | last modifier : $Author$
|
||||
// | revision : $Revision$
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | 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 |
|
||||
@@ -29,137 +28,126 @@
|
||||
/**
|
||||
* rate a picture by a user
|
||||
*
|
||||
* @param int user identifier
|
||||
* @param int image identifier
|
||||
* @param int rate
|
||||
* @return void
|
||||
*/
|
||||
function rate_picture($user_id, $image_id, $rate)
|
||||
function rate_picture($image_id, $rate)
|
||||
{
|
||||
global $conf;
|
||||
global $conf, $user;
|
||||
|
||||
$query = '
|
||||
SELECT status
|
||||
FROM '.USER_INFOS_TABLE.'
|
||||
WHERE user_id = '.$user_id.'
|
||||
;';
|
||||
list($user_status) = mysql_fetch_array(pwg_query($query));
|
||||
if (!isset($rate)
|
||||
or !$conf['rate']
|
||||
or !in_array($rate, $conf['rate_items']))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ('guest' == $user_status
|
||||
or 'generic' == $user_status)
|
||||
$user_anonymous = is_autorize_status(ACCESS_CLASSIC) ? false : true;
|
||||
|
||||
if ($user_anonymous and !$conf['rate_anonymous'])
|
||||
{
|
||||
$user_anonymous = true;
|
||||
return;
|
||||
}
|
||||
else
|
||||
|
||||
if ($user_anonymous)
|
||||
{
|
||||
$user_anonymous = false;
|
||||
}
|
||||
|
||||
if (isset($rate)
|
||||
and $conf['rate']
|
||||
and (!$user_anonymous or $conf['rate_anonymous'])
|
||||
and in_array($rate, $conf['rate_items']))
|
||||
{
|
||||
if ($user_anonymous)
|
||||
$ip_components = explode('.', $_SERVER["REMOTE_ADDR"]);
|
||||
if (count($ip_components) > 3)
|
||||
{
|
||||
$ip_components = explode('.', $_SERVER["REMOTE_ADDR"]);
|
||||
if (count($ip_components) > 3)
|
||||
{
|
||||
array_pop($ip_components);
|
||||
}
|
||||
$anonymous_id = implode ('.', $ip_components);
|
||||
|
||||
if (isset($_COOKIE['pwg_anonymous_rater']))
|
||||
{
|
||||
if ($anonymous_id != $_COOKIE['pwg_anonymous_rater'])
|
||||
{ // client has changed his IP adress or he's trying to fool us
|
||||
$query = '
|
||||
array_pop($ip_components);
|
||||
}
|
||||
$anonymous_id = implode ('.', $ip_components);
|
||||
|
||||
if (isset($_COOKIE['pwg_anonymous_rater']))
|
||||
{
|
||||
if ($anonymous_id != $_COOKIE['pwg_anonymous_rater'])
|
||||
{ // client has changed his IP adress or he's trying to fool us
|
||||
$query = '
|
||||
SELECT element_id
|
||||
FROM '.RATE_TABLE.'
|
||||
WHERE user_id = '.$user['id'].'
|
||||
AND anonymous_id = \''.$anonymous_id.'\'
|
||||
;';
|
||||
$already_there = array_from_query($query, 'element_id');
|
||||
|
||||
if (count($already_there) > 0)
|
||||
{
|
||||
$query = '
|
||||
$already_there = array_from_query($query, 'element_id');
|
||||
|
||||
if (count($already_there) > 0)
|
||||
{
|
||||
$query = '
|
||||
DELETE
|
||||
FROM '.RATE_TABLE.'
|
||||
WHERE user_id = '.$user['id'].'
|
||||
AND anonymous_id = \''.$_COOKIE['pwg_anonymous_rater'].'\'
|
||||
AND element_id NOT IN ('.implode(',', $already_there).')
|
||||
;';
|
||||
pwg_query($query);
|
||||
}
|
||||
pwg_query($query);
|
||||
}
|
||||
|
||||
$query = '
|
||||
$query = '
|
||||
UPDATE
|
||||
'.RATE_TABLE.'
|
||||
SET anonymous_id = \'' .$anonymous_id.'\'
|
||||
WHERE user_id = '.$user['id'].'
|
||||
AND anonymous_id = \'' . $_COOKIE['pwg_anonymous_rater'].'\'
|
||||
;';
|
||||
pwg_query($query);
|
||||
pwg_query($query);
|
||||
|
||||
setcookie(
|
||||
setcookie(
|
||||
'pwg_anonymous_rater',
|
||||
$anonymous_id,
|
||||
strtotime('+10 years'),
|
||||
cookie_path()
|
||||
);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
setcookie(
|
||||
);
|
||||
} // end client changed ip
|
||||
} // end client has cookie
|
||||
else
|
||||
{
|
||||
setcookie(
|
||||
'pwg_anonymous_rater',
|
||||
$anonymous_id,
|
||||
strtotime('+10 years'),
|
||||
cookie_path()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
$query = '
|
||||
} // end anonymous user
|
||||
$query = '
|
||||
DELETE
|
||||
FROM '.RATE_TABLE.'
|
||||
WHERE element_id = '.$image_id.'
|
||||
AND user_id = '.$user_id.'
|
||||
AND user_id = '.$user['id'].'
|
||||
';
|
||||
if (isset($anonymous_id))
|
||||
{
|
||||
$query.= ' AND anonymous_id = \''.$anonymous_id.'\'';
|
||||
}
|
||||
pwg_query($query);
|
||||
$query = '
|
||||
if (isset($anonymous_id))
|
||||
{
|
||||
$query.= ' AND anonymous_id = \''.$anonymous_id.'\'';
|
||||
}
|
||||
pwg_query($query);
|
||||
$query = '
|
||||
INSERT
|
||||
INTO '.RATE_TABLE.'
|
||||
(user_id,anonymous_id,element_id,rate,date)
|
||||
VALUES
|
||||
('
|
||||
.$user_id.','
|
||||
.(isset($anonymous_id) ? '\''.$anonymous_id.'\'' : "''").','
|
||||
.$image_id.','
|
||||
.$rate
|
||||
.',NOW())
|
||||
.$user['id'].','
|
||||
.(isset($anonymous_id) ? '\''.$anonymous_id.'\'' : "''").','
|
||||
.$image_id.','
|
||||
.$rate
|
||||
.',NOW())
|
||||
;';
|
||||
pwg_query($query);
|
||||
|
||||
// update of images.average_rate field
|
||||
$query = '
|
||||
pwg_query($query);
|
||||
|
||||
// update of images.average_rate field
|
||||
$query = '
|
||||
SELECT ROUND(AVG(rate),2) AS average_rate
|
||||
FROM '.RATE_TABLE.'
|
||||
WHERE element_id = '.$image_id.'
|
||||
;';
|
||||
$row = mysql_fetch_array(pwg_query($query));
|
||||
$query = '
|
||||
$row = mysql_fetch_array(pwg_query($query));
|
||||
$query = '
|
||||
UPDATE '.IMAGES_TABLE.'
|
||||
SET average_rate = '.$row['average_rate'].'
|
||||
WHERE id = '.$image_id.'
|
||||
;';
|
||||
pwg_query($query);
|
||||
}
|
||||
pwg_query($query);
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -81,11 +81,26 @@ function cookie_path()
|
||||
if ( isset($_SERVER['REDIRECT_URL']) )
|
||||
{ // mod_rewrite is activated for upper level directories. we must set the
|
||||
// cookie to the path shown in the browser otherwise it will be discarded.
|
||||
$scr = $_SERVER['REDIRECT_URL'];
|
||||
if ( isset($_SERVER['PATH_INFO']) )
|
||||
{
|
||||
$idx = strpos( $_SERVER['REDIRECT_URL'], $_SERVER['PATH_INFO'] );
|
||||
if ($idx !== false)
|
||||
{
|
||||
$scr = substr($_SERVER['REDIRECT_URL'], 0, $idx);
|
||||
}
|
||||
else
|
||||
{//this should never happen
|
||||
$scr='//';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$scr = $_SERVER['REDIRECT_URL'];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$scr = $_SERVER['PHP_SELF'];
|
||||
$scr = $_SERVER['SCRIPT_NAME'];
|
||||
}
|
||||
return substr($scr,0,strrpos( $scr,'/'));
|
||||
}
|
||||
|
||||
+13
-14
@@ -29,12 +29,8 @@ $template->set_filenames(array('tail'=>'footer.tpl'));
|
||||
$template->assign_vars(
|
||||
array(
|
||||
'VERSION' => $conf['show_version'] ? PHPWG_VERSION : '',
|
||||
|
||||
'L_GEN_TIME' => $lang['generation_time'],
|
||||
'L_SQL_QUERIES_IN' => $lang['sql_queries_in'],
|
||||
'L_SEND_MAIL' => $lang['send_mail'],
|
||||
|
||||
'L_TITLE_MAIL' => urlencode($lang['title_send_mail']),
|
||||
'L_POWERED_BY'=>$lang['powered_by']
|
||||
));
|
||||
|
||||
//--------------------------------------------------------------------- contact
|
||||
@@ -50,6 +46,7 @@ if (!$user['is_the_guest'])
|
||||
}
|
||||
|
||||
//------------------------------------------------------------- generation time
|
||||
$debug_vars = array();
|
||||
if ($conf['show_gt'])
|
||||
{
|
||||
$time = get_elapsed_time($t2, get_moment());
|
||||
@@ -59,20 +56,22 @@ if ($conf['show_gt'])
|
||||
$page['count_queries'] = 0;
|
||||
$page['queries_time'] = 0;
|
||||
}
|
||||
|
||||
$template->assign_block_vars(
|
||||
'debug',
|
||||
|
||||
$debug_vars = array_merge($debug_vars,
|
||||
array('TIME' => $time,
|
||||
'NB_QUERIES' => $page['count_queries'],
|
||||
'SQL_TIME' => number_format($page['queries_time'],3,'.',' ').' s'));
|
||||
'SQL_TIME' => number_format($page['queries_time'],3,'.',' ').' s')
|
||||
);
|
||||
}
|
||||
|
||||
if ($conf['show_queries'])
|
||||
if ($conf['show_queries'])
|
||||
{
|
||||
$template->assign_block_vars(
|
||||
'debug',
|
||||
array('QUERIES_LIST' => $debug)
|
||||
);
|
||||
$debug_vars = array_merge($debug_vars, array('QUERIES_LIST' => $debug) );
|
||||
}
|
||||
|
||||
if ( !empty($debug_vars) )
|
||||
{
|
||||
$template->assign_block_vars('debug',$debug_vars );
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
@@ -6,9 +6,9 @@
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | branch : BSF (Best So Far)
|
||||
// | file : $RCSfile$
|
||||
// | last update : $Date: 2006-03-09 00:14:53 +0100 (jeu, 09 mar 2006) $
|
||||
// | last modifier : $Author: rub $
|
||||
// | revision : $Revision: 1070 $
|
||||
// | last update : $Date$
|
||||
// | last modifier : $Author$
|
||||
// | revision : $Revision$
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | 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 |
|
||||
@@ -27,10 +27,10 @@
|
||||
|
||||
/**
|
||||
* This file is included by the picture page to manage picture metadata
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
if ($metadata_showable and isset($_GET['show_metadata']))
|
||||
if ($metadata_showable and isset($_GET['metadata']))
|
||||
{
|
||||
include_once(PHPWG_ROOT_PATH.'/include/functions_metadata.inc.php');
|
||||
$template->assign_block_vars('metadata', array());
|
||||
@@ -41,7 +41,7 @@ if ($metadata_showable and isset($_GET['show_metadata']))
|
||||
die('Exif extension not available, admin should disable exif display');
|
||||
}
|
||||
|
||||
if ($exif = @read_exif_data($picture['current']['src']))
|
||||
if ($exif = @read_exif_data($picture['current']['src_file_system']))
|
||||
{
|
||||
$template->assign_block_vars(
|
||||
'metadata.headline',
|
||||
|
||||
@@ -6,9 +6,9 @@
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | branch : BSF (Best So Far)
|
||||
// | file : $RCSfile$
|
||||
// | last update : $Date: 2006-03-09 00:14:53 +0100 (jeu, 09 mar 2006) $
|
||||
// | last modifier : $Author: rub $
|
||||
// | revision : $Revision: 1070 $
|
||||
// | last update : $Date$
|
||||
// | last modifier : $Author$
|
||||
// | revision : $Revision$
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | 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 |
|
||||
@@ -54,7 +54,7 @@ SELECT COUNT(rate) AS count
|
||||
);
|
||||
}
|
||||
|
||||
if ($conf['rate_anonymous'] or !$user['is_the_guest'])
|
||||
if ($conf['rate_anonymous'] or is_autorize_status(ACCESS_CLASSIC) )
|
||||
{
|
||||
if ($row['count']>0)
|
||||
{
|
||||
@@ -63,7 +63,7 @@ SELECT COUNT(rate) AS count
|
||||
WHERE element_id = '.$page['image_id'] . '
|
||||
AND user_id = '.$user['id'] ;
|
||||
|
||||
if ($user['is_the_guest'])
|
||||
if ( !is_autorize_status(ACCESS_CLASSIC) )
|
||||
{
|
||||
$ip_components = explode('.', $_SERVER['REMOTE_ADDR']);
|
||||
if ( count($ip_components)>3 )
|
||||
|
||||
@@ -6,9 +6,9 @@
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | branch : BSF (Best So Far)
|
||||
// | file : $RCSfile$
|
||||
// | last update : $Date: 2006-01-27 02:11:43 +0100 (ven, 27 jan 2006) $
|
||||
// | last modifier : $Author: rvelices $
|
||||
// | revision : $Revision: 1014 $
|
||||
// | last update : $Date$
|
||||
// | last modifier : $Author$
|
||||
// | revision : $Revision$
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | 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 |
|
||||
@@ -84,17 +84,35 @@ $tokens = explode(
|
||||
|
||||
$next_token = 0;
|
||||
if (basename($_SERVER['SCRIPT_NAME']) == 'picture.php')
|
||||
{
|
||||
|
||||
// the first token must be the numeric identifier of the picture
|
||||
preg_match('/(\d+)/', $tokens[$next_token], $matches);
|
||||
if (!isset($matches[1]))
|
||||
{ // the last token must be the identifier for the picture
|
||||
$token = array_pop($tokens);
|
||||
if ( is_numeric($token) )
|
||||
{
|
||||
die('Fatal: picture identifier is missing');
|
||||
$page['image_id'] = $token;
|
||||
}
|
||||
else
|
||||
{
|
||||
preg_match('/^(\d+-)?((.*)[_\.]html?)?$/', $token, $matches);
|
||||
if ( isset($matches[1]) and is_numeric($matches[1]) )
|
||||
{
|
||||
$page['image_id'] = $matches[1];
|
||||
if ( !empty($matches[3]) )
|
||||
{
|
||||
$page['image_file'] = $matches[3];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( !empty($matches[3]) )
|
||||
{
|
||||
$page['image_file'] = $matches[3];
|
||||
}
|
||||
else
|
||||
{
|
||||
die('Fatal: picture identifier is missing');
|
||||
}
|
||||
}
|
||||
}
|
||||
$page['image_id'] = $matches[1];
|
||||
|
||||
$next_token++;
|
||||
}
|
||||
|
||||
if (0 === strpos($tokens[$next_token], 'cat'))
|
||||
@@ -273,11 +291,11 @@ if ('categories' == $page['section'])
|
||||
'cat_id_uppercat' => $result['id_uppercat'],
|
||||
'uppercats' => $result['uppercats'],
|
||||
|
||||
'title' => get_cat_display_name($result['name'], '', false),
|
||||
'title' => get_cat_display_name($result['name'], null, false),
|
||||
)
|
||||
);
|
||||
|
||||
if (!isset($_GET['calendar']))
|
||||
if (!isset($page['chronology_field']))
|
||||
{
|
||||
$query = '
|
||||
SELECT image_id
|
||||
@@ -321,7 +339,7 @@ else
|
||||
SELECT DISTINCT(id)
|
||||
FROM '.IMAGES_TABLE.'
|
||||
INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON id = ic.image_id
|
||||
WHERE '.get_sql_search_clause($_GET['search']).'
|
||||
WHERE '.get_sql_search_clause($page['search']).'
|
||||
AND '.$forbidden.'
|
||||
'.$conf['order_by'].'
|
||||
;';
|
||||
@@ -489,4 +507,19 @@ if (isset($page['chronology_field']))
|
||||
initialize_calendar();
|
||||
}
|
||||
|
||||
if (basename($_SERVER['SCRIPT_NAME']) == 'picture.php'
|
||||
and !isset($page['image_id']) )
|
||||
{
|
||||
$query = '
|
||||
SELECT id,file
|
||||
FROM '.IMAGES_TABLE .'
|
||||
WHERE id IN ('.implode(',',$page['items']).')
|
||||
AND file LIKE "' . $page['image_file'] . '.%" ESCAPE "|"'
|
||||
;
|
||||
$result = pwg_query($query);
|
||||
if (mysql_num_rows($result)>0)
|
||||
{
|
||||
list($page['image_id'], $page['image_file']) = mysql_fetch_row($result);
|
||||
}
|
||||
}
|
||||
?>
|
||||
+60
-59
@@ -34,7 +34,7 @@
|
||||
class Template {
|
||||
|
||||
var $classname = "Template";
|
||||
|
||||
|
||||
// variable that holds all the data we'll be substituting into
|
||||
// the compiled templates.
|
||||
// ...
|
||||
@@ -43,22 +43,22 @@ class Template {
|
||||
// if it's a root-level variable, it'll be like this:
|
||||
// $this->_tpldata[.][0][varname] == value
|
||||
var $_tpldata = array();
|
||||
|
||||
|
||||
// Hash of filenames for each template handle.
|
||||
var $files = array();
|
||||
|
||||
|
||||
// Root template directory.
|
||||
var $root = "";
|
||||
|
||||
// this will hash handle names to the compiled code for that handle.
|
||||
var $compiled_code = array();
|
||||
|
||||
|
||||
// This will hold the uncompiled code for that handle.
|
||||
var $uncompiled_code = array();
|
||||
|
||||
// output
|
||||
var $output = '';
|
||||
|
||||
|
||||
/**
|
||||
* Constructor. Simply sets the root dir.
|
||||
*
|
||||
@@ -67,7 +67,7 @@ class Template {
|
||||
{
|
||||
$this->set_rootdir($root);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Destroys this template object. Should be called when you're done with
|
||||
* it, in order to clear out the template data so you can load/parse a new
|
||||
@@ -87,11 +87,11 @@ class Template {
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
$this->root = $dir;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets the template filenames for handles. $filename_array should be a
|
||||
* hash of handle => filename pairs.
|
||||
@@ -102,17 +102,17 @@ class Template {
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
reset($filename_array);
|
||||
while(list($handle, $filename) = each($filename_array))
|
||||
{
|
||||
$this->files[$handle] = $this->make_filename($filename);
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Load the file for the handle, compile the file, and run the compiled
|
||||
* code. This will print out the results of executing the template.
|
||||
@@ -123,7 +123,7 @@ class Template {
|
||||
{
|
||||
die("Template->pparse(): Couldn't load template file for handle $handle");
|
||||
}
|
||||
|
||||
|
||||
// actually compile the template now.
|
||||
if (!isset($this->compiled_code[$handle]) || empty($this->compiled_code[$handle]))
|
||||
{
|
||||
@@ -146,7 +146,7 @@ class Template {
|
||||
{
|
||||
die("Template->pparse(): Couldn't load template file for handle $handle");
|
||||
}
|
||||
|
||||
|
||||
// actually compile the template now.
|
||||
if (!isset($this->compiled_code[$handle]) || empty($this->compiled_code[$handle]))
|
||||
{
|
||||
@@ -169,7 +169,7 @@ class Template {
|
||||
{
|
||||
echo $this->output;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Inserts the uncompiled code for $handle as the value of $varname in the
|
||||
* root-level. This can be used to effectively include a template in the
|
||||
@@ -184,19 +184,19 @@ class Template {
|
||||
{
|
||||
die("Template->assign_var_from_handle(): Couldn't load template file for handle $handle");
|
||||
}
|
||||
|
||||
|
||||
// Compile it, with the "no echo statements" option on.
|
||||
$_str = "";
|
||||
$code = $this->compile($this->uncompiled_code[$handle], true, '_str');
|
||||
|
||||
|
||||
// evaluate the variable assignment.
|
||||
eval($code);
|
||||
// assign the value of the generated variable to the given varname.
|
||||
$this->assign_var($varname, $_str);
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Block-level variable assignment. Adds a new block iteration with the
|
||||
* given variable assignments. Note that this should only be called once
|
||||
@@ -220,7 +220,7 @@ class Template {
|
||||
// We're adding a new iteration to this block with the given
|
||||
// variable assignments.
|
||||
$str .= '[\'' . $blocks[$blockcount] . '.\'][] = $vararray;';
|
||||
|
||||
|
||||
// Now we evaluate this assignment we've built up.
|
||||
eval($str);
|
||||
}
|
||||
@@ -230,10 +230,10 @@ class Template {
|
||||
// variable assignments we were given.
|
||||
$this->_tpldata[$blockname . '.'][] = $vararray;
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Root-level variable assignment. Adds to current assignments, overriding
|
||||
* any existing variable assignment with the same name.
|
||||
@@ -245,10 +245,10 @@ class Template {
|
||||
{
|
||||
$this->_tpldata['.'][0][$key] = $val;
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Root-level variable assignment. Adds to current assignments, overriding
|
||||
* any existing variable assignment with the same name.
|
||||
@@ -256,11 +256,11 @@ class Template {
|
||||
function assign_var($varname, $varval)
|
||||
{
|
||||
$this->_tpldata['.'][0][$varname] = $varval;
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Generates a full path+filename for the given filename, which can either
|
||||
* be an absolute name, or a name relative to the rootdir for this
|
||||
@@ -274,7 +274,7 @@ class Template {
|
||||
{
|
||||
$filename = $this->root.'/'.$filename;
|
||||
}
|
||||
|
||||
|
||||
if (!file_exists($filename))
|
||||
{
|
||||
die("Template->make_filename(): Error - file $filename does not exist");
|
||||
@@ -282,8 +282,8 @@ class Template {
|
||||
|
||||
return $filename;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* If not already done, load the file for the given handle and populate
|
||||
* the uncompiled_code[] hash with its code. Do not compile.
|
||||
@@ -297,15 +297,15 @@ class Template {
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
// If we don't have a file assigned to this handle, die.
|
||||
if (!isset($this->files[$handle]))
|
||||
{
|
||||
die("Template->loadfile(): No file specified for handle $handle");
|
||||
}
|
||||
|
||||
|
||||
$filename = $this->files[$handle];
|
||||
|
||||
|
||||
$str = implode("", @file($filename));
|
||||
if (empty($str))
|
||||
{
|
||||
@@ -328,17 +328,18 @@ class Template {
|
||||
*/
|
||||
function compile($code, $do_not_echo = false, $retvar = '')
|
||||
{
|
||||
$code = preg_replace('/\{pwg_root\}/e', "get_root_url()", $code);
|
||||
// PWG specific : communication between template and $lang
|
||||
$code = preg_replace('/\{lang:([^}]+)\}/e', "l10n('$1')", $code);
|
||||
// PWG specific : expand themeconf.inc.php variables
|
||||
$code = preg_replace('/\{themeconf:([^}]+)\}/e', "get_themeconf('$1')", $code);
|
||||
|
||||
|
||||
// replace \ with \\ and then ' with \'.
|
||||
$code = str_replace('\\', '\\\\', $code);
|
||||
$code = str_replace('\'', '\\\'', $code);
|
||||
|
||||
|
||||
// change template varrefs into PHP varrefs
|
||||
|
||||
|
||||
// This one will handle varrefs WITH namespaces
|
||||
$varrefs = array();
|
||||
preg_match_all('#\{(([a-z0-9\-_]+?\.)+?)([a-z0-9\-_]+?)\}#is', $code, $varrefs);
|
||||
@@ -348,20 +349,20 @@ class Template {
|
||||
$namespace = $varrefs[1][$i];
|
||||
$varname = $varrefs[3][$i];
|
||||
$new = $this->generate_block_varref($namespace, $varname);
|
||||
|
||||
|
||||
$code = str_replace($varrefs[0][$i], $new, $code);
|
||||
}
|
||||
|
||||
|
||||
// This will handle the remaining root-level varrefs
|
||||
$code = preg_replace('#\{([a-z0-9\-_]*?)\}#is', '\' . ( ( isset($this->_tpldata[\'.\'][0][\'\1\']) ) ? $this->_tpldata[\'.\'][0][\'\1\'] : \'\' ) . \'', $code);
|
||||
|
||||
|
||||
// Break it up into lines.
|
||||
$code_lines = explode("\n", $code);
|
||||
|
||||
|
||||
$block_nesting_level = 0;
|
||||
$block_names = array();
|
||||
$block_names[0] = ".";
|
||||
|
||||
|
||||
// Second: prepend echo ', append ' . "\n"; to each line.
|
||||
$line_count = sizeof($code_lines);
|
||||
for ($i = 0; $i < $line_count; $i++)
|
||||
@@ -371,7 +372,7 @@ class Template {
|
||||
{
|
||||
$n[0] = $m[0];
|
||||
$n[1] = $m[1];
|
||||
|
||||
|
||||
// Added: dougk_ff7-Keeps templates from bombing if begin is on
|
||||
// the same line as end.. I think. :)
|
||||
if ( preg_match('#<!-- END (.*?) -->#', $code_lines[$i], $n) )
|
||||
@@ -388,7 +389,7 @@ class Template {
|
||||
else
|
||||
{
|
||||
// This block is nested.
|
||||
|
||||
|
||||
// Generate a namespace string for this block.
|
||||
$namespace = implode('.', $block_names);
|
||||
// strip leading period from root level..
|
||||
@@ -401,7 +402,7 @@ class Template {
|
||||
$code_lines[$i] .= "\n" . 'for ($_' . $n[1] . '_i = 0; $_' . $n[1] . '_i < $_' . $n[1] . '_count; $_' . $n[1] . '_i++)';
|
||||
$code_lines[$i] .= "\n" . '{';
|
||||
}
|
||||
|
||||
|
||||
// We have the end of a block.
|
||||
unset($block_names[$block_nesting_level]);
|
||||
$block_nesting_level--;
|
||||
@@ -424,7 +425,7 @@ class Template {
|
||||
else
|
||||
{
|
||||
// This block is nested.
|
||||
|
||||
|
||||
// Generate a namespace string for this block.
|
||||
$namespace = implode('.', $block_names);
|
||||
// strip leading period from root level..
|
||||
@@ -455,18 +456,18 @@ class Template {
|
||||
}
|
||||
else
|
||||
{
|
||||
$code_lines[$i] = '$' . $retvar . '.= \'' . $code_lines[$i] . '\' . "\\n";';
|
||||
$code_lines[$i] = '$' . $retvar . '.= \'' . $code_lines[$i] . '\' . "\\n";';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Bring it back into a single string of lines of code.
|
||||
$code = implode("\n", $code_lines);
|
||||
return $code ;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Generates a reference to the given variable inside the given (possibly
|
||||
* nested) block namespace. This is a string of the form: '
|
||||
@@ -478,21 +479,21 @@ class Template {
|
||||
{
|
||||
// Strip the trailing period.
|
||||
$namespace = substr($namespace, 0, strlen($namespace) - 1);
|
||||
|
||||
|
||||
// Get a reference to the data block for this namespace.
|
||||
$varref = $this->generate_block_data_ref($namespace, true);
|
||||
// Prepend the necessary code to stick this in an echo line.
|
||||
|
||||
|
||||
// Append the variable reference.
|
||||
$varref .= '[\'' . $varname . '\']';
|
||||
|
||||
|
||||
$varref = '\' . ( ( isset(' . $varref . ') ) ? ' . $varref . ' : \'\' ) . \'';
|
||||
|
||||
|
||||
return $varref;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Generates a reference to the array of data values for the given
|
||||
* (possibly nested) block namespace. This is a string of the form:
|
||||
@@ -520,10 +521,10 @@ class Template {
|
||||
{
|
||||
$varref .= '[$_' . $blocks[$blockcount] . '_i]';
|
||||
}
|
||||
|
||||
|
||||
return $varref;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
Reference in New Issue
Block a user