/**
* Set a cookie
+ *
* @param string $sName The name of the cookie.
* @param string $sValue The value of the cookie.
- * @param int $iExpire The time the cookie expires. This is a Unix timestamp so is in number of seconds since the epoch.
- * @param string $sPath The path on the server in which the cookie will be available on.
+ * @param int $iExpire The time the cookie expires. This is a Unix
+ * timestamp so is in number of seconds since
+ * the epoch.
+ * @param string $sPath The path on the server in which the cookie
+ * will be available on.
* @param string $sDomain The domain that the cookie is available.
- * @param boolean $bSecure Indicates that the cookie should only be transmitted over a secure HTTPS connection.
+ * @param boolean $bSecure Indicates that the cookie should only be
+ * transmitted over a secure HTTPS connection.
* @param boolean $bHttpOnly Disallow JS to access the cookie (IE6 only)
+ * @param boolean $bReplace Replace previous cookies with same name?
+ *
* @return void
+ *
+ * @since 1.4.16 and 1.5.1
+ *
*/
-function sqsetcookie($sName,$sValue='deleted',$iExpire=0,$sPath="",$sDomain="",$bSecure=false,$bHttpOnly=true) {
+function sqsetcookie($sName, $sValue='deleted', $iExpire=0, $sPath="", $sDomain="",
+ $bSecure=false, $bHttpOnly=true, $bReplace=false) {
+
// if we have a secure connection then limit the cookies to https only.
if ($sName && isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']) {
$bSecure = true;
. (empty($sPath) ? '' : '; path=' . $sPath)
. (empty($sDomain) ? '' : '; domain=' . $sDomain)
. (!$bSecure ? '' : '; secure')
- . (!$bHttpOnly ? '' : '; HttpOnly'), false);
+ . (!$bHttpOnly ? '' : '; HttpOnly'), $bReplace);
}
}
+
/**
* session_regenerate_id replacement for PHP < 4.3.2
*
$buf = sprintf("%.15s%ld%ld%0.8f", $remote_addr, $tv['sec'], $tv['usec'], php_combined_lcg() * 10);
session_id(md5($buf));
if (ini_get('session.use_cookies')) {
- // at a later stage we use sqsetcookie. At this point just do
- // what session_regenerate_id would do
sqsetcookie(session_name(), session_id(), 0, $base_uri);
}
return TRUE;
}
-/**
- * Find files and/or directories in a given directory optionally
- * limited to only those with the given file extension. If the
- * directory is not found or cannot be opened, no error is generated;
- * only an empty file list is returned.
-FIXME: do we WANT to throw an error or a notice or... or return FALSE?
- *
- * @param string $directory_path The path (relative or absolute)
- * to the desired directory.
- * @param mixed $extension The file extension filter - either
- * an array of desired extension(s),
- * or a comma-separated list of same
- * (optional; default is to return
- * all files (dirs).
- * @param boolean $return_filenames_only When TRUE, only file/dir names
- * are returned, otherwise the
- * $directory_path string is
- * prepended to each file/dir in
- * the returned list (optional;
- * default is filename/dirname only)
- * @param boolean $include_directories When TRUE, directories are
- * included (optional; default
- * DO include directories).
- * @param boolean $directories_only When TRUE, ONLY directories
- * are included (optional; default
- * is to include files too).
- * @param boolean $separate_files_and_directories When TRUE, files and
- * directories are returned
- * in separate lists, so
- * the return value is
- * formatted as a two-element
- * array with the two keys
- * "FILES" and "DIRECTORIES",
- * where corresponding values
- * are lists of either all
- * files or all directories
- * (optional; default do not
- * split up return array).
- * @param boolean $only_sm When TRUE, a security check will
- * limit directory access to only
- * paths within the SquirrelMail
- * installation currently being used
- * (optional; default TRUE)
- *
- * @return array The requested file/directory list(s).
- *
- * @since 1.5.2
- *
- */
-function list_files($directory_path, $extensions='', $return_filenames_only=TRUE,
- $include_directories=TRUE, $directories_only=FALSE,
- $separate_files_and_directories=FALSE, $only_sm=TRUE) {
-
- $files = array();
- $directories = array();
-
-
- // make sure requested path is under SM_PATH if needed
- //
- if ($only_sm) {
- if (strpos(realpath($directory_path), realpath(SM_PATH)) !== 0) {
- //plain_error_message(_("Illegal filesystem access was requested"));
- echo _("Illegal filesystem access was requested");
- exit;
- }
- }
-
-
- // validate given directory
- //
- if (empty($directory_path)
- || !is_dir($directory_path)
- || !($DIR = opendir($directory_path))) {
- return $files;
- }
-
-
- // ensure extensions is an array and is properly formatted
- //
- if (!empty($extensions)) {
- if (!is_array($extensions))
- $extensions = explode(',', $extensions);
- $temp_extensions = array();
- foreach ($extensions as $ext)
- $temp_extensions[] = '.' . trim(trim($ext), '.');
- $extensions = $temp_extensions;
- } else $extensions = array();
-
-
- $directory_path = rtrim($directory_path, '/');
-
-
- // parse through the files
- //
- while (($file = readdir($DIR)) !== false) {
-
- if ($file == '.' || $file == '..') continue;
-
- if (!empty($extensions))
- foreach ($extensions as $ext)
- if (strrpos($file, $ext) !== (strlen($file) - strlen($ext)))
- continue 2;
-
- // only use is_dir() if we really need to (be as efficient as possible)
- //
- $is_dir = FALSE;
- if (!$include_directories || $directories_only
- || $separate_files_and_directories) {
- if (is_dir($directory_path . '/' . $file)) {
- if (!$include_directories) continue;
- $is_dir = TRUE;
- $directories[] = ($return_filenames_only
- ? $file
- : $directory_path . '/' . $file);
- }
- if ($directories_only) continue;
- }
-
- if (!$separate_files_and_directories
- || ($separate_files_and_directories && !$is_dir)) {
- $files[] = ($return_filenames_only
- ? $file
- : $directory_path . '/' . $file);
- }
-
- }
- closedir($DIR);
-
-
- if ($directories_only) return $directories;
- if ($separate_files_and_directories) return array('FILES' => $files,
- 'DIRECTORIES' => $directories);
- return $files;
-
-}
-
-
/**
* Print variable
*
return $value;
}
+
+