Backend\Modules\ContentBlocks\Engine\Model::update PHP Method

update() public static method

Update an existing item.
Deprecation: use doctrine instead
public static update ( array $item ) : integer
$item array The new data.
return integer
    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'];
    }

Usage Example

Example #1
0
 /**
  * Validate the form
  */
 private function validateForm()
 {
     if ($this->frm->isSubmitted()) {
         $this->frm->cleanupFields();
         $fields = $this->frm->getFields();
         // validate fields
         $fields['title']->isFilled(BL::err('TitleIsRequired'));
         if ($this->frm->isCorrect()) {
             $item['id'] = $this->id;
             $item['user_id'] = BackendAuthentication::getUser()->getUserId();
             $item['template'] = count($this->templates) > 1 ? $fields['template']->getValue() : $this->templates[0];
             $item['language'] = $this->record['language'];
             $item['extra_id'] = $this->record['extra_id'];
             $item['title'] = $fields['title']->getValue();
             $item['text'] = $fields['text']->getValue();
             $item['hidden'] = $fields['hidden']->getChecked() ? 'N' : 'Y';
             $item['status'] = 'active';
             $item['created_on'] = BackendModel::getUTCDate(null, $this->record['created_on']);
             $item['edited_on'] = BackendModel::getUTCDate();
             // insert the item
             $item['revision_id'] = BackendContentBlocksModel::update($item);
             // trigger event
             BackendModel::triggerEvent($this->getModule(), 'after_edit', array('item' => $item));
             // everything is saved, so redirect to the overview
             $this->redirect(BackendModel::createURLForAction('Index') . '&report=edited&var=' . urlencode($item['title']) . '&highlight=row-' . $item['id']);
         }
     }
 }