示例#1
0
 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')]);
 }
示例#2
0
 /**
  * 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)]);
 }