6.1 Change Log

6.1

(05.10.2024) a401705 -> M26 (Release Notes)


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



1. Configuration

1.1. primary config

  1. new
    • db_vendor
  2. renamed
    • sql_mode_strict to sql_mode
      • 0 - server
      • 1 - session lax
      • 2 - session strict

1.2. 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

1.3. theme config

  • custom_menus - shows custom menu options (hide_toc, hide_index, tree_level)

1.4. 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
    • SQL_MODE_PERMISSIVE to SQL_MODE_LAX
  3. removed
    • XML_HTMLSAX3, see autoload.conf

1.5. conf files

  1. changed
    1. csp_custom.conf
    2. csp.conf
    3. autoload.conf
    4. router.conf

2. Core

  • added option to set the SameSite attribute, default 'Lax' , see constants.php

    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 tag column case-insensitive for ORDER BY and LIKE
    •  ORDER BY tag COLLATE utf8mb4_unicode_520_ci ASC	
    •  WHERE tag COLLATE utf8mb4_unicode_520_ci LIKE	
  • removed polls class
  • uses now the IntlDateFormatter for localizing date and time formats & determining DST according the set timezone
  • adds 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
      
      $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

2.1. 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)
  • 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

2.2. Folders

  • renamed folder wacko to src

3. 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 changes

4. Installer

  • removed legacy code from upgrade process, requires now at least WackoWiki 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

5. Formatters

  • added noinclude formatter
    • %%(noinclude) content not shown when embedded via include action %%
    • The 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
  • 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]] 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

6. Actions

  • added help=1 option to show all available parameters
    • 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
    • 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
  • removed
    • polls
    • pollsadd
    • pollsarchive
    • pollspreview
    • mostrated

7. Handlers

  • edit: added 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

8. Themes

  • assigns styles for table headers and columns via :nth-child()
    •  /* 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
    • -$tpl->breadcrumbs    = $this->get_page_path(false, ' &gt; ', true, true);
      +$tpl->breadcrumbs    = $this->get_page_path(null, false, ' &gt; ', 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

9. WikiEdit

  • ECMAScript 2015 Migration
  • added Unicode support
  • added button and icon for [[^ footnote]] and {{action}}
  • added WikiEdit icons for dark mode

10. 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: skips 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

11. 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.

12. Packages

updated


See core dependencies



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

Read comment (1 comment)