View source for 6.1 Change Log

===6.1===
(05.10.2024) ((commit:a40170516c866b11222c7995ba22adb4c6bd51d6 a401705)) -> **M26** ++(((/Dev/Release/R6.1/ReleaseNotes Release Notes)))++

As work on WackoWiki 6.1 is ((/Dev/Release/R6.1/ToDo still underway)), this is an incomplete list of changes.

{{toc numerate=1 from="h3" to="h6"}}

====Configuration====
=====primary config=====
  1. new
    * ##db_vendor##
  1. renamed
    * ##sql_mode_strict## to ##sql_mode##
      * ##0## - server
      * ##1## - session lax
      * ##2## - session strict
=====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##
  1. renamed
    * ##default_typografica## -> ##typografica##
    * ##img_max_thumb_width## -> ##max_thumb_width##
    * ##img_create_thumbnail## -> ##create_thumbnail##
  1. removed
    * ##dst##
    * ##footer_rating##

=====theme config=====
  * ##custom_menus## - shows custom menu options (hide_toc, hide_index, tree_level)

=====constants=====
  1. new
    * ##COOKIE_SAMESITE## :  'Strict', 'Lax'  (default), 'None'
    * ##DB_ERROR_MODE## : 0 - silent (default), 1 - warning, 2 - exception
  1. renamed
    * ##UPLOAD_PER_PAGE_DIR## to ##UPLOAD_LOCAL_DIR##
    * ##SQL_MODE_PERMISSIVE## to ##SQL_MODE_LAX##
  1. removed
    * ##XML_HTMLSAX3##, see autoload.conf

=====conf files=====
  1. changed
    1. ((source:master/src/config/csp_custom.conf csp_custom.conf))
    1. ((source:master/src/config/csp_.conf csp.conf))
    1. ((source:master/src/config/autoload.conf autoload.conf))
    2. ((source:master/src/config/router.conf router.conf))

====Core====
  * added option to set the ((https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite SameSite attribute)), default ##'Lax'## , see constants.php
    %%(info type="note")
While ##'Strict'## provides stronger protection against CSRF attacks, it actually prevents the user's session from being recognized when clicking a link from a notification e-mail, causing WackoWiki to start an anonymous session even if the user is already logged in.
%%
  * added thumbnail support
  * use of new ##str_contains()##, ##str_starts_with()##, ##str_ends_with()## functions and Match expression
  * use of PHP null coalescing assignment operator ##??=##
  * added option to compress sitemap.xml
  * writes ##sitemap.xml##  now by default into the ##xml/## folder
    * %%Sitemap: https://wiki.example.com/xml/sitemap.xml.gz%%
  * disables JavaScript in all SVGs via CSP directive
  * COLLATE ((/Dev/Release/R6.0/BinaryTag tag column)) case-insensitive for ORDER BY and LIKE 
    * %%(sql) ORDER BY tag COLLATE utf8mb4_unicode_520_ci ASC %%
    * %%(sql) WHERE tag COLLATE utf8mb4_unicode_520_ci LIKE %%
  * removed polls class
  * uses now the ((IntlDateFormatter)) for localizing date and time formats & determining (?DST Daylight saving time?) according the set timezone
  * adds ((ErrorMode option to set DB error mode for MySQLi and PDO driver))
  * set missing ##context## for comments and news feed
  * set system language for all feeds
  * fixed various SQL Strict mode issues
  * show file captions also in print handler
  * added option to show the session termination notices (default: off)
  * added option to show 'Welcome back ...' notices (default: off) 
  * removed ##$this->user_table## assignment, use ##db->table_prefix . 'user'## instead
  * new ##$this->prefix## alias for ##$this->db->table_prefix## for better readability in Wacko class
  * fixed wrong encoding of ##tag## in IRI format with mode_rewrite off 
  * added ability to add custom message sets under ##lang/custom.<lang>.php## apart from themes
    * %%(php)<?php

$custom_translation = [
	// my coffee action
	'BuyMilk'					=> 'Milch kaufen',
	'MakeCoffee'				=> 'Kaffee machen',
	'AddSugar'				=> 'Zucker hinzufügen',
]
%%
  * ##notify_watcher()##: adds direct link to diff mode in email body
  * removed deprecated usage of ##Expires:## and ##Pragma:## header
  * fixed ##If-Modified-Since## conditional requests issues
  * fixed invalid ##ETag##
  * fixed various ##Cache-Control## header issues
  * re-check for anonymous user before storing cache
    * ##soft_login()## may set ##sess->user_profile##
  * removed redundant ##setlocale()## call
  * fixed not showing read ACL ##$## pages in the default menu for logged in users with no own bookmarks defined

=====Methods=====
This is only a random selection.
  * added
    * ##number_format()##
      * uses intl ##NumberFormatter## class
    * ##mark_read()##
    * ##extract_sections($body, $section_id, $mode, $new_section = '')##
    * ##get_favicon()##
    * ##get_xml_file($name)##
    * ##date_format($unix_time, $pattern)##
      * uses ##IntlDateFormatter::format()##
      * for ##$pattern## see ((https://unicode-org.github.io/icu/userguide/format_parse/datetime/ ICU Dates and Times Format)) patterns
  * modified
    * ##get_page_path($tag = '', $titles = false, $separator = '/', $linking = true, $root_page = false)##
      * added ##$tag## as first argument, this changes the order of the parameters
  * renamed
    * ##binary_multiples()## -> ##factor_multiples()##
    * ##get_time_formatted()## -> ##sql_time_format()##
    * ##theme_*()## -> ##theme_template($section, $mod = '')##
  * removed
    * page rating related functions

=====Folders=====
  * renamed folder ##wacko## to ##src##

====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
  * 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
  * 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
  * removed field 
    1. ##footer_rating## from page table
    2. ##typografica## from user_setting table
    3. ##dst## from user_setting table
  * 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
  * removed table
    1. ##poll##
    1. ##rating##

((/Dev/Release/R6.1/Database Database schema)) changes

====Installer====
  * removed legacy code from upgrade process, requires now at least WackoWiki **!!(green)6.0.22!!**
  * normalized inserting pages
  * indicates now in the header that you're running a Installation or Upgrade
  * adds option to set ##sql_mode## and ##db_vendor##
    * ((/Dev/Release/R6.1/SQLModesRevisited mainly to solve SQL mode incompatibilities))

====Formatters====
  * added **noinclude** formatter
    * ##""%%(noinclude) content not shown when embedded via include action %%""##
    * The ((/Doc/English/Actions/Include include action)) strips the content enclosed by the noinclude tags.
      * ##""<!--noinclude-->""##, ##""<!--/noinclude-->""##
      * for info boxes, navigation, etc.
  * adds alternate grave accents ##""``""## syntax to percent signs ##""%%""## syntax
    * allows to work around parsing conflicts, e.g. the text already contains percent signs, which may be mistakenly considered markup
    * enables to wrap formatters in a formatter, e.g. wrapping a CSS highlighter in a details formatter
  * fixed list regex for letters & Roman numerals
  * ((/Dev/Projects/Typografica Typografica)) 
    * corrector is now turned off by default (##typografica##)
    * fixed regex for quotes
  * Paragrafica: added missing ##<dd>## and ##<dt>## wronginators
  * adds support for AVIF, requires LibGD 2.3.2 and PHP 8.2
  * adds support for JPEG XL, LibGD and PHP support pending
  * allows multi-line actions
    * %%{{action
	title=""
	info= ...
}}
%% 
  * ##""[[^ footnote]]""## ((Footnotes extended syntax for auto-generated footnote))
    * you can mix  individual denominators and auto-numbering (introductory footnotes & reference footnotes)
    * ##""[[^§ footnote]]""## allows you to define individual footnote denominators
    * allowed denominators are alphanumeric characters and ##*, †, ‡, §, ‖, ¶##
    * If a already defined footnote denominator is reused, it defaults back to auto-numbering.
    * ##~[[^#10 footnote]]## resets start for auto-numbering
    * ##~[[^c]]##  an empty reference refers to an existing footnote, if there is one 


====Actions====
  * added ##help=1## option to show all available parameters
    * ((ActionHelpOption optional localization is available))
    * %%
Description:
	Creates a link to the edit handler, if the user has the right to edit the given page.

Usage:
	{{edit}}

Options:
	[page="PageName"]
	[text="your text"]
%%
  * ##hashid##: adds ##version## parameter, ##0## links to page, ##1## links to version of the page (default)
  * ##toc##: adds ##start## parameter for toc numbering
  * ##search##: 
    * adds language filter to search in multi-language mode
    * ((ImproveSearch adds full words highlight mode)) (default), use ##hl_simple=1## for ideographic languages such as Chinese and Japanese
    * remembers now 'Search in title only' selection across search pages
  * ##login##: removed check and rehash of legacy password formats
  * ##adminupdate##: adds option to set missing MIME type for files and option to set missing file hash for uploaded files
  * ##files##: added sorting and filter options to form, e.g. ##~{{files form=1 options=1 all=1 media=1}}##
  * added
    * ##admin_replace## -  ((/Doc/English/Actions/AdminReplace allows administrators to do a global string find-and-replace on all wiki pages))
    * ##blog## - ((/Doc/English/Actions/Blog creates a blog in the namespace of your choice))
    * ##editsection## - mainly for internal use
    * ##gallery## - moved from community folder
    * ##navigation## - ((/Dev/Release/R6.1/NavigationAction allows to set a backward and forward link)) to scroll between pages
  * removed
    * ##polls##
    * ##pollsadd##
    * ##pollsarchive##
    * ##pollspreview##
    * ##mostrated##


====Handlers====
  * ##edit##: added ((/Dev/NewFeatures/SectionEdit section editing))
    * Users can enable an option that allows them to edit individual sections of an article (separated by headlines) instead of loading the entire article.
  * ##upload##: 
    * added duplicate file notices
    * allows now hyphen-minus in file name
    * it adds uploaded files to file table in SQL strict mode again, changed default value for caption in file table to ##DEFAULT NULL##
    * checks if the MIME type of the uploaded file matches the file extension (may result in false negatives)
  * ##moderate##: fixed unreachable sub-forum options to delete, move, rename and merge topics
  * ##print##: sets numerated links always as absolute URL
  * removed ##rate## handler
  * ##new##: does no longer shows ##db->root_page## as predefined cluster (as it is often mistaken as root)
    * ##/NewPage## - new page/cluster in root
    * ##/HomePage/NewPage## - possible, however the breadcrumbs navigation may incorrectly suggest that HomePage is the root  directory

====Themes====
  * assigns styles for table headers and columns via ##:nth-child()##
    * %%(hl css) /* users table */
.users col:nth-child(n+1):nth-child(-n+3) {
	width: 5px;
}
.users col:nth-child(4),
.users col:nth-child(n+6) {
	width: 20px;
} %%
  * CSS: uses ##var()## for font-family, specific color attributions and similar
  * breadcrumbs: add the new first argument in the ##$this->get_page_path($tag)## call in header.php
    * %%(hl diff)
-$tpl->breadcrumbs	= $this->get_page_path(false, ' > ', true, true);
+$tpl->breadcrumbs	= $this->get_page_path(null, false, ' > ', true, true);
%%
  * provisional RTL support for ##default## theme
    * added ##[dir=rtl]## CSS classes
  * set visibility tag colors for access modes
  * default theme
    * print and source tab now takes the revision into account
    * browser print mode: shows now only ##<article>## content
    * uses ##:focus-within## pseudo selector for dropdown menus
  * added breeze icons for dark mode

====WikiEdit====
  * ((WikiEdit ECMAScript 2015 Migration))
  * added Unicode support
  * added button and icon for ##""[[^ footnote]]""## and ##""{{action}}""##
  * added WikiEdit icons for dark mode

====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)
  2. appearance: added option to set a theme color for the address bar
  3. removed obsolete convert module
  4. sets ##DEFAULT## for all fields in backup module script
  5. restore: skips ##is_executable()## check for Windows
  6. 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.
  7. added syndication module
====Translations====
  * added Persian language
  * complete Chinese Simplified translation
  * uses now English as fallback for missing message sets
  * now you can add message sets for your own scripts under ##lang/custom.<lang>.php##
    * the user must create the files himself, e.g. ##custom.fi.php## using ##$custom_translation = [];##
    * This way, the user's own message sets are not accidentally overwritten by updates.

====Packages====
updated
  * ((https://github.com/Bad-Behaviour/badbehaviour Bad Behaviour)) 2.2.25
  * ((https://github.com/zenorocha/clipboard.js clipboard.js)) v2.0.11
  * ((https://hashids.org/php/ Hashids)) 5.0.2 ++(((https://github.com/ivanakimov/hashids.php/blob/master/CHANGELOG.md Changelog)))++
  * ((https://github.com/JBlond/php-diff php-diff)) 2.4.0 ++(((https://github.com/JBlond/php-diff/blob/master/changelog.md Changelog)))++
  * ((https://github.com/PHPMailer/PHPMailer PHPMailer)) 6.9.2 ++(((https://github.com/PHPMailer/PHPMailer/blob/master/changelog.md Changelog)))++
  * ((https://github.com/PHPThumb/PHPThumb PHP Thumb Library)) 2.3.1
  * ((/Dev/Projects/SafeHTML SafeHTML)) 1.3.13
  * ((https://simplepie.org/ SimplePie)) 1.8.0 ++(((https://github.com/simplepie/simplepie/blob/master/CHANGELOG.md Changelog)))++
  * ((https://github.com/darylldoyle/svg-sanitizer svg-sanitizer)) 0.20
  * Text_Highlighter 0.8.0
  * ((/Dev/Projects/WikiEdit WikiEdit)) 3.23

See ((/Dev/Release/R6.1/Dependencies core dependencies))
----

Note that the changelog is usually incomplete, for a complete list of changes that went into R6.1, you can browse the ((https://bitbucket.org/wackowiki/wackowiki/commits/all  Commit log)), the ((https://wackowiki.org/bugs/changelog_page.php Bug Tracker Log)) and ((ToDo)) list.