Exemple #1
0
 /**
  * rateContent() - handles rating a content
  * @param int @id - which content
  * @return void
  */
 public function rateContent($id)
 {
     try {
         $content = Content::select('id')->findOrFail($id);
     } catch (Exception $e) {
         App::abort(404);
     }
     $rating = ContentRating::select('id', 'rating_sum', 'rating_count', 'lastip')->where('content_id', $id)->first();
     $sanitize = new Sanitizer(Input::all());
     Input::merge($sanitize->get());
     $validate = new ContentRating();
     if ($validate->validate(Input::all())) {
         if ($rating) {
             // Update and save
             if (Request::getClientIp() != $rating->lastip) {
                 $rating->rating_sum = $rating->rating_sum + Input::get('rate');
                 $rating->rating_count = $rating->rating_count + 1;
                 $rating->lastip = Request::getClientIp();
                 $rating->save();
                 //return with success message
             } else {
                 return Redirect::back()->withErrors(array('failure' => 'Вече сте гласували за този урок.'));
             }
         } else {
             // First time voting for this content, we have to make a new record in the database
             $validate->content_id = $id;
             $validate->rating_sum = Input::get('rate');
             $validate->rating_count = 1;
             $validate->lastip = Request::getClientIp();
             $validate->save();
         }
         return Redirect::back()->withErrors(array('success' => 'Вашият глас беше записан успешно.'));
     }
     return Redirect::back()->withErrors(array('failure' => 'Грешка, моля опитайте отново.'));
 }