1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/piwigo_ynh.git synced 2024-09-03 20:06:03 +02:00
piwigo_ynh/sources/include/functions_cookie.inc.php
2016-09-05 13:40:09 +02:00

139 lines
No EOL
4.1 KiB
PHP

<?php
// +-----------------------------------------------------------------------+
// | Piwigo - a PHP based photo gallery |
// +-----------------------------------------------------------------------+
// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org |
// | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net |
// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick |
// +-----------------------------------------------------------------------+
// | 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. |
// +-----------------------------------------------------------------------+
/**
* @package functions\cookie
*/
/**
* Returns the path to use for the Piwigo cookie.
* If Piwigo is installed on :
* http://domain.org/meeting/gallery/
* it will return : "/meeting/gallery"
*
* @return string
*/
function cookie_path()
{
if ( isset($_SERVER['REDIRECT_SCRIPT_NAME']) and
!empty($_SERVER['REDIRECT_SCRIPT_NAME']) )
{
$scr = $_SERVER['REDIRECT_SCRIPT_NAME'];
}
else 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.
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,
strlen($_SERVER['REDIRECT_URL'])-strlen($_SERVER['PATH_INFO']));
}
else
{
$scr = $_SERVER['REDIRECT_URL'];
}
}
else
{
$scr = $_SERVER['SCRIPT_NAME'];
}
$scr = substr($scr,0,strrpos( $scr,'/'));
// add a trailing '/' if needed
if ((strlen($scr) == 0) or ($scr{strlen($scr)-1} !== '/'))
{
$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 ?
$scr = $scr.PHPWG_ROOT_PATH;
while (1)
{
$new = preg_replace('#[^/]+/\.\.(/|$)#', '', $scr);
if ($new==$scr)
{
break;
}
$scr=$new;
}
}
return $scr;
}
/**
* Persistently stores a variable in pwg cookie.
* Set $value to null to delete the cookie.
*
* @param string $car
* @param mixed $value
* @param int|null $expire
* @return bool
*/
function pwg_set_cookie_var($var, $value, $expire=null)
{
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());
}
}
/**
* Retrieves the value of a persistent variable in pwg cookie
* @see pwg_set_cookie_var
*
* @param string $var
* @param mixed $default
* @return mixed
*/
function pwg_get_cookie_var($var, $default = null)
{
if (isset($_COOKIE['pwg_'.$var]))
{
return $_COOKIE['pwg_'.$var];
}
else
{
return $default;
}
}
?>