From 7cafbbb9d9ec14462fe8ce0eda86c42d22367757 Mon Sep 17 00:00:00 2001 From: vincent-peugnet Date: Mon, 10 Dec 2018 01:40:01 +0100 Subject: media-upload --- app/class/controllermedia.php | 33 +++++++++++++++++-- app/class/modelmedia.php | 25 ++++++++++++++ app/class/routes.php | 2 ++ app/view/templates/media.php | 77 ++++++++++++++++++++++++++++--------------- assets/css/home.css | 20 ++++++++++- 5 files changed, 127 insertions(+), 30 deletions(-) diff --git a/app/class/controllermedia.php b/app/class/controllermedia.php index 1fa564b..26b58ff 100644 --- a/app/class/controllermedia.php +++ b/app/class/controllermedia.php @@ -2,7 +2,6 @@ class Controllermedia extends Controller { - protected $medialist; protected $mediamanager; public function __construct($render) { @@ -15,9 +14,14 @@ class Controllermedia extends Controller public function desktop() { if($this->user->iseditor()) { - $medialist = $this->mediamanager->getlistermedia(Model::MEDIA_DIR); + $dir = $_GET['path'] ?? Model::MEDIA_DIR; + + $medialist = $this->mediamanager->getlistermedia($dir . DIRECTORY_SEPARATOR); $faviconlist = $this->mediamanager->getlistermedia(Model::FAVICON_DIR); - $this->showtemplate('media', ['medialist' => $medialist, 'faviconlist' => $faviconlist]); + + $dirlist = $this->mediamanager->listdir(Model::MEDIA_DIR); + + $this->showtemplate('media', ['medialist' => $medialist, 'faviconlist' => $faviconlist, 'dirlist' => $dirlist, 'dir' => $dir]); } } @@ -29,6 +33,29 @@ class Controllermedia extends Controller } + public function upload() + { + $target = $_POST['dir'] ?? Model::MEDIA_DIR; + if($target[strlen($target)-1]!='/') + $target=$target.'/'; + $count=0; + foreach ($_FILES['file']['name'] as $filename) + { + $fileinfo = pathinfo($filename); + $extension = idclean($fileinfo['extension']); + $id = idclean($fileinfo['filename']); + + $temp=$target; + $tmp=$_FILES['file']['tmp_name'][$count]; + $count=$count + 1; + $temp .= $id .'.' .$extension; + move_uploaded_file($tmp,$temp); + $temp=''; + $tmp=''; + } + $this->redirect($this->router->generate('media').'?path='.$target); + } + } diff --git a/app/class/modelmedia.php b/app/class/modelmedia.php index 3402a04..89c253f 100644 --- a/app/class/modelmedia.php +++ b/app/class/modelmedia.php @@ -105,7 +105,32 @@ class Modelmedia extends Model } + public function listdir($dir) + { + + $result = array(); + + $cdir = scandir($dir); + $result['dirfilecount'] = 0; + foreach ($cdir as $key => $value) + { + if (!in_array($value,array(".",".."))) + { + if (is_dir($dir . DIRECTORY_SEPARATOR . $value)) + { + $result[$value] = $this->listdir($dir . DIRECTORY_SEPARATOR . $value); + } + else + { + $result['dirfilecount'] ++; + } + } + } + + return $result; + + } } diff --git a/app/class/routes.php b/app/class/routes.php index b324e64..4763887 100644 --- a/app/class/routes.php +++ b/app/class/routes.php @@ -19,6 +19,8 @@ class Routes ['GET', '/!co', 'Controllerconnect#connect', 'connect'], ['POST', '/!search', 'Controllerhome#search', 'search'], ['GET', '/!media', 'Controllermedia#desktop', 'media'], + ['POST', '/!media', 'Controllermedia#upload', 'mediaupload'], + ['POST', '/!media', 'Controllermedia#folder', 'mediafolder'], ['GET', '/!font', 'Controllerfont#desktop', 'font'], ['POST', '/!admin', 'Controlleradmin#update', 'adminupdate'], ['GET', '/!admin', 'Controlleradmin#desktop', 'admin'], diff --git a/app/view/templates/media.php b/app/view/templates/media.php index 043000d..6bcba5d 100644 --- a/app/view/templates/media.php +++ b/app/view/templates/media.php @@ -10,47 +10,72 @@
-

Media

+

Explorer

- - + +
idextensionpathtypesizewidthheightlengh
+ - - - - - - - - - - - '. $dirname.''; + } else { + $folder = '├─📁'. $dirname; + } + echo ''; + echo ''; + echo ''; + echo ''; + foreach ($dir as $key => $value) { + if(is_array($value)) { + treecount($value, $key, $deepness + 1, $path . DIRECTORY_SEPARATOR . $key, $currentdir); + } + } } +treecount($dirlist, 'media', 0, 'media', $dir); ?> + +
folderfiles
id() ?>extension() ?>path() ?>type() ?>size()) ?>width() ?>height() ?>length() ?>
'. str_repeat(' ‎ ‎', $deepness) .$folder.''.$dir['dirfilecount'].'
-

Favicon

+

+ +
+ + + + +
+ +
+ + + + +
+ - - + +
idextensionpathsizewidthheight
+ - - - - - - + + + + + + + +
idexttypesizewidthheightlengh
id() ?>extension() ?>path() ?>size()) ?>width() ?>height() ?>id() ?>extension() ?>type() == 'image' ? 'image 👁' : $media->type() ?>size()) ?>width() ?>height() ?>length() ?>