bookshelfRepo = $repo; parent::__construct(); } /** * Execute the console command. * * @return mixed */ public function handle() { $shelfSlug = $this->option('slug'); $cascadeAll = $this->option('all'); $shelves = null; if (!$cascadeAll && !$shelfSlug) { $this->error('Either a --slug or --all option must be provided.'); return; } if ($cascadeAll) { $continue = $this->confirm( 'Permission settings for all shelves will be cascaded. ' . 'Books assigned to multiple shelves will receive only the permissions of it\'s last processed shelf. ' . 'Are you sure you want to proceed?' ); if (!$continue && !$this->hasOption('no-interaction')) { return; } $shelves = Bookshelf::query()->get(['id', 'restricted']); } if ($shelfSlug) { $shelves = Bookshelf::query()->where('slug', '=', $shelfSlug)->get(['id', 'restricted']); if ($shelves->count() === 0) { $this->info('No shelves found with the given slug.'); } } foreach ($shelves as $shelf) { $this->bookshelfRepo->copyDownPermissions($shelf, false); $this->info('Copied permissions for shelf [' . $shelf->id . ']'); } $this->info('Permissions copied for ' . $shelves->count() . ' shelves.'); } }