Author: leithoff
New Revision: 55169
URL: http://svn.stylite.de/viewvc/egroupware?rev=55169&view=rev
Log:
support SINCE, BEFORE, BETWEEN and ON as (range) date filters; use it in mail_zpush and add example usage to get_rows
Modified:
trunk/emailadmin/inc/class.emailadmin_imapbase.inc.php
trunk/mail/inc/class.mail_ui.inc.php
trunk/mail/inc/class.mail_zpush.inc.php
— trunk/emailadmin/inc/class.emailadmin_imapbase.inc.php (original)
+++ trunk/emailadmin/inc/class.emailadmin_imapbase.inc.php Fri Feb 26 14:04:35 2016
@@ -1904,7 +1904,13 @@
//_debug_array($_criterias);
if (self::$debug) error_log(__METHOD__.' ('.__LINE__.') '.' Criterias:'.(!is_array($_criterias)?" none -> returning":array2string($_criterias)));
-
if((!is_array($_criterias) || $_criterias['status']=='any') &&
-
(!isset($_criterias['string']) || empty($_criterias['string'])) &&
-
(!isset($_criterias['range'])|| empty($_criterias['range']) ||
-
( !empty($_criterias['range'])&& ($_criterias['range']!='BETWEEN' && empty($_criterias['date'])||
-
($_criterias['range']=='BETWEEN' && empty($_criterias['since'])&& empty($_criterias['before']))))))
-
{
-
//error_log(__METHOD__.' ('.__LINE__.') returning early Criterias:'.print_r($_criterias, true));
$imapFilter->flag('DELETED', $set=false);
return $imapFilter;
}
@@ -2056,13 +2062,61 @@
if (isset($_criterias['range']) && !empty($_criterias['range']))
{
-
$rangeValid = false;
-
$imapRangeFilter = new Horde_Imap_Client_Search_Query();
-
$imapRangeFilter->charset('UTF-8');
-
$criteria = strtoupper($_criterias['range']);
-
if ($_criterias['range'] == "BETWEEN" && isset($_criterias['since']) && isset($_criterias['before']) && $_criterias['since']==$_criterias['before'])
-
{
-
$_criterias['date']=$_criterias['since'];
-
unset($_criterias['since']);
-
unset($_criterias['before']);
-
$criteria=$_criterias['range']='ON';
-
}
-
switch ($criteria) {
-
case 'BETWEEN':
-
//try to be smart about missing
-
//enddate
-
if ($_criterias['since'])
-
{
-
$imapRangeFilter->dateSearch(new DateTime($_criterias['since']), Horde_Imap_Client_Search_Query::DATE_SINCE, $header=true, $not=false);
-
$rangeValid = true;
-
}
-
//startdate
-
if ($_criterias['before'])
-
{
-
$imapRangeFilter2 = new Horde_Imap_Client_Search_Query();
-
$imapRangeFilter2->charset('UTF-8');
-
//our before (startdate) is inklusive, as we work with "d-M-Y", we must add a day
-
$_criterias['before'] = date("d-M-Y",egw_time::to($_criterias['before'],'ts')+(3600*24));
-
$imapRangeFilter2->dateSearch(new DateTime($_criterias['before']), Horde_Imap_Client_Search_Query::DATE_BEFORE, $header=true, $not=false);
-
$imapRangeFilter->andSearch($imapRangeFilter2);
-
$rangeValid = true;
-
}
-
break;
-
case 'SINCE'://enddate
-
$imapRangeFilter->dateSearch(new DateTime(($_criterias['since']?$_criterias['since']:$_criterias['date'])), Horde_Imap_Client_Search_Query::DATE_SINCE, $header=true, $not=false);
-
$rangeValid = true;
-
break;
-
case 'BEFORE'://startdate
-
//our before (startdate) is inklusive, as we work with "d-M-Y", we must add a day
-
$_criterias['before'] = date("d-M-Y",egw_time::to(($_criterias['before']?$_criterias['before']:$_criterias['date']),'ts')+(3600*24));
-
$imapRangeFilter->dateSearch(new DateTime($_criterias['before']), Horde_Imap_Client_Search_Query::DATE_BEFORE, $header=true, $not=false);
-
$rangeValid = true;
-
break;
-
case 'ON':
-
$imapRangeFilter->dateSearch(new DateTime($_criterias['date']), Horde_Imap_Client_Search_Query::DATE_ON, $header=true, $not=false);
-
$rangeValid = true;
-
break;
-
}
-
if ($rangeValid && !$queryValid) $queryValid=true;
-
if ($rangeValid) $imapFilter->andSearch($imapRangeFilter);
}
if (self::$debug)
{
//$imapFilter->charset('UTF-8');
$query_str = $imapFilter->build();
— trunk/mail/inc/class.mail_ui.inc.php (original)
+++ trunk/mail/inc/class.mail_ui.inc.php Fri Feb 26 14:04:35 2016
@@ -1308,11 +1308,15 @@
emailadmin_imapbase::$supportsORinQuery[$mail_ui->mail_bo->profileID]=true;
}
}
-
//$cutoffdate = egw_time::to('now','ts')-(3600*24*3);//SINCE, enddate
-
//$cutoffdate2 = egw_time::to('now','ts');//-(3600*24*2);//BEFORE, startdate
$filter = array(
'filterName' => (emailadmin_imapbase::$supportsORinQuery[$mail_ui->mail_bo->profileID]?lang('quicksearch'):lang('subject')),
'type' => ($query['cat_id']?$query['cat_id']:(emailadmin_imapbase::$supportsORinQuery[$mail_ui->mail_bo->profileID]?'quick':'subject')),
'string' => $query['search'],
-
'status' => 'any',
-
//'range'=>"BETWEEN",'since'=> date("d-M-Y", $cutoffdate),'before'=> date("d-M-Y", $cutoffdate2)
-
);
}
else
{
@@ -1330,6 +1334,13 @@
$GLOBALS[‘egw’]->preferences->save_repository(true);
}
//error_log(METHOD.LINE.’ maxMessages:’.$maxMessages.’ Offset:’.$offset.’ Filter:’.array2string($mail_ui->sessionData[‘messageFilter’]));
+/*
+$cutoffdate = egw_time::to(‘now’,‘ts’)-(3600246);//SINCE, enddate
+$cutoffdate2 = egw_time::to(‘now’,‘ts’)-(3600243);//BEFORE, startdate
+$filter[‘range’] = “BETWEEN”;// we support SINCE, BEFORE, BETWEEN and ON
+$filter[‘since’] = date(“d-M-Y”, $cutoffdate);
+$filter[‘before’]= date(“d-M-Y”, $cutoffdate2);
+*/
try
{
if ($maxMessages > 75)
— trunk/mail/inc/class.mail_zpush.inc.php (original)
+++ trunk/mail/inc/class.mail_zpush.inc.php Fri Feb 26 14:04:35 2016
@@ -255,7 +255,7 @@
*/
private function _disconnect()
{
@@ -271,24 +271,24 @@
public function GetFolderList()
{
$folderlist = array();
-
if ($this->debugLevel>0) ZLog::Write(LOGLEVEL_DEBUG,__METHOD__.__LINE__);
/*foreach($available_accounts as $account)*/ $account = 0;
{
$this->_connect($account);
if (!isset($this->folders)) $this->folders = $this->mail->getFolderObjects(true,false,$_alwaysGetDefaultFolders=true);
-
if ($this->debugLevel>1) ZLog::Write(LOGLEVEL_DEBUG,__METHOD__.__LINE__.' folder='.$folder);
$folderlist[] = $f = array(
'id' => $this->createID($account,$folder),
'mod' => $folderObj->shortDisplayName,
'parent' => $this->getParentID($account,$folder),
);
-
if ($this->debugLevel>0) ZLog::Write(LOGLEVEL_DEBUG,__METHOD__."() returning ".array2string($f));
-
}
-
}
-
ZLog::Write(LOGLEVEL_DEBUG,__METHOD__."() returning ".array2string($folderlist));
-
if ($this->debugLevel>1) ZLog::Write(LOGLEVEL_DEBUG,__METHOD__."() returning ".array2string($f));
-
}
-
}
-
if ($this->debugLevel>0) ZLog::Write(LOGLEVEL_DEBUG,__METHOD__."() returning ".array2string($folderlist));
return $folderlist;
}
@@ -1067,6 +1067,7 @@
//mail AND meeting. we dont want this. accepting meeting requests with the mobile does nothing
$output->meetingrequest->globalobjid = activesync_backend::uid2globalObjId($id);
$output->messageclass = “IPM.Schedule.Meeting.Request”;
-
//$output->messageclass = "IPM.Schedule.Meeting";
unset($attachment);
continue; // do NOT add attachment as attachment
}
@@ -1364,7 +1365,7 @@
}
$messagelist = $_filter = array();
// if not connected, any further action must fail
-
if (!empty($cutoffdate)) $_filter = array('status'=>array('UNDELETED'),'type'=>"SINCE",'string'=> date("d-M-Y", $cutoffdate));
-
if (!empty($cutoffdate)) $_filter = array('status'=>array('UNDELETED'),'range'=>"SINCE",'date'=> date("d-M-Y", $cutoffdate));
if ($this->debugLevel>1) $starttime = microtime (true);
$account = $_folderName = $id = null;
$this->splitID($folderid,$account,$_folderName,$id);
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
eGroupWare-cvs mailing list
eGroupWare-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/egroupware-cvs