Browse Source

Update save method for Config model

Unset properties of the model will be removed from the database when it is written.
Visman 4 years ago
parent
commit
ed4ec053fe
1 changed files with 33 additions and 23 deletions
  1. 33 23
      app/Models/Config/Save.php

+ 33 - 23
app/Models/Config/Save.php

@@ -22,31 +22,41 @@ class Save extends Method
 
 
         $values = $this->model->getAttrs();
         $values = $this->model->getAttrs();
         foreach ($modified as $name) {
         foreach ($modified as $name) {
-            $vars = [
-                ':value' => $values[$name],
-                ':name'  => $name
-            ];
-            //????
-            //????
-            $query = 'UPDATE ::config
-                SET conf_value=?s:value
-                WHERE conf_name=?s:name';
-
-            $count = $this->c->DB->exec($query, $vars);
-            //????
-            //????
-            if (0 === $count) {
+            if (\array_key_exists($name, $values)) {
+                $vars = [
+                    ':value' => $values[$name],
+                    ':name'  => $name
+                ];
                 //????
                 //????
                 //????
                 //????
-                $query = 'INSERT INTO ::config (conf_name, conf_value)
-                    SELECT ?s:name, ?s:value
-                    FROM ::groups
-                    WHERE NOT EXISTS (
-                        SELECT 1
-                        FROM ::config
-                        WHERE conf_name=?s:name
-                    )
-                    LIMIT 1';
+                $query = 'UPDATE ::config
+                    SET conf_value=?s:value
+                    WHERE conf_name=?s:name';
+
+                $count = $this->c->DB->exec($query, $vars);
+                //????
+                //????
+                if (0 === $count) {
+                    //????
+                    //????
+                    $query = 'INSERT INTO ::config (conf_name, conf_value)
+                        SELECT ?s:name, ?s:value
+                        FROM ::groups
+                        WHERE NOT EXISTS (
+                            SELECT 1
+                            FROM ::config
+                            WHERE conf_name=?s:name
+                        )
+                        LIMIT 1';
+
+                    $this->c->DB->exec($query, $vars);
+                }
+            } else {
+                $vars = [
+                    ':name'  => $name
+                ];
+                $query = 'DELETE FROM ::config
+                    WHERE conf_name=?s:name';
 
 
                 $this->c->DB->exec($query, $vars);
                 $this->c->DB->exec($query, $vars);
             }
             }