Symphony 2.2 introduced a number of very significant changes for both users and developers. Most of these changes were chronicled on the Symphony blog.

New Features

  • All core code has been fully documented!
  • Symphony now has a core email API (details below and here).
  • There are dozens of new delegates for extension developers, including: delegates to add custom columns to the Publish index; delegates for the creation, editing and deleting of data sources, events, pages, sections, and utilities; delegates for Login and Password Reset; delegates for the enabling/disabling/uninstallation of Extensions; new delegates for appending content; and more! (Official list forthcoming)
  • not-regexp support is now included in all core fields
  • The section index now supports batch-changing of navigation groups
  • Any field that uses the Section Associations feature now has option to hide/show the linked section column
  • Field collapsing is now enabled in the section editor
  • New Symphony jQuery plugins: Pickable and Orderable
  • Accesskeys are now supported (details forthcoming)
  • New entry forms will now autofocus the first field
  • jQuery 1.4.4

Bug Fixes

  • #351: Allow right column of Devkits to scroll if they need to
  • #377: Refined implementation of batch navigation group changing
  • #386: Show param pool in page XML
  • #388: Allow General::writeFile to accept a mode parameter. Installer can now append to existing .htaccess files
  • #398: Update phrasing of 'Send Email' filter to better support localization
  • #401: Don't allow editing of Events when allowEditorToParse is set to FALSE
  • #407: Added General:arraymaprecursive. Configuration class now stripslashes all setting values
  • #417: Add field name in event error message
  • #420: Fix help text styling issue
  • #427: Added Source dropdown validation (required) on Event editor. Prevents PHP error being thrown.
  • #428: Fix duplicator markup problem
  • #431: Add time filtering and relative dates to the date field
  • #433: Escape variables for Static XML
  • #434: Added Page() accessor function to FrontendPage
  • #435: Add public lockExists method to the Mutex class
  • #439: SBL can now use Date & Upload fields
  • #442: Cleanup of Blueprints Sections
  • #446: Fix focus bug in Safari and make use of event delegation to avoid the usage of map which breaks jQuery chaining.
  • #451: Duplictor styling issues
  • #453: Slightly altered UI for extensions listing, add alert if updates required
  • #454: Fix sorting of dynamically added items
  • #462: Empty DS output params show empty <item> element in XML
  • #463: Select Box Link styling bug when adding to a section
  • #464: Duplicator no longer re-orderable
  • #465: Adding a Select Box to section results in blank screen
  • #467: Fixes error reporting bug
  • #468: Author field can now be sorted by username, fixed toggling inconsistency
  • #469: Documentation typo
  • #470: Missing documentation param
  • #474: Row selection - some colors changing on onMouseUp
  • #475: File Upload Field: Validation rule is inserted as Field Label
  • #477: Javascript fix for Remove File
  • #478: Remove pagination from Navigation & Author Datasource types, rewrite Author DS logic.
  • #479: Make the update notification more robust
  • #482: Remove unnecessary Frontend static property
  • #484: removing the Meiryo-font
  • #485: Compatibility commit, Add this->Database back to the Field class
  • #486: Symphony should refrain from altering default form elements wherever possible.
  • #488: Select Box fields can now be required—also addresses #489
  • #492: Fix for events without documentation—also addresses #495 and #497.
  • #494: Optimised Language array
  • #500: Make sure the FieldManager variable exists
  • #505: Redirect to index page if the symphony-page variable is empty
  • #507: Correct a typo—also addressing #520
  • #510: Use example.com in documentation
  • #512: Bump LICENCE year to 2011
  • #513: Ensure that the port is stripped from HTTP_HOST when setting a cookie.
  • #515: Some preventative filter checks
  • #519: Proper checks for displaying Symphony Alerts—also addresses #523 and #524
  • #521: Type checking $existing->dsParamFILTERS
  • #522: Code elements were not styled properly within the section settings
  • #526: Correctly handle each of the extension states on the Extensions page
  • #527: Don't ignore the .gitignore!
  • #529: Fix some translation calls in Adminstration.
  • #531: Ensure that the pagination variables are numeric
  • #539: Fix line height of system alerts
  • #540: Regardless of whether or not 'r' actually works, changed for consistency
  • #543: Fix AddDefaultAuthorAreas delegate
  • #547: Add UNIQUE KEY indexes to fields that definitely should not have multiple rows in the database.
  • #549: Add missing translation to Content/Pages
  • #555: Consistency update, no fields are required by default. Moved Select, Upload, Date and Author fields to Sidebar location by default in Section Editor.
  • #554: Use moz-focus-inner to make buttons styled consistently.
  • #557: Allow " in Section names
  • #558: Add in missing title element to Symphony Components + Preferences
  • #560: Fix variable typo
  • #561: Various style fixes—also addresses #551 and #553 and #562
  • #564: The Date field will no longer always return a valid date when nonsense data is entered into it.
  • #565: Added the AddElementstoAuthorForm delegate.
  • #566: Add missing Email Gateway localisation strings.
  • Fix for login pageAlert error
  • Fix custom author language settings
  • Fix ExceptionHandler bugs
  • If dsParamPAGINATERESULTS is not set (e. g. on updated installs), use the system default 'yes'
  • Fix language management: Load translations for extensions, Load custom author language
  • Rename duplicate Page class in installer
  • Keep fields accessible that are inside a orderable list. Before is wasn't possible to focus these elements.
  • More robust pagination management
  • Fix General::limitWords function
  • Query logged user only once.
  • Fix for URLs with unknown handles
  • Add missing translation strings
  • Fix a renamed variable bug for Navigation
  • Do not submit With Selected post if no rows have been selected
  • Copied flush function from Manager class (which SectionManager no longer extends it)
  • All errors (including warnings) will be raised as Exceptions so they can be dealt with in a more managable way
  • Remove extensions path from .gitignore, this was preventing submodules from being added
  • Fix for addElementToHead index collisions
  • Security improvement: Protect crucial files using htaccess rules.
  • In some environments, chmod may fail and throw Exceptions, suppressing these warnings to restore pre 2.2 behaviour.
  • fixed empty option logic for (un)required checkbox
  • Fix a long running bug with the Dynamic XML DS where 'STOP' would always caused a failed Dynamic XML result to be because of timeout errors
  • Fix no pagination on pre 2.2 datasources
  • Fix the order of the AdministrationPage's XMLElements being appended to the Body so that the AdminPrePageGenerate delegate works again.
  • Fix order of the Form being appended to the Contents in AdministrationPage
  • Fix the exclude parameter in the General::listdirStructure and General::listStructure functions
  • Add trailing slash to the translate AJAX call, prevents a 301
  • Prevent the whole Exception object from ever being completely dumped.

Minor Updates

  • CSS and markup has been cleaned up (details here)
  • Extensions can now have multiple authors
  • When Event priority is the same, sort the execution order alphabetically
  • Add General::sanitize to the Select field
  • Pass page XML by reference to allow extensions to manipulate it
  • Updated deprecated eregi calls to use preg_match in General:sendEmail
  • Lang: Remove unneeded functions Lang::add() and Lang::getBrowserLanguages()
  • Lang: Remove unneeded dependencies on the Extension Manager
  • Lang: Add localizeDate() and standardizeDate() functions
  • Installer: Add new date formats, show full name of available languages
  • Initialize Symphony language early enough to handle custom author settings correctly
  • Admin Markup: Added field handle (type) names to HTML for easier field-specific styling of displaySettingsPanel content
  • Admin Markup: Append ID and class to body element of backend pages. Specific page scan override ID with setBodyId() and can add classes with setBodyClass()
  • Removed sort parameter from listDirStructure, it did nothing
  • Localize and standardize month and day names across the system interface.
  • Add date and time separator to config.
  • Adjust Symphony object to load author and context information (the DOM needs to be ready for this!).
  • Remove ArchiveZip class, it's not used by Symphony at all, Remove ParseXML class, it's not used by Symphony at all
  • Updated XMLElement class to be more PHP5-like
  • Added CRLF deprecation
  • rewrite of the HTMLPage::__buildQueryString to use PHP5 functions
  • only accept translations from activated language extensions
  • Remove default transliteration in favour of the default English language file which contains the same data.
  • Clean up of extension management
  • Clean up of language management during and after install
  • Allow listDirStructure to accept a filter, which in turn allows the ExtensionManager listAll function to now accept a filter
  • Refactor of the XSLTProcess class
  • Enhance JavaScript Context management and start documenting admin.js
  • Port Symphony 3 tag plugin to Symphony 2
  • Correctly add and merge context groups
  • Filter rules have been renamed to reduce ambiguities
  • Replace .odd with the equivalent CSS3 property
  • new constant, SYMPHONY_URL added
  • Make the Author Manager use a pool, reduces queries in particular with the Author field
  • Added ExtensionManager accessor method to the Symphony class
  • make sure that appendFormattedElement() creates new XMLElement() with (empty) attributes array
  • Extra check for when an Author's default area is set to a section that has since been deleted and there are no other sections in the installation.
  • Don't select things that have no input. Check for an array, in the case where nothing has been selected but the action is applied anyway
  • New Configuration Option, strict_error_handling. Defaults to true which will raise E_WARNING to an exception, false will mimic the current Symphony behaviour of ignoring E_WARNING and just writing to the log. Extension developers should strive to prevent E_WARNING's using try/catch blocks. Added mainly for compatibility reasons.
  • Row selection behavior has changed to mimic OS functionality more closely (e.g. Shift+click and Ctrl+click to select ranges and multiple single rows).

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