diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/controllers/Config.class.php | 30 | ||||
-rw-r--r-- | src/controllers/Users.class.php | 59 | ||||
-rw-r--r-- | src/lib/DB.class.php | 43 | ||||
-rw-r--r-- | src/views/pages/users/index.html.php | 22 |
4 files changed, 104 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) { |