Backend\Modules\Pages\Engine\Model::delete PHP 메소드

delete() 공개 정적인 메소드

Delete a page
public static delete ( integer $id, string $language = null, integer $revisionId = null ) : boolean
$id integer The id of the page to delete.
$language string The language wherein the page will be deleted, if not provided we will use the working language.
$revisionId integer If specified the given revision will be deleted, used for deleting drafts.
리턴 boolean
    public static function delete($id, $language = null, $revisionId = null)
    {
        // redefine
        $id = (int) $id;
        $language = $language === null ? BL::getWorkingLanguage() : (string) $language;
        // get db
        $db = BackendModel::getContainer()->get('database');
        // get record
        $page = self::get($id, $revisionId, $language);
        // validate
        if (empty($page)) {
            return false;
        }
        if ($page['allow_delete'] == 'N') {
            return false;
        }
        // get revision ids
        $revisionIDs = (array) $db->getColumn('SELECT i.revision_id
             FROM pages AS i
             WHERE i.id = ? AND i.language = ?', array($id, $language));
        // get meta ids
        $metaIDs = (array) $db->getColumn('SELECT i.meta_id
             FROM pages AS i
             WHERE i.id = ? AND i.language = ?', array($id, $language));
        // delete meta records
        if (!empty($metaIDs)) {
            $db->delete('meta', 'id IN (' . implode(',', $metaIDs) . ')');
        }
        // delete blocks and their revisions
        if (!empty($revisionIDs)) {
            $db->delete('pages_blocks', 'revision_id IN (' . implode(',', $revisionIDs) . ')');
        }
        // delete page and the revisions
        if (!empty($revisionIDs)) {
            $db->delete('pages', 'revision_id IN (' . implode(',', $revisionIDs) . ')');
        }
        // delete tags
        BackendTagsModel::saveTags($id, '', 'Pages');
        // return
        return true;
    }

Usage Example

예제 #1
0
파일: Delete.php 프로젝트: forkcms/forkcms
 /**
  * Execute the action
  */
 public function execute()
 {
     // get parameters
     $this->id = $this->getParameter('id', 'int');
     // does the item exist
     if ($this->id !== null && BackendPagesModel::exists($this->id)) {
         // call parent, this will probably add some general CSS/JS or other required files
         parent::execute();
         // init var
         $success = false;
         // cannot have children
         if (BackendPagesModel::getFirstChildId($this->id) !== false) {
             $this->redirect(BackendModel::createURLForAction('Edit') . '&error=non-existing');
         }
         $revisionId = $this->getParameter('revision_id', 'int');
         if ($revisionId == 0) {
             $revisionId = null;
         }
         // get page (we need the title)
         $page = BackendPagesModel::get($this->id, $revisionId);
         // valid page?
         if (!empty($page)) {
             // delete the page
             $success = BackendPagesModel::delete($this->id, null, $revisionId);
             // trigger event
             BackendModel::triggerEvent($this->getModule(), 'after_delete', array('id' => $this->id));
             // delete search indexes
             BackendSearchModel::removeIndex($this->getModule(), $this->id);
             // build cache
             BackendPagesModel::buildCache(BL::getWorkingLanguage());
         }
         // page is deleted, so redirect to the overview
         if ($success) {
             $this->redirect(BackendModel::createURLForAction('Index') . '&id=' . $page['parent_id'] . '&report=deleted&var=' . rawurlencode($page['title']));
         } else {
             $this->redirect(BackendModel::createURLForAction('Edit') . '&error=non-existing');
         }
     } else {
         $this->redirect(BackendModel::createURLForAction('Edit') . '&error=non-existing');
     }
 }