예제 #1
0
 protected function handle()
 {
     $tree = StructureModel::getTree();
     $publishers = PublisherModel::allPublishers();
     $request = $this->getRequest();
     if ($request->getMethod() == 'POST') {
         $ids = $request->request->get('ids');
         $publisher_id = $request->request->get('publisher_id');
         $structure_id = $request->request->get('structure_id');
         $session = $this->getSession();
         $db = ArticleModel::getDb();
         try {
             $db->transaction();
             if (!$publisher_id) {
                 throw new \Exception('请选择一个发布者');
             }
             if (!$structure_id) {
                 throw new \Exception('请选择发布所属目录');
             }
             $publisher = PublisherModel::getPublisher($publisher_id);
             if (!$publisher) {
                 throw new \Exception('发布者不存在');
             }
             foreach ($ids as $id) {
                 $article = ArticleModel::getArticle($id);
                 if ($article) {
                     $article->publishTimestamp = time();
                     $article->structureId = $structure_id;
                     ArticleModel::saveArticle($article);
                 }
                 // 添加文章发布者关系
                 $article_publisher = new ArticlePublisherModel();
                 $article_publisher->articleId = $article->id;
                 $article_publisher->publisherId = $publisher->id;
                 ArticlePublisherModel::createRelationship($article_publisher);
             }
             // 添加发布者数据
             $publisher->articleCount += count($ids);
             PublisherModel::savePublisher($publisher);
             $db->commit();
             $session->addFlash('success', '操作成功');
         } catch (\Exception $e) {
             $db->rollback();
             $session->addFlash('error', $e->getMessage());
         }
         return new RedirectResponse($this->generateUrl('admin_www_article'));
     } else {
         $ids = $request->query->get('ids');
         $ids = json_decode($ids);
         if (!$ids) {
             return $this->render('@TachigoWWWAdmin/error-modal.html.twig', array('message' => '没有选中任何文章'));
         } else {
             $pager = ArticleModel::listArticles(1, count($ids), function (QueryBuilder $qb) use($ids) {
                 $qb->where($qb->expr()->in('id', $ids));
             });
             return $this->render('article/publish.html.twig', array('articles' => $pager, 'publishers' => $publishers, 'tree' => $tree));
         }
     }
 }
예제 #2
0
 protected function handle()
 {
     $request = $this->getRequest();
     if ($request->getMethod() == 'POST') {
         $ids = $request->request->get('ids');
         $session = $this->getSession();
         $db = ArticleModel::getDb();
         try {
             $db->transaction();
             foreach ($ids as $id) {
                 $article = ArticleModel::getArticle($id);
                 if ($article) {
                     // 删除标签分类
                     $article_tags = ArticleTagModel::allRelationship(function (QueryBuilder $qb) use($article) {
                         /** @var ArticleModel $article */
                         $qb->andWhere($qb->expr()->eq('article_id', ':article_id'))->setParameter(':article_id', $article->id);
                     });
                     foreach ($article_tags as $article_tag) {
                         ArticleTagModel::deleteRelationship($article_tag['article_id'], $article_tag['tag_id']);
                         $tag = TagModel::getTag($article_tag['tag_id']);
                         if ($tag) {
                             $tag->articleCount -= 1;
                             TagModel::saveTag($tag);
                         }
                     }
                     // 删除媒体
                     $medias = MediaModel::allMedias(function (QueryBuilder $qb) use($article) {
                         /** @var ArticleModel $article */
                         $qb->andWhere($qb->expr()->eq('article_id', ':article_id'))->setParameter(':article_id', $article->id);
                     });
                     foreach ($medias as $media) {
                         MediaModel::deleteMedia($media['id']);
                     }
                     // 删除文章
                     ArticleModel::deleteArticle($id);
                 }
             }
             $db->commit();
             $session->addFlash('success', '操作成功');
         } catch (\Exception $e) {
             $db->rollback();
             $session->addFlash('error', $e->getMessage());
         }
         return new RedirectResponse($this->generateUrl('admin_www_article'));
     } else {
         $ids = $request->query->get('ids');
         $ids = json_decode($ids);
         if (!$ids) {
             return $this->render('@TachigoWWWAdmin/error-modal.html.twig', array('message' => '没有选中任何文章'));
         } else {
             $pager = ArticleModel::listArticles(1, count($ids), function (QueryBuilder $qb) use($ids) {
                 $qb->where($qb->expr()->in('id', $ids));
             });
             return $this->render('article/delete.html.twig', array('articles' => $pager));
         }
     }
 }
예제 #3
0
 protected function handle()
 {
     $request = $this->getRequest();
     if ($request->getMethod() == 'POST') {
         $ids = $request->request->get('ids');
         $session = $this->getSession();
         $db = ArticleModel::getDb();
         try {
             $db->transaction();
             foreach ($ids as $id) {
                 $article = ArticleModel::getArticle($id);
                 if ($article) {
                     $article->publishTimestamp = 0;
                     ArticleModel::saveArticle($article);
                 }
                 // 修改发布者信息
                 $article_publishers = ArticlePublisherModel::allRelationship(function (QueryBuilder $qb) use($article) {
                     $qb->andWhere($qb->expr()->eq('article_id', ':article_id'))->setParameter(':article_id', $article->id);
                 });
                 if ($article_publishers) {
                     foreach ($article_publishers as $article_publisher) {
                         $publisher_id = $article_publisher['publisher_id'];
                         // 删除发布者文章关系
                         ArticlePublisherModel::deleteRelationship($article->id, $publisher_id);
                         // 修改发布者数据
                         $publisher = PublisherModel::getPublisher($publisher_id);
                         if ($publisher) {
                             $publisher->articleCount -= 1;
                             PublisherModel::savePublisher($publisher);
                         }
                     }
                 }
             }
             $db->commit();
             $session->addFlash('success', '操作成功');
         } catch (\Exception $e) {
             $db->rollback();
             $session->addFlash('error', $e->getMessage());
         }
         return new RedirectResponse($this->generateUrl('admin_www_article'));
     } else {
         $ids = $request->query->get('ids');
         $ids = json_decode($ids);
         if (!$ids) {
             return $this->render('@TachigoWWWAdmin/error-modal.html.twig', array('message' => '没有选中任何文章'));
         } else {
             $pager = ArticleModel::listArticles(1, count($ids), function (QueryBuilder $qb) use($ids) {
                 $qb->where($qb->expr()->in('id', $ids));
             });
             return $this->render('article/trash.html.twig', array('articles' => $pager));
         }
     }
 }