public function fmanager(Request $request) { $root = ROOT . S . 'static'; $method = strtolower($request->get('m', 'list')); $dir = $root . $request->get('d', S); function filterp($path) { return str_replace(S . S, S, str_replace('//', '/', $path)); } function filterup($path) { $path = explode(S, $path); array_pop($path); return implode(S, $path); } // Assign current directory path $this->view->assign('dir', rtrim($request->get('d', S), S) . S); // Assign prev directory path $up_dir = filterup($request->get('d', S)); $this->view->assign('up', $up_dir ? $up_dir : S); // Base URL for any item $url = filterp('/static/' . trim(str_replace(S, '/', $request->get('d', S)), '/') . '/'); $this->view->assign('base_url', $url); // Define wyi name $this->view->assign('wyi', $request->get('wyi', 'edit')); switch ($method) { // Delete file case 'delete': $filename = filterp(rtrim($dir, S) . S . $request->get('f')); if (file_exists($filename)) { Helper::delete($filename); } break; // Upload file // Upload file case 'upload': $uploader = new FileUploader(['file']); $uploader->upload($dir); break; // Rename file // Rename file case 'rename': $filename = filterp(rtrim($dir, S) . S . $request->get('f')); $newname = filterp(rtrim($dir, S) . S . $request->get('n')); if (file_exists($newname)) { Helper::delete($newname); } if (file_exists($filename)) { rename($filename, $newname); $this->view->assign('up', filterup($up_dir)); } break; // Create folder // Create folder case 'create': $dirname = filterp(rtrim($dir, S) . S . $request->get('f')); if (!file_exists($dirname) && $request->get('f', false)) { @mkdir($dirname, 0777, true); } break; default: break; } return $this->view->render('com/filemanager.twig', ['items' => Helper::items($dir, ['.', '..']), 'date' => date('Y-m-d')]); }
/** * Upload user avatar * * @param Request $request * @return mixed */ public function avatar(Request $request) { $this->authenticated_only(); // Avatar uploading settings $upload_to = ROOT . S . 'static' . S . 'user' . S . $this->user->id; $static_url = '/static/user/' . $this->user->id . '/'; $allowed_formats = ['png', 'jpeg', 'jpg']; $max_size = 1; // MB $naming_handler = function ($filename, $ext) { return 'avatar.' . $ext; }; $image_max = ['w' => 512, 'h' => 512]; // Delete avatar if ($request->get('delete')) { if (file_exists(ROOT . $this->user->avatar)) { @unlink(ROOT . $this->user->avatar); $this->user->avatar = ''; $this->user->save(); return static::redirect_response($this->map->reverse('user.avatar')); } } // Uploadint avatar if ($request->isMethod('post')) { // Configure uploader $fileuploader = new FileUploader(['avatar'], $allowed_formats, $max_size); $fileuploader->set_naming_handler($naming_handler); $fileuploader->replace_mode(true); // Upload file $status = $fileuploader->upload($upload_to, 1)['avatar']; // Change user $old_file = $this->user->avatar; $this->user->avatar = $static_url . $fileuploader->get_name('avatar'); // Response if ($fileuploader->is_uploaded('avatar') && $this->user->save() && $fileuploader->resize('avatar', $image_max['w'], $image_max['h'])) { if (file_exists(ROOT . $old_file) && $old_file != $this->user->avatar) { @unlink(ROOT . $old_file); } $this->view->assign('user', $this->user->to_array()); $this->view->assign('message', $this->lang->translate('form.saved')); } else { $this->view->assign('error', $this->lang->translate('form.file.' . $status[0], $status[1])); } } else { $this->view->assign('message', $this->lang->translate('form.file.extension', implode(', ', $allowed_formats))); } return $this->view->render('user/avatar.twig', ['title' => $this->lang->translate('user.profile.avatar_upload'), 'max_size' => $max_size, 'formats' => implode(', ', $allowed_formats)]); }