From 0971ce48d217b7cc8081ae70c4b041ab23fdf29c Mon Sep 17 00:00:00 2001 From: rvelices Date: Wed, 22 Mar 2006 01:01:47 +0000 Subject: 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 --- admin/element_set_global.php | 36 +++---- admin/picture_modify.php | 37 ++++---- admin/user_perm.php | 12 +-- category.php | 26 ++++-- comments.php | 7 +- include/calendar_base.class.php | 8 +- include/calendar_monthly.class.php | 13 ++- include/category_default.inc.php | 2 +- include/category_recent_cats.inc.php | 8 +- include/common.inc.php | 2 +- include/functions.inc.php | 10 +- include/functions_category.inc.php | 6 +- include/functions_html.inc.php | 25 +++-- include/functions_rate.inc.php | 140 +++++++++++++--------------- include/functions_session.inc.php | 19 +++- include/page_tail.php | 27 +++--- include/picture_metadata.inc.php | 12 +-- include/picture_rate.inc.php | 10 +- include/section_init.inc.php | 63 ++++++++++--- include/template.php | 119 +++++++++++------------ picture.php | 23 ++--- search_rules.php | 2 +- template/yoga/category.tpl | 16 ++-- template/yoga/footer.tpl | 6 +- template/yoga/header.tpl | 16 ++-- template/yoga/picture.tpl | 24 ++--- template/yoga/theme/clear/themeconf.inc.php | 6 +- template/yoga/theme/dark/themeconf.inc.php | 6 +- 28 files changed, 372 insertions(+), 309 deletions(-) diff --git a/admin/element_set_global.php b/admin/element_set_global.php index 40b5ac6cb..61ef2d6ee 100644 --- a/admin/element_set_global.php +++ b/admin/element_set_global.php @@ -28,9 +28,9 @@ /** * Management of elements set. Elements can belong to a category or to the * user caddie. - * + * */ - + if (!defined('PHPWG_ROOT_PATH')) { die('Hacking attempt!'); @@ -58,9 +58,9 @@ function get_elements_keywords($element_ids) { return array(); } - + $keywords = array(); - + $query = ' SELECT keywords FROM '.IMAGES_TABLE.' @@ -84,7 +84,7 @@ SELECT keywords if (isset($_POST['submit'])) { $collection = array(); - + // echo '
';
 //   print_r($_POST);
 //   echo '
'; @@ -136,7 +136,7 @@ SELECT image_id ) ); } - + mass_inserts( IMAGE_CATEGORY_TABLE, array('image_id', 'category_id'), @@ -170,7 +170,7 @@ SELECT image_id array($_POST['dissociate']), $destinations_of[ $_POST['dissociate'] ] ); - + // Eventually, deletion of associations $query = ' DELETE @@ -185,7 +185,7 @@ DELETE // have deleted the link between C and 1, while it should be kept due to // B. Who said "complicated"? check_links(); - + update_category($associated_categories); } @@ -205,7 +205,7 @@ DELETE array_push($dbfields['update'], $formfield); } } - + // updating elements is useful only if needed... if (count($dbfields['update']) > 0 and count($collection) > 0) { @@ -220,7 +220,7 @@ SELECT id, keywords { $data = array(); $data['id'] = $row['id']; - + if (!empty($_POST['add_keywords'])) { $data['keywords'] = @@ -241,7 +241,7 @@ SELECT id, keywords { $data['keywords'] = empty($row['keywords']) ? '' : $row['keywords']; } - + $data['keywords'] = implode( ',', @@ -287,7 +287,7 @@ SELECT id, keywords .'-'.$_POST['date_creation_day'] ; } - + array_push($datas, $data); } // echo '
'; print_r($datas); echo '
'; @@ -308,18 +308,18 @@ $base_url = PHPWG_ROOT_PATH.'admin.php'; $template->assign_vars( array( 'CATEGORIES_NAV'=>$page['title'], - + 'L_SUBMIT'=>$lang['submit'], 'U_COLS'=>$base_url.get_query_string_diff(array('cols')), 'U_DISPLAY'=>$base_url.get_query_string_diff(array('display')), - + 'U_UNIT_MODE' => $base_url .get_query_string_diff(array('mode','display')) .'&mode=unit', - + 'F_ACTION'=>$base_url.get_query_string_diff(array()), ) ); @@ -379,7 +379,7 @@ SELECT DISTINCT(category_id) AS id, c.name, uppercats, global_rank WHERE ic.image_id IN ('.implode(',', $page['cat_elements_id']).') AND ic.category_id = c.id AND ic.image_id = i.id - AND ic.category_id != i.storage_category_id + AND ic.is_storage = \'false\' ;'; display_select_cat_wrapper($query, array(), $blockname, true); } @@ -484,7 +484,7 @@ SELECT id,path,tn_ext while ($row = mysql_fetch_array($result)) { $src = get_thumbnail_src($row['path'], @$row['tn_ext']); - + $template->assign_block_vars( 'thumbnails.line.thumbnail', array( @@ -494,7 +494,7 @@ SELECT id,path,tn_ext 'TITLE' => 'TODO' ) ); - + // create a new line ? if (++$row_number == $page['cols']) { diff --git a/admin/picture_modify.php b/admin/picture_modify.php index 05412492c..be7497a07 100644 --- a/admin/picture_modify.php +++ b/admin/picture_modify.php @@ -127,7 +127,7 @@ if (isset($_POST['associate']) and count($_POST['cat_dissociated']) > 0) { $datas = array(); - + foreach ($_POST['cat_dissociated'] as $category_id) { array_push( @@ -138,7 +138,7 @@ if (isset($_POST['associate']) ) ); } - + mass_inserts( IMAGE_CATEGORY_TABLE, array('image_id', 'category_id'), @@ -166,7 +166,7 @@ if (isset($_POST['dissociate']) $destinations ); } - + $query = ' DELETE FROM '.IMAGE_CATEGORY_TABLE.' WHERE image_id = '.$_GET['image_id'].' @@ -213,6 +213,7 @@ SELECT * $row = mysql_fetch_array(pwg_query($query)); $storage_category_id = $row['category_id']; +$image_file = $row['file']; // Navigation path @@ -236,34 +237,34 @@ $template->assign_vars( '&image_id='.$_GET['image_id']. (isset($_GET['cat_id']) ? '&cat_id='.$_GET['cat_id'] : ''). '&sync_metadata=1', - + 'PATH'=>$row['path'], - + 'TN_SRC' => get_thumbnail_src($row['path'], @$row['tn_ext']), - + 'NAME' => isset($_POST['name']) ? stripslashes($_POST['name']) : @$row['name'], - + 'DIMENSIONS' => @$row['width'].' * '.@$row['height'], - + 'FILESIZE' => @$row['filesize'].' KB', - + 'REGISTRATION_DATE' => format_date($row['date_available'], 'mysql_datetime', false), - + 'AUTHOR' => isset($_POST['author']) ? $_POST['author'] : @$row['author'], - + 'CREATION_DATE' => $date, - + 'KEYWORDS' => isset($_POST['keywords']) ? stripslashes($_POST['keywords']) : @$row['keywords'], - + 'DESCRIPTION' => isset($_POST['description']) ? stripslashes($_POST['description']) : @$row['comment'], - + 'F_ACTION' => PHPWG_ROOT_PATH.'admin.php' .get_query_string_diff(array('sync_metadata')) @@ -292,7 +293,7 @@ else get_day_list('date_creation_day', $day); get_month_list('date_creation_month', $month); $template->assign_vars(array('DATE_CREATION_YEAR_VALUE' => $year)); - + $query = ' SELECT category_id, uppercats FROM '.IMAGE_CATEGORY_TABLE.' AS ic @@ -315,7 +316,7 @@ while ($row = mysql_fetch_array($result)) PHPWG_ROOT_PATH.'admin.php?page=cat_modify&cat_id=', false ); - + if ($row['category_id'] == $storage_category_id) { $template->assign_vars(array('STORAGE_CATEGORY' => $name)); @@ -354,6 +355,7 @@ if (isset($_GET['cat_id']) $url_img = make_picture_URL( array( 'image_id' => $_GET['image_id'], + 'image_file' => $image_file, 'category' => $_GET['cat_id'], ) ); @@ -365,6 +367,7 @@ else $url_img = make_picture_URL( array( 'image_id' => $_GET['image_id'], + 'image_file' => $image_file, 'category' => $category, ) ); @@ -381,7 +384,7 @@ if (isset($url_img)) ) ); } - + // associate to another category ? $query = ' SELECT id,name,uppercats,global_rank diff --git a/admin/user_perm.php b/admin/user_perm.php index fdd4be7eb..78409965e 100644 --- a/admin/user_perm.php +++ b/admin/user_perm.php @@ -92,19 +92,19 @@ SELECT id // an error (in SQL statement), so we need to know which categories are // accesible $authorized_ids = array(); - + $query = ' SELECT cat_id FROM '.USER_ACCESS_TABLE.' WHERE user_id = '.$page['user'].' ;'; $result = pwg_query($query); - + while ($row = mysql_fetch_array($result)) { array_push($authorized_ids, $row['cat_id']); } - + $inserts = array(); $to_autorize_ids = array_diff($private_uppercats, $authorized_ids); foreach ($to_autorize_ids as $to_autorize_id) @@ -137,7 +137,7 @@ $template->assign_vars( ), 'L_CAT_OPTIONS_TRUE'=>$lang['authorized'], 'L_CAT_OPTIONS_FALSE'=>$lang['forbidden'], - + 'F_ACTION' => PHPWG_ROOT_PATH. 'admin.php?page=user_perm'. @@ -177,7 +177,7 @@ if (mysql_num_rows($result) > 0) $template->assign_block_vars( 'groups.category', array( - 'NAME' => get_cat_display_name_cache($category['uppercats'], '', false) + 'NAME' => get_cat_display_name_cache($category['uppercats'], null, false) ) ); } @@ -197,7 +197,7 @@ if (count($group_authorized) > 0) $query_true.= ' ;'; display_select_cat_wrapper($query_true,array(),'category_option_true'); - + $result = pwg_query($query_true); $authorized_ids = array(); while ($row = mysql_fetch_array($result)) diff --git a/category.php b/category.php index d1c1624ac..58ae4e247 100644 --- a/category.php +++ b/category.php @@ -45,8 +45,7 @@ if ( isset( $_GET['act'] ) session_unset(); session_destroy(); setcookie(session_name(),'',0, cookie_path() ); - $url = 'category.php'; - redirect( $url ); + redirect( make_index_url() ); } //---------------------------------------------- change of image display order @@ -113,11 +112,7 @@ $template->set_filenames( array('category'=>'category.tpl') ); //-------------------------------------------------------------- category title if (isset($page['category'])) { - $template_title = get_cat_display_name( - $page['cat_name'], - 'category.php?/category/', - false - ); + $template_title = get_cat_display_name( $page['cat_name'], '', false ); } else { @@ -206,7 +201,7 @@ if ('search' == $page['section']) $template->assign_block_vars( 'search_rules', array( - 'URL' => PHPWG_ROOT_PATH.'/search_rules.php?search_id='.$page['search'], + 'URL' => get_root_url().'search_rules.php?search_id='.$page['search'], ) ); } @@ -264,7 +259,7 @@ if ($conf['rate']) $template->assign_block_vars( 'special_cat', array( - 'URL' => PHPWG_ROOT_PATH.'random.php', + 'URL' => get_root_url().'random.php', 'TITLE' => $lang['random_cat_hint'], 'NAME' => $lang['random_cat'] )); @@ -395,6 +390,17 @@ if (isset($page['category']) and is_admin()) ); } +if (is_admin() and !empty($page['items']) ) +{ + $template->assign_block_vars( + 'caddie', + array( + 'URL' => + add_url_param(duplicate_index_url(),'caddie=1') + ) + ); + } + //------------------------------------------------------ main part : thumbnails if (isset($page['thumbnails_include'])) { @@ -453,7 +459,7 @@ if (isset($page['category'])) // upload a picture in the category if ($page['cat_uploadable']) { - $url = PHPWG_ROOT_PATH.'upload.php?cat='.$page['category']; + $url = get_root_url().'upload.php?cat='.$page['category']; $template->assign_block_vars( 'upload', array( diff --git a/comments.php b/comments.php index 8719a58cc..bd332b46e 100644 --- a/comments.php +++ b/comments.php @@ -66,7 +66,7 @@ $since_options = array( 'clause' => '1=1') // stupid but generic ); -$page['since'] = isset($_GET['since']) ? $_GET['since'] : 1; +$page['since'] = isset($_GET['since']) ? $_GET['since'] : 3; // on which field sorting // @@ -393,7 +393,7 @@ SELECT id, uppercats { // name of the picture $name = get_cat_display_name_cache( - $categories[$comment['category_id']]['uppercats'], '', false); + $categories[$comment['category_id']]['uppercats'], null, false); $name.= $conf['level_separator']; if (!empty($elements[$comment['image_id']]['name'])) { @@ -411,9 +411,6 @@ SELECT id, uppercats ); // link to the full size picture - $url = PHPWG_ROOT_PATH.'picture.php?cat='.$comment['category_id']; - $url.= '&image_id='.$comment['image_id']; - $url = make_picture_url( array( 'category' => $comment['category_id'], diff --git a/include/calendar_base.class.php b/include/calendar_base.class.php index 5d358f4ad..ee17c1ac7 100644 --- a/include/calendar_base.class.php +++ b/include/calendar_base.class.php @@ -261,8 +261,14 @@ SELECT DISTINCT('.$this->calendar_levels[$level]['sql'] } } + $dates = $page['chronology_date']; + while ($levelget_nav_bar_from_items( - $page['chronology_date'], + $dates, $level_items, null, 'calItem', diff --git a/include/calendar_monthly.class.php b/include/calendar_monthly.class.php index 0d70ea4c6..1f26e1275 100644 --- a/include/calendar_monthly.class.php +++ b/include/calendar_monthly.class.php @@ -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 ) diff --git a/include/category_default.inc.php b/include/category_default.inc.php index e7c4b8ddc..47f8fcd27 100644 --- a/include/category_default.inc.php +++ b/include/category_default.inc.php @@ -126,7 +126,7 @@ foreach ($pictures as $row) } case 'search' : { - $name = replace_search($name, $_GET['search']); + $name = replace_search($name, $page['search']); break; } } diff --git a/include/category_recent_cats.inc.php b/include/category_recent_cats.inc.php index 2bc028ced..a0510db25 100644 --- a/include/category_recent_cats.inc.php +++ b/include/category_recent_cats.inc.php @@ -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']) { diff --git a/include/common.inc.php b/include/common.inc.php index 27949fd17..2b7757819 100644 --- a/include/common.inc.php +++ b/include/common.inc.php @@ -61,7 +61,7 @@ if( !get_magic_quotes_gpc() ) } @reset($_GET); } - + if( is_array($_POST) ) { while( list($k, $v) = each($_POST) ) diff --git a/include/functions.inc.php b/include/functions.inc.php index 68ba765fe..eb27ce51d 100644 --- a/include/functions.inc.php +++ b/include/functions.inc.php @@ -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; } diff --git a/include/functions_category.inc.php b/include/functions_category.inc.php index 21560454d..601ec1b64 100644 --- a/include/functions_category.inc.php +++ b/include/functions_category.inc.php @@ -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 diff --git a/include/functions_html.inc.php b/include/functions_html.inc.php index 8cd69b5ba..37f4d8a59 100644 --- a/include/functions_html.inc.php +++ b/include/functions_html.inc.php @@ -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 = '(!)'; } @@ -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.= '$id) ).'">'; + $output.= $name.''; + } else { $output.= '$category_id) ).'">'.$name.''; + } 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); diff --git a/include/functions_rate.inc.php b/include/functions_rate.inc.php index 6eef19af6..32722118f 100644 --- a/include/functions_rate.inc.php +++ b/include/functions_rate.inc.php @@ -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 ('guest' == $user_status - or 'generic' == $user_status) + if (!isset($rate) + or !$conf['rate'] + or !in_array($rate, $conf['rate_items'])) { - $user_anonymous = true; + return; } - else + + $user_anonymous = is_autorize_status(ACCESS_CLASSIC) ? false : true; + + if ($user_anonymous and !$conf['rate_anonymous']) { - $user_anonymous = false; + return; } - - if (isset($rate) - and $conf['rate'] - and (!$user_anonymous or $conf['rate_anonymous']) - and in_array($rate, $conf['rate_items'])) + + if ($user_anonymous) { - 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); } ?> \ No newline at end of file diff --git a/include/functions_session.inc.php b/include/functions_session.inc.php index 9e1e3f152..482c76376 100644 --- a/include/functions_session.inc.php +++ b/include/functions_session.inc.php @@ -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,'/')); } diff --git a/include/page_tail.php b/include/page_tail.php index 88c813e24..50b433f9e 100644 --- a/include/page_tail.php +++ b/include/page_tail.php @@ -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 ); } // diff --git a/include/picture_metadata.inc.php b/include/picture_metadata.inc.php index de910ad07..508ed3a67 100644 --- a/include/picture_metadata.inc.php +++ b/include/picture_metadata.inc.php @@ -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', diff --git a/include/picture_rate.inc.php b/include/picture_rate.inc.php index e994b3e44..86c2486ac 100644 --- a/include/picture_rate.inc.php +++ b/include/picture_rate.inc.php @@ -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 ) diff --git a/include/section_init.inc.php b/include/section_init.inc.php index d225e7871..80f853d17 100644 --- a/include/section_init.inc.php +++ b/include/section_init.inc.php @@ -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); + } +} ?> \ No newline at end of file diff --git a/include/template.php b/include/template.php index 674e08659..5f2cf7a2c 100644 --- a/include/template.php +++ b/include/template.php @@ -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('##', $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; } - + } ?> diff --git a/picture.php b/picture.php index 19ca06dd9..09353aa39 100644 --- a/picture.php +++ b/picture.php @@ -168,7 +168,7 @@ UPDATE '.CATEGORIES_TABLE.' } case 'rate' : { - rate_picture($user['id'], $page['image_id'], $_GET['rate']); + rate_picture($page['image_id'], $_GET['rate']); redirect($url_self); } case 'delete_comment' : @@ -370,14 +370,14 @@ if ( isset( $_GET['slideshow'] ) and isset($page['next_item']) ) } $title_img = $picture['current']['name']; -if ( isset( $page['cat'] ) ) +if ( isset( $page['category'] ) ) { - if (is_numeric( $page['cat'] )) + if (is_numeric( $page['category'] )) { $title_img = replace_space(get_cat_display_name($page['cat_name'])); } else if ( $page['cat'] == 'search' ) - { + { // ??? TODO -remove or change some remainings from old variables $title_img = replace_search( $title_img, $_GET['search'] ); } } @@ -404,25 +404,20 @@ $picture_size = get_picture_size( ); // metadata +$url_metadata = duplicate_picture_URL(); if ($conf['show_exif'] or $conf['show_iptc']) { $metadata_showable = true; + if ( !isset($_GET['metadata']) ) + { + $url_metadata = add_url_param( $url_metadata, 'metadata' ); + } } else { $metadata_showable = false; } -// $url_metadata = PHPWG_ROOT_PATH.'picture.php'; -// $url_metadata .= get_query_string_diff(array('add_fav', 'slideshow', 'show_metadata')); -// if ($metadata_showable and !isset($_GET['show_metadata'])) -// { -// $url_metadata.= '&show_metadata=1'; -// } - -// TODO: rewrite metadata display to toggle on/off user_infos.show_metadata -$url_metadata = duplicate_picture_URL(); - $page['body_id'] = 'thePicturePage'; //------------------------------------------------------- navigation management foreach ( array('first','previous','next','last') as $which_image ) diff --git a/search_rules.php b/search_rules.php index 3319dc17b..8c3a3df25 100644 --- a/search_rules.php +++ b/search_rules.php @@ -140,7 +140,7 @@ SELECT id, uppercats, global_rank array( 'NAME' => get_cat_display_name_cache( $category['uppercats'], - '', // no url on category names + null, // no url on category names false // no blank replacement ) ) diff --git a/template/yoga/category.tpl b/template/yoga/category.tpl index 35cb29c88..5705d5824 100644 --- a/template/yoga/category.tpl +++ b/template/yoga/category.tpl @@ -91,8 +91,8 @@

@@ -119,25 +119,25 @@ -
  • {lang:caddie}
  • +
  • {lang:caddie}
  • -
  • {lang:edit}
  • +
  • {lang:edit}
  • -
  • (?)
  • +
  • (?)
  • -
  • {lang:mode_normal_hint}
  • +
  • {lang:mode_normal_hint}
  • -
  • {lang:mode_posted_hint}
  • +
  • {lang:mode_posted_hint}
  • -
  • {lang:mode_created_hint}
  • +
  • {lang:mode_created_hint}
  • diff --git a/template/yoga/footer.tpl b/template/yoga/footer.tpl index 9638ba422..44d905995 100644 --- a/template/yoga/footer.tpl +++ b/template/yoga/footer.tpl @@ -1,16 +1,16 @@