/**
  * Execute the console command.
  *
  * @return mixed
  */
 public function fire()
 {
     $lrs_collection = (new Lrs())->get();
     // Remove all inactive statements.
     Statement::where('active', '=', false)->delete();
     // Migrates the statements for each LRS.
     foreach ($lrs_collection as $lrs) {
         Statement::where('lrs._id', $lrs->_id)->chunk(500, function ($statements) use($lrs) {
             $statements_array = [];
             // Sets `active` and `voided` properties.
             // Ensures that statement is an associative array.
             $statements = $statements->each(function ($statement) {
                 $statement->voided = isset($statement->voided) ? $statement->voided : false;
                 $statement->active = isset($statement->active) ? $statement->active : true;
                 $statement->save();
                 $statements_array[] = (array) json_decode($statement->toJSON());
             });
             // Uses the repository to migrate the statements.
             $repo = App::make('Locker\\Repository\\Statement\\EloquentVoider');
             $repo->updateReferences($statements_array, $lrs);
             $repo->voidStatements($statements_array, $lrs);
             // Outputs status.
             $statement_count = $statements->count();
             $this->info("Migrated {$statement_count} statements in `{$lrs->title}`.");
         });
     }
     $this->info('All statements migrated.');
 }
Ejemplo n.º 2
0
 public function courses()
 {
     $courses = array();
     $return_results = array();
     foreach ($this->data as $d) {
         if (isset($d['context']['contextActivities'])) {
             foreach ($d['context']['contextActivities']['grouping'] as $key => $value) {
                 if ($key === 'type' && $value == 'http://adlnet.gov/expapi/activities/course') {
                     $courses[] = $d['context']['contextActivities']['grouping']['id'];
                 }
             }
         }
     }
     $array = array_count_values($courses);
     arsort($array);
     $results = array_slice($array, 0, 4);
     foreach ($results as $key => $value) {
         $get_name = \Statement::where('context.contextActivities.grouping.id', $key)->first();
         if (isset($get_name['context']['contextActivities']['grouping']['definition']['name']['en-gb'])) {
             $return_results[] = array('name' => $get_name['context']['contextActivities']['grouping']['definition']['name']['en-gb'], 'count' => $value);
         } else {
             $return_results[] = array('name' => $get_name['context']['contextActivities']['grouping']['definition']['name']['en-GB'], 'count' => $value);
         }
     }
     $this->results = $return_results;
 }
Ejemplo n.º 3
0
 public function convertStatements($lrs)
 {
     $statements = OldStatement::where('context.extensions.http://learninglocker&46;net/extensions/lrs._id', $lrs)->get();
     $new_statements = array();
     //new stdClass();
     $this->loopStatements($statements);
     $count = Statement::where('lrs._id', $lrs)->count();
     return Response::json(array('success' => true, 'count' => $count));
 }
 /**
  * Gets statement documents based on a filter.
  * 
  * @param $lrs       id      The Lrs to search in (required)
  * @param $filter    array   The filter array
  * @param $raw       boolean  Pagination or raw statements?
  * @param $sections  array   Sections of the statement to return, default = all
  * 
  * @return Statement query
  */
 public function selectStatementDocs($lrs = '', $filter, $raw = false, $sections = [])
 {
     //var_dump( $filter );exit;
     $statements = \Statement::where('lrs._id', $lrs);
     if (!empty($filter)) {
         foreach ($filter as $key => $value) {
             if (is_array($value)) {
                 //does the array contain between values? e.g. <> 3, 6
                 if ($value[0] === '<>') {
                     $statements->whereBetween($key, array((int) $value[1], (int) $value[2]));
                 } else {
                     $statements->whereIn($key, $value);
                     //where key is in array
                 }
             } else {
                 $statements->where($key, $value);
             }
         }
     }
     return $statements;
 }
Ejemplo n.º 5
0
 private function checkStatement($id, $expected_references = [], $expected_referrers = [])
 {
     $uuid = $this->generateUUID($id);
     $statement = \Statement::where('lrs_id', new \MongoId($this->lrs->_id))->where('statement.id', '=', $uuid)->first();
     //$queries = DB::getQueryLog();
     $expected_references = array_map(function ($ref) {
         return $this->generateUUID($ref);
     }, $expected_references);
     $expected_referrers = array_map(function ($ref) {
         return $this->generateUUID($ref);
     }, $expected_referrers);
     // Checks $expected_references.
     $references = array_map(function ($ref) {
         return $ref['id'];
     }, isset($statement->refs) ? $statement->refs : []);
     // Checks $expected_referrers.
     $referrers = (new \Statement())->select('statement.id')->where('statement.object.id', '=', $uuid)->where('statement.object.objectType', '=', 'StatementRef')->get()->toArray();
     $referrers = array_map(function ($ref) {
         return $ref['statement']['id'];
     }, $referrers);
     $diff = array_diff($expected_referrers, $referrers);
     $this->assertEquals(true, empty($diff) || count($diff) === 0, json_encode($diff) . json_encode($expected_referrers) . json_encode($referrers));
 }
 /**
  * Destroys the model with the given ID and options.
  * @param String $lrs_id ID to match.
  * @param [String => Mixed] $opts
  * @return Boolean
  */
 public function destroy($lrs_id, array $opts)
 {
     // Delete related documents from client and oauth_clients collections.
     $clients = ClientModel::where('lrs_id', $lrs_id)->get();
     foreach ($clients as $client) {
         $client->delete();
     }
     StatementModel::where('lrs_id', $lrs_id)->delete();
     return parent::destroy($lrs_id, $opts);
 }
 /**
  * Destroys the model with the given ID and options.
  * @param String $id ID to match.
  * @param [String => Mixed] $opts
  * @return Boolean
  */
 public function destroy($id, array $opts)
 {
     StatementModel::where('lrs._id', $id)->delete();
     return parent::destroy($id, $opts);
 }
Ejemplo n.º 8
0
  <ul>
    <li>First you need to rename the mongodb collection statements => old_statements. 
      You can do this by opening a terminal, get the mongo shell running and using the following command:<br />
      <div class="well">
        db.statements.renameCollection('old_statements')
      </div><br />
      Once done, refresh this page and move on to the next step.
    </li>
    <li>Next, click on the migrate button under each LRS listed below to migrate the statements.</li>
  </ul> 
  <div id="loading" style="margin:10px 0 10px 0;display:none;"><img src="{{ URL() }}/assets/img/ajax-loader.gif" /></div>
  <ul class="list-group col-sm-8">
  @foreach($lrs as $l)
    <?php 
$count = OldStatement::where('context.extensions.http://learninglocker&46;net/extensions/lrs._id', $l->_id)->count();
$count_new = Statement::where('lrs._id', $l->_id)->count();
?>
    @if( $count > 0 )
    <li class="list-group-item">
      <span class="badge">{{ $count }}</span>
      <p>{{ $l->title }}</p>
      @if( isset($count_new) && $count_new != 0 )
        <div class="label label-success">{{ $count_new }}</div>
      @endif 
      <div class="label label-success new_count" style="font-size:16px;padding:8px;"></div>
      @if( !isset($count_new) || $count_new == 0 ) 
        <div class="migrate btn btn-primary btn-sm" data-lrs="{{$l->_id}}"><i class="icon-play-circle"></i> Migrate</div>
      @endif
    </li>
    @endif
  @endforeach
Ejemplo n.º 9
0
 public function getVerbs($lrs)
 {
     $verbs = \Statement::where('lrs._id', $lrs)->select('statement.verb')->distinct()->remember(15)->get()->toArray();
     return $verbs;
 }
Ejemplo n.º 10
0
 private function setSelect($lrs, $select)
 {
     return \Statement::where('lrs._id', $lrs)->select($select)->distinct()->remember(15)->get();
 }
Ejemplo n.º 11
0
 public function getActivities($lrs)
 {
     return \Statement::where('lrs._id', $lrs)->where('statement.object.objectType', 'Activity')->select('statement.object.definition.type')->distinct()->remember(15)->get()->toArray();
     return array('activities' => $activities, 'types' => $activity_types);
 }
 /**
  * Related Activities
  *
  **/
 private function relatedActivities($statements, $lrs, $activityId)
 {
     $ids = array();
     foreach ($statements as $s) {
         $ids[] = $s->id;
     }
     //look in context parent
     $parent = \Statement::where('lrs._id', $lrs)->where('statement.context.contextActivities.parent.objectType', 'Activity')->where('statement.context.contextActivities.parent.id', $activityId)->get();
     if ($parent) {
         $statements = $this->addStatements($statements, $parent, $ids);
     }
     //look in context grouping
     $grouping = \Statement::where('lrs._id', $lrs)->where('statement.context.contextActivities.grouping.objectType', 'Activity')->where('statement.context.contextActivities.grouping.id', $activityId)->get();
     if ($grouping) {
         $statements = $this->addStatements($statements, $grouping, $ids);
     }
     //look in context category
     $category = \Statement::where('lrs._id', $lrs)->where('statement.context.contextActivities.category.objectType', 'Activity')->where('statement.context.contextActivities.category.id', $activityId)->get();
     if ($category) {
         $statements = $this->addStatements($statements, $category, $ids);
     }
     //look in context other
     $other = \Statement::where('lrs._id', $lrs)->where('statement.context.contextActivities.other.objectType', 'Activity')->where('statement.context.contextActivities.other.id', $activityId)->get();
     if ($category) {
         $statements = $this->addStatements($statements, $other, $ids);
     }
     return $statements;
 }