Example #1
0
 /**
  * Handle collected permissions
  * 
  * @param   Event $app
  */
 public static function collect(Event $event)
 {
     $app = $event->app();
     $delete = array();
     $permissions = $app->collect('permissions')->get();
     foreach (static::findAll() as $perm) {
         $name = $perm->name();
         if (!isset($permissions[$name])) {
             $delete[] = $perm->id();
             continue;
         }
         // Update permission's description
         if ($permissions[$name] !== $perm->description()) {
             $perm->descriptionCol = $permissions[$name];
             $perm->save();
         }
         unset($permissions[$name]);
     }
     // Remove unused descriptions
     if (!empty($delete)) {
         static::where('id')->in($delete)->delete();
     }
     // Add new descriptions
     foreach ($permissions as $name => $description) {
         static::create(array('nameCol' => $name, 'descriptionCol' => $description));
     }
 }