mirror of
https://github.com/the-djmaze/snappymail.git
synced 2025-02-09 07:24:03 +08:00
105 lines
1.6 KiB
PHP
105 lines
1.6 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace MailSo\Imap;
|
||
|
|
||
|
/**
|
||
|
* @category MailSo
|
||
|
* @package Imap
|
||
|
*/
|
||
|
class SearchBuilder
|
||
|
{
|
||
|
/**
|
||
|
* @var array
|
||
|
*/
|
||
|
private $aList;
|
||
|
|
||
|
/**
|
||
|
* @access private
|
||
|
*/
|
||
|
private function __construct()
|
||
|
{
|
||
|
$this->Clear();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return \MailSo\Imap\SearchBuilder
|
||
|
*/
|
||
|
public static function NewInstance()
|
||
|
{
|
||
|
return new self();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return \MailSo\Imap\SearchBuilder
|
||
|
*/
|
||
|
public function Clear()
|
||
|
{
|
||
|
$this->aList = array();
|
||
|
return $this;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param string $sName
|
||
|
* @param string $sValue = ''
|
||
|
*
|
||
|
* @return \MailSo\Imap\SearchBuilder
|
||
|
*/
|
||
|
public function AddAnd($sName, $sValue = '')
|
||
|
{
|
||
|
return $this->addCri('AND', $sName, $sValue);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param string $sName
|
||
|
* @param string $sValue = ''
|
||
|
*
|
||
|
* @return \MailSo\Imap\SearchBuilder
|
||
|
*/
|
||
|
public function AddOr($sName, $sValue = '')
|
||
|
{
|
||
|
return $this->addCri('OR', $sName, $sValue);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return string
|
||
|
*/
|
||
|
public function Complete()
|
||
|
{
|
||
|
$sResult = '';
|
||
|
foreach ($this->aList as $iIndex => $aItem)
|
||
|
{
|
||
|
$sResult = trim((0 < $iIndex && 'OR' === $aItem[0] ? $aItem[0] : '').
|
||
|
(0 === strlen($sResult) ? '' : ' ('.$sResult.')').' '.$aItem[1].
|
||
|
(0 < strlen($aItem[2]) ? ' '.$aItem[2] : ''));
|
||
|
}
|
||
|
|
||
|
if (0 === strlen($sResult))
|
||
|
{
|
||
|
$sResult = 'ALL';
|
||
|
}
|
||
|
|
||
|
return $sResult;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return string
|
||
|
*/
|
||
|
public function __toString()
|
||
|
{
|
||
|
return $this->Complete();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param string $sType
|
||
|
* @param string $sName
|
||
|
* @param string $sValue = ''
|
||
|
*
|
||
|
* @return \MailSo\Imap\SearchBuilder
|
||
|
*/
|
||
|
private function addCri($sType, $sName, $sValue = '')
|
||
|
{
|
||
|
$this->aList[] = array($sType, $sName, $sValue);
|
||
|
return $this;
|
||
|
}
|
||
|
}
|