X-Git-Url: https://git.mxchange.org/?p=hub.git;a=blobdiff_plain;f=inc%2Fclasses%2Fmain%2Fcriteria%2Fclass_SearchCriteria.php;fp=inc%2Fclasses%2Fmain%2Fcriteria%2Fclass_SearchCriteria.php;h=a2f0910052abb4ba996be3001279fa964560942b;hp=0000000000000000000000000000000000000000;hb=1f1f351e726dae5d4cd25b46639c2fcaa9e38661;hpb=4505d1aba1901496e8034a8009fe635c05e70648 diff --git a/inc/classes/main/criteria/class_SearchCriteria.php b/inc/classes/main/criteria/class_SearchCriteria.php new file mode 100644 index 000000000..a2f091005 --- /dev/null +++ b/inc/classes/main/criteria/class_SearchCriteria.php @@ -0,0 +1,136 @@ + + * @version 0.3.0 + * @copyright Copyright(c) 2007, 2008 Roland Haeder, this is free software + * @license GNU GPL 3.0 or any newer version + * @link http://www.mxchange.org + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +class SearchCriteria extends BaseFrameworkSystem implements LocalCriteria { + /** + * Criteria to handle + */ + private $searchCriteria = array(); + + /** + * Limitation for the search + */ + private $limit = 0; + + /** + * Skip these entries before using them + */ + private $skip = 0; + + /** + * Private constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + + // Set part description + $this->setObjectDescription("Search criteria class"); + + // Create unique ID number + $this->createUniqueID(); + + // Clean up a little + $this->removeNumberFormaters(); + $this->removeSystemArray(); + } + + /** + * Create an instance of this class + * + * @return $criteriaInstance An instance of this criteria + */ + public final static function createSearchCriteria () { + // Get a new instance + $criteriaInstance = new SearchCriteria(); + + // Return this instance + return $criteriaInstance; + } + + /** + * Add extra criteria + * + * @param $criteriaKey Criteria key + * @param $criteriaValue Criteria value + * @return void + */ + public function addCriteria ($criteriaKey, $criteriaValue) { + $this->searchCriteria[$criteriaKey] = $criteriaValue; + } + + /** + * Setter for limit + * + * @param $limit Search limit + * @return void + */ + public final function setLimit ($limit) { + $this->limit = $limit; + } + + /** + * Setter for skip + * + * @param $skip Search skip + * @return void + */ + public final function setSkip ($skip) { + $this->skip = $skip; + } + + /** + * "Getter" for a cache key + * + * @return $cacheKey The key suitable for the cache system + */ + public function getCacheKey () { + // Initialize the key + $cacheKey = ""; + + // Now walk through all criterias + foreach ($this->searchCriteria as $criteriaKey => $criteriaValue) { + // Add the value URL encoded to avoid any trouble with special characters + $cacheKey .= sprintf("%s=%s;", + $criteriaKey, + urlencode($criteriaValue) + ); + } + + // Add limit and skip values + $cacheKey .= sprintf("%%limit%%=%s;%%skip%%=%s", + $this->limit, + $this->skip + ); + + // Return the cache key + return $cacheKey; + } +} + +// [EOF] +?>