diff options
Diffstat (limited to 'app/class')
-rw-r--r-- | app/class/Controlleradmin.php | 45 | ||||
-rw-r--r-- | app/class/Modeladmin.php | 48 | ||||
-rw-r--r-- | app/class/Modelmassedit.php | 0 | ||||
-rw-r--r-- | app/class/Routes.php | 3 |
4 files changed, 83 insertions, 13 deletions
diff --git a/app/class/Controlleradmin.php b/app/class/Controlleradmin.php index b7d0e31..835f158 100644 --- a/app/class/Controlleradmin.php +++ b/app/class/Controlleradmin.php @@ -7,6 +7,15 @@ class Controlleradmin extends Controller /** @var Modelmedia $mediamanager */ protected $mediamanager; + /** @var Modeladmin */ + protected $adminmanager; + + public function __construct($router) + { + parent::__construct($router); + + $this->adminmanager = new Modeladmin(); + } public function desktop() { @@ -30,6 +39,9 @@ class Controlleradmin extends Controller $datas['globalcss'] = ""; } + $datas['pagesdblist'] = $this->adminmanager->pagesdblist(); + $datas['pagesdbtree'] = $this->mediamanager->listdir(Model::PAGES_DIR); + $this->showtemplate('admin', $datas); } else { $this->routedirect('home'); @@ -38,8 +50,8 @@ class Controlleradmin extends Controller public function update() { - $this->globaldircheck(); - + MODEL::dircheck(MODEL::GLOBAL_DIR); + $globalcss = file_put_contents(Model::GLOBAL_DIR . 'global.css', $_POST['globalcss']); Config::hydrate($_POST); @@ -50,16 +62,25 @@ class Controlleradmin extends Controller } } - - public function globaldircheck() - { - if(!is_dir(Model::GLOBAL_DIR)) { - return mkdir(Model::GLOBAL_DIR); - } else { - return true; - } - } - + public function database() + { + if(!empty($_POST['action'])) { + switch ($_POST['action']) { + case 'duplicate': + if(!empty($_POST['dbsrc']) && !empty($_POST['dbtarget'])) { + $this->adminmanager->copydb($_POST['dbsrc'], $_POST['dbtarget']); + } + break; + case 'select': + if(!empty($_POST['pagetable'])) { + Config::hydrate($_POST); + Config::savejson(); + } + break; + } + } + $this->routedirect('admin'); + } } diff --git a/app/class/Modeladmin.php b/app/class/Modeladmin.php new file mode 100644 index 0000000..54c4f0c --- /dev/null +++ b/app/class/Modeladmin.php @@ -0,0 +1,48 @@ +<?php + +namespace Wcms; + +class Modeladmin extends Model +{ + + + /** + * List all availalble pages databases + * + * @return array + */ + public function pagesdblist() : array + { + $dblist = glob(self::PAGES_DIR . '*', GLOB_ONLYDIR); + $dblist = array_map('basename', $dblist); + + return $dblist; + } + + /** + * Duplicate actual page database using new name + * + * @param string $name of the new database + */ + public function duplicate(string $name) + { + $this->copydb(Config::pagetable(), $name); + } + + /** + * Copy database folder to a new folder if it doeas not already exsit + * + * @param string $db name of source page database to copy + * @param string $name of the destination database + */ + public function copydb(string $db, string $name) + { + $dbdir = self::PAGES_DIR . $db; + $newdbdir = self::PAGES_DIR . idclean($name); + if(is_dir($dbdir) && !is_dir($newdbdir)) { + recurse_copy($dbdir, $newdbdir); + } + } +} + +?>
\ No newline at end of file diff --git a/app/class/Modelmassedit.php b/app/class/Modelmassedit.php deleted file mode 100644 index e69de29..0000000 --- a/app/class/Modelmassedit.php +++ /dev/null diff --git a/app/class/Routes.php b/app/class/Routes.php index c4571d9..277d478 100644 --- a/app/class/Routes.php +++ b/app/class/Routes.php @@ -36,8 +36,9 @@ class Routes ['GET', '/!font', 'Controllerfont#desktop', 'font'], ['GET', '/!font/render', 'Controllerfont#render', 'fontrender'], ['POST', '/!font/add', 'Controllerfont#add', 'fontadd'], - ['POST', '/!admin', 'Controlleradmin#update', 'adminupdate'], ['GET', '/!admin', 'Controlleradmin#desktop', 'admin'], + ['POST', '/!admin', 'Controlleradmin#update', 'adminupdate'], + ['POST', '/!admin/database', 'Controlleradmin#database', 'admindatabase'], ['GET', '/!user', 'Controlleruser#desktop', 'user'], ['POST', '/!user/add', 'Controlleruser#add', 'useradd'], ['POST', '/!user/update', 'Controlleruser#update', 'userupdate'], |