WackoWiki: Change Log

https://wackowiki.org/doc     Version: 19 (27.08.2021 08:31)

Change Log



This file summarizes changes in WackoWiki releases. (Release Notes[link3])


6.1

(12.04.2024) c55334f[link4] -> M25 (Release Notes[link5])


As work on WackoWiki 6.1 is still underway[link6], this is an incomplete list of changes.



Configuration

secondary config

  1. new
    • email_confirmation
    • email_subject_prefix
    • forbidden_email_domains
    • jpeg_quality
    • login_notice
    • max_image_width
    • max_page_size
    • min_thumbnail_distance
    • news_structure
    • section_edit
    • session_notice
    • svg_sanitizer
    • theme_color
    • thumbnail_image_area
    • upload_allowed_exts
    • upload_translit_lower
    • xml_sitemap_gz
  2. renamed
    • default_typografica -> typografica
    • img_max_thumb_width -> max_thumb_width
    • img_create_thumbnail -> create_thumbnail
  3. removed
    • dst
    • footer_rating

theme config

constants

  1. new
    • COOKIE_SAMESITE : 'Strict', 'Lax' (default), 'None'
    • DB_ERROR_MODE : 0 - silent (default), 1 - warning, 2 - exception
  2. renamed
    • UPLOAD_PER_PAGE_DIR to UPLOAD_LOCAL_DIR
  3. removed
    • XML_HTMLSAX3, see autoload.conf

conf files

  1. changed
    1. csp_custom.conf[link7]
    2. csp.conf[link8]
    3. autoload.conf[link9]
    4. router.conf[link10]

Core

Methods

This is only a random selection.

Folders

Database


  1. added field
    1. acl_id INT(10) to acl table
    2. group_member_id INT(10) to usergroup_member table
    3. typografica TINYINT(1) to page table
    4. file_hash CHAR(40) to file table
  2. changed field
    1. timezone to VARCHAR(100) in user_setting table
    2. query to VARCHAR(255) in cache table
    3. category to VARCHAR(255) in category table
    4. category_description to TEXT in category table
  3. renamed field
    1. lost_password_request_count to password_request_count in user table
    2. uploaded_dt to created in file table
    3. modified_dt to modified in file table
    4. name to hash in cache table
  4. removed field
    1. footer_rating from page table
    2. typografica from user_setting table
    3. dst from user_setting table
  5. added index
    1. idx_user_id to menu table
    2. idx_page_id to menu table
    3. idx_lang to menu table
    4. idx_user_id to watch table
    5. idx_page_id to watch table
    6. idx_file_name to file table
  6. removed table
    1. poll
    2. rating

Database schema[link16] changes

Installer

Formatters


Actions


Handlers

Themes

WikiEdit

Admin panel

  1. pages: determines news_levels according to the given settings
  2. upload:
    • lets you now set other groups than Admins to allow file upload
    • added option to transliterate all file names to lowercase (new default: off)
  3. appearance: added option to set a theme color for the address bar
  4. removed obsolete convert module
  5. sets DEFAULT for all fields in backup module script
  6. restore: skiped is_executable() check for Windows
  7. changed format for backup.log to JSON
    • You have to remove the backups you've created prior to 6.1.21 from the file/backup/ folder or replace the backup.log with a new JSON formatted version.
  8. added syndication module

Translations

Packages

updated


See core dependencies[link41]



Note that the changelog is usually incomplete, for a complete list of changes that went into R6.1, you can browse the Commit log[link42], the Bug Tracker Log[link1] and ToDo[link6] list.


6.0

(10.03.2023) a31bc75[link43] -> M37 (Release Notes[link44])



Configuration

primary config

  1. changed
    1. 'db_charset' => 'utf8mb4',
    2. 'db_collation' => 'utf8mb4_unicode_520_ci',
  2. renamed
    1. database_* -> db_*

secondary config

  1. new
    • upload_translit
    • source_handler
    • export_handler
    • canonical
    • base_path
    • opensearch
    • enable_counters
    • permissions_policy
    • news_structure
    • xml_sitemap_gz
  2. renamed
    • owners_can_change_categories -> categories_handler
  3. removed
    • antidupe
    • disable_tikilinks
    • outlook_workaround

constants

  1. new
    • DB_MIN_VERSION
  2. removed
    • TRANSLIT_DONTCHANGE
    • TRANSLIT_LOWERCASE
    • TRANSLIT_LOAD
    • TRANSLIT_DONTLOAD

conf files

  1. new
    1. permissions_policy.conf[link45]
  2. changed
    1. autoload.conf[link46]
    2. router.conf[link47]
    3. csp_custom.conf[link48]
    4. csp.conf[link49]

Core

Methods

This is only a random selection.

Folders

Database


Database schema[link54] changes


Installer

Formatters

Wrapper

new arguments:

  1. wrapper_type="default | error | example | important | note | question | quote | success | warning"
  2. wrapper_title="Title"
  3. col=1 | 0

box shade page text
type + + -
title + + -
alignment + 1 2 +
clear + +
width + 1 + 3
column + +
frame + +
automatic line feed + + +

1 This option does not make sense, because the width of the block is always equal to the width of the page.
2 Only to the left.
3 If you don't put the line feeds yourself, the block width is fixed by the engine at approximately 90% of the page width.


%%(wacko wrapper="shade" wrapper_type="note" wrapper_title="Columns" col=4) content... %%

Columns

Unicode has the explicit aim of transcending the limitations of traditional character encodings, such as those defined by the ISO 8859 standard, which find wide usage in various countries of the world but remain largely incompatible with each other. Many traditional character encodings share a common problem in that they allow bilingual computer processing (usually using Latin characters and the local script), but not multilingual computer processing (computer processing of arbitrary scripts mixed with each other).

Unicode, in intent, encodes the underlying characters—graphemes and grapheme-like units—rather than the variant glyphs (renderings) for such characters. In the case of Chinese characters, this sometimes leads to controversies over distinguishing the underlying character from its variant glyphs (see Han unification).


In text processing, Unicode takes the role of providing a unique code point—a number, not a glyph—for each character. In other words, Unicode represents a character in an abstract way and leaves the visual rendering (size, shape, font, or style) to other software, such as a web browser or word processor. This simple aim becomes complicated, however, because of concessions made by Unicode's designers in the hope of encouraging a more rapid adoption of Unicode.


A tiny part of the Unicode table


The first 256 code points were made identical to the content of ISO-8859-1 so as to make it trivial to convert existing western text. Many essentially identical characters were encoded multiple times at different code points to preserve distinctions used by legacy encodings and therefore, allow conversion from those encodings to Unicode (and back) without losing any information. For example, the "fullwidth forms" section of code points encompasses a full Latin alphabet that is separate from the main Latin alphabet section because in Chinese, Japanese, and Korean (CJK) fonts, these Latin characters are rendered at the same width as CJK characters, rather than at half the width. For other examples, see duplicate characters in Unicode.

Actions

Handlers

Themes


WikiEdit

Admin panel

  1. added option to create user without setting email confirm token
  2. removed transliterate module
  3. stores admin panel menu in session
  4. data synchronization: added option to reparse all pages
  5. resync: fixed broken setting of resync_limit
  6. the panel now uses the language of the user account
  7. users: added option to resend email confirmation code
  8. backup: added missing column collation to backup script
  9. sets DEFAULT for all fields in backup module script

Translations


Packages

updated



.
Note that the changelog is usually incomplete, for a complete list of changes that went into R6.0, you can browse the Commit log[link42], the Bug Tracker Log[link1] and ToDo[link59] list.


5.5

(31.12.2019) d2649d1[link60] -> M17 (Release Notes[link61])



Configuration

  1. disabled registration by default in config

primary config

  1. added
    • hashid_seed
    • sql_mode_strict
  2. removed
    • header_action
    • footer_action
    • classes_path
    • action_path -> ACTION_DIR
    • formatter_path -> FORMATTER_DIR
    • handler_path -> HANDLER_DIR
    • theme_path -> THEME_DIR
    • upload_path -> UPLOAD_DIR_GLOBAL
    • upload_path_per_page -> UPLOAD_DIR_PER_PAGE
    • upload_path_backup -> UPLOAD_DIR_BACKUP
    • cache_dir -> CACHE_DIR

secondary config

  1. renamed
    • session_expiration -> session_length
    • x_csp -> csp
    • policy_page -> terms_page
    • disable_autosubscribe -> autosubscribe
  2. new
    • allow_intercom
    • allow_massemail
    • allow_persistent_cookie
    • allowed_languages
    • anonymize_ip
    • approve_new_user
    • attachments_handler
    • default_diff_mode
    • diff_modes
    • enable_captcha
    • enable_referrers
    • ext_bad_behavior
    • footer_tags
    • help_page
    • hide_article_header
    • link_target
    • list_count
    • menu_items
    • nofollow
    • noreferrer
    • noreply_email
    • notify_diff_mode
    • notify_upload
    • privacy_page
    • pwd_admin_min_chars
    • referrer_policy
    • registration_delay
    • session_store
    • show_permalink
    • sorting_comments
  3. removed
    • x_frame_option
    • session_encrypt_cookie
    • allow_swfobject
    • revisions_hide_cancel
    • session_prefix
    • cookie_prefix
    • date_precise_format -> date_format and time_format_seconds
    • date_macro_format -> date_format and time_format
    • phpmailer
    • disable_npjlinks
    • meta_description
    • meta_keywords
    • tls_proxy

user settings

  1. new
    • sorting_comments
    • notify_minor_edit
    • notify_page
    • notify_comment
    • menu_items
    • diff_mode
  2. renamed
    • changes_count -> list_count
  3. removed
    • revisions_count -> list_count

constants

  1. new
    • ACTION_DIR
    • AP_LOCK
    • CACHE_CONFIG_DIR
    • CACHE_DIR
    • CACHE_FEED_DIR
    • CACHE_PAGE_DIR
    • CACHE_SESSION_DIR
    • CACHE_SQL_DIR
    • CACHE_TEMPLATE_DIR
    • CHMOD_DIR
    • CHMOD_FILE
    • CHMOD_SAFE
    • CONFIG_DEFAULTS
    • CONFIG_DIR
    • CONFIG_FILE
    • DAYSECS
    • FORMATTER_DIR
    • HANDLER_DIR
    • IMAGE_DIR
    • LINK_FILE
    • LINK_PAGE
    • OBJECT_FILE
    • OBJECT_PAGE
    • RECOVERY_MODE
    • SITEMAP_XML
    • SITE_LOCK
    • SQL_MODE_PERMISSIVE
    • SQL_MODE_STRICT
    • THEME_DIR
    • UPLOAD_BACKUP_DIR
    • UPLOAD_GLOBAL_DIR
    • UPLOAD_PER_PAGE_DIR
    • WACKO_ENV
    • XML_DIR
  2. renamed
    • TRAN_DONTCHANGE -> TRANSLIT_DONTCHANGE
    • TRAN_LOWERCASE -> TRANSLIT_LOWERCASE
    • TRAN_LOAD -> TRANSLIT_LOAD
    • TRAN_DONTLOAD -> TRANSLIT_DONTLOAD
    • ACTIONS4DIFF -> ACTION4DIFF
  3. removed
    • SQL_NULLDATE
    • CSP_CUSTOM -> csp_custom.conf

conf files

  1. autoload.conf[link62]
  2. router.conf[link63]
  3. csp_custom.conf[link64]
  4. csp_defaults.conf[link65]

Features

Core

Methods

This is only a random selection.


Classes


Folders


Use singular for folder names, it describes a specific entity.

Template Engine

The new template engine[link67] provides support for templates, to separate visual code (HTML/CSS) from logic code (PHP).


example.php

 $tpl->variable = 'Templatest is awesome.';	

template/example.tpl

 <p>[ ' variable | e ' ]</p>	

classes

  1. templatest.php[link69]
  2. templatestescaper.php[link70]
  3. templatestfilters.php[link71]
  4. templatestsetter.php[link72]
  5. templatestuser.php[link73]

Template support is available for actions, handlers, formatters and themes.


URI router

Decouples the serve logic from Apache to be server-agnostic.


class


foo://example.com:8042/over/there?name=ferret#nose
\_/   \______________/\_________/ \_________/ \__/
 |           |            |           |        |
scheme     authority     path        query   fragment
 |     ___________________|__
/ \   /                      \
urn:example:animal:ferret:nose	

router.conf[link63]

// whole idea is to take URI path, _GET/_PUT/_SERVER data and other
// meta-data, then process rules in this file sequentially, which
// results in dispatched handler to process query,
// and all arguments extracted from URI for further usage by those handlers
// (e.g. you can extract parts of URI to _GET vars, etc.)


// 'language' guide:
// every line of code consists of regex which matched against URI, and
// actions, all separated by whitespace. there are no possibility to
// include whitespace in regex or action.
// regex will be matched against URI, on success all actions executed, on failure - we go for next regex.
// lines without regex is continuations for same regex, and will be executed sequentially if regex matched.

// every single action can succeed or fail. if any one fails - all
// variable assignments made by THIS line (even before failed action) is
// discarded, and we go to next line.

// two control action exist (all action line must succeed for them to act!)
//	_next!		-- jump to next regex (skip next action lines with empty regex)
//	_ok!		-- search terminated with success
// if no _ok! executed ever - search fails and 404 emitted

// that's all on control flow.

// main regex:
// http://php.net/manual/en/reference.pcre.pattern.syntax.php -- usual php preg_* regex syntax apply, including
// delimiters and options after trailing delimiter.
// convenience macros (defined by 'define' line, or supplied by wackowiki) expanded before matching.
// used as {macro} - to be referenced as $1-vars then, or {var=macro} - for inline assignment.
// macros cannot be used in ~-regexes

// VARIABLES:
//	$0..$9	- fields matched by main regex. $0 is complete match, $1 and later - corresponding (...) parts
//	$a..$j	- as $0..$9 but set by sub-matched (by ~ operator) patterns 
//	Gname	- _GET[name]
//	Pname	- _PUT[name]
//	Sname	- _SERVER[name]
//	others	- local variables
// predefined vars:
//	_tls		- 1 or 0, tls session
//	_uri		- parsed URI (it is matched against main regex, but can be changed by assignment)
//	_method		- _SERVER[REQUEST_METHOD]
//	_rewrite	- 1 or 0, mod_rewrite active
// usage of undefined variables considered a failure (if not masked by @ in VALUE expansion, see later)

// ACTIONS:
// similar format used for all actions (not all fields apply for every action, and just ignored):
//		VARIABLE[:FUNCTION]operatorVALUE

// value is a string, with expanded variables. expansions:
//	$0 .. $9 / $a .. $j -- see above
//	${name}
//	@$... format can be used to mask undefined variable error
//	$$ - replaced by $
//	$@ - replaced by @

// assignments:
// 	FUNCTIONs can be used: tolower | toupper | int
//	var=$1
//	var:tolower=$1
//	var?=$2				-- assign if not set
//	var!				== var=1
//	dbg=$1,$2,$3		-- Ut::dbg printer ;)

// pattern matching:
//	var~/regex/i			-- sets $a..$j on success
//	var!~/regex/i
//	var~hashid:[1-9]		-- hashid expansion, into $a...
//	var!~hashid:[1-9]

// comparisons:
//	FUNCTIONS can be used: int -- both args converted to int before comparison
//	var==12    var!=12    var:int<12    var>12    var<=12    var>=12

// others:
// var?					-- isset
// var-					-- unset

//define	{method}	name|name|name		// predefined by wackowiki
define		{hashid}	[0-9a-zA-Z]+
define		{i}			[0-9]+
define		{h}			[0-9a-fA-F]+
define		{a}			[0-9a-zA-Z]+
define		{w}			[\w]+
define		{}			[^/]*
define		{*}			.*?
define		{**}		.*

//`^{hashid}$`						$1~hashid:2 Gone=$a Gtwo=$b all=$0+${Gone} _ok! _tls!=0 _method~/g(e)t/i BIN:tolower=$b Pln=${_line}
//									desc=$0 term:tolower=MyMethod term!= Gmethod=show _ok!
//`^{hashid}/{Op=*}/{Mode=**}$`
//									Op!~/^diff$/i &next!
//									$1~hashid:2 Gone=$a Gtwo=$b Gmethod:tolower=${Op} _ok! // test

`^`
		SPATH_INFO!= _uri=${SPATH_INFO} _next!		// if PATH_INFO available - use it
		_rewrite==0 _uri=@${Gpage} Gpage-			// when rewrite mode is off - replace _uri by page _GET variable

`^/*{_uri=*}/*$`	// trim _uri of beginning & trailing slashes
`^index\.(php|html)$`									_uri=

'^'												route=static age=30 static=${_uri}

`^robots\.txt$`										_ok!
`^sitemap\.xml$`									_ok! age=0 

`^(theme/{}/css|theme/_common|admin/style)/{}$`			_ok!	// css
`^image/(wikiedit/)?{}$`								_ok!	// icons
`^theme/default/icon/{}$`								_ok!	// icons
`^js/(lang/)?{}$`									_ok!	// js
`^file/global/{}$`									_ok!	// global uploads
`^setup/(image|css)/{}$`								_ok! unlock=1	// setup inlines
`^xml/{}$`											_ok! age=0	// feeds

'^'												_ok! _install!=0 route=install unlock=1
												session=1 age- static-

`^\.freecap$`										_ok! route=freecap

'^'												engine=1 route=wacko

`^admin\.php$`										_ok! route=admin

`^{}(/.*)?$`
		$1~hashid:2 page=$ax$b method=Hashid _ok!
		// $1~hashid:2 Gpage_id=$a Gversion_id=$b page= method=show redirect=301 _ok!

//`^{i}rev{i}$`
//		page=$1x$2 method=Hashid redirect=301 _ok!

//`^{page=}$`
//		method=show _ok!

`^(|{page=**}/){method}(/.*?)?$`i
		method:tolower=$3 _ok!

// catch-all
`{page=**}`
		method=show _ok!	

Database



Installer

Formatters

Actions

Handlers

  1. show: fixed broken redirect after editing a page comment with active paging
  2. renamed ms to wordprocessor
  3. diff: added a link to switch directly between diff modes
  4. referrers: added anchor for internal links
  5. _comments: toggle setting that allows users to list comments either with the most recent OR the oldest comment at the top of the list of page comments
  6. upload: added missing file path for local file in preview link
  7. allowed Admin to fix e.g. typos in comments of other users
  8. properties: show keywords with related categories in page properties
  9. remove: updates menu array in session after deleting a related page
  10. show: moved page title (H1) from theme header to show handler
    • to suppress the page title you can set hide_article_header true in your action or theme
  11. added option to turn external referrers off or to show them only to administrators, off by default
  12. added attachments handler
  13. added filemeta handler
  14. added paging to revisions
  15. added templates for handlers, see sub-folder template/

Themes

  1. replaced GIF with PNG/SVG icons
    1. optimized SVG files with SVG Cleaner[link82]
  2. HTML5 Migration
  3. removed smooth scrolling JavaScript functions in default.js
    • body {
        scroll-behavior: smooth;
      } 	
  4. default theme
    1. use reverse hierarchy order in page titles
    2. bookmarks as dropdown
    3. added templates, see sub-folder appearance/template/
  5. moved theme icons to default.css[link83]
  6. moved wiki link icons to wacko.css[link83]
  7. added viewport meta tag <meta name="viewport" content="width=device-width, initial-scale=1">

WikiEdit

Admin panel

  1. now you must be logged as Admin in the first place to access the admin panel
  2. recovery password login (in case of db corruption) -> requires to set RECOVERY_MODE to 1
  3. fixed Admin Panel sets mode_rewrite always on
  4. fixed broken groups management
  5. backup & restore:
    1. fixed broken processing of default values with '' and 'timestamp'
    2. uses now the DEFAULT keyword to restore empty values
    3. fixed broken backup and restore for cluster
  6. added AP module
    1. to convert MyISAM to InnoDB
    2. for Bad Behavior extension
    3. for user approval
    4. to config appearance
    5. to config upload
  7. localized most of the message sets, please help to translate the English placeholders into your language[link58]
  8. loads separate lang files for Admin panel (see admin/lang/ap.<lang>.php)
  9. data sync: added parameter to limit redirects and the number of pages per turn for re-rendering pages

Extensions

  1. added Bad Behavior[link84] extension

Translations

Packages

added


updated


removed




Note that the changelog is usually incomplete, for a complete list of changes that went into R5.5, you can browse the Commit log[link42], the Bug Tracker Log[link1] and ToDo[link89] list.


5.4

(12.07.2014) 3679c8e[link90] -> M3 (Release Notes[link91])



Actions

Configuration

Core

Database

Installer

Bugfixes

Handlers

Admin panel

Themes

Translations

Packages

added


updated


Note that the changelog is usually incomplete, for a complete list of changes that went into R5.4, you can browse the Commit log[link42], the Bug Tracker Log[link1].


5.1

(17.06.2012) 686eb5b[link94] -> Final (Release Notes[link95])



Core

Installer

Bugfixes

Formatters

Handlers

Translations


Note that the changelog is usually incomplete, for a complete list of changes that went into R5.1, you can browse the Commit log[link42], the Bug Tracker Log[link1] and ToDo[link96] list.


5.0

(01.12.2019) 95c416f[link97] -> M5 (Release Notes[link98])



Database

Installer

Configuration


Features

Core

Actions

Formatters


Handlers

Installer


Makros

Translations

Themes

Packages

added


updated


Note that the changelog is usually incomplete, for a complete list of changes that went into R5.0, you can browse the Commit log[link42].


4.3

(20.03.2011) e192369[link105] (Release Notes[link106])

Database

Installer

Configuration

Features

Core

Actions

Translations


Themes

Packages

Removed Features



Note that the changelog is usually incomplete, for a complete list of changes that went into R4.3, you can browse the Commit log[link42] and the Bug Tracker Log[link1].


< back to all versions[link109]

4.2

(27.03.2005)

4.0

(31.07.2004)


rc1 (14.07.2004)


beta2 (15.04.2004)


beta1 (27.02.2004)

3.5

(28.06.2003)

3.0

(30.04.2003)


2.0

(25.03.2003)


Wakka


Please note: The changes below are made in the dev version of Wakka[link114] and won't be available to the public until we prepare a new version (read: no public CVS, sorry), which of course will be posted here, too. So, for example, everything posted above "Released Wakka 0.1.1." won't be available until there's a bold line of text saying "Released Wakka 0.1.2." or something. Hendrik Mans[link115]


2003-02-16:



There will probably be a 0.1.3 first, though, containing more fixes (if anyone finds further problems, that is), and some minor new features (including image tags).

2002-12-28:



2002-12-27:



2002-12-26:



2002-12-25:



2002-11-26:



2002-09-14:



2002-09-13:



2002-09-10:



I'm actually thinking about making the installer/updater create this file automatically, so upgrading to a new version is safer. Let me know what you think.

2002-09-04:




2002-09-03:



2002-08-29:



2002-08-28:



2002-08-27:



2002-08-25:



2002-08-23:



2002-08-22: