public function __construct()
 {
     $navs = Nav::orderBy('sort', 'desc')->get();
     $function = function ($closure, $navs, $pid = 0) {
         $return = null;
         foreach ($navs as $nav) {
             if ($nav->parent_id == $pid) {
                 if (null != ($children = call_user_func($closure, $closure, $navs, $nav->id))) {
                     $return[] = [$nav, $children];
                 } else {
                     $return[] = $nav;
                 }
             }
         }
         return $return;
     };
     $d = Option::all();
     $options = [];
     foreach ($d as $option) {
         $options[$option->key] = $option->value;
     }
     $collection = DB::table('articles')->select(DB::raw("DATE_FORMAT(`created_at`, '%Y %m') as `archive`, count(*) as `count`"))->where('category_id', '!=', 0)->where('display', '=', true)->orderBy('created_at', 'desc')->groupBy('archive')->get();
     view()->share('navs', $function($function, $navs));
     view()->share('categories', Category::all());
     view()->share('tags', Tag::all());
     view()->share('archive', $collection);
     view()->share('options', $options);
 }
 public function category($name)
 {
     if (is_numeric($name)) {
         $category = Category::with('articles')->where('id', '=', $name)->firstOrFail();
     } else {
         $category = Category::with('articles')->where('name', '=', $name)->firstOrFail();
     }
     return view('page.category')->with('category', $category)->with('articles', $category->articles()->where('display', '=', true)->orderBy('sort', 'desc')->orderBy('created_at', 'desc')->orderBy('id', 'desc')->paginate(10));
 }
 public function store()
 {
     $articles = Article::all();
     if (!is_dir('html')) {
         mkdir('html');
     }
     $navs = Nav::orderBy('sort', 'desc')->get();
     $function = function ($closure, $navs, $pid = 0) {
         $return = null;
         foreach ($navs as $nav) {
             if ($nav->parent_id == $pid) {
                 if (null != ($children = call_user_func($closure, $closure, $navs, $nav->id))) {
                     $return[] = [$nav, $children];
                 } else {
                     $return[] = $nav;
                 }
             }
         }
         return $return;
     };
     $d = Option::all();
     $options = [];
     foreach ($d as $option) {
         $options[$option->key] = $option->value;
     }
     view()->share('navs', $function($function, $navs));
     view()->share('categories', Category::all());
     view()->share('tags', Tag::all());
     view()->share('options', $options);
     view()->share('staticMode', true);
     view()->share('staticCreateTime', date('Y/m/d H:i:s', time()));
     foreach ($articles as $article) {
         if (empty($article->name)) {
             continue;
         }
         if ($article->category_id == 0) {
             $data = view('page.page')->withArticle($article)->render();
         } else {
             $data = view('page.article')->withArticle($article)->render();
         }
         file_put_contents('html/' . $article->name . '.html', $data);
     }
     return redirect('admin/article');
 }
 protected function traverseToDelete($parent)
 {
     $t = Category::where('parent_id', '=', $parent)->get();
     foreach ($t as $category) {
         $this->traverseToDelete($category->id);
         $category->delete();
     }
 }
 /**
  * Show the form for editing the specified resource.
  *
  * @param  int $id
  *
  * @return Response
  */
 public function edit($id, Request $request)
 {
     $article = Article::findOrFail($id);
     $categories = Category::all();
     $tags = Tag::all();
     $tagSelect = [];
     foreach ($article->tags as $tag) {
         $tagSelect[] = $tag->id;
     }
     return view('admin.article.edit', ['categories' => $categories, 'article' => $article, 'tags' => $tags, 'tagSelect' => $tagSelect]);
 }