/** * 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)); } }