/** * Execute the console command. * * @return mixed */ public function fire() { $confessions = Confession::orderBy('confession_queue.update_status_at', 'DESC')->join('confession_queue', 'confessions.confession_id', '=', 'confession_queue.confession_id')->where('confession_queue.update_status_at', '<=', Carbon::now()->toDateTimeString())->get(); $confessions->each(function ($confession) { $queue = $confession->queue()->get()->get(0); echo '[INFO] Setting confession #' . $confession->confession_id . ' to ' . strtolower($queue->status_after) . '.' . "\n"; $this->confessionsRepo->switchStatus($confession, $queue->status_after); $confession->queue()->delete(); }); echo '[INFO] Completed posting scheduled confessions.' . "\n"; }
/** * Display a confession based on ID for search engine crawlers * @param int $id confession ID * @return void */ public function getConfession($id) { if ($this->isCrawler()) { $confession = Confession::approved()->find($id); if (!$confession) { \App::abort(404); } return view('robots.confession', ['confession' => $confession]); } else { return redirect(url('/confession', $id)); } }
public function postFavourite() { $fbUserId = \Session::get('fb_user_id'); $confessionId = \Input::get('confession_id'); if ($fbUserId && $confessionId) { $fbUser = FbUser::find($fbUserId); if (!Confession::find($confessionId)) { return \Response::json(['success' => false, 'errors' => ['Confession does not exist.']]); } if ($fbUser->favourites->contains($confessionId)) { return \Response::json(['success' => false, 'errors' => ['Confession already favourited.']]); } $fbUser->favourites()->attach($confessionId); return \Response::json(['success' => true]); } return \Response::json(['success' => false, 'errors' => ['User not logged in.']]); }
/** * Execute the console command. * * @return mixed */ public function fire() { // Get the latest 250 facebook posts and record likes/comments $facebookRequest = sprintf('/%s/feed?limit=250&oauth_token=%s&fields=comments.limit(1).summary(true),likes.limit(1).summary(true)', env('FACEBOOK_PAGE_ID', ''), \Config::get('laravel-facebook-sdk.facebook_config.page_access_token')); $facebookResponse = \Facebook::get($facebookRequest)->getDecodedBody(); foreach ($facebookResponse['data'] as $facebookPost) { $facebookPostId = explode('_', $facebookPost['id'])[1]; // get facebook post id $confession = Confession::where('fb_post_id', '=', $facebookPostId)->first(); // get confession associated with fb post if ($confession) { $confession->fb_like_count = $facebookPost['likes']['summary']['total_count']; $confession->fb_comment_count = $facebookPost['comments']['summary']['total_count']; $confession->save(); } } $this->info('Facebook Information Updated!'); }
/** * Search for confessions which contains the search string * method: get * route: api/confessions/search/<searchString>?timestamp=<time>&offset=<offset>&count=<count> * @param string $searchString - non-empty string (of length at least 5? - maybe at least 1) * @return json {"data": {"confessions": [Confession1, confession2, ...]}} * an array of confession json */ public function search($searchString) { // Naive search ... $query = Confession::orderBy('status_updated_at', 'DESC')->where('content', 'LIKE', '%' . $searchString . '%')->approved()->with('favourites')->with('categories'); if (intval(\Input::get('count')) == 0) { $count = self::MAX_CONFESSION_COUNT; } else { $count = min(intval(\Input::get('count')), self::MAX_CONFESSION_COUNT); } if (\Input::get('timestamp')) { $query->whereRaw('UNIX_TIMESTAMP(status_updated_at) <= ?', [\Input::get('timestamp')]); } $query->take($count); if (intval(\Input::get('offset')) > 0) { $query->skip(intval(\Input::get('offset'))); } $confessions = $query->get(); foreach ($confessions as $confession) { $confession->status_updated_at_timestamp = $confession->status_updated_at->timestamp; $confession->getFacebookInformation(); } return \Response::json(['data' => ['confessions' => $confessions]]); }
public function getReject($id) { // @TODO: Move this to a repository $confession = Confession::findOrFail($id); if (!$this->confessionsRepo->getPageToken()) { return \Redirect::back()->withMessage('You have not connected your account with Facebook.')->with('alert-class', 'alert-danger'); } try { $this->confessionsRepo->switchStatus($confession, 'Rejected'); return \Redirect::back()->withMessage('Confession successfully rejected.')->with('alert-class', 'alert-success'); } catch (\Exception $e) { return \Redirect::back()->withMessage('Error rejecting confession: ' . $e->getMessage())->with('alert-class', 'alert-danger'); } }