ExpressionEngine® 3 User Guide

Legacy Documentation

You are using the documentation for version 3.5.17. Go here for the latest version or check here for your available upgrades to the latest version.

ExpressionEngine 3.x Change Log

Version 3.5.17

Release Date: September 13, 2018

  • Fixed a bug (#23583) where accessing the front-end may intermittently show a PHP error.

Version 3.5.16

Release Date: April 18, 2018

  • Security Fixes
    • Fixed a potential XSS vulnerability in Channel Sets.
  • Fixed a fatal PHP error if you were beginning an update from a version older than 2.11.0.
  • Fixed a bug where a PHP error occurred when non-superadmins filtered the templates by a specific template group, even though they had permission to access the group.
  • Fixed a bug where the Create Template button did not show for member groups with permission to create templates.

Version 3.5.15

Release Date: January 24, 2018

Fixed a bug where validation did not force selecting an heir when deleting a member and ‘Reassign’ entries was selecting, which could result in data loss.

Version 3.5.14

Release Date: December 15, 2017

  • Fixed a bug in SimplePie that prevented the RSS Parser (and ExpressionEngine news feed) from working in CentOS 6 and other environments with outdated cURL libs. (Hey CentOS, they fixed that in 2010…)
  • Fixed a bug where a channel form posting to a channel not on the current site could trigger an author validation error if guest posting was enabled.

Version 3.5.13

Release Date: December 13, 2017

Important

This release marks the last normal patch update for ExpressionEngine 3. With the release of ExpressionEngine 4, v3 is now Legacy software and will only receive critical bug fixes such as security patches and protections against dataloss, for one year. Please consider upgrading.

  • 🔒 & 🏎
  • Added PHP 7.2 compatibility.
  • Fixed a potential stored XSS bug in the control panel.
  • Increased security against potential environment information leakage.
  • Fixed a bug (#23281) where a PHP error could be thrown by a non-functional filter in the Pages module control panel.

Version 3.5.12

Release Date: November 3, 2017

  • Important:
    • 🗑🔒‼️ If you are using the Site Manager and are planning on deleting a Site, make certain to update to version 3.5.12 first: Fixed a bug (#23266) where member group setting assignments were lost when a Site was deleted.
  • Loosened the redirect warning for external links in the control panel to allow redirects to all subdomains.
  • Optimized a query used in the category archive tag.
  • Updated the developer documentation regarding the legacy Output class (#23215).
  • Fixed a bug (#23218) where the live look template view button went on holiday (it took all the colors from the custom statuses too!).
  • Fixed a bug (#21743) where date fields belligerently remained localized.
  • Fixed a bug (#23253) where you could not edit entries that have existing content in the Discussion Forum tab.
  • Fixed a bug (#23265) where guest Channel Forms could white screen (fatal PHP error) in certain circumstances.
  • Fixed a bug in the forum module where permission to upload settings did not always stick.
  • Fixed a bug in the forum module where you could not uncheck all permission checkboxes and have it stick.
  • Fixed a bug where the control panel log didn’t have enough room to save a valid username.
  • Fixed a bug in the forum where the visitor statistics section did not appear.
  • Fixed a bug (#23191) in the control panel entry search where quoted searches failed.
  • Fixed some incorrect DocBlocks (#23245).
  • Fixed a bug (#23236) where channel sets used the channel title instead of the channel short name.
  • Fixed a bug where when a member group left town it left some if its things behind.
  • Developers:
    • Added a URL_TITLE_MAX_LENGTH constant.

Version 3.5.11

Release Date: August 24, 2017

  • Optimized the entry manager for speed.
  • Restored check for banned email addresses when registering/updating a member record.
  • Added per page filter to a number of tables in the control panel.
  • Altered the AJAX response headers to accomidate IE’s JSON ignorance.
  • Fixed a bug where clearing out a File field may fire off numerous form validation AJAX requests.
  • Fixed a bug (#23171) where the template parser got overwhelemd with really large templates and found a happy place instead of doing work.
  • Fixed a bug where trying to automatically resize SVG files would throw an error.
  • Fixed a display issue with abstracted Extension settings when there are many checkboxes/multi-select options.
  • Fixed a bug where abstracted Extension settings items could not have field instructions.
  • Fixed a bug (#23174) where Simple Commerce emails did not respect the Mail Format email preference, preventing it from being able to send HTML emails.
  • Fixed a bug where setting PHP memory in gigabytes setting could result in memory errors when uploading.
  • Fixed a bug (#22741) in the installer where the superadmin user created during installation was assumed to have a member_id of 1. We all know what they say about assumptions, don’t we?
  • Fixed a bug where the list of addons in the member group permissions included some non-addons.
  • Fixed a bug (#23183) where the template create button did not show on the template manager page for some member groups with permission to create templates.
  • Fixed a bug where saving templates when caching was disabled caused an error.
  • Fixed a bug where thumbnails were not removed when deleting a file record with a missing file.
  • Fixed a bug (#23181) where it was not possible to delete the last row in a grid field when editing via the channel entry form.
  • Fixed a bug (#23195) where third party fieldtypes could not be uninstalled if the file name wasn’t standard issue.
  • Fixed a bug in the forum settings where you couldn’t manage moderator notifications.
  • Developers:
    • Fixed a bug (#21702) where the legacy file model’s ee()->file_model->delete_files($Id); would show a system error if deleting a record that has a missing image file and fail to delete any stray thumbnails.
    • Fixed a bug (#23207) where the legacy form validation error for too short passwords didn’t display the required password length properly.

Version 3.5.10

Release Date: June 27, 2017

  • Security Fixes
    • Fixed a potential reflected XSS issue.
    • Fixed a potential issue that could lead to arbitrary execution of ExpressionEngine tags.
  • Optimized Relationship control panel display query.
  • Fixed a missing language key in the member module.
  • Fixed a bug (#23133) where images could not be resized proportionally in the File Manager.
  • Fixed a bug (#23157) where saving a channel entry may attempt to assign categories twice.
  • Fixed a bug (#23160) where member groups without member deletion permissions may see an error in the control panel.
  • Fixed a bug where {current_url} and {current_path} were entirely unencoded.

Version 3.5.9

Release Date: June 16, 2017

  • Improved the display of long filenames in grid fields.
  • Fixed a bug (#23153) where manually-sorted multi-relationship fields may not appear sorted correctly on the front-end.

Version 3.5.8

Release Date: June 15, 2017

  • Security Fixes (thanks again to Mustafa Hasan from HackerOne!):
    • Eliminated a couple areas that could disclose the full server path.
    • Fixed a potential remote code execution issue (identified by Erik McClements).
    • Improved XSS protection in a few areas of the control panel.
    • Tightened off-site redirect protection / warning.
  • Optimized entry saving on installations with large numbers of categories.
  • Optimized {category_menu} tag parsing in the channel entry form.
  • Modified upload filename sanitization so that numeric segments are no longer suffixed with an underscore.
  • Channel Form’s Grid CSS jumped the starting block. It has been reset and issued a warning.
  • Fixed a syntax error in compressed Channel Form JavaScript introduced in 3.5.7.
  • Added a crossing guard to prevent PHP errors from entering traffic when the Pages module references non-existent entries.
  • Added some extra no cache headers for Chrome so it would stop trying to server the CSRF token from cache.
  • Fixed a bug (#23125) where the Pages module did not have a nested view.
  • Fixed a bug (#23119) where the Relationship field filter would not work unless the member has access to the Relationship module.
  • Fixed a bug (#23098) where sticky entries were not sticky in Relationship field output.
  • Fixed a bug (#23111) where permissions to send email to member groups and to view the email cache could not be set.
  • Fixed a bug (#23106) where the date picker may appear blank in Firefox.
  • Fixed a bug (#23108) where selecting a category for an entry in Channel Form would not automatically assign its parents to the entry.
  • Fixed a bug (#23097) where third-party RTE tools would not be loaded.
  • Fixed a bug (#23136) where the maximum file size field description incorrectly said megabytes instead of kilobytes.
  • Fixed a bug (#23132) where value/label pairs could not be used in member fields.
  • Fixed a bug (#23131) where templates could not be deleted from the template manager search results screen.
  • Fixed a bug (#23148) with grid column widths; some wanted a percentage!
  • Fixed a bug (#23118) where the 3.1.0 updater was checking if a variable exists after using it. Impulse control!
  • (#23115) Open/Closed statuses now respect your language pack’s translation in the Entry Manager.

Version 3.5.7

Release Date: May 18, 2017

  • Fixed a bug (#23080) where the File Manager may have performance problems for non-super admins when many member groups and upload folders are present.
  • Fixed a bug (#23076) where slashes could not be saved in extension settings.
  • Fixed a bug (#23053) where liveUrlTitle() may not work when multiple Channel Forms are present.
  • Fixed a bug where the template parser would be unable to parse a large number of global variables.
  • Fixed a bug where an entry’s year, month and day fields could be saved as 0 when using dd/mm/yyyy localization.
  • If a Channel is limited to 1 entry, and 1 entry already exists, the Edit menu will take you straight to edit that entry for simplicity. Automated tests for the win.
  • Grid fields now respect assigned column widths.
  • Simplified a query in the RSS module that was necessary in versions < 1.4.0. No typo.
  • Fixed a bug where comment expiration date field was visible when a channel allows comments, but comments are disabled at the system level.
  • Fixed a bug (#23090) where the edit category modal on the Publish page would not properly close and reflect a successful edit.
  • Fixed a bug where member accept and decline notifications did not always respect the control panel settings.
  • Fixed a bug where the frontend member profile email console pop-up did not display properly.
  • Fixed a bug where the control panel login could improperly redirect if a custom homepage was set but no URL was entered.

Version 3.5.6

Release Date: April 13, 2017

  • Fixed a bug where floating point numbers could not be used in queries.
  • Fixed a bug where the Rich Text Editor field did not honor the required setting.
  • Fixed an issue where enabling Gzip compression would prevent front-end pages with PHP errors from rendering in most browsers.
  • Improved memory footprint of the control panel homepage when a site has thousands of Banned members.
  • <cite> is now allowed in Channel Entry titles.
  • Fixed an issue in the control panel where the banned member page and pending member page searches included all members.

Version 3.5.5

Release Date: April 10, 2017

  • Security Fixes:
    • Mitigated a potential remote code execution vulnerability.
    • Improved cryptographic security when pseudo-random numbers are used.
    • Further hardened protections against SQL injection.
  • Option fields (select, multiselect, radio, and checkboxes) can now have one blank value.
  • Channels who have no more room for entries will not show under the Create menu.
  • The uncommon “Disallowed Key Characters” error will now reveal which input key was blocked when $debug is set to 1 in your index.php and admin.php files.
  • Improved performance of categories in Channel Form new entry forms when massive numbers of categories are involved.
  • Fixed a bug (#23040) causing a Notice-level PHP error in Channels with Versioning enabled on first-save.
  • Fixed a bug where an Ajax call was being made to update the order of categories when it should not have.
  • Fixed a bug (#22894) where removing a category group from a channel may cause category groups not to be reorderable in the layout editor.
  • Fixed a bug (#23021) where avatar upload and selection might not work on some multi-site installs.
  • Fixed a bug (#23020) where visiting the control panel with no URI segments upon already being logged in would not redirect you to your preferred homepage.
  • Fixed a bug (#23029) where using a Relationship shortcut tag inside a Grid tag pair would not parse when it was the only Relationship field in the channel.
  • Fixed a bug where the {date_header} and {date_footer} template variables did not work inside Relationships.
  • Fixed a bug (#22389) where multiple Channel Forms on single page may not work.
  • Fixed a bug (#23044) where an “Unable to load the requested file” error may appear when editing a custom field.
  • Fixed a bug in the forum templates where editing your member profile preferences was not allowed on the frontend. See the version notes for details.
  • Developers:
    • Fixed a bug where the Curl service could not send parameters along with POST requests.

Version 3.5.4

Release Date: March 16, 2017

  • Important:
    • 🗑🔒‼️ Fixed a potential data loss issue when deleting admins who have edited templates.
  • Browsers will (mostly) now be tricked into not autofilling password setting fields (e.g. SMTP username & password) in the control panel with your password, even if the browser’s autofill is enabled. Commence fist shaking at browser vendors for their algorithms that try to guess those fields and not providing a reliable way to prevent it. Developers: If you are using the Shared Form View, your inputs with type="password" will automatically benefit.
  • Improved the clarity of an error message if something goes wrong with your site preferences in the database.
  • Improved breadcrumb clarity when editing fields in the Channel Manager.
  • Made the Status Groups UI consistent with other areas of the Channel Manager.
  • Modified the Redirect library that handles links from the control panel to external sites to be ok with URLs with query string parameters.
  • Fixed a bug where parsing category fields may show a PHP error.
  • Fixed a bug (#22993) where the RTE field may not show underlined text properly in the publish field.
  • Fixed a bug (#23005) where Relationship field filtering on the publish may not work if editing an MSM site with a different domain than the control panel.
  • Fixed a bug (#22419) where the :total_results shortcut relationship variable would return the wrong count when used inside Grid.
  • Fixed a bug (#22789) where deleting a channel entry with a comment would trigger PHP errors.
  • Fixed a bug where children were overlooked while some deeply nested relationships were partying with grids.
  • The new View Activity won’t try to hoodwink you into thinking other members are stalking you, or that so many significant events occurred at the start of the Unix Epoch.
  • Fixed a PHP error that would occur when trying to destructively overwrite non-image files on upload.
  • Trying to edit a field group that doesn’t exist now 404s instead of complaining in an unhelpful manner with PHP warnings.
  • Fixed a bug where default HTML buttons were not always added to the correct site when adding new buttons.
  • Fixed a bug where entry revisions could be duplicated and entry revision pruning did not obey the max revision setting.
  • Fixed a bug where pagination limits weren’t applied to banned and pending memeber pages in the control panel.
  • Developers:
    • Fixed a bug in the cp_js_end hook where you could not use the CP/URL Service.

Version 3.5.3

Release Date: March 1, 2017

  • Security
    • Eliminated a timing attack opportunity.
  • Added “View Activity” section to Member Profile administration page, along with prominent email and IP address.
  • Added more helpful error message for when an add-on hasn’t specified a namespace (bug #22948).
  • Importing a Channel Set with an uninstalled fieldtype will alert you to install it before the set can be imported.
  • Improved file uploads to allow for overwriting of files!
  • Really added a search_id parameter to the search module tags.
  • The URL title generated by unique_url_title= in Channel Form will have the unique ID separated by the URL separator and will trim the URL title length to 200 characters.
  • Tweaked legacy view file loader to ignore the php.ini short_open_tag setting for PHP 5.4+.
  • Fixed a bug (#20783) where saving a Grid field with searchable data would show an error in third-party content types.
  • Fixed a bug (#21778) where the statistics module did not return data when hit tracking was disabled.
  • Fixed a bug (#22936) where outputting image manipulation heights and widths in a template could output a decimal number for certain image dimensions.
  • Fixed a bug (#22950) where the a Select All checkbox on a multi-select-style field would not work.
  • Fixed a bug (#22956) where saving a Grid option fieldtype column with no value/label pairs set may show an error on the publish form.
  • Fixed a bug (#22959) where there was no validation for channel field short name length.
  • Fixed a bug (#22960) where a file field associated with a non-existent upload directory would show PHP errors.
  • Fixed a bug (#22961) where saving an entry while the Manage Category controls were activated would cause the entry to lose Category associations.
  • Fixed a bug (#22964) where you could only 100 entries could be deleted at a time from the entries listing.
  • Fixed a bug (#22967) where Toggle fields in Grids were not respecting their default value.
  • Fixed a bug (#22969) where the file field would not show thumbnails for SVG files.
  • Fixed a bug (#22975) where URLs added to the menu via the cp_custom_menu hook may double-up on session IDs.
  • Fixed a bug (#22978) where SimplePie may show a PHP error when throwing an exception.
  • Fixed a bug (#22981) where the Create New link in Relationship fields would not open the publish form in a new window.
  • Fixed a bug (#22982) where there was a broken link to create email templates in Simple Commerce.
  • Fixed a bug in the 3.0.1 update where a PHP error could occur if orphaned layouts existed.
  • Fixed a bug in the 3.5.0 update routine where the new email_newline and email_smtp_crypto settings might not be copied to all sites in the Site Manager, resulting in PHP warnings until the Email settings are saved in each Site.
  • Fixed a bug in the Simple Commerce module where saving the settings could throw a PHP error.
  • Fixed a bug in the forum module where admin notifications for new topics were switched with the notification emails for topic replies.
  • Fixed a bug where show_message() may output an unencoded URL.
  • Fixed a bug where a PHP error could occur changing a user’s member group on the profile page on PHP < 5.4.
  • Fixed a bug where custom member and category fields allowed reserved words for their short names.
  • Fixed a bug where one could not save existing Grid or Relationship fields in environments with improper PDO configuration.
  • Fixed a bug where the Manage Categories would not toggle off if there was a custom Toggle field on the publish form.
  • Fixed a bug where the View link in top navigation for MSM played favorites and only linked to Site #1.
  • Fixed a bug where the password reset tokens could expire too soon depending on the server_offset config.
  • Fixed a regression from 2.x where the template parser might leave markers in place with nested plugins.

Version 3.5.2

Release Date: February 2, 2017

  • Fixed a security bug where some path names were not properly sanitized.
  • Fixed a security bug involving PHP object injection.
  • Fixed a bug (#22882) where one could not delete a forum category.
  • Fixed a bug (#22883) where saving an existing entry would not highlight its row in the entries table.
  • Fixed a bug (#22888) where saving a new channel field set to be hidden would not be collapsed on the publish form.
  • Fixed a bug (#22902) where Channel Sets that contain fields with value/label pairs would not import correctly.
  • Fixed a bug (#22901) where changing your password due to admin password requirements would not update the account’s password.
  • Fixed a bug where fieldtypes in Grid may not parse using the configured field format.
  • Fixed a bug (#22905) where a multi-relationship field in Channel Form would try to use the field’s control panel UI.
  • Fixed a bug (#22908) where upgrading from a pre-2.7 installation may truncate some channel data columns if they aren’t set as text.
  • Fixed a bug (#22914) where the FTP library’s delete_dir() may fail.
  • Fixed a bug when decrypting old values using the default key.
  • Removed the profiler from the CP login page.
  • Clarified the language for the authenticate and save actions.
  • Fixed a bug where non-ExpressionEngine cookies were run through security checks when the cookie prefix was not explicitly set.
  • Fixed a bug where the channel form Allow Comments field did not respect the default in the channel settings.
  • Fixed a bug where a PHP error could occur on the CP Overview page when RSS feeds contained code blocks under PHP 5.3.
  • Developers:
    • Fixed a bug where the post_save_settings event could fire on a fieldtype when an entry was saved.

Version 3.5.1

Release Date: January 20, 2017

  • Improved security of the Encrypt Service to protect against man-in-the-middle attacks.
  • Value/Label pairs can now be used in custom member and category fields.
  • Changed the file field to display directories alphabetically in the directory select dropdown on the field settings page.
  • Removed the requirement for specifying a replacement value in the search and replace utility.
  • Channel form URL title creation now matches the publish page behavior, creating lower case titles by default.
  • Ever get the login modal in the CP but you were sure you checked “remember me” when you logged in? We fixed that.
  • Fixed a bug where the Loader class may sometimes show an error about a non-numeric value under PHP 7.1.
  • Fixed a bug where the updater may show an error if certain add-ons are installed.
  • Fixed a bug (#22893) where new template routes could not be added.
  • Fixed a bug (#22886) where unchecking the sticky or allow_comments checkboxes in Channel Form would not apply the change.
  • Fixed a bug where data encrypted in older versions of ExpressionEngine would not decrypt without using the specific algorithm-method it was originally encrypted with.
  • Fixed a bug (#22880) where Channel Sets didn’t export upload destinations for file fields in a Grid.
  • Fixed a bug where validation could fail when adding a new member in the control panel due to a field playing hide-and-seek, but not playing fair.
  • Fixed a display issue with the new File Field UI with long filenames/titles.
  • Fixed a bug in the control panel where the member profile delete member confirmation modal included invalid members in the list of members to reassign entries to.

Version 3.5.0

Release Date: January 16, 2017

  • Added PHP 7.1 compatibility.
  • Added value/label option capability to Checkboxes, Radio Buttons, Select, Multiselect
  • Added {if has_categories} conditional to the Channel Entries tag.
  • Added {category_count}, {category_reverse_count}, and {category_total_results} variables to the Channel Entries {categories}{/categories} variable pair.
  • Added entry_id= and url_title= parameters to the Related Categories Mode of the Channel Entries Tag, to enable this tag to function with custom template routing.
  • The {redirect=} variable can now take full URLs, including external URLs instead of just path segments.
  • Usernames and screen names now have a maximum length of 75 characters.
  • Improved clarity and usability of File field interface.
  • Greatly improved model query performance.
  • The {category_name} variable is now run through typography parsing for pretty quotes and dashes.
  • Updated the SimplePie parser version used by the RSS parser to 1.4.3.
  • Members must verify themselves when creating a member with control panel access.
  • Added Email Newline and Connection Type to Outgoing Email Settings, to simplify configuration with some email providers (formerly available as config overrides only, email_newline and email_smtp_crypto).
  • Discussion Forums:
    • Updated code sample formatting to use the new styleable blocks. Highlight/Prism/Rainbow/etc. your code samples in forum posts.
    • Made special forum conditionals nestable.
    • Added {forum_id} variable to the Thread Rows partial.
    • Added {if is_moderator} conditionals to Threads and Thread Rows partials.
    • Added {topic_date} variable to Threads partial.
    • Added {topic_class} variable to Topic Rows partial.
    • Made Poll data available to Thread Rows, so polls can be shown inline with the author’s post.
  • Fixed a bug where models could not set NULL values.
  • Fixed a bug where model foreign key changes did not trigger reloads.
  • Fixed a bug (#20308) where you could only upload the same file name 99 times. Upload as many as you want!
  • Fixed a bug on the control panel profile section’s ban members page where a MySQL error occurred when searching banned members.
  • Fixed an Obscurum Insectum when mbstring.func_overload is enabled, entry content contains multibyte characters, and there is a relationship field with no relationships set.
  • Fixed a bug (#22864) where members registering via the Member module could not register if secure passwords were required.
  • Fixed a bug (#22865) where if a high minimum username or password length was set, the validation error message would not show the configuration value correctly.
  • Fixed a bug (#22867) where deleting a category from the publish screen would uncheck any existing category selections for that entry.
  • Fixed a bug (#22872) where changing Channels fields from one type to another may destroy data.
  • Fixed a bug (#22869) where repeated searches in the template manager may show a “Request-URI Too Large” error.
  • Fixed a bug (#22874) where File fields may show an “Undefined index” error on the front end in rare cases.
  • Fixed a bug (#22875) where URL titles generated by Channel Form’s unique_url_title= parameter did not respect the word_separator preference.
  • Fixed a bug (#22876) where the wrong member was marked as the author for entry revisions.
  • Fixed a bug (#22873) where having a :total_rows Grid modifier in a conditional in a template may show an error when certain add-ons are present.
  • Fixed a bug where Channel entry titles that had a ; show up to the party uninvited, when an & was in the title. No longer: Channel entries titles are by invitation only.
  • Altered frontend system message redirects to default to use a JavaScript redirect in order to accommodate a rare IE form submission quirk.
  • Worked around a Safari bug where searching for entries in the control panel with autofill enabled on a site using SSL would repeatedly select the text in the textbox.
  • Developers:
    • Added an Encrypt service that uses OpenSSL for encryption, as Mcrypt has ben deprecated as of PHP 7.1.
    • Added core_boot hook to run tasks on every ExpressionEngine request.
    • Added request caching to member field model structure to eliminate duplicate queries for some operations.

Version 3.4.7

Release Date: December 30, 2016

  • Security
    • Hardened security in the Email library, prevents attacks similar to PHPMailer CVE-2016-10033, CVE-2016-10045, and Swift Mailer CVE-2016-10074.
  • Optimized an inefficient query in the file model.
  • Fixed a bug where the unique_url_title= title parameter was not working in Channel Form.
  • Fixed a bug (#22838) where the HTML Button creation form would show a PHP error if no other HTML buttons existed.
  • Fixed a bug where switching MSM sites may show a PHP error if the member is set to redirect to the publish form but no Channel is set.
  • Fixed a bug (#22841) where deleting a member from their profile page would not give an option to reassign their entries.
  • Fixed a bug (#22849) where deleting a member would also delete any files they had uploaded.
  • Fixed a bug (#22842) where the author would have to focus the URL title field to validate the field despite it being autofilled by the Title field.
  • Fixed a bug (#22013) where if saving Grid settings failed due to duplicate column labels/names, deleting the offending column would not clear the validation errors.
  • Fixed a bug (#22858) where statuses on the publish form were not displayed in their set status order.

Version 3.4.6

Release Date: December 13, 2016

  • Fixed a bug (#22785) where the parsing a template may show an undefined index error in rare cases.
  • Fixed a bug (#22798) where RTE tool buttons may appear multiple times when rendered via Channel Form.
  • Fixed a bug (#22799) where all “unauthorized” error messages came with a 500 status code instead of a 403.
  • Fixed a bug (#22803) where an alternate MySQL port number entered in the installer would not get written to the config.php file.
  • Fixed a bug (#22811) where there was a typo in a language key.
  • Fixed a bug (#22813) where the relationships_display_field_options hook was passed invalid arguments.
  • Fixed a bug (#22814) where deleting a member from their profile page may show a PHP error.
  • Fixed a bug (#22816) where the Relationship fields could not be filtered when filtering from more than nine channels.
  • Fixed a bug (#22817) where Grid and Relationship field data was not revisioned.
  • Fixed a bug (#22818) where channel form inline errors for custom fields didn’t display.
  • Fixed an issue where the Add-on Manager would be empty on some servers by accommodating an issue (#22819) with incorrectly typed variables from the database on environments with improper/non-standard PDO configuration.
  • Fixed a bug where the updater may attempt to add the same database column more than once.

Version 3.4.5

Release Date: December 6, 2016

  • Added a link to the Multiple Site Manager in the site switcher menu.
  • Added autocomplete="off" to all password fields in the control panel.
  • Added clickjacking prevention to the URL redirect warning page.
  • Improved performance of and fixed various issues filtering Relationship fields on the publish form.
  • Improved accuracy of error message with File fields in Channel Form.
  • Fixed a bug (#22754) where the SQL manager could not sort by table disk size.
  • Fixed a bug (#22721) where the Redirect library may mistakenly think a protocol-relative URL was malicious.
  • Fixed a bug (#22720) where the add-ons list in the control panel was not filtered by member access for non-Super Admins.
  • Fixed a bug (#22736) where running the updater with templates saved as files may show an error.
  • Fixed bugs (#22427 & #22080) where Channel Form would not allow setting of certain fields, and would eat global variables.
  • Fixed a bug (#22766) where Channels that have reached their maximum entry limit may not be able to edit existing entries.
  • Fixed a bug (#22761) where certain settings in the member profile would appear unsaved.
  • Fixed a bug (#22030) where entry revisions were created regardless of Channel preference.
  • Fixed a bug (#22089) where editing checkbox fields in Channel Form that were populated by another channel field would not show their checked status.
  • Fixed a bug (#22007) where setting the ID parameter on a Channel Form would cause the date picker not to initialize.
  • Fixed a bug where member notification emails were always sent in plain text regardless of the mail format setting.
  • Fixed a bug where links bound with the FilePicker may have their callback overwritten with a default callback.
  • Fixed a bug (#22755) where editing an entry with a Relationship field may show its entry choices in the wrong order.
  • Fixed a bug (#22756) where deselecting an entry in a single Relationship field may re-select the entry upon filtering.
  • Fixed a bug (#22053) where saving a ChannelEntry model with properties initialized in the make() method would show an error.
  • Fixed a bug (#22008) where the category= parameter did not work in Channel Form.
  • Fixed a bug (#21999) where setting the field group or status group to None when editing a Channel would not stick.
  • Fixed a bug (#22777) where the settings forms with date localization settings may show an error under PHP 7.1.
  • Fixed a bug (#22768) where rendering an empty file field with a variable pair would replace its {url} variable with the author’s URL.
  • Fixed a bug (#22795) where the saving template partials may show an invalid language key on the button while saving.
  • Fixed a bug where selecting a channel when creating a new bookmarklet would not update the channel field dropdown.
  • Fixed a bug (#22796) bookmarklets could not set content for more than one custom field via query string manipulation.
  • Fixed a bug (#21721) where editing a URL title in an entry to change its case would show a validation error.
  • Fixed a bug (#22797) where deleting a quicklink sometimes would not work.
  • Fixed a bug (#21590) where custom field variable pairs could not be parsed in Channel Form.
  • Fixed a bug (#21492) where the show= parameter was not working for the {categories} tag pair in Channel Form.
  • Fixed a bug (#22024) where switching to an MSM site in the control panel would not respect the member’s CP homepage setting.
  • Fixed a bug (#22798) where the {entry_date} variable may always show the current date in Channel Form.
  • Fixed a bug (#22798) where the the use_live_url= parameter would not work in Channel Form.
  • Fixed a bug on the control panel profile section’s ban members page where a MySQL error occurred when searching banned members.
  • Fixed a security issue in the Email module.
  • Fixed a bug where Super Admins could not edit Channel Form entries authored by others when author_only= was used.
  • Fixed a potential bug with Channel Form with Site Manager when sites have identically named Channels.
  • Fixed a bug where editing the system offline and user message page templates might truncate the closing body and html tags.
  • Fixed the template order in the Channel settings Live Look drop-down. Straighten up!
  • Fixed a bug where editing the system offline and user message page templates might truncate the closing body and html tags.
  • Fixed a bug where bulk email sending from the Communicate page would overzealously try to send to more recipients than existed.
  • Fixed the sum of the Batch emails from the Communicate page. (We love you forever, Roman Moroni.)
  • Fixed a bug where you could not change an existing Channel Field from File to third-party field types with file compatibility.

Version 3.4.4

Release Date: October 27, 2016

  • Added a search_id parameter to the search module tags to allow non-standard URLs to function properly (see bug #22411).
  • Clarified language of the “Allow multiple logins?” Security setting (including changing to “Allow multiple sessions?”).
  • Fixed a bug (#21610) where deleting a Forum would show PHP errors.
  • Fixed a bug (#21747) where deleting a custom field would show a PHP error in some environments.
  • Fixed a bug (#22021) where actions could not be taken on items in the Spam module.
  • Fixed a bug (#22026) where the legacy channel entries API was saving the edit_date in the wrong format.
  • Fixed a bug (#22037) where some modules weren’t updating their version numbers upon update.
  • Fixed a bug (#22039) where editing a menu set link would change the link’s order in the set.
  • Fixed a bug (#22049) where changing the field group of a channel with a saved layout would append new fields to the Categories tab.
  • Fixed a bug (#22112) where the translation utility showed the wrong value on the left.
  • Fixed a bug (#22383) where deleting and then adding the same template route before saving could not be done.
  • Fixed a bug (#22412) where assigned channels on member groups may be bypassed.
  • Fixed a bug (#22421) where deleting a channel entry would call save() on module publish tabs.
  • Fixed a bug (#22422) where the {base_path} variable was not being parsed in the Black/White List module.
  • Fixed a bug (#22425) where automatic URL title generation for categories did not include the foreign characters array.
  • Fixed a bug (#22707) where clicking the Save button after editing a form with a success alert may cause the form to shift and the button not to be clicked.
  • Fixed a bug (#22711) where a non-existant language key was used on a control panel member profile form.
  • Fixed a bug (#22717) where comment-editing JavaScript would not allow other events to be bound to its links.
  • Fixed a bug (#22722) where an admin logging in as another member when “Allow multiple sessions?” is disabled would result in a PHP error.
  • Fixed a bug (#22724) where file upload options were not always correct for non-superadmins in the file manager.
  • Fixed a bug (#22725) where cloning a Grid column would not carry over checkbox values in some browsers.
  • Fixed a bug (#22726) where some fieldtypes may show PHP errors when used in non-channel content types.
  • Fixed a bug where Default Category Channel pref was not being respected in the channel entry form.
  • Fixed a bug where Member custom fields were not available on the Memberlist member theme template.
  • Fixed a bug where PDO was returning the wrong data types for some columns.
  • Fixed a bug where channel forms using the site parameter did not display properly in layouts if there were no results.
  • Fixed a bug where deleting a category group assigned to a channel that has multiple category groups would cause errors when publishing.
  • Fixed a bug where field creation via the Member Importer would not create all necessary columns in the member_data table.
  • Fixed a bug where invalid category/category-names in the URL did not throw {if no_results}. These requests will now 404 ftw.
  • Fixed a bug where simple commerce could display a PHP warning.
  • Fixed a bug where the Edit Upload Directory form would not properly reflect overridden path and URL values from the config file.
  • Fixed a bug where the {member_group} global variable was playing hide-and-seek. Found it!
  • Fixed a bug where the category filter on the Entry Manager did not respect your category orders. Line up, soldier!
  • Fixed a bug with server response times in New Relic transaction reporting for front-end requests.
  • Fixed a bug with the Member Importer where member field creation validaton would not work.
  • Fixed an obscure bug (#22718) where a MySQL error could occur during installation on some environments.
  • Fixed security bug where XSS may be injected by query string on certain control panel pages.

Version 3.4.3

Release Date: September 20, 2016

  • Security
    • Fixed a potential PHP injection issue when redirecing within the CP. (Thanks to the folks at https://www.ripstech.com with their static code analyzer RIPS)
  • Improved metadata protection in Channel Form submissions.
  • Optimized queries on pending/banned member tables.
  • Namespaced add-ons now respond to the director’s call. ACTION! (Fixed a bug where ACTION requests to namespaced add-ons failed).
  • Fixed a bug (#21855) where layouts could not expand a field that was configured to be hidden.
  • Fixed a bug (#22028) where opening a file picker modal in thumbnail view with an empty directory selected would show a PHP error.
  • Fixed a bug (#22029) where where the cURL library had an incorrect query string separator.
  • Fixed a bug (#22035) where {base_url} was not parsed in Pages Module URLs.
  • Fixed a bug (#22081) where several site variables were not available in conditionals.
  • Fixed a bug (#22114) where there was an undefined variable on the Reset Password screen.
  • Fixed a bug (#22115) where front-end member registration may not have password validation.
  • Fixed a bug in layouts where you could not collapse/uncollapse a field after you moved it without first saving the layout.
  • Fixed a bug in the Discussion Forum where the forum order in the front end and back end did not match.
  • Fixed a bug where cache files may be unable to be read by EE in certain hosting environments.
  • Fixed a bug where some layout fields were being added old skool which caused PHP errors.
  • Fixed a bug where the IP to Nation module could not update its IP database on PHP 7.
  • Fixed a bug where the View All link on the control panel edit submenu didn’t show when it should have.
  • Fixed a Channel Form bug where model hooks would see the wrong author if a default Channel Form author for guest posts was set.

Version 3.4.2

Release Date: August 23, 2016

  • Security
    • Enhanced XSS protection in the Simple Commerce control panel.
    • Fixed a potential HTML injection (non-XSS) issue.
  • Added new Debugging & Output preference: “Enable Developer Log Alerts?”
  • Added <mark> to Safe HTML Typography and are now allowing its use in Channel Entries {title}.
  • Eliminated some PHP warnings in the Forum template editor if a custom theme had nested folders that were not explicitly supported.
  • Fixed a PHP warning on the Forum Template editor if the admin had removed the default theme.
  • Fixed a bug where Channel Form fields would not prefill their values on submission error.
  • Fixed a bug where Default Category Channel pref was not being respected and added some tests so that it doth not regresseth again.
  • Fixed a bug where bulk actions in the forum were playing an endless game of hide-and-seek.
  • Fixed a bug where caching a tag with a conditional in it would always generate a cache and never read from it.
  • Fixed a bug where changing the commented status via the bulk action dropdown in the control panel affected unselected comments.
  • Fixed a bug where partials created from add-ons with disallowed characters might throw a PHP error.
  • Fixed a bug where the Email class would not load values from site config unless the developer had manually initialized it.
  • Fixed a bug where the file picker did not have an initial sorting applied.
  • Fixed a bug where updating a site’s Template Settings would save all partials and variables to disk, not just the current site’s.
  • Fixed a bug (#21417) where some HTML Buttons could not be created due to overzealous validation.
  • Fixed a bug (#21863) wherre the {avatar_url} tag was inaccurate when using a default avatar.
  • Fixed a bug (#21989) where image manipulations would always save with a default site ID of 1.
  • Fixed a bug (#21998) where date fields on the publish form would repopulate with a Unix timestamp after form validation failure.
  • Fixed a bug (#22001) where viewing pending members sorted by join date would show an error.
  • Fixed a bug (#22005) where the new category form may show encoded HTML entities in the parent category dropdown.
  • Fixed a bug (#22014) where control panels under MSM might not follow a member group’s CP Homepage redirect.
  • Fixed a bug (#22017, #21945) where toolbar buttons within Grid cells may be removed when manipulating rows.
  • Fixed a bug (#22018) where choosing a file in the filepicker could generate multiple click events.
  • Fixed a bug (#22019) where the TemplateGroup model may generate duplicate queries in the control panel.
  • Developers:
    • Added a parameter to form_dropdown() and form_multiselect() turn off automatic encoding of display values.
    • Added file and line number information to config file deprecation notices.

Version 3.4.1

Release Date: August 08, 2016

  • Security
    • Improved XSS protection in the CP when searching.
    • Improved XSS protection in the CP’s table filters.
    • Additional obscuring of file system paths when displaying exceptions.
    • Improved XSS protection in Markdown typography.
  • Long filenames now wrap in their table views in the File Manager and picker.
  • Fixed a bug where file modals were blank if no upload directories existed.
  • Fixed an issue where the top and bottom buttons on the publish page did not match.
  • Fixed an issue where changes to authentication rules could show a confusing form when logging in.
  • Fixed a bug (#21931) where the datepicker did not work consistently with non-default date formats.
  • Fixed a bug (#21950) where the ChannelSubscription model did not have the correct relationships.
  • Fixed a bug (#21940) where some member groups could not see template groups they created.
  • Fixed a bug (#21951) where the conditional parser removed too much whitespace.
  • Fixed a bug (#21982) where template partials were not parsed when inside other template partials.
  • Fixed a bug (#21981) where the “Show news on CP homepage” always showed “no” even when saved as “yes”.
  • Fixed a bug (#21983) where sometimes upload destinations didn’t have their {base_path} parsed.
  • Fixed a bug where when you edited a status the preview was always grey, instead of your specified color.
  • Fixed a bug where non-Super Admins were not presented with a Site switcher in the control panel if there are exactly two Sites.
  • Fixed a PHP warning that could occur when publishing an entry with admin email notifications enabled.
  • Fixed a bug where add-ons require()-ing native config files might throw a PHP error.
  • Fixed a bug (#21944) where category fields were not available when editing categories on the publish page.
  • Fixed a bug (#21864) on the member profile member list page where a MySQL error could occur when using some default sort orders.
  • Fixed a bug (#21984) where a PHP error could occur when uploading avatars in the control panel.
  • Fixed a bug (#21993) on the default HTML buttons settings page where the buttons were not limited to the current site.
  • Fixed a bug (#21922) where there was no way to remove a selected file from a file field in the channel entry form.
  • Fixed a bug (#21980) where a select field type would sometimes not validate when it should.
  • Fixed a bug where duplicating a channel would carry over its total_records count.
  • Fixed a bug where filling in a required File field on the publish form would not clear any associated validation error.
  • Fixed a bug (#22010) where deleting rows with invalid cells in a Grid would not clear its validation error.

Version 3.4.0

Release Date: July 27, 2016

  • Security (big thanks to security researchers at HackerOne for helping us continue to keep ExpressionEngine secure!):
    • Improved XSS and CSRF security in the Forum module.
    • Improved XSS security in the Member module.
    • Improved security by decoding IDN encoded domain names in user-submitted links.
    • Improved clickjacking defense by defaulting all requests to SAMEORIGIN framing rules. See the new x_frame_options config override for details and header options.
  • Added a menu manager to create custom control panel menus.
  • Added a “Maximum number of entries” setting to Channels.
  • Added base URL and base path settings to the URL and Path Settings to make building URLs and paths easier when environments change.
  • Added {reverse_count} and {absolute_reverse_count} variables to the Channel Entries tag, for displaying entry count “countdowns”.
  • Added an EllisLab news feed to the homepage.
  • Added a permission to enable/disable the news on the CP homepage.
  • Added a colorpicker to status highlight colors.
  • Added live preview for status color picker.
  • Added system overrides code_block_pre and code_block_post to give additional control over the output of [code] blocks.
  • Added the ability to override the forum theme with a parameter: {exp:forum theme='my_theme'}.
  • When creating and editing Channel entries you now “Save” or “Save & Close” the form.
  • Files have regained their ability to be categorized.
  • Improved the UI for Template Routes
  • The publish form will no longer have an empty category tab, unless you have a Layout that says it should.
  • Switching sites in the CP will take you that site’s homepage.
  • The File Chooser for Textareas and the RTE injested some ginko biloba and will remember your filters while editing or creating an entry.
  • Deprecation notices are back; Super Admins will see an alert in the “admin” sections of the CP.
  • Improved search on the edit page. It now includes entry data along with titles.
  • Improved template partial parsing time by a factor of ten.
  • Simplified Profiler Performance tab, and broke out time spent accessing the database.
  • Language packs saved using the translation utility are now saved in their respective system/user/language folder.
  • Channel Sets now export and import category fields.
  • Removed some items from the config for new installs. Existing installs can safely remove the following preferences if you’re using their default values:
    • debug: 1
    • is_system_on: y
    • allow_extensions: y
    • cache_driver: file
    • uri_protocol: AUTO
    • charset: UTF-8
    • subclass_prefix: EE_
    • log_threshold: 0
    • log_date_format: Y-m-d H:i:s
    • rewrite_short_tags: TRUE
  • File Improvements:
    • Gave parity between File field type and {exp:file:entries} variables.
      • File fields now have {directory_id}, {directory_title}, and {id_path=}.
      • The File Entries Tag now has {extension}, {file_id}, {file_name}, {file_size}, {mime_type}, {modified_date}, {path}, {upload_date}, and {url}.
    • File size variables now have human readable modifiers.
      • {file_size} display bytes as always: 295903.
      • {file_size:human} displays an intelligently abbreviated size: 289KB.
      • {file_size:human_long} displays with the long form of the byte unit: 289 kilobytes.
  • Fixed a bug where a File field tag may be unable to parse information about image manipulations for an upload directory belonging to another site.
  • Fixed a bug (#21578) where a File field inside a Grid inside Channel Form would not have its data saved.
  • Fixed a bug when saving a new Grid row that contained a Relationship field may show an error in rare cases.
  • Fixed a bug (#21952) in the relationship field display where entries from other sites would not show up in the selectable options.
  • Fixed a bug where radio buttons in sortable tables may lose their state after sorting.
  • Fixed a bug (#21918) where parsing Grid fields from multiple content types could show errors in rare cases.
  • Fixed a bug where {cp_edit_entry_url} did not specify the site ID.
  • Fixed a bug where Channel Form would populate a DateTime object into the POST data for the recent_comment_date field.
  • Fixed a bug where fields in a new layout tab could not be reordered until the layout was saved.
  • Fixed a bug where Channel Sets only exported and imported the first Category Group of a Channel.
  • Fixes a bug where MSM sites didn’t always have the Default Status Group.
  • Fixed a pagination bug on the Member Groups page.
  • Fixed a bug where MSM site prefs might not be updated for all sites during updates.
  • Fixed a bug (#21832) where apostrophes in checkbox, radio and select field values could cause validation errors when selecting those values in the publish form.
  • Developers:
    • Added a parse_config_variables() global function for parsing {base_url} and {base_path} variables in strings.
    • Added a validation rule, limitHtml, for limiting the kinds of HTML tags allowed in a string.
    • Added a placeholder key to the field definition for text fields in the shared form view.
    • Added the ability to extend native config files.
    • Added a cp_custom_menu hook that allows you to create custom menu items. This replaces cp_menu_array from version 2.
    • Added a search() method to the model query builder for easy search implementations.
    • CP/Alerts without a title, body, and a sub-alert will no longer render.
    • Sweet new formatters, via the Format Service. Currently includes attribute prepping and formatting byte sizes. More to come, huzzah!

Version 3.3.4

Release Date: July 7, 2016

  • Security:
    • Fixed potential SQL and XSS injection vulnerabilities in the control panel.
  • Added an .htaccess file to the themes folder to allow the control panel font assets to be used across domains and subdomains.
  • Publish file modal search now matches the file manager search behavior, searching in file names, file titles and by mime type (addresses bug #21912).
  • Fixed a PHP error when sending emails from extension hooks in the Session class.
  • Fixed a SQL error introduced in 3.3.3 when using the orderby="random" parameter with the {exp:file:entries} tag.
  • Fixed a PHP error introduced in 3.3.3 with the {exp:file:entries} tag in certain circumstances.
  • Fixed a bug in the Discussion Forum that prevented errors from being thrown on some invalid post submissions.
  • Fixed a PHP error when deleting a channel that contains entries that have comments.
  • Fixed a bug (#21630) where multiple channel forms on the same page could result in unparsed variables.
  • Fixed a bug (#21934) on non-default MSM sites, category custom field variables are unparsed on frontend.
  • Developers:
    • Added a public build_message() method as an entrance point if needed within the email_send extension hook.

Version 3.3.3

Release Date: June 6, 2016

  • Added back search to the file picker, addresses bug #21109.
  • Improved SQL display in the application profiler.
  • Fixed a bug where HTML could be rendered in the application profiler for expanded template log details.
  • Fixed a bug where show/hide details link didn’t work in the application profiler.
  • Altered the member group defaults so that new member groups default to unlocked (see bug #21879).
  • Fixed a bug (#21862) where the file picker modal may not be able to paginate in list view.
  • Fixed a bug (#21873) where loading the member fields listing would load a different language key for the Member Groups sidebar link.
  • Fixed a bug (#21890) where category assignments could be lost if the category field was not included in the form.
  • Fixed a bug where using the {exp:jquery:script_tag} would generate a PHP exception.
  • Fixed a bug where deleting a member and reassigning their content missed their versioned Channel entries.
  • Fixed a bug (#21692) where the channel filter search on the Entry Manger would sometimes not work.
  • Fixed a bug (#21783) where HTML buttons had blank previews when they contained HTML entities.
  • Fixed a bug (#21735) channel form entries didn’t update the edit date.
  • Fixed a bug (#21899) where channel form would ignore custom inline error tags.
  • Fixed a bug (#21784) where a PHP error would be shown when going to an edit entry page without an entry_id.
  • Fixed a bug (#21391) where New Relic would not be displayed as enabled when it was enabled by default.
  • Fixed a bug (#21485) where text fields with numeric content types would throw exceptions when saving with an empty value.
  • Fixed a bug where private messages wouldn’t show up in the member portal.
  • Fixed a bug (#21535) where there was as missing image for the front-end member templates.
  • Fixed a bug (#21851) on sites using MSM where templates from one site could be erroneously copied over to all other sites.
  • Fixed a bug (#21583) where a PHP error could occur in the channel form when specifying an invalid entry_id to edit.
  • Fixed a bug (#21800) where setting a default template group for a new MSM site unset the default templates on all other sites.
  • Fixed a bug where a PHP error could occur on the control panel member profile page when not on the default site.
  • Fixed a bug (#21840) where the user language setting did not override the default language setting.
  • Fixed a bug (#21861) in frontend member registration where a MySQL occurred if there were custom member fields included on the form.
  • Fixed a bug where a blank status highlight color could cause an exception on the content edit page.
  • Fixed a bug (#21421) where index.html, index.php, and index.htm would accidentally be synced to a file upload directory.
  • Fixed a bug (#21424) where category fields were not using the appropriate field formatting (since it was never set).
  • Fixed a bug where you couldn’t update the field formatting for a category field for all existing categories.
  • Fixed a bug (#21877) in the 3.1.0 updater that was reaching outside of the database prefix to try to change some tables.
  • Fixed a bug where updating your software license file would not be immediately reflected on your EllisLab.com Manage Purchases page.
  • Fixed a bug where Developer Log items made at the same second might be sorted randomly by MySQL.
  • Fixed a bug where Template Partial and Variable updated from the control panel were not reflected in the file system.
  • Fixed a bug in the XML-RPC Server implementation that could cause XML parsing failures on newer versions of PHP.

Version 3.3.2

Release Date: May 20, 2016

  • Saving entry revisions is now automatic so we removed the “Save Revision” button.
  • Updated Date formatting variables to allow day of the week, ISO-8601 year number, timezone identifier, ISO-8601 date, and microseconds. See Date Variable Formatting for details.
  • Optimized the create and edit template page to reduce the number of queries needed.
  • Fixed a bug (#21227) where the images in the RTE did not have the proper overlay when hovering over them.
  • Fixed a bug (#21288) where you may not be able to reliably paste text into an RTE field that had an image in it.
  • Fixed a bug (#21870) where the Simple Commerce and Pages modules were missing a link to their settings.
  • Fixed a bug where EXPLAIN queries could not be run in the SQL manager.
  • Fixed a bug where relationship data was not deleted completely.
  • Fixed a model bug where pivot table relationships were not always reversed correctly.
  • Fixed a bug (#21443) where assigning Allowed Channels with MSM would cause other sites to lose their assignments.
  • Fixed a bug where checking the Mime Type of a CSS file could return "text/plain" instead of "text/css".
  • Fixed a bug (#21663) where a raw language string would be returned if an add-on fails to install.
  • Fixed a bug (#21731) where status permissions were not being respected.
  • Fixed a bug (#21749) where a member group with only edit entry permissions did not have the Edit nav menu.
  • Fixed a bug (#21797) where we provided edit and delete icons for categories and then denied access when you tried to use them. Sorry.
  • Fixed a bug where add-ons could not specify a settings icon in the header.
  • Fixed a bug (#21866) where Markdown [code] blocks were not rendering correctly.
  • Fixed a bug where the default theme could not be installed.
  • Fixed a bug where the category parameter on the default theme slideshow could cause an error on some servers.
  • Fixed a bug where URLs in an add-on’s README.md file would not mask the CP url.
  • Fixed a bug where Channel {total_entries} was not updated when publishing a new entry.
  • Fixed a bug where Channel {total_entries} was not updated by the Statistics sync utility.
  • Fixed a bug where disabled checkboxes sorta looked enabley.
  • Fixed a bug where settings were not passed to Extension constructors on the Extensions settings page.
  • Fixed a bug (#21860) where update 3.1.0 could throw a PHP error in some situations.

Version 3.3.1

Release Date: May 10th, 2016

  • NEW: Added additional logging when changing email address and password.
  • Eliminated some extra, duplicate, and redundant queries when editing templates that are saved as files.
  • Fixed a security bug where logged out users could be shown altered system messages.
  • Fixed a bug (#21426) where status colors were not correctly shown on the Edit page.
  • Fixed a bug (#21712) where the toggle fieldtype sometimes generated an error when used in Channel Form.
  • Fixed a bug (#21713) where the file field on a publish form wouldn’t let go of an old file name when you replaced it. Let it go.
  • Fixed a bug (#21775) in the Moblog module where PHP errors could occur when saving an edited moblog and multiple allowed emails were specified.
  • Fixed a bug (#21806) where the Channel Form would inadvertently remove embed tags when editing entries.
  • Fixed a bug (#21808) when using formatting types other than Markdown that effectively ignored a Channel’s “Render URLs and Email addresses as links?” setting.
  • Fixed a bug (#21813) where an PHP error may show when viewing a member profile on older versions of PHP.
  • Fixed a bug (#21816) where there was an unrendered language key in the Simple Commerce email templates listing.
  • Fixed a bug (#21819) where the new Channel entry notifications were not working.
  • Fixed a bug (#21820) where an unordered HTML button proudly declared itself instead of just using its icon.
  • Fixed a bug (#21821) where email templates felt there were perfect as-is and didn’t save any edits.
  • Fixed a bug (#21824) where dates could display improperly on the Publish and Edit pages.
  • Fixed a bug (#21825) with Channel Set exports where exporting some field types could result in a corrupted zip file.
  • Fixed a bug (#21833) where the Active Record class may show an error in PHP 7.
  • Fixed a bug where a PHP error could occur when uploading files to a file field with a single directory specified.
  • Fixed a bug where adding a new row to a grid wouldn’t register any file upload buttons for textareas.
  • Fixed a bug where moblog settings did not properly display selected categories.
  • Fixed a bug where some relationship fields on the publish form would not scroll.
  • Fixed an obscure bug in channel entries where a specifying an invalid month, day and/or year in the parameters or the URI caused a MySQL error.

Version 3.3.0

Release Date: April 19, 2016

  • NEW: Added Channel Sets.
  • NEW: Added the default theme.
  • NEW: Added the ability to add language information to a bbcode block (e.g. [code="php"]).
  • NEW: {logged_in_...} Member variables are now parsed early.
  • NEW: Super Admins using “Login as” retain debugging information.
  • NEW: Member localization will now “stick” with the site’s preferences unless they have specified localization settings for their own account.
  • NEW: Added FontAwesome to the Control Panel.
  • NEW: Added a {site_description} global variable.
  • NEW: Added an unordered list button to the predefined HTML buttons.
  • NEW: Comments column on control panel entries listing will not show if comments are disabled and no comments are present on the site.
  • NEW: Added variables to the following email templates:
    • ‘User - Account declined notification’ ({username})
    • ‘User - Account validation notification’ ({username}, {email})
  • The RTE fieldtype no longer manipulates the HTML it generates. What you save is what you get.
  • Changed the email setting’s SMTP password field and the moblog setting’s email account password fields from plain text to password fields.
  • Linked category group and field group names in the control panel now link to their respective category and field listings.
  • Optimized relationship parent tag query.
  • Updated PHP Markdown to 1.6.0.
  • Removed code highlighting in [code] blocks.
  • Removed Glyphicons from the Control Panel.
  • Fixed a bug (#21697) where an error may show when an exception is thrown in PHP 7.
  • Fixed a bug (#21696) where the Manage Categories toggle was unstyled.
  • Fixed a bug (#21667) where the image formatting button on a textarea did not use the file picker.
  • Fixed a bug (#21688) where validation errors set via AJAX on Grid fields would sometimes be unresolvable.
  • Fixed a bug where channel form could sometimes overwrite fields that were not in the form.
  • Fixed a bug (#21644) where the file manager did not load for users with a lot of files.
  • Fixed a bug where grid with more than one relationship could not parse all of them.
  • Fixed a bug where the RTE fieldtype wasn’t always installed.
  • Fixed a bug (#21582) where layouts missing the Categories tab would generate errors on the publish page.
  • Fixed a bug (#21733) where layouts missing the Publish tab would generate errors on the publish page.
  • Fixed a bug (#21677) where recalcuatling statistics didn’t recalculate the comment counts.
  • Fixed a bug (#21682) where the list for duplicating an existing template, when creating a new template, was unsorted.
  • Fixed a bug (#21704) where Firefox wouldn’t scroll to top in the CP.
  • Fixed a bug (#21705) where saving an entry could trigger a PHP error.
  • Fixed a bug (#21710) where the file modal’s table did not sort.
  • Fixed a bug (#21619) where [code] blocks and Markdown codeblocks did not properly add <pre> tags.
  • Fixed a bug where the Channel Form would inadvertently remove add-on tags when editing entries.
  • Fixed a MySQL error that would occur on invalid forum feed requests.
  • Fixed a stray PHP 7 incompatibility in Channel Form
  • Fixed a bug (#21711) where CSS assets were not being delivered in {path='css/_ee_channel_form_css'} requests.
  • Fixed a bug where layout: globals were parsed in content.
  • Fixed a bug in site settings where the HTML button form required a closing tag.
  • Fixed a bug (#21699) where a PHP error occurred when editing an entry via the channel form if the instructions or label tags were present.
  • Fixed a bug (#21671) where a ‘Disallowed Key Characters’ error occurred when saving the channel_lang.php translation file.
  • Fixed a bug (#21700) where a PHP error occurred on the member group page in the control panel when pagination was present.
  • Fixed a bug (#21755) where there were unused language keys.
  • Fixed a few bugs (#21756, #21757, #21758, #21761, #21760, #21762, #21759, #21774) with duplicate language keys.
  • Fixed a bug (#21765) where some language keys had grammar issues.
  • Fixed a few bugs (#21766, #21767) where we weren’t using language keys.
  • Fixed a bug (#21768) where HTML button names were not being translated.
  • Fixed a bug (#21769) where we had a small typo in new member notifications language.
  • Fixed a bug (#21770) where a language key wasn’t getting the proper substitution.
  • Fixed a bug (#21771) where a language key wasn’t in our language files.
  • Fixed some langauge string bugs (#21754 and #21753).
  • Fixed a bug (#21707) where some old auto saved entries refused to go away.
  • Fixed a bug (#21750) where the File field could show an undefined index error if its data wasn’t pre-cached.
  • Fixed a bug where the default CP homepage could not be saved for members other than the logged-in member.
  • Fixed a bug (#21683) where URL titles had to be unique site-wide instead of per-Channel.
  • Fixed a number of display bugs (#21671) in the translator.
  • Fixed a MySQL error when recounting statistics and the Forum was installed (#21780).
  • Fixed a bug where the comment form could show despite comments being globally disabled.
  • Fixed a bug on the member profile page where the link to the member group form did not show for superadmins.
  • Reduced the password reset token’s timeout. (thanks to security researcher Sjibe Kanti)
  • Developers:
    • NEW: Added relationships_display_field_options hook to allow additional filters on the options in the publish field.
    • NEW: Added extension hooks for CategoryField, CategoryGroup, ChannelField, ChannelFieldGroup, File, MemberField, MemberGroup, Template, TemplateGroup, TemplateRoute models.

Version 3.2.1

Release Date: March 16, 2016

  • Fixed a bug (#21679) where the file field could lose content when saving existing entries.
  • Fixed a bug where apostrophes were not escaped in the Translation Utility.
  • Fixed a bug where entries without authors would generate a PHP error.
  • Fixed a bug where using channel form with a channel that has no channel form settings would generate PHP errors.
  • Fixed a bug (#20554) where the RTE stored full URLs instead of {filedir_n} tags.
  • Fixed a bug where usage of CI_DB_active_rec::distinct() would cause an exception.
  • Fixed bugs (#21544, #21353) with uploading and assigning avatars.
  • Developers:
    • Added member_ids to cp_members_validate_members hook.

Version 3.2.0

Release Date: March 8, 2016

  • NEW: Added template tags for modified image file dimensions i.e. {image}{width:small}{/image}.
  • NEW: Added a Toggle Fieldtype for all your on/off and yes/no needs.
  • NEW: Added URL Field Type
  • NEW: Added Email Address Field Type
  • The default database engine is now InnoDB
  • Added Forum Aliases.
  • Added the Forum Publish Tab back in.
  • Added global template variable/conditional is_ajax_request
  • Yay: we deprecated the jQuery module! Boo: we made it installable so you can still use it. Really, just use their CDN and include it yourself.
  • Added a notice to the Site Manager when the site limit has been reached.
  • Changed the file display to use the file’s name for non-images instead of the missing image thumbnail. (Bug #21270)
  • Changed the behavior of the “Any …” options in the Relationship settings such that it and the specific options are mutually exclusive, i.e. “Any channel” or a specific channel, but not both. (Bug #21659)
  • Fixed a bug (#21250) where sidebar items could not be marked inactive. Now they can.
  • Fixed a bug where the Core version tried to use the Spam service.
  • Fixed a bug where the comment module could throw a PHP error for guest posts.
  • Fixed a bug (#21650) where one could not remove all rows in a Grid field.
  • Fixed a bug (#21647) where there could be an undefined variable error on the Publish screen.
  • Fixed a bug (#21628) where categories would not maintain their selection on the Publish form when there was a validation error.
  • Fixed a bug (#21626) where the path for the passwords dictionary file was pointing to the wrong location.
  • Fixed a bug where formatting buttons on textareas would not work on new Grid rows.
  • Fixed a bug (#21638) where textareas with a file chooser available would have non-images inserted as an image tag.
  • Fixed a bug (#21567) where sites with OPcache enabled can result in a false erorr after a fresh install.
  • Fixed a bug (#21555) where empty tabs could not be removed from a layout.
  • Fixed a bug (#21545) where email templates could not be edited.
  • Fixed a bug (#21655) where template versions could sometimes generate erorrs.
  • Fixed a bug (#21656) where Template Revisions were displayed unsorted, rather than sorted by date.
  • Fixed a bug (#21565) where channel field text formatting could not update existing entries.
  • Fixed a bug (#21103) where installing from https would configure the site for http instead of https.
  • Fixed a bug (#21187) where Channel Form would sometimes be a little too strict about required fields.
  • Fixed a bug (#21215) where updating a site with template routes from a version before 2.9.3 would generate errors.
  • Fixed a bug (#21651) where we had a spelling mistake in an language key.
  • Fixed a bug (#21561) where the translation utitliy would truncate some HTML when saving.
  • Fixed a bug (#21293) where the translation utility would break the form if the translation contained a quotation mark.
  • Fixed a bug (#21648) where the last field in a layout would sometimes refuse to move.
  • Fixed a bug (#21587) where removing custom fields that were in a layout could break the layout.
  • Fixed a bug (#21487) where enabling versioning after creating a layout would generate errors.
  • Fixed a bug (#21329) where sending HTML email via the Communicate utility could add non breaking spaces.
  • Fixed a bug (#21318) where partial translations could not be saved.
  • Fixed a bug (#21335) where channel form couldn’t tell if an option was checked or not.
  • Fixed a bug where Grid column clones were jealous and quietly assumed the identity of the original.
  • Fixed a bug where you could not erase the contents of RTE field once it had been saved.
  • Fixed a bug where commenting as a Guest generated an error.
  • Fixed a bug (#21577) where the RTE would grow when switching from WYSIWYG to Source View.
  • Fixed a bug where the front-end email settings page didn’t require a password when you weren’t changing your email address.
  • Fixed a bug (#21287) where RTE fields could not be resized.
  • Fixed a bug where database errors could sometimes not be displayed.
  • Fixed a bug (#21601) where extension settings were only saved to the first method in the database.
  • Fixed a bug (#21599) where the no_results conditional on nested relationship tags would have some of the initial characters cut off.
  • Fixed a bug (#21584) where you couldn’t properly duplicate the Super Admin member group.
  • Fixed a bug (#21627) where the comment form didn’t work when using Session or Session and Cookie front-end session types.
  • Developers:
    • Added output_show_message hook for modifying the output of front-end system messages.
    • Added an $antipool parameter to random_string() in the string helper, to blacklist characters from the alphanumeric-type pools. Uses are for unambiguous strings for humans, i.e. order numbers, coupon codes, etc: $secret_code = strtoupper(random_string('alnum', 8, '0OoDd1IiLl8Bb5Ss2Zz'));
    • The cp_search_index table was removed.
    • The VariableColumnModel no longer marks properties as dirty when filling.

Version 3.1.4

Release Date: February 26, 2016

  • Fixed a CRITICAL bug where saving or deleting comments may cause data loss in certain areas of the associated Channel entries, caused by a change in 3.1.3. Only installations of 3.1.3 were affected.

Version 3.1.3

Release Date: February 25, 2016

  • Added visual indicators to required grid columns.
  • Grid’s data type options now use the same names as the custom field’s type options.
  • When editing a grid column’s data type the options are now filtered based on field type compatibility.
  • Member listing setting “Sort By” choices now match available columns.
  • Made some parameters in some Active Record methods required.
  • Our CodeMirror linter had an epiphany and now realizes that installed plugins can have underscores in their tag names.
  • Tweaked Performance tab of the Profiler for clearer display.
  • Fixed a bug (#21457) where unchecked checkboxes in a publish form didn’t stay unchecked.
  • Fixed a bug (#21558) where some Pages module variables were empty (and potentially some other items if retrieved with config_item()).
  • Fixed a bug (#21566) where the beforeSort and afterSort Grid publish form events were not working.
  • Fixed a bug (#21569) where categories of the same name thought they were all selected when only some of them were.
  • Fixed a bug (#21581) where a MySQL error occured on the publish page if no member groups were included in the author list.
  • Fixed a bug (#21593) where a front-end logout link may show a warning in PHP 7.
  • Fixed a bug (#21594) where number input types were not bound to AJAX form validation and had no styling.
  • Fixed a bug (#21595) where categories created under another MSM site could not be assigned to an entry.
  • Fixed a bug (#21603) where Grid’s JavaScript may try to manipulate table elements that are part of custom fieldtype markup.
  • Fixed a bug (#21604) where relationships inside grid fields did not work consistently on MSM sites.
  • Fixed a bug (#21605) where the documentation link for the “Suspend threshold” setting was broken.
  • Fixed a bug (#21606) where the units used for the Lockout Time setting were not specified in the field description.
  • Fixed a bug (#21609) where errors may appear when downloading a new blacklist under PHP 7.
  • Fixed bugs (#21612 & #21616) where entry comment counts where not updated when adding or deleting comments.
  • Fixed a bug (#21614) where one could not delete the last image manipulation for an upload directory.
  • Fixed a bug (#21615) where there were a few misspellings of “entries” in the CP.
  • Fixed a bug where Relationship fields could not be filtered when using session IDs for control panel sessions.
  • Fixed a bug where the header search box did not repopulate correctly.
  • Fixed a bug where a control panel search in the channel section could throw a PHP error.
  • Fixed a bug where some default avatars were no longer displayed on the frontend.
  • Fixed a bug where accepting the core file change notice resulted in a 404.
  • Fixed a bug where custom fields could use reserved words as their short name.
  • Fixed a bug where a Super Admin could delete his/her own account.
  • Fixed a bug where installing an add-on with a publish tab would break existing publish form layouts.
  • Fixed a bug where under the right conditions a member group that should have permissions to a forum doesn’t.
  • Fixed a bug where glob() could return FALSE and cause all manner of errors in the Add-On Manager.
  • Fixed a bug where saving a template did not clear any of the caches.
  • Fixed a bug where the Revisions tab on the publish entry form only showed two versions instead of all your versions.
  • Fixed a bug where the profiler did not display the URI of the current page call.
  • Fixed a bug on the Superadmin group edit page, where the checkboxes for including in the author list and member list were incorrect.
  • Fixed a bug where the confirmation notice would not be shown after deleting a large number of entries.

Version 3.1.2

Release Date: January 28, 2016

  • Fixed a bug (#21408) where the Show File Chooser checkbox would not save for text input fields.
  • Fixed a bug (#21488) where updating your member password could result in a PHP error.
  • Fixed a bug (#21493) where a “more info” link in the Security & Privacy settings 404d.
  • Fixed a bug (#21498) where using dynamic_parameters resulted in a PHP error.
  • Fixed a bug (#21505) where the template creation form would not have its submit buttons re-enabled after a validation error.
  • Fixed a bug (#21508) where form validation messages were not presented properly when editing a member’s profile.
  • Fixed a bug (#21515) where the file upload modal didn’t work when opened from the Rich Text Editor or the Textarea fields.
  • Fixed a bug (#21520) where the installer did not use the system config override for theme URL.
  • Fixed a bug (#21521) where extension settings were not wrapped in the proper markup.
  • Fixed a bug (#21523) where member groups listing in channel layouts table was missing a space.
  • Fixed a bug (#21526) where an error would appear when saving a category field.
  • Fixed a bug (#21532) where accessing some files wrongly accused you of attempting to access files outside of a directory.
  • Fixed a bug (#21537) where PHP 5.3 didn’t like something the Pages module was doing and complained loudly.
  • Fixed a bug (#21546) where one could not delete more than one category at a time via the category manager.
  • Fixed a bug where the moblog settings page could run out of memory on large sites.
  • Fixed a bug where upload_directory config overrides weren’t overriding on error display in the File Manager
  • Fixed a bug where relationship parsing could result in conditional errors.
  • Fixed a bug where channel form did not work without a url title field.
  • Fixed a bug in channel form where the validation parameters could be ignored.
  • Fixed a bug where deleting a field group didn’t delete its fields.
  • Fixed a bug where Site filters never showed.
  • Fixed a bug where uploading an avatar could result in an error about unlinking a directory.
  • Fixed a bug where the installer incorrectly showed errors when moving avatars.
  • Fixed a bug in the Channel form where non-superadmins did not always have access to all of their allowed channels.
  • Added a warning to the File Manager when the upload directory you are browsing at is not on the file system.

Version 3.1.1

Release Date: January 20, 2016

  • Fixed a bug (#21460) where interacting with a Relationship field’s filter inside a new Grid row would cause an error on entry save.
  • Fixed a bug where the contact form could throw a PHP error.
  • Fixed a bug (#21507) where creating template groups with save as files would throw PHP errors.
  • Fixed a bug (#21512) where using the filepicker in the publish form could result in an “Invalid selection” error.
  • Fixed a bug where the filepicker for file fields forgot about the default modal view setting.
  • Fixed a bug (#21511) where the status filter on the Entry Manager ignored your selected channel.
  • Fixed a bug where Template Variables would not automatically sync from files.
  • Fixed a bug where the Metaweblog API errored when attempting to send or receive data.

Version 3.1.0

Release Date: January 18, 2016

  • Compatible with PHP 7 and MySQL 5.7
  • Template partials and Template variables can now be saved as files.
  • Added the ability to manage categories from the Channel entry publish form.
  • CodeMirror textareas (think Templates) are now resizable.
  • Channel entries now default sort by entry date with the newest at the top.
  • New member groups default to allowing online website access.
  • Updated language in the installer to identify the directory that needs to be deleted if we can’t automatically rename the installer directory.
  • Template groups can be reordered in the sidebar again.
  • Removed duplicate queries when displaying multiple relationship fields on the publish form.
  • Changed File listing to sort by date by default.
  • Changed Add-on listings so the add-on name always links to the module control panel or settings if they exist.
  • Changed wording of File field button on Publish page.
  • Fixed a bug where the Filepicker could run out of memory.
  • Fixed a bug where load_package_js did not work on fieldtype publish pages.
  • Fixed a bug where validation did not work consistently on some numeric types.
  • Fixed a bug (#21255) where the “Assign category parents?” setting had no effect.
  • Fixed a bug where the JavaScript for the Rich Tech Editor could not be loaded on the front-end.
  • Fixed a bug (#21118) where custom member fields could not be populated.
  • Fixed a bug (#21309) where custom member fields could not be rendered in a template.
  • Fixed a bug where a PHP error would appear in the control panel if the cp_css_end hook was active.
  • Fixed a bug where using the logged_out_member_id= parameter on Channel Form would throw an exception for logged-out users.
  • Fixed a bug where duplicating a template group would not reset the hit counts for those templates or copy template permissions.
  • Fixed a bug where new installs may be tracking template hits despite the setting appearing disabled.
  • Fixed a bug (#21157) where files sizes could not be less than 1MB.
  • Fixed a bug where bulk action checkboxes failed to work in the Entry Manager after searching.
  • Fixed a bug (#21104) where add-ons with mutliple fieldtypes couldn’t use their fieldtypes.
  • Fixed a bug where the installer wouldn’t automatically rename if you still had the mailing list export in your cache.
  • Fixed a bug (#21458) where file uploads did not work in the Channel form.
  • Fixed a bug (#21442) in the Channel form where PHP errors occurred when editing an entry with a file.
  • Fixed a bug in the Channel form where PHP errors could occur when submitting an entry with no category assigned.
  • Fixed a bug where CAPTCHA was not working properly on the Channel form.
  • Fixed a bug where ENTRY_ID was not properly replaced on return after submitting the Channel form.
  • Fixed a bug where the default status was not being used by the Channel form.
  • Fixed a bug where new sites could not be created via the Site Manager.
  • Fixed a bug (#21491) where the Grid model’s cache could not be cleared on subsequent data queries.
  • Fixed a bug (#21464) where removing a file didn’t remove it’s manipulated copies. It’s hard saying good-bye.
  • Fixed a bug (#21482) where templates were jealous and refused to show you their previous revisions.
  • Fixed a bug (#21472) where checkboxes, radio buttons, and multiselect fieldtypes didn’t pay attention when given their menu options on create.
  • Fixed a bug where adding category groups to a channel that had a layout wouldn’t let you move that category group in the layout.
  • Fixed a bug (#21490) where “Populate the menu from another channel field” option in Channel Fields forgot which field you wanted to use.
  • Fixed some language keys.
  • Fixed a PHP warning when editing the Developer Forum theme templates.
  • Fixed a bug where a duplicated Grid column would create two copies when duplicated.
  • Fixed a Markdown bug with URLs that contain spaces when using Safe HTML.
  • Fixed a bug (#21462) for PHP 5.3 which would lead to a fatal Using $this when not in object context... error. Time to upgrade PHP!
  • Fixed a bug where stop word removal in the search module was not UTF-8 compatible. Zaro Ağa is no longer Zaro Ğ.
  • Fixed an obscure URI detection bug that could lead to duplicate content duplicate content.
  • Fixed a bug in Template Routes where it was ignoring the “Require all Segments” setting.
  • Renamed Template Route’s “Require all Segments” setting to “Require all Variables” to match its behavior.
  • Developers:
    • Changed the event emitter to trigger subscriber events before manually bound ones
    • Model events will no longer trigger if the described event does not take place (no onAfterSave if save is called on an unchanged model)
    • Added less_than and greater_than validation rules
    • string_override key in publish form tab definitions works again.
    • Fixed a bug where asking a model query to return columns that didn’t include the primary key would only return one result.
    • Class names can now be set on fieldsets via the shared form attributes array.
    • Fixed a bug in the legacy Addons library where incorrect paths would be returned from the get_installed() method.
    • Fixed a bug where alerts that were deferred would not carry over their manually-set close/cannot close setting.
    • Date fields with the date picker bound to them can set a custom date format via a data-date-format parameter on the text input.
    • The date picker can be bound to a text input using EE.cp.datePicker.bind(element).
    • Added comment_entries_query_result hook for modifying the query result set for {exp:comment:entries}.
    • Added comment_entries_comment_ids_query hook for modifying the query that selects the IDs for comments to display in {exp:comment:entries}.
    • Added the ability for Folder List sidebars to be reordered.
    • Added a pause and resume method to the form validation JS.
    • Added: Channel Fields can now declare their compatibility type allowing editing of the type itself (i.e. RTE to Textarea).
    • Added a number of hooks to the following models:
      • Channel Entry
      • Member
      • Category
      • Comment

Version 3.0.6

Release Date: December 17, 2015

  • Fixed a bug (#21240) where some templates rendered with errors relating to “protect_javascript”.
  • Fixed a bug (#21310) where Channel Layouts did not allow you to reposition fields that were added after the layout was created.
  • Fixed a bug (#21400) where the Contact Form generated errors.
  • Fixed a bug (#21400) where the Contact Form returned a white screen when the Spam module was enabled.
  • Fixed a bug (#21412) where some categories appeared on the Publish tab.
  • Fixed a bug (#21420) where the Relationship field could no longer organize its related items after searching.
  • Fixed a bug (#21436) where RTEs were named inconsistently as fields vs. Grid columns.
  • Fixed a bug where some elseif branches in template conditionals were not pruned correctly.
  • Fixed a bug where searching withing a Relationship field would unsort your related entries.
  • Fixed a bug where publish forms with large Relationship fields could overflow the POST data and result in data loss.
  • Fixed a bug where new rows added to a Grid with a Relationship column could have pre-populated Relationship fields.
  • Fixed a bug where filtering or searching a Relationship inside a Grid caused that Relationship to ignore the selection.
  • Fixed a bug with some overzealous Markdown parsing.
  • Fixed a bug where the Member module would not be installed when upgrading a Core installation to Standard.
  • Fixed the {cp_edit_entry_url} variable.
  • Fixed a bug where forum previews did not fall back to using the default index template if running the forums through the templates.
  • Adjusted sub menus to scroll when they are long.
  • Improved New Relic transaction reporting.
  • Pre-release versions now include a visual indication that they’re pre-release and also include the version identifier (e.g. dp.4) in the extended version information.
  • The installer has been calmed down a bit and won’t skip showing you error messages when they exist.
  • Added a check for the required PHP Fileinfo extension to the installer.
  • Added a feature (#21418): duplicating a Template did not duplicate its allowed member groups.
  • Added a feature (#21427): the Edit Manager’s category filter is now populated based on the channel filter.
  • Added a feature: comments can be formatted with any formatter you have installed. EE, we have Markdown!

Version 3.0.5

Release Date: December 2, 2015

  • Fixed a bug (#21338) where categories with an ampersand in the title would not maintain its selection state on the entry publish form.
  • Fixed a bug (#21300) where the RTE’s image tool may place the selected image in another RTE when there are multiple on a publish form.
  • Fixed a bug where a PHP error would appear in the control panel if the cp_css_end hook was active.
  • Fixed a bug where some Channel entry date variables would not work in conditionals without having brackets around them.
  • Fixed a bug (#21378) where the cp_css_end hook was never fired.
  • Fixed a bug (#21394) where an incorrect language key was used for the working state of some buttons in the Members section.
  • Fixed a bug (#21395) where a PHP error may appear on some actions dealing with file thumbnails.
  • Fixed a bug (#21389) where some OGV files would not be accepted for upload.
  • Fixed a bug (#21388) where validation for URL titles in Channel entries would incorrectly flag periods as not allowed.
  • Fixed a bug where global template partials could not be edited.
  • Fixed a bug where saving entries did not clear caches if that setting was enabled.
  • Fixed a bug where the default homepage could be set to the publish page of no channel.
  • Fixed a bug where only super admins could edit status groups.
  • Fixed a bug where form success messages were removed too eagerly.
  • Fixed a bug where modals were shy and did not scroll into view when using Firefox.
  • Fixed a bug (#21380) where logging in as another member from the control panel would show a PHP error.
  • Fixed a bug where channel layouts did not play nicely with the profiler.
  • Fixed a bug (#21387, #21273) where the File module was not installed.
  • Fixed a bug (#21373) where two file fields in one Channel would not work on the Publish page.
  • Fixed a bug (#21344) where the file modal would not restrict you to the allowed directory when switching filters.
  • Fixing a bug where no notice was shown when deleting a newly created publish layout tab with a field in it.
  • Fixed a bug (#21406) where the “view” link in the CP for your MSM site did not open in a new tab.
  • Fixed a bug (#21407) where extending the Category class revealed a PHP Runtime error.
  • Fixed a bug (#21342) where CSV exports were really Comma-and-Space Separated Values.

Version 3.0.4

Release Date: November 18, 2015

  • Fixed a bug that allowed .codemirror to stand on top of .sub-menu
  • Fixed a bug that prevented grid column widths from affecting the publish UI. (note: column widths will not affect grid columns with RTE, Relationships or Textarea fields)
  • Fixed a bug where run-on sentences made the RTE puff up with pride inside grid fields, we pulled him aside and set him straight.
  • Fixed a bug (#21099) where line breaks in member signatures were being converted to literal \n. Literally.
  • Fixed a bug (#21282) where publish tabs pulled a bait and switch and saved their defaults instead of your data. They are looking at hours of community service.
  • Fixed a bug (#21289) where some JavaScript events didn’t happen.
  • Fixed a bug (#21295) where clicking, instead of dragging, on the move icon in Channel Layouts refreshed the page.
  • Fixed a bug (#21305) where the button text on a Channel entry publish form would not be reset after a validation error when revisions were enabled.
  • Fixed a bug (#21307) where LocalPath::__get generated PHP errors.
  • Fixed a bug (#21308) where listing member groups couldn’t handle large numbers of members.
  • Fixed a bug (#21313) where submitting forms or clicking links would occasionally result in a blank page.
  • Fixed a bug (#21320) where a PHP error would appear when using the {member_search_path} variable inside an Channel Entries tag pair.
  • Fixed a bug (#21321) where empty relationship fields sometimes generated errors. Sometimes you just need a little alone time.
  • Fixed a bug (#21325) where certain add-ons refused to acknowledge their new version number after they were updated.
  • Fixed a bug (#21326) where the template manager was insensitive toward case sensitive file systems and you could not edit Forum Templates.
  • Fixed a bug (#21328) where we still referenced the constant SYSTEM. It’s now SYSPATH.
  • Fixed a bug (#21332) where some template paths had double slashes (//) when saving as files.
  • Fixed a bug (#21334) where template groups which were not the default template group bullied the default template group into renouncing its defaultness.
  • Fixed a bug where categories could not be assigned via Channel Form.
  • Fixed a bug where you couldn’t Communicate if you had a large number of members.
  • Fixed a bug where the CP complained with esoteric errors when you had enough members for pagination.
  • Fixed a bug where membership was elitist and pending members could not be approved.
  • Fixed a bug where the Forums fibbed about the Upload Directory being a URL when really it’s a path.
  • Fixed a bug where removing the Forum theme named “default” prevented the Template Manager from finding any Forum themes.
  • Fixed a bug where some buttons were roguishly displaying a raw language key, rather than actual language data.
  • Fixed a bug (#21283) where upload directory synchronization may not apply image manipulations to some files.
  • Fixed a bug (#21259) in the Email mdoule where PHP errors were thrown after sending emails.
  • Fixed a bug (#21274) where a member group with file access couldn’t open the file picker.
  • Fixed a bug where avatar images where showing up in the file picker.
  • Fixed a bug where you couldn’t upload images if the file picker only had one directory to choose from.
  • Added site-wide yes/no settings for notifying pending members when they are approved or denied.

Version 3.0.3

Release Date: November 9, 2015

  • Fixed a bug (#21272) where default field formatting was not respected when publishing. Chastised the offending code.
  • Fixed a bug (#21286) where there was a syntax error in the file picker on lower versions of PHP.
  • Fixed a bug (#21296) where new templates were shy and wouldn’t let anyone but Super Admins view them.
  • Fixed a bug (#21299) where a Grid-compatible fieldtype whose markup contained a table would make the Grid field behave incorrectly.
  • Fixed a bug (#21301) where there was only one default template group per install, not per site.
  • Fixed a bug (#21314) where the Discussion Forum front end was 404’ing. Where did it go?
  • Fixed a bug with Discussion Forum theme image URLs
  • Fixed a bug where some site settings did not save correctly.
  • Added the SMTP port to the Outgoing Email settings page.

Version 3.0.2

Release Date: November 2, 2015

  • Fixed a bug (#21214) where ExpressionEngine Core had Phantom Template Routes Syndrome which was causing PHP errors.
  • Fixed a bug (#21217) where the “owned by” link in the License & Registration page resulted in a 404.
  • Fixed a bug (#21222) where the CP was referencing “default.png” which retired and is on vacation in the south of France.
  • Fixed a bug (#21223) where clicking on the sort handle in grid settings refreshed the page.
  • Fixed a bug (#21225) where editing an entry with a file in a grid column could result in a PHP error.
  • Fixed a bug (#21226) where field groups refused to be assigned to any site but your first one.
  • Fixed a bug (#21228) where files could be uploaded to any upload destination via the publish form.
  • Fixed a bug (#21236) where the Black/White List add-on generated errors when trying to download the EE Blacklist.
  • Fixed a bug (#21239) where the IP to Nation add-on wouldn’t let you unban all countries once you’d banned at least one.
  • Fixed a bug (#21244 & #21198 & #21193) where field settings had a case of amnesia.
  • Fixed a bug (#21248) where choosing a thumbnail in the filepicker did nothing.
  • Fixed a bug (#21249) where the path of saved translations was incorrect.
  • Fixed a bug (#21251) where creating an entry didn’t set an edit_date.
  • Fixed a bug (#21252) where adding a custom member field could result in an exception.
  • Fixed a bug (#21253) where {edit_date} formatted dates incorrectly.
  • Fixed a bug (#21264) where updating a member would sometimes cause PHP notices.
  • Fixed a bug (#21266) where new channel entries ignored the Channel Settings for default status, category, entry title, and url title prefix.
  • Fixed a bug (#21275) where under the right conditions a required custom field could be hidden on the Publish page.
  • Fixed a bug (#21276) where categories had the option of setting themselves as their own parent; it was a genealogical nightmare.
  • Fixed several bugs where certain relationship template tag combinations would result in a PHP error. You should see the therapy bill.
  • Fixed a bug where some model validation errors tried to convert an array to a string.
  • Fixed a bug where new sites could not be created via the Site Manager.
  • Fixed a bug where PHP 5.3 objected to an array access in the Relationship fieldtype on the publish page.
  • Fixed a bug where saving a custom member field wanted you to “Save Layout”.
  • Fixed a bug where long folder list names were overlapping the toolbars.
  • Fixed a bug where remove tools would appear without a left border.
  • Added blockquote support to in app add on docs.
  • Changed bg color for login screens.

Version 3.0.1

Release Date: October 26, 2015

  • Fixed a bug (#21191) where creating a layout for a channel without categories misbehaved.
  • Fixed a bug (#21191) where moving a field into a new tab caused it’s hidden tool to malfunction.
  • Fixed a bug (#21196) where Core would report a PHP Notice when editing the profile of a member.
  • Fixed a bug (#21199) where 404 pages were not seting a 404 header.
  • Fixed a bug (#21199) where the “+ New Upload Directory” link resulted in a 404.
  • Fixed a bug (#21204) where certain versions of PHP could not determine empty of a function.
  • Fixed a bug (#21205) where the Filepicker wouldn’t play nice with Core.
  • Fixed a bug (#21206) where disabling comments still displayed comment data on the Overview page.
  • Fixed a bug (#21213) where turning on “Save Templates as Files” was a little overprotective and rewrote the index template with “Directory access is forbidden.”
  • Fixed a bug (#21218) where Quick Links were permanent.
  • Fixed a bug (#21219) where the template manager was too eager about keeping templates in sync across all sites instead of the current site.
  • Fixed a bug (#21220) where moving a required field to a new tab removed the required class.
  • Fixed a bug (#21221) where accessing the templates model during a session_start hook threw an exception.
  • Fixed a bug (#21224) where PHP would sometimes generate a warning when it tried to delete a file.
  • Fixed a bug (#21231) where members were being denied access to add-ons they had access to.
  • Fixed a bug (#21233) where an empty line in the spam module caused PHP errors.
  • Fixed a bug (#21233) where running apc_delete_file sometimes generated a warning.
  • Fixed a bug (#21235) where static template route segments were not being included when using {route=…}
  • Fixed a bug where creating a second layout for a channel would result in an Exception.
  • Fixed a bug where adding and saving an empty tab to a channel layout prevented further editing of the tab.
  • Fixed a bug where alerts were not being displayed while creating a layout and preforming unallowed actions.
  • Fixed a bug where a required field could be dropped into a hidden tab.
  • Fixed a bug where dismissing alerts on the Create/Edit Form Layout page refreshed the page.
  • Fixed a bug where the thumbnail view of the filepicker was not responsive.
  • Add-ons are no longer “Removed”, they are “Uninstalled”.
  • Fixed a bug where ‘yes’ and ‘no’ weren’t localizable. Lo siento.
  • Removed CSS that forced capitalization on .choice

Version 3.0.0

Release Date: October 13, 2015

  • Control Panel

    • General

      • Responsive design is a pleasure on mobile devices.
      • 100% image free, fast and beautiful on regular and high density displays
      • Inline error messages consistently used on all forms.
      • The control panel navigation and logic is now based on the idea of Content Creators and Site Builders, with navigation related to content creators on the left and site builders on the right.
      • Many application defaults have been modified to reflect how people most often use ExpressionEngine.
      • Control Panel landing pages are customizable per member group, or even per member
      • In-app links to the documentation, support, and bug tracker are visible to member groups of your choice.
      • Improved contextual search in the control panel.
      • Uses a consistent visual language across the board.
      • Enabling/disabling CAPTCHA has been consolidated to a single site-wide setting.
      • Unified Upload Directories: Everything that used to be a special folder (Member photos, avatars, etc..) is now available in the File Manager and can use the usual file manipulations and other upload preferences.
      • Smart interactions (for example, if you have no channels, then clicking Create will take you to the channel manager to make one).
      • Bulk actions don’t clutter the UI, they onlyappear only when needed.
      • The new style guide allows both 1st and 3rd party to build awesome UX.
      • The new design will allow simple iterative niceties in the future, such as adding some minimal color and branding for your clients.
      • Comments are no longer a separate module. Comments can be accessed from the Overview page.
      • Accessories no longer exist.
      • Quicklinks and custom tabs were consolidated into only Quicklinks.
      • Table zebra-striping JS has been removed. Zebra-striping is handled automatically by the CSS.
      • Pre-populating the Name and URL fields of quicklinks when the ‘+ New Link’ button is clicked.
      • Added a default modal view setting to upload destinations.
    • Overview Page

      • The Home Page is now the overview page.
      • Completely rewritten to show a quick overview of your content, including recent comments, member counts and latest entry information.
    • Create

      • Content -> Publish has moved to the top level Create tab.
      • Improved category create modal.
      • The Publish Layout manager has moved to its own page in the Channel Manager.
      • Titles can now have different labels, set in the Channel Manager.
      • Improved behavior of entry filtering in Relationship fields on the publish form so it searches all entries.
    • Edit

      • Content -> Edit has moved to the top level Edit tab.
      • The search has live filtering, and you can now bookmark the results directly.
    • Files

      • Content -> Files has moved to the top level Edit tab.
    • Members

      • Member Group permissions are now more granular.
    • Developer Tools

      • Channel Manager
        • Admin -> Channel Administration is now a subsection under developer tools. All Channel, Status, Category and Field settings are accessed here.
        • Channel layouts have a dedicated form for managing the publish/edit layouts.
        • Categories have drag and drop sorting and nesting.
      • Template Manager
        • Moved from Design -> Templates -> Template Manager
        • Snippets were renamed Template Partials
        • Global variables were renamed Template Variables
        • Synchronization page removed as this is now fully automated.
        • Consistency in the display of any System templates (Email, Members, Forums, etc.).
      • Site Manager
        • Access to the manager moved from the site title dropdown.
        • Removed the ability to duplicate existing sites.
      • Add-On Manager
        • Add-ons are no longer a top level menu tab.
        • Add-ons are all on one page.
        • Third party plugins are grouped together.
        • Plugins must now be installed as part of the move toward more consistent behavior.
        • Built-in non-optional add-ons are hidden from the table
      • Utilities
        • Consolidated several Tools sections: Communicate, Utilities and Data.
        • Extension debugging section added here to allow disabling of individual extensions.
      • Logs
        • Moved from Tools -> Logs
    • Settings

      • The new Settings page consolidates a number of settings that were scattered throughout the version 2 control panel. Notably the Global Template, Member message and avatar* and Comment preferences can be found here. That’s in addition to the other preferences that move over from the version 2 Admin tab.
  • Multiple Site Manager

    • Now included with ExpressionEngine.
    • All ExpressionEngine licenses come with one site and you only pay for additional sites, not the ability to add additional sites.
    • When you upgrade your ExpressionEngine license, you can merge in a Multiple Site Manager license to add sites to that license.
  • Discussion Forums

    • Now included with ExpressionEngine.
  • Spam Module

    • Unified anti-spam service for first and third party code.
    • Comes pre-trained for common spam, but can be further trained your site’s specific content.
    • No subscription needed and all data remains on your site.
    • Training data is exportable for sharing with others and future site builds.
  • Installer

    • One-page installation.
    • Updating is much easier thanks to the new user servicable directory. Just replace system/ee and themes/ee and update.
    • Third-party add-ons are no longer updated during the EE update.
  • General Changes

    • Removed Referrer module.
    • Removed Mailing List module.
    • Removed Wiki module.
    • Template routes can now be set in the config file.
    • Improved template route parsing.
    • Improved Profiler and Debugging.
    • Screen Names no longer have to be unique.
    • Updated Markdown Extra to v1.5.0.
    • Changed password maximum length to 72 characters.
    • Added {if no_results} to {categories} tag pair in {exp:channel:entries} loop
    • Added {if no_results} to {exp:channel:categories}
    • A custom database port can be specified in the database configuration array
  • Developers

    • All new Model Service which replaces our APIs.
    • Added a Dependency Injection Container.
    • Channel fields, Member fields, and Category fields now all use the same API
    • New FilePicker service for displaying file browser modals
    • Use the require_captcha setting to determine whether to require CAPTCHA or not for your front-end forms.
    • Module tab API has changed. See tab.pages.php for a working example. In short, the methods are now display($channel_id, $entry_id), validate($entry, $data), save($entry, $data), delete($entry_ids).
    • Deleted:
      • Api_channel_entries::send_pings()
      • DB_Cache::delete()
      • Filemanager::frontend_filebrowser()
      • Functions::clear_spam_hashes()
      • Functions::set_cookie()
      • Member_model::get_localization_default()
      • File helper’s get_mime_by_extension()
      • Magpie plugin
      • Version helper
      • Channels-specific pagination hooks
      • SafeCracker hooks
      • edit_template_start hook
      • update_template_end hook
    • Deprecated:
      • cp_url() helper method, use ee('CP/URL') instead.
      • Extension’s universal_call(), use call() instead.