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;
}