/**
  * Compose the sidebar.
  */
 private function composeSidebar()
 {
     view()->composer('partials.sidebar', function ($view) {
         $view->with('latest', Article::published()->orderBy('id', 'desc')->take(5)->get());
         $view->with('tags', Tag::all());
     });
 }
 /**
  * Define your route model bindings, pattern filters, etc.
  *
  * @param  \Illuminate\Routing\Router  $router
  * @return void
  */
 public function boot(Router $router)
 {
     //
     parent::boot($router);
     //$router->model('articles','App\Models\Article');
     $router->bind('articles', function ($id) {
         return Article::published()->findOrFail($id);
     });
     $router->bind('tag', function ($name) {
         return Tag::where('name', $name)->firstOrFail();
     });
 }
 public function getSearch(Request $request)
 {
     $search = $request->get('query');
     $articles = Article::published()->join('users', 'users.id', '=', 'articles.user_id')->where(function ($q) use($search) {
         $q->where('title', 'like', '%' . $search . '%')->orWhere(function ($query) use($search) {
             $query->where('users.name', 'like', '%' . $search . '%')->orWhere('users.surname', 'like', '%' . $search . '%')->orWhere(\DB::raw('concat(users.name, \' \', users.surname)'), 'like', '%' . $search . '%');
         })->orWhere(function ($query) use($search) {
             $tag = array_flatten(Tag::where('name', 'like', '%' . $search . '%')->get(['id'])->toArray());
             $articleTagMapper = array_flatten(ArticleTagMapper::whereIn('tag_id', $tag)->distinct()->get(['article_id'])->toArray());
             $query->whereIn('id', $articleTagMapper);
         });
     })->get(['articles.id', 'articles.title']);
     return response()->json($articles);
 }
 /**
  * Define your route model bindings, pattern filters, etc.
  *
  * @return void
  */
 public function boot()
 {
     parent::boot();
     Route::bind('article', function ($slug) {
         if (!Auth::user()) {
             return Article::published()->slug($slug)->first();
         }
         return Article::where('slug', $slug)->first() ?: Article::findOrFail((int) $slug);
     });
     Route::bind('tag', function ($slug) {
         if (!Auth::user()) {
             return Tag::slug($slug)->first();
         }
         return Tag::where('slug', $slug)->first() ?: Tag::findOrFail((int) $slug);
     });
     Route::bind('page', function ($id) {
         return Page::find($id);
     });
 }
 /**
  * Display a listing of the resource.
  *
  * @return \Illuminate\Http\Response
  */
 public function index()
 {
     $articles = Article::published()->orderBy('id', 'desc')->paginate(5);
     return view('article.index', compact('articles'));
 }
Example #6
0
        });
    }
    $articles = $articles->orderBy('articles.updated_at', 'desc')->select(DB::raw('articles.id, articles.text, articles.title, articles.slug, articles.user_id, articles.updated_at'))->paginate(5);
    $topUsers = Article::published()->limit(3)->groupBy('user_id')->orderByRaw('count(user_id) DESC')->get();
    $bestUsers = User::all();
    $bestUsers = collect($bestUsers->sortByDesc(function ($user) {
        return $user->average_rating;
    }))->reject(function ($user) {
        return $user->average_rating == 0;
    });
    $bestUsers = $bestUsers->slice(0, 3);
    return view('index', ['articles' => $articles, 'topUsers' => $topUsers, 'bestUsers' => $bestUsers, 'search' => $search]);
});
Route::get('/about-us', function () {
    $users = User::where('role', '=', User::TEACHER_ROLE)->get();
    $articlesCount = Article::published()->count();
    $usersCount = User::count();
    $commentsCount = \App\Models\Discussion::count();
    return view('aboutus', ['users' => $users, 'articlesCount' => $articlesCount, 'usersCount' => $usersCount, 'commentsCount' => $commentsCount]);
});
Route::get('/faq', function () {
    return view('faq');
});
Route::get('/rules', function () {
    return view('rules');
});
Route::get('/migrate/{id}', function () {
    Artisan::call('migrate', ['--force' => true]);
})->where('id', 'lesna_jahoda');
Route::get('/seed/{id}', function () {
    Artisan::call('db:seed', ['--force' => true]);
Example #7
0
    public function getGrading($id = null)
    {
        if (!$id && Auth::check()) {
            $id = Auth::user()->slug;
        }
        $user = User::findBySlugOrIdOrFail($id);
        $course = $user->course;
        if ($course) {
            $course_id = $course->id;
            if ($user->hasRole(User::STUDENT_ROLE)) {
                $unratedArticles = $user->articles()->published()->unrated($course_id)->get();
                $ratedArticles = $user->articles()->published()->rated($course_id)->get();
            } else {
                $unratedArticles = Article::published()->unrated($course_id)->get();
                $ratedArticles = DB::select(DB::raw('
                    select
                      *
                    from (
                        select
                            users.id as user_id,
                            avg(ratings.rating) as rating
                        from
                            articles,
                            participants,
                            courses,
                            tasks,
                            ratings,
                            users
                        where
                            users.id = articles.user_id and
                            courses.id = ' . $course_id . ' and
                            tasks.course_id = courses.id and
		                    participants.user_id = users.id and
                            participants.course_id = courses.id and
                            articles.task_id = tasks.id and
                            ratings.text <> \'\' and
                            ratings.article_id = articles.id
                        having
                            avg(ratings.rating) > 0
                        union
                            select
                              participants.user_id as user_id,
                              0 as rating
                            from
                              participants
                            where
                              participants.course_id =  ' . $course_id . ' and
                              participants.state = 2
                    ) t
                    group by
                      user_id'));
            }
        } else {
            $unratedArticles = [];
            $ratedArticles = [];
        }
        return view('users.grading', ['user' => $user, 'unratedArticles' => $unratedArticles, 'ratedArticles' => $ratedArticles]);
    }