aboutsummaryrefslogtreecommitdiff
path: root/app/class
diff options
context:
space:
mode:
authorvincent-peugnet <v.peugnet@free.fr>2020-02-06 18:06:07 +0100
committervincent-peugnet <v.peugnet@free.fr>2020-02-06 18:06:38 +0100
commit9d3f97870810e739041eccad234d47308747cb1f (patch)
tree94c7491ed5313de517c28ecc8c49a341d99db636 /app/class
parent1aa2b136656e42d8523d31f79e9cc1321c1dbba9 (diff)
downloadwcms-9d3f97870810e739041eccad234d47308747cb1f.tar.gz
wcms-9d3f97870810e739041eccad234d47308747cb1f.zip
new feature : admin database manager fix #12
Diffstat (limited to 'app/class')
-rw-r--r--app/class/Controlleradmin.php45
-rw-r--r--app/class/Modeladmin.php48
-rw-r--r--app/class/Modelmassedit.php0
-rw-r--r--app/class/Routes.php3
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'],