|
|
|
@ -1018,15 +1018,15 @@ function rcube_strtotime($date)
|
|
|
|
|
* Convert the given date to a human readable form
|
|
|
|
|
* This uses the date formatting properties from config
|
|
|
|
|
*
|
|
|
|
|
* @param mixed Date representation (string or timestamp)
|
|
|
|
|
* @param mixed Date representation (string or timestamp)
|
|
|
|
|
* @param string Date format to use
|
|
|
|
|
* @param bool Enables date convertion according to user timezone
|
|
|
|
|
*
|
|
|
|
|
* @return string Formatted date string
|
|
|
|
|
*/
|
|
|
|
|
function format_date($date, $format=NULL)
|
|
|
|
|
function format_date($date, $format=NULL, $convert=true)
|
|
|
|
|
{
|
|
|
|
|
global $RCMAIL, $CONFIG;
|
|
|
|
|
|
|
|
|
|
$ts = NULL;
|
|
|
|
|
|
|
|
|
|
if (!empty($date))
|
|
|
|
|
$ts = rcube_strtotime($date);
|
|
|
|
@ -1034,23 +1034,29 @@ function format_date($date, $format=NULL)
|
|
|
|
|
if (empty($ts))
|
|
|
|
|
return '';
|
|
|
|
|
|
|
|
|
|
// get user's timezone offset
|
|
|
|
|
$tz = $RCMAIL->config->get_timezone();
|
|
|
|
|
|
|
|
|
|
// convert time to user's timezone
|
|
|
|
|
$timestamp = $ts - date('Z', $ts) + ($tz * 3600);
|
|
|
|
|
if ($convert) {
|
|
|
|
|
// get user's timezone offset
|
|
|
|
|
$tz = $RCMAIL->config->get_timezone();
|
|
|
|
|
|
|
|
|
|
// get current timestamp in user's timezone
|
|
|
|
|
$now = time(); // local time
|
|
|
|
|
$now -= (int)date('Z'); // make GMT time
|
|
|
|
|
$now += ($tz * 3600); // user's time
|
|
|
|
|
$now_date = getdate($now);
|
|
|
|
|
// convert time to user's timezone
|
|
|
|
|
$timestamp = $ts - date('Z', $ts) + ($tz * 3600);
|
|
|
|
|
|
|
|
|
|
$today_limit = mktime(0, 0, 0, $now_date['mon'], $now_date['mday'], $now_date['year']);
|
|
|
|
|
$week_limit = mktime(0, 0, 0, $now_date['mon'], $now_date['mday']-6, $now_date['year']);
|
|
|
|
|
// get current timestamp in user's timezone
|
|
|
|
|
$now = time(); // local time
|
|
|
|
|
$now -= (int)date('Z'); // make GMT time
|
|
|
|
|
$now += ($tz * 3600); // user's time
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
$now = time();
|
|
|
|
|
$timestamp = $ts;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// define date format depending on current time
|
|
|
|
|
if (!$format) {
|
|
|
|
|
$now_date = getdate($now);
|
|
|
|
|
$today_limit = mktime(0, 0, 0, $now_date['mon'], $now_date['mday'], $now_date['year']);
|
|
|
|
|
$week_limit = mktime(0, 0, 0, $now_date['mon'], $now_date['mday']-6, $now_date['year']);
|
|
|
|
|
|
|
|
|
|
if ($CONFIG['prettydate'] && $timestamp > $today_limit && $timestamp < $now) {
|
|
|
|
|
$format = $RCMAIL->config->get('date_today', $RCMAIL->config->get('time_format', 'H:i'));
|
|
|
|
|
$today = true;
|
|
|
|
@ -1226,7 +1232,7 @@ function rcmail_mailbox_select($p = array())
|
|
|
|
|
if ($p['noselection'])
|
|
|
|
|
$select->add($p['noselection'], '');
|
|
|
|
|
|
|
|
|
|
rcmail_render_folder_tree_select($a_mailboxes, $mbox, $p['maxlength'], $select, $p['realnames'], 0, $p['exceptions']);
|
|
|
|
|
rcmail_render_folder_tree_select($a_mailboxes, $mbox, $p['maxlength'], $select, $p['realnames'], 0, $p);
|
|
|
|
|
|
|
|
|
|
return $select;
|
|
|
|
|
}
|
|
|
|
@ -1275,9 +1281,9 @@ function rcmail_build_folder_tree(&$arrFolders, $folder, $delm='/', $path='')
|
|
|
|
|
$path .= $prefix.$currentFolder;
|
|
|
|
|
|
|
|
|
|
if (!isset($arrFolders[$currentFolder])) {
|
|
|
|
|
// Check \Noselect option (if options are in cache)
|
|
|
|
|
if (!$virtual && ($opts = $RCMAIL->imap->mailbox_options($path))) {
|
|
|
|
|
$virtual = in_array('\\Noselect', $opts);
|
|
|
|
|
// Check \Noselect attribute (if attributes are in cache)
|
|
|
|
|
if (!$virtual && ($attrs = $RCMAIL->imap->mailbox_attributes($path))) {
|
|
|
|
|
$virtual = in_array('\\Noselect', $attrs);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$arrFolders[$currentFolder] = array(
|
|
|
|
@ -1396,30 +1402,40 @@ function rcmail_render_folder_tree_html(&$arrFolders, &$mbox_name, &$jslist, $at
|
|
|
|
|
* @access private
|
|
|
|
|
* @return string
|
|
|
|
|
*/
|
|
|
|
|
function rcmail_render_folder_tree_select(&$arrFolders, &$mbox_name, $maxlength, &$select, $realnames=false, $nestLevel=0, $exceptions=array())
|
|
|
|
|
function rcmail_render_folder_tree_select(&$arrFolders, &$mbox_name, $maxlength, &$select, $realnames=false, $nestLevel=0, $opts=array())
|
|
|
|
|
{
|
|
|
|
|
global $RCMAIL;
|
|
|
|
|
|
|
|
|
|
$out = '';
|
|
|
|
|
|
|
|
|
|
foreach ($arrFolders as $key => $folder) {
|
|
|
|
|
if (empty($exceptions) || !in_array($folder['id'], $exceptions)) {
|
|
|
|
|
if (!$realnames && ($folder_class = rcmail_folder_classname($folder['id'])))
|
|
|
|
|
$foldername = rcube_label($folder_class);
|
|
|
|
|
else {
|
|
|
|
|
$foldername = $folder['name'];
|
|
|
|
|
|
|
|
|
|
// shorten the folder name to a given length
|
|
|
|
|
if ($maxlength && $maxlength>1)
|
|
|
|
|
$foldername = abbreviate_string($foldername, $maxlength);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$select->add(str_repeat(' ', $nestLevel*4) . $foldername, $folder['id']);
|
|
|
|
|
// skip exceptions (and its subfolders)
|
|
|
|
|
if (!empty($opts['exceptions']) && in_array($folder['id'], $opts['exceptions'])) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
else if ($nestLevel)
|
|
|
|
|
|
|
|
|
|
// skip folders in which it isn't possible to create subfolders
|
|
|
|
|
if (!empty($opts['skip_noinferiors']) && ($attrs = $RCMAIL->imap->mailbox_attributes($folder['id']))
|
|
|
|
|
&& in_array('\\Noinferiors', $attrs)
|
|
|
|
|
) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!$realnames && ($folder_class = rcmail_folder_classname($folder['id'])))
|
|
|
|
|
$foldername = rcube_label($folder_class);
|
|
|
|
|
else {
|
|
|
|
|
$foldername = $folder['name'];
|
|
|
|
|
|
|
|
|
|
// shorten the folder name to a given length
|
|
|
|
|
if ($maxlength && $maxlength>1)
|
|
|
|
|
$foldername = abbreviate_string($foldername, $maxlength);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$select->add(str_repeat(' ', $nestLevel*4) . $foldername, $folder['id']);
|
|
|
|
|
|
|
|
|
|
if (!empty($folder['folders']))
|
|
|
|
|
$out .= rcmail_render_folder_tree_select($folder['folders'], $mbox_name, $maxlength,
|
|
|
|
|
$select, $realnames, $nestLevel+1, $exceptions);
|
|
|
|
|
$select, $realnames, $nestLevel+1, $opts);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $out;
|
|
|
|
|