".__('Configuration:')."\n"
."
\n";
config_table_header();
$sql = "select * from " .getTable("config") ." where key_ like
'rss.%' order by key_ asc";
$res = rss_query($sql);
$cntr = 0;
while ($row = rss_fetch_assoc($res)) {
// Don't show old/moved config keys in the main config list
if (in_array($row['key_'], array(
'rss.config.plugins',
'rss.output.theme',
'rss.output.barefrontpage',
'rss.output.noreaditems',
'rss.output.cachedir',
'rss.output.showdevloglink',
'rss.output.numitemsonpage'))) {
continue;
}
$class_ = (($cntr++ % 2 == 0)?"even":"odd");
config_table_row($row, $class_, CST_ADMIN_DOMAIN_CONFIG);
}
config_table_footer();
echo "
\n";
}
function config_table_header($caption=null) {
echo "\n";
if ($caption !== null) {
echo "$caption\n";
}
echo "\n"
."\t| ". __('Key') ." | \n"
."\t". __('Value') ." | \n"
."\t". __('Description') ." | \n"
."\t". __('Action') ." | \n"
."
\n";
}
function config_table_footer() {
echo "
";
}
function config_table_row($row, $class_, $adminDomain, $extraLinkText='') {
$value = real_strip_slashes($row['value_']);
echo "\n"
."\t| ".$row['key_']." | \n";
echo "\t";
switch($row['key_']) {
//specific handling per key
case 'rss.config.dateformat':
echo $value
. " ("
. preg_replace('/ /',' ',date($value))
.")";
break;
case 'rss.input.allowed':
$arr = unserialize($value);
echo admin_kses_to_html($arr);
break;
case 'rss.config.plugins':
case 'rss.output.theme':
continue;
break;
case 'rss.output.lang':
$arr = getLanguages();
if (isset($arr[getConfig('rss.output.lang')]['language'])) {
echo $arr[getConfig('rss.output.lang')]['language'];
} else {
echo getConfig('rss.output.lang');
}
break;
case 'rss.config.tzoffset':
echo $value
. " (your local time: "
. preg_replace('/ /',' ',date("g:i A",mktime()+$value*3600))
.")";
break;
default:
// generic handling per type:
switch ($row['type_']) {
case 'string':
case 'num':
case 'boolean':
default:
echo $value;
break;
case 'enum':
$arr = explode(',',$value);
echo admin_enum_to_html($arr);
break;
case 'array':
$arr = unserialize($value);
echo "\n";
foreach($arr as $av) {
echo "\t- $av
\n";
}
echo " \n";
}
break;
}
echo " | \n";
echo "\t" .
// source: http://ch2.php.net/manual/en/function.preg-replace.php
preg_replace('/\s(\w+:\/\/)(\S+)/',
' \\1\\2',
$row['desc_'])
. " | \n";
echo "\t"
."" . __('edit')
."";
if ($row['value_'] != $row['default_'] && $row['key_'] != 'rss.config.plugins') {
echo "|"
."" . __('default')
."";
}
echo " | \n"
."
\n";
}
function config_admin() {
$ret__ = CST_ADMIN_DOMAIN_CONFIG;
if (isset($_REQUEST[CST_ADMIN_METAACTION])) {
$action = $_REQUEST[CST_ADMIN_METAACTION];
} else {
$action = $_REQUEST['action'];
}
switch ($action) {
case CST_ADMIN_DEFAULT_ACTION:
case 'CST_ADMIN_DEFAULT_ACTION':
if (!array_key_exists('key',$_REQUEST)) {
rss_error(__('Invalid config key specified.'), RSS_ERROR_ERROR,true);
break;
}
$key = sanitize($_REQUEST['key'],RSS_SANITIZER_NO_SPACES|RSS_SANITIZER_SIMPLE_SQL);
$res = rss_query("select value_,default_,type_ from " .getTable('config') . " where key_='$key'");
list($value,$default,$type) = rss_fetch_row($res);
$value = real_strip_slashes($value);
$default = real_strip_slashes($default);
if ($value == $default) {
rss_error(__("The value for '$key' is the same as its default value!"), RSS_ERROR_ERROR,true);
break;
}
if (array_key_exists(CST_ADMIN_CONFIRMED,$_POST) && $_POST[CST_ADMIN_CONFIRMED] == __('Yes')) {
rss_query("update " . getTable('config') ." set value_=default_ where key_='$key'" );
rss_invalidate_cache();
}
elseif (array_key_exists(CST_ADMIN_CONFIRMED,$_REQUEST) && $_REQUEST[CST_ADMIN_CONFIRMED] == __('No')) {
//nop
}
else {
echo "\n";
$ret = CST_ADMIN_DOMAIN_NONE;
}
break;
case CST_ADMIN_EDIT_ACTION:
case 'CST_ADMIN_EDIT_ACTION':
$key_ = sanitize($_REQUEST['key'],RSS_SANITIZER_NO_SPACES|RSS_SANITIZER_SIMPLE_SQL);
$res = rss_query("select * from ". getTable('config') . " where key_ ='$key_'");
list($key,$value,$default,$type,$desc,$export) = rss_fetch_row($res);
echo "\n";
echo "\n\n
Edit '$key'
\n";
echo "
\n";
echo "
\n"
."\n\n
\n";
$ret__ = CST_ADMIN_DOMAIN_NONE;
break;
case __('Preview'):
case 'ACT_ADMIN_PREVIEW_CHANGES':
rss_error('fixme: preview not yet implemented', RSS_ERROR_ERROR,true);
break;
case __('Submit Changes'):
case 'ACT_ADMIN_SUBMIT_CHANGES':
$key = sanitize($_POST['key'],RSS_SANITIZER_NO_SPACES|RSS_SANITIZER_SIMPLE_SQL);
$type = sanitize($_POST['type'],RSS_SANITIZER_CHARACTERS);
$value = sanitize($_POST['value'], RSS_SANITIZER_SIMPLE_SQL);
// sanitizine routines for values
switch ($key) {
case 'rss.output.title':
$value = strip_tags($value);
break;
case 'rss.config.robotsmeta':
$value = preg_replace('#[^a-zA-Z,\s]#','',$value);
break;
}
switch ($key) {
case 'rss.input.allowed':
$ret = array();
$tmp = explode(' ',$value);
foreach ($tmp as $key__) {
if (preg_match('|^[a-zA-Z]+$|',$key__)) {
$ret[$key__] = array();
} else {
$tmp2 = array();
$attrs = explode(',',$key__);
$key__ = array_shift($attrs);
foreach($attrs as $attr) {
$tmp2[$attr] = 1;
}
$ret[$key__] = $tmp2;
}
}
$sql = "update " . getTable('config') . " set value_='"
.serialize($ret)
."' where key_='$key'";
break;
case 'rss.output.lang':
$langs = getLanguages();
$codes = array_keys($langs);
$out_val = implode(',',$codes);
$cntr = 0;
$idx = "0";
foreach($codes as $code) {
if ($code == $value) {
$idx = $cntr;
}
$cntr++;
}
$out_val .= ",$idx";
$sql = "update " . getTable('config') . " set value_='$out_val' where key_='$key'";
break;
default:
switch($type) {
case 'string':
$sql = "update " . getTable('config') . " set value_='$value' where key_='$key'";
break;
case 'num':
if (!is_numeric($value)) {
rss_error(__("Oops, I was expecting a numeric value, got '$value' instead!"), RSS_ERROR_ERROR,true);
break;
}
$sql = "update " . getTable('config') . " set value_='$value' where key_='$key'";
break;
case 'boolean':
if ($value != __('True') && $value != __('False')) {
rss_error(__("Oops, invalid value for $key : $value"), RSS_ERROR_ERROR,true);
break;
}
$sql = "update " . getTable('config') . " set value_='"
.($value == __('True') ? 'true':'false') ."'"
." where key_='$key'";
break;
case 'enum':
$res = rss_query( "select value_ from " . getTable('config') . " where key_='$key'" );
list($oldvalue) = rss_fetch_row($res);
if (strstr($oldvalue,$value) === FALSE) {
rss_error(__("Oops, invalid value '$value' for this config key"), RSS_ERROR_ERROR,true);
break;
}
$arr = explode(',',$oldvalue);
$idx = array_pop($arr);
$newkey = -1;
foreach ($arr as $i => $val) {
if ($val == $value) {
$newkey = $i;
}
}
reset($arr);
if ($newkey > -1) {
array_push($arr, $newkey);
$sql = "update " . getTable('config') . " set value_='"
.implode(',',$arr) ."'"
." where key_='$key'";
} else {
rss_error(__("Oops, invalid value '$value' for this config key"), RSS_ERROR_ERROR,true);
}
break;
default:
rss_error(__('Ooops, unknown config type: ') . $type, RSS_ERROR_ERROR,true);
//var_dump($_REQUEST);
break;
}
}
if (isset($sql)) {
rss_query( $sql );
rss_invalidate_cache();
}
break;
default:
break;
}
return $ret__;
}
function config_edit_form($key,$value,$default,$type,$desc,$export, & $onclickaction) {
$value = real_strip_slashes($value);
echo "\n"
."\n"
."\n"
.preg_replace('/\s(\w+:\/\/)(\S+)/',
' \\1\\2',
$desc)
."\n
\n";
echo "\n";
switch($key) {
case 'rss.input.allowed':
$arr = unserialize($value);
echo "
\n"
."\n"
."\n"
;
$onclickaction = "pack(); return true";
//$preview = true;
echo "\n";
break;
case 'rss.output.lang':
$active_lang = getConfig('rss.output.lang');
echo "\n"
."\t\t\n";
break;
default:
// generic handling per type:
switch ($type) {
case 'string':
case 'num':
echo "\n"
."";
break;
case 'boolean':
echo __('Value for') ." $key:
";
echo "\n"
."\n";
echo "\n"
."\n";
break;
case 'enum':
echo "\n"
."\t\t\n";
break;
}
}
echo "
\n";
}
function config_default_form($key, $type, $default, $adminDomain) {
switch ($type) {
case 'enum':
$html_default = admin_enum_to_html(explode(',',$default));
break;
case 'array':
$html_default = admin_kses_to_html(unserialize($default));
break;
default:
$html_default = $default;
break;
}
echo "";
printf(__("Are you sure you wish to reset the value for %s to its default '%s'?"),$key,$html_default);
echo "
\n"
."\n"
."\n"
."\n"
."\n"
."\n"
."
\n";
}
function sysinfo() {
echo "\n";
echo "PHP version: ".phpversion()."\n\n";
if (function_exists("php_uname")) {
echo "System: " . php_uname() ."\n\n";
}
echo "Loaded PHP extensions:\n";
foreach (get_loaded_extensions() as $ext) {
echo " - $ext: (".phpversion($ext).")\n";
}
echo "\nPHP Settings:\n";
foreach (ini_get_all() as $key => $val) {
echo " - $key:\n\tglobal:".$val['global_value']."\n\tlocal: ".$val['local_value']."\n\n";
}
if (function_exists("apache_get_modules")) {
echo "\nApache modules:\n";
foreach (apache_get_modules() as $mod) {
echo " - $mod \n";
}
}
echo "\n";
}
?>