Author: Jan Vansteenlandt (jan@okfn.be)
Inheritance: extends Eloquent
 /**
  * Run the migrations.
  *
  * @return void
  */
 public function up()
 {
     Schema::create('definition_facet_types', function ($table) {
         $table->increments('id');
         $table->string('facet_name', 255);
     });
     $facet_types = ['rights', 'keyword', 'language', 'theme', 'publisher_name'];
     $facet_type_models = [];
     foreach ($facet_types as $facet) {
         $facet_type = \FacetType::create(['facet_name' => $facet]);
         $facet_type->save();
         if ($facet != 'keyword') {
             $facet_type_model[$facet] = $facet_type;
         } else {
             $facet_type_model['keywords'] = $facet_type;
         }
     }
     Schema::create('definition_facets', function ($table) {
         $table->increments('id');
         $table->integer('definition_id');
         $table->integer('facet_id');
         $table->string('facet_name');
         $table->string('value');
     });
     // Copy all of the facet related info to the new definition_facets table
     $definitions = \Definition::all();
     foreach ($definitions as $definition) {
         foreach ($facet_type_models as $facet_name => $facet_type) {
             if ($facet_name != 'keywords' && !empty($definition->{$facet_name})) {
                 $facet = \Facet::create(['definition_id' => $definition->id, 'facet_id' => $facet_type->id, 'facet_name' => $facet_name, 'value' => $definition->{$facet_name}]);
                 $facet->save();
             } else {
                 // split the keywords
                 if (!empty($definition->keywords)) {
                     $keywords = explode(',', $definition->keywords);
                     foreach ($keywords as $keyword) {
                         $facet = \Facet::create(['definition_id' => $definition->id, 'facet_id' => $facet_type->id, 'facet_name' => 'keyword', 'value' => $keyword]);
                         $facet->save();
                     }
                 }
             }
         }
     }
 }
Exemplo n.º 2
0
 /**
  * Update the facets for a definition
  *
  * @param Eloquent $definition
  *
  * @return void
  */
 private function updateFacets($definition)
 {
     $facet_types = \FacetType::all()->toArray();
     foreach ($definition->facets() as $facet) {
         \Facet::delete($facet['id']);
     }
     foreach ($facet_types as $facet_type) {
         $facet_name = $facet_type['facet_name'];
         if (!empty($definition->{$facet_name})) {
             $facet = \Facet::create(['definition_id' => $definition->id, 'facet_id' => $facet_type['id'], 'facet_name' => $facet_type['facet_name'], 'value' => $definition->{$facet_name}]);
             $facet->save();
         }
     }
     // Process keywords if present
     if (!empty($definition->keywords)) {
         // Split the keywords
         $keywords = explode(',', $definition->keywords);
         foreach ($keywords as $keyword) {
             $facet = \Facet::create(['definition_id' => $definition->id, 'facet_id' => $facet_type['id'], 'facet_name' => 'keyword', 'value' => $keyword]);
             $facet->save();
         }
     }
 }