protected function getIndex($collection, $name) { $collection = DB::getCollection($collection); foreach ($collection->getIndexInfo() as $index) { if (isset($index['key'][$name])) { return $index; } } return false; }
/** * Returns the next ID for the given sequence. * * @param $sequence Name of the desired sequence. * @return The next numeric ID for the desired sequence. */ public static function getNextId($sequence) { $seq = DB::getCollection(static::$collectionName)->findAndModify(array('_id' => $sequence), array('$inc' => array('seq' => 1)), null, array('new' => true, 'upsert' => true)); return $seq['seq']; }
/** * Get a statement count, either for an LRS or for the entire site if no lrs_id passed */ public function getStatementCount($lrs_id = null) { $collection = \DB::getCollection('statements'); $query = []; //Limit by LRS if ($lrs_id) { if (!$lrs_id instanceof \MongoId) { $lrs_id = new \MongoId($lrs_id); } $query['lrs_id'] = $lrs_id; } return $collection->count($query, ['hint' => ['lrs_id' => 1]]); }
/** * Display the super admin lrs view. * @return Response */ public function lrs() { $opts = ['user' => \Auth::user()]; $lrss = $this->lrs->index($opts); $lrs_repo = $this->lrs; $collection = \DB::getCollection('statements'); return Response::json(array_map(function ($lrs) use($lrs_repo) { $lrs->statement_total = $lrs_repo->getStatementCount($lrs->_id); return $lrs; }, $lrss)); }