public static function update(array $item)
{
trigger_error('Backend\\Modules\\ContentBlocks\\Engine is deprecated.
Switch to doctrine instead.', E_USER_DEPRECATED);
$db = BackendModel::getContainer()->get('database');
// update extra
BackendModel::updateExtra($item['extra_id'], 'data', array('id' => $item['id'], 'extra_label' => $item['title'], 'language' => $item['language'], 'edit_url' => BackendModel::createURLForAction('Edit') . '&id=' . $item['id'], 'custom_template' => $item['template']));
// archive all older content_block versions
$db->update('content_blocks', array('status' => 'archived'), 'id = ? AND language = ?', array($item['id'], BL::getWorkingLanguage()));
// insert new version
$item['revision_id'] = $db->insert('content_blocks', $item);
// how many revisions should we keep
$rowsToKeep = (int) BackendModel::get('fork.settings')->get('ContentBlocks', 'max_num_revisions', 20);
// get revision-ids for items to keep
$revisionIdsToKeep = (array) $db->getColumn('SELECT i.revision_id
FROM content_blocks AS i
WHERE i.id = ? AND i.language = ? AND i.status = ?
ORDER BY i.edited_on DESC
LIMIT ?', array($item['id'], BL::getWorkingLanguage(), 'archived', $rowsToKeep));
// delete other revisions
if (!empty($revisionIdsToKeep)) {
$db->delete('content_blocks', 'id = ? AND language = ? AND status = ? AND revision_id NOT IN (' . implode(', ', $revisionIdsToKeep) . ')', array($item['id'], BL::getWorkingLanguage(), 'archived'));
}
// return the new revision_id
return $item['revision_id'];
}