Frontend\Core\Engine\Model::getPageRevision PHP Method

getPageRevision() public static method

Get a revision for a page
public static getPageRevision ( integer $revisionId ) : array
$revisionId integer The revisionID.
return array
    public static function getPageRevision($revisionId)
    {
        $revisionId = (int) $revisionId;
        // get database instance
        $db = self::getContainer()->get('database');
        // get data
        $record = (array) $db->getRecord('SELECT p.id, p.parent_id, p.revision_id, p.template_id, p.title, p.navigation_title, p.navigation_title_overwrite,
                 p.data,
                 m.title AS meta_title, m.title_overwrite AS meta_title_overwrite,
                 m.keywords AS meta_keywords, m.keywords_overwrite AS meta_keywords_overwrite,
                 m.description AS meta_description, m.description_overwrite AS meta_description_overwrite,
                 m.custom AS meta_custom,
                 m.url, m.url_overwrite,
                 t.path AS template_path, t.data AS template_data
             FROM pages AS p
             INNER JOIN meta AS m ON p.meta_id = m.id
             INNER JOIN themes_templates AS t ON p.template_id = t.id
             WHERE p.revision_id = ? AND p.language = ?
             LIMIT 1', array($revisionId, LANGUAGE));
        // validate
        if (empty($record)) {
            return array();
        }
        // unserialize page data and template data
        if (isset($record['data']) && $record['data'] != '') {
            $record['data'] = unserialize($record['data']);
        }
        if (isset($record['template_data']) && $record['template_data'] != '') {
            $record['template_data'] = @unserialize($record['template_data']);
        }
        // get blocks
        $blocks = (array) $db->getRecords('SELECT pe.id AS extra_id, pb.html, pb.position,
             pe.module AS extra_module, pe.type AS extra_type, pe.action AS extra_action, pe.data AS extra_data
             FROM pages_blocks AS pb
             INNER JOIN pages AS p ON p.revision_id = pb.revision_id
             LEFT OUTER JOIN modules_extras AS pe ON pb.extra_id = pe.id AND pe.hidden = ?
             WHERE pb.revision_id = ?
             ORDER BY pb.position, pb.sequence', array('N', $record['revision_id']));
        // init positions
        $record['positions'] = array();
        // loop blocks
        foreach ($blocks as $block) {
            // unserialize data if it is available
            if (isset($block['data'])) {
                $block['data'] = unserialize($block['data']);
            }
            // save to position
            $record['positions'][$block['position']][] = $block;
        }
        return $record;
    }

Usage Example

Example #1
0
 /**
  * Get page content
  */
 protected function getPageContent()
 {
     // load revision
     if ($this->URL->getParameter('page_revision', 'int') != 0) {
         // get data
         $this->record = Model::getPageRevision($this->URL->getParameter('page_revision', 'int'));
         // add no-index to meta-custom, so the draft won't get accidentally indexed
         $this->header->addMetaData(array('name' => 'robots', 'content' => 'noindex, nofollow'), true);
     } else {
         // get page record
         $this->record = (array) Model::getPage($this->pageId);
     }
     // empty record (pageId doesn't exists, hope this line is never used)
     if (empty($this->record) && $this->pageId != 404) {
         \SpoonHTTP::redirect(Navigation::getURL(404), 404);
     }
     // init var
     $redirect = true;
     // loop blocks, if all are empty we should redirect to the first child
     foreach ($this->record['positions'] as $blocks) {
         // loop blocks in position
         foreach ($blocks as $block) {
             // HTML provided?
             if ($block['html'] != '') {
                 $redirect = false;
             }
             // an decent extra provided?
             if ($block['extra_type'] == 'block') {
                 $redirect = false;
             }
             // a widget provided
             if ($block['extra_type'] == 'widget') {
                 $redirect = false;
             }
         }
     }
     // should we redirect?
     if ($redirect) {
         // get first child
         $firstChildId = Navigation::getFirstChildId($this->record['id']);
         // validate the child
         if ($firstChildId !== false) {
             // build URL
             $URL = Navigation::getURL($firstChildId);
             // redirect
             \SpoonHTTP::redirect($URL, 301);
         }
     }
 }
All Usage Examples Of Frontend\Core\Engine\Model::getPageRevision