/**
  * 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);
 }
Exemplo n.º 6
0
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']);
 }
Exemplo n.º 8
0
 /**
  * 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');
 }
Exemplo n.º 9
0
 /**
  * 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()];
 }
Exemplo n.º 12
0
 /**
  * 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();
 }
Exemplo n.º 13
0
 /**
  *
  */
 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;
 }
Exemplo n.º 15
0
 /**
  * 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);
 }
Exemplo n.º 16
0
 /**
  * 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;
 }
Exemplo n.º 18
0
 /**
  * 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');
     }
 }