Skip to content

Fork of the official Symphony CMS 2.7.x release which includes various quality of life improvements, fixes, and feature additions.

License

Notifications You must be signed in to change notification settings

pointybeard/symphonycms

 
 

Repository files navigation

Symphony CMS (Extended)

Symphony is a PHP & MySQL based CMS that utilises XML and XSLT as its core technologies. This repository is a fork of the official Symphony CMS 2.7.10 and includes various quality of life improvements and changes.

Requirements

This build of Symphony CMS requires PHP 7.4 or newer.

It is also assumed that the server has Composer pre-installed. Unlike official builds that come with the composer depencies baked in, you will need to run composer in order to load all the reqired libraries. See the Composer "Getting Started" documentation for instructions.

Installation

There are 2 main branches to the Symphony CMS (Extended) repository master and essentials. Each follow a slightly different installation pathway.

master

This is the main branch is a drop-in replacement and can be installed/updated like any other official 2.x release (including migrating from older versions). To clone from git, use the following

$ git clone --depth 1 https://github.com/pointybeard/symphonycms.git symphonycms
$ composer update -vv --no-dev --profile -d ./symphonycms

Then, follow the instructions contained in the official 2.7.x release README doc.

essentials

This branch removes files such as the install and update scripts, index.php, and a few other things, in order to make it installable as a composer dependency in other projects. Notable examples being Symphony CMS: Section Builder and Orchestra.

Add the following to your project's composer.json file

"repositories": [
    {
        "type": "vcs",
        "url": "https://github.com/pointybeard/symphonycms.git"
    }
],
"require": {
    "symphonycms/symphonycms": "dev-essentials"
}

Features

This build of Symphony CMS makes some substantial changes which would be unlikely to be accepted back into the official repository.

The key reason this particular build was created was to support the development of Orchestra which is a meta package for scaffolding and rapidly deploying Symphony CMS builds. Orchestra drastically changes the folder structure of Symphony and provides additional features that wouldn't have been possible without this fork of Symphony CMS.

This build of Symphony also makes extensions like Saxon/C possible, giving long overdue support for XSLT 3.0.

Here are the most notable changes provided by this build of Symphony CMS:

Pre-boot scripts

Pre-boot scripts are run prior to the core Symphony engine being instanciated.

Symphony will looks for the symphony_preboot_config path environment variable, which is a JSON file describing the scripts to include. Currently it only supports including additional files but in future it might include other tasks.

To use the pre-boot behaviour, follow these steps:

  1. Set symphony_enable_preboot to 1 either via apache envvars or .htaccess
  2. Set the path to the pre-boot JSON file with the symphony_preboot_config environment variable. E.g.
SetEnv symphony_enable_preboot 1
SetEnv symphony_preboot_config "/some/path/to/preboot.json"
  1. Create the file specified by symphony_preboot_config and list files to include. Here is an example of a pre-boot config:
{
    "includes": [
        "manifest/preboot/01_test.php",
        "/var/www/html/symphony/manifest/preboot/02_test.php"
    ]
}

Note, when pre-boot scripts are run, the Symphony core has not been initialised, i.e. there is no database connection and the main autoloader has not been included.

JSON formatted config

It is now expected that config will be a JSON file. Using JSON instead of an autogenerated PHP file makes loading, parsing, and saving the config much easier. Not to mention more readable.

Removal of built-in fields

In effort to remove clutter and give developers the option of streamlining their builds even further, all of the built-in fields (Date, Input, Textarea, Select, Taglist, Author, Checkbox, and Upload) have been removed.

To add these fields back in, download and install the Classic Fields Extension. This extension lets you selectively install/uninstall any or all of these core fields as required.

Support for changing XSLT processor

This feature allows extensions to provide additional XSLT processor libaries which are then registered with Symphony and selectable in System Preferences. For example, Saxon/C adds support for XSLT 3.0.

Support for changing Logger

By default, Symphony writes log messages to manifest/logs/main. This feature allows an extension to provide a different logger which can be selected, in favour of the default logger, via the System Preferences. For example, Monolog Logger Extension for Symphony CMS.

Support

If you believe you have found a bug, please report it using the GitHub issue tracker, or submit a fix by forking this library and sending a pull request.

Contributing

To contribute to this project, please see CONTRIBUTING.md for guidelines about how to get involved.

Author & Acknowledgements

License

"Symphony CMS (Extended)" is released under the MIT License. See LICENCE.md for full copyright and license information.

About

Fork of the official Symphony CMS 2.7.x release which includes various quality of life improvements, fixes, and feature additions.

Resources

License

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 84.4%
  • JavaScript 12.3%
  • CSS 3.0%
  • Other 0.3%