Changelog

This page lists all updates released for CMS Builder. You can get the latest release at our upgrade page.

*** September 2, 2023 - Version 3.61a (Maintenance Release)

- Hotfix for issue that prevented Code Generator from functioning correctly

*** September 2, 2023 - Version 3.61 (Maintenance Release)

SERVER REQUIREMENTS
- This software version REQUIRES: PHP 8.0+ and MySQL 5.5+

MINOR CHANGES
- CMS Record List: Record lists now show in stacked format for small screens (<768px) - see /3rdParty/clipone/css/main-small.css
- Developer Log: Filepath report now summarizes errors by line number and provides a "clear" link
- Server Info: "Admin > General > Server" now displays server uptime as days since "Last Rebooted"
- CMS Setup > Section Editors: Table row count and disk size now displayed as columns
- CMS Record List: You can now shift-click to select a range of checkboxes
- Permalinks Plugin: searchMultipleTables() now returns a permalink field if it's set (requires Permalinks v1.11)
- Programmers: New function: isMac() to detect macOS servers
- Programmers: New functions: errorlog_lastError() & error_get_last_message() for getting last error message
- Programmers: Added data-label="column title" to each <td> in CMS record lists
- Added no-cache headers to CMS pages to prevent caching
- Menus: Renamed "Background Tasks" to "Scheduled Tasks"

BUG FIXES
- Maintenance: Removed legacy MySQL library support (mysqli used since PHP 7)
- Maintenance: Replaced $php_errormsg references (not supported in PHP 8)
- Admin > General: Fixed open_basedir warnings on some servers
- CMS Record Lists: Fixed drag sorting for iPads
- Cron: Updated old references to `function` column to `functionName` (previous is now MySQL reserved keyword)
- Misc Code and other minor improvements.

-------------------------------------------------------------------------------

*** July 12, 2023 - Version 3.60 (Enhanced Server Management & Error Tracking)

SERVER REQUIREMENTS
- This software version REQUIRES: PHP 8.0+ and MySQL 5.5+

NEW FEATURES
- Server Info: "Admin > General > Server" now show some additional details about the current server
- Server Changes: "Admin > General > Server" now shows change history for server components (PHP, etc)
- Developer Log: New "Filepath Report" groups errors by filepath for easier debugging
- Developer Log: Improved detection of source filepath and line num of errors
- Developers: Added shellCommand() function to try various PHP shell execution methods and/or fail gracefully

BUG FIXES
- Error reporting: Fixed issue where @ silenced variables will still returning errors
- Default Data Files: Updated defaults to: ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
- mysql_escape now properly escapes backslashes ("\") so they match in searches
- Misc Code and other minor improvements.

-------------------------------------------------------------------------------

*** June 2, 2023 - Version 3.59 (PHP 8 now required)

SERVER REQUIREMENTS
- This software version REQUIRES: PHP 8.0+ and MySQL 5.5+

MINOR CHANGES
- Server Info: "Admin > General > Server" has been updated to display more info about server
- Server Info: "Admin > General > Server" now provides links for viewing MySQL status and variables
- Backups: CMS Backups are now created as temp files and renamed on completion to prevent partial backups on error
- Translations: Added some additional text to the translation system
- Viewers: date searches now work with special createdDate and updatedDate fields
- Languages: Made some additional text translatable

BUG FIXES & CODE UPDATES
- MySQL 8 Support: Renamed _cron_log table column "function" to "functionName" (reversed name)
- Database: Fixed bug where MariaDB 'null' defaults in backups couldn't be restored in MySQL
- Swift Mailer: Fixed some additional PHP 8.x warnings and errors.
- Fixed minor bug in SVG detection causing false positives in non-SVG images
- Developer Log: Removed Symbol Table as PHP 8 set_error_handler() function no longer supports it
- Libraries: Updated HTML Purifier from 4.14 to 4.15
- Remove /3rdParty/PHP_Compat/ PHP compatibility libraries that aren't required with PHP 8
- Prevented "Erase" button from appearing on Single Record Sections where it's not functional.
- Updated CA Root Certificates in /3rdParty/cacert.pem - used by curl_ functions.
- Additional PHP 8.x support fixes
- Misc Code and other minor improvements.

-------------------------------------------------------------------------------

*** March 17, 2023 - Version 3.58 (Maintenance Release)

SERVER REQUIREMENTS
- This software version REQUIRES: PHP 7.3+ and MySQL 5.5+

MINOR CHANGES
- Security: Added .htaccess code to prevent it from being loaded in a frame (to prevent clickjacking)
- Developer Log: Optimized memory usage to prevent memory limit errors when listing many error records
- Performance: Optimized getRecords() to load results faster in many cases (by replacing SQL_CALC_FOUND_ROWS)
- Programmers: getEvalOutput() now returns errors instead of halting execution. See function header for details

BUG FIXES
- Fixed PHP 8 transparent image error that returned imagecolorsforindex(): Argument #2 ($color) is out of range
- Added workaround for Maria 10.5.16 where COLUMN_DEFAULT of NULL is instead of an empty string for text columns
- Separator fields: Fixed PHP 8.2 error: Deprecated: Creation of dynamic property SeparatorField::$order is deprecated
- Additional PHP 8.x support fixes
- Misc Code and other minor improvements.

-------------------------------------------------------------------------------

*** September 26, 2022 - Version 3.57 (Maintenance Release)

SERVER REQUIREMENTS
- This software version REQUIRES: PHP 7.3+ and MySQL 5.5+

MINOR CHANGES
- Restoring databases on install now uses incremental restore to support large backups

BUG FIXES
- Additional PHP 8.1 support fixes
- Patched issue where emails would sometimes be received as raw HTML with PHP 8
- Fixed issue where cms admin searches for zero would return be ignored
- Misc code, security and other minor improvements.

-------------------------------------------------------------------------------

*** March 22, 2022 - Version 3.56 (PHP 8.1 Support)

SERVER REQUIREMENTS
- This software version REQUIRES: PHP 7.3+ and MySQL 5.5+
- NOTE: Some plugins may need to be updated when upgrading from v2.xx

NEW FEATURES
- PHP 8.1 Support: Updates to support PHP 8.1
- License updates: Removed license key requirements for white-label branding
- WebP Support: Added default plugin for converting media files to webp

MINOR CHANGES
- License: Updated license agreement to remove references to registration and licence keys
- Updated jQuery to 3.6.0

BUG FIXES
- Misc media library bug fixes
- Misc Code and other minor improvements.

-------------------------------------------------------------------------------

*** November 10, 2021 - Version 3.55 (PHP 8 Support)

SERVER REQUIREMENTS
- This software version REQUIRES: PHP 7.3+ and MySQL 5.5+
- NOTE: Some plugins may need to be updated when upgrading from v2.xx

NEW FEATURES
- PHP 8 Support: Updates to support PHP 8
- WebP Support: Added option to automatically convert uploads to webp format.
- Media Library: WYSIWYG media files can now be updated via media library (images must be the same size)
- Media Library: Added paging to media lists
- Media Library: Added multi-file uploader to the media library

MINOR CHANGES
- Plugin System: Added hooks for: list_postListTable_inner

BUG FIXES
- Fixed issue where MySQL timezone wasn't being correctly set
- Fixed issue where converting mysql localhost hostname to 127.0.0.1 prevented connections on some servers
- Fixed where incorrect warning was displayed about version of MariaDB being too old
- Fixed issue where media library wouldn't if there was more than one image field on a page
- Fixed error when saving category records
- Misc Code and other minor improvements.

-------------------------------------------------------------------------------

*** October 29, 2020 - Version 3.54 (Media Library Beta)

SERVER REQUIREMENTS
- This software version REQUIRES: PHP 7.2+ and MySQL 5.5+
- NOTE: Some plugins may need to be updated when upgrading from v2.xx

NEW FEATURES
- Media Library (BETA): Use uploaded images in multiple sections
You can enable this feature under: Admin > General > Advanced > Use Media Library

MINOR CHANGES
- "removeDate" special field is now ignored when left blank. **SEE UPGRADE NOTES BELOW**
- Automated schema sync now also adds missing indexes for fields that already exist (for better
compatibility with uploading schema files edited externally)

BUG FIXES
- Fixed issue stopping 'all' search field working when section has a tab field type.
- Disable database encryption when MySQL hostname is set to "localhost"
- Update for iframe sizing in Firefox
- Code updates to add support for PHP 7.4
- Updates for MySQL 8 compatibility
- Upgraded the HTML purifier library to version 4.12.0
- Blank passwords are no longer allowed (previously only possible by erasing password with a mysql query)
- Tabs no longer appear if users do not have permission to access them
- Misc Code and other minor improvements.

REMOVEDATE UPGRADE NOTES
Prior to this version, the default behavior for removeDate was to hide a post if
the field was blank. We've reversed this so that posts with a blank removeDate are now shown.
Before upgrading from older versions, verify that no sections are relying on the old behavior.

-------------------------------------------------------------------------------

*** August 12, 2019 - Version 3.53

BUG FIXES
- Allowed editing of fields that start with an underscore.
- Fixed issue with WYSIWYG uploads when in demo mode.
- Fixed issue stopping upgrade completing successfully.

-------------------------------------------------------------------------------

*** July 26, 2019 - Version 3.52

SERVER REQUIREMENTS
- This software version REQUIRES: PHP 7.1+ and MySQL 5.5+
- NOTE: Some plugins may need to be updated when upgrading from v2.xx

NEW FEATURES
- Section Editors: Added "Insert Field Here" (+) link to allow inserting a new field beside an existing field
- Section Editors: New "Tab Group" field for organizing section editor fields
- Section Editors: New '<input type="hidden">' advanced field for inserting hidden fields in sections.
- Server Admin: Admin > General > Disk Space now has an option to show largest files (for linux servers)
- Server Admin: Admin > Background Tasks now includes setup instructions for cPanel, Plesk, Windows, and Linux
- Database: Switched default storage engine from MyISAM to InnoDB
- Field Editor: "Update all existing records" feature available when adding a new field with a default value.
- Background Tasks: New option to limit the number of entries stored in the background task log.
- Category Menus: Now possible to assign Author/Viewer access to category menu sections.
- Admin Menu: Security Settings have been moved to their own menu
- Audit Log: Now logs login events and record add/modify/delete

MINOR CHANGES
- Select upload dialog only shows matching file extensions.
- Libraries: Updated TinyMCE from v4.9.0 to v4.9.4 (Released 2019-03-20)
- Libraries: Upgraded jQuery to v3.4.1
- Section Editors: New menu groups get default table suffix of "_menugroup" for usability

BUG FIXES
- Plugins: Added fix for issue that may cause plugins to get deactivated when they're being uploaded
- Category Menu: drag-order functionality no longer dependant on "name" column.
- Misc Code and other minor improvements.

-------------------------------------------------------------------------------

*** April 11, 2019 - Version 3.51 (PHP 7 Upgrade)

SERVER REQUIREMENTS
- This software version REQUIRES: PHP 7.1+ and MySQL 5.5+
- NOTE: Some plugins may need to be updated when upgrading from v2.xx

NEW FEATURES
- Server Requirements: PHP 7.1+ is now required (older versions will return an error)

BUG FIXES & MINOR CHANGES
- Upgraded to FontAwesome 5
- HTML 5 Style: Removed trailing slashes from single tags in Code Generator and CMS code
- Admin Menu: Updated admin menu warning to recommend latest supported PHP versions
- Libraries: Updated HTML Purifier from 4.9.3 to 4.10.0 (Released 2018-02-22)
- Fixed HTMLPurifier/PHP 7.2 warning: E_DEPRECATED: idn_to_ascii(): INTL_IDNA_VARIANT_2003 is deprecated
- Updated backup process to use considerably less memory
- MySQL 8 compatibility: Remove deprecated SQL mode, addressing case-sensitivity in information schema fields.
- Fix error when restoring encrypted fields to a blank database.
- Fix issue with Chrome autocomplete activating on admin pages.
- Removed unused libraries: swfObject, mobile_detect
- Misc Code and other minor improvements.

CSS UPDATES/CUSTOM THEMES
As part of the FontAwesome 5 update, some updates have been made to the base CSS theme templates included with CMSB.
If you use a custom CSS theme that is based on these theme templates, it will likely need to be updated.
Please compare to the new versions to match these changes if necessary. The specific changes are:
- The selector ".dragger, .label" (original line 17) has been changed to ".label"
- The block "ul.main-navigation-menu > li > ul > li.current > a:after { ... }" (original lines 64-71) has been fully reworked.
To see the differences compare /3rdParty/clipone/css/theme_blue.css.old with theme_blue.css

Also note that if your custom theme added any FontAwesome icons using pseudo-elements, they will also need to be updated
as per: https://fontawesome.com/how-to-use/on-the-web/advanced/css-pseudo-elements

-------------------------------------------------------------------------------

*** December 18, 2018 - Version 3.50 (Free Version)

SERVER REQUIREMENTS
- This software version REQUIRES: PHP 5.6+ and MySQL 5.5+
- Future versions will require: PHP 7.1+
- NOTE: Some plugins may need to be updated when upgrading from v2.xx

NEW FEATURES
- Free Version: Removed "Powered By" link from the footer of unlicensed versions.
There is now no branding on generated website pages. You can purchase a license
if you want to private-label the CMS backend/admin program.

BUG FIXES & MINOR CHANGES
- WYSIWYG: Updated TinyMCE from v4.7.2 to v4.9.0 (Released 2018-11-27)
- WYSIWYG: Fixed issue where tinymce cache files weren't getting saved in data folder
- Improved support for automatic image orientation on upload using ImageMagick
- File Uploading: Uploader now reports mime type on forbidden file errors (for debugging)
- Prevent "Copy of" from being added to separator field labels when using Save and Copy plugin
- Misc Code and other minor improvements.

-------------------------------------------------------------------------------

*** September 17, 2018 - Version 3.15 (Maintenance Release)

SERVER REQUIREMENTS
- This software version REQUIRES: PHP 5.6+ and MySQL 5.5+
- NOTE: Some plugins may need to be updated when upgrading from v2.xx

NEW FEATURES
- Section Editors: Added new field "Section Description" for HTML to be displayed below section titles.
- Usability: Uploaded jpegs are now automatically rotated as needed while being saved.

BUG FIXES & MINOR CHANGES
- Image Resizing: Updated resizing code to use less memory (resizing might be slightly slower).
- File Uploading: Updated error reporting to show more descriptive errors.
- File Uploading: Fixed bug when uploading file with no extension.
- utf8mb4 upgrading: Improved error reporting, misc improvements.
- utf8mb4 upgrading: Fixed bug when using multiple CMSB databases with same table prefix.
- Fixed javascript error on advanced filter list fields.
- Fixed broken link on Searching and Sorting tabs for multi-record sections.
- Fixed "view" pages in multi-record sections that use upload fields.
- Misc Code and other minor improvements.

-------------------------------------------------------------------------------

*** August 22, 2018 - Version 3.14 (HTML5 Multi-File Uploader)

SERVER REQUIREMENTS
- This software version REQUIRES: PHP 5.6+ and MySQL 5.5+
- NOTE: Some plugins may need to be updated when upgrading from v2.xx

NEW FEATURES
- File Uploader: Implemented new HTML5 uploader for easier multi-file uploading.
- Security: Added new option under Admin > General > Security "Encrypt Database Connections" for using SSL with MySQL
- Security: Added new option in Field Editor > Advanced Options > Data Encryption - Automatically encrypt data stored in database
- Security: /data/ folder can now be stored outside of the web root. See /data/how_to_move_data_folder.txt for details
- Backup & Restore: Restore operations are now incremental and reload the browser to avoid timeouts with large backups

BUG FIXES & MINOR CHANGES
- Email Delivery: Added tips to "Email Settings" on how to resolve delivery issues with Microsoft email services (hotmail, etc)
- Database: Fixed issue where not all fields would get converted to 4-byte UTF8 (utf8mb4)
- Field Editor: Added new 'MySQL Column Type' of MEDIUMBLOB (max: 16 megs)
- Backup Menu: Skipped tables are now listed under Backup pulldown
- Programmers: Added new plugin filters: loginExpirySeconds
- Programmers: Added utility function: makeWritable
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** February 20, 2018 - Version 3.13 (Maintenance Release)

SERVER REQUIREMENTS
- This software version REQUIRES: PHP 5.6+ and MySQL 5.5+
- NOTE: Some plugins may need to be updated when upgrading from v2.xx

BUG FIXES & MINOR CHANGES
- Usability: Admin > General > Server Info now reports which config files PHP is using (.htaccess, php.ini, etc)
- Compatibility: Removed rename_winsafe() function (not needed for modern PHP versions)
- Compatibility: Fixes PHP 7.2 error: ob_start(): Cannot use output buffering in output buffering display handlers
- Programmers: Added utility function: composerAutoload
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** December 5, 2017 - Version 3.12 (New multi-select pillbox field)

SERVER REQUIREMENTS
- This software version REQUIRES: PHP 5.6+ and MySQL 5.5+
- NOTE: Some plugins may need to be updated when upgrading from v2.xx

NEW FEATURES
- New Pillbox Field: Replaced multi-select pulldown with select2 pillbox (searchable pulldown with tags)
- Legacy MySQL Scanner: Added new plugin for detecting PHP/mysql code that needs to be updated for PHP 7
- Plugin Developers: View-source on any CMS page to see a list of all plugin hooks available to be called
- WYSIWYG: Added "Code Sample" button for showing formatted source code

BUG FIXES & MINOR CHANGES
- Programmers: Added utility function: curl_post
- Plugin System: Added hooks for: listRow_html
- Fixed issue that caused uploads and uploads paths not to display correctly (bug in endWith() function)
- WYSIWYG: The "Browse" button on the insert link popup now shows an error message if uploads aren't enabled.
- WYSIWYG: Updated TinyMCE from v4.6.0 to v.4.7.2 (Released 2017-11-07)
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** November 6, 2017 - Version 3.11 (User Requests)

SERVER REQUIREMENTS
- This software version requires: PHP 5.6+ and MySQL 5.5+
- NOTE: Some plugins may need to be updated when upgrading from v2.xx

NEW FEATURES
- Unsaved changes warning: when you navigate away from a add/edit form after making changes it warns you
- Developer Email: we've added a field for this so error reports can go to a separate email and not the default site email
- Emoji Support: We've switched 4-byte UTF8 (utf8mb4) to support storing of extended charset languages and emojis in database
- Lastpass Usability: Added workaround for issue where LastPass would automatically fill out username and password fields when modifying accounts
- Image Uploads: CMYK "print" images are now automatically converted to browser-safe RGB images on upload (instead of just showing an error)
- Email Delivery: Added tips on the bottom of the Email Settings menu on what to do when emails aren't getting delivered
- Offline Mode: Switched to storing and caching resources locally to speed up access for offline and limited internet access installations
- Server Security: Added new options for setting file permissions and umask (search 'permissions' in /data/settings file)
- Database Order: MySQL columns are now automatically reordered in database to match order shown in field list
- Clearing Task Log: Added link in header to "Clear Log" in: Admin > Background Tasks > Task Log
- Server Requirements: PHP 5.6 is now required (older versions will return an error)
- Plugin System: Added hooks for: admin_footer_preButtons

MINOR CHANGES
- Programmers: New functions: schema_isMultiValueField, listValues_pack, listValues_unpack, js_escapef
- Compatibility: Updated included "Sample Section Generator" plugin to support PHP 7 and mysqli
- Libraries: Added PHP 5.6 compatibility functions for: random_bytes, random_int
- Libraries: Updated TinyMCE from v4.6.0 to v4.6.4 (Released 2017-06-13)
- Libraries: Updated HTML Purifier from 4.7.0 to 4.9.3 (Released 2017-06-02)
- Libraries: Updated SwiftMailer from 5.4.1 to 5.4.8 (Released 2017-05-01)
- Libraries: Updated Mobile Detect from 2.5.3 to 2.8.25 (Released 2017-03-29)
- Usability: Editor fields with no size specified now default to medium size instead of small

BUG FIXES
- Related Records: Fixed issue where drag sorting wouldn't work on edit pages with multiple related records fields
- Advanced Commands: Fixed issue where Advanced Commands that didn't redirect the page would get trigger twice
- Schema Presets: Updated date fields to default to showing options for 5 years before and the current date
- Code Generator: Fixed issue where direct linking to Category Menu Generator from a non-category section caused an error
- WYSIWYG: Temporarily disabled WYSIWYG content menu as it was interfering with browser based spellcheckers
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** June 16, 2017 - Version 3.10 (Maintenance Release)

SERVER REQUIREMENTS
- This software version requires: PHP 5.6+ and MySQL 5.5+
- NOTE: Some plugins may need to be updated when upgrading from v2.xx

NEW FEATURES
- Experimental: New Code Generators and Viewers

MINOR CHANGES
- Programmers: Added utility function: mysql_do, curl_get
- Programmers: Added readme file: /how to upgrade from v3.08 (mysql to mysqli).txt

BUG FIXES
- Plugins: Fixed caching issue that caused some plugins to not install or upgrade properly
- Zend OPcache: We now call opcache_invalidate() when loading saved data files to prevent loading old cached versions
- PHP 7: Fixed error displayed on CMS view menus "Using $this when not in object context"
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** May 8, 2017 - Version 3.09 (PHP 7 Support)

SERVER REQUIREMENTS
- This software version requires: PHP 5.6+ and MySQL 5.5+
- NOTE: Some plugins may need to be updated when upgrading from v2.xx

NEW FEATURES
- Added support for PHP 7 (switched from mysql to mysqli libraries)
- MySQL Legacy Support: Can be enabled with checkbox under: Admin > General > Advanced
- MySQL Legacy Support: (automatically enabled when upgrading from earlier versions)
- WYSIWYG: Updated TinyMCE from v4.4.3 to v4.6.0 (Released 2017-05-04)
- Backup & Restore: Backup files can now be downloaded directly from the admin menu.
- Section Editors: Added more menu icons

MINOR CHANGES
- Disabled auto-capitalization and auto-complete on the username field on login page.
- MySQL reserved keywords can no longer be used as fieldnames
- Upgraded Font Awesome from 4.6.3 to 4.7.0 (more menu icons)

BUG FIXES
- Fixed TinyMCE issue where images couldn't be selected in latest Chrome browser: https://github.com/tinymce/tinymce/issues/3611
- Misc Code and other minor improvements

--------------------------------------------------------------------------------------------------------------------------------------------------------------

*** February 24, 2017 - Version 3.08 (***New Server Requirements***)

NEW SERVER REQUIREMENTS
- This software version now requires: PHP 5.6+ and MySQL 5.5+
- The following additional PHP extensions are now required: mysqli, openssl, curl
- Please check with your hosting provider to ensure you have these installed BEFORE upgrading.
- NOTE: Some plugins may need to be updated when upgrading from v2.xx

MINOR CHANGES
- Images: Resized JPEGs are now saved as progressive JPEGs so they display as they load.
- Admin Menu > Email Settings > Outgoing Mail: Added "Clear Log" option to page header to erase outgoing mail log.

BUG FIXES
- Database: Fixed MySQL 5.7 error when adding date fields: Incorrect datetime value: '0000-00-00 00:00:00'
- Database: Fixed issue where mysql locks were server wide and would slow down servers with many CMS installs
- Field Editor: Fixed error that appeared on some sections: "Notice: Undefined index: separatorHTML"
- WYSIWYG: Fixed issue with linking to a file not working if the file isn't an image.
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** December 7, 2016 - Version 3.07 (Upgraded WYSIWYG Editor)

SERVER REQUIREMENTS:
- This software version requires: PHP 5.5+ and MySQL 5.0+
- Future versions will require: PHP 5.6+ and MySQL 5.5+ (and PHP extensions: mysqli, openssl, curl)
- NOTE: Some plugins may need to be updated when upgrading from v2.xx

NEW FEATURES
- WYSIWYG: Updated TinyMCE from v3 to v4.4.3 (Released 2016-09-01)
- WYSIWYG: NOTE: Custom wysiwyg scripts will need to be updated. Upgrade process provides instructions.

MINOR CHANGES
- Image types: Added SVG to the list of default image types allowed and added emulated SVG thumbnails
- CMS Editors: Multi-value fields now show a warning when 1000 or more options are listed
- Field Editor: HTML Separators now support HTML in separator titles
- Field Editor: HTML Separators now show manually entered field labels in field list (for ease of use)
- Languages: Made some additional text translatable and set lang="xx" in CMS <html> tag
- Programmers: dieAsCaller() now logs error messages to Developer Log

BUG FIXES
- Category section: Fixed the issue where selecting a parent category would sometimes cause the current category branch depth to exceed the max depth
- Fixed a bug where clicking the "Go" button of the "Advanced commands" on a record list page opens a new tab
- Fixed issue where getPage() function failed on HTTP-chunked data when headers had extra whitespace
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** August 25, 2016 - Version 3.06 (CMS Menu Icons and Thumbnail Cropping)

SERVER REQUIREMENTS:
- This software version requires: PHP 5.5+ and MySQL 5.0+
- Future versions will require: PHP 5.6+ and MySQL 5.5+
- NOTE: Some plugins may need to be updated when upgrading from v2.xx

NEW FEATURES
- CMS Menus: Added icons for "CMS Setup" and "Admin" menus
- Section Editors: Added "Menu Icon" field for adding menu icon
- Field Editor: Added "crop" feature for upload field's thumbnail images

MINOR CHANGES
- CMS Menus: "Backup & Restore" has been moved from "General Settings" to its own page
- CMS Menus: "Text Link" menus that redirects to an external page now display an "external-link" icon
- Section Editors: Moved "Hidden menu" option from "Advanced" tab to "General" tab
- Field Editor: Added
tag support for text field prefix and description
- Code Generator: Changed the RSS feed's isPermalink attribute value to false by default so that it will pass the w3c validation
- Code Generator: Included hidden menus in the "Select Section" list options
- Programmers: Updated getPage() function to send HTTP/1.1 header, added support for HTTP-chunked data
- Programmers: Added new plugin filters: sendMessage_options, upload_removeFilePath

BUG FIXES
- CMS Menus: Fixed display issue where menus sometimes didn't appear correctly
- CMS Menus: Fixed issue where background color turns black when printing a CMS Menu page in Chrome browser
- CMS Menus: Fixed issue where thumbnails on the section list page sometimes disappear when adding a new thumbnail setting
- Field Editor: Fixed issue where save & copying a field doesn't automatically update the fieldname when changing the label
- Upload Field Editor: Fixed issue where recreating new thumbnail, the URL and file paths of that new thumbnail don't get set in its upload record
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** May 26, 2016 - Version 3.05 (Free "Powered By" Version)

SERVER REQUIREMENTS:
- This software version requires: PHP 5.5+ and MySQL 5.0+
- Future versions will require: PHP 5.6+ and MySQL 5.5+
- NOTE: Some plugins may need to be updated when upgrading from v2.xx

NEW FEATURES
- Free Version: CMS can now be used and installed without buying a license so long as "Powered By" link is displayed on website pages
- Branding Menu: License owners can now access all customization features under the Admin > Branding menu.
- License Agreement: Added section 4h requiring "Powered By HTML" be displayed unless users have a license

MINOR CHANGES
- CMS Menus: "Admin" menu has been re-organized into "CMS Setup" and "Admin Menu" menus
- Admin > General > Background Tasks: now shows full path to PHP binary for setting up cronjobs
- Admin > General > Background Tasks: Added options to temporarily disable background tasks when needed
- Admin > General > Server Info: Now shows installed PHP security modules (for debugging problems)
- Programmers: Added option to add icons before and after a CMS menu item
- Programmers: Added new plugin hooks: list_preListTable, list_postListTable
- Programmers: Added new plugin filters: list_showListSchema, list_showListRecords, listRow_record, listRow_showView, listRow_showModify, listRow_showErase

BUG FIXES
- CMS Menus: Fixed bugs where CMS menu didn't display correctly on mobile devices
- Reset Password page: Added adminUI header and footer
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** April 26, 2016 - Version 3.04 (Maintenance Release)

SERVER REQUIREMENTS:
- This software version requires: PHP 5.5+ and MySQL 5.0+
- Future versions will require: PHP 5.6+ and MySQL 5.5+
- NOTE: Some plugins may need to be updated when upgrading from v2.xx

BUG FIXES
- Fixed issue where CMS menu didn't work correctly on Safari browser
- Fixed issue where Collapsible Separator didn't work properly on IE browser
- Fixed issue where thumbnails didn't get correct file permissions on some servers
- Fixed issue where some errors didn't get logged when there was an out of memory error.
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** April 20, 2016 - Version 3.03 (Collapsible Separators & PHP 5.5)

SERVER REQUIREMENTS:
- This software version requires: PHP 5.5+ and MySQL 5.0+
- Future versions will require: PHP 5.6+ and MySQL 5.5+
- NOTE: Some plugins may need to be updated when upgrading from v2.xx

NEW FEATURES
- Collapsible Separators: The separator bars can now be defined as "collapsible", and open or closed by default.
- Field Editor: Bootstrap style "Field Addons" (input-group-addons) can now be added around text fields
- PHP 5.5+ is now required, this is the oldest supported PHP version: http://php.net/supported-versions.php
- New Upload System: Rewrote upload system to support different upload storage methods in future

MINOR CHANGES
- CMS List page: Added "Update" button in advanced search
- CMS View page: Added "Edit" button
- Tab titles: CMS Menu page titles are now menu-specific which can help when working with multiple CMS tabs open
- Editors: List field options specified as text can now contain PHP code
- Programmers: Added new function tag() for programmatically generating HTML tags
- Programmers: getCategories() callback options can now be specified as anonymous functions
- Programmers: Added new plugin hooks: admin_getRequestedAction, viewPage_preShowViewFormRows, viewPage_postShowViewFormRows
- Programmers: Added new plugin filters: post_loadSchema, showWysiwygUploadPreview_html, showField_addRowClass, viewPageFieldRowHtml
- Programmers: Added new global variable $GLOBALS['BACKUP_DIR'] so plugins can override the backup directory path

BUG FIXES
- Upload List dragging: Fixed an issue where rows could not be dragged to the very top or bottom of the list when row heights differ
- CMS List page: Fixed issue that causes an error if these is no "Search Fields" set in: Section Editor > Searching
- CMS Menus: Fixed issue where field widths created in v2.xx weren't the correct size after v3.xx upgrade
- Header Menu Links: Fixed issue wherein My Account menu group doesn't stay on top if the menus has been modified
- Section Field Editor: Fixed bugs with using "Save and Copy" button where fieldname prefix get duplicated and not all field copies get saved
- Editors: Fixed issue wherein uploading a jpg file using iOS devices causes an error
- Editors: Fixed datepicker issue wherein the calendar popup appeared underneath other fields
- General Settings: Re-added "Disable Autocomplete" option
- General Settings: Fixed Upload directory and URL preview
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** February 3, 2016 - Version 3.02 (Maintenance Release)

SERVER REQUIREMENTS:
- This software version requires: PHP 5.4.0+ and MySQL 5.0+
- Future versions will require: PHP 5.5.0+ and MySQL 5.5+
- NOTE: Some plugins may need to be updated when upgrading from v2.xx

MINOR CHANGES
- Section Editors: Updated "Field Width" option to be a pulldown with 5 sizes: tiny, small, medium, large, and full-width
- Section Editors: Updated "Field Width" pulldown to change size to show the user what the selected size will look like

BUG FIXES
- Section Editors: Fixed issue where all numeric fieldnames causes errors (All numeric fieldnames are no longer allowed)
- CMS Menus: Fixed issue where menu items would not appear when listed below a menu group the user didn't have access to
- CMS Upload Field: Fixed issue where black box appeared on top of page in Firefox when uploading
- CMS List page: Fixed issue where Preview button did not redirect to list page defined in section editors
- Misc design improvements including css, layout, colors and spacing
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** January 20, 2016 - Version 3.01 (Maintenance Release)

SERVER REQUIREMENTS:
- This software version requires: PHP 5.4.0+ and MySQL 5.0+
- Future versions will require: PHP 5.5.0+ and MySQL 5.5+
- NOTE: Some plugins may need to be updated when upgrading from v2.xx

MINOR CHANGES
- Developers: New plugin hooks: getLastNumberInUrl_removeFields
- Added resize cursor on hover to drag sort icon
- Install screen password field no longer displays entered characters (password field instead of text field)

BUG FIXES
- Upgrade code now defaults to "theme_blue.css" if a non-existent theme is specified
- Fixed default settings file to use "theme_blue.css" instead of invalid "theme_classic.css"
- Fixed "how to install.txt" to list to correct PHP version required: v5.4+
- Fixed double htmlencoding on CMS home dashboard page which caused single quotes to appear as &#039;
- Fixed issue that prevented some errors and menu notices from displaying correctly
- Fixed issue that caused menu items to sometimes display twice
- Fixed issue where clicking search button wouldn't show count of matching records
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** January 8, 2016 - Version 3.00 (Responsive UI)

SERVER REQUIREMENTS:
- This software version requires: PHP 5.4.0+ and MySQL 5.0+
- Future versions will require: PHP 5.5.0+ and MySQL 5.5+
- NOTE: Some plugins may need to be updated when upgrading from v2.xx

NEW FEATURES
- Backend: New mobile-friendly responsive design based on Bootstrap

MINOR CHANGES
- CMS Menus: Menus can now be indented from 1-5 levels deep
- Programmers: Error Log renamed to "Developer Log" and now has a stacktrace field
- SwiftMailer from 4.3 to 5.4.1
- HTML Purifier from 4.4.0 to 4.7.0

CODE CHANGES & BUG FIXES
- Programmers: New adminUI() function for generating CMS backend pages.
- Programmers: New functions: htmlencodef, ob_capture, preg_match_get, mysql_isConnected
- Programmers: New plugin hooks: adminUI_args, edit_createdByNumToName
- Deprecated Plugin Hooks: edit_buttonsRight, list_buttonsRight, view_buttonsRight (use the new 'adminUI_args' hook instead)
- Deprecated Plugin Hooks: header_links (use the new 'menulinks_myAccount' hook instead)
- Deprecated PHP Constants: START_TIME (use $_SERVER['REQUEST_TIME_FLOAT'] instead)
- Programmers: Added hooks for: relatedRecords_buttons
- Removed CMSB constant: START_TIME (replaced with PHP 5.3 variable $_SERVER['REQUEST_TIME_FLOAT'])
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** April 8, 2015 - Version 2.65 (Maintenance Release)

NEW SERVER REQUIREMENTS:
- This software version requires: PHP 5.2.4+ and MySQL 5.0+
- Future versions will require: PHP 5.4.0+ and MySQL 5.5+

NEW FEATURES
- Security: Added notice to top of "Admin > General" for servers running outdated and unsupported versions of PHP or MySQL
- Security: Autocomplete on login form is now enabled by default and can be disabled under Admin Menu
- Security: Added checkbox to toggle "Disable Autocomplete" browser function that saves usernames and passwords

MINOR CHANGES
- User Accounts: Added error checking to prevent admin users from accidentally disabling their own accounts
- Code: added "IN" operator support to mysql_where() (automatically applied when value is an array)

CODE CHANGES & BUG FIXES
- CMS List Search fields: Custom Name|createdBy.fullname fields now only list users who have records in the section instead of all users
- Code: Added new function: utf8_force()
- Code: Fixed encoding issue that caused false HTTP 418 security error on some hosting servers.
- Fixed Invalid UTF-8 Error "MySQL Error: Incorrect string value: '\x... caused when logging errors when a variable had binary data
- Fixed PHP 5.6 issue that prevented loading content from https:// secure websites with getPage() function
- Fixed _error_log schema so "Error Log" menu isn't listed twice on menu and is hidden under Section Editors
- Fixed config file .user.ini replacing # comments with ; comments, old-style # comments not supported by newer PHP versions
- Fixed logged error "E_WARNING: session_start(): Cannot send session cache limiter - headers already sent"
- Fixed PHP 5.5 warnings: E_DEPRECATED: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead
- Related Records: Fixed issue that prevented erasing related records from a view menu (no _CSRFToken error)
- sendMessage: Improved catching and logging of errors related to sending messages
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** February 17, 2015 - Version 2.64 (Universal Error Logging)

SERVER REQUIREMENTS: Since v2.50 the requirements are: PHP 5.2.4+ and MySQL 5.0+

NEW FEATURES
- Universal Error Logging: PHP errors on any CMS viewer page will be logged in backend CMS

MINOR CHANGES
- Flash Uploader: Rewrote how Flash Uploader system works for better compatibility with different browsers and servers

CODE CHANGES & BUG FIXES
- BugFix: Fixed issue where AutoBackup plugin caused login error: No _CSRFToken exists
- Admin Menu > PhpInfo: Added Multibyte Language settings from mb_get_info() to bottom of output page for debugging
- CMS UI: Fixed issue on view pages where existing date fields with NULL value in MySQL would show current date instead of blank
- CMS UI: Fixed issue that prevented date picker from displaying in any language other than the default
- CMS UI: Fixed issue where date selector icon link was broken when used on "Advanced Search" on list pages
- CMS UI: Fixed an issue where "Create" button in related records list would fail from record view.
- Code Generator: Updated generated code to prevent issue where uploads with ampersands ("&") didn't always display correctly.
- Code: Fixed a bug in emailTemplate_loadFromDB()'s error reporting
- Code: Fixed encoding issue that caused false HTTP 418 security error on some hosting servers.
- Code: getPage() now connects to IPs directly to avoid bug where fsockopen can't connect to resolved ipv6 addresses
- Compatibility: Fixed filemtime(): stat failed errors in backend admin when current working directory was different from script dir
- Compatibility: We now call opcache_invalidate() on saved /data/ files to prevent loading of old cached versions in PHP 5.5+ with Zend OPcache enabled
- Config: PHP date.timezone set to UTC by default to prevent errors in .htaccess and php.ini
- Email Templates: Added the following fields to list view: Reply-to, CC and BCC
- Flash Uploader: Fixed issue where flash uploader didn't work correctly with some browsers
- PHP Errors: Fixed filemtime(): stat failed errors in backend admin when current working directory was different from script dir
- PHP Sessions: Fixed issue where backup process or autobackup plugin would cause PHP sessions to be closed sometimes preventing logins
- PhoneGap Apps: Added workaround for issue where Android Apps don't send filenames when uploading so common image file extensions get automatically added if needed
- Security: Added blank index.html files to /uploads/ folders to prevent directory browsing for servers that would otherwise allow that
- Security: Disabled the ability for users to login with plaintext value of encrypted password hash
- Security: Added rule to .htaccess files to disable directory indexes (file lists) for folders without index files.
- Uploads: Fixed issue where uploads with ampersands ("&") didn't always display correctly in the CMS interface.
- Viewers: Fixed issues where certain single record section viewers would show updated content when "Preview" was clicked.
- WYSIWYG: Fixed issue that had spellcheck results with UTF8 characters get double encoded (TinyMCE Bug #4700)
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** September 3, 2014 - Version 2.63 (Maintenance Release)

MINOR CHANGES
- Upload Settings: Upload dir and url now shows live path preview for relative paths
- Upload Settings: New admin section "Server Upload Settings" shows PHP settings to assist in identifying server issues

CODE CHANGES & BUG FIXES
- Images: Fixed issue where transparent backgrounds weren't being saved when creating thumbnails of larger images
- Uploads: 100x faster renaming when larger number of duplicate filenames. Eg: photo.jpg yields: photo.jpg, photo_001.jpg, photo_002.jpg, etc
- Uploads: Added link to check if flash is installed beside flash uploader option under admin menu
- Install: Improved internet connectivity checking for web hosting servers (detects when server firewalls would prevent access to 3rd party APIs)
- Install: Improved PHP version detection check code so it works on PHP 4.4 (displays message to upgrade to PHP v5.2.4+)
- Codebase: getAbsolutePath() now renamed as absPath() and can calculate filepaths even if they don't exist (unlike PHP's realpath function)
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** July 15, 2014 - Version 2.62 (Security Enhancements)

NEW FEATURES
- Code Generator: Added new code generator for Category Menus
- Email Templates: Added new fields for: CC, BCC, and Reply-to
- Security: Added new "Security Settings" section under: Admin, General Settings
- Security: Custom generated "Security Tips" for the current server and connection are now displayed in red under "Security Settings"
- Security: Numerous security enhancements and new features (see below):

SECURITY ENHANCEMENTS
- Security: Password encryption is now required (ALL previous passwords are automatically encrypted on cms upgrade, a failed logins, or first login with a plaintext password)
- Security: To prevent identification, program version, build, and license info are now hidden from HTML footer code
- Security: expose_php is now disabled in /cmsb/php.ini to prevent broadcasting PHP version (custom php.ini not supported on all servers)
- Security: Enabled secure cookies by default - all cookies set on HTTPS:// connections can't be read from HTTP:// connections
- Security: PHP Sessions now force and require secure cookies when created on HTTPS:// connections
- Security: All PHP errors and warnings are now logged in a common file for easy review.
- Security: PHP errors are now all logged in the same secure log file which is here: data/php_error.log.php
- Security: Disabled browser autocomplete on all CMS forms with HTML5 attribute autocomplete="off" (previously done with javascript)
- Security: Disabled browser autocomplete on all password input fields with HTML5 attribute autocomplete="off"
- Security: Disabled browser autocomplete for browsers that ignore autocomplete with hidden field workaround: http://crbug.com/352347#c11
- Security: Added 1-3 second delay after failed login attempt to delay brute-force dictionary password attacks
- Security: Post-login redirects are now limited to application urls only
- Security: CMS uploads and assets (js libraries, etc) are now stored separately to prevent revealing admin folder name
- Security: CMS now displays a warning and automatically rejects form submissions from outside the CMS to prevent CSRF attacks
- Security: CMS now displays a warning and automatically rejects links from outside the CMS to prevent CSRF attacks
- Security: CMS now displays a warning for direct/manual links with no referer to prevent CSRF attacks
- Security: CMS menus now only accept POST form submissions to prevent CSRF (Cross-Site Request Forgery) attacks
- Security: CMS menus now check HTTP_REFERER and only accept form submissions from the CMS url to prevent CSRF attacks
- Security: CMS menus now warn when no HTTP_REFERER is sent to prevent CSRF and malicious URL attacks
- Security: CMS menus now check for unique session token on each form submission to prevent CSRF attacks

CODE CHANGES & BUG FIXES
- WYSIWYG: Fixed issue where wysiwyg wouldn't work on some servers that had output compression enabled
- WYSIWYG: Added workaround for servers with broken gzencode() function that always returned 'stream error'
- Bugfix: Added workaround for white-screen segfault/crash bug in PHP versions before 5.2.14 or 5.3.3 - https://bugs.php.net/bug.php?id=51552
- Bugfix: prevent realUrl() and redirectBrowserToUrl() from returning multiple slashes in some situations
- Bugfix: Fixed issue where cms list search fields showed as selected if they had a value of zero
- Bugfix: Fixed case of useDatePicker (uppercase P) in settings file, corrects issue that caused datepicker option to be unselectable in settings
- Bugfix: My Account menu wouldn't let you save settings unless you entered password again (should only be required when changing password)
- Bugfix: Default Account "Expiry Date" field year range now defaults to 5 years before/ahead of current date, not 2008-2016
- Bugfix: Background Tasks cron.php script will not dispatch any tasks unless software is installed.
- Bugfix: saveSettings() won't allow settings to be saved from command-line scripts until software has been installed from web
- Compatibility: Rewrote code that could not be uploaded to some GoDaddy FTP servers due to false-positive from server-side virus scanner.
- Compatibility: Fixed a problem with getPrevAndNextRecords() which caused it not to function correctly on some MySQL servers.
- Compatibility: Added improved detection for "Suhosin PHP patch" to Admin > General to help debugging of issues caused by Suhosin
- Compatibility: Improved outbound network connectivity test that is run on install to detect common network misconfigurations and provide tips.
- Plugins: Added new filters: showUploadPreview_html
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** February 19, 2014 - Version 2.61 (Security Update)

SECURITY UPDATE
- Update MySQL library to address security vulnerability introduced in v2.60

-------------------------------------------------------------------------------

*** February 13, 2014 - Version 2.60 (Field Editor enhancements)

NEW FEATURES
- Field Editor: MySQL indexes can be added with a checkbox setting to speed up searches and sorting
- Field Editor: All MySQL Indexes for a table show are now shown under: Field Editor > Advanced (tab)
- Field Editor: Select from five different column types (or enter a custom type) to optimize data storage in MySQL
- Field Editor: MySQL column type and index status is now shown on field list page (for advanced users)
- CMS & Viewer Search: Added support for multi-value OR searches by adding [] after fieldname (see docs & section editor search tab)

MINOR CHANGES
- Updated TinyMCE spellchecker plugin to use Google's new JSON API
- Editors: "Created By" users pulldown field is now sorted by username
- Languages: Updated Hebrew language translation file

CODE CHANGES & BUG FIXES
- Code: Upgraded to jQuery 1.11.0 loading from jQuery CDN servers for speed (with local fallback)
- Code: Upgraded to jQuery UI 1.10.4 loading from jQuery CDN servers for speed (with local fallback)
- Code: Upgraded to TinyMCE 3.5.10 (Released: 2013-10-24) - fixes some IE11 issues
- Admin Settings: Fixed error with default values "Upload Folder Url must start with a slash! (eg: /uploads/)"
- Admin Settings: Program Url is now automatically set if it is blank
- Admin Backup: These log tables are now skipped during backup: _outgoing_mail, _cron_log (can be overridden with plugin filter backupDatabase_skippedTables)
- Category Menus: Added CSS classes to rows: category_row, category_num_#, category_parent_#, category_depth_#, category_lineage#
- CMS Menus: Image preview thumbnails are now limited in height so extremely tall images don't make page too long
- CMS Menus: Dates on list pages now display in whatever format is specified under: Admin > General > Regional Settings
- CMS Preview: Fixed issue where preview button would appear if "Website Prefix URL" was set but preview url was not.
- Code Generator: Removed HTML comment tags that were confusing some users in default code generated for uploads
- Compatibility: Updated workaround to jquery.ajax for hosts that incorrectly send "0" when no output should be returned
- Compatibility: Fixed PHP 5.5 warning: Deprecated: preg_replace(): The /e modifier is deprecated
- Editor Fields: tip for uploading multiple files no longer appears for upload fields which only allow one upload
- Email Templates: Wysiwyg now displays and saves full links including hostname
- Install: Admin accounts created during install now have their passwords encrypted properly (fixes a problem with Website Membership login)
- Images: Using new faster image resizing code by default
- Outgoing Mail: Wysiwyg now displays and saves full links including hostname
- Plugins: "System Plugins" are no longer loaded if CMS version is lower than required version
- Plugins: Added new filters: upload_uploadDir, upload_uploadUrl, listRow_trClass
- Plugins: Added new actions: upload_dirAndUrl
- Section Editors: Fixed error when saving single record sections: "Notice: Undefined index: _listPage ..."
- Security: Disabled autocomplete on login username and password fields so sensitive data won't be remembered in browser
- Usability: Admin script now attempts to automatically detect when whitespace added during uploading might cause errors.
- Viewers: whereRecordNumberInUrl() now ignores Google AdWords auto-tagging values (gclid) when determining record numbers
- WYSIWYG: Updated Google Spellcheck to use new JSON API so it works again (XML API was discontinued)
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** April 4, 2013 - Version 2.53 (Development Server Enhancements)

NEW FEATURES
- Development Servers: Added install option to create separate settings files for development domains for easier migrations
- Development Servers: Added install option to support "prefix urls" such as /~username or /development/client-name for easier migrations
- Development Servers: Added new "Prefix Url" field under: Admin > General Settings > Directories & URLs
- Programmers: New /plugins/cron-example.php script shows how to run tasks at intervals such as once a day or once an minute.

CODE CHANGES & BUG FIXES
- Section Editors: Viewer Urls must now all start with a /
- Languages: New "Developer Mode" under Admin > General now works when "Default" is selected as a language.
- Custom Upload Folders: Fixed "directory doesn't exist" error on CMS edit pages
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** March 18, 2013 - Version 2.52

NEW FEATURES
- Sending Mail: Added support for SMTP authentication, unsecured, SSL secured, and TLS secured mail servers.
- Security: Added blacklist of top 10,000 common passwords. Found in /lib/login_password_blacklist.txt

MINOR CHANGES
- Programmers: Added "Export showMessage() PHP" option to Email Templates menu under Advanced Commands
- Programmers: sendMessage() now logs message headers
- Programmers: Added new function nullIfFalse()
- Viewers: getLastNumberInUrl() now automatically ignores facebook added url data, eg: fb_source, fb_action_ids, etc
- Usability: Whitespace is removed from beginning and end of username and password on login (to prevent copy and paste errors)
- Usability: Passwords that start or end with whitespace are no longer allowed.
- Security: Added plugin filter login_newPasswordErrors to allow custom validation rules for new passwords
- Plugins: Section Editors > Advanced (tab) > Required Plugins, now only requires plugin filenames match (in case users rename plugin folders)
- Editors: Checkbox field descriptions can now contain PHP code

CODE CHANGES & BUG FIXES
- Sending Mail: Added Swift Mailer v4.30 - Mailing library
- PHP Sessions: Added workaround to prevent PHP from creating 0-byte files in session folder
- CMS Preview: Fixed error "You don't have permissions to access this menu."
- Fixed loading problem when there were more than two chained selects on a section edit page.
- Fixed date field year range bug with modifying blank dates
- View Menus: Fixed bug where list values showed instead of labels when loading from another table
- Previously saved search keywords and sort orders are cleared on CMS logout
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** February 7, 2013 - Version 2.51 (Security & Maintenance Updates)

NEW FEATURES
- Login Sessions: Login Timeout can be set to any duration under: Admin > General > Advanced
- Login Sessions: Switched Logins to use cookies instead of PHP sessions to prevent early expiry
- Security: Added option to restrict CMS access by IP address to: Admin > General > Advanced
- Security: Updated TinyMCE WYSIWYG Spellchecker to v2.0.6.1 (Released 2012-11-20 - Security Update)

MINOR CHANGES
- WYSIWYG: Updated TinyMCE to v3.5.8 (Released 2012-11-20)
- Background Tasks: Added log search field "Completed: Any/Yes/No" for finding failed tasks
- Background Tasks: Failed tasks now send alert email to admin (max one email per hour)
- Email Templates: Reformatted list view to show all message details
- Email Messages: Automatically set 'Reply-To' to 'From' address (required by some email clients)
- Programmers: Added htmlPurify() function and HTML Purify library for filtering HTML
- Programmers: Added new function emailTemplate_addToDB() for adding email templates
- Programmers: Added "Export templates as PHP" option to Email Templates menu under Advanced Commands

CODE CHANGES & BUG FIXES
- Fixed file permissions error which reported "rename return value not boolean true or false"
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** December 5, 2012 - Version 2.50 (Language & Translation Features)

SERVER REQUIREMENTS
- The requirements for version 2.50 and later are: PHP 5.2.4+ and MySQL 5.0+
- For older servers use version 2.17 which requires: PHP 4.3.2+ and MySQL 4.1.7+

NEW FEATURES
- Languages: Updated translation system and added more translatable text
- Languages: Plugin system now support translation files stored in /languages/ under each plugins folder
- Languages: CMS Admin menus now support translation files stored in /lib/languages/adminMenu/
- Languages: Updated "/lib/how_to_add_languages.txt" file includes instructions for programmers on adding new language strings
- Languages: New "Developer Mode" under Admin > General automatically adds language strings to files as programmers code.
- Languages: New debug language "d|e|b|u|g" to help translators identify text that hasn't been added to translation system yet.
- Email Templates: Added new admin editor menu for CMS Password Reset email, and "email templates" that may be used by plugins.
- Background Tasks: Added new generic system running scheduled tasks/cronjobs with cron.php script for plugins
- favicon.ico: Add a favicon.ico file to the cms admin folder and it will be displayed by the browser when using the cms

MINOR CHANGES
- Wysiwyg: <style> tags are now supported within body content (required to style HTML emails).
- CMS Editor lists: Alternate account fields can be displayed with either: createdBy.username or otherAccountTable.username

CODE CHANGES & BUG FIXES
- Increased version to 2.50 to help identify versions with increased requirements (v2.5+ requires PHP/MySQL 5)
- Performance: Increased minimum PHP required to 5.2.4 (over 5 years old)
- Performance: Increased minimum MySQL required to 5.0.0 (over 8 years old)
- CMS List Search: Fixed issue where custom search fields sometimes wouldn't work (removed extra return chats from listPageSearchFields)
- Fixed Windows PHP "File exists" error that sometimes occurred when when renaming files
- Fixed issue where .swf files were being rejected as invalid when PHP returned a .swc file type
- Programmers: Added new functions: array_keys_prefix, contains, getValidationErrors, rename_winsafe, file_put_contents_atomic
- Login Code: Failed logins no longer erase PHP $_SESSION, now only the login data is removed.
- Editors: Updated dates are now shown on add and edit pages even if updatedByUserNum field isn't defined
- Settings: Custom settings files such as: /data/settings.example.com.php no longer require www. prefix
- Code: prettyDate() function now accepts "0000-00-00 00:00:00" and returns "never"
- Code: emailTemplate_loadFromDB & emailTemplate_replacePlaceholders() no longer double encodes HTML placeholders
- Code: login functions now automatically encrypt unencrypted passwords on failed front-end logins
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** September 1, 2012 - Version 2.17 (Maintenance Release)

NEW FEATURES
- Section Editors: You can now set the default records to show "Per Page" under the Advanced Tab

MINOR CHANGES
- Added utility function getCurrentUserFromCMS() to allow command-line scripts to easily check which user is logged in

CODE CHANGES & BUG FIXES
- Fixed issue were message encoding caused some email readers to display HTML sourcecode instead of proper message
- Fixed error when using viewers from command-line or cronjobs "Notice: Undefined index: SCRIPT_NAME"
- Fixed error when using viewers from command-line or cronjobs "Notice: Undefined index: HTTP_HOST"
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** August 28, 2012 - Version 2.16 (Speed, Mail, and Usability Improvements)

NEW FEATURES
- Speed: Improved program speed by up to 60%
- Mail: Logging of outgoing mail now supported under: Admin > General Settings > Email Settings
- Sorting: Category menus can now be re-ordered with click and drag sorting

MINOR CHANGES
- Plugin filters: Added filters for: userSectionAccess and userHasFieldAccess for overriding access levels
- Plugin Actions: Added actions for: list_postAdvancedSearch for outputting code directly after the advanced search fields
- Compatibility: Fixed PHP 5.4.0+ warning "Function get_magic_quotes_gpc() is deprecated"
- Compatibility: Added upload error for images saved with CMYK palette since not all browses can display them
- Compatibility: Set PHP arg_separator.output value to & so PHP http_build_query() function always works as expected
- Compatibility: Added workaround for Chrome browser bug when uploading "User Agent must be Flash, not..."
- Performance: Program data files (under /data/ folder) now use a new faster loading data format
- Performance: Plugins loading code is now faster and more efficient
- Programmers: isValidEmail() function now returns an array of matched emails instead of just true
- Programmers: Added functions: mysql_get_query, mysql_select_query, emailTemplate_loadFromDB, emailTemplate_replacePlaceholders, sendBackground
- Field Editor: Date fields with blank start or end year range values now default to 5 years before and after current year

CODE CHANGES & BUG FIXES
- Code: Added alias function mysql_escapeCSV()
- Code: sendMessage() encodes message HTML as quoted-printable so they're easier to read when debugging (for programmers)
- Code: Updated sendMessage so iphone mail app could view messages with combined text/html parts correctly
- Fixed preview error "Preview isn't supported when website membership uses separate login or alternate table name."
- Fixed bug where Related Records field could cause fields below it on edit page to error or not to display correctly
- Changed internal template tags used by code generator to avoid conflicts when PHP asp_tags setting is enabled
- Fixed problems sending to emails which contained underscores
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** May 7, 2012 - Version 2.15 (New Code Generator)

NEW FEATURES
- Code Generator: Completely re-written code generator
- Code Generator: New code generator menus for: Combo Page, and RSS feeds
- Code Generator: New addGenerator() function for adding custom generators through plugins
- WYSIWYG: Updated TinyMCE to v3.5b3 (Released 2012-29-03) (Fixes Firefox 11 issues)

MINOR CHANGES
- Uploads: Upload file names are now saved in lower case for better cross platform compatibility
- Uploads: When an upload filename already exits and ends in a number the number is now incremented to find a unique filename
- Editors: When admins change the "Created By" user, now only users with access to the section are shown in the pulldown
- Editors: Datepicker icon is now supported for edit search fields that use dates
- Compatibility: Added whitespace to uploadForm_functions.php to avoid a Network Solutions FTP uploading issue
- Compatibility: Spellchecking is now properly disabled on appropriate fields for Firefox 11 (jQuery Bug #6548)
- Docs: Improved install and upgrade docs and added a page on moving servers (online docs)
- Docs: Improved the configuration help messages shown on the install menu.
- Fields: Related Records now support drag-sorting with the custom flag in settings.dat.php under [advanced]: allowRelatedRecordsDragSorting = 1
- Fields: Related Records now support adding a "Create" button through the field editor
- Admin: Removed version number from dashboard/home page
- Code Generator: Image tags generated with double-quotes for consistency
- Code Generator: Added table name to comment above call to getRecords()

CODE CHANGES & BUG FIXES
- Code: Upgraded to jQuery UI 1.8.18
- Code: pluginAction_addHandlerAndLink() and pluginAction_addHandler() now support specifying access levels with a string
- Code: Plugin filter list_buttonsRight() now passed 3rd argument $isRelatedTable and allows adding buttons to related tables
- Code: user_createLoginSession() no longer requires password as a second argument
- Code: Added alias function jsEncode()
- Code: Added plugin filter login_isValidLogin to allow custom authentication
- Code: Added plugin filter edit_show_upload_link to allow overriding of the "Add or Upload File(s)" link
- Fixed loading problem when there were more than two chained selects on a section edit page.
- Fixed tiny_mce compression issue when a server uses ob_gzhandler as their output handler
- Fixed loaded records' _tableName key to be without prefix
- Fixed getRecords' firstPageUrl to respect extra path or query info
- Fixed default search functionality for fields ending in _year, _month, and _day

-------------------------------------------------------------------------------

*** December 27, 2011 - Version 2.14 (Maintenance Release)

NEW FEATURES
- Datepicker: You can enable a datepicker icon and popup calendar under: Admin > General Settings > Advanced Settings

MINOR CHANGES
- WYSIWYG: "Paste as Text" button now defaults to on (and can be clicked to turn off)
- WYSIWYG: Added buttons for superscript, subscript, charmap, and "visual aid" (to hide/show hidden table borders)
- WYSIWYG: Old tinymce cache files are automatically removed on upgrade to prevent errors
- Usability: Command line scripts now always return text (not HTML) for MySQL errors
- Programmers: getSelectOptionsFromTable() now returns values in schema sort order
- Programmers: Moved all mysql_* utility functions into /lib/mysql_functions.lib
- Languages: Added more text to language translation files.

BUG FIXES
- Compatibility: Added workaround to jquery.ajax for hosts that incorrectly send "0" when no output should be returned
- Fixed error with some PHP versions "Notice: Only variable references should be returned by reference"
- Fixed Advanced menu commands on edit page, commands now direct to the correct page.
- Code: getRecordsCustom() now returns the last pageNum with content if pageNum is higher than totalPages.
- My Account: Fixed issue where users couldn't drag-sort images if they didn't have access to the accounts table
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** October 27, 2011 - Version 2.13 (Maintenance Release)

NEW FEATURES
- WYSIWYG: Updated TinyMCE to v3.4.6 (Released 2011-09-29)
- WYSIWYG: Latest TinyMCE includes support for iOS 5 devices (iPad, iPhone, etc)

MINOR CHANGES
- Editors: Date field year menu range now expands if needed for the record data.
- Plugins: Added new filter: edit_advancedCommands
- Code: Plugins can now override accounts tablename by calling accountsTable()
- Code: Plugins can now override session cookie name by setting $GLOBALS['SESSION_NAME_SUFFIX']
- Code: isValidEmail() now supports emails with display names and validation of multiple emails
- Programmers: Added new MySQL helper function mysql_fetch()
- Programmers: Loaded records now contain a _tableName key
- Programmers: Added row numbering to Plugin Hook List

BUG FIXES
- sendMessage: $ php_errormsg now cleared before mail() to prevent "undefined index: disabled" errors
- users can no longer accidentally delete their own account with the "Erase Selected" feature
- Fixed Plugin Hook List bug where actions and filters would be confused.
- Updated getListRows() to support relative upload paths
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** August 24, 2011 - Version 2.12 (External Menus)

NEW FEATURES
- Text Link Sections: Added new option to open links in "inline iframe" to integrate content from external sources
- Text Link Sections: Added new option to display a message when opening or displaying links

MINOR CHANGES & BUG FIXES
- Admin General: Added "Program Url" field so plugins can easily find URL of admin script
- Code Generator: Single Record Sections now automatically ignore search queries (caused errors when using includes)
- Plugins: Added new filters: listHeader_checkAll and listPage_footer
- Admin General: Suppressed error message that sometimes appeared on windows servers "not recognized as an internal or external command"
- Compatibility: Fixed document root check to deal with restrictive open_basedir settings
- Accounts: Changing your password no longer logs you out when password encryption is on
- Uploads: Updated upload display code that caused error when using parent path references: failed to get realpath of: ../
- Plugins: "Developer's Plugin Hook List" list no longer excludes hooks called in double-quoted strings
- Editors: "Max Length" option no longer counts
tag length towards character limit for textboxes
- Editors: Fixed bug in related records that showed incorrect output when viewing user is not an administrator.
- Programmers: Added new viewer function getRecordsCustom() for getting records with custom SQL queries
- Programmers: Added new function: getAbsolutePath(), fixSlashes()
- Programmers: Updated getPluginPathAndUrl() to automatically return the last plugin called from the call stack
- Programmers: Updated pluginAction_addHandler() to support multiple access levels and allow calls from viewer pages
- Programmers: Updated prettyDate() to respects timezones offsets set in Admin menu
- Programmers: Updated sendMessage() to support 'disabled' option selectively not sending messages
- Programmers: Updated realUrl() to url-encode spaces
- Programmers: Updated pluginAction_addHandler() to be case-insensitive when comparing function names (so we can use __FUNCTION__)
- Uploads: Uploads will stay with a table after a table is renamed
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** July 7, 2011 - Version 2.11 (Maintenance Release)

BUG FIXES & MINOR CHANGES
- Updated upload display code that caused error: failed to get realpath of: ./
- Updated .htaccess to remove debug code that caused error 500 message on some servers
- Added index.php redirect to /cmsb/ for web servers that don't recognize index.html
- When selecting backup files, more recent files will sort to the top of the list
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** June 30, 2011 - Version 2.10 (Faster Server Moves)

NEW FEATURES
- Server Moves: You can now re-install the software by erasing /data/isInstalled.php
- Server Moves: You can now restore from a backup file on the install screen

MINOR CHANGES
- Viewers: Added _isSiblingSelected, _isParentSelected, and _isChildSelected to getCategories() viewer function output
- Plugins: Added new filter: login_content for login page content
- Plugins: Added new filter: backupDatabase_skippedTables (to prevent certain tables from being backed up)
- Plugins: Added new filter: edit_fieldSchema
- Plugins: Added plugin helper functions: plugin_header, plugin_footer, plugin_createSchemas
- Plugins: Added plugin helper functions: pluginAction_getLink, pluginAction_addHandler, pluginAction_addHandlerAndLink
- Programmers: Added function 'prettyDate' to output human readable style relative dates such as: 29 minutes ago
- Programmers: mysql_count() now accepts WHERE queries as arrays
- Programmers: Added helper PHP functions: startsWith, endsWith
- Programmers: Added helper Javascript function: sprintf

BUG FIXES
- Passwords: Fixed issue where users could login with their encrypted password string (actual text password now required)
- Field Editor: Fixed issue where recreating thumbnails would keep repeating errors if height or width was blank
- Editor Fields: Fixed issue where the default value of a date field would not be set if the user did not have edit access to it.
- Upload Urls: Upload fields with custom paths/urls no longer add the current hostname to generated urls in viewers
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** May 31, 2011 - Version 2.09 (Relative Upload Paths)

NEW FEATURES
- Uploads: Upload paths are now stored as relative to make server moves easier
- Uploads: Existing uploads path will automatically be made relative where possible.
- Section Editor: The "Add New Editor..." button now lets you copy an existing section (without the data)

MINOR CHANGES
- Code Changes: Removed unused function from /lib/common.php - array_change_value_case()
- Plugin Developers: All plugin hooks can now be listed with "show plugin hooks" link on plugins page
- Programmers: Added plugin hooks for: ui_header, ui_footer, list_orderBy
- Programmers: Added custom functions: isAbsoluteUrl, realUrl, array_value, array_where, dieWith404
- Developers: Added help file on setting up development settings files: /data/how_to_use_settings_files.txt
- WYSIWYG: Added support for /lib/wysiwyg_custom.css file that won't get overwritten during upgrades
- WYSIWYG: Once clicked, "Paste as Text" now stays active until clicked again (instead of deselecting after paste)

BUG FIXES
- Fixed bug from 2.07 where renaming a section displayed an error.
- Fixed demo mode bug where demo couldn't be created if tablenames exceeded 64 characters
- whereRecordNumberInUrl() and getLastNumberInUrl() now ignore page numbers such as viewer.php?title-123&page=2
- Admin Option "Store encrypted passwords in database (can not be disabled)" can no longer be disabled.
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** April 20, 2011 - Version 2.08 (Security Enhancements)

NEW FEATURES
- Admin General: Added "Encrypt Password" option to encrypt database user passwords
- Admin General: Added "Require HTTPS" option to only allow logins through secure connections
- User Accounts: Added new field "Last Login Date" that shows last date user accessed system
- User Accounts: Password reminders have been replaced with a password reset form
- Editors: Fields can now be set to "Editor only" or "Admin only"

MINOR CHANGES
- Uploads: Added a "Modify All Uploads" link to the Modify Upload popup
- Viewer Functions: getCategories() now supports 'ignoreHidden' option
- WYSIWYG: Updated TinyMCE to v3.4.1 (Released 2011-03-24)
- WYSIWYG: Updated TinyMCE Compressor to v2.04 (Released 2011-03-23)
- License: updated to allow sourcecode modifications, register install path, and allow staging installs (sections 3.4 (removed), 4.4, 7)
- Programmers: Added database functions: mysql_datetime, mysql_getValuesAsCSV, mysql_get, mysql_select, mysql_delete, mysql_update, mysql_insert
- Programmers: Added custom functions: array_groupBy, isHTTPS, coalesce
- Programmers: Added new plugin hooks: plugin_activate, plugin_deactivate, list_postselect, menulinks_array
- Section Editor: New sections' upload and wysiwyg fields' allowedExtensions are now consistent and include PDF
- Languages: The Datepicker is now automatically translated

BUG FIXES
- Related Records: More link now automatically ignores previous searches when linked to related sections
- Admin Menu: Fixed bug where view only menus wouldn't show up if selected menu had "Disable View" selected
- Editor List: fixed MySQL Error on 'Accounts' search form: Unknown column 'accessList' in 'where clause'
- Editor List: textbox content now displays enters correctly
- Preview: Fixed preview error: Notice: Undefined index: hasEditorAccess
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** February 3, 2011 - Version 2.07 (Preview Button)

NEW FEATURES
- Preview button on modify page can show you what your detail page will look like before saving
- Added custom "Preview Page Url" in case a detail page has logic on it which prevents previewing from working (Admin > Section Editors > Viewer Urls)
- Access Levels: Added 'Author & Viewer' which can view all records but only modify their own
- Editor List: You can now reset previous search options with a direct link including ?_resetSavedSearch=1
- Editor List: You can now ignore previous search options with a direct link including ?_ignoreSavedSearch=1
- Editors: Added new date picker popup, enable in data/settings.dat.php under [advanced] with: useDatepicker = 1
- Viewers: Added automatic search suffix "_empty" for matching empty fields. Example: email_empty=1
- Plugins: Added new plugin header option to always load a plugin: "Required System Plugin: Yes"

MINOR CHANGES
- Admin: Backup Database now lets you backup and restore individual tables
- Admin: PHP session settings can now be set under Advanced Settings: session.save_path, session.cookie_domain
- Editor List: Upload columns now use same code as edit page upload lists (with smaller previews and download links for non-images)
- Editor Uploads: Uploaded files with invalid content are now rejected for: gif, jpg, jpeg, png, swf
- Install: Missing upload directories are now automatically created if possible
- Languages: Added more text to language translation files.
- Plugins: Added new filter: list_buttonsRight (to add or modify buttons on list page)
- Plugins: Added new filter: record_access_where (for modifying how record access rules work)
- Plugins: Added new filter: menulinks_rowHtml
- Plugins: Plugins are now detected up to two dirs below plugins dir: /plugins/like/this/plugin.php
- Plugins: Plugins that require more recent versions of the CMS are automatically de-activated
- Section Editors: Added "Editor >>" link to section edit menu
- Section Editors: Menu Text Links can now be set to open in the same tab
- WYSIWYG: Upgraded tinyMCE to version 3.3.9.2 (Released 2010-09-29)
- Code: added PHP_INT_MAX to 3rdParty/PHP_Compat/CONSTANTS.php
- Code: sendMessage() encodes message text as quoted-printable so they're easier to read when debugging (for programmers)
- Code: Added mysql_get_lock() and mysql_release_lock() functions (for programmers)

BUG FIXES
- Code Generator: Fixed "Email this page" link code in Code Generator to properly URL encode complex queries
- Compatibility: Added workaround for servers with suhosin.memory_limit causing errors
- Demo Mode: Fixed bug where flash uploader didn't display 'disabled' error in demo mode
- Editors: Fixed bug where a new search would not always display the first page of results
- Categories: Setting selectedCategoryNum to '' now defaults back to getLastNumberInUrl()
- Editor: Field descriptions are now displayed below textboxes.
- Section Editors: Recreating thumbnails no longer stops on errors
- Viewers: getPrevAndNextRecords() now ignores search terms in url and supports 'debugSql'
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** September 9, 2010 - Version 2.06 (Maintenance Release)

MINOR CHANGES
- Languages: Added more text to language translation files.
- Code: thisPageUrl() now lets you pass an array to insert/override query string values
- Wysiwyg: Added blockquote button (between link and horizontal rule buttons)
- Viewers: getPrevAndNextRecords() now supports 'where' option
- Categories: Added advanced getCategories() option: ulAttributesCallback
- Categories: Added advanced getCategories() option: liAttributesCallback
- Plugin System: Added new filter "viewerOnly_allowed_actions" for adding to the "Advanced Commands" menu
- Plugin System: Added utility functions: getPluginPathAndUrl() and createSchemaFromFile()

BUG FIXES
- View Menus: Textboxes with autoformatting disabled now display line breaks correctly
- View Menus: Fixed error "Couldn't find field class file"
- View Menus: Users with only "viewer" menu access no longer see menu links that don't have "view" enabled
- View Menus: Advanced Command "Erase Selected" is no longer displayed for users with only "viewer" access
- Accounts Menu: Users with author access can no longer see the accounts menu list page
- Viewers: Fixed MySQL error caused when using field_min or field_max searches with non-numeric values
- Editors: Fixed error "Strict Standards: var: Deprecated" disabled by PHP 5.0.0 to 5.1.3
- Editors: Fixed bug where blank dates on list page sometimes showed up as 1969-12-31
- Admin > General: Fixed JSON errors when changing timezones on servers with PHP versions older than 5.2.0
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** July 6, 2010 - Version 2.05 (View Menus)

NEW FEATURES
- Added new "View" menu option to record lists (enabled under Admin > Section Editors)
- Added new "View" menu option to Related Records lists (enabled in Field Editor)
- Field Editor: List fields may now have a Default Value
- Category Sections: Added new setting: Section Editor > Advanced > Max level of depth for categories

MINOR CHANGES
- Plugin System: Added new filter edit_buttonsRight to add or modify buttons on edit page
- Plugin System: Added new filter view_buttonsRight to add or modify buttons on view page
- Plugin System: Added new filters: home_title, home_content for post-login homepage
- Plugin System: Added new filters: listHeader_thAttributes, viewer_output_rows
- Plugins: Added Norwegian characters to "Remove Viewer Link Accents" plugin
- Viewers: Added _hasSiblings to getCategories() viewer function output
- Code: Upgraded tinyMCE to version 3.3.7 (Released 2010-06-10)
- Code: Added internal function saveUploadFromFilepath() for importing local files
- Code: Improved DOCUMENT_ROOT auto-detection code
- Code: Wysiwyg now automatically generates new cache file when tiny_mce.js changes

BUG FIXES
- Compatibility: Added workaround for hosts with safe-mode set incorrectly (PHP Bug #23663)
- Wysiwyg Spellchecker: Fixed error "Please specify: spellchecker_rpc_url"
- Editors: Pressing Save after a login session has timed out now redirects to the login page
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** April 27, 2010 - Version 2.04 (Viewer Pseudo-fields)

NEW FEATURES
- Editor Search: You can now add custom search fields based on record owner with: Owner|createdBy.fullname
- Viewers: Added new option 'loadPseudoFields' for adding fields below (defaults to on).
- Viewers: Added pseudo-field *:unixtime for date fields with unix time of date (for passing to date()). Example: $record['startdate:unixtime']
- Viewers: Added pseudo-field *:text for checkboxes that displays checked or unchecked text. Example: $record['hidden:text']
- Viewers: Added pseudo-field *:label for single-value list fields that displays the label of the selected option. Example: $record['category:label']
- Viewers: Added pseudo-field *:values for multi-value list fields with an array of values for the selected options. Example: $record['categories:values']
- Viewers: Added pseudo-field *:labels for multi-value list fields with an array of labels for the selected options. Example: $record['categories:labels']
- Wysiwyg: You can now insert any of the thumbnail sizes, not just the first one.

MINOR CHANGES
- Code Generator: Viewers now automatically locate CMS libraries, even if you've moved servers or filepaths have changed
- Code Generator: New "Expert mode" under: Admin > General for hiding instructions and extra html in output
- Viewers: Added _isFirstChild and _isLastChild to getCategories() viewer function output (named after similar CSS2 selectors)
- Viewers: _match searches on multi-value list fields now match single values as well (if field was converted from single to multi-value)
- Admin > General: Timezones are now sorted by GMT offset and no longer include legacy timezone names from:
- Admin > Regional: Language settings can be hidden with hideLanguageSettings in settings file (for regional distributors)
- Plugin System: All record save plugin hooks are now passed $oldRecord when updating an existing record
- Plugin System: 'section_init' is now passed the current $action
- Plugin System: 'record_postsave' is now passed record_num
- Plugin System: Added new hook for: upload_saved, upload_adopted
- Plugin System: Added new filter uploadModify_infoFieldHTML to modify how the upload info fields look
- Code: Added helper functions for external upload forms: removeUpload(), getUploadInfoArrays()
- Code: Added /3rdParty/ to the PHP include path so Zend library will work (for possible future use)
- Code: Upgraded tinyMCE to version 3.3.2 (Released 2010-03-25) and removed safari plugin (now built-in)
- Code: Upgraded to jQuery 1.4.1
- Code: Included JSON Javascript library

BUG FIXES
- Editor List: List field labels are now displayed for list values of zero
- Password Reminder Emails: Added extra line breaks where PHP was removing them and causing text to run together
- Categories: Made it impossible to select invalid parent categories (by setting option to be disabled)
- Categories: When creating new category menus 'name' is now a system field since it's required for categories
- Categories: Made it possible to explicitly set selectedCategoryNum to 0 (avoiding issues with getLastNumberInUrl())
- Validation: Fixed some XHTML validation issues
- sendMessage() no longer UTF-8 encodes 'Content-Type' headers (valid, but triggered some anti-spam systems)
- Compatibility: Added work-around for htscanner php extension bug #10623 that caused extra backslashes to be added to content
- Compatibility: We now blank out session.cookie_domain on load to work-around servers that have it set incorrectly in php.ini
- Editors: "Create" button now uses url to link to add form so you can easily reload while developing without "repost form data?" message
- Editors: Created and updated dates are now shown on add and edit pages even if createdByUserNum or updatedByUserNum fields aren't defined
- Editors: Field values are now html encoded when displayed on list page (So <b> appears as <b> and isn't interpreted as HTML)
- Code: emailValidate() function now allows usernames with + chars such as example+example@gmail.com
- Code: inCLI() improved PHP command-line detection code
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** March 1, 2010 - Version 2.03 (Related Records)

NEW FEATURES
- New field "Related Records" lists records from related tables on edit page
- Custom JS: You can now define your own upgrade-safe Javascript by creating a file named: cmsb/custom.js

MINOR CHANGES
- Plugin System: Added filters for: upload_saveAsFilename
- Plugin System: Added filters for: listRow_trStyle, listRow_tdAttributes, listRow_displayValue, listRow_actionLinks
- Plugin System: Plugins are now sorted alphabetically under: Admin > Plugins
- Field Editor: Added "Field Prefix" option that is displayed before or above most field types.
- Field Editor: Added "Description" option this is displayed after or below most field types.
- Docs: Added readme documents to program root folder: custom.css.readme and custom.js.readme
- Viewers: whereRecordNumberInUrl() now ignore campaign tracking utm_* values when determining record number
- Categories: Added _hasParent and _hasChild to getCategories() viewer function output
- Languages: Added french language file for wysiwyg
- Install: Added php.ini to correct common server misconfigurations

BUG FIXES
- Fixed code that auto-detects DOCUMENT_ROOT on install or upgrade for Microsoft-IIS Servers
- Fixed error on Microsoft-IIS Servers: "Undefined index: SCRIPT_FILENAME"
- Fixed error on Windows Servers: "PHP Warning: shell_exec(): Unable to execute"
- Fixed error on some PHP installs: "PHP Warning: shell_exec() has been disabled"
- Fixed error on Windows Servers where "Please set 'Website Root Directory'" always showed if root dir wasn't readable
- Fixed error when using viewers from command-line or cronjobs "Notice: Undefined index: SCRIPT_NAME"
- Fixed error on PHP 5.0.0 to 5.1.2 "Warning: http_build_query() expects at most 2 parameters, 3 given"
- Fixed error on PHP 5.3.0 where trailing $ in schema ini files caused errors: http://bugs.php.net/bug.php?id=48660
- Compatibility: Added work-around in .htaccess for htscanner php extension bugs: #16891, #16130
- Fixed wysiwyg error where spellcheck suggestions would get double utf8 encoded and not display correctly
- Errors: Added error message for when mbstring extension isn't installed
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** January 26, 2010 - Version 2.02 (Multi-File Uploads & Viewer Enhancements)

NEW FEATURES
- Uploads: You can now upload multiple files at once with uploadify flash upload component
- Viewers: Sort ordering can now be defined in viewer urls with orderBy=fieldname or fieldname DESC
- Viewers: min/max date searches now support date without time formatted as: YYYY-MM-DD
- Custom CSS: You can now define your own upgrade-safe CSS by creating a file named: cmsb/custom.css

MINOR CHANGES
- Settings: Custom settings files can be created for dev domains, such as: /data/settings.localhost.php
- Viewers: Added the following options to getRecords() for advanced MySQL users: 'groupBy' and 'having'
- Viewers: Added utility function mysql_escapef(), example: mysql_escapef("num = ? AND name = ?", $num, $name);
- Viewers: getPrevAndNextRecords() rewritten and optimized for large record sets (10k+)
- Viewers: getPrevAndNextRecords() now supports 'orderBy' option
- Editors: Record lists can now display up to 1000 records per page
- Plugin System: Added filters for: list_where (for record list page in cms)
- Languages: Updated Hebrew language translation file
- Admin > General: "Server Resource Limits" is now displayed on the bottom of the page (Unavailable on Windows servers)
- Admin > General: Added option "Disable Flash Uploader" under: Admin > General Settings > Advanced Settings
- Interface: Add meta tag so Chrome Frame will be used if installed in browser (Fixes IE rendering issues)

BUG FIXES
- Viewers: Fixed an issue with searching for a keyword containing multi-byte characters
- Viewers: Prev/Next page links now support multi-value fields, like this: ?colors[]=red&colors[]=blue
- Demo Mode: Fixed "invalid characters" in tablename error in Admin > Section Editors > Modify
- Demo Mode: Added build info (version, execute time, etc) to html source of "Creating demo (please wait a moment)" page
- Demo Mode: Added "Creating demo" text to language files so it can be translated
- Compatibility: Fixed disabled sockets error "getPage: Error opening socket: Operation timed out (60)"
- Compatibility: Fixed some problems with running the program on https:// urls
- WYSIWYG: Wysiwyg compressor no longer compresses output if server compression is already enabled - caused wysiwyg to not work
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** December 14, 2009 - Version 2.01 (Date Field Enhancements)

NEW FEATURES
- Date Fields: Default date field values can now be: blank, current date, specified date, or values such as "+2 weeks" or "next Thursday"
- Date Fields: Short month names used in date pulldowns can now be updated in the language files in /lib/languages/
- Viewer Functions: Added advanced option 'addSelectExpr' for generating pseudo-fields or calculated values

MINOR CHANGES
- Install: Admin Email is automatically saved as the program "Admin Email" under general settings so you don't have to enter it twice
- Compatibility: Updated code to prevent conflicts with WordPress and to allow side by side installations (for advanced users)
- Admin Field: Added new required field for "Website Root Directory"
- Standards: All pages now validate as standard xhtml.


BUG FIXES
- Compatibility: Added workaround for issue where a trailing separator in php.ini's include_path caused header/footer includes not to load
- Error Checking: Tablenames starting with a number can no longer be created (caused errors in the code generator)
- WYSIWYG: Fixed javascript errors caused when using advimage tinymce plugin
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** December 4, 2009 - Version 2.00 (New User Interface)

NEW FEATURES
- User Interface: we've completely redesigned and updated the user interface

MINOR CHANGES
- User Interface: interface color can now be changed under: Admin > General > Color / Theme (Blue, Green or Red)
- Editors: Users with "Editor" access can now change owners of a record (also called "Created By" user)
- Editors: Text field descriptions can now contain PHP code
- Editor: Added Advanced Command: "Admin: Code Generator" to jump to Code Generator
- Password Reminder: Added support for non-English characters in the subject line
- Plugin System: Plugins can now be organized in subdirectories under the /plugins/ directory
- Field Editor: Header separators now show the header message instead of "--- separator ---" in the field list
- Errors: The database down error page now sends a 503 "Service Temporarily Unavailable" so search engines will retry later
- Menu bar: Menu links under active menu group can be styled with: #sidebar #main-nav li.current ul li { background-color: #333 !important; }

BUG FIXES
- Field Editor: Made 'page' a reserved fieldname (rename existing 'page' fields if needed)
- Field Editor: Fixed Input Validation: Allow/Disallow characters
- Admin: Disk Space now displays "Unavailable" instead of "Value too large for defined data type" error on unsupported servers
- Database Settings: Increased MySQL connect timeout from 3 to 6 seconds to support sometimes slow database servers

-------------------------------------------------------------------------------

*** September 25, 2009 - Version 1.36 (Bug Fix Release)

BUG FIXES
- Windows PHP: Fixed rename error that occurred when saving settings on older PHP versions (less than 5.2.9)
- Editors: Fixed another error "Warning: preg_match(): Unknown modifier" when allowed/disallowed charset contains /

-------------------------------------------------------------------------------

*** September 23, 2009 - Version 1.35 (Plugin Enhancements)

MINOR CHANGES
- Plugin System: Added hooks for: init_complete, viewer_postinit, section_unknownAction

BUG FIXES
- Editors: Multi-value list fields now show as labels on list page
- Editors: Fixed error "Warning: preg_match(): Unknown modifier" when allowed/disallowed charset contains /
- Editor Add Record: Fixed bug where "default content" wasn't showing for textboxes or wysiwyg fields

- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** September 16, 2009 - Version 1.34 (Backup & Restore)

NEW FEATURES
- Backup & Restore are now available under: Admin > General Settings > Database Settings
- WYSIWYG: Added Spellchecker button to wysiwyg editor (experimental)
- Debugging: Added showme() function for displaying readable variable contents. Example: <?php showme( $records ); ?>

MINOR CHANGES
- WYSIWYG: Upgraded tinyMCE to version 3.2.6 (Released 2009-08-19)
- Admin Menu: Added option "Always Show Expanded Menu" under: Admin > General Settings > Advanced Settings
- Admin Menu: The maximum number of connections MySQL allows is now displayed under: General Settings > Server Info
- Special Fields: Creating 'showExpandedMenu' field in user accounts allows you to specify menu setting on a per user basis
- Viewers: Added pseudo-field *:text for checkboxes that displays checked or unchecked text. Example: $record['hidden:text']
- Admin Menu: Mysql settings can no longer be updated through Admin menu (edit them in cmsb/data/settings.dat.php)
- Filepaths: Moved all 3rd party components to /3rdParty/ folder (tinymce, jquery, jquery plugins)
- Filepaths: Moved /lib/plugins/ to /plugins/
- Filepaths: Other directory and path changes
- Section Editors: Added new option "Required Plugins" to Advanced tab of "Section Editors"
- Default Data Support: Files named data/schema/sectionName.defaultSqlData.php are imported when new sections are created.
- Plugin System: Added actions for: admin_prelogin, plugin_actions
- Settings: Host specific database settings can be set in settings.dat.php as [MySQL:hostname] (for staging/development environments)

BUG FIXES
- Section Editors: Fixed error "Undefined index: _indent" when saving Menu Groups
- Date Fields: Single digit hour-24, minute, and second options are now zero padded.
- Date Fields: 12pm dates in the editor are now re-displayed as 12pm instead of 12am.
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** August 24, 2009 - Version 1.33 (Menu Enhancements)

NEW FEATURES
- Menu Groups allow grouping, hiding and showing of related menu items
- Menu Text Links allow you to add external links to the menu bar
- Menus can now be indented if desired: Admin > Section Editors > Section Name > Indent

MINOR CHANGES
- Admin: Removed admin 'home' page as it's no longer needed with new menu layout
- Admin: Regional Settings have now been moved to Admin > General
- Editors: Created and Updated dates now display in format from: Admin > General > Date Field Format
- Editors: Added "Disable Modify" option under section editors to prevent users from modifying records
- Accounts: Added "change" link to edit page so "Created By" user can now be changed by admins
- Plugin System: Added actions for: admin_preadd, admin_preedit, record_save_posterrorchecking, section_init, admin_postlogin
- Plugin System: Added filters for: record_saved_message

BUG FIXES
- Fixed error on *.previewdns.com hosts: "ob_start(): Cannot use output buffering ..."
- Forgot your Password: Fixed IE8 javascript error on form 'document.getElementById(...)' is null or...
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** August 4, 2009 - Version 1.32 (My Account Menu)

NEW FEATURES
- Users can now modify their own account details (username, password, email, etc) with new "My Account" menu
- Field Editor: New advanced option for Accounts section 'My Account - Show this field in "My Account" section'

MINOR CHANGES
- Admin > General: "Free Disk Space" is now displayed on the bottom of the page
- Plugin System: Added hooks for: admin_preerase, admin_posterase
- Viewers: New option 'includeDisabledAccounts' shows records otherwise hidden with: Section Editors > Advanced > Disabled Accounts
- Editors: Administrators can now access all menus by url, even if they haven't been given access under "User Accounts"

BUG FIXES
- Code Generator: Fixed some 'undefined index' errors that appeared when no options were selected
- Compatibility: Fixed error with new PHP 5.3 release "Function split() is deprecated" on field drag sort.
- Editor Search: Searching now resets page number to 1 (instead of staying on last page number)
- Viewers: Added extra spaces so multiple leftJoin's didn't cause mySQL error.
- Fixed issue where user would get incorrectly forwarded to https urls on some servers
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** July 6, 2009 - Version 1.31 (Bug Fix Release)

MINOR CHANGES
- Viewers: New option 'requireSearchSuffix' allows you to ignore fieldname=value searches without _match suffix

BUG FIXES
- Editors: Fixed "Erase" and "Erase Selected" actions so they now work again.
- Editors: Fixed php 'undefined variable' errors

-------------------------------------------------------------------------------

*** July 3, 2009 - Version 1.30 (Advanced Editor Search Filters)

NEW FEATURES
- Added advanced editor search and filter options (See: Admin > Section Editors > Searching)

MINOR CHANGES
- PHP sessions are now used instead of cookies to store admin search preferences and login credentials
- Viewers: New option 'ignoreHidden' allows you to display hidden records
- Viewers: New option 'ignorePublishDate' allows you to display records before their publish date
- Viewers: New option 'ignoreRemoveDate' allows you to display records after their remove date
- Viewers: Function getNumberFromEndOfUrl() now lets you specify a default num if no number found in url
- Category Viewer: Added new option 'defaultCategory' (enter 'first', category number, or blank '' for none)
- Category Viewer: Added new option 'rootCategoryNum' to show only part of the category tree (defaults to showing all)
- Category Viewer: Added new option 'ulAttributes' for adding attributes to generated ul tags
- Category Viewer: Added new category format 'breadcrumb' for displaying select menu path in breadcrumb format
- Category Viewer: Added new pseudo-field _isBreadcrumb to make it easier to display breadcrumb menu for selected category

BUG FIXES
- Password reminder emails are not sent with UTF8 charset so international characters display properly
- Viewers: getListValues() and getListLabels() didn't work if the list field wasn't a multi-value field
- Viewers: getPrevAndNextRecords() fixed error message: "Undefined variable: errors"
- Viewers: getCategories() fixed error message: "Undefined offset: 0" when no category selected
- Editor List: After drag sorting any previously selected sorting columns are reset so new order shows as expected.
- User Accounts: Hidden menu sections are now visible in section access list

-------------------------------------------------------------------------------

*** June 16, 2009 - Version 1.29 (Demo Mode Support)

NEW FEATURES
- Demo Mode: program can now be run in demo mode where data is copied and resets every hour

MINOR CHANGES
- WYSIWYG: Upgraded tinyMCE to version 3.2.4.1 (Released 2009-05-25)
- WYSIWYG: Word content is now automatically detected and cleaned up without need for the paste dialog popup window.
- Editors: List Fields now show previously entered database values even when they are no longer in list options
- Editors: Added "Date Field Format" to Admin > Regional Settings to allow displaying date fields as "Day Month Year"
- Viewers: Added 'pageNum' option to viewers to allow you to specify exact page number to display
- Multi Table Search: Added 10 fields that can be passed from each table searched by searchMultipleTables() as field1, field2, etc

BUG FIXES
- WYSIWYG: Wysiwyg compressor now automatically disables old php feature 'magic_quotes_runtime' - caused wysiwyg to not work
- Categories: Fixed bug with _isAncestorSelected that caused it to be incorrectly set sometimes
- Usability: Added workaround for *.previewdns.com urls to prevent them from injecting Javascript that breaks interface code
- Usability: Made rename error more clear for windows servers with incorrect file permissions.
- User Accounts: Fixed MySQL Error when non-admin users would add new user accounts: "Column 'isAdmin' cannot be null"
- Compatibility: Fixed error "urlencode() expects parameter 1 to be string" caused by some 3rd party php code and scripts
- Compatibility: Updated internal program redirects to support and maintain https:// urls
- Compatibility: CSS file improvements (replaced more hard coded colors with CSS classes)
- Compatibility: Fixed disabled sockets error "getpage: Error opening socket: Operation not permitted (1)"

-------------------------------------------------------------------------------

*** April 8, 2009 - Version 1.28 (Plugin System Enhancements)

NEW FEATURES
- Plugin System: Updated system to emulate WordPress plugin system
- Plugin System: Added hooks for: admin_head, admin_footer, record_presave, record_save_errorchecking, record_postsave
- Plugin System: Added filters for: header_links, execute_seconds, viewer_link_field_content
- New Plugin: Example Header links - shows how to add custom links to header of CMS without modifying code
- New Plugin: Footer License Link - shows how to add custom links or html to CMS footer
- New Plugin: Remove Accents From Viewer Links - shows how to dynamically rewrite viewer links

MINOR CHANGES
- WYSIWYG: Upgraded tinyMCE to version 3.2.2.3 (Released 2009-03-26)
- Editors: Min length and max length for WYSIWYG editor fields will only count characters (not the HTML)
- Editors: Added CSS classes for menuAccounts and menuAdmin for users that want to style those menu items differently
- Languages: Added some new language strings (check your language file in /lib/languages/)
- Categories: Changed _isSelectedBranch in getCategories() output to apply to all records in branch, not just ancestor records
- Categories: Added _isAncestorSelected and _isDescendantSelected to getCategories() viewer function output
- Viewer SEO: Paging variables firstPageLink, prevPageLink and lastPageLink no longer use different url for page 1 (eg: viewer.php instead of viewer.php?page=1) to prevent duplicate content urls
- Admin Settings: Added field for Header Image URL to display image in program header
- Admin Settings: Added field for Footer HTML to display extra text or html in program footer
- Compatibility: Added flag to .htaccess to disable (the old deprecated php feature) register_globals for old php installations
- Compatibility: Url encoded & as &amp; in urls generated by viewer functions for HTML standards compliance
- Usability: You can now link to the license agreement (even if not logged in) with the url: admin.php?menu=license
- Misc Code and other minor improvements

BUG FIXES
- Re-creating thumbnails no longer gives an "Undefined variable: tableNameWithoutPrefix" error
- Added workaround for server bug with Microsoft-IIS/5.0 where users couldn't logoff: http://support.microsoft.com/kb/q176113/
- Fixed wysiwyg upload bug that would display the "add record" page if the section was set to only allow one record

-------------------------------------------------------------------------------

*** February 24, 2009 - Version 1.27 (Maintenance Release)

NEW FEATURES
- WYSIWYG: Upgraded tinyMCE to version 3.2.1.1 (Released 2008-11-27)

MINOR CHANGES
- Categories: Added _isSelectedBranch field to getCategories() viewer function output
- Editors: Blank values are now saved as "NULL" for numeric MySQL column types
- Templates: Moved default Realty templates and schemas to Realty focused product
- Code Generator: Content-type header is now included in generated code (for servers that override meta charset tags)
- Code Generator: Added "Record Not Found!" error message to detail page for when a record isn't found.
- Editor Menus: Created/Updated fields now display account 'username' instead of account 'fullname'
- Editor Menus: Created/Updated fields now display even if dates were zeroed out in database (caused after adding field or upgrading)
- User Accounts: Program required fields are now set as "System Fields" to avoid accidental modification
- User Accounts: Renamed user roles Writer and Manager to Author and Editor
- Field Editor: List Field "Get options from MySQL Query" now support queries that only return 1 column (used as label and value)
- Misc Code and other minor improvements

BUG FIXES
- Code Generator now escapes UNC paths properly in generated code (example: \\SERVER/path/viewer_functions.php)
- Editors: MySQL errors when saving records (due to incorrect column type) no longer create blank records

-------------------------------------------------------------------------------

*** February 2, 2009 - Version 1.26 Released

MINOR CHANGES & BUG FIXES
- Fixed issue where Cyrillic character sets such as Russian weren't saving correctly
- Fixed upgrade error: MySQL Error: Table 'database.cms__accounts' doesn't exist

-------------------------------------------------------------------------------

*** January 30, 2009 - Version 1.25 Released

NEW FEATURES
- Field Editor: Added new advanced option "MySQL Column Type" for advanced users
- Languages: Added Hebrew (he) language files

BUG FIXES
- Fixed incorrect error "Temp Upload dir '' doesn't exist!" for servers with default (blank) php upload dir
- Fixed issue where old /lib/menus/accounts/* files would prevent accounts from showing after upgrade
- Fixed error on installs without cms_ table prefix: MySQL Error: Table 'database.cms_accounts' doesn't exist
- Fixed error checking to check for PHP 4.3.2 (raised from PHP 4.3.0 in v1.23)

-------------------------------------------------------------------------------

*** January 20, 2009 - Version 1.24 Released

NEW REQUIREMENTS
- PHP 4.3.2 or newer is now required (PHP 4.3.2 was released in May 2003)
(The previous version required was PHP 4.3.0 so this version is only slightly newer)

NEW FEATURES
- Image Uploads: Transparency is now maintained when resizing GIFs and PNGs
- Section Editors: Added 'Advanced' option to hide sections from appearing on menu
- User Accounts: User accounts menu has moved out of admin area onto menu bar
- User Accounts: Users can now be given access to manage accounts without full admin access
- Section Editor: New "Advanced Filter" option added for creating dynamic list fields.
- Uploads: Added special wildcard "*" to allow any file extension (only use with trusted users)
- Editor List Page: Added Advanced Command: "Admin: Edit Section" to jump to Section Editor
- Editor Edit Page: Added Advanced Command: "Admin: Edit Section" to jump to Section Editor
- Login: After logging in you will now be redirected to the last page you tried to access
- Category Viewers: Category viewers now load uploads if there are any
- Viewer Code: Added left join capability to viewer functions

MINOR CHANGES & BUG FIXES
- Field Editor: Section Editors "Add Field" popup now scales to fit smaller screen sizes
- Field Editor: Date field now has a default year range start of 2008 and end of 2016
- Field Editor: Field edit form now has buttons on bottom as well (for ease of use)
- Upload Form: Improved upload error message when upload folder doesn't exist
- Upload Form: Uploads remaining now shows total remaining instead of total upload field count (10)
- Upload Form: Fixed error "Undefined variable: uploadsRemaining" that occurred on some servers
- Upload Lists: Upload list field will now expand to up to 600px height for easy access
- Schema Files: Set date fields to have year range start of 2008 and end of 2016 for default schema files
- Category Sections: Fixed bug where category order would sometimes get mixed up when clicking up/dn sorting links
- Error Checking: Added error check for required thumbnail function imagecreatefromjpeg()
- User Accounts: Users can now be given manager access to category sections
- Record Editor: Fixed issue where wysiwyg couldn't be named 'main'. (Added "field_" prefix to wysiwyg id names)
- Record Editor: Fixed issue where some fieldnames (such as 'for') would be sorted in list view
- Browser Compatibility: Updated CSS to work in IE6
- Editor Forms: Sections with only a num and upload field no longer display error when saving
- Timezones: Fixed issue where admin could select invalid timezone names on servers without timezone lists
- Viewer Searching: _min and _max viewer field searching now supports decimal values: field_min=1.5
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** November 6, 2008 - Version 1.23 Released

NEW FEATURES
- Admin Design: Changed admin menu design to have left navigation menu
- CSS Stylesheet: Made huge improvements to program CSS stylesheet making it easier to re-style and change colors
- Languages: Added Portuguese translations (thanks to jamtc in the forums)
- WYSIWYG: Upgraded tinyMCE to version 3.2.0.2 (2008-10-02)
- Program Urls: Help Url and Website Url can now contain PHP code (to specify values on per user basis, for example)
- Usability: If a user is one allowed to edit one record in a section they are redirected straight to edit page (instead of list page).

MINOR CHANGES & BUG FIXES
- Compatibility: Loading viewer PHP from 3rd party scripts no longer produces "Undefined variable: SETTINGS" error
- Compatibility: Added PHP4 compatibility function for array_combine()
- Compatibility: Program cookies are now set at webroot level and use new 'cookiePrefix' setting (in settings.dat.php)
- Compatibility: Fixed disabled sockets error "getpage: Error opening socket: Invalid argument (22)"
- Compatibility: Upload file permissions are automatically changed for servers that save uploads with read permissions
- Compatibility: Added PHP workaround for issue where set_include_path() doesn't work when already set in httpd config
- Compatibility: Software now works when installed on Windows UNC network path (\\SERVER\path\to\www\)
- Compatibility: Zip no longer contain directory entries (Vista's unzip created extra files)
- Usability: Swapped width and height field order in field editor to be consistent with common standard
- Field Validation: Minimum and Maximum length restrictions no longer apply to blank fields (check "required" to require a value)
- Upgrade Docs: Added /uploads/ to the list of files and folders to upload
- Database: Dropped MySQL connection timeout to 5 seconds from PHP's default of 60 seconds (too long)
- BugFix: Category sections no longer show categories owned by other users in "Parent Category" pulldown for users with writer access
- BugFix: Recreating secondary thumbnails no longer erases primary thumbnails
- BugFix: Date fields now have proper range of 0 to 59 for seconds pulldown
- Dialogs: Dialog (popup) windows now are modal meaning they won't close unless you click cancel
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** August 15, 2008 - Version 1.22 Released

MINOR CHANGES & BUG FIXES
- Uploads: Fixed bug where erasing an upload returned errors on some servers

-------------------------------------------------------------------------------

*** August 14, 2008 - Version 1.21 Released

NEW FEATURES
- Field Editor: Added 3 new optional thumbnail fields for up to 5 images sizes per upload
- Accounts Menu: Accounts menu is now editable through section editors
- Viewers: Added search suffix "_prefix", used in url like this: viewer.php?title_prefix=a
- Viewers: Added advanced function getCategories() to display category trees or UL/LI lists
- Record Lists: Added checkboxes and "Erase Checked" option to Advanced Commands (bottom left)
- Plugins Menu: Added plugins section to Admin Menu for future use and custom plugins.

MINOR CHANGES & BUG FIXES
- Upgrade Files: Renamed accounts schema file with .default to prevent accidental overwriting during upgrades
- Uploads: Fixed bug where uploads wouldn't get removed when record was erased.
- Viewers: Fixed bug that caused multiSearch function to stop working
- Section Editors: Section name is now displayed in page heading breadcrumb
- Languages: Added more text to language translation files.
- Preset Menus: Fixed issue in "Products" preset where it allowed uploads but had no allowed file extensions
- Preset Menus: Fixed issue in "Contact Us" preset where email caused "range out of order" errors on some PHP installs
- Field Editor: "allowed characters" field now only allows dash at end of character list to prevent "range out of order" errors
- Field Editor: After "Quick Add"ing a field focus is given to the Quick Add Label Field again to speed up field entry.
- Alerts & Notices: Non-error alerts are now shown with a green border.
- Section Editors: "Quick Add" fields now support unicode characters - replaced escape() with encodeURIComponent() in javascript
- Languages: Added new language strings for French and Spanish (needs translating)
- Help Link: Help link now opens in new window
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** July 14, 2008 - Version 1.20 Released

NEW FEATURES
- List Preview - Added Preview button to editor list page

MINOR CHANGES & BUG FIXES
- Section Editors: Fixed cookie issue so editors remember last keyword search, page number, and perpage value when returning to a section.
- Bugfix: Fixed disabled sockets error "getpage: Error opening socket: The operation completed successfully. (0)"
- Bugfix: Added "language" value to default settings.dat.php.default file
- Bugfix: Fixed "Couldn't find ini file" error on install
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** July 10, 2008 - Version 1.19 Released

NEW FEATURES
- Multi Language - Added language packs for: french and spanish
- Multi Language - Added support for creating your own language files

MINOR CHANGES & BUG FIXES
- Viewer Search: Fixed issue where field1,field2_query searches with unrecognized fields caused error
- Field Editor: Year range fields for dates are now textfields so you can specify dates before 1971
- Field Editor: Made internal 'action' a reserved fieldname (rename existing 'action' fields if needed)
- Admin Menu: Added "Show Server Upload Limits" under Upload Fields in Admin > General Settings
- Admin Menu: Section Editors "<< Viewer Code Generator" button now passes section name to save time
- Error Checking: Helpful error now displayed when installing on windows servers without 'erase' file permissions
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** June 26, 2008 - Version 1.18 Released

NEW FEATURES
- Speed: Optimized code to improve speed by up to 50% or more
- Editors: Added column sorting, click a column header to sort by it
- Editors: Added multi-value fields: multi-select and checkboxes
- Field Editor: Added option to change size and "recreate thumbnails" for uploads
- Password Reminder: Added email password reminder to login menu

MINOR CHANGES & BUG FIXES
- Viewers: Fixed error on some windows hosts "... Undefined index: QUERY_STRING ..."
- Viewers: Fixed errors 'Undefined index: createdByUserNum' for section viewers without 'createdByUserNum' field
- Viewers: Added experimental getPrevAndNextRecords() function (see forum for details)
- Viewers: Added experimental incrementCounterField() function (see forum for details)
- Editor List: List fields now show field label instead of field value (when those are different)
- Admin Program: Fixed bug where PHP 4 sometime wouldn't display program run times greater than 1 second.
- Field Editor: Numeric only field named (such as "123") no longer cause errors.
- Field Editor: Added extra error checking for invalid sorting or searching fieldnames
- Field Editor: Uploads - Added note: Resized images maintain proportions, height and width are "maximum" values.
- Field Editor: Added extra error checking for image and thumbnail max height and width fields.
- Section Editor: Added extra error checking for invalid sorting or searching fieldnames
- Section Editor: Searching for nothing ("") now resets search and shows all results
- Preset Menus: Remove default orderBy of "title" from contact and about us presets (caused error)
- Security: Password cookies are now sent as httpOnly for PHP4 and PHP5 (prevents access by javascript)
- Security: Password cookies are now stored as MD5 checksums instead of plaintext
- Security: Added index.html to admin and data folders to prevent viewing of directory listing
- Security: Added meta tags to prevent search engines from indexing admin pages
- Admin Menu: Added new field for "admin email" under general settings (for addons that send emails)
- WYSIWYG: Moved all wysiwyg code into /lib/wysiwyg.php to make it easier to find and edit.
- WYSIWYG: Added support for wysiwyg_custom.php file that won't get overwritten during upgrades
- WYSIWYG: Upgraded tinyMCE to version 3.0.10.1 (2008-06-18)
- WYSIWYG: Updated tinyMCE to store it's cache files in /data/ instead of /tinymce3/
- WYSIWYG: tinyMCE no longer requires that the /tinymce3/ folder be writable (caused errors on some servers)
- Upgrades: Renamed default settings file to prevent users from accidentally overwriting it when upgrading
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** June 5, 2008 - Version 1.17 Released

MINOR CHANGES & BUG FIXES
- Code Library: Added new function: getListOptions($tablename, $fieldname) to load pulldown list options
- Section Editors: Fixed bug where erasing record caused error.

-------------------------------------------------------------------------------

*** June 5, 2008 - Version 1.16 Released

NEW FEATURES
- Editors: Administrators can now change the creator or "owner" of records
- Viewers: Updated urls to use dashes instead of underscores for better search rankings (SEO)
- Section Editors: New "Add Menu" popup menu for creating menus
- Section Editors: Added new "Categories" menu type (beta) - category code generator coming soon
- WYSIWYG: Added language packs for: Spanish, Dutch, German and Norwegian
- WYSIWYG: The wysiwyg language can now be specified in Admin > Regional Settings
- Websites: Added /sampleTemplates/realty-simple/ with sample templates and schema for Realty website
- Section Editors: You can now specify an upload field in "List Page Fields" to show the first uploaded thumbnail image

MINOR CHANGES & BUG FIXES
- Editors: "Created By" & "Updated By" now show users full name instead of their username
- Editors: Updated dragSortOrder so it's faster when sorting 100 records at a time on list page.
- Section Editors: Fixed "congratulations" typo on sorting tab
- Section Editors: TableNames no longer allow dash character ("-").
- Section Editors: Menu Types can no longer be changed once setup (shouldn't be required)
- Section Editors: Options that are not-applicable for the current menu type are now hidden
- Section Editors: New Multi-Page menus now have drag sorting enabled by default
- Section Editors: List field options now have extra whitespace automatically removed from end (fixed Firefox issue with pulldowns not remembering values)
- Section Editors: Custom Upload Paths are now only saved to schema files if "Use custom upload directory" is checked
- Section Editors: Editors now default to last keyword search and page number during session.
- Section Editors: Added "pdf" to the list of default valid upload extensions displayed when creating a new field
- Section Editors: Updated preset editors
- Code Generator: Fixed "Notice: Undefined offset: 0" error when loading single records that don't exist
- Code Generator: Where and Order By values with single quotes are now backslashed to avoid errors. \'like this\'
- Code Generator: Removed optional XHTML tag <?xml version='1.0'?> from code generator output to prevent confusion and errors
- Uploads: Images that don't need to be resized are copied instead of processed (reduces memory and maintains gif transparency)
- Install: Added .htaccess to correct common server misconfigurations
- Admin: Fixed IE7 positioning bug that caused thickbox (popup window) to not always be centered correctly
- User Accounts: Renamed user roles to reduce confusion: General is now "Writer", Admin is now "Manager"
- Viewers: Added new option 'orWhere' for adding a MySQL "OR ..." to end of where clause
- Viewers: Fixed bug where url keyword searches were ignored when a 'where' option was specified.
- Viewers: Added new option 'requireSearchMatch' to show no records when there is no search keywords submitted
- Field Editor: Default field values now accept <?php ?> tags and code for: textfield, textbox, and wysiwyg fields
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** May 6, 2008 - Version 1.15 Released

NEW FEATURES
- Code Generator: New code generator form makes it easier to create different types of viewers without editing any code.
- Section Editors > Admin Tab: New option to auto-hide listings from expired, disabled, or deleted users (for subscription and pay sites)
- WYSIWYG: Word content is now automatically cleaned (IE) or popup appears on paste (non-IE browsers)
- Field Editor: Added "Checked Value" and "Unchecked Value" to fields to checkboxes

MINOR CHANGES & BUG FIXES
- WYSIWYG: Upgraded tinyMCE to version 3.0.8 (2008-04-30)
- Viewers: Added new viewer function getRecords()
- Viewers: New variables available with getRecords(): createdBy.num, createdBy.fullname, createdBy.username, createdBy.email
- Viewers: Added function thisPageUrl() to make it easy to get current page url for email links
- Editors: New variables available for "List Page Fields": createdBy.num, createdBy.fullname, createdBy.username, createdBy.email
- Editor Manager: Added tabs to organize section editor fields and better field descriptions
- Editor Manager: Added options for 'List Page Url', 'Detail Page Url', and 'Filename Fields'
- Editor Manager: Added new section setting "Max records per user"
- Field Editor: Quick adding special fieldnames keep proper case now (dragSortOrder instead of dragsortorder)
- Field Editor: Made 'length' a reserved fieldname to prevent IE javascript errors (rename existing 'length' fields if needed)
- Field Editor: Alert is now displayed when field editor can't save because of false positive errors from mod_security
- Code Generator: Removed vendor "powered by" text and link (removed from settings as well)
- Code Generator: Added "Email this page" mailto: link to default page viewers
- Errors: Added error message when uploads can't be removed because of file permissions
- Bugfix: Fixed disabled sockets error "getpage: Error opening socket: Connection refused (111)"
- Misc Code and other minor improvements

-------------------------------------------------------------------------------

*** April 18, 2008 - Version 1.14 Released

BUG FIXES
- Viewers: Fixed undefined index error where Page Viewers were setting _link value even if no record was found
- Home Menu: Fixed bug with optional homepage menu (enabled in /lib/menus/home.php) where it wasn't displaying

-------------------------------------------------------------------------------

*** April 16, 2008 - Version 1.13 Released

NEW FEATURES
- Wysiwyg: Added "Insert Media" button for inserting: QuickTime, Flash, ShockWave, RealPlayer or Windows Media Player files
- Viewers: Added multi-section search engine (see forum for examples)
- Viewers: Page Viewers now default to the first record in list (sorted by orderBy) rather than record number 1

MINOR CHANGES & BUG FIXES
- Bugfix: Fixed disabled sockets error "getpage: Error opening socket: Connection timed out (110)"
- Bugfix: Fixed issue where files uploaded through WYSIWYG couldn't be erased
- Compatibility: Memory limit is automatically increased to 64M for hosts that support changing memory limit
- Compatibility: Emulated PHP 5.1.0+ function timezone_abbreviations_list() for server that don't have it
- Compatibility: Updated code to detect correct script url on hosts running PHP in CGI mode
- Usability: PHP Viewer code now display message when incorrectly saved as .html file: "Rename this file to .php"
- Usability: Improved message that is displayed when admin.php is viewed as html or text: "Ask you host to enable PHP..."
- Usability: Improved upload error messages
- Viewers: Autogenerated links (_link) no longer have trailing slashes
- Viewers: Autogenerated links (_link) now includes full url starting with http:// (for email this page links)
- Viewers: Autogenerated links (_link) are now generated on detail page viewers as well (for email this page links)
- Viewers: Added listDetails placeholders: pageResultsStart and pageResultsEnd
- Viewers: Added orderBy option to page viewers
- Field Editor: Field names can no longer start with an underscore (_fieldnames are reserved for program use)
- Field Editor: If you 'Quick Add' a separator and enter a field label it will now create a "Header Bar" separator instead of a blank line separator
- Admin Menu: Added new section "Regional Settings" for timezone settings (and for future options)
- Home Menu: Added menu list on home page for those who want it. Set 'showHomeMenu' in /lib/menus/home.php to enable.
- Wysiwyg: <form> and other tags and attributes are no longer automatically removed from wysiwyg content
- Code Generator: Variables are now prefixed with section table name to make it easier to have multiple viewers on one page
- Code Generator: Added 'orderBy' option to generated page viewer code

-------------------------------------------------------------------------------

*** March 21, 2008 - Version 1.12 Released

MINOR CHANGES & BUG FIXES
- Bugfix: "Call to undefined function timezone_abbreviations_list()" error on some PHP installs
- Bugfix: Fixed error where numbers in filename would cause viewers to load wrong record on some PHP installs
- Bugfix: Changed misnamed listpage field 'date' to 'closing_date' in 'Jobs' schema preset
- Bugfix: Fixed "There was an error sending request!" error when drag sorting records on some servers.
- Bugfix: Added error message for when schema file can't be read/updated because it's already being updated

-------------------------------------------------------------------------------

*** March 20, 2008 - Version 1.11 Released

NEW FEATURES
- Special Fields: Added 'dragSortOrder' field which allows user to drag records to re-order them and stores order values
- Field Editor: Added "Save & Copy" button to field editor for faster entry of similar fields
- Viewers: Added automatic search suffix "_query" for google style searches. Example: +word -word "multi word phrase"
- WYSIWYG: Added "Paste From Word", "Paste As Plain Text", and "Create Anchor" buttons

MINOR CHANGES & BUG FIXES
- WYSIWYG: Upgraded tinyMCE to version 3.0.5 (Released 2008-03-12)
- WYSIWYG: relative links are now converted to absolute links from the website root (page.html > /page.html)
- WYSIWYG: fixed bug that prevents custom wysiwyg stylesheet(/css/wysiwyg.css) from loading
- WYSIWYG: Updated /css/wysiwyg.css to be compatible with tinymce 3
- Compatibility: Fixed issue where PHP couldn't find script because some servers returned SCRIPT_NAME as /cgi-bin/php441
- Compatibility: Fixed issue where PHP couldn't find script because some servers returned SCRIPT_NAME as /cgi-system/php.cgi
- Compatibility: Drag sorting uploads and fieldnames now work with hundreds of items (switched ajax queries to POST to avoid browser url length limits)
- Compatibility: Fixed E_STRICT not defined error message for PHP 4
- Compatibility: Fixed error "undefined index SCRIPT_FILENAME" for servers that don't have that value defined.
- Compatibility: Added error message for when uploads don't work because server doesn't have temp PHP upload folder configured
- Compatibility: Removed error checking for 'disable_functions' php setting - caused more errors than it fixed.
- Compatibility: Added utf-8 header to /lib/header.php for servers that send other charset headers
- Special Fields: Added popup message, hardcoded column and field type (checkbox) for special fieldname "hidden"
- Section Editor: Renamed "List Order" to "Order By" so it has the same name as viewer code and MySQL "ORDER BY" clause it represents
- Section Editors: Editor List now shows date only for date fields with "Specify Time" unchecked
- Section Editors: Fixed bug where single-page section uploads couldn't be edited by different users without admin access
- Field Editor: Made 'order' a reserved fieldname to prevent MySQL errors (rename existing 'order' fields if needed)
- User Access: Updated "Max Records" so zero ("0") means zero and not unlimited (leave blank for unlimited).
- User Access: Fixed "Max Records" so it only applies to "regular" access users, not "admin" users.
- User Access: Setting access level to "Admin" not greys out (disables) the "Max Records" field
- Presets: Removed special fields from section presets: hidden, publishDate, removeDate, neverRemove (can be re-added manually if needed)
- Docs: Fixed typo in "how to upgrade.txt". Changed "/[cmsb]/data/uploads/" to "/[cmsb]/uploads/"
- Section Editors: "Admin Only" fields now get "default value" from field editor when being created by non-admins
- Section Editors: Added error checking so "regular" users can't access section editors if there is no createdByUserNum field.
- Section Editors: Single-page sections now show current username instead of "Unknown" for Created/Updated By when first being created
- Viewers: Viewers now display nice error message if you try to access them before installing program (instead of numerous MySQL errors)
- Error Checking: Added extra error checking to check all file permissions are correct before installing

-------------------------------------------------------------------------------

*** March 3, 2008 - Version 1.10 Released

NEW FEATURES
- Settings: Added option to set image resize quality under: Admin > General > Advanced Settings
- Settings: Added wysiwyg option to use full url with domain for local links under: Admin > General > Advanced Settings
- Settings: Added timezone offset (hours, minutes) fields for PHP4 users (PHP4 has limited timezone support)
- Special Fields: 'createdDate' stores date record was created
- Special Fields: 'createdByUserNum' stores 'num' of user who created record
- Special Fields: 'updatedDate' stores date record was last updated
- Special Fields: 'updatedByUserNum' stores 'num' of user who last updated record
- Special Fields: 'publishDate' stores start date that viewers should display record (renamed from 'autoPublishStartDate')
- Special Fields: 'removeDate' stores end date that viewer hide record after (renamed from 'autoPublishEndDate')
- Special Fields: 'neverRemove' stores option on whether removeOn date should be ignored (renamed from 'autoPublishNeverExpires')
- User Access: You can now restrict users to only edit their own records and limit how many records they can create (by section)
- Field Editor: Separator html code now parses <?php ?> tags and code
- Field Editor: Section Admins can now view and modify "Admin Only" fields.

MINOR CHANGES & BUG FIXES
- WYSIWYG: Upgraded tinyMCE to version 3.0.2.1 (Released 2008-02-26)
- Field Editor: When "List Field" option are loaded from another database they are now sorted with section sorting order
- Field Editor: Changed MySQL column type for checkbox fields to be "NOT NULL" so only numeric values are stored
- Field Editor: Changed MySQL column type for date fields to be "NOT NULL" so only date values are stored
- Compatibility: Coded around "Permission denied" error on servers with disabled sockets
- Compatibility: Added note to admin.php to turn on php for hosts that show .php files as text
- Compatibility: Added quotes to tablenames in code to avoid reserved MySql keyword errors
- Compatibility: Added error message for when PHP safe_mode is enabled
- Compatibility: On install - specified database name is now created if it doesn't already exist.
- Compatibility: Set default_charset to utf-8 for php output pages.
- Compatibility: Fixed issue where PHP couldn't find script because some servers returned SCRIPT_NAME as /bin/php.cgi
- Compatibility: Added code to check for servers with sockets disabled and issue warning (checks on install only)
- Compatibility: Added code to check for servers with disable_functions PHP setting and issue warning
- Section Editors: Fixed "Use of undefined constant mysql_affected_rows" error
- Web Standards: Added labels for checkboxes on install page (clicking text toggles checkbox)
- Web Standards: The code generator now includes blank alt="" tags for image tags
- Code Generator: Change default date format from incorrect "G:H:s a" to correct "g:i:s a" (can still be customized by user)
- Code Generator: Change default date format from incorrect "G:H:s a" to correct "g:i:s a" (can still be customized by user)
- Viewers: SEO urls for viewers in the root of the website are no longer created with extra leading slash ("/")
- Viewers: Fixed error where $TABLE_PREFIX wasn't available when viewer was called inside a user defined function
- Uploads: Thumbnails are now created in a subdirectory called /thumb/ to be compatible with popular gallery software
- Uploads: Fixed bug that prevented new upload dirs from automatically being created on some servers

-------------------------------------------------------------------------------

*** January 24, 2008 - Version 1.09 Released

MINOR CHANGES & BUG FIXES
- Uploads: Fixed bug where uploading flash SWF files returned 'Unknown image type!' when thumbnailing was enabled
- Field Editor: List fields now save default options when being quick added instead of being blank
- Field Editor: Custom upload directories now get automatically created when accessed
- Compatibility: Fixed issue where PHP couldn't find script because some servers returned SCRIPT_NAME as /shared-cgis/php
- Compatibility: Fixed "Invalid Product ID" on older PHP version (floating point error with =* operator)
- Compatibility: Reset umask to 0 for restrictive hosts that default to making created files unreadable
- Compatibility: Coded around php bug: fsockopen() "php_network_getaddresses: getaddrinfo failed: Name or service not known"
- Compatibility: display_errors and display_startup_errors now enabled by default (can be commented out in lib/init.php)
- Error Messages: Changed typo "File is writable, check permissions" to "File isn't writable, check permissions"

-------------------------------------------------------------------------------

*** January 19, 2008 - Version 1.08 Released

NEW FEATURES
- Viewers: Added automatic date search suffixes (_year, _month, _day). Example: viewer.php?date_year=2008&date_month=1
- Compatibility: Lowered PHP required to v4.3.0+ (over 5 years old)
- Compatibility: Lowered MySql required to v4.1.7+ (over 3 years old)
- Compatibility: Switched to 'MySQL' extension (from less popular 'mysqli' extension)

MINOR CHANGES & BUG FIXES
- WYSIWYG: foreign (extended) characters are no longer saved as entities (causes keyword search to fail)
- WYSIWYG: Re-added fullscreen edit plugin files (removed in upgrade to tinyMCE 3)
- WYSIWYG: Fixed bug where you couldn't add images when wysiwyg was in fullscreen mode
- Compatibility: Added workaround for "Call to undefined method mysqli::set_charset()" error on some servers
- Compatibility: Program and Field settings can now store double-quotes (") in ini files
- Compatibility: Added workaround for servers that don't have current directory in include_path
- Compatibility: Added automatic code to disable 'magic_quotes_gpc' for servers that have it left on
- Field Editor: added 'menu' as a reserved fieldname

-------------------------------------------------------------------------------

*** January 10, 2008 - Version 1.07 Released

NEW FEATURES
- Section Editors: You can now reorder uploads by dragging them.
- Section Editors: Re-added fullscreen edit button to wysiwyg (removed in upgrade to tinyMCE 3)
- Field Editor: List fields can now have different values for values and labels (entered as: value|label)
- Field Editor: List fields options can now be loaded from another table, or from an sql query (advanced)
- WYSIWYG: Upgraded tinyMCE to the latest version (Released 2008-01-08)
- Viewers: Added automatic search suffix "_keyword", used in url like this: viewer.php?myField_keyword=blue
- Viewers: Added automatic search suffix "_match", used in url like this: viewer.php?myField_match=red
- Viewers: Added automatic search suffix "" is an alias for "_match", like this: viewer.php?myField=blue
- Viewers: Added automatic search suffix "_min", used in url like this: viewer.php?myPrice_min=100
- Viewers: Added automatic search suffix "_max", used in url like this: viewer.php?myPrice_max=999
- Viewers: Added multifield search, like this: viewer.php?field1,field2,field3_keyword=hello
- Viewers: Page numbers are now passed as ?page=1 and "/page-1/" instead of "page1" to support searching

MINOR CHANGES & BUG FIXES
- Field Editor: fixed jQuery bug where IE6/7 would always show radio buttons as unselected. http://dev.jquery.com/ticket/1095#comment:4
- Schema Files: renamed "listOptions" to "optionsText" to support new list option features
- Viewers: Extra search arguments are now automatically passed forward in page links (such as ?city=Vancouver or /city-Vancouver/ for SEO urls)
- Viewers: You no longer have to enter the absolute url to the page viewer when useSeoUrls is on, the program figures it out.
- Errors: Added error message for when GD2 extension isn't installed
- Validation: Misc XHTML and CSS validation improvements

-------------------------------------------------------------------------------

*** January 3, 2008 - Version 1.06 Released

NEW FEATURES
- WYSIWYG: Upgraded wysiwyg editor to tinyMCE v3.0b3 (from v2.1.2)
- WYSIWYG: Wysiwyg now support image and file uploads
- Field Editor: Added "Field Width" option for text fields
- Field Editor: Added "Field Description" option for text fields (displayed after field)
- Field Editor: Added "Unique" option for list fields
- Field Editor: Added "Admin Only" option for all fields (only admins can view or change field)
- Section Editor: Added "Max Records" option to limit max allowed records in sections
- Section Editor: Added "Disable Add" option to prevent user from adding records to a section
- Section Editor: Added "Disable Erase" option to prevent users from removing records from a section
- Viewers: Option 'titleField' supports multiple fieldnames (first defined field is used for url keywords)

MINOR CHANGES & BUG FIXES
- FieldEditor: Renamed 'checkboxDescription' attribute to 'description'
- Viewers: Moved "Page not found" error into list viewer code so users could modify it
- Viewers: Added $listDetails[] placeholders: noRecordsFound, invalidPageNum, firstPageLink, lastPageLink
- Viewers: Changed how paging works: Invalid page numbers are displayed (page 5 of 2) and prev link goes to last valid page num
- Usability: 'View Website' link is now hidden if it's set to blank in admin.
- Code Generator: Extra code added so uploads are only displayed for valid record numbers (and no error is displayed)
- Uploads: Clicking upload after selecting 0 files refreshes upload form instead of producing an error

-------------------------------------------------------------------------------

*** December 19, 2007 - Version 1.05 Released

MINOR CHANGES & BUG FIXES
- Uploads: Uploads now have non-alphanumeric characters replaced with underscores on save.
- Upload Lists: Added save button to bottom of page in addition to top (reduce scrolling)
- Upload Lists: "modify" link is now only shown if there are extra upload detail fields (title, caption, etc)
- Upload Lists: Previous uploads with single quotes ("'") now be modified and removed correctly.
- Upload Lists: Doubled maximum height of upload list (to 300px when full of images)
- Section Editor: Minor usability improvements (reducing clicks, making things more intuitive, etc)
- escapeMysqlWildcards() now works correctly (escaping MySQL wildcard search chars)
- Field Editor: Erasing a field would sometimes hide additional fields until the page was reloaded.
- Code Generator: Added list of upload fields to generated upload viewer code
- Code Generator: Default viewer order is now set to "List Order" from the Section Editor so both sort the same
- Login Security: Login password cookies are now set as 'httponly', so they can't be access through javascript
- Viewers: Added new upload field 'extension' with upload extension (eg: gif, jpg, doc, etc)
- Viewers: Updated code to give better error message in (unsupported) PHP4
- Viewers: Removed some unneeded characters from Page Viewer code (\n";)
- Section Editor Presets: Fixed the FAQ preset by removing a trailing space from the listPageFields value ("questions " was causing an interface error in FAQs)
- Section Editor Presets: Minor tweaks and edits

-------------------------------------------------------------------------------

*** December 10, 2007 - Version 1.04 Released

NEW FEATURES
- Private Labeling: Added "Private Labeling" menu to admin to make private labeling faster and easier.
- Field Editor: Different upload fields can now have different upload directories
- Field Editor: Upload fields can each have up to 5 different info fields (eg: Title, Caption, etc)

MINOR CHANGES
- Private Labeling: Sublicensing clause in license is no longer displayed after private labeling.
- Field Editor: Advanced Options are now always hidden until you click "show"
- Field Editor: Clicking show or hide now displays or hides all option groups at once (to reduce clicks).
- Field Editor: Option groups will stay opened for all fields until you close them again (or you close your browser).
- Field Editor: Improved formatting and display of various options in IE7 ("display: table" css was unsupported in IE7)
- Compatibility: Lowered required MySQL version to v5.0.15 for web hosts with older versions (First official MySQL 5 production release)
- Compatibility: Added workaround for bug in MySQL v5.0.37 that prevents user from updating single menu records. http://bugs.MySQL.com/bug.php?id=27210
- Compatibility: Removed hardcoded references to "admin.php" so web hosts requiring .php5 extension will work.
- Section Editor: Renamed "Menu Editor" to "Section Editors"
- Section Editor: Tablenames with leading underscores ("_likeThis") are no longer allowed and reserved for future use
- Section Editor: Tablenames must now be all lowercase for compatibility (some servers are case sensitive, some aren't)
- Upload Fields: Fixed an interface error with non-image file uploads that displayed a "Division by zero" error message
- Misc: Program version is now updated in settings when you install an upgrade

-------------------------------------------------------------------------------

*** December 3, 2007 - Version 1.03 Released

BUG FIXES
- Fixed "preg_match() expects" error for servers with 'allow_url_fopen' set to false in php.ini

-------------------------------------------------------------------------------

*** November 30, 2007 - Version 1.02 Released

MINOR CHANGES
- Private Label: Added new key to settings file and code generator footer "vendorPoweredBy"
- Interface: Removed extra line break that appears on top of some pages in IE7
- Interface: Menu Editor List now shows message when no menus added "There are no menus. Try adding one below."
- Interface: Upload Lists now display "No Uploads..." after erasing last upload instead of just empty box
- Interface: Field Editor: table prefix is now shown in front of tablename field instead of being required to be entered.
- Interface: Field Editor height now adjusts to be 80% of window height so Save button isn't hidden on lowres monitors
- Interface: Linked logo.gif to "home", removed "home" link from navigation bar
- Error Messages: Improved message that is displayed when MySQL table exists but schema is missing
- Viewers: Added tableName to viewer errors to make it easier to track down problems with multiple viewers
- Viewers: Code Generator no longer sets titleField option to "title" unless that field exists in table
- Install: Added .htaccess file to disable unsupported PHP setting 'magic_quotes_gpc'
- Admin General: MySQL table prefix is now displayed but not editable

BUG FIXES
- Fixed error where different column name CaSe in schema and mySql would cause error

-------------------------------------------------------------------------------

*** November 26, 2007 - Version 1.01 Released

MINOR CHANGES
- Viewer Code: Added function escapeMysqlString() for escaping viewer keyword searches
- Viewer Code: Added function escapeMysqlWildcards() for escaping viewer keyword searches
- WYSIWYG Field: Added "Edit HTML Source" button
- Uploads Field: Now automatically adjusts height when there are no or few uploads
- Uploads Field: Turned off border for Internet Explorer
- Menu Pre-sets: Removed unintentionally pre-installed News and Contact Us menus (both are still available as pre-set menus)
- Menu Pre-sets: Reorganized the blog menu pre-set fields
- Moved tinyMCE (WYSIWYG editor) from /cmsb/lib/ into the /cmsb/ folder (the program root)

BUG FIXES
- Added/fixed maxlength setting for text fields (limits characters accepted to max length value from field editor)
- Resized images sometimes wouldn't save properly with "Error saving file!" error
- Thumbnails wouldn't get created if uploaded image wasn't automatically resized by program first
- Fixed issue where page load time (at bottom of page) sometimes showed negative value

-------------------------------------------------------------------------------

*** November 21, 2007 - Version 1.00 Released

First Release

-------------------------------------------------------------------------------

*** NOTE: NEW ENTRIES ARE LISTED AT THE TOP ***