Example #1
0
 public function createAction(Request $request)
 {
     $blogs = $this->getDoctrine()->getRepository('DataBundle:Blog')->findAll();
     $tags = $this->getDoctrine()->getRepository('DataBundle:Tag')->findAll();
     $pages = $this->getDoctrine()->getRepository('DataBundle:Page')->findBy([], ['ordering' => 'asc']);
     if ($request->get('sent', 0) == 1) {
         $page = new Page();
         $page->setTitle($request->get('title'))->setSlug($request->get('slug'))->setContent($request->get('content'))->setMetaTitle($request->get('meta_title'))->setMetaDescription($request->get('meta_description'))->setActive($request->get('active') == 'true' ? true : false)->setHidden($request->get('hidden') == 'true' ? true : false)->setEnableTwig(true)->setOrdering(count($pages));
         //set parent
         if ($request->get('parent', 0) != 0) {
             $parent = $this->getDoctrine()->getRepository('DataBundle:Page')->findOneById($request->get('parent'));
             if (!$parent) {
                 //error
             }
             $page->setParent($parent);
             //reorder following entries
             $upper = $this->getDoctrine()->getRepository('DataBundle:Page')->findBy(['ordering' => '>= ' . $parent->getOrdering() + 1]);
             foreach ($upper as $u) {
                 $u->setOrdering($u->getOrdering() + 1);
             }
             $page->setOrdering($parent->getOrdering());
             $page->setSlug($parent->getSlug() . '/' . $page->getSlug());
         }
         //set selected blog
         if ($request->get('blog', 0) != 0) {
             $blog = $this->getDoctrine()->getRepository('DataBundle:Blog')->findOneById($request->get('blog', 0));
             if (!$blog) {
                 //error
             }
             $page->setBlog($blog);
             $page->setIsBlog(true);
             $page->setIsBlogTag(false);
         }
         //set selected tag
         if ($request->get('tag', 0) != 0) {
             $tag = $this->getDoctrine()->getRepository('DataBundle:Tag')->findOneById($request->get('tag', 0));
             if (!$tag) {
                 //error
             }
             $page->setTag($tag);
             $page->setIsBlogTag(true);
             $page->setIsBlog(false);
         }
         //validate
         $em = $this->getDoctrine()->getManager();
         $em->persist($page);
         $em->flush();
         //new page gets inserted on 0
         //restore order
         $this->get('app.backend.page')->restoreOrder();
         //clear cache
         $this->clearRoutingCache();
         return $this->redirectToRoute('backend_pages');
     }
     return $this->render('BackendBundle:Page:create.html.twig', ['blogs' => $blogs, 'tags' => $tags, 'all_pages' => $pages]);
 }