summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/controllers/Config.class.php30
-rw-r--r--src/controllers/Users.class.php59
-rw-r--r--src/lib/DB.class.php43
-rw-r--r--src/views/pages/users/index.html.php22
-rw-r--r--style.scss3
5 files changed, 107 insertions, 50 deletions
diff --git a/src/controllers/Config.class.php b/src/controllers/Config.class.php
new file mode 100644
index 0000000..37d1f09
--- /dev/null
+++ b/src/controllers/Config.class.php
@@ -0,0 +1,30 @@
+<?php
+require_once('Auth.class.php');
+
+Router::register('config', 'Config', 'index');
+
+class Config extends Controller {
+ public function index($routed, $remainder) {
+ $uid = Login::isLoggedIn();
+ if ($uid===false || !Auth::getObj($uid)->isAdmin()) {
+ $this->http401($routed, $remainder);
+ return;
+ }
+
+ $method = $_SERVER['REQUEST_METHOD'];
+ switch ($method) {
+ case 'PUT': $_POST = $_PUT;
+ case 'POST':
+ // We're PUTing an updated configuration.
+ $this->update();
+ break;
+ }
+ $this->show_index();
+ }
+ private function show_index() {
+
+ }
+ private function update() {
+
+ }
+}
diff --git a/src/controllers/Users.class.php b/src/controllers/Users.class.php
index 54e4675..df00663 100644
--- a/src/controllers/Users.class.php
+++ b/src/controllers/Users.class.php
@@ -273,49 +273,28 @@ class Users extends Controller {
*/
private function update_users() {
$attribs = $this->getIndexAttribs();
+ $form = new Form(null, null);
foreach ($attribs as $attrib) {
$key = $attrib['key'];
if (isset($_POST[$key]) && is_array($_POST[$key])) {
$old = $_POST['_old'][$key];
foreach ($_POST[$key] as $uid => $value) {
- $doit = true;
- $forked = false;
- $have_old = isset($old[$uid]);
- if ($have_old) {
- @$value_base = $old[$uid];
- $we_changed_it = $value_base != $value;
- if ($we_changed_it) {
- $value_fork = DB::get('users', $uid, $key);
- $value_fork = $value_fork['value'];
- if ($value_fork===false) $value_fork = 'false';
- if ($value_fork===true) $value_fork = 'true';
-
- $someone_else_changed_it = $value_fork != $value_base;
- if ($someone_else_changed_it) {
- if ($value == $value_fork) {
- // we might as well not have
- $we_changed_it = false;
- } else {
- $forked = true;
- }
- }
- }
- if (!$we_changed_it) {
- $doit = false;// nothing to do
- }
- }
- if ($doit) {
- DB::set('users', $uid, $key, $value);
- }
- if ($forked) {
+ @$value_base = $old[$uid];
+ $set = DB::set('users', $uid, $key, $value, $value_base);
+ if (is_string($set)) {
echo "<pre>\n";
- echo "Error: Value changed elsewhere, and I don't have real handling for this yet.\n";
+ echo "Error: Value changed elsewhere, ".
+ "and I don't have real handling ".
+ "for this yet.\n";
echo "UID: $uid\n";
echo "Name: ".$user->getName()."\n";
echo "Key: $key\n";
- echo "Value: Original : "; var_dump($value_base);
- echo "Value: Other edit: "; var_dump($value_fork);
- echo "Value: This edit : "; var_dump($value);
+ echo "Value: Original : ";
+ var_dump($value_base);
+ echo "Value: Other edit: ";
+ var_dump($value_fork);
+ echo "Value: This edit : ";
+ var_dump($value);
echo "</pre>";
}
}
@@ -349,16 +328,16 @@ class Users extends Controller {
}
$this->showView('users/index', $vars);
}
-
- function attrib($key, $name) {
- return array('key'=>$key, 'name'=>$name);
+
+ function attrib($key, $name, $type='string') {
+ return array('key'=>$key, 'name'=>$name, 'type'=>$type);
}
private function getIndexAttribs() {
$attribs = array();
- $attribs[] = $this->attrib('auth_user', 'Active');
+ $attribs[] = $this->attrib('auth_user', 'Active', 'bool');
if (Auth::getObj(Login::isLoggedIn())->isAdmin()) {
- $attribs[] = $this->attrib('auth_admin', 'Admin');
- $attribs[] = $this->attrib('auth_delete', 'Delete');
+ $attribs[] = $this->attrib('auth_admin', 'Admin', 'bool');
+ $attribs[] = $this->attrib('auth_delete', 'Delete', 'bool');
}
$attribs[] = $this->attrib('lastname','Last');
$attribs[] = $this->attrib('firstname','First');
diff --git a/src/lib/DB.class.php b/src/lib/DB.class.php
index 9f14161..5954726 100644
--- a/src/lib/DB.class.php
+++ b/src/lib/DB.class.php
@@ -4,6 +4,39 @@ require_once('Auth.class.php');
require_once('Login.class.php');
class DB {
+ public static function set($table, $unit, $key, $value, $orig_value) {
+ $value_base = $orig_value;
+
+ $doit = true;
+ $forked = false;
+ $have_old = ($value_base!==null);
+ if ($have_old) {
+ $we_changed_it = $value_base != $value;
+ if ($we_changed_it) {
+ $value_fork = $this->getConfString($key);
+ $someone_else_changed_it =
+ $value_fork != $value_base;
+ if ($someone_else_changed_it) {
+ if ($value == $value_fork) {
+ // we might as well not have
+ $we_changed_it = false;
+ } else {
+ $forked = true;
+ }
+ }
+ }
+ if (!$we_changed_it) {
+ $doit = false;// nothing to do
+ }
+ }
+ if ($doit) {
+ return $this->setConf($key, $value);
+ }
+ if ($forked) {
+ return $value_fork;
+ }
+ }
+
public static function get($table, $unit, $key) {
switch ($table) {
case 'conf':
@@ -17,7 +50,7 @@ class DB {
return false;
}
}
- public static function set($table, $unit, $key, $value) {
+ public static function raw_set($table, $unit, $key, $value) {
switch ($table) {
case 'conf':
case 'plugins':
@@ -49,15 +82,15 @@ class DB {
break;
case 'auth_user':
$editable = $editable && $logged_in_user->isAdmin();
- $value = $user->isUser();
+ $value = $user->isUser()?'true':'false';
break;
case 'auth_admin':
$editable = $editable && $logged_in_user->isAdmin();
- $value = $user->isAdmin();
+ $value = $user->isAdmin()?'true':'false';
break;
case 'auth_delete':
$editable = $editable && $logged_in_user->isAdmin();
- $value = false;
+ $value = 'false';
break;
default:
$value = $user->getConf($key);
@@ -128,4 +161,4 @@ class DB {
return $db->setPluginConf($plugin, $key, $value);
}
}
-} \ No newline at end of file
+}
diff --git a/src/views/pages/users/index.html.php b/src/views/pages/users/index.html.php
index caedf5c..daed9f7 100644
--- a/src/views/pages/users/index.html.php
+++ b/src/views/pages/users/index.html.php
@@ -18,7 +18,11 @@ $t->openTag('table', array('class'=>'sortable', 'id'=>'bar'));
$t->openTag('thead');
$t->openTag('tr');
foreach ($attribs as $attrib) {
- $t->tag('th', array(), $attrib['name']);
+ switch ($attrib['type']) {
+ case 'bool': $class = 'small'; break;
+ default: $class = ''; break;
+ }
+ $t->tag('th', array('class'=>$class), $attrib['name']);
}
$t->tag('th', array(), '-');
$t->closeTag('tr');
@@ -27,7 +31,11 @@ $t->closeTag('thead');
$t->openTag('tfoot');
$t->openTag('tr');
foreach ($attribs as $attrib) {
- $t->tag('th', array(), $attrib['name']);
+ switch ($attrib['type']) {
+ case 'bool': $class = 'small'; break;
+ default: $class = ''; break;
+ }
+ $t->tag('th', array('class'=>$class), $attrib['name']);
}
$t->tag('th', array(), '-');
$t->closeTag('tr');
@@ -42,11 +50,15 @@ foreach ($users as $user) {
$t->openTag('td');
$props = $user[$attrib['key']];
-
- $value = $props['value'];
+
+ $bool = $attrib['type']=='bool';
+ if ($bool) {
+ $value = $props['value']=='true';
+ } else {
+ $value = $props['value'];
+ }
$editable = $props['editable'];
$post_key = $props['post_key'];
- $bool = is_bool($value);
$arr = array('name'=>$post_key);
if (!$editable) {
diff --git a/style.scss b/style.scss
index 7a86e20..dc51087 100644
--- a/style.scss
+++ b/style.scss
@@ -113,3 +113,6 @@ iframe {
.http404 {
color: red;
}
+.small {
+ font-size: .5em;
+} \ No newline at end of file