예제 #1
0
 protected function handle()
 {
     $forum_id = $this->forumId;
     $forum = ForumModel::getForum($forum_id);
     $request = $this->getRequest();
     $session = $this->getSession();
     if (!$forum) {
         if ($request->isXmlHttpRequest()) {
             throw new \Exception('论坛不存在');
         } else {
             $session->addFlash('error', '论坛不存在');
             return new RedirectResponse($this->generateUrl('admin_forum_index'));
         }
     }
     if ($request->getMethod() == 'POST') {
         $posts = $request->request;
         $db = ForumDatabase::getDb();
         $db->transaction();
         try {
             $name = $posts->get('name');
             if (!$name) {
                 throw new \Exception('分组名称不能为空');
             }
             $description = $posts->get('description');
             $search = $posts->get('search');
             if ($search) {
                 // 检查重复性
                 $g = GroupModel::search($search, $forum_id);
                 if ($g) {
                     throw new \Exception('URL占位符已被使用');
                 }
             } else {
                 $search = null;
             }
             $group = new GroupModel();
             $group->name = $name;
             $group->search = $search;
             $group->description = $description;
             $group->forumId = $forum_id;
             $now = time();
             $group->createTimestamp = $now;
             $group->updateTimestamp = $now;
             // 更改论坛数据
             $forum->groupCount += 1;
             // 保存
             GroupModel::createGroup($group);
             ForumModel::saveForum($forum);
             $db->commit();
             $session->addFlash('success', '操作成功');
         } catch (\Exception $e) {
             $db->rollback();
             $session->addFlash('error', $e->getMessage());
         }
         return new RedirectResponse($this->generateUrl('admin_forum_group_index', array('forum_id' => $forum_id)));
     }
     return $this->render('group/add.html.twig', array('forum' => $forum));
 }