<?php
/*=====================================================================*\
|| ###################################################################
|| # Kalens [#]version[#]
|| # Copyright ©2002-[#]year[#] Iris Studios, Inc.
|| #
|| # This program is free software; you can redistribute it and/or modify
|| # it under the terms of the GNU General Public License as published by
|| # the Free Software Foundation; version [#]gpl[#] of the License.
|| #
|| # This program is distributed in the hope that it will be useful, but
|| # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|| # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|| # more details.
|| #
|| # You should have received a copy of the GNU General Public License along
|| # with this program; if not, write to the Free Software Foundation, Inc.,
|| # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|| ###################################################################
\*=====================================================================*/
// ######################### REQUIRE BACKEND #########################
define('SVN', '$Id$');
require_once('./global.php');
require_once('./includes/admin/xml.php');
$settingtypes = array(
'text' => '$print->row_input',
'textarea' => '$print->row_textarea',
'list' => '$print->row_list'
);
function setting_code($setting)
{
global $IS_SETTINGS, $kalens;
$IS_SETTINGS = true;
$kalens->print->row_span((DEVDEBUG ? "<span class=\"smallfont\" style=\"float: right;\"><a href=\"options.php?do=editsetting&varname=$setting[varname]\">[" . $kalens->lang->string('Edit') . "]</a> <a href=\"options.php?do=killsetting&varname=$setting[varname]&group=$setting[groupname]\" onclick=\"return confirm('" . $kalens->lang->string('Are you sure you want to perform this delete operation?') . "');\">[" . $kalens->lang->string('Delete') . "]</a></span>" : '') . '<span' . (DEVDEBUG ? ' title="$kalens->options[\'' . $setting['varname'] . '\']"' : '') . "><strong>" . AdminStrings::fetchSettingTitle($setting['varname']) . "</strong></span>", 'thead');
switch ($setting['code'])
{
case 'textbox':
$kalens->print->row_input(AdminStrings::fetchSettingDescription($setting['varname']), 'settings[' . $setting['varname'] . ']', $setting['value']);
break;
case 'textarea':
$kalens->print->row_textarea(AdminStrings::fetchSettingDescription($setting['varname']), 'settings[' . $setting['varname'] . ']', $setting['value']);
break;
case 'yesno':
$kalens->print->list_item($kalens->lang->string('No'), '0', ($setting['value'] == false));
$kalens->print->list_item($kalens->lang->string('Yes'), '1', ($setting['value'] == true));
$kalens->print->row_list(AdminStrings::fetchSettingDescription($setting['varname']), 'settings[' . $setting['varname'] . ']');
break;
default:
eval('$value = "' . $kalens->clean($setting['code'], TYPE_STRUN) . '";');
$kalens->print->row_text(AdminStrings::fetchSettingDescription($setting['varname']), $value);
break;
}
}
// ######################## NEW SETTING GROUP ########################
if ($_REQUEST['do'] == 'newgroup')
{
$print->page_start(sprintf($lang->string('Add %1$s'), sprintf($lang->string('%1$s Group'), $lang->string('Setting'))));
$print->form_start('options.php', 'mk_group');
$print->table_start();
$print->table_head(sprintf($lang->string('Add %1$s'), sprintf($lang->string('%1$s Group'), $lang->string('Setting'))));
$print->row_input($lang->string('Name'), 'groupname');
$print->row_input($lang->string('Shortname'), 'shortname');
$print->row_input($lang->string('Display Order'), 'displayorder');
$print->row_submit();
$print->table_end();
$print->form_end();
$print->page_end();
}
// ######################## EDIT SETTING GROUP #######################
if ($_REQUEST['do'] == 'editgroup')
{
$get_group = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "settinggroup WHERE shortname = '" . $kalens->input_escape('group') . "'");
$print->page_start(sprintf($lang->string('Edit %1$s'), sprintf($lang->string('%1$s Group'), $lang->string('Setting'))));
$print->form_start('options.php', 'ch_group');
$print->form_hidden_field('group', $get_group['shortname']);
$print->table_start();
$print->table_head(sprintf($lang->string('Edit %1$s'), sprintf($lang->string('%1$s Group'), $lang->string('Setting'))));
$print->row_input($lang->string('Name'), 'groupname', $get_group['groupname']);
$print->row_input($lang->string('Display Order'), 'displayorder', $get_group['displayorder']);
$print->row_submit('<input type="checkbox" name="kill" value="1" />' . $lang->string('Delete'));
$print->table_end();
$print->form_end();
$print->page_end();
}
// ######################### ADD GROUP ACTION ########################
if ($_POST['do'] == 'mk_group')
{
$db->query("INSERT INTO " . TABLE_PREFIX . "settinggroup (groupname, shortname, displayorder) VALUES ('" . $kalens->input_escape('groupname') . "', '" . $kalens->input_escape('shortname') . "', " . $kalens->input_clean('displayorder', TYPE_UINT) . ")");
$print->redirect('options.php?do=settings&group=' . $kalens->in['shortname'], 10, true);
}
// ######################## EDIT GROUP ACTION ########################
if ($_POST['do'] == 'ch_group')
{
if ($vars['kill'])
{
$db->query("DELETE FROM " . TABLE_PREFIX . "settinggroup WHERE shortname = '" . $kalens->input_escape('group') . "'");
$db->query("DELETE FROM " . TABLE_PREFIX . "setting WHERE groupname = '" . $kalens->input_escape('group') . "'");
}
$db->query("UPDATE " . TABLE_PREFIX . "settinggroup SET groupname = '" . $kalens->input_escape('groupname') . "', displayorder = " . $kalens->input_clean('displayorder', TYPE_UINT) . " WHERE shortname = '" . $kalens->input_escape('group') . "'");
$print->redirect('options.php?do=settings&group=' . $kalens->in['group'], 10, true);
}
// ########################### SETTING LIST ##########################
if ($_REQUEST['do'] == 'settings')
{
$group = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "settinggroup WHERE shortname = '" . $kalens->input_escape('group') . "'");
$settings = $db->query("SELECT * FROM " . TABLE_PREFIX . "setting WHERE groupname = '$group[shortname]' ORDER BY varname ASC");
$print->page_start($group['groupname']);
$print->form_start('options.php', 'save_settings');
$print->form_hidden_field('group', $group['shortname']);
$print->table_start();
$print->table_head($group['groupname'] . (DEVDEBUG ? " <a href=\"options.php?do=addsetting&group=$group[shortname]\">" . sprintf($lang->string('[%1$s]'), $lang->string('Add')) . "</a> <a href=\"options.php?do=editgroup&group=$group[shortname]\">" . sprintf($lang->string('[%1$s]'), $lang->string('Edit')) . "</a>" : ''));
while ($setting = $db->fetch_array($settings))
{
setting_code($setting);
}
$print->row_submit();
$print->table_end();
$print->form_end();
$print->page_end();
}
// ########################## SAVE SETTINGS ##########################
if ($_POST['do'] == 'save_settings')
{
foreach ($kalens->in['settings'] AS $name => $value)
{
$db->query("UPDATE " . TABLE_PREFIX . "setting SET value = '" . $kalens->escape($value) . "' WHERE varname = '" . $kalens->escape($name) . "'");
}
$print->redirect("options.php?do=settings&group=" . $kalens->in['group']);
}
// ########################### ADD SETTING ###########################
if ($_REQUEST['do'] == 'addsetting')
{
$print->page_start(sprintf($lang->string('Add %1$s'), $lang->string('Setting')));
$print->form_start('options.php', 'mk_setting');
$print->form_hidden_field('group', $kalens->in['group']);
$print->table_start();
$print->table_head(sprintf($lang->string('Add %1$s'), $lang->string('Setting')));
$print->row_input($lang->string('Varname'), 'varname');
$print->row_textarea($lang->string('Code Type'), 'code');
$print->row_textarea($lang->string('Value'), 'value');
$print->row_input($lang->string('Volatile'), 'volatile', 0);
$print->row_submit();
$print->table_end();
$print->form_end();
$print->page_end();
}
// ######################## ADD SETTING ACTION #######################
if ($_POST['do'] == 'mk_setting')
{
$db->query("
INSERT INTO " . TABLE_PREFIX . "setting
(varname, groupname, `code`, `value`, volatile)
VALUES
('" . $kalens->input_escape('varname') . "',
'" . $kalens->input_escape('group') . "',
'" . $kalens->input_escape('code') . "',
'" . $kalens->input_escape('value') . "',
" . $kalens->input_clean('volatile', TYPE_UINT) . "
)"
);
$print->redirect("options.php?do=settings&group=" . $kalens->in['group']);
}
// ########################### EDIT SETTING ##########################
if ($_REQUEST['do'] == 'editsetting')
{
$setting = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "setting WHERE varname = '" . $kalens->input_escape('varname') . "'");
$groups = $db->query("SELECT * FROM " . TABLE_PREFIX . "settinggroup ORDER BY displayorder ASC");
$print->page_start(sprintf($lang->string('Edit %1$s'), $lang->string('Setting')));
$print->form_start('options.php', 'ch_setting');
$print->form_hidden_field('varname', $setting['varname']);
$print->table_start();
$print->table_head(sprintf($lang->string('Add %1$s'), $lang->string('Setting')));
while ($group = $db->fetch_array($groups))
{
$print->list_item($group['groupname'], $group['shortname'], ($group['shortname'] == $setting['groupname']));
}
$print->row_list($lang->string('Group Name'), 'groupname');
$print->row_text($lang->string('Varname'), $setting['varname']);
$print->row_textarea($lang->string('Code Type'), 'code', $setting['code']);
$print->row_textarea($lang->string('Value'), 'value', $setting['value']);
$print->row_input($lang->string('Volatile'), 'volatile', $setting['volatile']);
$print->row_submit();
$print->table_end();
$print->form_end();
$print->page_end();
}
// ####################### EDIT SETTING ACTION #######################
if ($_POST['do'] == 'ch_setting')
{
$db->query("
UPDATE " . TABLE_PREFIX . "setting SET
groupname = '" . $kalens->input_escape('groupname') . "',
code = '" . $kalens->input_escape('code') . "',
value = '" . $kalens->input_escape('value') . "',
volatile = " . $kalens->input_clean('volatile', TYPE_UINT) . "
WHERE varname = '" . $kalens->input_escape('varname') . "'"
);
$print->redirect("options.php?do=settings&group=" . $kalens->in['groupname']);
}
// ########################## DELETE SETTING #########################
if ($_REQUEST['do'] == 'killsetting')
{
$db->query("DELETE FROM " . TABLE_PREFIX . "setting WHERE varname = '" . $kalens->input_escape('varname') . "'");
$print->redirect("options.php?do=settings&group=" . $kalens->in['group']);
}
// ############################ XML IMPEX ############################
if ($_REQUEST['do'] == 'io')
{
$print->page_start($lang->string('XML Import/Export'));
$print->form_start('options.php', 'ul', 'multipart/form-data');
$print->table_start();
$print->table_head($lang->string('XML Import/Export'));
$print->row_upload($lang->string('Upload File'), 'settingfile');
$print->row_submit();
$print->table_head($lang->string('Downoad File'));
$print->row_span("<strong>" . $lang->string('Downoad File') . ":</strong> <a href=\"options.php?do=dl\">" . $lang->string('Downoad File') . "</a>");
$print->table_end();
$print->page_end();
}
if ($_REQUEST['do'] == 'dl')
{
download_setting_xml('procal_settings.xml');
}
if ($_POST['do'] == 'ul')
{
$result = upload_setting_xml(@file_get_contents($_FILES['settingfile']['tmp_name']), $_FILES['settingfile']['name']);
if ($result !== true)
{
$print->error($result);
}
$print->redirect('options.php');
}
/*=====================================================================*\
|| ###################################################################
|| # $HeadURL$
|| # $Id$
|| ###################################################################
\*=====================================================================*/
?>