From 114ae324452ac88fe7b672338cba931d838ee2a4 Mon Sep 17 00:00:00 2001 From: plegall Date: Wed, 15 Mar 2006 22:44:35 +0000 Subject: new: cleaner URL. Instead of category.php?cat=search&search=123&start=42, you now have category.php?/search/123/start-42. Functions make_index_url and make_picture_url build these new URLs. Functions duplicate_picture_url and duplicate_index_url provide shortcuts to URL creation. The current main page page is still category.php but this can be modified easily in make_index_url function. In this first version, no backward compatibility. Calendar definition in URL must be discussed with rvelices. improvement: picture.php redesigned. First actions like "set as representative" or "delete a comment" which all lead to a redirection. Then the page (the big mess) and includes of new sub pages to manage specific parts of the page (metadata, user comments, rates). new: with the cleaner URL comes a new terminology. $page['cat'] doesn't exist anymore. $page['section'] is among 'categories', 'tags' (TODO), 'list', 'most_seen'... And sub parameters are set : $page['category'] if $page['section'] is "categories". See URL analyse in include/section_init.inc.php for details. git-svn-id: http://piwigo.org/svn/trunk@1082 68402e56-0260-453c-a942-63ccdbb3a9ee --- picture.php | 1059 ++++++++++++++++++++--------------------------------------- 1 file changed, 365 insertions(+), 694 deletions(-) (limited to 'picture.php') diff --git a/picture.php b/picture.php index 6a6bab850..f95f39124 100644 --- a/picture.php +++ b/picture.php @@ -25,44 +25,40 @@ // | USA. | // +-----------------------------------------------------------------------+ -$rate_items = array(0,1,2,3,4,5); -//--------------------------------------------------------------------- include define('PHPWG_ROOT_PATH','./'); include_once(PHPWG_ROOT_PATH.'include/common.inc.php'); +include(PHPWG_ROOT_PATH.'include/section_init.inc.php'); -// +-----------------------------------------------------------------------+ -// | Check Access and exit when user status is not ok | -// +-----------------------------------------------------------------------+ +// Check Access and exit when user status is not ok check_status(ACCESS_GUEST); -include(PHPWG_ROOT_PATH.'include/section_init.inc.php'); -//-------------------------------------------------- access authorization check -if (isset($page['cat']) and is_numeric($page['cat'])) +// access authorization check +if (isset($page['category'])) { - check_restrictions($page['cat']); + check_restrictions($page['category']); } -//-------------------------------------------------------------- initialization + // if this image_id doesn't correspond to this category, an error message is // displayed, and execution is stopped -if (!in_array($_GET['image_id'], $page['items'])) +if (!in_array($page['image_id'], $page['items'])) { - echo ' -
'.$lang['access_forbiden'].'
- '.$lang['thumbnails'].' -
'; - exit(); + die('Fatal: this picture does not belong to this section'); } +// +-----------------------------------------------------------------------+ +// | initialization | +// +-----------------------------------------------------------------------+ + $page['rank_of'] = array_flip($page['items']); // caching first_rank, last_rank, current_rank in the displayed // section. This should also help in readability. $page['first_rank'] = 0; $page['last_rank'] = count($page['items']) - 1; -$page['current_rank'] = $page['rank_of'][ $_GET['image_id'] ]; +$page['current_rank'] = $page['rank_of'][ $page['image_id'] ]; // caching current item : readability purpose -$page['current_item'] = $_GET['image_id']; +$page['current_item'] = $page['image_id']; if ($page['current_rank'] != $page['first_rank']) { @@ -71,12 +67,14 @@ if ($page['current_rank'] != $page['first_rank']) $template->assign_block_vars( 'first', array( - 'U_IMG' => - PHPWG_ROOT_PATH.'picture.php'. - get_query_string_diff( - array('image_id', 'add_fav', 'slideshow') - ). - '&image_id='.$page['items'][ $page['first_rank'] ], + 'U_IMG' => duplicate_picture_URL( + // redefinitions + array( + 'image_id' => $page['items'][ $page['first_rank'] ], + ), + // removes + array() + ) ) ); @@ -91,12 +89,14 @@ if ($page['current_rank'] != $page['last_rank']) $template->assign_block_vars( 'last', array( - 'U_IMG' => - PHPWG_ROOT_PATH.'picture.php'. - get_query_string_diff( - array('image_id', 'add_fav', 'slideshow') - ). - '&image_id='.$page['items'][ $page['last_rank'] ], + 'U_IMG' => duplicate_picture_URL( + // redefinitions + array( + 'image_id' => $page['items'][ $page['last_rank'] ], + ), + // removes + array() + ) ) ); @@ -104,155 +104,240 @@ if ($page['current_rank'] != $page['last_rank']) $page['next_item'] = $page['items'][ $page['current_rank'] + 1 ]; } -//---------------------------------------- incrementation of the number of hits -if ( count(array_intersect( - array_keys($_GET), - array('add_fav', 'caddie', 'rate', 'representative', 'del') ) - )==0 ) -{ - $query = ' - UPDATE '.IMAGES_TABLE.' - SET hit = hit+1 - WHERE id = '.$_GET['image_id'].' - ;'; - @pwg_query( $query ); -} - -//-------------------------------------------------------------- representative -if (is_admin() and isset($_GET['representative'])) -{ - $query = ' -UPDATE '.CATEGORIES_TABLE.' - SET representative_picture_id = '.$_GET['image_id'].' - WHERE id = '.$page['cat'].' -;'; - pwg_query($query); - - $url = - PHPWG_ROOT_PATH - .'picture.php' - .get_query_string_diff(array('representative')); - redirect($url); -} - -//-------------------------------------------------------------- caddie filling +$url_up = duplicate_index_URL( + array( + 'start' => + floor($page['current_rank'] / $user['nb_image_page']) + * $user['nb_image_page'] + ), + array( + 'start', + ) + ); -if (isset($_GET['caddie'])) -{ - fill_caddie(array($_GET['image_id'])); +$url_self = duplicate_picture_URL(); - $url = - PHPWG_ROOT_PATH - .'picture.php' - .get_query_string_diff(array('caddie')); - redirect($url); -} +// +-----------------------------------------------------------------------+ +// | actions | +// +-----------------------------------------------------------------------+ +/** + * Actions are favorite adding, user comment deletion, setting the picture + * as representative of the current category... + * + * Actions finish by a redirection + */ -//----------------------------------------------------------- rate registration -if (isset($_GET['rate']) - and $conf['rate'] - and ( !$user['is_the_guest'] or $conf['rate_anonymous'] ) - and in_array($_GET['rate'], $rate_items)) +if (isset($_GET['action'])) { - if ($user['is_the_guest']) + switch ($_GET['action']) { - $ip_components = explode('.', $_SERVER["REMOTE_ADDR"]); - if ( count($ip_components)>3 ) + case 'add_to_favorites' : { - array_pop($ip_components); + $query = ' +INSERT INTO '.FAVORITES_TABLE.' + (image_id,user_id) + VALUES + ('.$page['image_id'].','.$user['id'].') +;'; + pwg_query($query); + + redirect($url_self); + + break; } - $anonymous_id = implode ('.', $ip_components); + case 'remove_from_favorites' : + { + $query = ' +DELETE FROM '.FAVORITES_TABLE.' + WHERE user_id = '.$user['id'].' + AND image_id = '.$page['image_id'].' +;'; + pwg_query($query); - if ( isset($_COOKIE['pwg_anonymous_rater']) ) + if ('favorites' == $page['section']) + { + redirect($url_up); + } + else + { + redirect($url_self); + } + + break; + } + case 'set_as_representative' : { - if ($anonymous_id != $_COOKIE['pwg_anonymous_rater'] ) - { // client has changed his IP adress or he's trying to fool us + if (is_admin() and isset($page['category'])) + { $query = ' +UPDATE '.CATEGORIES_TABLE.' + SET representative_picture_id = '.$page['image_id'].' + WHERE id = '.$page['category'].' +;'; + pwg_query($query); + } + + redirect($url_self); + + break; + } + case 'toggle_metadata' : + { + break; + } + case 'add_to_caddie' : + { + fill_caddie(array($page['image_id'])); + redirect($url_self); + break; + } + case 'rate' : + { + if (isset($_GET['rate']) + and $conf['rate'] + and (!$user['is_the_guest'] or $conf['rate_anonymous']) + and in_array($_GET['rate'], $rate_items)) + { + if ($user['is_the_guest']) + { + $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 = ' SELECT element_id FROM '. RATE_TABLE . ' WHERE user_id=' . $user['id'] . ' AND anonymous_id=\'' . $anonymous_id . '\''; - $result = pwg_query($query); - $already_there = array(); - while ( $row = mysql_fetch_array($result) ) - { - array_push( $already_there, $row['element_id'] ); + $result = pwg_query($query); + $already_there = array(); + while ($row = mysql_fetch_array($result)) + { + array_push($already_there, $row['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); + } + + $query = ' +UPDATE + '.RATE_TABLE.' + SET anonymous_id = \'' .$anonymous_id.'\' + WHERE user_id = '.$user['id'].' + AND anonymous_id = \'' . $_COOKIE['pwg_anonymous_rater'].'\' +;'; + pwg_query($query); + + setcookie( + 'pwg_anonymous_rater', + $anonymous_id, + strtotime('+10 years'), + cookie_path() + ); + } + } + else + { + setcookie( + 'pwg_anonymous_rater', + $anonymous_id, + strtotime('+10 years'), + cookie_path() + ); + } } - - if ( count($already_there)>0 ) + + $query = ' +DELETE + FROM '.RATE_TABLE.' + WHERE element_id = '.$page['image_id'] . ' + AND user_id = '.$user['id'].' +'; + if (isset($anonymous_id)) { - $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); + $query.= ' AND anonymous_id = \''.$anonymous_id.'\''; } - - $query = ' -UPDATE '. RATE_TABLE . ' - SET anonymous_id=\'' . $anonymous_id . '\' - WHERE user_id=' . $user['id'] . ' - AND anonymous_id=\'' . $_COOKIE['pwg_anonymous_rater'] . '\''; pwg_query($query); - - setcookie('pwg_anonymous_rater', $anonymous_id, - strtotime('+10 years'), cookie_path() ); - } - } - else - { - setcookie('pwg_anonymous_rater', $anonymous_id, - strtotime('+10 years'), cookie_path() ); - } - } - - $query = ' -DELETE FROM '.RATE_TABLE.' - WHERE element_id = '.$_GET['image_id'] . ' - AND user_id = '.$user['id'] -; - if (isset($anonymous_id)) - { - $query.= ' AND anonymous_id=\'' . $anonymous_id .'\''; - } - pwg_query($query); - $query = ' -INSERT INTO '.RATE_TABLE.' + $query = ' +INSERT + INTO '.RATE_TABLE.' (user_id,anonymous_id,element_id,rate,date) VALUES - ('.$user['id'].','.(isset($anonymous_id)?'\''.$anonymous_id.'\'':"''").','. - $_GET['image_id'].','.$_GET['rate'].',NOW()) + (' + .$user['id'].',' + .(isset($anonymous_id) ? '\''.$anonymous_id.'\'' : "''").',' + .$page['image_id'].',' + .$_GET['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 = '.$_GET['image_id'].' + WHERE element_id = '.$page['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 = '.$_GET['image_id'].' + WHERE id = '.$page['image_id'].' +;'; + pwg_query($query); + } + + redirect($url_self); + } + case 'delete_comment' : + { + if (isset($_GET['comment_to_delete']) + and is_numeric($_GET['comment_to_delete']) + and is_admin()) + { + $query = ' +DELETE FROM '.COMMENTS_TABLE.' + WHERE id = '.$_GET['comment_to_delete'].' ;'; - pwg_query($query); - $url = - PHPWG_ROOT_PATH - .'picture.php' - .get_query_string_diff(array('rate')); - redirect($url); + pwg_query( $query ); + } + + redirect($url_self); + } + } } +// incrementation of the number of hits, we do this only if no action +$query = ' +UPDATE + '.IMAGES_TABLE.' + SET hit = hit+1 + WHERE id = '.$page['image_id'].' +;'; +pwg_query($query); //---------------------------------------------------------- related categories $query = ' SELECT category_id,uppercats,commentable,global_rank FROM '.IMAGE_CATEGORY_TABLE.' INNER JOIN '.CATEGORIES_TABLE.' ON category_id = id - WHERE image_id = '.$_GET['image_id'].' + WHERE image_id = '.$page['image_id'].' AND category_id NOT IN ('.$user['forbidden_categories'].') ;'; $result = pwg_query($query); @@ -265,7 +350,7 @@ usort($related_categories, 'global_rank_compare'); //------------------------------------- prev, current & next picture management $picture = array(); -$ids = array($_GET['image_id']); +$ids = array($page['image_id']); if (isset($page['previous_item'])) { array_push($ids, $page['previous_item']); @@ -361,180 +446,26 @@ while ($row = mysql_fetch_array($result)) $picture[$i]['name'] = str_replace('_', ' ', $file_wo_ext); } - $picture[$i]['url'] = - PHPWG_ROOT_PATH.'picture.php' - .get_query_string_diff(array('image_id', 'add_fav', 'slideshow')) - .'&image_id='.$row['id']; -} - -$url_up = PHPWG_ROOT_PATH.'category.php?'; -if ( isset($page['cat']) ) -{ - $url_up .= 'cat='.$page['cat']; -} -elseif ( isset($_GET['calendar']) ) -{ - $url_up .= 'calendar='.$_GET['calendar']; -} - -$url_up_start = floor( $page['current_rank'] / $user['nb_image_page'] ); -$url_up_start *= $user['nb_image_page']; -if ($url_up_start>0) -{ - $url_up .= '&start='.$url_up_start; -} - -if ( isset($page['cat']) ) -{ - if ( $page['cat'] == 'search' ) - { - $url_up.= '&search='.$_GET['search']; - } - if ( $page['cat'] == 'list' ) - { - $url_up.= '&list='.$_GET['list']; - } + $picture[$i]['url'] = duplicate_picture_URL( + array( + 'image_id' => $row['id'], + ), + array( + 'start', + ) + ); } $url_admin = PHPWG_ROOT_PATH.'admin.php?page=picture_modify' - .'&cat_id='. ( isset($page['cat']) ? $page['cat'] : '' ) - .'&image_id='.$_GET['image_id']; + .'&cat_id='.(isset($page['category']) ? $page['category'] : '') + .'&image_id='.$page['image_id'] +; $url_slide = - $picture['current']['url'].'&slideshow='.$conf['slideshow_period']; - -//--------------------------------------------------------- favorite management -if ( isset( $_GET['add_fav'] ) ) -{ - $query = 'DELETE FROM '.FAVORITES_TABLE; - $query.= ' WHERE user_id = '.$user['id']; - $query.= ' AND image_id = '.$picture['current']['id']; - $query.= ';'; - $result = pwg_query( $query ); - - if ( $_GET['add_fav'] == 1 ) - { - $query = 'INSERT INTO '.FAVORITES_TABLE; - $query.= ' (image_id,user_id) VALUES'; - $query.= ' ('.$picture['current']['id'].','.$user['id'].')'; - $query.= ';'; - $result = pwg_query( $query ); - } - if ( !$_GET['add_fav'] and isset($page['cat']) and 'fav'==$page['cat'] ) - { - if (!isset($page['previous_item']) and !isset($page['next_item'])) - { - // there is no favorite picture anymore we redirect the user to the - // category page - redirect($url_up); - } - else if (!isset($page['previous_item'])) - { - $url = str_replace( '&', '&', $picture['next']['url'] ); - redirect( $url ); - } - else - { - $url = str_replace('&', '&', $picture['prev']['url'] ); - redirect( $url ); - } - redirect( $url ); - } -} - -//------------------------------------------------------ comment registeration -if ( isset( $_POST['content'] ) && !empty($_POST['content']) ) -{ - $register_comment = true; - $author = !empty($_POST['author'])?$_POST['author']:$lang['guest']; - // if a guest try to use the name of an already existing user, he must be - // rejected - if ( $author != $user['username'] ) - { - $query = 'SELECT COUNT(*) AS user_exists'; - $query.= ' FROM '.USERS_TABLE; - $query.= ' WHERE '.$conf['user_fields']['username']." = '".$author."'"; - $query.= ';'; - $row = mysql_fetch_array( pwg_query( $query ) ); - if ( $row['user_exists'] == 1 ) - { - $template->assign_block_vars( - 'information', - array('INFORMATION'=>$lang['comment_user_exists'])); - $register_comment = false; - } - } - - if ( $register_comment ) - { - // anti-flood system - $reference_date = time() - $conf['anti-flood_time']; - $query = 'SELECT id FROM '.COMMENTS_TABLE; - $query.= ' WHERE date > FROM_UNIXTIME('.$reference_date.')'; - $query.= " AND author = '".$author."'"; - $query.= ';'; - if ( mysql_num_rows( pwg_query( $query ) ) == 0 - or $conf['anti-flood_time'] == 0 ) - { - list($dbnow) = mysql_fetch_row(pwg_query('SELECT NOW();')); - - $data = array(); - $data{'author'} = $author; - $data{'date'} = $dbnow; - $data{'image_id'} = $_GET['image_id']; - $data{'content'} = htmlspecialchars( $_POST['content'], ENT_QUOTES); - - if (!$conf['comments_validation'] or is_admin()) - { - $data{'validated'} = 'true'; - $data{'validation_date'} = $dbnow; - } - else - { - $data{'validated'} = 'false'; - } - - include_once(PHPWG_ROOT_PATH.'admin/include/functions.php'); - $fields = array('author', 'date', 'image_id', 'content', 'validated', - 'validation_date'); - mass_inserts(COMMENTS_TABLE, $fields, array($data)); - - // information message - $message = $lang['comment_added']; - - if (!$conf['comments_validation'] or is_admin()) - - if ( $conf['comments_validation'] and !is_admin() ) - { - $message.= '
'.$lang['comment_to_validate']; - } - $template->assign_block_vars('information', - array('INFORMATION'=>$message)); - } - else - { - // information message - $template->assign_block_vars( - 'information', - array('INFORMATION'=>$lang['comment_anti-flood'])); - } - } -} -// comment deletion -if ( isset( $_GET['del'] ) - and is_numeric( $_GET['del'] ) - and is_admin() ) -{ - $query = 'DELETE FROM '.COMMENTS_TABLE; - $query.= ' WHERE id = '.$_GET['del']; - $query.= ';'; - pwg_query( $query ); -} - -// -// Start output of page -// + $picture['current']['url'] + .'&slideshow='.$conf['slideshow_period'] +; $title = $picture['current']['name']; $refresh = 0; @@ -571,8 +502,12 @@ else $original_height = $picture['current']['height']; } -$picture_size = get_picture_size($original_width, $original_height, - @$user['maxwidth'], @$user['maxheight']); +$picture_size = get_picture_size( + $original_width, + $original_height, + @$user['maxwidth'], + @$user['maxheight'] + ); // metadata if ($conf['show_exif'] or $conf['show_iptc']) @@ -584,12 +519,15 @@ 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'; -} +// $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 @@ -622,45 +560,46 @@ if (isset($page['next_item'])) include(PHPWG_ROOT_PATH.'include/page_header.php'); $template->set_filenames(array('picture'=>'picture.tpl')); -$template->assign_vars(array( - 'CATEGORY' => $title_img, - 'PHOTO' => $title_nb, - 'TITLE' => $picture['current']['name'], - 'SRC_IMG' => $picture['current']['src'], - 'ALT_IMG' => $picture['current']['file'], - 'WIDTH_IMG' => $picture_size[0], - 'HEIGHT_IMG' => $picture_size[1], - - 'LEVEL_SEPARATOR' => $conf['level_separator'], - - 'L_HOME' => $lang['home'], - 'L_SLIDESHOW' => $lang['slideshow'], - 'L_STOP_SLIDESHOW' => $lang['slideshow_stop'], - 'L_PREV_IMG' =>$lang['previous_page'].' : ', - 'L_NEXT_IMG' =>$lang['next_page'].' : ', - 'L_ADMIN' =>$lang['link_info_image'], - 'L_COMMENT_TITLE' =>$lang['comments_title'], - 'L_ADD_COMMENT' =>$lang['comments_add'], - 'L_DELETE_COMMENT' =>$lang['comments_del'], - 'L_DELETE' =>$lang['delete'], - 'L_SUBMIT' =>$lang['submit'], - 'L_AUTHOR' => $lang['upload_author'], - 'L_COMMENT' =>$lang['comment'], - 'L_DOWNLOAD' => $lang['download'], - 'L_DOWNLOAD_HINT' => $lang['download_hint'], - 'L_PICTURE_METADATA' => $lang['picture_show_metadata'], - 'L_PICTURE_HIGH' => $lang['picture_high'], - 'L_UP_HINT' => $lang['home_hint'], - 'L_UP_ALT' => $lang['home'], - - 'U_HOME' => (PHPWG_ROOT_PATH.'category.php'), - 'U_UP' => $url_up, - 'U_METADATA' => $url_metadata, - 'U_ADMIN' => $url_admin, - 'U_SLIDESHOW'=> $url_slide, - 'U_ADD_COMMENT' => str_replace( '&', '&', $_SERVER['REQUEST_URI'] ) - ) -); +$template->assign_vars( + array( + 'CATEGORY' => $title_img, + 'PHOTO' => $title_nb, + 'TITLE' => $picture['current']['name'], + 'SRC_IMG' => $picture['current']['src'], + 'ALT_IMG' => $picture['current']['file'], + 'WIDTH_IMG' => $picture_size[0], + 'HEIGHT_IMG' => $picture_size[1], + + 'LEVEL_SEPARATOR' => $conf['level_separator'], + + 'L_HOME' => $lang['home'], + 'L_SLIDESHOW' => $lang['slideshow'], + 'L_STOP_SLIDESHOW' => $lang['slideshow_stop'], + 'L_PREV_IMG' =>$lang['previous_page'].' : ', + 'L_NEXT_IMG' =>$lang['next_page'].' : ', + 'L_ADMIN' =>$lang['link_info_image'], + 'L_COMMENT_TITLE' =>$lang['comments_title'], + 'L_ADD_COMMENT' =>$lang['comments_add'], + 'L_DELETE_COMMENT' =>$lang['comments_del'], + 'L_DELETE' =>$lang['delete'], + 'L_SUBMIT' =>$lang['submit'], + 'L_AUTHOR' => $lang['upload_author'], + 'L_COMMENT' =>$lang['comment'], + 'L_DOWNLOAD' => $lang['download'], + 'L_DOWNLOAD_HINT' => $lang['download_hint'], + 'L_PICTURE_METADATA' => $lang['picture_show_metadata'], + 'L_PICTURE_HIGH' => $lang['picture_high'], + 'L_UP_HINT' => $lang['home_hint'], + 'L_UP_ALT' => $lang['home'], + + 'U_HOME' => make_index_URL(), + 'U_UP' => $url_up, + 'U_METADATA' => $url_metadata, + 'U_ADMIN' => $url_admin, + 'U_SLIDESHOW'=> $url_slide, + 'U_ADD_COMMENT' => $url_self, + ) + ); if ($conf['show_picture_name_on_title']) { @@ -668,92 +607,100 @@ if ($conf['show_picture_name_on_title']) } //------------------------------------------------------- upper menu management + // download link if file is not a picture if (!$picture['current']['is_picture']) { $template->assign_block_vars( 'download', - array('U_DOWNLOAD' => $picture['current']['download'])); + array( + 'U_DOWNLOAD' => $picture['current']['download'] + ) + ); } + // display a high quality link if present if (isset($picture['current']['high'])) { $uuid = uniqid(rand()); - $template->assign_block_vars('high', array( - 'U_HIGH' => $picture['current']['high'], - 'UUID'=>$uuid - )); + + $template->assign_block_vars( + 'high', + array( + 'U_HIGH' => $picture['current']['high'], + 'UUID' => $uuid, + ) + ); + $template->assign_block_vars( 'download', - array('U_DOWNLOAD' => PHPWG_ROOT_PATH.'action.php?dwn=' - .$picture['current']['high'] - ) - ); + array( + 'U_DOWNLOAD' => PHPWG_ROOT_PATH.'action.php?dwn=' + .$picture['current']['high'] + ) + ); } + // button to set the current picture as representative -if (is_admin() and - isset($page['cat']) and is_numeric($page['cat'])) +if (is_admin() and isset($page['category'])) { $template->assign_block_vars( 'representative', array( - 'URL' => - PHPWG_ROOT_PATH.'picture.php' - .get_query_string_diff(array('add_fav')) - .'&representative=1' + 'URL' => $url_self.'&action=set_as_representative' ) ); } +// caddie button if (is_admin()) { $template->assign_block_vars( 'caddie', array( - 'URL' => - PHPWG_ROOT_PATH.'picture.php' - .get_query_string_diff(array('add_fav')).'&caddie=1') + 'URL' => $url_self.'&action=add_to_caddie' + ) ); } -//------------------------------------------------------- favorite manipulation -if ( !$user['is_the_guest'] ) +// favorite manipulation +if (!$user['is_the_guest']) { // verify if the picture is already in the favorite of the user - $query = 'SELECT COUNT(*) AS nb_fav'; - $query.= ' FROM '.FAVORITES_TABLE.' WHERE image_id = '.$_GET['image_id']; - $query.= ' AND user_id = '.$user['id'].';'; - $result = pwg_query( $query ); - $row = mysql_fetch_array( $result ); - if (!$row['nb_fav']) + $query = ' +SELECT COUNT(*) AS nb_fav + FROM '.FAVORITES_TABLE.' + WHERE image_id = '.$page['image_id'].' + AND user_id = '.$user['id'].' +;'; + $result = pwg_query($query); + $row = mysql_fetch_array($result); + + if ($row['nb_fav'] == 0) { - $url = PHPWG_ROOT_PATH.'picture.php'; - $url.= get_query_string_diff(array('add_fav')); - $url.= '&add_fav=1'; + $url = $url_self.'&action=add_to_favorites'; $template->assign_block_vars( 'favorite', array( - 'FAVORITE_IMG' => get_themeconf('icon_dir').'/favorite.png', - 'FAVORITE_HINT' =>$lang['add_favorites_hint'], - 'FAVORITE_ALT' =>$lang['add_favorites_alt'], - 'U_FAVORITE' => $url - )); + 'FAVORITE_IMG' => get_themeconf('icon_dir').'/favorite.png', + 'FAVORITE_HINT' => $lang['add_favorites_hint'], + 'FAVORITE_ALT' => $lang['add_favorites_alt'], + 'U_FAVORITE' => $url_self.'&action=add_to_favorites', + ) + ); } else { - $url = PHPWG_ROOT_PATH.'picture.php'; - $url.= get_query_string_diff(array('add_fav')); - $url.= '&add_fav=0'; - $template->assign_block_vars( 'favorite', array( - 'FAVORITE_IMG' => get_themeconf('icon_dir').'/del_favorite.png', - 'FAVORITE_HINT' =>$lang['del_favorites_hint'], - 'FAVORITE_ALT' =>$lang['del_favorites_alt'], - 'U_FAVORITE'=> $url - )); + 'FAVORITE_IMG' => get_themeconf('icon_dir').'/del_favorite.png', + 'FAVORITE_HINT' => $lang['del_favorites_hint'], + 'FAVORITE_ALT' => $lang['del_favorites_alt'], + 'U_FAVORITE' => $url_self.'&action=remove_from_favorites', + ) + ); } } //------------------------------------ admin link for information modifications @@ -887,306 +834,30 @@ foreach ($related_categories as $category) ); } -//------------------------------------------------------------------- metadata -if ($metadata_showable and isset($_GET['show_metadata'])) -{ - include_once(PHPWG_ROOT_PATH.'/include/functions_metadata.inc.php'); - $template->assign_block_vars('metadata', array()); - if ($conf['show_exif']) - { - if (!function_exists('read_exif_data')) - { - die('Exif extension not available, admin should disable exif display'); - } - - if ($exif = @read_exif_data($picture['current']['src'])) - { - $template->assign_block_vars( - 'metadata.headline', - array('TITLE' => 'EXIF Metadata') - ); - - foreach ($conf['show_exif_fields'] as $field) - { - if (strpos($field, ';') === false) - { - if (isset($exif[$field])) - { - $key = $field; - if (isset($lang['exif_field_'.$field])) - { - $key = $lang['exif_field_'.$field]; - } - - $template->assign_block_vars( - 'metadata.line', - array( - 'KEY' => $key, - 'VALUE' => $exif[$field] - ) - ); - } - } - else - { - $tokens = explode(';', $field); - if (isset($exif[$tokens[0]][$tokens[1]])) - { - $key = $tokens[1]; - if (isset($lang['exif_field_'.$tokens[1]])) - { - $key = $lang['exif_field_'.$tokens[1]]; - } - - $template->assign_block_vars( - 'metadata.line', - array( - 'KEY' => $key, - 'VALUE' => $exif[$tokens[0]][$tokens[1]] - ) - ); - } - } - } - } - } - if ($conf['show_iptc']) - { - $iptc = get_iptc_data($picture['current']['src'], - $conf['show_iptc_mapping']); - - if (count($iptc) > 0) - { - $template->assign_block_vars( - 'metadata.headline', - array('TITLE' => 'IPTC Metadata') - ); - } - - foreach ($iptc as $field => $value) - { - $key = $field; - if (isset($lang[$field])) - { - $key = $lang[$field]; - } - - $template->assign_block_vars( - 'metadata.line', - array( - 'KEY' => $key, - 'VALUE' => $value - ) - ); - } - } -} //slideshow end -if ( isset( $_GET['slideshow'] ) ) +if (isset($_GET['slideshow'])) { - if ( !is_numeric( $_GET['slideshow'] ) ) $_GET['slideshow'] = $conf['slideshow_period']; - - $template->assign_block_vars('stop_slideshow', array( - 'U_SLIDESHOW'=>$picture['current']['url'] - )); -} - -//------------------------------------------------------------------- rating -if ($conf['rate']) -{ - $query = ' -SELECT COUNT(rate) AS count - , ROUND(AVG(rate),2) AS average - , ROUND(STD(rate),2) AS STD - FROM '.RATE_TABLE.' - WHERE element_id = '.$picture['current']['id'].' -;'; - $row = mysql_fetch_array(pwg_query($query)); - if ($row['count'] == 0) - { - $value = $lang['no_rate']; - } - else - { - $value = sprintf( - l10n('%.2f (rated %d times, standard deviation = %.2f)'), - $row['average'], - $row['count'], - $row['STD'] - ); - } - - if ($conf['rate_anonymous'] or !$user['is_the_guest']) + if (!is_numeric($_GET['slideshow'])) { - if ($row['count']>0) - { - $query = 'SELECT rate - FROM '.RATE_TABLE.' - WHERE element_id = '.$_GET['image_id'] . ' - AND user_id = '.$user['id'] ; - - if ($user['is_the_guest']) - { - $ip_components = explode('.', $_SERVER['REMOTE_ADDR']); - if ( count($ip_components)>3 ) - { - array_pop($ip_components); - } - $anonymous_id = implode ('.', $ip_components); - $query .= ' AND anonymous_id = \''.$anonymous_id . '\''; - } - - $result = pwg_query($query); - if (mysql_num_rows($result) > 0) - { - $row = mysql_fetch_array($result); - $sentence = $lang['already_rated']; - $sentence.= ' ('.$row['rate'].'). '; - $sentence.= $lang['update_rate']; - } - else - { - $sentence = $lang['never_rated'].'. '.$lang['Rate']; - } - } - else - { - $sentence = $lang['never_rated'].'. '.$lang['Rate']; - } - $template->assign_block_vars( - 'rate', - array( - 'CONTENT' => $value, - 'SENTENCE' => $sentence - )); - - $template->assign_block_vars('info_rate', array('CONTENT' => $value)); - - $template->assign_vars( - array( - 'INFO_RATE' => $value - ) - ); - - foreach ($rate_items as $num => $mark) - { - if ($num > 0) - { - $separator = '|'; - } - else - { - $separator = ''; - } - - $url = PHPWG_ROOT_PATH.'picture.php'; - $url.= get_query_string_diff(array('add_fav')); - $url.= '&rate='.$mark; - - $template->assign_block_vars( - 'rate.rate_option', - array( - 'OPTION' => $mark, - 'URL' => $url, - 'SEPARATOR' => $separator - )); - } + $_GET['slideshow'] = $conf['slideshow_period']; } -} -//---------------------------------------------------- users's comments display - -// the picture is commentable if it belongs at least to one category which -// is commentable -$page['show_comments'] = false; -foreach ($related_categories as $category) -{ - if ($category['commentable'] == 'true') - { - $page['show_comments'] = true; - } + $template->assign_block_vars( + 'stop_slideshow', + array( + 'U_SLIDESHOW' => $picture['current']['url'], + ) + ); } -if ($page['show_comments']) -{ - // number of comment for this picture - $query = 'SELECT COUNT(*) AS nb_comments'; - $query.= ' FROM '.COMMENTS_TABLE.' WHERE image_id = '.$_GET['image_id']; - $query.= " AND validated = 'true'"; - $query.= ';'; - $row = mysql_fetch_array( pwg_query( $query ) ); - - // navigation bar creation - $url = PHPWG_ROOT_PATH.'picture.php'; - $url.= get_query_string_diff(array('add_fav','start')); - - if (!isset( $_GET['start'] ) - or !is_numeric( $_GET['start'] ) - or ( is_numeric( $_GET['start'] ) and $_GET['start'] < 0 ) ) - { - $page['start'] = 0; - } - else - { - $page['start'] = $_GET['start']; - } - $page['navigation_bar'] = create_navigation_bar( $url, $row['nb_comments'], - $page['start'], - $conf['nb_comment_page'], - '' ); - $template->assign_block_vars('comments', array( - 'NB_COMMENT'=>$row['nb_comments'], - 'NAV_BAR'=>$page['navigation_bar'])); - - if ($row['nb_comments']>0) - { - $query = 'SELECT id,author,date,image_id,content'; - $query.= ' FROM '.COMMENTS_TABLE.' WHERE image_id = '.$_GET['image_id']; - $query.= " AND validated = 'true'"; - $query.= ' ORDER BY date ASC'; - $query.= ' LIMIT '.$page['start'].', '.$conf['nb_comment_page'].';'; - $result = pwg_query( $query ); - - while ( $row = mysql_fetch_array( $result ) ) - { - $template->assign_block_vars( - 'comments.comment', - array( - 'COMMENT_AUTHOR'=>empty($row['author'])?$lang['guest']:$row['author'], - 'COMMENT_DATE'=>format_date($row['date'], 'mysql_datetime', true), - 'COMMENT'=>parse_comment_content($row['content']) - )); +// +-----------------------------------------------------------------------+ +// | sub pages | +// +-----------------------------------------------------------------------+ - if ( is_admin() ) - { - $template->assign_block_vars( - 'comments.comment.delete', - array('U_COMMENT_DELETE'=> $url.'&del='.$row['id'] - )); - } - } - } +include(PHPWG_ROOT_PATH.'include/picture_rate.inc.php'); +include(PHPWG_ROOT_PATH.'include/picture_comment.inc.php'); +include(PHPWG_ROOT_PATH.'include/picture_metadata.inc.php'); - if (!$user['is_the_guest'] - or ($user['is_the_guest'] and $conf['comments_forall'])) - { - $template->assign_block_vars('comments.add_comment', array()); - // display author field if the user is not logged in - if (!$user['is_the_guest']) - { - $template->assign_block_vars( - 'comments.add_comment.author_known', - array('KNOWN_AUTHOR'=>$user['username']) - ); - } - else - { - $template->assign_block_vars( - 'comments.add_comment.author_field', array() - ); - } - } -} //------------------------------------------------------------ log informations pwg_log( 'picture', $title_img, $picture['current']['file'] ); -- cgit v1.2.3