Update on Zen Cart 2.0
Much time has been spent in the last year working on many aggressive changes to the inner workings of the Zen Cart core. This includes a large number of significant improvements that will be adored by both designers and programmers alike. We are excited about what the new version has to offer when it is officially released.

Here is an idea of what to expect in the upcoming v2.0.0 release:

Speed
As mentioned in previous Roadmap posts, an emphasis has been placed on improving performance by various methods, especially reducing the number of database queries required for processing pages.

Code
For the programmers among us, you'll be happy to know that the code has been largely converted to a much more efficient OOP structure, which will ultimately end up making future growth much simpler.

Templating
Templating is much simpler, in that the complicated PHP blocks that used to make them so hard to read or follow or customize have been removed.
Stylesheets are leaner. And there are some very easy-to-use admin-side layout controls to make setting your desired layouts *much* simpler.

Overrides
The same override system exists for templates and language files, meaning that those already familiar with that part of the directory structure will find it easy to continue using.

Languages
UTF-8 support is now native, and the more complicated language files have been simplified and split off into their own for easier management.

Written for PHP 5
Zen Cart 2.0 takes advantage of features specific to PHP 5.2 and MySQL 4.1, thus, those are the new minimum requirements for your hosting service to provide in order to run it. CURL is also strongly recommended.

And More
See below for more detailed information on what's new and improved in 2.0!


New/Enhanced/Improved:
Abbreviated summary of enhancements, new features, and other improvements in v2.0:
  • Template system improvements
    • product listings consolidated to share display logic, making it easier to display different views of information in a consistent format
    • more control via the admin
    • simpler and more advanced and versatile stylesheets, with dynamic CSS used where needed ... can be overridden easily if needed
    • procedural code and other function calls removed from templates
    • jQuery support added
    • sideboxes have been renamed as "content boxes"
    • centerboxes are now "listing boxes" and can be rearranged much more intuitively via the admin, and the layout is now controlled by CSS, as is most of the template
    • language-defines are now accessible in templates as $paLanguageXXXXX variables
    • javascript onload scripts are now handled with a simple .ini file to control behavior
    • and more

  • New class-based structure
    • significantly reduced query counts
    • easy access to product properties
    • support for product types
    • most procedural functions converted to shared classes to reduce redundancy

  • Stock/sku support
    • stock can be set for attribute combinations
    • ajax suppport for stock display
    • sku can be set for attribute combinations
    • ajax support for sku display
    • individual reorder levels can be set per attribute/sku combination, and a global setting can optionally override

  • New DB abstraction layer
    • uses lightweight drivers based on abstract class
    • easier to add new drivers
    • Added innodb db driver
    • transaction support for MySQL databases using innodb

  • Data Access Objects
    • centralise all queries
    • easier to override for different db drivers
    • use of variable binding for increased security
    • allows for future changes to db abstraction layer/use of ORMs

  • New mail engine - the more reliable and contemporary and RFC-compliant swiftmail project has been integrated with Zen Cart
  • New installs based on UTF-8 by default.
    • (As such, all language-file edits and sql-file edits should be done with an editor that can save the files in UTF-8-without-BOM encoding format.)

  • Language files have had some alterations. They no longer directly "include" other files. Each contains only define() statements. Some content has been split off into separate files.
  • Language files now contain a "locale.php" file, in which locale-specific settings can be made, apart from the rest of the language files. This makes some translation simpler for certain locales, as well as changing of DOB format, etc.
  • System now attempts to assist in setting config files to read-only status if they are found to be writable, to help minimize some confusion on permissions settings
  • Group-pricing facility expanded to allow future growth to additonal group handling
  • customers_info table merged into customers table for simpler data-mgmt and less problems with incomplete imports when people guess at table-names when doing ad-hoc extracts of their database
  • Session handling improvements
  • Spider-detection improvements, and more known spiders detected (also now allows for mixed-case specifications in spiders.txt)
  • Hit-counter improvements (no longer tracks spiders as page hits)
  • Automatic re-optimize of table data when deleting products etc using admin UI
  • HTMLarea replaced by FCKeditor
  • Improvements to included product-type filters
  • Improvements for more accurate language-detection when set in browser-detect mode
  • Improvements to prevent errors in whos-online data display when file-based sessions are in use
  • Lengthening of several table fields to accommodate longer (esp multibyte) data
  • Has been subjected to a Security audit (prior to official release)
  • Search improvements
  • Improvements to prevent certain error messages that could occur if an added language was defined but its files weren't present on the server.
  • Payment and Shipping module code standardized. Now allows prefixes to be set for submitting order numbers to gateways. Also allows module updates to happen more easily, without having to uninstall and reinstall in order to obtain new settings
  • Core gateway payment modules allow use of a store-identifier-prefix so multiple stores can be more easily identified when sharing a single merchant account.
  • Improvements to data made available to affiliate tracking systems on checkout_success
  • Order Data now separates first-name and last-name, as well as storing telephone numbers for each address
  • Now even more detailed information is stored with each order, making it easier to reconstruct an order as at the original point in time when it was created. It's now less dependent on original product details being present in the database.
  • Attribute data is now stored with orders in such a way as to retrieve the data so that it always shows up in the same order in which it was added to the order initially. This prevents some confusion which used to occur when multiple rows of text attributes were added but showed in mixed order.
  • Configuration simplification: configure.php file contents abbreviated. Commonly-untouched components moved to common_paths.php file, which loads after configure.php and is thus overridable by defines in configure.php
  • Session name ("zenid") now definable in configure.php file. Same with zenAdminId in admin.
  • Credit Class system bugfixes and improvements
  • Application program logging and improved error handling
  • New "/logs/" folder added for storing debug logs from the store in general, or from modules that communicate with external servers etc.

New Functionality
  • New email templating system -- makes it easy to visually configure how both text and HTML emails will appear
  • Country status - can now set countries to active/inactive instead of deleting unused countries
  • Admin can change customer password from admin side
  • Visitor cart can be set to be discarded, or restored upon next login
  • Prevents credit card slamming & login slamming
  • New fields added for product data (can now specify short-descriptions for product listings, an "is-new" date, expiry-date, allow-backorder flag, product dimensions, display-weight, etc)
  • Product Statistics now separated from products table, to minimize record-locking conflicts and minimize problems when using external tools for import/export of product data
  • New fields added to customer record, including some user-definable fields, mobile-phone number, etc
  • Salutation support added, with choices editable via admin interface
  • Regulations: when customer agrees to TOS and/or Privacy Policy details, that fact is stored in the order/customer record respectively
  • Newsletter handling split off from customer record into dedicated tables, and added ability to handle multiple newsletter choices
  • About-Us page added
  • Contact-Us page now optionally allows entry of subject and telephone number.
  • Site-wide Order number prefix/suffix can now be set (for display purposes only - does not change the existing method of storing order numbers sequentially)
  • Database backup re-integrated back into the Admin->Tools menu
  • Shopping Cart class is no longer session-bound. It's a separate object in the zcRegistry.
  • Download system now allows notifier hook to allow intercept if alternate handling is required. This can allow for other protocols and even alterations to download content before delivery.
  • Metatag generator improvements. Custom metatag data no longer stored in separate tables, thus minimizing queries and simplifying some synchronization problems.
  • "Home" link improvements. Now includes session ID if needed, and its format can be more easily changed by setting the desired parameter in the zen_href_home_page_link() function call if really needed
  • New options allow additional email addresses to be set for "bounce" and "system alerts" purposes.
  • Store Manager now has additional database cleanup options including the ability to purge certain sets of temporary data to improve performance and managing high-traffic tables


REMOVALS:

NOTE: The following components have been removed from the core, in favor of being treated as addons instead:
- Offline Credit Card payment module removed from core, in favor of addon
- NoChex payment module removed from core, in favor of addon
- phpBB class removed from core, in favor of addon


MINIMUM REQUIREMENTS
NOTE: Zen Cart v2.0.0 has the following MINIMUM requirements:
- REQUIRES PHP 5.2 or newer
- REQUIRES MySQL 4.1 or newer
- CURL support not "required", but VERY strongly advisable