コード例 #1
0
ファイル: DraftController.php プロジェクト: Andyyang1981/pi
 /**
  * Delete a draft
  * 
  * @return ViewModel
  */
 public function deleteAction()
 {
     // Denied user viewing if no front-end management permission assigned
     if (!$this->config('enable_front_edit') && 'front' == $this->section) {
         return $this->jumpTo404();
     }
     $id = $this->params('id', '');
     $ids = array_filter(explode(',', $id));
     $from = $this->params('from', '');
     $status = $this->params('status', 0);
     $source = $this->params('source', '');
     if (empty($ids)) {
         return $this->jumpTo404(__('Invalid draft ID'));
     }
     // Delete draft articles that user has permission to do
     $isMine = false;
     if (ARTICLE::FIELD_STATUS_PUBLISHED != $status and 'my' == $source) {
         $isMine = true;
     }
     $model = $this->getModel('draft');
     $rules = Rule::getPermission($isMine);
     if (1 == count($ids)) {
         $row = $model->find($ids[0]);
         $slug = Draft::getStatusSlug($row->status);
         $resource = $slug . '-delete';
         if (!(isset($rules[$row->category][$resource]) and $rules[$row->category][$resource])) {
             return $this->jumpToDenied();
         }
     } else {
         $rows = $model->select(array('id' => $ids));
         $ids = array();
         foreach ($rows as $row) {
             $slug = Draft::getStatusSlug($row->status);
             $resource = $slug . '-delete';
             if (isset($rules[$row->category][$resource]) and $rules[$row->category][$resource]) {
                 $ids[] = $row->id;
             }
         }
     }
     // Delete draft
     if (!empty($ids)) {
         $model->delete(array('id' => $ids));
     }
     // Redirect to original page
     if ($from) {
         $from = urldecode($from);
         return $this->redirect()->toUrl($from);
     } else {
         return $this->redirect()->toRoute('', array('action' => 'list', 'controller' => 'draft', 'status' => DraftModel::FIELD_STATUS_DRAFT));
     }
 }
コード例 #2
0
ファイル: ArticleController.php プロジェクト: Andyyang1981/pi
 /**
  * Delete published articles
  * 
  * @return ViewModel 
  */
 public function deleteAction()
 {
     // Denied user viewing if no front-end management permission assigned
     if (!$this->config('enable_front_edit') && 'front' == $this->section) {
         return $this->jumpTo404();
     }
     $id = $this->params('id', '');
     $ids = array_filter(explode(',', $id));
     $from = $this->params('from', '');
     if (empty($ids)) {
         return $this->jumpTo404(__('Invalid article ID'));
     }
     $module = $this->getModule();
     $modelArticle = $this->getModel('article');
     $modelAsset = $this->getModel('asset');
     // Delete articles that user has permission to do
     $rules = Rule::getPermission();
     if (1 == count($ids)) {
         $row = $modelArticle->find($ids[0]);
         $slug = Draft::getStatusSlug($row->status);
         $resource = $slug . '-delete';
         if (!(isset($rules[$row->category][$resource]) and $rules[$row->category][$resource])) {
             return $this->jumpToDenied();
         }
     } else {
         $rows = $modelArticle->select(array('id' => $ids));
         $ids = array();
         foreach ($rows as $row) {
             $slug = Draft::getStatusSlug($row->status);
             $resource = $slug . '-delete';
             if (isset($rules[$row->category][$resource]) and $rules[$row->category][$resource]) {
                 $ids[] = $row->id;
             }
         }
     }
     $resultsetArticle = $modelArticle->select(array('id' => $ids));
     // Step operation
     foreach ($resultsetArticle as $article) {
         // Delete feature image
         if ($article->image) {
             @unlink(Pi::path($article->image));
             @unlink(Pi::path(Media::getThumbFromOriginal($article->image)));
         }
     }
     // Batch operation
     // Deleting extended fields
     $this->getModel('extended')->delete(array('article' => $ids));
     // Deleting statistics
     $this->getModel('stats')->delete(array('article' => $ids));
     // Deleting compiled article
     $this->getModel('compiled')->delete(array('article' => $ids));
     // Delete tag
     if ($this->config('enable_tag')) {
         Pi::service('tag')->delete($module, $ids);
     }
     // Delete related articles
     $this->getModel('related')->delete(array('article' => $ids));
     // Delete visits
     $this->getModel('visit')->delete(array('article' => $ids));
     // Delete assets
     $modelAsset->delete(array('article' => $ids));
     // Delete article directly
     $modelArticle->delete(array('id' => $ids));
     // Clear cache
     Pi::service('render')->flushCache($module);
     if ($from) {
         $from = urldecode($from);
         return $this->redirect()->toUrl($from);
     } else {
         // Go to list page
         return $this->redirect()->toRoute('', array('controller' => 'article', 'action' => 'published', 'from' => 'all'));
     }
 }