/** * Bootstrap any application services. * * @return void */ public function boot() { User::created(function (User $user) { Folder::create(['name' => '/', 'user_id' => $user->id]); Activity::create(['type' => 'user_created', 'user_id' => $user->id]); }); Folder::deleting(function (Folder $folder) { foreach ($folder->folders as $_folder) { $_folder->_delete(); } foreach ($folder->files as $file) { $file->delete(); } }); File::deleting(function (File $file) { $file = updateFile($file, fileInfo($file)); $filenames = []; if ($file->type == 'image') { $altImages = ['opt', 'xs']; foreach ($altImages as $suffix) { $name = explode('.', $file->filename)[0]; $extension = explode('.', $file->filename)[1]; array_push($filenames, "{$name}.{$suffix}.{$extension}"); } } Storage::delete($file->filename); if (!empty($filenames)) { foreach ($filenames as $filename) { Storage::delete($filename); } } }); }
public function createFolder(Request $request, Folder $folder) { $this->authorize('all', $folder); $this->validate($request, $this->nameValidationRules()); Folder::create(['parent_id' => $folder->id, 'user_id' => $folder->user->id, 'name' => $request->name]); fmsgs(['title' => 'New Folder', 'type' => 'success', 'text' => 'The folder created successfully']); return redirect('/files/' . $folder->id); }
public function uri($linkSelf = false) { $folder = $this; $folders = [$folder]; while ($folder->parent_id) { $folder = Folder::find($folder->parent_id); array_push($folders, $folder); } $folders = array_reverse($folders); $view = ""; $tpl = "<li><a href='%s'>%s</a></li>"; $tplActive = "<li class='active'>%s</li>"; foreach ($folders as $index => $folder) { if ($folder->name === "/") { $folder->name = 'Files'; } if (count($folders) === $index + 1 && !$linkSelf) { $view .= sprintf($tplActive, $folder->name); } else { $view .= sprintf($tpl, url("/files/" . $folder->id), $folder->name); } } return $view; }