0971ce48d2
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
153 lines
No EOL
4.4 KiB
PHP
153 lines
No EOL
4.4 KiB
PHP
<?php
|
|
// +-----------------------------------------------------------------------+
|
|
// | PhpWebGallery - a PHP based picture gallery |
|
|
// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
|
|
// | Copyright (C) 2003-2006 PhpWebGallery Team - http://phpwebgallery.net |
|
|
// +-----------------------------------------------------------------------+
|
|
// | branch : BSF (Best So Far)
|
|
// | file : $RCSfile$
|
|
// | 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 |
|
|
// | the Free Software Foundation |
|
|
// | |
|
|
// | This program is distributed in the hope that it will be useful, but |
|
|
// | WITHOUT ANY WARRANTY; without even the implied warranty of |
|
|
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
|
// | General Public License for more details. |
|
|
// | |
|
|
// | You should have received a copy of the GNU General Public License |
|
|
// | along with this program; if not, write to the Free Software |
|
|
// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
|
|
// | USA. |
|
|
// +-----------------------------------------------------------------------+
|
|
|
|
/**
|
|
* rate a picture by a user
|
|
*
|
|
* @param int image identifier
|
|
* @param int rate
|
|
* @return void
|
|
*/
|
|
function rate_picture($image_id, $rate)
|
|
{
|
|
global $conf, $user;
|
|
|
|
if (!isset($rate)
|
|
or !$conf['rate']
|
|
or !in_array($rate, $conf['rate_items']))
|
|
{
|
|
return;
|
|
}
|
|
|
|
$user_anonymous = is_autorize_status(ACCESS_CLASSIC) ? false : true;
|
|
|
|
if ($user_anonymous and !$conf['rate_anonymous'])
|
|
{
|
|
return;
|
|
}
|
|
|
|
if ($user_anonymous)
|
|
{
|
|
$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.'\'
|
|
;';
|
|
$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);
|
|
}
|
|
|
|
$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()
|
|
);
|
|
} // end client changed ip
|
|
} // end client has cookie
|
|
else
|
|
{
|
|
setcookie(
|
|
'pwg_anonymous_rater',
|
|
$anonymous_id,
|
|
strtotime('+10 years'),
|
|
cookie_path()
|
|
);
|
|
}
|
|
} // end anonymous user
|
|
$query = '
|
|
DELETE
|
|
FROM '.RATE_TABLE.'
|
|
WHERE element_id = '.$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.'
|
|
(user_id,anonymous_id,element_id,rate,date)
|
|
VALUES
|
|
('
|
|
.$user['id'].','
|
|
.(isset($anonymous_id) ? '\''.$anonymous_id.'\'' : "''").','
|
|
.$image_id.','
|
|
.$rate
|
|
.',NOW())
|
|
;';
|
|
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 = '
|
|
UPDATE '.IMAGES_TABLE.'
|
|
SET average_rate = '.$row['average_rate'].'
|
|
WHERE id = '.$image_id.'
|
|
;';
|
|
pwg_query($query);
|
|
}
|
|
|
|
?>
|