public function getIndex($status = 'Pending') { $status = ucfirst($status); if ($status != 'Pending') { $query = Confession::orderBy('created_at', 'desc'); } else { $query = Confession::orderBy('created_at', 'asc'); } if (\Input::get('category')) { $query->whereHas('categories', function ($query) { $query->where('confession_categories.confession_category_id', '=', intval(\Input::get('category'))); }); } if (\Input::get('q')) { $search = stripslashes(\Input::get('q')); $query->where('content', 'LIKE', "%{$search}%"); } if (\Input::get('start') && \Input::get('end')) { $start = Carbon::createFromFormat('U', strtotime(\Input::get('start')))->startOfDay(); $end = Carbon::createFromFormat('U', strtotime(\Input::get('end')))->startOfDay(); if ($start > $end) { return \Redirect::back()->withMessage('Start date cannot be later than end date.')->with('alert-class', 'alert-danger'); } $query->where('created_at', '>=', $start->toDateTimeString()); $query->where('created_at', '<', $end->toDateTimeString()); } if ($status != 'All') { $query->where('status', '=', ucfirst($status)); } $confessions = $query->with('moderatorComments')->paginate(10); return view('admin.confessions.index', ['confessions' => $confessions, 'categoryOptions' => array_merge(array('All Categories' => 0), Category::orderBy('confession_category', 'asc')->lists('confession_category_id', 'confession_category')), 'hasPageToken' => (bool) $this->confessionsRepo->getPageToken()]); }
/** * 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"; }
/** * 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]]); }