".__('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 "\n"; } echo "\n" ."\t\n" ."\t\n" ."\t\n" ."\t\n" ."\n"; } function config_table_footer() { echo "
$caption
". __('Key') ."". __('Value') ."". __('Description') ."". __('Action') ."
"; } 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"; } 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"; config_default_form($key, $type, $default, CST_ADMIN_DOMAIN_CONFIG); 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"; $onclickaction = null; config_edit_form($key,$value,$default,$type,$desc,$export,$onclickaction); echo "

\n"; echo (isset($preview)?"\n":""); echo ""; echo "\n

\n"; echo "
\n" ."

\n\n" ."" ."

\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" ."\n" ."\n" ."\n" ."
\n" ."Attributes\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 "\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"; } ?>