public function loadPage()
 {
     $table = new DifferentialChangeset();
     $conn_r = $table->establishConnection('r');
     $data = queryfx_all($conn_r, 'SELECT * FROM %T %Q %Q %Q', $table->getTableName(), $this->buildWhereClause($conn_r), $this->buildOrderClause($conn_r), $this->buildLimitClause($conn_r));
     return $table->loadAllFromArray($data);
 }
 public function loadCache()
 {
     $render_cache_key = $this->getRenderCacheKey();
     if (!$render_cache_key) {
         return false;
     }
     $data = null;
     $changeset = new DifferentialChangeset();
     $conn_r = $changeset->establishConnection('r');
     $data = queryfx_one($conn_r, 'SELECT * FROM %T WHERE id = %d', $changeset->getTableName() . '_parse_cache', $render_cache_key);
     if (!$data) {
         return false;
     }
     $data = json_decode($data['cache'], true);
     if (!is_array($data) || !$data) {
         return false;
     }
     foreach (self::getCacheableProperties() as $cache_key) {
         if (!array_key_exists($cache_key, $data)) {
             // If we're missing a cache key, assume we're looking at an old cache
             // and ignore it.
             return false;
         }
     }
     if ($data['cacheVersion'] !== self::CACHE_VERSION) {
         return false;
     }
     unset($data['cacheVersion'], $data['cacheHost']);
     $cache_prop = array_select_keys($data, self::getCacheableProperties());
     foreach ($cache_prop as $cache_key => $v) {
         $this->{$cache_key} = $v;
     }
     return true;
 }
 private function loadCache()
 {
     $render_cache_key = $this->getRenderCacheKey();
     if (!$render_cache_key) {
         return false;
     }
     $data = null;
     $changeset = new DifferentialChangeset();
     $conn_r = $changeset->establishConnection('r');
     $data = queryfx_one($conn_r, 'SELECT * FROM %T WHERE id = %d', $changeset->getTableName() . '_parse_cache', $render_cache_key);
     if (!$data) {
         return false;
     }
     if ($data['cache'][0] == '{') {
         // This is likely an old-style JSON cache which we will not be able to
         // deserialize.
         return false;
     }
     $data = unserialize($data['cache']);
     if (!is_array($data) || !$data) {
         return false;
     }
     foreach (self::getCacheableProperties() as $cache_key) {
         if (!array_key_exists($cache_key, $data)) {
             // If we're missing a cache key, assume we're looking at an old cache
             // and ignore it.
             return false;
         }
     }
     if ($data['cacheVersion'] !== self::CACHE_VERSION) {
         return false;
     }
     // Someone displays contents of a partially cached shielded file.
     if (!isset($data['newRender']) && (!$this->isTopLevel || $this->comments)) {
         return false;
     }
     unset($data['cacheVersion'], $data['cacheHost']);
     $cache_prop = array_select_keys($data, self::getCacheableProperties());
     foreach ($cache_prop as $cache_key => $v) {
         $this->{$cache_key} = $v;
     }
     return true;
 }