/** * Permanently delete given folders and associated files from db and disk. * * @param array|Collection $folders * @return int */ public function deleteFolders($folders) { if (!count($folders)) { return 0; } foreach ($folders as $folder) { //if folder is array it's a model instance, otherwise we will need to fetch it from db if (is_array($folder)) { $folder = Folder::with('files', 'folders')->withTrashed()->findOrFail($folder['id']); } if ($folder->user_id === Auth::user()->id || Auth::user()->isAdmin) { //delete all files foreach ($folder->files as $file) { Storage::deleteDirectory($file->getRelativePath(true)); } //delete all file models from db File::whereIn('id', $folder->files->lists('id'))->forceDelete(); //delete sub-folders and files recursively if (!$folder->folders->isEmpty()) { $this->deleteFolders($folder->folders); } //delete folder model from db $folder->forceDelete(); } } return count($folders); }
/** * Return all folders belonging to current user. * * @return string */ public function index() { if (Input::get('all') === 'true' && (Auth::user()->isAdmin || IS_DEMO)) { return Folder::withTrashed()->where('name', '!=', 'root')->orderBy('updated_at', 'desc')->limit(1000)->get(); } else { return Auth::user()->folders()->with('labels')->get(); } }
public function search() { if (!Request::ajax()) { return Redirect::to('/'); } $q = Request::input('q'); $view = ['results' => AppFile::search($q), 'root_id' => Folder::getRootId()]; return view('ajax/search', $view); }
public static function search($query) { $DBresults = DB::select('SELECT file_id, name, file_name, folder_id, size, created_at FROM files WHERE user_id = ' . Auth::id() . ' AND name LIKE "%' . $query . '%"'); $results = []; for ($i = 0, $c = count($DBresults); $i < $c; $i++) { $results[$i] = ['file_id' => $DBresults[$i]->file_id, 'created_at' => $DBresults[$i]->created_at, 'folder_id' => $DBresults[$i]->folder_id, 'name' => $DBresults[$i]->name, 'file_name' => $DBresults[$i]->file_name, 'size' => $DBresults[$i]->size, 'path' => Folder::getSubLinks($DBresults[$i]->folder_id)]; } return $results; }
/** * Create a new user from given social profile and log him in. * * @param string $profile * @param string $email * @param string $service * @return User */ public function createUserFromProfile($profile, $service, $email) { $profile = (array) $profile; $newUser = User::create(['email' => $email]); //create a root folder for this user Folder::create(['name' => 'root', 'share_id' => str_random(15), 'user_id' => $newUser->id, 'description' => trans('app.rootAlbumDesc')]); $newUser->oauth()->create(['service' => $service, 'token' => $profile['id']]); return Auth::loginUsingId($newUser->id, true); }
function current_folder_breadcrumb_path($user, $folder) { $path = '<li class="active"><a href="' . url(folder_url($user, $folder)) . '"><span class="fa fa-folder-open-o"></span> ' . $folder->name . '</a></li>'; $folder = Folder::find($folder->parent_folder_id); while ($folder->parent_folder_id != $folder->id) { $path = '<li><a href="' . url(folder_url($user, $folder)) . '"><span class="fa fa-folder"></span> ' . $folder->name . '</a></li>' . $path; $folder = Folder::find($folder->parent_folder_id); } $path = '<li><a href="' . url('/dashboard/users/' . $user->slug . '/' . $user->id) . '"><span class="fa fa-home"></span> Inicio</a></li>' . $path; return $path; }
public function create(User $user) { $rootFolder = $user->folders->first(); $this->createFilesForFolder('root', $user, $rootFolder); $images = Folder::create(['name' => 'Images', 'description' => 'Demo images folder.', 'user_id' => $user->id, 'share_id' => str_random(20), 'path' => 'root/Images']); $this->createFilesForFolder('Images', $user, $images); $text = Folder::create(['name' => 'Text', 'description' => 'Demo text folder.', 'user_id' => $user->id, 'share_id' => str_random(20), 'path' => 'root/Text']); $this->createFilesForFolder('text', $user, $text); Folder::create(['name' => 'Stuff', 'description' => 'Empty demo stuff folder.', 'user_id' => $user->id, 'share_id' => str_random(20), 'path' => 'root/Stuff']); Folder::create(['name' => 'Sub-Folder', 'description' => 'Demo sub-folder.', 'user_id' => $user->id, 'share_id' => str_random(20), 'folder_id' => $text->id, 'path' => 'root/Stuff/Sub-Folder']); }
/** * Store a newly created resource in storage. * * @return Response */ public function store(Request $request) { // while (!is_uploaded_file($_FILES['file_input']['tmp_name'])) { $clave = ini_get("session.upload_progress.prefix") . $_POST[ini_get("session.upload_progress.name")]; var_dump($_SESSION[$clave]); } //Validate the Request through the validation rules $validator = Validator::make($request->all(), ['file_input' => 'required', 'file_nickname' => 'required|min:5']); //Take actions when the validation has failed if ($validator->fails()) { return redirect('create-file')->withErrors($validator)->withInput(); } $file_created_by = Auth::user()->id; $file_type = $_POST['sel2']; $folder_id = $_POST['sel1']; $file_nickname = $request->input('file_nickname'); $target_dir = "folders"; $target_dir .= "/"; $target_dir .= $file_created_by; $target_dir .= "/"; $target_dir .= $folder_id; $file_size = $_FILES['file_input']['size']; $file_mime = $_FILES['file_input']['type']; $tmp_name = $_FILES['file_input']['tmp_name']; $name = $_FILES['file_input']['name']; $filename = uniqid() . $name; $file_path = $target_dir . '/' . $filename; move_uploaded_file($tmp_name, $target_dir . '/' . $filename); if ($file_mime == 'application/pdf') { $data = file_get_contents('http://*****:*****@index'); }
/** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { $file = $request->file('file'); $folder = Folder::findOrFail($request->current_folder); $file_original_name = str_slug(pathinfo($file->getClientOriginalName(), PATHINFO_FILENAME)); $extension = $file->getClientOriginalExtension(); $file_path = 'documents/' . $request->user()->slug . '/' . current_folder_path($folder); $file_name_on_disk = $file_original_name . str_random(20) . '.' . $extension; $file_name = $file_original_name . '.' . $extension; $file_slug = '@' . $file_name; $complete_path = $file_path . $file_name_on_disk; if (\File::exists($complete_path)) { abort(403, "A file with this name already exists within this folder."); } $file->move($file_path, $file_name_on_disk); try { $request->user()->files()->create(['folder_id' => $folder->id, 'path' => $complete_path, 'name' => $file_name, 'name_on_disk' => $file_name_on_disk, 'slug' => $file_slug]); } catch (\Exception $e) { return response()->json(['message' => 'File was not created', 'description' => $e->getMessage()], 403); } return response()->json(['message' => 'File created correctly', 'description' => 'A file was uploaded and stored correctly at ' . $complete_path], 201); }
/** * Register/create a new user. * * @param Registrar $registrar * @return * */ public function postRegister(Registrar $registrar) { //make sure that admin has enabled regisration before proceeding if (!App::make('Settings')->get('enableRegistration', true) && !Auth::user()->isAdmin) { return response(trans('app.registrationDisabled'), 403); } $validator = $registrar->validator(Input::all()); if ($validator->fails()) { return response()->json($validator->errors(), 400); } $user = $registrar->create(Input::all()); //create a root folder for this user Folder::create(['name' => 'root', 'share_id' => str_random(15), 'user_id' => $user->id, 'description' => trans('app.rootAlbumDesc')]); if (IS_DEMO && Input::has('createDemoContent')) { App::make('\\App\\Services\\DemoContentCreator')->create($user); } //if user is not logged in, do it now if (!Auth::check()) { Auth::login($user); } return $user; }
public function __construct() { $this->middleware('auth'); $this->ViewTemplate = ['title' => 'Cloud', 'root_folder_id' => Folder::getRootId()]; }
/** * Remove the specified resource from storage. * * @param int $id * @return Response */ public function deleteFolder($id) { // $currentFolder = Folder::findOrFail($id); //$filesFolder = $currentFolder->files; $files = $currentFolder->files(); foreach ($files as $file) { unlink(public_path($file->file_path)); } $files->delete(); $currentFolder->delete(); //rmdir('folders/'.$currentFolder->created_by.'/'.$currentFolder->id); return redirect()->back(); }
/** * */ public function run() { $faker = Faker::create(); $folderIds = Folder::lists('id'); $groupIds = Group::lists('id'); foreach (range(1, 200) as $index) { Event::create(['title' => $faker->word, 'category' => $faker->word, 'date' => $faker->date(), 'status' => '1', 'sponsor' => $faker->name, 'group_id' => $faker->randomElement($groupIds), 'folder_id' => $faker->randomElement($folderIds), 'description' => $faker->paragraph(), 'chatroom_id' => $index]); } }
/** * Add given folder and its files to downloads array. * * @param int|string|Folder $folder * @param array $downloads * @return array */ private function addFolder($folder, &$downloads) { if (!is_object($folder)) { $folder = Folder::with('files', 'folders')->find($folder); } $downloads[$folder->name] = []; if (!$folder->files->isEmpty()) { foreach ($folder->files as $file) { $downloads[$folder->name][$this->getName($file)] = $file->getAbsolutePath(); } } if (!$folder->folders->isEmpty()) { foreach ($folder->folders as $subFolder) { $this->addFolder($subFolder, $downloads[$folder->name]); } } return $downloads; }
/** * Show the application dashboard to the user. * * @return Response */ public function index() { $folders = Folder::where('created_by', Auth::user()->id)->get(); return view('home')->with('folders', $folders); }
/** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { $folder = Folder::find($id); try { \File::deleteDirectory(public_path('documents/' . $folder->user()->first()->slug . '/' . current_folder_path($folder))); $folder->delete(); } catch (\Exception $e) { return response()->json(['message' => 'Folder was not deleted', 'description' => $e->getMessage()], 403); } return response()->json(['message' => 'Folder deleted correctly', 'description' => 'Folder deleted correctly'], 201); }
public static function getSubLinks($id) { $path = Folder::getPath($id); $folders = explode('/', $path); $links = []; $IN = ''; for ($i = 2, $c = count($folders); $i < $c; $i++) { $IN .= '"' . $folders[$i] . '",'; } $db_links = DB::select('SELECT folder_id, name FROM folders WHERE folder_id IN (' . substr($IN, 0, -1) . ')'); for ($i = 3, $c = count($folders); $i < $c; $i++) { foreach ($db_links as $link) { if ($folders[$i] == $link->folder_id) { array_push($links, $link); } } } return $links; }
/** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $slug, $id) { $user = User::find($id); $this->authorize('show-user', $user); if ($request->password && $request->password_confirmation) { $this->validate($request, ['password' => 'required|confirmed']); $credentials = $request->only('name', 'email', 'password', 'password_confirmation'); $user->password = bcrypt($credentials['password']); } $old_path = 'documents/' . $user->slug; $user->name = $request->name; $user->slug = '@' . str_slug($request->name); // $user->email = $request->email; $user->save(); $folders = $user->folders()->get(); $folders->each(function ($folder, $key) use($user) { if ($folder->parent_folder_id > 0) { $new_path = 'documents/' . $user->slug . '/' . current_folder_path(Folder::find($folder->parent_folder_id)) . $folder->slug; $folder->files()->get()->each(function ($file, $key) use($new_path) { $file->path = $new_path . '/' . $file->name_on_disk; $file->save(); }); } }); \File::move(public_path($old_path), public_path('documents/' . $user->slug)); return redirect('/dashboard/users/' . $user->slug . '/' . $user->id); }
/** * Store admin account and basic details in db. * * @param array $input * @return void */ public function createAdmin(array $input) { //create admin account $user = new User(); $user->email = $input['email']; $user->password = bcrypt($input['password']); $user->permissions = array('admin' => 1); $user->save(); //create a root folder for this user Folder::create(['name' => 'root', 'share_id' => str_random(15), 'user_id' => $user->id, 'description' => trans('app.rootAlbumDesc')]); //login user Auth::login($user); //mark as installed App::make('Settings')->set('installed', 1); }
public function deleteFolder() { if (Auth::guest()) { return Redirect::to('/'); } $folder_id = Request::input('delete_folder_id'); $redirect_id = Folder::deleteFolder($folder_id); $root_id = Folder::getRootId(); if ($redirect_id == $root_id) { return Redirect::to('/')->with('message', 'FOLDER ZOSTAŁ USUNIĘTY'); } else { return Redirect::to('/id/' . $redirect_id)->with('message', 'FOLDER ZOSTAŁ USUNIĘTY'); } }