".__('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 ($row['key_'] == 'rss.config.plugins' or
$row['key_'] == 'rss.output.theme' or
$row['key_'] == 'rss.output.barefrontpage' or
$row['key_'] == 'rss.output.noreaditems' or
$row['key_'] == 'rss.output.cachedir' or
$row['key_'] == 'rss.config.showdevloglink' or
$row['key_'] == '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"
."Tags \n"
."\n"
."Your browser doesn't support javascript \n"
." \n"
." \n"
." \n"
." \n"
." \n"
."Attributes \n"
."\n"
."Your browser doesn't support javascript \n"
." \n"
." \n"
." "
. " "
." \n"
." \n"
;
$onclickaction = "pack(); return true";
//$preview = true;
echo "\n";
break;
case 'rss.output.lang':
$active_lang = getConfig('rss.output.lang');
echo "". __('Value for') ." $key: \n"
."\t\t\n";
$cntr = 0;
$value = "";
$langs = getLanguages();
foreach ($langs as $code => $info) {
if (isset($info['language'])) {
$l=$info['language'];
} else {
$l=$code;
}
echo "$l \n";
}
echo " \n";
break;
default:
// generic handling per type:
switch ($type) {
case 'string':
case 'num':
echo "". __('Value for') ." $key: \n"
." ";
break;
case 'boolean':
echo __('Value for') ." $key:
";
echo " \n"
."" . __('True') . " \n";
echo " \n"
."" . __('False') . " \n";
break;
case 'enum':
echo "". __('Value for') ." $key: \n"
."\t\t\n";
$arr = explode(',',$value);
$idx = array_pop($arr);
foreach ($arr as $i => $val) {
echo "$val \n";
}
echo " \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";
}
?>