Ejemplo n.º 1
0
 public function editAction()
 {
     $categories = PostCategory::find(['type = "post" AND id_web = "' . $this->auth->id_web . '"']);
     // print_r($this->params);
     $post = Post::findFirst($this->params->id);
     $this->view->setVar("data", $post);
     $this->view->setVar("categories", $categories);
 }
 public function order()
 {
     $category_order = json_decode(Input::get('order'));
     $post_categories = PostCategory::all();
     $order = 1;
     foreach ($category_order as $category_level_1) {
         $level1 = PostCategory::find($category_level_1->id);
         if ($level1->id) {
             $level1->order = $order;
             $level1->parent_id = NULL;
             $level1->save();
             $order += 1;
         }
         if (isset($category_level_1->children)) {
             $children_level_1 = $category_level_1->children;
             foreach ($children_level_1 as $category_level_2) {
                 $level2 = PostCategory::find($category_level_2->id);
                 if ($level2->id) {
                     $level2->order = $order;
                     $level2->parent_id = $level1->id;
                     $level2->save();
                     $order += 1;
                 }
                 if (isset($category_level_2->children)) {
                     $children_level_2 = $category_level_2->children;
                     foreach ($children_level_2 as $category_level_3) {
                         $level3 = PostCategory::find($category_level_3->id);
                         if ($level3->id) {
                             $level3->order = $order;
                             $level3->parent_id = $level2->id;
                             $level3->save();
                             $order += 1;
                         }
                     }
                 }
             }
         }
     }
     return 1;
 }
Ejemplo n.º 3
0
 /**
  * Posts list
  *
  * @param Request $request
  * @param $opts
  * @return mixed
  */
 public function posts_list(Request $request, $opts)
 {
     $title = $this->lang->translate('post.list');
     // Delete post
     if ($request->get('delete')) {
         $post = \Post::find_by_id(intval($request->get('delete')));
         if ($post && $post->delete()) {
             $this->view->assign('message', $this->lang->translate('form.deleted'));
         }
     }
     // Publish post
     if ($request->get('accept')) {
         $post = \Post::find_by_id(intval($request->get('accept')));
         if ($post) {
             $post->moderate = '0';
             $post->created_at = time();
             if ($post->save()) {
                 $this->view->assign('message', $this->lang->translate('post.published'));
             }
             // Export to social
             $post->export();
             // Pinging sitemap
             NCService::load('SocialMedia.Ping');
         } else {
             $this->view->assign('message', $this->lang->translate('post.error_publish'));
         }
     }
     // Filter
     $filter['order'] = 'id DESC';
     if ($request->order) {
         $filter['order'] = $request->order;
     }
     $conditions = [];
     $values = [];
     // By Category
     if ($request->get('category')) {
         $category = \PostCategory::find($request->get('category'));
         if ($category) {
             $conditions[] = 'category_id = ?';
             $values[] = $category->id;
         }
     }
     // By Author
     if ($request->get('author')) {
         $author = \User::find($request->get('author'));
         if ($author) {
             $conditions[] = 'author_id = ?';
             $values[] = $author->id;
         }
     }
     // Premoderate
     $conditions[] = 'moderate = ?';
     if ($opts->get('mod')) {
         $title = $this->lang->translate('post.onmoderation');
         $values[] = '1';
     } else {
         $values[] = '0';
     }
     if ($conditions) {
         $filter['conditions'] = array_merge([implode(' AND ', $conditions)], $values);
     }
     /** @var Listing $paginator */
     $paginator = NCService::load('Paginator.Listing', [$request->page, \Post::count($filter)]);
     $filter = array_merge($filter, $paginator->limit());
     // Filter users
     $posts = \Post::all($filter);
     // Mass managing
     // Accept all visible
     if ($request->get('accept') == 'all') {
         foreach ($posts as $item) {
             $item->moderate = '0';
             $item->save();
             // Export to social
             Module::export($item, $this->view);
         }
         // Pinging sitemap
         NCService::load('SocialMedia.Ping');
         return static::redirect_response($request->getPathInfo());
     }
     // Sent to moderate all visible
     if ($request->get('moderate') == 'all') {
         foreach ($posts as $item) {
             $item->moderate = '1';
             $item->save();
         }
         return static::redirect_response($request->getPathInfo());
     }
     // Delete all visible
     if ($request->get('delete') == 'all') {
         foreach ($posts as $item) {
             $item->delete();
         }
         return static::redirect_response($request->getPathInfo());
     }
     $posts = array_map(function ($i) {
         return $i->to_array();
     }, $posts);
     return $this->view->render('posts/list.twig', ['title' => $title, 'posts_list' => $posts, 'listing' => $paginator->pages(), 'page' => $paginator->cur_page, 'moderate' => $opts->get('mod')]);
 }
Ejemplo n.º 4
0
 /**
  * @param Request $request
  * @param Options $matches
  * @return string
  */
 public function category(Request $request, Options $matches = null)
 {
     /** @var \PostCategory $category */
     $category = \PostCategory::find($matches->get('id'));
     if ($category) {
         /** @var RecursiveTree $recursive_tree */
         $recursive_tree = NCService::load('Module.RecursiveTree', [\PostCategory::listing()]);
         // Filter conditions
         $filter = ['conditions' => ['category_id IN (?) AND moderate = ?', $recursive_tree->childs($category->id), 0]];
         // Rows count
         $rows = \Post::count($filter);
         // Paginator
         /** @var Listing $pagination */
         $pagination = NCService::load('Paginator.Listing', [$request->page, $rows]);
         // Limitation
         $filter = array_merge($filter, $pagination->limit());
         // Ordering
         if ($request->order) {
             $filter['order'] = $request->order;
         } else {
             $filter['order'] = 'created_at DESC';
         }
         // Get posts
         $posts = \Post::all($filter);
         // Rendering
         return $this->view->render('posts/list.twig', ['title' => $category->title, 'category' => $category->to_array(), 'posts' => \Post::as_array($posts), 'listing' => $pagination->pages(), 'page' => $request->page]);
     }
     return $this->error404($request);
 }