Configuration


Config parameters for WackoWiki R6.3


Default values are set in the config_defaults.php file in the config/ folder.

1. Primary

generated by installer


config/config.php

PHP
<?php

$wacko_config = [
	'base_url' => 'https://example.com/wiki/',
	'db_charset' => 'utf8mb4',
	'db_collation' => 'utf8mb4_unicode_520_ci',
	'db_driver' => 'mysql_pdo',
	'db_engine' => 'InnoDB',
	'db_vendor' => 'mariadb',
	'db_host' => 'localhost',
	'db_port' => '3306',
	'db_name' => 'wiki',
	'db_user' => 'db_user_name',
	'db_password' => '',
	'sql_mode' => '0',
	'table_prefix' => 'wacko_',
	'system_seed' => 'c-&P[(13N#Nj62l*mYE4',
	'hashid_seed' => '6MH]g{Fpa}#Ck~I22^X#',
	'recovery_password' => '',
	'wacko_version' => '6.3.1',
];

2. Secondary

stored in config table


Changes in the secondary config can be done via

  1. editing the config_value in the config table via phpMyAdmin.
    • Don't forget to delete the _cache/config/config.php afterwards, e.g. {{admincache}}
  2. the Admin panel

The default column shows the built-in default value from config/config_defaults.php (used when the key is missing in the table).
The values of a running wiki may differ — the most common deviations are listed under the table.

Keys marked with [!] are not inserted into the table by setup/_insert_config.php; until they are written (Admin Panel or manually) the value from config/config_defaults.php is used.


The maintenance keys (maint_last_*) and xml_sitemap_update are updated by the system itself and should not be edited manually.


no config_name default description / values
1. abuse_email (= admin_email) address for requests of urgent matters; may coincide with admin_email
2. account_page Account (installer: Settings) page with the user settings, action {{usersettings}}
3. acl_lock 0 overwrites the ACLs of all pages with read only (1 = on)
4. admin_email (installer) e-mail of the site administrator; used for the new user notifications
5. admin_name (installer) WikiName of the administrator of the site
6. allow_email_reuse 0 several users may register with the same e-mail address
7. allow_intercom 0 allow personal messages to the e-mail address of the recipient
8. allow_license_per_page 0 the page owner may choose the license via the page properties
9. allow_massemail 0 only users who permitted it may be contacted with mass e-mails
10. allow_persistent_cookie 1 persistent "remember me" cookies
11. allow_rawhtml 1 allows arbitrary HTML code (potentially unsafe on an open site)
12. allow_registration 0 open the registration via {{registration}}
13. allow_themes 0 allowed themes; 0 = all themes, otherwise a list, e.g. default,coffee
14. allow_themes_per_page 0 the theme may be chosen per page by the page owner
15. allow_x11colors 0 extends the colors for ??(color) background?? and !!(color) text!!
16. allowed_email_domains comma separated list of the allowed e-mail domains; empty = all
17. allowed_languages 0 comma separated list of the allowed languages; 0 = all
18. american_date 1 uses the American date format (MM/dd/y) for English
19. anonymize_ip 0 anonymize the IP addresses (pages, revisions, referrers)
20. ap_failed_login_count 0 failed login attempts in the Admin Panel before it is blocked
21. ap_max_login_attempts 4 maximum number of the login attempts in the Admin Panel
22. approve_new_user 0 new users must be approved by an administrator before the first login
23. attachments_handler 2 0 = off, 1 = on, 2 = on for registered users
24. autosubscribe 1 the author of a page is subscribed to its notifications automatically
25. cache 0 caches the rendered pages in _cache/page (valid for guests only)
26. cache_sql 0 caches the results of certain SQL queries in _cache/query
27. cache_sql_ttl 600 lifetime of the cached SQL results in seconds (max. recommended 1200)
28. cache_ttl 600 lifetime of the cached pages in seconds
29. canonical 0 0 = relative URLs, 1 = all links are created as absolute URLs
30. captcha_edit_page 1 captcha for editing pages (unregistered users)
31. captcha_new_comment 1 captcha for new comments (unregistered users)
32. captcha_new_page 1 captcha for new pages (unregistered users)
33. captcha_registration 1 captcha for the registration form
34. categories_handler 1 0 = administrators, 1 = the owner of the page, 2 = every registered user
35. category_page Category page with the list of the categorized pages, action {{category}}
36. changes_page (installer: RecentChanges) page with the list of the last modified pages, action {{changes}}
37. check_mimetype 1 rejects the files with a MIME type that the browser may be tricked into
38. comment_delay 30 minimum delay in seconds between two comments of the same user
39. comments_count 10 number of comments shown per page
40. comments_offset 0 0 = first comment page, 1 = last comment page
41. comments_page (installer: RecentlyCommented) page with the list of the recent comments, action {{commented}}
42. create_thumbnail 0 create thumbnails in all possible situations
43. csp 1 0 = off, 1 = strict (config/csp.conf), 2 = custom (config/csp_custom.conf)
44. date_format dd.MM.y format of the date (day, month, year)
45. debug 0 0 = off, 1 = total execution time, 2 = full time, 3 = full detail (DBMS, cache)
46. debug_admin_only 0 show the debug data only for the administrator
47. debug_sql_threshold 0 report only the queries that are slower than this number of seconds
48. default_comment_acl $ default right for leaving comments (registered users)
49. default_create_acl $ default right for creating new (sub)pages
50. default_diff_mode 3 preselected diff mode (3 = side by side)
51. default_read_acl * default right for reading a page (* = everybody, $ = registered users)
52. default_rename_redirect 0 create a redirect from the old name when a page is renamed
53. default_upload_acl Admins default right for uploading files to a page
54. default_write_acl $ default right for writing a page (registered users)
55. diff_modes 0,1,2,3,4,5 the diff modes the user may choose; 0 = full, 2 = source, 3 = side by side, 4 = inline, 5 = merged, 6 = unified, 7 = context
56. disable_bracketslinks 0 disables the [[link]] and ((link)) syntax
57. disable_formatters 0 disables the %%code%%% syntax of the highlighters
58. disable_safehtml 0 0 = the dangerous HTML objects are filtered, 1 = the filter is off
59. disable_wikilinks 1 disables the linking of CamelCaseWords
60. disable_wikiname 1 disables the mandatory WikiName (CamelCase) format of the user names
61. edit_summary 0 0 = off, 1 = the change summary is shown, 2 = it is mandatory
62. email_confirmation 0 the user must verify the e-mail address before the first login
63. email_from WackoWiki sender name in the From: header of the notifications
64. email_priority 3 priority of the notification e-mails (1 = highest … 5 = lowest)
65. email_subject_prefix prefix of the subject of the notifications; empty = the site name is used
66. enable_captcha 1 master switch of the captcha
67. enable_comments 1 0 = off, 1 = on for everybody, 2 = on for registered users
68. enable_counters 1 per page hit counters and the simple statistics
69. enable_email 1 enables the sending of e-mails
70. enable_email_notification 1 allow the e-mail notifications (no effect on the signup e-mails)
71. enable_feeds 1 RSS feeds on or off for the whole wiki
72. enable_license 0 show the license information
73. enable_referrers 0 0 = off, 1 = on, 2 = on for administrators
74. enable_security_headers 1 set the security headers (frame busting, clickjacking/XSS/CSRF)
75. enable_system_message 1 show the system message
76. export_handler 2 0 = off, 1 = on, 2 = on for registered users (XML export)
77. ext_bad_behaviour 0 enable the Bad Behaviour extension (spam protection)
78. footer_comments 1 0 = off, 1 = on, 2 = on for registered users (comments panel)
79. footer_files 1 0 = off, 1 = on, 2 = on for registered users (attachments panel)
80. footer_tags 1 0 = off, 1 = on, 2 = on for registered users (tags panel)
81. forbidden_email_domains comma separated list of the forbidden e-mail domains; only effective if the allowed list is empty
82. form_token_time 7200 time in seconds a user has to submit a form
83. forum_cluster Forum root cluster of the forum section, action {{forums}}
84. forum_topics 10 number of topics per page in the forum sections, action {{topics}}
85. groups_page Groups page with the list of the working groups, action {{usergroups}}
86. help_page the documentation section for working with the site tools
87. hide_index 0 0 = the index panel is shown, 1 = it is hidden
88. hide_locked 1 hide the pages the user has no access to in the page lists
89. hide_revisions 0 0 = off, 1 = on for registered users, 2 = on for everybody
90. hide_toc 0 0 = the ToC panel is shown, 1 = it is hidden
91. image_quality 2 quality when scaling a thumbnail: 0 = off, 1 = max, 2 = high, 3 = medium, 4 = low
92. index_page Index (installer: PageIndex) page with the list of all pages, action {{pageindex}}
93. intercom_delay 30 minimum delay in seconds between two personal messages
94. ip_login_limit_max 50 login attempts per IP address before the anti-spambot task is triggered (0 = off); currently not in use
95. keep_deleted_time 0 storage time of the deleted pages in days; 0 = unlimited
96. language en default language of the interface and of the messages for guests
97. legacy_inline_code 0 parse the wiki markup inside the inline code code (deprecated)
98. license the default license under which the content is released
99. link_target 0 opens the external links in a new window (target="_blank")
100. list_count 50 number of items per list for guests and the default for new users
101. log_default_show 1 minimum priority of the events shown in the log by default (1…7)
102. log_level 0 minimum priority of the recorded events: 0 = no journal, 1 = critical … 7 = record all
103. log_purge_time 0 remove the log entries after this number of days (0 = keep forever)
104. login_notice 0 display of the welcome-back notice
105. login_page Login login page of the site, action {{login}}
106. logo_display 0 0 = off, 1 = logo only, 2 = logo and title
107. logo_height 50 height of the displayed logo in pixels
108. logo_width 108 width of the displayed logo in pixels
109. maint_last_cache 1 timestamp of the last cache maintenance (maintained by the system)
110. maint_last_delpages 1 timestamp of the last maintenance of the deleted pages
111. maint_last_log 1 timestamp of the last maintenance of the log
112. maint_last_oldpages 1 timestamp of the last maintenance of the old page versions
113. maint_last_refs 1 timestamp of the last maintenance of the referrers
114. maint_last_session 1 timestamp of the last maintenance of the sessions
115. maint_last_update (timestamp of the installation) timestamp of the last update of the wiki
116. maint_last_xml_sitemap 1 timestamp of the last maintenance of the XML sitemap
117. max_image_area 0 maximum number of pixels of a source image; -1 = no check, 0 = automatic
118. max_image_width 0 maximum width of an image on the pages; 0 = off, or 320/640/800/1024/1280/2560
119. max_login_attempts 3 login attempts per account before the anti-spambot task is triggered (0 = off)
120. max_page_size 2097152 maximum size of a page in bytes (2 MiB)
121. max_thumb_width 150 maximum width of a generated thumbnail in pixels (120, 150, 180, 200, 250, 300)
122. menu_items 5 default number of the shown menu (bookmark) items
123. minor_edit 0 enables the minor edit option in the edit mode
124. multilanguage 0 allows the selection of the language on a page-by-page basis
125. name_date_macro %s (%s) format of the ::@:: macro, e.g. UserName (17.11.2016 16:48)
126. news_cluster News root cluster of the news section, action {{news}}
127. news_levels regular expression with the number of the intermediate levels of the news cluster (derived from news_structure)
128. news_structure empty = no sub-clusters, Y/ = year, Y/m/ = year and month, Y/W/ = year and week
129. nofollow 0 adds rel="nofollow" to the links
130. noindex 0 block the search engines, but allow the normal visitors
131. noreferrer 0 adds rel="noreferrer" to the links
132. noreply_email no-reply address in the From: field of the notifications, e.g. noreply@example.com
133. notify_comment 1 0 = off, 1 = always, 2 = pending (only the first comment)
134. notify_diff_mode 2 diff mode in the body of the notifications; only the text/plain modes 2, 6 and 7 are offered
135. notify_minor_edit 1 send the notifications also for the minor edits
136. notify_new_user_account 1 notify the administrator about a new user account
137. notify_page 2 0 = off, 1 = always, 2 = pending (only the first change)
138. notify_upload 1 notify the moderators about an uploaded file
139. numerate_links 0 enumerate and list all links at the bottom of the print view
140. opensearch 0 creates the OpenSearch description file and enables the autodiscovery in the HTML header
141. orphaned_page [!] page with the list of the orphaned pages, action {{orphaned}}
142. owners_can_remove_comments 1 the page owners may moderate the comments on their own pages
143. pages_purge_time 0 storage time of the page history in days; 0 = unlimited
144. paragrafica 1 built-in paragrafica; off disconnects the automatic {{toc}}
145. password_page Password page with the form to change/query the password, action {{changepassword}}
146. permissions_policy 1 0 = off, 1 = strict (config/permissions_policy.conf), 2 = custom (config/permissions_policy_custom.conf)
147. phpmailer_method mail mail, sendmail or smtp
148. privacy_page page with the privacy policy of the site
149. publish_anonymously 0 allow the users to publish anonymously (to hide the name)
150. pwd_admin_min_chars 15 minimum length of the administrator password
151. pwd_char_classes 0 0 = not tested, 1 = letters + numbers, 2 = upper/lower + numbers, 3 = upper/lower + numbers + characters
152. pwd_min_chars 10 minimum length of the user password
153. pwd_unlike_login 1 0 = not tested, 1 = password != login, 2 = password does not contain the user name
154. random_page Random (installer: RandomPage) page that loads a random page, action {{randompage}}
155. referrer_policy 7 0 = off, 1 = no-referrer, 2 = no-referrer-when-downgrade, 3 = same-origin, 4 = origin, 5 = strict-origin, 6 = origin-when-cross-origin, 7 = strict-origin-when-cross-origin, 8 = unsafe-url
156. referrers_purge_time 1 storage time of the referring external pages in days; 0 = unlimited
157. registration_delay 10 minimum time in seconds that is required to fill out the registration form
158. registration_page Registration page for the registration of new users, action {{registration}}
159. remove_onlyadmins 0 only administrators may delete pages
160. removals_page [!] page with the list of the recently deleted pages, action {{deleted}}
161. rename_global_acl Admins permission to rename an entire cluster; 0 = not possible, 1 = any registered user (except the owner)
162. reserved_namespaces ... the namespaces reserved by the system (in the table the backslashes are doubled: admin\\\|file\\\|…)
163. reverse_proxy 0 determine the client IP from the X-Forwarded-For headers
164. reverse_proxy_addresses comma separated list of the IP addresses of your own reverse proxies
165. reverse_proxy_header name of the header that carries the client IP, if it is not X-Forwarded-For
166. review 0 enables the review option in the edit mode
167. rewrite_mode (detected at install) 1 = "short, beautiful URLs"; requires mod_rewrite on the server
168. root_page HomePage tag of the home page; it is opened automatically when a user visits the site
169. sandbox [!] page where the users can practice their wiki markup skills
170. search_page Search page with the search form, action {{search}}
171. section_edit 1 enables the editing of a single section
172. session_length 30 lifetime of the session cookie in days
173. session_notice 0 0 = off, 1 = on, 2 = on for administrators
174. session_store 1 1 = file, 2 = database (SQLite supports file sessions only)
175. show_permalink 0 0 = off, 1 = on, 2 = on for registered users
176. show_spaces 1 shows the spaces in the WikiNames, e.g. MyName as My Name
177. site_desc Cover what you do best. Link to the rest. short description of the site
178. site_favicon the favicon of the site (max. 64×64 px); overrides the one of the theme
179. site_logo wacko_logo.png the logo of the site (max. 2 MiB, optimal 255×55 px)
180. site_name MyWikiSite the name of the wiki site
181. smtp_auto_tls [!] 0 = off, 1 = opportunistic TLS (encrypt if the server advertises TLS)
182. smtp_connection_mode encryption of the SMTP connection: empty = none, ssl, tls
183. smtp_host localhost address of the SMTP server, with the protocol, e.g. ssl://mail.example.com
184. smtp_password password of the SMTP server; stored as plain text in the database
185. smtp_port 587 port of the SMTP server (587 for tls, 465 for ssl)
186. smtp_username user name of the SMTP server
187. sorting_comments 0 0 = ascending (oldest first), 1 = descending (newest first)
188. source_handler 1 0 = off, 1 = on, 2 = on for registered users
189. spam_filter 1 searches the page body for the words of config/antispam.conf; the word list is edited in the Admin Panel
190. standard_handlers ... the page handlers (processors) available in the wiki; in the table the backslashes are doubled
191. store_deleted_pages 1 keeps the deleted pages, revisions and files for the review and the recovery
192. svg_sanitizer 1 sanitizes the uploaded SVG files against SVG/XML vulnerabilities
193. system_message the text of the system message shown on every page
194. system_message_audience 1 the audience the system message is shown to
195. system_message_type the type (CSS class) of the system message
196. terms_page the page with the rules of the site
197. theme default the template (skin) used by default; the themes are in the theme/ folder
198. theme_color the color of the browser address bar (CSS color)
199. time_format HH:mm format of the time (hour, minute)
200. time_format_seconds HH:mm:ss format of the exact time (hours, minutes, seconds)
201. timezone UTC timezone for the times shown to guests; a logged-in user may change it
202. tls 0 use a TLS-secured connection; also sets the Secure flag of the cookies
203. tls_implicit 0 forcibly reconnect the client from HTTP to HTTPS
204. tools_page Tools page with the site tools
205. tree_level 1 0 = full index, 1 = only the lower (subpages), 2 = only the upper (neighbours)
206. typografica 0 built-in typographical proofreader
207. upload admins 0 = upload disabled, 1 = registered users, otherwise the name of a group (stored in lower case)
208. upload_allowed_exts comma separated list of the allowed extensions, e.g. png, ogg, mp4; empty = all
209. upload_banned_exts asa, asax, ascx, ashx, asmx, asp, aspx, axd, bat, cdx, cer, cgi, cmd, com, config, cpl, csproj, cs, dll, exe, htm, html, htr, htw, ida, idc, idq, jhtml, js, jsb, jsp, licx, mht, mhtml, msi, phar, php, pht, phtm, phtml, pif, pl, printer, py, rem, resources, resx, scr, shtm, shtml, soap, ssi, stm, vb, vbproj, vbs, vdisco, vxd, webinfo, xap, xht, xhtm, xhtml files with these extensions are forbidden; the key is not exposed in the Admin Panel
210. upload_images_only 1 allow only the upload of image files
211. upload_max_size 512000 maximum size of a single file in bytes (the Admin Panel enters a number + unit selector)
212. upload_quota 0 total storage space of the attachments of the wiki; 0 = unlimited
213. upload_quota_per_user 104857600 storage quota of a single user in bytes (100 MiB); 0 = unlimited
214. upload_translit 1 transliterate the file names to alphanumeric characters
215. upload_translit_lower 0 convert the file names to lower case; only effective with the transliteration on
216. urls_underscores 0 forms the addresses with underscores: WackoWiki becomes Wacko_Wiki
217. user_can_delete_account 0 the users may delete their own account
218. username_chars_max 20 maximum number of the characters in a user name
219. username_chars_min 3 minimum number of the characters in a user name
220. users_page Users page with the list of the registered users, action {{users}}
221. wanted_page [!] page with the list of the missing pages that are referenced, action {{wanted}}
222. whatsnew_page WhatsNew page with the list of the new, deleted and changed pages, action {{whatsnew}}
223. wikiedit_toolbar (see TB_DEFAULT) list of the buttons of the editor toolbar; stored as JSON, edited in the Admin Panel as a comma separated list
224. xml_changes_link 1 1 = difference view, 2 = the revised page, 3 = list of the revisions, 4 = the current page
225. xml_sitemap 0 creates xml/sitemap.xml
226. xml_sitemap_gz 0 compress the sitemap with gzip
227. xml_sitemap_time 1 generate the sitemap only once in this number of days; 0 = on every page change
228. xml_sitemap_update null timestamp of the last sitemap generation (maintained by the system)
229. youarehere_text visualizes the links to the same page, e.g. "<b>####</b>" turns them into bold text

3. User Settings

stored in usersetting table


Relation of corresponding user settings to config settings:


guest user remarks
config ✓ ✕
user setting ✕ ✓

The default values for the user settings are either set as DEFAULT value in the table itself or taken from the corresponding settings in the secondary config.


no config_name value default
1. allow_intercom 0
2. allow_massemail 0
3. autocomplete 1
4. autosave_draft 1
5. color_scheme 1
6. comments_offset 0
7. date_preference system
8. diff_mode 3
9. dont_redirect 0
10. doubleclick_edit 1
11. editor_height 500
12. hide_lastsession 0
13. list_count 50
14. live_preview 1
15. menu_items 5
16. noid_pubs 0
17. notify_comment 1
18. notify_minor_edit 0
19. notify_page 2
20. numerate_links 1
21. send_watchmail 0
22. session_length 0
23. setting_id 1
24. show_comments 0
25. show_files 0
26. show_spaces 1
27. sorting_comments 0
28. syntax_highlighting 1
29. theme default
30. timezone Europe/Zurich
31. user_id 3
32. user_lang en
33. validate_ip 0
34. widescreen_mode 0
35. wikiedit_toolbar ...
36. zenmode 1

4. Constants

config/constants.php

const CONFIG_DIR			= 'config'; // NB hardcoded as config/constants.php for bootstrap
const CONFIG_FILE			= 'config/config.php';
const CONFIG_DEFAULTS			= 'config/config_defaults.php';
const SITE_LOCK				= 'config/lock';
const AP_LOCK				= 'config/lock_ap';

const ACTION_DIR			= 'action';
const BACKUP_DIR			= 'file/backup';
const DATA_DIR				= 'file/data';
const FORMATTER_DIR			= 'formatter';
const HANDLER_DIR			= 'handler';
const IMAGE_DIR				= 'image';
const LANG_DIR				= 'lang';
const THEME_DIR				= 'theme';
const THUMB_DIR				= 'file/thumb';
const THUMB_LOCAL_DIR			= 'file/thumb_local';
const UPLOAD_GLOBAL_DIR			= 'file/global';
const UPLOAD_LOCAL_DIR			= 'file/perpage';
const XML_DIR				= 'xml';

const CACHE_CONFIG_DIR			= '_cache/config';
const CACHE_FEED_DIR			= '_cache/feed';
const CACHE_PAGE_DIR			= '_cache/page';
const CACHE_SQL_DIR			= '_cache/query';
const CACHE_TEMPLATE_DIR		= '_cache/template';
const CACHE_SESSION_DIR			= '/tmp';			// '/tmp', '_cache/session'

const CHMOD_SAFE			= 0640;				// better to use 0600 in production
const CHMOD_FILE			= 0644;				// file creation mode
const CHMOD_DIR				= 0755;				// directory creation mode

const SITEMAP_XML			= 'sitemap.xml';

const HTTP_403				= 'image/upload403.svg';
const HTTP_404				= 'image/upload404.svg';

const DAYSECS				= 86400;			// 24 * 60 * 60

const BACKUP_COMPRESSION_RATE		= 9;				// gzip compression rate
const BACKUP_MEMORY_STEP		= 1048576;			// max bytes to process per cycle (make sure it's at least 10 times less than PHP memory limit!)
const BACKUP_FILE_LOG			= 'backup.log';			// backup log filename
const BACKUP_FILE_STRUCTURE		= 'structure.sql';		// tables structure filename
const BACKUP_FILE_DUMP_SUFFIX		= '.dat.gz';			// tables dump filename suffix
const BACKUP_FILE_GZIP_SUFFIX		= '.gz';			// regular compressed files suffix

const GLOB_ALL				= '{,.}*';			// for glob()
const ADD_NO_DIV			= '*';				// for Wacko::method()
const SYSTEM_LANG			= -1;				// for Wacko::_t()

const COOKIE_SAMESITE			= 'Lax';			// Strict, Lax, None
const AUTH_TOKEN			= 'Auth';
const GUEST				= 'guest@wacko';

const INTERCOM_MAX_SIZE			= 262144;

const LOAD_NOCACHE			= false;
const LOAD_CACHE			= true;
const LOAD_ALL				= false;
const LOAD_META				= true;

const IS_HEADING			= 66666;
const IS_PARAGRAPH			= 77777;
const IS_INCLUDE			= 99999;

const MENU_AUTO				= 0;
const MENU_USER				= 1;
const MENU_DEFAULT			= 2;

const TB_DEFAULT			= [
				'h2','h3','h4','h5','h6','separator',
				'bold','italic','underline','strike','small','code','separator',
				'ul','ol','separator',
				'center','right','justify','separator',
				'outdent','indent','separator',
				'quote','source','action','textred','highlight','separator',
				'hr','signature','createlink','footnote','createtable',
				'upload-media','separator',
				'wacko2md','md2wacko','separator',
				'dark-toggle','syntax','livepreview','zenmode','fullscreen','separator',
				'shrink','enlarge','separator',
				'undo','redo','separator', 'search', 'about',
				'dropdown'
];

const LINK_PAGE				= 0;
const LINK_FILE				= 1;
const LINK_EXTERNAL			= 2;

const OBJECT_PAGE			= 1;
const OBJECT_FILE			= 2;
const OBJECT_REVISION			= 3;

const NBSP				= ' ';				// \u{00A0} No-Break Space (NBSP)

const RECOVERY_MODE			= 0;				// 1 - restore database
const AUTO_REWRITE			= 1;				// 0 - off, turns off auto rewrite for debugging,

const SQL_MODE_STRICT		= [
		'mariadb'	=> 'TRADITIONAL,NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY',
		'mysql'		=> 'TRADITIONAL,NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY'
];
const SQL_MODE_LAX		= [
		'mariadb'	=> 'NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER',
		'mysql'		=> 'NO_ENGINE_SUBSTITUTION'
];

// Do not change these two lines, PLEASE-PLEASE. In fact, don't change anything! Ever!
const WACKO_VERSION			= '6.3.1';
const HTML_ENTITIES_CHARSET		= 'UTF-8';

const WACKO_ENV				= 4;			// Environment: 1 - development, 2 - test, 3 - stage, 4 - production

const ACTION4DIFF			= 'anchor, toc';	// allowed actions in DIFF

const DB_MIN_VERSION			= ['mariadb' => '10.6', 'mysql' => '8.0', 'sqlite' => '3.25'];
const DB_ERROR_MODE			= 0;			// 0 - silent, 1 - warning, 2 - exception

const PHP_MIN_VERSION			= '8.0';		// minimum required PHP version
const PHP_MAX_VERSION			= '8.5';		// maximum supported PHP version
const PHP_ERROR_REPORTING		= 0;			// PHP error reporting: 0 - off, 6 - all