Login | Sign up | Toll-Free: 1-800-752-0455
 
 

Tour

 
 
Overview
Featured Clients
Server Requirements
Free Marketing Content
Video Tour
Reviews
Buy Now

Changelog / CMS Builder Version History

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

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

*** 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-existant 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_basedirs
- 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 sedepndMessage() 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 pseudofield _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 zero'd 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 /tinyce3/ 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 ***