Back to PageController class

Method get

public mixed
get
(mixed $id = false, mixed $group = 'page')
Get the cached page data
Parameters
  • bool $id The cache data ID
  • string $group The cache data group
Returns
  • mixed Boolean false on no result, cached object otherwise
Since
  • 1.7.0

Method get - Source code

/**
 * Get the cached page data
 *
 * @param   boolean  $id     The cache data ID
 * @param   string   $group  The cache data group
 *
 * @return  mixed  Boolean false on no result, cached object otherwise
 *
 * @since   1.7.0
 */
public function get($id = false, $group = 'page')
{
    // If an id is not given, generate it from the request
    if (!$id) {
        $id = $this->_makeId();
    }
    // If the etag matches the page id ... set a no change header and exit : utilize browser cache
    if (!headers_sent() && isset($_SERVER['HTTP_IF_NONE_MATCH'])) {
        $etag = stripslashes($_SERVER['HTTP_IF_NONE_MATCH']);
        if ($etag == $id) {
            $browserCache = $this->options['browsercache'] ?? false;
            if ($browserCache) {
                $this->_noChange();
            }
        }
    }
    // We got a cache hit... set the etag header and echo the page data
    $data = $this->cache->get($id, $group);
    $this->_locktest = (object) array('locked' => null, 'locklooped' => null);
    if ($data === false) {
        $this->_locktest = $this->cache->lock($id, $group);
        // If locklooped is true try to get the cached data again; it could exist now.
        if ($this->_locktest->locked === true && $this->_locktest->locklooped === true) {
            $data = $this->cache->get($id, $group);
        }
    }
    if ($data !== false) {
        if ($this->_locktest->locked === true) {
            $this->cache->unlock($id, $group);
        }
        $data = unserialize(trim($data));
        $data = Cache::getWorkarounds($data);
        $this->_setEtag($id);
        return $data;
    }
    // Set ID and group placeholders
    $this->_id = $id;
    $this->_group = $group;
    return false;
}