diff --git a/inc/config.php b/inc/config.php index 7b8b1895..319bb8fd 100644 --- a/inc/config.php +++ b/inc/config.php @@ -68,18 +68,25 @@ // Deprecated, use 'log_system'. $config['syslog'] = false; - $config['log_system'] = []; - // Log all error messages and unauthorized login attempts. - // Can be "syslog", "error_log" (default), "file", "stderr" or "none". - $config['log_system']['type'] = 'error_log'; - // The application name used by the logging system. Defaults to "tinyboard" for backwards compatibility. - $config['log_system']['name'] = 'tinyboard'; - // Only relevant if 'log_system' is set to "syslog". If true, double print the logs also in stderr. - // Defaults to false. - $config['log_system']['syslog_stderr'] = false; - // Only relevant if "log_system" is set to `file`. Sets the file that vichan will log to. - // Defaults to '/var/log/vichan.log'. - $config['log_system']['file_path'] = '/var/log/vichan.log'; + $config['log_system'] = [ + /* + * Log all error messages and unauthorized login attempts. + * Can be "syslog", "error_log" (default), "file", "stderr" or "none". + */ + 'type' => 'error_log', + // The application name used by the logging system. Defaults to "tinyboard" for backwards compatibility. + 'name' => 'tinyboard', + /* + * Only relevant if 'log_system' is set to "syslog". If true, double print the logs also in stderr. Defaults to + * false. + */ + 'syslog_stderr' => false, + /* + * Only relevant if "log_system" is set to `file`. Sets the file that vichan will log to. Defaults to + * '/var/log/vichan.log'. + */ + 'file_path' => '/var/log/vichan.log', + ]; // Use `host` via shell_exec() to lookup hostnames, avoiding query timeouts. May not work on your system. // Requires safe_mode to be disabled. @@ -885,12 +892,14 @@ $config['ie_mime_type_detection'] = '/<(?:body|head|html|img|plaintext|pre|script|table|title|a href|channel|scriptlet)/i'; // Allowed image file extensions. - $config['allowed_ext'][] = 'jpg'; - $config['allowed_ext'][] = 'jpeg'; - $config['allowed_ext'][] = 'bmp'; - $config['allowed_ext'][] = 'gif'; - $config['allowed_ext'][] = 'png'; - $config['allowed_ext'][] = 'webp'; + $config['allowed_ext'] = [ + 'jpg', + 'jpeg', + 'bmp', + 'gif', + 'png', + 'webp' + ]; // $config['allowed_ext'][] = 'svg'; // Allowed extensions for OP. Inherits from the above setting if set to false. Otherwise, it overrides both allowed_ext and @@ -908,10 +917,12 @@ // }; // Thumbnail to use for the non-image file uploads. - $config['file_icons']['default'] = 'file.png'; - $config['file_icons']['zip'] = 'zip.png'; - $config['file_icons']['webm'] = 'video.png'; - $config['file_icons']['mp4'] = 'video.png'; + $config['file_icons'] = [ + 'default' => 'file.png', + 'zip' => 'zip.png', + 'webm' => 'video.png', + 'mp4' => 'video.png' + ]; // Example: Custom thumbnail for certain file extension. // $config['file_icons']['extension'] = 'some_file.png'; @@ -943,11 +954,13 @@ $config['show_filename'] = true; // WebM Settings - $config['webm']['use_ffmpeg'] = false; - $config['webm']['allow_audio'] = false; - $config['webm']['max_length'] = 120; - $config['webm']['ffmpeg_path'] = 'ffmpeg'; - $config['webm']['ffprobe_path'] = 'ffprobe'; + $config['webm'] = [ + 'use_ffmpeg' => false, + 'allow_audio' => false, + 'max_length' => 120, + 'ffmpeg_path' => 'ffmpeg', + 'ffprobe_path' => 'ffprobe' + ]; // Display image identification links for ImgOps, regex.info/exif, Google Images and iqdb. $config['image_identification'] = false; @@ -1056,8 +1069,11 @@ // Custom stylesheets available for the user to choose. See the "stylesheets/" folder for a list of // available stylesheets (or create your own). - $config['stylesheets']['Yotsuba B'] = ''; // Default; there is no additional/custom stylesheet for this. - $config['stylesheets']['Yotsuba'] = 'yotsuba.css'; + $config['stylesheets'] = [ + // Default; there is no additional/custom stylesheet for this. + 'Yotsuba B' => '', + 'Yotsuba' => 'yotsuba.css' + ]; // $config['stylesheets']['Futaba'] = 'futaba.css'; // $config['stylesheets']['Dark'] = 'dark.css'; @@ -1187,28 +1203,28 @@ // Custom embedding (YouTube, vimeo, etc.) // It's very important that you match the entire input (with ^ and $) or things will not work correctly. // Be careful when creating a new embed, because depending on the URL you end up exposing yourself to an XSS. - $config['embedding'] = array( - array( + $config['embedding'] = [ + [ '/^https?:\/\/(\w+\.)?youtube\.com\/watch\?v=([a-zA-Z0-9\-_]{10,11})?$/i', '' - ), - array( + ], + [ '/^https?:\/\/(\w+\.)?vimeo\.com\/(\d{2,10})(\?.+)?$/i', '' - ), - array( + ], + [ '/^https?:\/\/(\w+\.)?dailymotion\.com\/video\/([a-zA-Z0-9]{2,10})(_.+)?$/i', '' - ), - array( + ], + [ '/^https?:\/\/(\w+\.)?metacafe\.com\/watch\/(\d+)\/([a-zA-Z0-9_\-.]+)\/(\?[^\'"<>]+)?$/i', '' - ), - array( - '/^https?:\/\/(\w+\.)?vocaroo\.com\/([a-zA-Z0-9]{2,12})$/i', - '' - ) - ); + ], + [ + '/^https?:\/\/(\w+\.)?vocaroo\.com\/([a-zA-Z0-9]{2,12})$/i', + '' + ] + ]; // Embedding width and height. $config['embed_width'] = 300; @@ -1220,86 +1236,86 @@ * ==================== */ - // Error messages - $config['error']['bot'] = _('You look like a bot.'); - $config['error']['referer'] = _('Your browser sent an invalid or no HTTP referer.'); - $config['error']['toolong'] = _('The %s field was too long.'); - $config['error']['toolong_body'] = _('The body was too long.'); - $config['error']['tooshort_body'] = _('The body was too short or empty.'); - $config['error']['toomanylines'] = _('Your post contains too many lines!'); - $config['error']['noimage'] = _('You must upload an image.'); - $config['error']['toomanyimages'] = _('You have attempted to upload too many images!'); - $config['error']['nomove'] = _('The server failed to handle your upload.'); - $config['error']['fileext'] = _('Unsupported image format.'); - $config['error']['noboard'] = _('Invalid board!'); - $config['error']['nonexistant'] = _('Thread specified does not exist.'); - $config['error']['nopost'] = _('Post specified does not exist.'); - $config['error']['locked'] = _('Thread locked. You may not reply at this time.'); - $config['error']['reply_hard_limit'] = _('Thread has reached its maximum reply limit.'); - $config['error']['image_hard_limit'] = _('Thread has reached its maximum image limit.'); - $config['error']['nopost'] = _('You didn\'t make a post.'); - $config['error']['flood'] = _('Flood detected; Post discarded.'); - $config['error']['too_many_threads'] = _('The hourly thread limit has been reached. Please post in an existing thread.'); - $config['error']['spam'] = _('Your request looks automated; Post discarded.'); - $config['error']['simple_spam'] = _('You must answer the question to make a new thread. See the last field.'); - $config['error']['unoriginal'] = _('Unoriginal content!'); - $config['error']['muted'] = _('Unoriginal content! You have been muted for %d seconds.'); - $config['error']['youaremuted'] = _('You are muted! Expires in %d seconds.'); - $config['error']['dnsbl'] = _('Your IP address is listed in %s.'); - $config['error']['toomanylinks'] = _('Too many links; flood detected.'); - $config['error']['toomanycites'] = _('Too many cites; post discarded.'); - $config['error']['toomanycross'] = _('Too many cross-board links; post discarded.'); - $config['error']['nodelete'] = _('You didn\'t select anything to delete.'); - $config['error']['noreport'] = _('You didn\'t select anything to report.'); - $config['error']['toolongreport'] = _('The reason was too long.'); - $config['error']['toomanyreports'] = _('You can\'t report that many posts at once.'); - $config['error']['noban'] = _('That ban doesn\'t exist or is not for you.'); - $config['error']['tooshortban'] = _('You cannot appeal a ban of this length.'); - $config['error']['toolongappeal'] = _('The appeal was too long.'); - $config['error']['toomanyappeals'] = _('You cannot appeal this ban again.'); - $config['error']['pendingappeal'] = _('There is already a pending appeal for this ban.'); - $config['error']['invalidpassword'] = _('Wrong password…'); - $config['error']['invalidimg'] = _('Invalid image.'); - $config['error']['phpfileserror'] = _('Upload failure (file #%index%): Error code %code%. Refer to http://php.net/manual/en/features.file-upload.errors.php; post discarded.'); - $config['error']['unknownext'] = _('Unknown file extension.'); - $config['error']['filesize'] = _('Maximum file size: %maxsz% bytes
Your file\'s size: %filesz% bytes'); - $config['error']['maxsize'] = _('The file was too big.'); - $config['error']['genwebmerror'] = _('There was a problem processing your webm.'); - $config['error']['webmerror'] = _('There was a problem processing your webm.');//Is this error used anywhere ? - $config['error']['invalidwebm'] = _('Invalid webm uploaded.'); - $config['error']['webmhasaudio'] = _('The uploaded webm contains an audio or another type of additional stream.'); - $config['error']['webmtoolong'] =_('The uploaded webm is longer than %d seconds.'); - $config['error']['fileexists'] = _('That file already exists!'); - $config['error']['fileexistsinthread'] = _('That file already exists in this thread!'); - $config['error']['delete_too_soon'] = _('You\'ll have to wait another %s before deleting that.'); - $config['error']['delete_too_late'] = _('You cannot delete a post this old.'); - $config['error']['mime_exploit'] = _('MIME type detection XSS exploit (IE) detected; post discarded.'); - $config['error']['invalid_embed'] = _('Couldn\'t make sense of the URL of the video you tried to embed.'); - $config['error']['captcha'] = _('You seem to have mistyped the verification.'); - $config['error']['flag_undefined'] = _('The flag %s is undefined, your PHP version is too old!'); - $config['error']['flag_wrongtype'] = _('defined_flags_accumulate(): The flag %s is of the wrong type!'); - $config['error']['remote_io_error'] = _('IO error while interacting with a remote service.'); - $config['error']['local_io_error'] = _('IO error while interacting with a local resource or service.'); + $config['error'] = [ + // General error messages + 'bot' => _('You look like a bot.'), + 'referer' => _('Your browser sent an invalid or no HTTP referer.'), + 'toolong' => _('The %s field was too long.'), + 'toolong_body' => _('The body was too long.'), + 'tooshort_body' => _('The body was too short or empty.'), + 'toomanylines' => _('Your post contains too many lines!'), + 'noimage' => _('You must upload an image.'), + 'toomanyimages' => _('You have attempted to upload too many images!'), + 'nomove' => _('The server failed to handle your upload.'), + 'fileext' => _('Unsupported image format.'), + 'noboard' => _('Invalid board!'), + 'nonexistant' => _('Thread specified does not exist.'), + 'nopost' => _('Post specified does not exist.'), + 'locked' => _('Thread locked. You may not reply at this time.'), + 'reply_hard_limit' => _('Thread has reached its maximum reply limit.'), + 'image_hard_limit' => _('Thread has reached its maximum image limit.'), + 'nopost' => _('You didn\'t make a post.'), + 'flood' => _('Flood detected; Post discarded.'), + 'too_many_threads' => _('The hourly thread limit has been reached. Please post in an existing thread.'), + 'spam' => _('Your request looks automated; Post discarded.'), + 'simple_spam' => _('You must answer the question to make a new thread. See the last field.'), + 'unoriginal' => _('Unoriginal content!'), + 'muted' => _('Unoriginal content! You have been muted for %d seconds.'), + 'youaremuted' => _('You are muted! Expires in %d seconds.'), + 'dnsbl' => _('Your IP address is listed in %s.'), + 'toomanylinks' => _('Too many links; flood detected.'), + 'toomanycites' => _('Too many cites; post discarded.'), + 'toomanycross' => _('Too many cross-board links; post discarded.'), + 'nodelete' => _('You didn\'t select anything to delete.'), + 'noreport' => _('You didn\'t select anything to report.'), + 'toolongreport' => _('The reason was too long.'), + 'toomanyreports' => _('You can\'t report that many posts at once.'), + 'noban' => _('That ban doesn\'t exist or is not for you.'), + 'tooshortban' => _('You cannot appeal a ban of this length.'), + 'toolongappeal' => _('The appeal was too long.'), + 'toomanyappeals' => _('You cannot appeal this ban again.'), + 'pendingappeal' => _('There is already a pending appeal for this ban.'), + 'invalidpassword' => _('Wrong password…'), + 'invalidimg' => _('Invalid image.'), + 'phpfileserror' => _('Upload failure (file #%index%): Error code %code%. Refer to "http://php.net/manual/en/features.file-upload.errors.php">http://php.net/manual/en/features.file-upload.errors.php; post discarded.'), + 'unknownext' => _('Unknown file extension.'), + 'filesize' => _('Maximum file size: %maxsz% bytes
Your file\'s size: %filesz% bytes'), + 'maxsize' => _('The file was too big.'), + 'genwebmerror' => _('There was a problem processing your webm.'), + 'invalidwebm' => _('Invalid webm uploaded.'), + 'webmhasaudio' => _('The uploaded webm contains an audio or another type of additional stream.'), + 'webmtoolong' =>_('The uploaded webm is longer than %d seconds.'), + 'fileexists' => _('That file "%s">already exists!'), + 'fileexistsinthread' => _('That file "%s">already exists in this thread!'), + 'delete_too_soon' => _('You\'ll have to wait another %s before deleting that.'), + 'delete_too_late' => _('You cannot delete a post this old.'), + 'mime_exploit' => _('MIME type detection XSS exploit (IE) detected; post discarded.'), + 'invalid_embed' => _('Couldn\'t make sense of the URL of the video you tried to embed.'), + 'captcha' => _('You seem to have mistyped the verification.'), + 'flag_undefined' => _('The flag %s is undefined, your PHP version is too old!'), + 'flag_wrongtype' => _('defined_flags_accumulate(): The flag %s is of the wrong type!'), + 'remote_io_error' => _('IO error while interacting with a remote service.'), + 'local_io_error' => _('IO error while interacting with a local resource or service.'), - - // Moderator errors - $config['error']['toomanyunban'] = _('You are only allowed to unban %s users at a time. You tried to unban %u users.'); - $config['error']['invalid'] = _('Invalid username and/or password.'); - $config['error']['insecure'] = _('Login on insecure connections is disabled.'); - $config['error']['notamod'] = _('You are not a mod…'); - $config['error']['invalidafter'] = _('Invalid username and/or password. Your user may have been deleted or changed.'); - $config['error']['malformed'] = _('Invalid/malformed cookies.'); - $config['error']['missedafield'] = _('Your browser didn\'t submit an input when it should have.'); - $config['error']['required'] = _('The %s field is required.'); - $config['error']['invalidfield'] = _('The %s field was invalid.'); - $config['error']['boardexists'] = _('There is already a %s board.'); - $config['error']['noaccess'] = _('You don\'t have permission to do that.'); - $config['error']['invalidpost'] = _('That post doesn\'t exist…'); - $config['error']['404'] = _('Page not found.'); - $config['error']['modexists'] = _('That mod already exists!'); - $config['error']['invalidtheme'] = _('That theme doesn\'t exist!'); - $config['error']['csrf'] = _('Invalid security token! Please go back and try again.'); - $config['error']['badsyntax'] = _('Your code contained PHP syntax errors. Please go back and correct them. PHP says: '); + // Moderator errors + 'toomanyunban' => _('You are only allowed to unban %s users at a time. You tried to unban %u users.'), + 'invalid' => _('Invalid username and/or password.'), + 'insecure' => _('Login on insecure connections is disabled.'), + 'notamod' => _('You are not a mod…'), + 'invalidafter' => _('Invalid username and/or password. Your user may have been deleted or changed.'), + 'malformed' => _('Invalid/malformed cookies.'), + 'missedafield' => _('Your browser didn\'t submit an input when it should have.'), + 'required' => _('The %s field is required.'), + 'invalidfield' => _('The %s field was invalid.'), + 'boardexists' => _('There is already a %s board.'), + 'noaccess' => _('You don\'t have permission to do that.'), + 'invalidpost' => _('That post doesn\'t exist…'), + '404' => _('Page not found.'), + 'modexists' => _('That mod already exists!'), + 'invalidtheme' => _('That theme doesn\'t exist!'), + 'csrf' => _('Invalid security token! Please go back and try again.'), + 'badsyntax' => _('Your code contained PHP syntax errors. Please go back and correct them. PHP says: ') + ]; /* * ========================= @@ -1321,8 +1337,8 @@ // The scheme and domain. This is used to get the site's absolute URL (eg. for image identification links). // If you use the CLI tools, it would be wise to override this setting. - $config['domain'] = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') ? 'https://' : 'http://'; - $config['domain'] .= isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : 'localhost'; + $config['domain'] = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') ? 'https://' : 'http://') + . (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : 'localhost'); // If for some reason the folders and static HTML index files aren't in the current working direcotry, // enter the directory path here. Otherwise, keep it false. @@ -1402,22 +1418,26 @@ // Board directory, followed by a forward-slash (/). $config['board_path'] = '%s/'; // Misc directories. - $config['dir']['img'] = 'src/'; - $config['dir']['thumb'] = 'thumb/'; - $config['dir']['res'] = 'res/'; + $config['dir'] = [ + 'img' => 'src/', + 'thumb' => 'thumb/', + 'res' => 'res/' + ]; // For load balancing, having a seperate server (and domain/subdomain) for serving static content is // possible. This can either be a directory or a URL. Defaults to $config['root'] . 'static/'. // $config['dir']['static'] = 'http://static.example.org/'; - // Where to store the .html templates. This folder and the template files must exist. - $config['dir']['template'] = getcwd() . '/templates'; - // Location of vichan "themes". - $config['dir']['themes'] = getcwd() . '/templates/themes'; - // Same as above, but a URI (accessable by web interface). - $config['dir']['themes_uri'] = 'templates/themes'; - // Home directory. Used by themes. - $config['dir']['home'] = ''; + $config['dir'] = [ + // Where to store the .html templates. This folder and the template files must exist. + 'template' => getcwd() . '/templates', + // Location of vichan "themes". + 'themes' => getcwd() . '/templates/themes', + // Same as above, but a URI (accessable by web interface). + 'themes_uri' => 'templates/themes', + // Home directory. Used by themes. + 'home' => '' + ]; // Location of a blank 1x1 gif file. Only used when country_flags_condensed is enabled // $config['image_blank'] = 'static/blank.gif'; @@ -1490,13 +1510,19 @@ // 5. enable smart_build_helper (see below) // 6. edit the strategies (see inc/functions.php for the builtin ones). You can use lambdas. I will test // various ones and include one that works best for me. - $config['generation_strategies'] = array(); - // Add a sane strategy. It forces to immediately generate a page user is about to land on. Otherwise, - // it has no opinion, so it needs a fallback strategy. - $config['generation_strategies'][] = 'strategy_sane'; - // Add an immediate catch-all strategy. This is the default function of imageboards: generate all pages - // on post time. - $config['generation_strategies'][] = 'strategy_immediate'; + $config['generation_strategies'] = [ + /* + * Add a sane strategy. It forces to immediately generate a page user is about to land on. Otherwise, + * it has no opinion, so it needs a fallback strategy. + */ + 'strategy_sane', + /* + * Add an immediate catch-all strategy. This is the default function of imageboards: generate all pages + * on post time. + */ + 'strategy_immediate', + ]; + // NOT RECOMMENDED: Instead of an all-"immediate" strategy, you can use an all-"build_on_load" one (used // to be initialized using $config['smart_build']; ) for all pages instead of those to be build // immediately. A rebuild done in this mode should remove all your static files @@ -1513,7 +1539,7 @@ $config['page_404'] = '/404.html'; // Extra controller entrypoints. Controller is used only by smart_build and advanced build. - $config['controller_entrypoints'] = array(); + $config['controller_entrypoints'] = []; /* * ==================== @@ -1521,33 +1547,33 @@ * ==================== */ - // Limit how many bans can be removed via the ban list. Set to false (or zero) for no limit. - $config['mod']['unban_limit'] = false; - - // Whether or not to lock moderator sessions to IP addresses. This makes cookie theft ineffective. - $config['mod']['lock_ip'] = true; - - // The page that is first shown when a moderator logs in. Defaults to the dashboard (?/). - $config['mod']['default'] = '/'; - // Mod links (full HTML). - $config['mod']['link_delete'] = '[D]'; - $config['mod']['link_ban'] = '[B]'; - $config['mod']['link_bandelete'] = '[B&D]'; - $config['mod']['link_deletefile'] = '[F]'; - $config['mod']['link_spoilerimage'] = '[S]'; - $config['mod']['link_deletebyip'] = '[D+]'; - $config['mod']['link_deletebyip_global'] = '[D++]'; - $config['mod']['link_sticky'] = '[Sticky]'; - $config['mod']['link_desticky'] = '[-Sticky]'; - $config['mod']['link_lock'] = '[Lock]'; - $config['mod']['link_unlock'] = '[-Lock]'; - $config['mod']['link_bumplock'] = '[Sage]'; - $config['mod']['link_bumpunlock'] = '[-Sage]'; - $config['mod']['link_editpost'] = '[Edit]'; - $config['mod']['link_move'] = '[Move]'; - $config['mod']['link_cycle'] = '[Cycle]'; - $config['mod']['link_uncycle'] = '[-Cycle]'; + $config['mod'] = [ + // Limit how many bans can be removed via the ban list. Set to false (or zero) for no limit. + 'unban_limit' => false, + // Whether or not to lock moderator sessions to IP addresses. This makes cookie theft less effective. + 'lock_ip' => true, + // The page that is first shown when a moderator logs in. Defaults to the dashboard (?/). + 'default' => '/', + + 'link_delete' => '[D]', + 'link_ban' => '[B]', + 'link_bandelete' => '[&D]', + 'link_deletefile' => '[F]', + 'link_spoilerimage' => '[S]', + 'link_deletebyip' => '[D+]', + 'link_deletebyip_global' => '[D++]', + 'link_sticky' => '[Sticky]', + 'link_desticky' => '[-Sticky]', + 'link_lock' => '[Lock]', + 'link_unlock' => '[-Lock]', + 'link_bumplock' => '[Sage]', + 'link_bumpunlock' => '[-Sage]', + 'link_editpost' => '[Edit]', + 'link_move' => '[Move]', + 'link_cycle' => '[Cycle]', + 'link_uncycle' => '[-Cycle]' + ]; // Moderator capcodes. $config['capcode'] = ' ## %s'; @@ -1572,58 +1598,59 @@ // Enable the moving of single replies $config['move_replies'] = false; - // Do DNS lookups on IP addresses to get their hostname for the moderator IP pages (?/IP/x.x.x.x). - $config['mod']['dns_lookup'] = true; - // How many recent posts, per board, to show in ?/IP/x.x.x.x. - $config['mod']['ip_recentposts'] = 5; + $config['mod'] = [ + // Do DNS lookups on IP addresses to get their hostname for the moderator IP pages (?/IP/x.x.x.x). + 'dns_lookup' => true, + // How many recent posts, per board, to show in ?/IP/x.x.x.x. + 'ip_recentposts' => 5, + // Number of posts to display on the reports page. + 'recent_reports' => 10, + // Number of actions to show per page in the moderation log. + 'modlog_page' => 350, + // Number of bans to show per page in the ban list. + 'banlist_page'=> 350, + // Number of news entries to display per page. + 'news_page' => 40, + // Number of results to display per page. + 'search_page' => 200, + // Number of entries to show per page in the moderator noticeboard. + 'noticeboard_page' => 50, + // Number of entries to summarize and display on the dashboard. + 'noticeboard_dashboard' => 5, - // Number of posts to display on the reports page. - $config['mod']['recent_reports'] = 10; - // Number of actions to show per page in the moderation log. - $config['mod']['modlog_page'] = 350; - // Number of bans to show per page in the ban list. - $config['mod']['banlist_page'] = 350; - // Number of news entries to display per page. - $config['mod']['news_page'] = 40; - // Number of results to display per page. - $config['mod']['search_page'] = 200; - // Number of entries to show per page in the moderator noticeboard. - $config['mod']['noticeboard_page'] = 50; - // Number of entries to summarize and display on the dashboard. - $config['mod']['noticeboard_dashboard'] = 5; + // Check public ban message by default. + 'check_ban_message' => false, + // Default public ban message. In public ban messages, %length% is replaced with "for x days" or + // "permanently" (with %LENGTH% being the uppercase equivalent). + 'default_ban_message' => _('USER WAS BANNED FOR THIS POST'), + // $config['mod']['default_ban_message'] = 'USER WAS BANNED %LENGTH% FOR THIS POST'; + // HTML to append to post bodies for public bans messages (where "%s" is the message). + 'ban_message' => '(%s)', - // Check public ban message by default. - $config['mod']['check_ban_message'] = false; - // Default public ban message. In public ban messages, %length% is replaced with "for x days" or - // "permanently" (with %LENGTH% being the uppercase equivalent). - $config['mod']['default_ban_message'] = _('USER WAS BANNED FOR THIS POST'); - // $config['mod']['default_ban_message'] = 'USER WAS BANNED %LENGTH% FOR THIS POST'; - // HTML to append to post bodies for public bans messages (where "%s" is the message). - $config['mod']['ban_message'] = '(%s)'; + // When moving a thread to another board and choosing to keep a "shadow thread", an automated post (with + // a capcode) will be made, linking to the new location for the thread. "%s" will be replaced with a + // standard cross-board post citation (>>>/board/xxx) + 'shadow_mesage' => _('Moved to %s.'), + // Capcode to use when posting the above message. + 'shadow_capcode' => 'Mod', + // Name to use when posting the above message. If false, $config['anonymous'] will be used. + 'shadow_name' => false, - // When moving a thread to another board and choosing to keep a "shadow thread", an automated post (with - // a capcode) will be made, linking to the new location for the thread. "%s" will be replaced with a - // standard cross-board post citation (>>>/board/xxx) - $config['mod']['shadow_mesage'] = _('Moved to %s.'); - // Capcode to use when posting the above message. - $config['mod']['shadow_capcode'] = 'Mod'; - // Name to use when posting the above message. If false, $config['anonymous'] will be used. - $config['mod']['shadow_name'] = false; + // PHP time limit for ?/rebuild. A value of 0 should cause PHP to wait indefinitely. + 'rebuild_timelimit' => 0, - // PHP time limit for ?/rebuild. A value of 0 should cause PHP to wait indefinitely. - $config['mod']['rebuild_timelimit'] = 0; + // PM snippet (for ?/inbox) length in characters. + 'snippet_length' => 75, - // PM snippet (for ?/inbox) length in characters. - $config['mod']['snippet_length'] = 75; + // Edit raw HTML in posts by default. + 'raw_html_default' => false, - // Edit raw HTML in posts by default. - $config['mod']['raw_html_default'] = false; + // Automatically dismiss all reports regarding a thread when it is locked. + 'dismiss_reports_on_lock' => true, - // Automatically dismiss all reports regarding a thread when it is locked. - $config['mod']['dismiss_reports_on_lock'] = true; - - // Replace ?/config with a simple text editor for editing inc/instance-config.php. - $config['mod']['config_editor_php'] = false; + // Replace ?/config with a simple text editor for editing inc/instance-config.php. + 'config_editor_php' => false + ]; /* * ==================== @@ -1634,13 +1661,13 @@ // Probably best not to change this unless you are smart enough to figure out what you're doing. If you // decide to change it, remember that it is impossible to redefinite/overwrite groups; you may only add // new ones. - $config['mod']['groups'] = array( + $config['mod']['groups'] = [ 10 => 'Janitor', 20 => 'Mod', 30 => 'Admin', // 98 => 'God', 99 => 'Disabled' - ); + ]; // If you add stuff to the above, you'll need to call this function immediately after. define_groups(); @@ -1650,11 +1677,11 @@ // define_groups(); // Capcode permissions. - $config['mod']['capcode'] = array( - // JANITOR => array('Janitor'), - MOD => array('Mod'), + $config['mod']['capcode'] = [ + // JANITOR => [ 'Janitor' ], + MOD => [ 'Mod' ], ADMIN => true - ); + ]; // Example: Allow mods to post with "## Moderator" as well // $config['mod']['capcode'][MOD][] = 'Moderator'; @@ -1856,23 +1883,20 @@ */ // Public post search settings - $config['search'] = array(); - - // Enable the search form - $config['search']['enable'] = false; + $config['search'] = [ + // Enable the search form + 'enable' => false, + // Maximal number of queries per IP address per minutes + 'queries_per_minutes' => [ 15, 2 ], + // Global maximal number of queries per minutes + 'queries_per_minutes_all' => [ 50, 2 ], + // Limit of search results + 'search_limit' => 100, + ]; // Enable search in the board index. $config['board_search'] = false; - // Maximal number of queries per IP address per minutes - $config['search']['queries_per_minutes'] = Array(15, 2); - - // Global maximal number of queries per minutes - $config['search']['queries_per_minutes_all'] = Array(50, 2); - - // Limit of search results - $config['search']['search_limit'] = 100; - // Boards for searching //$config['search']['boards'] = array('a', 'b', 'c', 'd', 'e'); @@ -1927,31 +1951,33 @@ * state. Please join #nntpchan on Rizon in order to peer with someone. */ - $config['nntpchan'] = array(); - - // Enable NNTPChan integration - $config['nntpchan']['enabled'] = false; - - // NNTP server - $config['nntpchan']['server'] = "localhost:1119"; - - // Global dispatch array. Add your boards to it to enable them. Please make - // sure that this setting is set in a global context. - $config['nntpchan']['dispatch'] = array(); // 'overchan.test' => 'test' - - // Trusted peer - an IP address of your NNTPChan instance. This peer will have - // increased capabilities, eg.: will evade spamfilter. - $config['nntpchan']['trusted_peer'] = '127.0.0.1'; - - // Salt for message ID generation. Keep it long and secure. - $config['nntpchan']['salt'] = 'change_me+please'; - - // A local message ID domain. Make sure to change it. - $config['nntpchan']['domain'] = 'example.vichan.net'; - - // An NNTPChan group name. - // Please set this setting in your board/config.php, not globally. - $config['nntpchan']['group'] = false; // eg. 'overchan.test' + $config['nntpchan'] = [ + // Enable NNTPChan integration + 'enabled'=> false, + // NNTP server + 'server' => "localhost:1119", + /* + * Global dispatch array. Add your boards to it to enable them. Please make + * sure that this setting is set in a global context. + */ + 'dispatch' => [ + // 'overchan.test' => 'test' + ], + /* + * Trusted peer - an IP address of your NNTPChan instance. This peer will have increased capabilities, eg.: will + * evade spamfilter. + */ + 'trusted_peer' => '127.0.0.1', + // Salt for message ID generation. Keep it long and secure. + 'salt' => 'change_me+please', + // A local message ID domain. Make sure to change it. + 'domain' => 'example.vichan.net', + /* + * An NNTPChan group name. + * Please set this setting in your board/config.php, not globally. + */ + 'group' => false, // eg. 'overchan.test' + ];