diff --git a/.travis.yml b/.travis.yml index 986445dcf..b235b4be8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -40,6 +40,7 @@ before_script: - composer self-update || true - phpenv rehash - phpenv config-rm xdebug.ini + - echo 'memory_limit = 2G' >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini - git clone git://github.com/silverstripe-labs/silverstripe-travis-support.git ~/travis-support - "if [ \"$BEHAT_TEST\" = \"\" ] && [ \"$CMS_TEST\" = \"\" ]; then php ~/travis-support/travis_setup.php --source `pwd` --target ~/builds/ss; fi" - "if [ \"$BEHAT_TEST\" = \"1\" ] && [ \"$CMS_TEST\" = \"\" ]; then php ~/travis-support/travis_setup.php --source `pwd` --target ~/builds/ss --require silverstripe/behat-extension; fi" diff --git a/cache/Cache.php b/cache/Cache.php index 672355261..cf5518c2f 100644 --- a/cache/Cache.php +++ b/cache/Cache.php @@ -146,7 +146,7 @@ class SS_Cache { * @param string $frontend (optional) The type of Zend_Cache frontend * @param array $frontendOptions (optional) Any frontend options to use. * - * @return Zend_Cache_Core The cache object + * @return CacheProxy|Zend_Cache_Core */ public static function factory($for, $frontend='Output', $frontendOptions=null) { self::init(); @@ -175,8 +175,8 @@ class SS_Cache { $backend = self::$backends[$backend_name]; $basicOptions = array( - 'cache_id_prefix' => md5(BASE_PATH) . '_' . $for . '_', - ); + 'cache_id_prefix' => md5(BASE_PATH) . '_' . $for . '_', + ); if ($cache_lifetime >= 0) { $basicOptions['lifetime'] = $cache_lifetime; @@ -188,8 +188,14 @@ class SS_Cache { require_once 'Zend/Cache.php'; - return Zend_Cache::factory( + $cache = Zend_Cache::factory( $frontend, $backend[0], $frontendOptions, $backend[1] ); + + if (!empty($frontendOptions['disable-segmentation'])) { + return $cache; + } + + return Injector::inst()->createWithArgs('CacheProxy', array($cache)); } } diff --git a/cache/CacheProxy.php b/cache/CacheProxy.php new file mode 100644 index 000000000..07a75a33e --- /dev/null +++ b/cache/CacheProxy.php @@ -0,0 +1,123 @@ +cache = $cache; + + parent::__construct(); + } + + public function setDirectives($directives) { + $this->cache->setDirectives($directives); + } + + public function setConfig(Zend_Config $config) { + return $this->cache->setConfig($config); + } + + public function setBackend(Zend_Cache_Backend $backendObject) { + return $this->cache->setBackend($backendObject); + } + + public function getBackend() { + return $this->cache->getBackend(); + } + + public function setOption($name, $value) { + $this->cache->setOption($name, $value); + } + + public function getOption($name) { + return $this->cache->getOption($name); + } + + public function setLifetime($newLifetime) { + return $this->cache->setLifetime($newLifetime); + } + + public function getIds() { + return $this->cache->getIds(); + } + + public function getTags() { + return $this->cache->getTags(); + } + + public function getIdsMatchingTags($tags = array()) { + return $this->cache->getIdsMatchingTags($tags); + } + + public function getIdsNotMatchingTags($tags = array()) { + return $this->cache->getIdsNotMatchingTags($tags); + } + + public function getIdsMatchingAnyTags($tags = array()) { + return $this->cache->getIdsMatchingAnyTags($tags); + } + + public function getFillingPercentage() { + return $this->cache->getFillingPercentage(); + } + + public function getMetadatas($id) { + return $this->cache->getMetadatas($this->getKeyID($id)); + } + + public function touch($id, $extraLifetime) { + return $this->cache->touch($this->getKeyID($id), $extraLifetime); + } + + public function load($id, $doNotTestCacheValidity = false, $doNotUnserialize = false) { + return $this->cache->load($this->getKeyID($id), $doNotTestCacheValidity, $doNotUnserialize); + } + + public function test($id) { + return $this->cache->test($this->getKeyID($id)); + } + + public function save($data, $id = null, $tags = array(), $specificLifetime = false, $priority = 8) { + return $this->cache->save( + $data, + $this->getKeyID($id), + $tags, + $specificLifetime, + $priority + ); + } + + public function remove($id) { + return $this->cache->remove($this->getKeyID($id)); + } + + public function clean($mode = Zend_Cache::CLEANING_MODE_ALL, $tags = array()) { + return $this->cache->clean($mode, $tags); + } + + /** + * Creates a dynamic key based on versioned state + * @param string $key + * @return string + */ + protected function getKeyID($key) { + $state = Versioned::get_reading_mode(); + if ($state) { + return $key . '_' . md5($state); + } + return $key; + } +} \ No newline at end of file diff --git a/core/Diff.php b/core/Diff.php index a1c5fd6e7..39f61b757 100644 --- a/core/Diff.php +++ b/core/Diff.php @@ -278,15 +278,17 @@ class _DiffEngine if (empty($ymatches[$line])) continue; $matches = $ymatches[$line]; - reset($matches); - while (list ($junk, $y) = each($matches)) + $y = reset($matches); + do { if (empty($this->in_seq[$y])) { - $k = $this->_lcs_pos($y); - USE_ASSERTS && assert($k > 0); - $ymids[$k] = $ymids[$k-1]; - break; - } - while (list ($junk, $y) = each($matches)) { + $k = $this->_lcs_pos($y); + USE_ASSERTS && assert($k > 0); + $ymids[$k] = $ymids[$k - 1]; + break; + } + } while (false !== ($y = next($matches))); + + while (false !== ($y = next($matches))) { if ($y > $this->seq[$k-1]) { USE_ASSERTS && assert($y < $this->seq[$k]); // Optimization: this is a common case: @@ -797,18 +799,19 @@ class Diff $content = str_replace(array(" ","<", ">"),array(" "," <", "> "),$content); $candidateChunks = preg_split("/[\t\r\n ]+/", $content); - while(list($i,$item) = each($candidateChunks)) { + $item = reset($candidateChunks); + do { if(isset($item[0]) && $item[0] == "<") { $newChunk = $item; while($item[strlen($item)-1] != ">") { - list($i,$item) = each($candidateChunks); + $item = next($candidateChunks); $newChunk .= ' ' . $item; } $chunks[] = $newChunk; } else { $chunks[] = $item; } - } + } while (false !== ($item = next($candidateChunks))); return $chunks; } diff --git a/core/manifest/ConfigManifest.php b/core/manifest/ConfigManifest.php index 6bb5485b3..caf63f716 100644 --- a/core/manifest/ConfigManifest.php +++ b/core/manifest/ConfigManifest.php @@ -110,7 +110,7 @@ class SS_ConfigManifest { /** * Provides a hook for mock unit tests despite no DI - * @return Zend_Cache_Frontend + * @return Zend_Cache_Core */ protected function getCache() { @@ -118,6 +118,7 @@ class SS_ConfigManifest { 'automatic_serialization' => true, 'lifetime' => null, 'cache_id_prefix' => 'SS_Configuration_', + 'disable-segmentation' => true, )); } diff --git a/core/manifest/SilverStripeVersionProvider.php b/core/manifest/SilverStripeVersionProvider.php index c0e6ecf9f..b1cd92426 100644 --- a/core/manifest/SilverStripeVersionProvider.php +++ b/core/manifest/SilverStripeVersionProvider.php @@ -83,7 +83,11 @@ class SilverStripeVersionProvider $lockData = array(); if ($cache) { - $cache = SS_Cache::factory('SilverStripeVersionProvider_composerlock'); + $cache = SS_Cache::factory( + 'SilverStripeVersionProvider_composerlock', + 'Output', + array('disable-segmentation' => true) + ); $cacheKey = filemtime($composerLockPath); if ($versions = $cache->load($cacheKey)) { $lockData = json_decode($versions, true); diff --git a/dev/DevelopmentAdmin.php b/dev/DevelopmentAdmin.php index 55584cb20..5458a71de 100644 --- a/dev/DevelopmentAdmin.php +++ b/dev/DevelopmentAdmin.php @@ -76,7 +76,8 @@ class DevelopmentAdmin extends Controller { // Backwards compat: Default to "draft" stage, which is important // for tasks like dev/build which call DataObject->requireDefaultRecords(), // but also for other administrative tasks which have assumptions about the default stage. - Versioned::reading_stage('Stage'); + Versioned::reading_stage(Versioned::DRAFT); + Versioned::set_default_reading_mode(Versioned::get_reading_mode()); } public function index() { diff --git a/dev/Profiler.php b/dev/Profiler.php index 435c553bb..ef0327ef2 100644 --- a/dev/Profiler.php +++ b/dev/Profiler.php @@ -161,7 +161,7 @@ class Profiler { echo"============================================================================\n"; print( "Calls Time Routine\n"); echo"-----------------------------------------------------------------------------\n"; - while (list ($key, $val) = each ($this->description)) { + foreach ($this->description as $key => $val) { $t = $this->elapsedTime($key); $total = $this->running[$key]; $count = $this->count[$key]; diff --git a/docs/en/02_Developer_Guides/08_Performance/01_Caching.md b/docs/en/02_Developer_Guides/08_Performance/01_Caching.md index ca76d60da..1a680d0ae 100644 --- a/docs/en/02_Developer_Guides/08_Performance/01_Caching.md +++ b/docs/en/02_Developer_Guides/08_Performance/01_Caching.md @@ -90,6 +90,20 @@ e.g. by including the `LastEdited` value when caching `DataObject` results. // set all caches to 3 hours SS_Cache::set_cache_lifetime('any', 60*60*3); +### Versioned cache segmentation + +`SS_Cache` segments caches based on the versioned reading mode. This prevents developers +from caching draft data and then accidentally exposing it on the live stage without potentially +required authorisation checks. This segmentation is automatic for all caches generated using +`SS_Cache::factory` method. + +Data that is not content sensitive can be cached across stages by simply opting out of the +segmented cache with the `disable-segmentation` argument. + +```php +$cache = SS_Cache::factory('myapp', 'Output', array('disable-segmentation' => true)); +``` + ## Alternative Cache Backends By default, SilverStripe uses a file-based caching backend. diff --git a/docs/en/04_Changelogs/2.0.1.md b/docs/en/04_Changelogs/2.0.1.md deleted file mode 100644 index 9aa04ba18..000000000 --- a/docs/en/04_Changelogs/2.0.1.md +++ /dev/null @@ -1,46 +0,0 @@ -# 2.0.1 (2007-04-17) - -SilverStripe 2.0.1 was released on '''17 April 2007''' and had the following changes: - -## Overview - - * Improved layout of UserDefinedForm submissions in CMS - * Don't show name field on root folder in Assets section - * Mime types fallback for servers don't have /etc/mime.types - * mb_string module is now an optional dependency - * Added strong_create method to Object, as useCustomClass was not working correctly - -## Bugfixes - - * Sapphire - * Text->FirstParagraph() now only shows the first paragraph - * Fixed HTMLText->Summary() - * Fixed layout issues on IE7 for TreeDropdownField - * Don't show Akismet errors to user - * Removed overloaded MemberTableField->sourceItems() that was causing problems - * Fixed UserDefinedForm submission emails - * Fixed UserDefinedForm permissions - * If a file extension doesn't have a maximum upload size associated with it, then allow uploads of any size - * Fixed a bug with the TreeMultiselectField that prevented it from displaying the checkboxes - * Made Scheduled tasks concrete so they can be instantiated - * TableField fixes - * Fixed security vunerability in search - * GD::color_web2gd() was using incorrect substr - * Fixed last link css - * Fixed duplicate checkbox fields in UserDefinedForm - * Fixed css in UserDefinedForm - * CMS - * Fixed sizing of tabs in CMS - * Fixed popup for single asset in Files & Images section - * Fixed link to CMS on default homepage - * Fixed permissions table in Security section - * Fixed el no properties error in IE - * Pressing the flash button a second time now hides the dropdown - * Installer - * Fixed MySQL version check - * Merge with existing .htaccess file - * Test that mod_rewrite is working - * Added option to delete installer files after successful install - * Fixed PHP4 parse error so installer loads and shows correct error message - * Apache test passes if apache is used but apache php functions are not available - * SilverStripe needs at least PHP version 5.0.4 diff --git a/docs/en/04_Changelogs/2.0.2.md b/docs/en/04_Changelogs/2.0.2.md deleted file mode 100644 index c1ae17d74..000000000 --- a/docs/en/04_Changelogs/2.0.2.md +++ /dev/null @@ -1,155 +0,0 @@ -# 2.0.2 (2007-07-14) - -SilverStripe 2.0.2 was released on '''14 July 2007''' and had the following changes: - -## Overview - - * BlackCandy is the new default theme - * Added pagination for page comments - * Updated date field in CMS-edited forms to use CalendarDateField - * Added 'open in new window' checkbox to link inserter - * Added dimension fields when inserting images - -## Features and Enhancements - - * Much more API Documentation - * Modules must now have _config.php files in order to be loaded - * New Classes - * PermissionProvider - * Improved Classes - * CalendarDateField - * Added a calendar icon - * CheckboxSetField - * Prepared for use editing a many-many join in the CMS, popualted with a SQLMap object - * ClassInfo - * Added implementorsOf() - * ContentNegotiator - * Added set_encoding() to choose a character set other than utf-8 - * DatabaseAdmin - * Removed populate() as it was a security risk, the initial content is now loaded via requireDefaultRecords() - * DataObject - * Added add_extension() for adding decorators in _config.php - * DataObjectDecorator - * Added extraDBFields() for modifying the decorated data objects, adding extra database fields - * Email - * Added send_all_emails_to() - * Added cc_all_emails_to() - * Added bcc_all_emails_to() - * Replaced sentLiveErrorsTo() with send_errors_to(), for more flexibility - * Form - * Added current_action() - * Added single_field_required() - * FormField - * Added Required(), so that you can put asterisks into a form template if you wish - * GenericDataAdmin - * Updated to use new permission model - * LeftAndMain - * Added second argument to setApplicationName() so that the name in the top corner and the name shown elsewhere can be 2 different strings - * Permission - * Added get_codes() - * Profiler - * Added trace argument to show() - * Added profiling scaffolds - * Added ?profile_trace=1 url variable tool to show a trace on the profiler - * Sorted the output of profiler - * Improvements to profiling information - * TableField - * Added option to aid putting TableFields inside the ComplexTableField popup - * TreeDropdownField - * Added setTreeBaseID(), for showing a sub-tree in your field - * Javascript - * Added event.setStyle to prototype_improvements.js - * Add class text field to image properties dialog in TinyMCE - * Added ?debug_behaviour=1 URL option for debugging behaviour calls with Firebug - -## Bugfixes - - * CMS - * Forms in newsletter & security section were incorrectly submitting when enter was pressed - * Fixed search in MemberTableField - * Don't show popup when validation fails in Security section - * Fixed bug where scrollbars aren't shown in the CMS - * Let CMSMain be used to manage objects without Sort - * The help button now redirects to http://userhelp.silverstripe.com - * Version displayed in CMS now works correctly - * Fixed CMS action button support when text size increases - * Added message when report is empty - * fixed (overrides) to CSS to avoid larger font-size due to em values - * Fixed tree scrolling and resizing issues - * Fixed sizing issues with CMS right content area - * Fixed bug with image insertion - * Fixed bug where new pages weren't being highlighted in the CMS - * Fixed bug where the last page in the site tree wasn't being highlighted in the CMS - * Fixed reordering of groups in security section - * Improvements to image inserter - * Sapphire - * Reduced warnings when E_NOTICE is enabled - * Fixed validation of date fields in a user defined form - * Fixed multiple security groups being created when logging in with default admin - * Fixed permissions for administrating page comments - * Fixed ContentController::PageComments() method to die if spammers are POSTing form data when comments are disabled - * Fixed permission checking on PHP 5.0.5 - * Fixed 'cannot access protected property' error in Security section on PHP 5.0.5 - * Fixed javascript validation of forms - * Fixed error when asp_tags = On - * Fixed bug where you have a non-required field with numeric validation - * Added a limit of 20 steps in Breadcrumbs generation - * Changed SiteTree.Title length from 100 to 255 - * Fixed random password generator in Member::createNewPassword() - * Fixed BatchProcess to not display an error if no objects could be processed - * Fixed a bug where a user is redirected incorrectly after logging in - * Changed temp-folder selection to not leave temp files lying around, and put silverstripe temp files into a silverstripe-cache folder - * Made guid of PageComments in rss feed unique - * Removed duplicate XML class - * Fixed bugs caused by missing html elements - * Fixed code to remove need for short_open_tag - * Fixed FileSize generation for sizes of just over 1 meg - * only show $messageBlock in FormField::FieldHolder() if $Message is existing - * fixed rightTitle and id in FormField::FieldHolder() - * Fixed ?isDev=1 mode - * Set default of sendWarnings on Debug::send_errors_to - * Fixed formatting of error emails sent from ajax requests - * Removed debug plumbing from the results of Debug::backtrace() - * Simplified return data of htmlEmail, an inconsequential internal optimisation - * Create assets folder if it doesn't exist when uploading a file - * Fixed bug in SiteTree::NestedTitle() - * Don't append /home to the home page URL - * Small fix for windows installations - * Fixed efficiency problems in Versioned::get_latest_version - * Fixed File::sync(), to let it recurse into new directories in a single execution - * Fixed bug with getting form action that was breaking form submission and complextablefield pop-up - * Fixed SQLMap iteration - * Simplified EmailField validation error message - * Fixed some bugs in the debug emailer - * Reduced amount of ajax-refetching that the TreeSelectorFields do - * Fix macron support in reports - * Improved debug message (remove big blocks of redundant data) - * Allow for the disabling of default buttons. Apply this to CMSMain and GenericDataAdmin in the administration, so that we don't default to clicking the *DELETE* button. - * Added default value to first arg of permissionFailure(); it's not actually used! - * Improved handling of EditableFormFields on new UserDefinedForms - * Improved search results message shown on first load - * Made calendar control register a date change when the calendar is used - * Set some good defaults in DataObjectSet::TotalPages() if they have not been set - * Changes to support forum - * Require authenficiation to do a db/build on live sites - * Close directories before trying to remove them - * Fixed a bug where CheckboxSetField wouldn't save if there was a method the same as the field name - * Fix multiple "broken" in class attribute of HTML Content - * Fixed bug with TreeDropdownField when you clicked the expand link 3 or more times, it wouldn't close - * Fixed bug when editing properties of new text fields - * Fixed duplicate of UserDefinedForm objects - * JSParty - * Fixed a bug where you couldn't always edit the bottom of an WYSIWYG editor field - * Ensure that WYSIWYG context menu always appears on the screen - * Javascript performance improvements - * Fix weird bug in behaviour to do with class.applyToChildren - * Improved console.log alternative - * Installer - * Added option of installing either the default template, or the tutorial template - * mod_rewrite check now works with http authentification - * Workaround for 'URL file-access is disabled in the server configuration' using curl for mod_rewrite test - * Better error message if the installer can't detect the web server - * Added an alternative .htaccess configuration - * Less file permissions required by the installer - * Made deleting the installer files more prominent, it now deletes all the installations files, not just php. - * MySQL password is now a hidden field. diff --git a/docs/en/04_Changelogs/2.1.0.md b/docs/en/04_Changelogs/2.1.0.md deleted file mode 100644 index 404e55286..000000000 --- a/docs/en/04_Changelogs/2.1.0.md +++ /dev/null @@ -1,171 +0,0 @@ -# 2.1.0 (2007-10-02) - -SilverStripe 2.1.0 was released on '''2 October 2007''' and had the following changes: - -## Overview - - * Comment administration section, and comment moderation - * Allow CMS users to limit view/edit access to a page - * Show an rss link for page comments on each page - -## Upgrading - -### Too many redirects - -A problem occurs of 'too many redirects' or the page just doesn't load (home page) because of these situations: - - * Access tab for home page has 'logged in users only', OR - * NO radio buttons have been set. This happens when upgrading site from old DB. - -It's caused by a redirect to Security/login on the home page controller, which is blocked off, so you can't actually -login, so it infinitely loops a redirect. See http://open.silverstripe.com/ticket/1488 - -## Features and Enhancements - - * Theme support - * Widget support - * Better extension API - * Unit testing framework - * More API documentation - * Added support for __ss_environment.php files - * New classes - * BankAccountField - * BBCodeParser - * HasManyComplexTableField - * HasOneComplexTableField - * ManyManyComplexTableField - * NewsletterType - * RestfulService (from mashups module) - * Improved classes - * ComplexTableField - * Validation in popup - * ContentController - * Added project() - * Controller - * Added redirectedTo() - * Convert - * Added raw2htmlatt() - * Added raw2mailto() - * DatabaseAdmin - * Drastically improved database build performance - * DataObject - * Added ID,ID,ID syntax for populating many-many joins - * DataObjectDecorator - * Allow member CMS fields to be added - * DataObjectSet - * Added getRange() - * Date - * Added past_date() - * Director - * Added set_dev_servers() - * Added set_test_servers() - * Added redirected_to() - * Refactored CMS page-URL accessing to use ->AbsoluteLink(), which can be overridden by defining alternateAbsoluteLink() - * Debug - * Optionally hide backtrace-headers in message() and show() (applied in 'showqueries') - * Email - * MimeType-fallback (from /etc/mime.types) - * Improved validation in is_valid_address() - * FieldSet - * Added insertAfter() - * Form - * Automatic filesystem backup of POST-data - * FormField - * Support for right-aligned titles - * Custom CSS-classes by addExtraClass() and removeExtraClass() - * Group - * Added Description field - * HtmlEditorField - * Allow classes other than 'typography' to be set - * Image - * Added PaddedImage() - * ImageField - * Added readonly transformation - * PageCommentInterface - * Added anchors to page comments, and made rss feed link to them - * Permission - * Added $strict flag to check() - * Allow passing of an array of permission codes to get_members_by_permission() - * Added get_groups_by_permission() - * PhoneNumberField - * Improved validation - * Security - * Added basicauthlogin() - * SecurityAdmin - * Added EDIT_PERMISSIONS permission code - * TableField - * Validation and RequiredFields - * TableListField - * Added sorting, highlighting, formatting - * Improved styling - * TreeDropdownField - * Improved styling - * Varchar - * Added RTF() - * ViewableData - * Added `<% if HasPerm(PERM_CODE() %>` for templates - * Javascript - * Implemented showIndicator() and hideIndicator() - * Improved statusMessage() to clear manually instead of fixed interval - * Added hideStatusMessage() - -#### Bug Fixes - - * CMS - * Fix specific newsletter bug - * Don't show classes user doesn't have permissions to change to in class dropdown - * Fix reading of Live pages in CMSMain - * Fix double page reading after changing the class - * Fix insert flash - * Fix version regex for release candidates - * Fix delete in Files and Images section - * Fixed saving root folder causes error - * Fixed "non-numeric ID" error that occurs when visiting newsletter section for a newsletter that doesn't exist (caused by session sometimes) - * Fixed CMS sort subpages bug - * Sapphire - * Improved spam detection - * Support for running SilverStripe in safe mode and under open_basedir restrictions - * PHP notice fixes - * Use normal authentification rather than basicauth for db/build - * Fix CSS of profiler pop-up - * Changed DropdownField $emptyString syntax from '0' to '' - * Fixed IE6 DOM-parsing bug caused by FormResponse::load_form() - * Triggering previewwrite for 'delete' and 'replace' SQL-actions - * Changed record-insertion in DataObject - * Boolean accepts database-default - * Fixed Permission::get_members_by_permission() - * Added memory_limit to publishall() - * Fix many-many component set relation setting - * The Link for a RedirectorPage points to its target - * Add SQL_ prefix in place it was missing in Email - * Added a check to make sure record exists before calling hasMethod on it in CheckboxSetField - * Fixed bug in DataObject::addStaticVars() - * Check for string 'true' as well as boolean in SiteTree::MetaTags() - * Fix AllNewsletters value not being passed to OptionSetField in SubscribeForm - * Improved the encapsulation of ErrorPage publication - * Fix redirect back after failing login - * Fixed renaming of .tar.gz and .tar.bz2 files - * Fixed validation of DateField, EmailField and NumericField - * Fix livesite bug for visibility handling difference between PHP5.2.0 and PHP5.1.6 - * Changed colouring of db/build to be more appropriate for the actual meaning of the messages - * Fixed redirection from /home/ to /./ in IE6 - * Use the homepage as a model for the security base-page, so that things like the current subsite are factored in - * Sorted permission codes in Permission::get_codes - * Changes to support gallery module - * Added missing has_many in DataObjectDecorator - * Replace empty strings in SQL queries with NULL - * JSParty - * TinyMCE has been updated to 2.1.1.1 - -Installer - - * New installer look based on BlackCandy - * Use the new theme system - * Add first and last name fields - * Added ability to set servers that will be in dev mode - * When the posix module isn't present, throw a warning instead of dying - * Warn if PHP version is less that 5.2.0 in support of GoPHP5 (http://www.gophp5.org) - * Added favicon to installer and default template - * Optional reporting of version information to SilverStripe - * Installer now runs with short tags disabled - * open_basedir and safe mode fixes diff --git a/docs/en/04_Changelogs/2.1.1.md b/docs/en/04_Changelogs/2.1.1.md deleted file mode 100644 index c737f2d5e..000000000 --- a/docs/en/04_Changelogs/2.1.1.md +++ /dev/null @@ -1,22 +0,0 @@ -# 2.1.1 (2007-11-02) - -SilverStripe 2.1.1 was released on '''2 Nov 2007''' and had the following changes: - -## Bug Fixes - - * CMS - * BBCode help link now works inside CMS - * Fixed invalid 'cursor: normal' CSS in cms_left.css - * Ensure ComplexTableField CSS is loaded in CMS - * Fixed blank comments showing in Comment Admin - * Ensure behaviour is applied correctly to new fields in a UserDefinedForm - * Fixed fatal error in Newsletter Admin on some servers - * Sapphire - * Fix infinite redirects when upgrading from 2.0.2 - * Use the hostname, not the ip address, in dev/test mode tests - * Changed the include of the BBCodeParser so it works on more systems - * Fixed saving of HasOneComplexTableField and HasManyComplexTableField when value is undefined - * Removed extra comma in TableListField.js - * Fixed redirection of login when login fails - * Fixed bug where removing a comment via ajax removed all comments from display - * Fix $_SESSION not saving correctly on some servers diff --git a/docs/en/04_Changelogs/2.2.0.md b/docs/en/04_Changelogs/2.2.0.md deleted file mode 100644 index 80577b52c..000000000 --- a/docs/en/04_Changelogs/2.2.0.md +++ /dev/null @@ -1,341 +0,0 @@ -# 2.2.0 (2007-11-28) - -SiverStripe 2.2.0 was released on '''28 November 2007''' and had the following changes: - -## Upgrading - -### Login Form - -Check that you have a Layout/Page.ss file for your site, or alternately have a Security_login.ss template. -Your template file needs a $Form variable for it to work. This is where the login form gets included. Without either of -these, the Security/login form will be blank. - - -### Form Actions HTML/CSS - -Check css/js and subclassed templates of Form.ss for changed markup. A global search for "p.Actions" should cover both -js/css changes. - - :::ss - // before -
- // after -
` to `
`) (changeset 50849)
- * updated en_US master entities (changeset 50844)
- * updated en_US master entities (changeset 50844)
- * updated en_US master entities (changeset 50844)
- * fixed PHP notices (changeset 50840)
- * fixed PHP notices (changeset 50838)
- * formatting, fixed PHP notices (changeset 50836)
- * fixed PHP notice (changeset 50829)
- * documentation (changeset 50814)
- * #2285 - Fixed widget editor (changeset 50812)
- * added $searchable_fields in preparation for a more generic search implementation, currently limited to Member.php and MemberTableField.php (mainly to fix bugs caused by r49774 and r47856) (changeset 50805)
- * fixed weird indentation formatting in Member.php (changeset 50805)
- * Fixed default-setting for link anchor (changeset 50786)
- * Added 'anchor' option to link inserter (changeset 50783)
- * Fixed svn:externals (changeset 50776)
- * Moved externals to used HTTP for 3rd-party friendliness (changeset 50764)
- * fixed typo (changeset 50729)
- * added database indexes for AuthorID and PublisherID (changeset 50723)
- * #2265 Installer falsely claims modrewrite fails (mamp) (changeset 50697)
- * #2295 - DataObjectSets cannot be iterated over multiple times concurrently (changeset 50683)
- * #2280 - Fixed XML parsing errors in CTF (changeset 50488)
- * #2287 - Removed notice-level error when geoip's not installed (changeset 50487)
- * Fixed newlines in to-do report (changeset 50361)
- * #2277 - Fixed notice-level error on controllers that are direct subclasses of controller (changeset 50352)
- * Added support for password and old_password encryption mechanisms if you're using MySQL (changeset 50290)
- * Small fix for session bugs on Lightspeed server (changeset 50245)
- * A bit of a hack to fix double-escaped URLs in the CMS. (changeset 50214)
- * Fixed CMS bottom-navigation after publish, when using the subsites module (or other alternateAbsoluteLink implementors) (changeset 50205)
- * Fixed password emailing for edited members (changeset 50200)
- * Allow use of on controller extensions (changeset 50180)
- * Fixed 4.1-sort-by-group-aggregate query rewriter for sort functions containing columns, eg, ORDER BY if(A,B,C), X (changeset 50179)
- * Fixed notice level error (changeset 50047)
- * Fixed bug with BasicAuth enabled on an old database, it was preventing you from visiting db/build (changeset 50031)
- * Fixed MySQL 4.1 support for situations where we are sorting by a group aggregation function (changeset 49999)
- * Fixed notice level error (changeset 49999)
- * fixed caching in getManyManyComponents (see r43848) (changeset 49946)
- * removed redundant error strings (changeset 49922)
- * Added a default exception handler. Any uncaught exceptions thrown from application code are now scooped up by the Debug::fatalHandler (changeset 49906)
- * (changeset 49906)
- * Still some small problems with displaying stack traces of exceptions because the context array from trigger_error looks quite different from that of Exception::getTrace (changeset 49906)
- * (changeset 49906)
- * Also fixed a couple of echo/print bugs in Debug::friendlyError. From the looks of the code there may be more bugs to cleanup here. (changeset 49906)
- * Fixed Controller::allowed_actions documentation (changeset 49896)
- * Added to main CMS controllers (changeset 49895)
- * Removed warning in group admin (changeset 49894)
- * Improved allowed_actions support for subclassed controllers, such as CMSMain extends LeftAndMain (changeset 49893)
- * Removed use of deprecated setExtraClass (changeset 49892)
- * Moved _ss_environment.php include to very top (changeset 49891)
- * Added deprecation note to BulkLoaderAdmin (changeset 49890)
- * added $casting for BaseHref() (changeset 49843)
- * fixed sql-injection (changeset 49834)
- * Updated AssetAdmin to use TreeTitle() in place of Title for tree generation (changeset 48425)
- * > Updated TreeTitle() to allow use of alternateTreeTitle() in decorator (changeset 48425)
- * > Updated File to allow the insertion of extra columns by decorator (changeset 48425)
- * Updated subject line of warning/error emails (changeset 49732)
- * Moved folder admin form to Folder::getCMSFields() to let you more easily manipulate the form with a decorator (changeset 49804)
- * Disabled notice level error until more of the core is compliant (changeset 49803)
- * Moved CMS page-disabled logic into SiteTree::CMSTreeClasses(), so that it can be more easily customised for specific sites (changeset 48376)
- * Added Member->SetPassword, a field that lets you have a write-only password field (changeset 46525)
- * Used Member->SetPassword to create a password column on the MemberTableField for SecurityAdmin (changeset 46525)
- * Send 'changed password' emails when a user is first created as well as edited (changeset 46525)
- * Fixed DataObjectSet::insertFirst() - it now uses a numeric key rather than null (changeset 45750)
- * Create Group::canEdit(), which can be used to filter the SecurityAdmin group list (changeset 45748)
- * Redirect to legislation section when there are only legislation pages (changeset 45654)
- * Allow selection of folder when inserting files / images (changeset 45654)
- * Minor bugfixes (changeset 43980)
- * Added additional checks so that the email doesn't get sent to new members, or on the test site. (changeset 43384)
- * Used Object::create() to create email instances sent by the system. (changeset 43342)
- * Added BaseHref() to Member_ChangePasswordEmail so that the email shows the domain name of the current subsite. (changeset 43340)
- * Tidied up lost password form. (changeset 43339)
- * Added Member::$notify_password_change (changeset 43336)
- * Added missing ChangePasswordEmail.ss (changeset 43335)
- * Saving the member with a changed password now sends an email to the member. (changeset 43334)
- * Updated AssetAdmin to use TreeTitle() in place of Title for tree generation (changeset 48425)
- * > Updated TreeTitle() to allow use of alternateTreeTitle() in decorator (changeset 48425)
- * > Updated File to allow the insertion of extra columns by decorator (changeset 48425)
- * Updated core to allow for subsites restriction of filesystem: Folder::getCMSFields() is now responsible for generating the folder form. (changeset 48401)
- * Folder::syncChildren() now exclusively uses DB::query() calls instead of DataObject::get(). (changeset 48401)
- * Moved CMS page-disabled logic into SiteTree::CMSTreeClasses(), so that it can be more easily customised for specific sites (changeset 48376)
- * Removed redundant Add Member button at the top-right (changeset 46526)
- * Added Member->SetPassword, a field that lets you have a write-only password field (changeset 46525)
- * Used Member->SetPassword to create a password column on the MemberTableField for SecurityAdmin (changeset 46525)
- * Send 'changed password' emails when a user is first created as well as edited (changeset 46525)
- * Changed call to ViewableData::castingHelperPair to fix sort not being set by getNewItem (changeset 43365)
- * Added LeftAndMainSubsites->augmentNewSiteTreeItem that allows extensions of LeftAndMain to provide the current SubsiteID for the new item. (changeset 43321)
- * CMSMain->getNewItem now calls $this->extend('augmentNewSiteTreeItem', $newItem); (changeset 43321)
- * Changed DataObject to be a subclass of ViewableData instead of Controller, so that it can't be hacked by visiting Page/write. (changeset 49767)
- * reverted accidental delete in r49761 (changeset 49766)
- * e-This line, and those below, will be ignored-- (changeset 49766)
- * (changeset 49766)
- * A svn://svn.silverstripe.com/silverstripe/open/themes/blackcandy/trunk/blackcandy_blog (changeset 49766)
- * reverted accidental delete in r49760 (changeset 49765)
- * revert accidental commit in r49763 (changeset 49764)
- * readding blackcandy (reverted r49761, r49762) (changeset 49763)
- * Removed unused blackcandy blog (changeset 49762)
- * Removed unused themes (changeset 49761)
- * #2200 - Allowed subclasses in ComponentSet::add/remove (changeset 49715)
- * #1878: wakeless: Supress disabled errors on live site (changeset 49709)
- * Merged r49479 from branches/2.1.1-madebyme (changeset 49658)
- * Merged r46528 from branches/2.1.1-madebyme (changeset 49657)
- * Bypass debug handler for E_USER_NOTICE as well as E_NOTICE (changeset 49593)
- * #2203 - ManifestBuilder regex (changeset 49448)
- * fix caching in complex table field (changeset 49447)
- * added setFields()/setActions() (changeset 49386)
- * formatting (changeset 49386)
- * reverted accidental commit (changeset 49352)
- * added gwgtn theme files (changeset 49349)
- * Added SS_DEFAULT_ADMIN_USERNAME/PASSWORD defines to conf/ConfigureFromEnv.php (changeset 49308)
- * #177 - Don't let people create a page name the same as a class name (changeset 49193)
- * Disabled unused files list, as it uses way too much memory (changeset 49192)
- * #1921 - Make DataObject::write() call the recursive write on components, even when the dataobject itself hasn't changed (changeset 49187)
- * #1956 - Show Title in RSSFeed (changeset 49184)
- * simon_w: #1954 - Added object caching methods (changeset 49182)
- * #1951 - Fix newsletter subscription form (changeset 49181)
- * Removed clone behaviour from Form::Fields() (changeset 49180)
- * Added SubscribeSubmission template to get subscribeforms to work (changeset 49177)
- * Added default SubscribeForm.ss (changeset 49176)
- * Fixed ManifestBuilder execution in restrictive openbasedir environments (changeset 49172)
- * #1987 - Fixed sitename/?url=sitename bug (changeset 49151)
- * #2016 - Added all the types of error pages (changeset 49150)
- * #2137 - Changed email encoding from iso-8859-15 to utf-8, in compliance with other parts of SilverStripe and IMC recommendations (changeset 49149)
- * fixed i18n::get_owner_module() calls on classes with _s (changeset 49148)
- * Improvement to link-insertion logic when selecting text that doesn't have a link (changeset 49147)
- * #1881 - Duplicated words in error message text (changeset 49066)
- * documentation (changeset 49033)
- * documentation (changeset 49032)
- * fixed typo in doc comment (changeset 48972)
- * fix sql error on comments section (changeset 48970)
- * #2088 - Notice level error on compare versions (changeset 48969)
- * #2005 - Fixed seamonkey browser recognition (changeset 48968)
- * fix upload folder (changeset 48857)
- * #2212 / #2201 - Fix notice-level errors in PageView updates (changeset 48941)
- * mrickerby: #2201 - fixed PageView's recording of referrers. (changeset 48912)
- * For some project we need server run some scheduled task yearly, such as upgrade high school students for GSO. (changeset 48906)
- * updating form in ctf-popup after saving (including validation-errors and fields that have may changed on the serverside, e.g. ImageField) (changeset 48874)
- * not all cms panel has sitetree, so better check if($('sitetree')) exsit, otherwise IE broken with all genericDataAdmin panel. (changeset 48869)
- * adding "delete" class to DeleteImageForm (changeset 48865)
- * compressed ImageField layout to fit in CTF-popup (removed "click here to remove" label) (changeset 48855)
- * removed iframe-borders for IE (changeset 48855)
- * fixed "object not found" error in ie6 (somehow Observable is not applied to sitetree at window-load) (changeset 48847)
- * Polishing EducatorAdmin's Students Tab (changeset 48844)
- * locking down URLs: image/iframe, image/flush, image/transferlegacycontent (changeset 48835)
- * Recover ExportForm for genericDataAdmin Which is needed for CRM CreateCommunication (changeset 48792)
- * Add ability to choose which file to upload to in a FileField (changeset 48785)
- * Fixed illegal reference to this (changeset 48688)
- * Put MenuTitle in the CMS LHS tree instead of Title (changeset 48462)
- * (changeset 48451)
- * Fix incorrect text boxes being set on an ajax request (changeset 48178)
- * Allow many-many complex table fields to be used on the reverse side of the join (belongs many many) (changeset 48082)
- * Removed ranking tools from DataObjectSet (changeset 47743)
- * implemented equal values (changeset 47459)
- * (changeset 47454)
- * Added simple to-do list facility to SiteTree (changeset 47172)
- * Added title attributes to the SilverStripeNavigator messages (changeset 47156)
- * Fix bug when duplicating pages with reorganise enabled (changeset 48507)
- * Added paste plain text and paste from word buttons to the HtmlEditorField in the CMS (changeset 47155)
- * Added 'duplicate page and children' context-item in addition to 'duplicate just this page' (changeset 48503)
- * Fixed context menus in CMS (changeset 48474)
- * Fixed 404 on spacer.gif (changeset 47190)
- * Fixed bug in todo list reprot (changeset 47174)
- * Added simple to-do list facility to SiteTree (changeset 47172)
- * Added paste plain text and paste from word buttons to the HtmlEditorField in the CMS (changeset 47157)
- * Added paste plain text and paste from word buttons to the HtmlEditorField in the CMS (changeset 47155)
- * #2005 - Fixed fatal error due to browscap.ini capitalisation error (changeset 48514)
- * Updated windmill tests - sleeps and waits (changeset 48431)
- * Added in_array_recursive() to ArrayLib, for recursively checking an array with nested arrays (changeset 48423)
- * fix the bug that initialises with preloaded selected items with right hide/show (changeset 48419)
- * Added sapphire/conf/ConfigureFromEnv.php for making use of _ss_environment.php (changeset 48359)
- * Fixed formatting of code, and added some documentation on what the source for this field should be (changeset 48326)
- * (changeset 48313)
- * Fix sorting in complextablefield (changeset 48257)
- * wakeless: #2144 - More memory-efficient version of admin/publishall (changeset 48242)
- * #1736 - Make Security::get_encryption_algorithms() a dynamic function again. (changeset 48227)
- * Fixed comment. (changeset 48200)
- * Fixed bug: Page class wasn't shown in add-page dropdown (changeset 48176)
- * Fixed admin credentials setting from 'make install' and 'make test' (changeset 48175)
- * Added the contents of assets/ to svn:ignore (changeset 48175)
- * Added Windmill test for editing content (changeset 48173)
- * Re-enabled session_regenerate_id() (changeset 48172)
- * renamed escapeFlagForField() to escapeTypeForField(), updated documentation (changeset 48168)
- * Deprecated use of DBField 'Text' for saving HTML-Content (added check in HTMLEditorField->saveInto()) (changeset 48164)
- * Added ViewableData->escapeFlagForField() to determine if the record-field needs escaping (currently only 'xml' supported) (changeset 48164)
- * Refactored session_regenerate_id to make it easier to disable in some circumstances. (changeset 48161)
- * Temporarily disabled session_regenerate_id so that Windmill can work. (changeset 48161)
- * Removed notice level errors for better cli-script operation (changeset 48153)
- * Better error for cli-install errors, uses exit(1) to stop make (changeset 48152)
- * Added note about Makefile so that people don't think they should use that for normal installation. (changeset 48133)
- * Allow calling of installer by running 'make install' from an environment with an _ss_environment.php file. This is important for continuous integration. (changeset 48132)
- * formatting (changeset 48113)
- * formatting (changeset 48112)
- * removed dropDatalessFields() - needs serious refactoring before going into core again (changeset 48110)
- * removed dropDatalessFields() - needs serious refactoring before going into core again (changeset 48109)
- * renamed $wantDefaultAddRow to $showAddRow (changeset 48105)
- * fixed escaping errors in default homepage content (changeset 48104)
- * Added Makefile so that you can execute 'make test' in sapphire and it will run tests. (changeset 48100)
- * Added support for array in _ss_environment.php for specifying URLs to use for cli-script.php (changeset 48100)
- * Improved the Behaviour.addLoader() method to play more nicely with tools such as windmill (changeset 48086)
- * fix bug: when no source items found, the table should still show and it should works as adding new records (changeset 48085)
- * Fixed the $hide_ancestor static on SiteTree subclasses so that it actually works. (changeset 48056)
- * Fixed login test (changeset 48049)
- * Added initial windmill test (changeset 48042)
- * Fix php notice (changeset 47985)
- * FIx php notice (changeset 47982)
- * Fix autocompletion in Security Admin (changeset 47956)
- * #892 - Error attaching an existing folder to an ImageField (changeset 47948)
- * Fix spelling mistake (changeset 47947)
- * Remove having clause as it can't be used (changeset 47946)
- * simon_w: #2122 - Bug in PageComments class (Security) (changeset 47937)
- * #2058 - Installer does not escape passwords in _config files (changeset 47910)
- * converted TODO into @todo for better PHPDocumentor support (changeset 47891)
- * Fix i18n errors (changeset 47890)
- * #2094: Make ContentNegotiator send XHTML to the W3C validator (changeset 47882)
- * Fix externals (changeset 47881)
- * Fix DataObjectSet constructor breaking with associative arrays (changeset 47880)
- * simon_w: #2118 - When removing a value from an enum, set affected rows back to the default (changeset 47877)
- * simon_w: #2098: Fixed notice level error (changeset 47876)
- * #1874 - generated .htaccess lacks "Rewritebase" (changeset 47875)
- * fix wrong warning info: Director -> Debug (changeset 47858)
- * rbarreiros: 019 - Lost Locale when translatable string not found (changeset 47857)
- * rbarreiros: #1907 - Patch for more i18n strings (changeset 47856)
- * #1959 - You can't reorganise pages without creating pages (changeset 47855)
- * Don't fail in i18n::include_by_class if the module isn't translatable (changeset 47854)
- * Remove debug message (changeset 47847)
- * Added $SecurityID for templates (changeset 47846)
- * lperera: #1975 - Improvements to RestfulService (changeset 47844)
- * #2003: Don't close img and br tags on HTMLText.Summary (changeset 47843)
- * Fix syntax error (changeset 47842)
- * Error checking in i18n::include_by_class shouldn't complain if mysite/lang doesn't exist - only if a module doesn't have internationalisation options. (changeset 47841)
- * Reverted 47595, are it broke $defaults (changeset 47840)
- * rbarreiros: #1918 Translate newsletter and other strings (changeset 47839)
- * Fix building manifest before database is created (changeset 47838)
- * #1352 - Better handling of memory limit (changeset 47836)
- * #1212 - Show the saved value of EditableEmailField.SendCopy (changeset 47832)
- * #1352 - Better handling of memory limit (changeset 47831)
- * Allow insertion of `` tags that refer to external domains (changeset 47827)
- * Add alt= to any images that don't have alt tags (changeset 47827)
- * Improvements to API docs (changeset 47826)
- * documentation (changeset 47815)
- * allowing object-parameters in DataObjectSet and ArrayData, added ArrayData::object_to_array() (changeset 47808)
- * added is_associative() (changeset 47807)
- * added lc_XX locale for LOLCAT (changeset 47813)
- * Improved API documentation (changeset 47806)
- * Improved API documentation (changeset 47805)
- * Moved test control files into sapphire/testing, so that sapphire/tests can be ignored by the documentor. (changeset 47804)
- * Use lighter version of browscap.ini (changeset 47802)
- * #1088 - attachments cannot be emailed from mac or windows systems (changeset 47800)
- * #172 - Reorganise : new page (changeset 47797)
- * Fix php notice (changeset 47792)
- * API Documentation updates (changeset 47773)
- * Added tests for DataObject (changeset 47767)
- * Take orderby clause into account when caching in DataObject::get_one() (changeset 47756)
- * Fix caching in DataObject::get_one() (changeset 47755)
- * Remove HAVING clause from methods where it doesn't make sense to have them (changeset 47754)
- * set $template and $itemClass to public (according to parent implementation) (changeset 47748)
- * fixed formatting (changeset 47748)
- * fixed getParentIdName() call in DetailForm() - paramter-order was wrong (changeset 47747)
- * better checking in saveComplexTableField() to avoid PHP-notice (changeset 47747)
- * Fix YAML many_many/has_many relationships (changeset 47746)
- * YAML comma seperated => lists should work on has_meny relationships as well (changeset 47739)
- * Added package tags and docblock info for API documentation (changeset 47733)
- * Fixed whitespace (changeset 47733)
- * Updated API documentation package tags (changeset 47732)
- * Fixed some whitespace (changeset 47732)
- * Removed unnecessary file CMSHelp (changeset 47729)
- * Removed unnecessary class Staged (changeset 47725)
- * Fix stack trace on objects that don't extend the Object class (changeset 47723)
- * PDODatabase got the wrong end of the stick - Database::createDatabase() shouldn't need any arguments. Fixed this in the core class and MySQLDatabase, but PDODatabse still needs fixing. (changeset 47698)
- * Fixed TestRunner (changeset 47699)
- * Added paste plain text and paste from word buttons to the HtmlEditorField in the CMS (changeset 47155)
- * Added paste plain text and paste from word buttons to the HtmlEditorField in the CMS (changeset 47155)
- * wakeless: #1976 - DataObject queries the database for child elements when it hasn't been serialized (changeset 47695)
- * #1666 - Interface translations don't show in footer (changeset 47694)
- * Fix title and description in RSS feeds (changeset 47688)
- * Update copyright to 2008 (changeset 47657)
- * update copyright to 2008 (changeset 47654)
- * Update copyright to 2008 (changeset 47653)
- * Added release date (changeset 47430)
- * Updated Changelog (changeset 47262)
- * Updated ChangeLog (changeset 46870)
- * add function fieldByName (changeset 47479)
- * made breadcrumbs-delimiter configurable (changeset 47634)
- * Reversed isset() change which was causing some side effects (changeset 47602)
- * Fixed PHP notice undefined index - $messageSet['alreadyLoggedIn'] (changeset 47600)
- * Fixed ID undefined PHP notice error (changeset 47595)
- * removed DetailForm() (was just needed to set custom class which is now in $popupClass), updated saveComplexTableField() to reflect parent class code (changeset 47593)
- * added $popupClass to avoid duplication, getting basedataclass for existing children in DetailForm() (in case we're dealing with different subclasses) (changeset 47592)
- * more solid ID-detection in php() (changeset 47591)
- * additional checks before foreach() loop (changeset 47589)
- * fixed PHP notice in implementorsOf (changeset 47588)
- * #2069 Locale file /lang/en_US.php should exist (Windows) (changeset 47587)
diff --git a/docs/en/04_Changelogs/2.2.3.md b/docs/en/04_Changelogs/2.2.3.md
deleted file mode 100644
index b02ca6e60..000000000
--- a/docs/en/04_Changelogs/2.2.3.md
+++ /dev/null
@@ -1,36 +0,0 @@
-* BUGFIX: Don't allow calling of magically added methods via URL unless explicitly listed in allowed_actions (changeset 64988)
-* BUGFIX: Fixed HTTP/1.0 support (changeset 64722)
-* Fix typo (changeset 64643)
-* Fix accept button in CommentAdmin not working (changeset 64640)
-* Fix CMS export (changeset 64639)
-* MINOR: PHP notice fixes (changeset 64638)
-* MINOR: fix php notice (changeset 64637)
-* Allow default value to be set on CountryDropdownField (changeset 64636)
-* Add ability to disable 'None' option and to choose the title field in TypeDropdown (changeset 64635)
-* BUGFIX: Allow disabling of updateCMSFields() on SiteTree so subclasses that want decorators to have access to (changeset 64634)
-* their added fields can call it themselves. (changeset 64634)
-* MINOR: Fix PHP notices (changeset 64625)
-* Show '(Choose)' text on TreeDropdownField when a non-existent object is selected, as can happen when related data is removed (changeset 64355)
-* When calling Folder::findOrMake(), set the Title as well as the Name of new folders (changeset 64354)
-* Allow updating of File detail CMS fields by defining updateCMSFields in a decorator (changeset 64353)
-* Add macron about native name of maori (changeset 64130)
-* Added ->itemWriteMethod parameter, to adjust the way that CTFs write (for instance, to save and publish instead of just save) (changeset 64128)
-* BUGFIX: Form::sessionMessage() didn't set type (changeset 63966)
-* Fixed sorting in TableListField and subclasses (changeset 63524)
-* Removed hard-coded limits in ConfirmedPasswordField. This should be configured in a member password validator (changeset 63405)
-* BUGFIX: Fixed tree.js to work with TreeMultiselectField (changeset 63343)
-* ENHANCEMENT: Use get variable rather than session for Security::permissionFailure()'s BackURL, as it's more reliable (changeset 63030)
-* BUGFIX Set ID of lostpassword page to -1 so we don't get top level pages (changeset 62107)
-* as its children (changeset 62107)
-* BUGFIX Revert r61631 for Translatable but kept SiteTree changes instact from that revision since they are still useful (changeset 61815)
-* API CHANGE: Decorators on SiteTree can now define updateCMSActions (changeset 61625)
-* API CHANGE: Decorators on SiteTree can now define updateCMSActions (changeset 61624)
-* BUGFIX: Don't show publish button when editing translatable page, as it is broken (changeset 61624)
-* BUGFIX: search is now html valid! (changeset 60980)
-* merged from trunk (changeset 60651)
-* BUGFIX: Fix typedropdown not working when there are no records of that (changeset 60240)
-* dataobject. (changeset 60240)
-* commented out line 121 that put line breaks (changeset 60194)
-* add missing semicolon (changeset 60026)
-* Fix null title value on tiny mce inserted images (changeset 60025)
-* Overwriting Date.php to output US Date format (changeset 59710)
\ No newline at end of file
diff --git a/docs/en/04_Changelogs/2.2.4.md b/docs/en/04_Changelogs/2.2.4.md
deleted file mode 100644
index 8ac7a6b66..000000000
--- a/docs/en/04_Changelogs/2.2.4.md
+++ /dev/null
@@ -1,43 +0,0 @@
-# 2.2.4 (2009-03-20)
-
-## Features and Enhancements
-
- * ![rev:65263] Default permission failure message set can be changed
- * ![rev:73365] Text->FirstParagraph?() now works for `