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!

Removed/deprecated

  • #1333 - Removal of unused and potentially insecure General::generatePassword function
  • #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
  • #783 - Deprecated DateTimeObj->getTimeAgo()
  • Removed AddElementToFooter delegate.
  • Removal of a number of deprecated and redundant properties and functions, dev notes #1 has the details
  • The .compact class has been deprecated, use .two.columns and .column classes to achieve the same result moving forward

New Features

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

  • #1321 - Add PagePostDelete delegate
  • #1302 - A new delegate, DataSourcePostExecute to match DataSourcePreExcecute is now available
  • #1193 - Update jQuery to 1.7.2
  • #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
  • #879 - Allow Field::processRawFieldData function to return a $message (breaks backwards compatibility)
  • #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
  • #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
  • #739 - Introduction of two new delegates, PostQueryExecution and QueryExcecutionError which fire when SQL queries have been executed (and when they fail)
  • #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.
  • #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.
  • XMLElement now two new methods, getChild(pos) and getChildByName(name, pos)
  • A new page, /ajax/handle/?string=Your String is available to create handles using Symphony from Javascript
  • 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.
  • 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)

Bug Fixes

  • #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
  • #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

  • #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
  • #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
  • #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'
  • #979 - Duplicate alert bars after successfully saving
  • #977 - Sort data is now stored on the filesystem (Symphony main config file)
  • #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
  • #958 - Make Selectable Windows/Unix compatible
  • #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
  • #939 - Fix odd padding/margin for .triple class
  • #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
  • #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
  • #907 - Revert 'x' icon to Remove Item text in duplicators
  • #905 - Add white navigation highlighting
  • #895 - Minor bug when running event with expect-multiple
  • #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.
  • #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
  • #792 - Update Mutex class to catch Exceptions. Should prevent issues that were randomly occuring with Dynamic XML Datasources
  • #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
  • #731 - Simpler Publish Label implementation
  • #724 - Automatically open collapsed fields that have errors
  • #723 - Begin cleaning up datasource include files to use the new Datasource classes (ongoing work)
  • #700 - Remove help cursor when hovering over captions.
  • #693 - Add DATETIME column for Date fields, drop local/gmt fields
  • 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
  • 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
  • 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
  • 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.
  • 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
  • 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/
  • 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
  • Documentation updates, including #754, #824

Symphony • Open Source XSLT CMS

Server Requirements

  • PHP 5.3-5.6 or 7.0-7.3
  • PHP's LibXML module, with the XSLT extension enabled (--with-xsl)
  • MySQL 5.5 or above
  • An Apache or Litespeed webserver
  • Apache's mod_rewrite module or equivalent

Compatible Hosts

Sign in

Login details