aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrvelices <rv-github@modusoptimus.com>2008-09-17 01:48:31 +0000
committerrvelices <rv-github@modusoptimus.com>2008-09-17 01:48:31 +0000
commitcc12d640519a673d1a422cc608ca6ec1a59ef46e (patch)
tree988c8cb507ee9561d5b96f30974dbb2753c426b6
parent7ea85bc0355c7ad60c51a4a1d3078e3dc4603031 (diff)
- fix status header (web services + IE6 min display)
- sql optims in feed /notification - dont send cookie for 10 years from admin/history.php git-svn-id: http://piwigo.org/svn/trunk@2543 68402e56-0260-453c-a942-63ccdbb3a9ee
-rw-r--r--admin/history.php3
-rw-r--r--include/common.inc.php1
-rw-r--r--include/functions_cookie.inc.php26
-rw-r--r--include/functions_html.inc.php6
-rw-r--r--include/functions_notification.inc.php14
-rw-r--r--include/ws_core.inc.php79
6 files changed, 48 insertions, 81 deletions
diff --git a/admin/history.php b/admin/history.php
index 02b321055..222deaaf1 100644
--- a/admin/history.php
+++ b/admin/history.php
@@ -116,7 +116,8 @@ if (isset($_POST['submit']))
$search['fields']['display_thumbnail'] = $_POST['display_thumbnail'];
// Display choise are also save to one cookie
- pwg_set_cookie_var('history_display_thumbnail', $_POST['display_thumbnail']);
+ $cookie_val = ($_POST['display_thumbnail']!=$display_thumbnails[2] and in_array($_POST['display_thumbnail'], $display_thumbnails)) ? $_POST['display_thumbnail']:null;
+ pwg_set_cookie_var('history_display_thumbnail', $cookie_val, strtotime('+1 month') );
// TODO manage inconsistency of having $_POST['image_id'] and
// $_POST['filename'] simultaneously
diff --git a/include/common.inc.php b/include/common.inc.php
index 1ddebfc9b..a8f661dca 100644
--- a/include/common.inc.php
+++ b/include/common.inc.php
@@ -223,6 +223,7 @@ if ($conf['gallery_locked'])
@header('Retry-After: 900');
echo l10n('gallery_locked_message')
.'<a href="'.get_absolute_root_url(false).'identification.php">.</a>';
+ echo str_repeat( ' ', 512); //IE6 doesn't error output if below a size
exit();
}
}
diff --git a/include/functions_cookie.inc.php b/include/functions_cookie.inc.php
index 159a5b538..66b66221f 100644
--- a/include/functions_cookie.inc.php
+++ b/include/functions_cookie.inc.php
@@ -36,15 +36,15 @@ function cookie_path()
{
// 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.
- if
- (
+ if
+ (
isset($_SERVER['PATH_INFO']) and !empty($_SERVER['PATH_INFO']) and
($_SERVER['REDIRECT_URL'] !== $_SERVER['PATH_INFO']) and
(substr($_SERVER['REDIRECT_URL'],-strlen($_SERVER['PATH_INFO']))
== $_SERVER['PATH_INFO'])
)
{
- $scr = substr($_SERVER['REDIRECT_URL'], 0,
+ $scr = substr($_SERVER['REDIRECT_URL'], 0,
strlen($_SERVER['REDIRECT_URL'])-strlen($_SERVER['PATH_INFO']));
}
else
@@ -64,7 +64,7 @@ function cookie_path()
{
$scr .= '/';
}
-
+
if ( substr(PHPWG_ROOT_PATH,0,3)=='../')
{ // this is maybe a plugin inside pwg directory
// TODO - what if it is an external script outside PWG ?
@@ -87,12 +87,20 @@ function cookie_path()
* @return boolean true on success
* @see pwg_get_cookie_var
*/
-function pwg_set_cookie_var($var, $value)
+function pwg_set_cookie_var($var, $value, $expire=null)
{
- $_COOKIE['pwg_'.$var] = $value;
- return
- setcookie('pwg_'.$var, $value,
- strtotime('+10 years'), cookie_path());
+ if ($value==null or $expire===0)
+ {
+ unset($_COOKIE['pwg_'.$var]);
+ return setcookie('pwg_'.$var, false, 0, cookie_path());
+
+ }
+ else
+ {
+ $_COOKIE['pwg_'.$var] = $value;
+ $expire = is_numeric($expire) ? $expire : strtotime('+10 years');
+ return setcookie('pwg_'.$var, $value, $expire, cookie_path());
+ }
}
/**
diff --git a/include/functions_html.inc.php b/include/functions_html.inc.php
index ca07a1e16..2b3994aa8 100644
--- a/include/functions_html.inc.php
+++ b/include/functions_html.inc.php
@@ -585,16 +585,17 @@ function access_denied()
get_root_url().'identification.php?redirect='
.urlencode(urlencode($_SERVER['REQUEST_URI']));
+ set_status_header(401);
if ( isset($user) and !is_a_guest() )
{
echo '<div style="text-align:center;">'.l10n('access_forbiden').'<br />';
echo '<a href="'.get_root_url().'identification.php">'.l10n('identification').'</a>&nbsp;';
echo '<a href="'.make_index_url().'">'.l10n('home').'</a></div>';
+ echo str_repeat( ' ', 512); //IE6 doesn't error output if below a size
exit();
}
else
{
- set_status_header(401);
redirect_html($login_url);
}
}
@@ -677,7 +678,7 @@ $btrace_msg
</pre>\n";
@set_status_header(500);
- echo $display.str_repeat( ' ', 300); //IE doesn't error output if below a size
+ echo $display.str_repeat( ' ', 300); //IE6 doesn't error output if below a size
if ( function_exists('ini_set') )
{// if possible turn off error display (we display it)
@@ -754,6 +755,7 @@ function set_status_header($code, $text='')
case 403: $text='Forbidden';break;
case 404: $text='Not found';break;
case 500: $text='Server error';break;
+ case 501: $text='Not implemented';break;
case 503: $text='Service unavailable';break;
}
}
diff --git a/include/functions_notification.inc.php b/include/functions_notification.inc.php
index 259a34613..32d3ed9c7 100644
--- a/include/functions_notification.inc.php
+++ b/include/functions_notification.inc.php
@@ -35,7 +35,7 @@
*
* @return string sql where
*/
-function get_std_sql_where_restrict_filter($prefix_condition, $force_one_condition = false)
+function get_std_sql_where_restrict_filter($prefix_condition, $img_field='ic.image_id', $force_one_condition = false)
{
return get_sql_condition_FandF
(
@@ -43,7 +43,7 @@ function get_std_sql_where_restrict_filter($prefix_condition, $force_one_conditi
(
'forbidden_categories' => 'ic.category_id',
'visible_categories' => 'ic.category_id',
- 'visible_images' => 'ic.image_id'
+ 'visible_images' => $img_field
),
$prefix_condition,
$force_one_condition
@@ -89,7 +89,7 @@ function custom_notification_query($action, $type, $start, $end)
FROM '.IMAGES_TABLE.' INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON image_id = id
WHERE date_available > \''.$start.'\'
AND date_available <= \''.$end.'\'
- '.get_std_sql_where_restrict_filter('AND').'
+ '.get_std_sql_where_restrict_filter('AND', 'id').'
;';
break;
case 'updated_categories':
@@ -97,7 +97,7 @@ function custom_notification_query($action, $type, $start, $end)
FROM '.IMAGES_TABLE.' INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON image_id = id
WHERE date_available > \''.$start.'\'
AND date_available <= \''.$end.'\'
- '.get_std_sql_where_restrict_filter('AND').'
+ '.get_std_sql_where_restrict_filter('AND', 'id').'
;';
break;
case 'new_users':
@@ -434,13 +434,13 @@ function get_recent_post_dates($max_dates, $max_elements, $max_cats)
{
global $conf, $user;
- $where_sql = get_std_sql_where_restrict_filter('WHERE', true);
+ $where_sql = get_std_sql_where_restrict_filter('WHERE', 'i.id', true);
$query = '
SELECT date_available,
COUNT(DISTINCT id) nb_elements,
COUNT(DISTINCT category_id) nb_cats
- FROM '.IMAGES_TABLE.' INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON id=image_id
+ FROM '.IMAGES_TABLE.' i INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON id=image_id
'.$where_sql.'
GROUP BY date_available
ORDER BY date_available DESC
@@ -459,7 +459,7 @@ SELECT date_available,
{ // get some thumbnails ...
$query = '
SELECT DISTINCT id, path, name, tn_ext, file
- FROM '.IMAGES_TABLE.' INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON id=image_id
+ FROM '.IMAGES_TABLE.' i INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON id=image_id
'.$where_sql.'
AND date_available="'.$dates[$i]['date_available'].'"
AND tn_ext IS NOT NULL
diff --git a/include/ws_core.inc.php b/include/ws_core.inc.php
index cc1c1c756..24f10f114 100644
--- a/include/ws_core.inc.php
+++ b/include/ws_core.inc.php
@@ -35,7 +35,7 @@ define( 'WS_PARAM_ACCEPT_ARRAY', 0x010000 );
define( 'WS_PARAM_FORCE_ARRAY', 0x030000 );
define( 'WS_PARAM_OPTIONAL', 0x040000 );
-define( 'WS_ERR_INVALID_METHOD', 1001 );
+define( 'WS_ERR_INVALID_METHOD', 501 );
define( 'WS_ERR_MISSING_PARAM', 1002 );
define( 'WS_ERR_INVALID_PARAM', 1003 );
@@ -47,12 +47,15 @@ define( 'WS_XML_CONTENT', 'content_xml_');
*/
class PwgError
{
- var $_code;
- var $_codeText;
+ private $_code;
+ private $_codeText;
function PwgError($code, $codeText)
{
- set_status_header($code, $codeText);
+ if ($code>=400 and $code<600)
+ {
+ set_status_header($code, $codeText);
+ }
$this->_code = $code;
$this->_codeText = $codeText;
@@ -80,7 +83,7 @@ class PwgNamedArray
* @param xmlAttributes array of sub-item attributes that will be encoded as
* xml attributes instead of xml child elements
*/
- function PwgNamedArray(&$arr, $itemName, $xmlAttributes=array() )
+ function PwgNamedArray($arr, $itemName, $xmlAttributes=array() )
{
$this->_content = $arr;
$this->_itemName = $itemName;
@@ -134,52 +137,6 @@ class PwgNamedStruct
/**
- * Replace array_walk_recursive()
- *
- * @category PHP
- * @package PHP_Compat
- * @link http://php.net/function.array_walk_recursive
- * @author Tom Buskens <ortega@php.net>
- * @author Aidan Lister <aidan@php.net>
- * @version $Revision$
- * @since PHP 5
- * @require PHP 4.0.6 (is_callable)
- */
-if (!function_exists('array_walk_recursive')) {
- function array_walk_recursive(&$input, $funcname)
- {
- if (!is_callable($funcname)) {
- if (is_array($funcname)) {
- $funcname = $funcname[0] . '::' . $funcname[1];
- }
- user_error('array_walk_recursive() Not a valid callback ' . $user_func,
- E_USER_WARNING);
- return;
- }
-
- if (!is_array($input)) {
- user_error('array_walk_recursive() The argument should be an array',
- E_USER_WARNING);
- return;
- }
-
- $args = func_get_args();
-
- foreach ($input as $key => $item) {
- if (is_array($item)) {
- array_walk_recursive($item, $funcname, $args);
- $input[$key] = $item;
- } else {
- $args[0] = &$item;
- $args[1] = &$key;
- call_user_func_array($funcname, $args);
- $input[$key] = $item;
- }
- }
- }
-}
-
-/**
* Abstract base class for request handlers.
*/
class PwgRequestHandler
@@ -209,7 +166,7 @@ class PwgResponseEncoder
* returns true if the parameter is a 'struct' (php array type whose keys are
* NOT consecutive integers starting with 0)
*/
- function is_struct(&$data)
+ static function is_struct(&$data)
{
if (is_array($data) )
{
@@ -225,7 +182,7 @@ class PwgResponseEncoder
* removes all XML formatting from $response (named array, named structs, etc)
* usually called by every response encoder, except rest xml.
*/
- function flattenResponse(&$response)
+ static function flattenResponse(&$response)
{
PwgResponseEncoder::_mergeAttributesAndContent($response);
PwgResponseEncoder::_removeNamedArray($response);
@@ -239,7 +196,7 @@ class PwgResponseEncoder
PwgResponseEncoder::_mergeAttributesAndContent($response);
}
- /*private*/ function _remove_named_callback(&$value, $key)
+ private static function _remove_named_callback(&$value, $key)
{
do
{
@@ -251,7 +208,7 @@ class PwgResponseEncoder
while ($changed);
}
- /*private*/ function _mergeAttributesAndContent(&$value)
+ private static function _mergeAttributesAndContent(&$value)
{
if ( !is_array($value) )
return;
@@ -310,7 +267,7 @@ class PwgResponseEncoder
return $ret;
}
- /*private*/ function _removeNamedArray(&$value)
+ private static function _removeNamedArray(&$value)
{
if ( strtolower( get_class($value) ) =='pwgnamedarray')
{
@@ -320,7 +277,7 @@ class PwgResponseEncoder
return 0;
}
- /*private*/ function _removeNamedStruct(&$value)
+ private static function _removeNamedStruct(&$value)
{
if ( strtolower( get_class($value) ) =='pwgnamedstruct')
{
@@ -388,9 +345,7 @@ Request format: ".@$this->_requestFormat." Response format: ".@$this->_responseF
if ( is_null($this->_requestHandler) )
{
- $this->sendResponse(
- new PwgError(400, 'Unknown request format')
- );
+ $this->sendResponse( new PwgError(400, 'Unknown request format') );
return;
}
@@ -583,7 +538,7 @@ Request format: ".@$this->_requestFormat." Response format: ".@$this->_responseF
/**
* WS reflection method implementation: lists all available methods
*/
- /*static*/ function ws_getMethodList($params, &$service)
+ static function ws_getMethodList($params, &$service)
{
return array('methods' => new PwgNamedArray( array_keys($service->_methods),'method' ) );
}
@@ -591,7 +546,7 @@ Request format: ".@$this->_requestFormat." Response format: ".@$this->_responseF
/**
* WS reflection method implementation: gets information about a given method
*/
- /*static*/ function ws_getMethodDetails($params, &$service)
+ static function ws_getMethodDetails($params, &$service)
{
$methodName = $params['methodName'];
if (!$service->hasMethod($methodName))