diff options
Diffstat (limited to 'app/class')
-rw-r--r-- | app/class/controllermedia.php | 33 | ||||
-rw-r--r-- | app/class/modelmedia.php | 25 | ||||
-rw-r--r-- | app/class/routes.php | 2 |
3 files changed, 57 insertions, 3 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'], |