Skip to content

Instantly share code, notes, and snippets.

Created August 22, 2011 11:53
Show Gist options
  • Save brendo/1162216 to your computer and use it in GitHub Desktop.
Save brendo/1162216 to your computer and use it in GitHub Desktop.
Symphony 2.3 Release Notes

Symphony 2.3 Release Notes

These release notes are a work in progress and will be updated regularly through the development cycle, things may change from time to time. Symphony 2.3 supports updating from any 2.2.x release.

This is a major release and may break backwards compatibility with existing extensions. It is recommended that extension developers read the Migration Guide for 2.3 and look out for Dev Notes released by the team to help migrate their extensions to this new release.

Release Candidate 4


  • #1321 - Add PagePostDelete delegate
  • Tracking the latest submodule releases


  • #1333 - Removal of unused and potentially insecure General::generatePassword function
  • #1329 - Vertical drawer styling fixes
  • #1328 - Remove references to AppendElementBelowView delegate
  • #1325 - Fix Utility editor styling
  • #1322 - The taglist field now respects the validator setting
  • #1320 - Fix styling issue for some fields in the Section Editor
  • #1318 - Fix private error on the installer
  • #1317 - When changing datasource sources, reinitialise the output parameter naming
  • #1316 - Use the updated Configuration->write() function instead of the deprecated Administration::instance()->saveConfig()
  • #1314 - Only Log message when a language was selected but it could not be found
  • Fix compatibility issue between Publish Filtering and the publish pages when sorting
  • Process all fields in the Section Editor to get all the errors
  • Fix missing sort options setting on the Select Box field
  • Update invalid styling
  • Add overflow-wrap rule in addition to word-wrap for future proofing

Release Candidate 3


  • #1302 - A new delegate, DataSourcePostExecute to match DataSourcePreExcecute is now available


  • #1314 - Fix Dynamic XML namespaces not appearing the Datasource Editor
  • #1313 - The Author's language can override the site language once again
  • #1307 - Alerts are now ordered by Severity
  • #1305 - Fix Notify height crossbrowser (Firefox 12 was too high)
  • #1303 - Fix duplicate queries from occurring when filtering on id or system: date
  • #1299 - Fix error when Datasource did not have an Author
  • #1293 - Fix placement of the error message when a field had a duplicate handle
  • #1291 - Fix 'Save' access key on the System Preferences page
  • #1290 - Fix error when datasource had no included elements
  • #1289 - Fix localisation strings
  • #1284 - The DateTimeObj::validate function will now attempt to validate the date according to Symphony's region settings
  • #1280 - Improved the responsiveness of collapsible animations, especially for Safari
  • #1279 - Fix regression in the XSLT Utilities screen introduced by Symphony 2.2.5 when saving a utility twice that includes encoded characters
  • #1277 - Fix updater not parsing RC rules correctly
  • #1274 - Using the With Apply menu on a field that was added after the section was created (and entries existed) would of resulted in an error, this has been resolved
  • #1272 - Fix the $root-page parameter to be consistent with 2.2.x
  • #1262 - The TimeAgo plugin will now compare in the user's timezone so that it makes more sense
  • Fix JSON class support for PHP 5.2 compatibility
  • Pass $param_pool by reference in the iDatasource interface
  • Ensure that user information is available via Symphony.Context.get('user')
  • Make sure Collapsible's namespace for local storage works across backend areas
  • Add save_state setting to Duplicator which will be passed to Collapsible
  • The AddCustomPreferenceFieldsets delegate now passes $errors making it possible to do validation on the Preferences page
  • Deleting datasources or events from the Datasource/Event Index pages now remove them from the pages they were attached to
  • Position help text in .invalid styling correctly
  • Only parse language files that end in .php
  • Consistent CSS vendor prefixes for FF4, Safari 4, Chrome, IE9 support

Release Candidate 2 (internal)


  • #1270 - Correct the Checkbox's getExampleFormMarkup output
  • #1267 - Fix installer not setting a default timezone
  • #1266 - Don't sort extensions if there are no extensions
  • #1264 - Fix PHP5.2 compatibility
  • #1258 - Make duplicators listen for input and blur events when updating the header text
  • #1254 - Add missing namespaces from the javascript plugins
  • #1253, #1251 - Make javascript translations more robust
  • Fix regression in the Datasource Editor select to show correctly show 'Field Name (Input)' again
  • Update fields to use FieldManager::saveSettings(), a preemptive update for Symphony 2.4
  • Fix the default Forbidden page (when no 403 page was set in Symphony)
  • Add sanitizing to /ajax/translate/
  • Tracking latest JIT Image Manipulation and XSS Filter extensions

Release Candidate 1


  • #1241 - Fix taglist output parameter
  • #1240 - Allow the installer to detect the server timezone instead of always defaulting to GMT
  • #1237 - Fix installing extensions on Install if they don't exist
  • #1227 - Pagination placement is now correctly after the entries table, not in the header
  • #1225 - Fix Symphony error when an invalid date was passed to DateTimeObj::format
  • #1224 - DateTimeObj::standardizeDate now correctly translates names to English
  • #1214 - Add Symphony version to the extensions page
  • #1211 - Fix underline issue on the Upload field
  • #1205 - General alignment and colour improvements for the .frame class
  • The FieldManager, SectionManager and PageManager have some shiny new functions that attempt to consolidate bespoke queries used throughout Symphony. This is part of a long term to let managers take care of abstraction
  • Improved backwards compatibility with the Duplicator plugin
  • Events created under Symphony 2.3 were not returning their XML, this has now been fixed
  • Sanitize $_GET['symphony-page] for authenticated XSS protection
  • Add X-Frame-Options: SAMEORIGIN header as an anti clickjacking protection measure
  • Fix the reporting of errors for the Date field
  • Images are now aligned to the middle of a table cell
  • Add .invalid state for tabs, improved robustness of tab styling
  • Tweaks to the Drawer for niceness and neatness
  • Fix Entry::setDataFromPost function recording errors
  • Various CSS fixes and tweaks throughout the system including the Installer, legends, small screen mode and consistent vendor prefixes
  • Documentation and copy updates

Beta 3

A big thanks to all those who participated in the Symphony 2.3 Hackathon event and contributed with fixes and testing. Your contributions and testing help make Symphony a better product for us all and the team is very thankful!


Debug Devkit

  • #28 - Dot notation parameters elements now correctly highlight
  • #23 - Fix XPath autofocus bug that often occurred in Chrome
  • #19 - Added ability to view ?debug as plain XML with ?debug=raw
  • #15 - Fixed indentation issues when viewing the XML

JIT Image Manipulation

  • #12 - Add Recipes support
  • Move jit-trusted-sites file from /manifest to /workspace/jit-image-manipulation
  • Improve compatibility with other servers other than Apache


Select Box Link field

  • #16 - Ensure options are actually sorted by recency as the help text suggests
  • When required, force users to select an option instead of defaulting to the first option.

XSS Filter

  • #1 - Fix XSS Filter failing on Upload fields


  • #1054 - The Providers concept is now alive in Symphony. We are initially supporting new Datasource types, starting with the Remote Datasource. More information to come soon
  • #991 - The Author field can now output parameters (the Author ID)
  • #989 - A new delegate, EntryPostDelete is now available
  • #896 - When Select Box fields are required, force users to select an option instead of defaulting to the first option
  • #728 - A new page, /ajax/handle/?string=Your String is available to create handles using Symphony from Javacript
  • Complete user interface update across the entire backend (errors, forms, alerts and more!)
  • CSS3 prefixes standardized throughout the stylesheets, fallback background colors introduced for better compatibility with IE and Opera
  • Add not: filtering for the System: ID on Section Datasources.


  • #1193 - Update jQuery to 1.7.2
  • #1180 - Correctly parse datasource dependencies when multiple parameters are used
  • #1169 - Make directory output consistent with/without trailing slashes in the General::listDirStructure and General::listStructure functions
  • #1155 - New 'structure' navigation items will be added before Blueprints & System
  • #1075 - Add accessors for AdministrationPage->_context (getContext) and FrontendPage->_param (Params). It is recommended to use these as the variables will become private in the future
  • #1058 - Use page alerts in the backend when a user attempts to create an entry in a section that has no fields
  • #1053 - Allow the '.' in multiple parameters for the /data/params XML
  • #1039 - Some sanitising improvements for Section/Author/Page Managers
  • #1025 - Show an appropriately worded message when there is no page as request, and no page name is returned for that page.
  • #1023 - Improved publish pagination
  • #1011 - Installer: permission errors silently fail
  • #1000 - Ensure that all values passed to XMLElement, either via constructor or setValue are stored as a string
  • #999 - Fix console error for the Pickable plugin
  • #995 - Sanitize Select Box values for the Datasource Filter.
  • #990 - Re initialize the Tags plugin when duplicators are created
  • #986 - Fix UNIQUE KEY on the Author field to work correctly with 'Allow Multiple'
  • #977 - Sort data is now stored on the filesystem (Symphony main config file)
  • #958 - Make Selectable Windows/Unix compatible
  • #939 - Fix odd padding/margin for .triple class
  • #907 - Revert 'x' icon to Remove Item text in duplicators
  • #872 - Partial fix for Symphony breaking on some URL's. This is about as far as we'll go considering it is an edge case and the proposed solution negatively affects performance.
  • #792 - Update Mutex class to catch Exceptions. Should prevent issues that were randomly occuring with Dynamic XML Datasources
  • #723 - Begin cleaning up datasource include files to use the new Datasource classes (ongoing work)
  • #693 - Add DATETIME column for Date fields, drop local/gmt fields
  • The General::sanitize function now won't double encode strings if they are already encoded
  • Improve error message when the Dynamic DS fails to acquire a lock
  • Fix the first page being shown as a breadcrumb item when creating new page with no parent
  • Fix redirect after new Page creation
  • Fix the PageManager::delete() function. This would previously throw MySQL errors for an unknown column
  • Fix error with the MySQL __error() function
  • PageManager::fetchPageTypes now only returns unique page types
  • New General::ensureType function that ensures parameters are of expected types. Currently implemented in the Widget class
  • Remove legacy code from the Symphony Login page (Beta 5 gems)
  • Update raw SQL queries to use their relevant Manager functions where possible
  • Remove basefont, isindex and frame from XMLElement class. These are deprecated elements and shouldn't be in use
  • Documentation and general backend copy updates


  • #1080 - Widget::wrapFormElementWithError has been renamed to Widget::Error for brevity. The old function is still available until a later release, but it recommended to use Widget::Error in future
  • #989 - The Delete delegate has been renamed to EntryPreDelete for consistency
  • The .compact class has been deprecated, use .two.columns and .column classes to achieve the same result moving forward

Beta 2


  • #868 - Templates' naming conventions
  • #866 - All templates can now be overridden by placing the template in the /workspace/templates folder
  • #840, #759 - Two new plugin's, TimeAgo and Notify are available for Javascript developers. These abstract relative time functionality (eg. an hour ago) and allow a easy way to create Symphony Alerts with Javascript
  • #739 - Introduction of two new delegates, PostQueryExecution and QueryExcecutionError which fire when SQL queries have been executed (and when they fail)
  • XMLElement now two new methods, getChild(pos) and getChildByName(name, pos)


  • #979 - Duplicate alert bars after successfully saving
  • #976 - Sections reordering AJAX fails with 500 error
  • #972 - Improve setting response codes for when Apache is run as CGI instead of a module
  • #963 - Fix grammatical error on the installer page
  • #962 - Fix taglist being obscured in the Publish area
  • #957 - Question mark in ds param output when creating new datasource
  • #950 - Show default cursor on the top level navigation instead of the 'hand'
  • #947 - Use the @placeholder attribute to improve usability on the Datasource and Page Editors
  • #946 - Utilities list in editor uses old blue highlight
  • #945 - Make the Alert hyperlinks consistent case
  • #938 - Only show the Edit Section button for Developers
  • #937 - Add constraint to ensure that Author's email addresses are unique
  • #932 - Table layout is now only set to fixed when necessary. Partially reverts Issue 914
  • #931 - Ensure success Alert's only appear if there are no Error Alerts
  • #929 - Implement Breadcrumbs for both the Pages index and editor
  • #927 - Better error handling when field settings cannot be retrieved
  • #905 - Add white navigation highlighting
  • #731 - Simpler Publish Label implementation
  • #724 - Automatically open collapsed fields that have errors
  • Make the ExtensionManager handle the namespace for extension.meta.xml files
  • If multiple extensions subscribe to the same delegate these will now be called in alphabetical order instead of install order.
  • SQL Injection prevention for the PageManager class
  • Authors DS no longer queries for default_area if it has not been set
  • Various documentation updates

Beta 1


Complete UI Overhaul including dedicated pages for Datasources, Events and Utilities, Breadcrumbs to aid usability, the removal of the Footer.

  • #879 - Allow Field::processRawFieldData function to return a $message (breaks backwards compatibility)
  • #799 - UI: Headline Markup
  • #795 - Add extra HTTP verb support to the Gateway class, POST, GET, PUT and DELETE are all supported
  • #794 - Added DataSourcePreExecute delegate
  • #776, #616 - Add text-overflow to all <th> elements on the entries table
  • #774 - A PageManager class now exists to provide an interface to Pages (and their Page Types). All 'file' based Managers now implement a FileResource interface
  • #761 - The Checkbox field now is available as an Output Parameter
  • #759 - A page can now have multiple alerts
  • #731 - Core fields now have a Publish Label setting. This is a cosmetic label that is only shown in the Publish area to allow a Field's name to change without having to update all datasources and application logic.
  • #728 - Datasources now output multiple params in a new syntax, $ds-handle.field-name. The old syntax is still supported for the immediate future for backwards compatibility.
  • #727 - AuthorManager::fetchByID $limit and $start do not work
  • #722 - The SectionManager and FieldManager fetch method now supports an array of $ids for the first parameter
  • #711 - Abstract REGEX filtering to a dedicated Field->buildRegexSQL function
  • #695 - The Dynamic XML Datasource can now consume JSON sources.
  • #673 - Update jQuery to 1.7.1
  • #622 - The Installer and Updater have been streamlined and updated. Extensions are now installed during installation, localisation is improved and the updater logic is cleaner.
  • All Javascript errors that occur on the backend are now logged to the Symphony log using window.onerror
  • The FrontendPage class now has setEnv which allows the environment to be updated by extensions
  • Two new Symphony accessors, Symphony::Log() and Symphony::Profiler() are now available. Direct access to these variables is now private
  • Navigation DS is no more efficient by only querying for columns it uses and checks to see if a page has children
  • Translations are now organised in a more performant way by only using regular expression where required (breaks backwards compatibility)


  • #923 - DateTimeObj::validate should validate timestamps too
  • #918 - File Upload as first Column does not link when no file is uploaded
  • #916 - Fix broken regular expression in the Session class
  • #909 - General::listStructure parameter $strip_root is broken
  • #895 - Minor bug when running event with expect-multiple
  • #841 - Publish page filter '*' results in a Fatal Error
  • #830 - Add numero and degree symbols to transliterations
  • #826 - The $current-path param now no longer includes the query string
  • #808 - Invert order of the <title> elements
  • #769 - Fix indentation of Dynamic Datasources to be consistent
  • #751 - General::realiseDirectory is no longer subject to umask nuances
  • #749 - Reset entry_id to null when using Event's Allow Multiple filter. This allows an event to contain new and existing entries
  • #745 - Configuration cleanup, allow_page_subscription, strict_error_handling, character_set, character_encoding and runtime_character_set_alter have been removed
  • #743 - All core fields now explicitly set their table collation/character set to be UTF-8
  • #741 - Don't sanitize the value before creating a handle when grouping on the Input field.
  • #737 - Correct inconsistent styling for select box field under section editor
  • #700 - Remove help cursor when hovering over captions.
  • Hiding a Section will no longer result in Author's seeing a Forbidden page when they attempt to view a entry from that Section. This reverts back to 2.1.x behavior.
  • Documentation updates, including #754, #824


  • #783 - Deprecated DateTimeObj->getTimeAgo()
  • Removed AddElementToFooter delegate.
  • Removal of a number of deprecated and redundant properties and functions, dev notes #1 has the details
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment