- /**
- * Initializes the cache instance with a new object
- *
- * @return void
- */
- protected function initCacheInstance () {
- // Set the new instance
- $this->cacheInstance = CacheFactory::getFactory()->createConfiguredCache();
- }
-
- /**
- * Do a "select" query on the user table with the given search criteria and
- * store it in cache for later usage
- *
- * @param $criteriaInstance An instance of a Criteria class
- * @return $resultInstance An instance of a database result class
- */
- public function doSelectByCriteria (Criteria $criteriaInstance) {
- // First get a key suitable for our cache and extend it with this class name
- $cacheKey = sprintf("%s@%s",
- $this->__toString(),
- $criteriaInstance->getCacheKey()
- );
-
- // Does this key exists in cache?
- if ($this->cacheInstance->offsetExists($cacheKey)) {
- // Then use this result
- $result = $cacheInstance->offsetGet($cacheKey);
- } else {
- // Now it's time to ask the database layer for this select statement
- $result = $this->getDatabaseInstance()->doSelectByTableCriteria(self::DB_TABLE_USER, $criteriaInstance);
-
- // Cache the result if not null
- if (!is_null($result)) {
- // A valid result has returned from the database layer
- $this->cacheInstance->offsetSet($cacheKey, $result);
- } else {
- // This invalid result must be wrapped
- $result = array(
- 'status' => "invalid",
- 'exception' => $this->getDatabaseInstance()->getLastException()
- );
- }
- }
-
- // Create an instance of a DatabaseResult class with the given result
- $resultInstance = DatabaseResult::createDatabaseResult($result);
-
- // And return the instance
- return $resultInstance;
- }
-