Files
server/usr/share/psa-horde/imp/lib/Search/Element.php
2026-01-07 20:52:11 +01:00

106 lines
2.4 KiB
PHP

<?php
/**
* Copyright 2010-2017 Horde LLC (http://www.horde.org/)
*
* See the enclosed file COPYING for license information (GPL). If you
* did not receive this file, see http://www.horde.org/licenses/gpl.
*
* @category Horde
* @copyright 2010-2017 Horde LLC
* @license http://www.horde.org/licenses/gpl GPL
* @package IMP
*/
/**
* Abstract framework for a search query element.
*
* @author Michael Slusarz <slusarz@horde.org>
* @category Horde
* @copyright 2010-2017 Horde LLC
* @license http://www.horde.org/licenses/gpl GPL
* @package IMP
*/
abstract class IMP_Search_Element implements Serializable
{
/* Serialized version. */
const VERSION = 1;
/**
* Allow NOT search on this element?
*
* @var boolean
*/
public $not = true;
/**
* Data for this element.
*
* @var object
*/
protected $_data;
/**
* Adds the current query item to the query object.
*
* @param string $mbox The mailbox to create
* the query for.
* @param Horde_Imap_Client_Search_Query $queryob The query object.
*
* @return Horde_Imap_Client_Search_Query The altered query object.
*/
abstract public function createQuery($mbox, $queryob);
/**
* Return search query text representation.
*
* @return array The textual description of this search element.
*/
abstract public function queryText();
/**
* Returns the criteria data for the element.
*
* @return object The criteria (see each class for the available
* properties).
*/
public function getCriteria()
{
return $this->_data;
}
/* Serializable methods. */
/**
* Serialization.
*
* @return string Serialized data.
*/
public function serialize()
{
return json_encode(array(
self::VERSION,
$this->_data
));
}
/**
* Unserialization.
*
* @param string $data Serialized data.
*
* @throws Exception
*/
public function unserialize($data)
{
$data = json_decode($data);
if (!is_array($data) ||
!isset($data[0]) ||
($data[0] != self::VERSION)) {
throw new Exception('Cache version change');
}
$this->_data = $data[1];
}
}