/** * 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' => 'Грешка, моля опитайте отново.')); }