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)); } } }
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)); } } }
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)); } } }