diff options
| author | Simon Rettberg | 2016-04-28 21:31:15 +0200 |
|---|---|---|
| committer | Simon Rettberg | 2016-04-28 21:31:15 +0200 |
| commit | 95db8e184b378534db0ac08d14ae8500ee5090c3 (patch) | |
| tree | f39cee8160ef4266e49dbe04d3e8fe6400ce2133 /modules/baseconfig/module.inc.php | |
| parent | Merge branch 'master' into modularization (diff) | |
| download | slx-admin-95db8e184b378534db0ac08d14ae8500ee5090c3.tar.gz slx-admin-95db8e184b378534db0ac08d14ae8500ee5090c3.tar.xz slx-admin-95db8e184b378534db0ac08d14ae8500ee5090c3.zip | |
Implemented new menu, added logic for defining dependencies, move translation files around
Diffstat (limited to 'modules/baseconfig/module.inc.php')
| -rw-r--r-- | modules/baseconfig/module.inc.php | 127 |
1 files changed, 0 insertions, 127 deletions
diff --git a/modules/baseconfig/module.inc.php b/modules/baseconfig/module.inc.php deleted file mode 100644 index 3d187d30..00000000 --- a/modules/baseconfig/module.inc.php +++ /dev/null @@ -1,127 +0,0 @@ -<?php - -class Page_BaseConfig extends Page -{ - private $qry_extra = array(); - - protected function doPreprocess() - { - User::load(); - - // Determine if we're setting global, distro or pool - if (isset($_REQUEST['distroid'])) { - // TODO: Everything - $this->qry_extra[] = array( - 'name' => 'distroid', - 'value' => (int)$_REQUEST['distroid'], - 'table' => 'setting_distro', - ); - if (isset($_REQUEST['poolid'])) { - $this->qry_extra[] = array( - 'name' => 'poolid', - 'value' => (int)$_REQUEST['poolid'], - 'table' => 'setting_pool', - ); - } - } - - if (isset($_POST['setting']) && is_array($_POST['setting'])) { - if (User::hasPermission('superadmin')) { - // Build variables for specific sub-settings - $qry_insert = ''; - $qry_values = ''; - foreach ($this->qry_extra as $item) { - $qry_insert = ', ' . $item['name']; - $qry_values = ', :' . $item['name']; - } - // Load all existing config options to validate input - $res = Database::simpleQuery('SELECT setting, validator FROM setting'); - while ($row = $res->fetch(PDO::FETCH_ASSOC)) { - $key = $row['setting']; - $validator = $row['validator']; - $displayValue = (isset($_POST['setting'][$key]) ? $_POST['setting'][$key] : ''); - // Validate data first! - $mangledValue = Validator::validate($validator, $displayValue); - if ($mangledValue === false) { - Message::addWarning('value-invalid', $key, $displayValue); - continue; - } - // Now put into DB - Database::exec("INSERT INTO setting_global (setting, value, displayvalue $qry_insert) - VALUES (:key, :value, :displayvalue $qry_values) - ON DUPLICATE KEY UPDATE value = :value, displayvalue = :displayvalue", - $this->qry_extra + array( - 'key' => $key, - 'value' => $mangledValue, - 'displayvalue' => $displayValue - ) - ); - } - Message::addSuccess('settings-updated'); - Util::redirect('?do=BaseConfig'); - } - } - } - - protected function doRender() - { - if (!User::hasPermission('superadmin')) { - Message::addError('no-permission'); - Util::redirect('?do=Main'); - } - // Build left joins for specific settings - $joins = ''; - foreach ($this->qry_extra as $item) { - $joins .= " LEFT JOIN {$item['table']} "; - } - // List global config option - $settings = array(); - $res = Database::simpleQuery('SELECT cat_setting.catid, setting.setting, setting.defaultvalue, setting.permissions, setting.validator, tbl.displayvalue - FROM setting - INNER JOIN cat_setting USING (catid) - LEFT JOIN setting_global AS tbl USING (setting) - ORDER BY cat_setting.sortval ASC, setting.setting ASC'); - while ($row = $res->fetch(PDO::FETCH_ASSOC)) { - $row['description'] = Util::markup(Dictionary::translate('settings/setting', $row['setting'])); - if (is_null($row['displayvalue'])) $row['displayvalue'] = $row['defaultvalue']; - $row['item'] = $this->makeInput($row['validator'], $row['setting'], $row['displayvalue']); - $settings[$row['catid']]['settings'][] = $row; - $settings[$row['catid']]['category_name'] = Dictionary::translate('settings/cat_setting', 'cat_' . $row['catid']); - $settings[$row['catid']]['category_id'] = $row['catid']; - } - Render::addTemplate('_page', array( - 'categories' => array_values($settings) - )); - } - - /** - * Create html snippet for setting, based on given validator - * @param type $validator - * @return boolean - */ - private function makeInput($validator, $setting, $current) - { - $parts = explode(':', $validator, 2); - if ($parts[0] === 'list') { - $items = explode('|', $parts[1]); - $ret = '<select name="setting[' . $setting . ']" class="form-control">'; - foreach ($items as $item) { - if ($item === $current) { - $ret .= '<option selected="selected">' . $item . '</option>'; - } else { - $ret .= '<option>' . $item . '</option>'; - } - } - return $ret . '</select>'; - } - // Password field guessing - if (stripos($validator, 'password') !== false) { - $type = Property::getPasswordFieldType(); - } else { - $type = 'text'; - } - // Fallback: single line input - return '<input type="' . $type . '" name="setting[' . $setting . ']" class="form-control" size="30" value="' . $current . '">'; - } - -} |
