summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--inc/config.php9
-rw-r--r--inc/functions.php2
-rw-r--r--inc/mod/config-editor.php47
-rw-r--r--inc/mod/pages.php2
4 files changed, 42 insertions, 18 deletions
diff --git a/inc/config.php b/inc/config.php
index 8d1c05d7..2c164ef5 100644
--- a/inc/config.php
+++ b/inc/config.php
@@ -355,8 +355,9 @@
// Always act as if the user had typed "noko" into the email field.
$config['always_noko'] = false;
- // Custom tripcodes. The below example makes a tripcode of "#test123" evaluate to "!HelloWorld".
+ // Example: Custom tripcodes. The below example makes a tripcode of "#test123" evaluate to "!HelloWorld".
// $config['custom_tripcode']['#test123'] = '!HelloWorld';
+ // Example: Custom secure tripcode.
// $config['custom_tripcode']['##securetrip'] = '!!somethingelse';
// Allow users to mark their image as a "spoiler" when posting. The thumbnail will be replaced with a
@@ -523,6 +524,7 @@
// Thumbnail to use for the non-image file uploads.
$config['file_icons']['default'] = 'file.png';
$config['file_icons']['zip'] = 'zip.png';
+ // Example: Custom thumbnail for certain file extension.
// $config['file_icons']['extension'] = 'some_file.png';
// Location of above images.
@@ -1199,7 +1201,8 @@
// array('127.0.0.1', 80)
// array('127.0.0.1', 80, 'example.org')
// );
- // Connection timeout, in seconds.
+
+ // Connection timeout for $config['purge'], in seconds.
$config['purge_timeout'] = 3;
// Additional mod.php?/ pages. Look in inc/mod/pages.php for help.
@@ -1210,7 +1213,7 @@
// // ...
// };
- // Add links to dashboard (will all be in a new "Other" category).
+ // Example: Add links to dashboard (will all be in a new "Other" category).
// $config['mod']['dashboard_links']['Something'] = '?/something';
// Remote servers. I'm not even sure if this code works anymore. It might. Haven't tried it in a while.
diff --git a/inc/functions.php b/inc/functions.php
index 4ca98dd6..dc814a2f 100644
--- a/inc/functions.php
+++ b/inc/functions.php
@@ -157,7 +157,7 @@ function loadConfig() {
if ($config['verbose_errors']) {
set_error_handler('verbose_error_handler');
error_reporting(E_ALL);
- ini_set('display_errors', false);
+ ini_set('display_errors', true);
ini_set('html_errors', false);
}
diff --git a/inc/mod/config-editor.php b/inc/mod/config-editor.php
index 484bd908..d6cad8f0 100644
--- a/inc/mod/config-editor.php
+++ b/inc/mod/config-editor.php
@@ -13,13 +13,14 @@ function config_vars() {
'default_temp' => false
);
$temp_comment = false;
+ $line_no = 0;
foreach ($config_file as $line) {
if ($temp_comment) {
$var['comment'][] = $temp_comment;
$temp_comment = false;
}
- if (preg_match('!^\s*// (.*)$!', $line, $matches)) {
+ if (preg_match('!^\s*// ([^$].*)$!', $line, $matches)) {
if ($var['default'] !== false) {
$line = '';
$temp_comment = $matches[1];
@@ -28,7 +29,10 @@ function config_vars() {
}
} else if ($var['default_temp'] !== false) {
$var['default_temp'] .= "\n" . $line;
- } elseif (preg_match('!^\s*\$config\[(.+?)\] = (.+?)(;( //.+)?)?$!', $line, $matches)) {
+ } elseif (preg_match('!^[\s/]*\$config\[(.+?)\] = (.+?)(;( //.+)?)?$!', $line, $matches)) {
+ if (preg_match('!^\s*//\s*!', $line)) {
+ $var['commented'] = true;
+ }
$var['name'] = explode('][', $matches[1]);
if (count($var['name']) == 1) {
$var['name'] = preg_replace('/^\'(.*)\'$/', '$1', end($var['name']));
@@ -43,20 +47,30 @@ function config_vars() {
$var['default_temp'] = $matches[2];
}
- if (trim($line) === '') {
- if ($var['name'] !== false) {
- if ($var['default_temp'])
- $var['default'] = $var['default_temp'];
-
- $temp = eval('return ' . $var['default'] . ';');
- if (!isset($temp))
+ if ($var['name'] !== false) {
+ if ($var['default_temp'])
+ $var['default'] = $var['default_temp'];
+ if ($var['default'][0] == '&')
+ continue; // This is just an alias.
+ if (!preg_match('/^array|\[\]|function/', $var['default']) && !preg_match('/^Example: /', trim(implode(' ', $var['comment'])))) {
+ $syntax_error = true;
+ $temp = eval('$syntax_error = false;return ' . $var['default'] . ';');
+ if ($syntax_error && $temp === false) {
+ error('Error parsing config.php (line ' . $line_no . ')!', null, $var);
+ } elseif (!isset($temp)) {
$var['type'] = 'unknown';
- else
+ } else {
$var['type'] = gettype($temp);
-
+ }
unset($var['default_temp']);
-
if (!is_array($var['name']) || (end($var['name']) != '' && !in_array(reset($var['name']), array('stylesheets')))) {
+ $already_exists = false;
+ foreach ($conf as $_var) {
+ if ($var['name'] == $_var['name'])
+ $already_exists = true;
+
+ }
+ if (!$already_exists)
$conf[] = $var;
}
}
@@ -65,9 +79,16 @@ function config_vars() {
'name' => false,
'comment' => array(),
'default' => false,
- 'default_temp' => false
+ 'default_temp' => false,
+ 'commented' => false
);
}
+
+ if (trim($line) === '') {
+ $var['comment'] = array();
+ }
+
+ $line_no++;
}
return $conf;
diff --git a/inc/mod/pages.php b/inc/mod/pages.php
index 5b74cc1c..6c46a84f 100644
--- a/inc/mod/pages.php
+++ b/inc/mod/pages.php
@@ -1975,7 +1975,7 @@ function mod_config() {
foreach ($var['name'] as $n)
$c = &$c[$n];
} else {
- $c = $config[$var['name']];
+ $c = @$config[$var['name']];
}
$var['value'] = $c;