Everyone is still buzzing and awaiting the Beta release of Zen Cart 2.0. The thread to subscribe to is here if you want updates and release information.That aside, we are going to get in to some details regarding the brave new Zen cart release of 2.0 in 2009 with the information we currently have and will update as we can.

Current Zen Cart 2.0 Hosting Requirements

Target Zen Cart 2.0 Improvement Goals

Speed
As mentioned in previous Zen Cart Roadmap posts, an emphasis has been placed on improving Zen Cart 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 will be 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 Zen Cart 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 web hosting service to provide in order to run it. CURL is also highly recommended.

Enhanced and Improved Zen Cart 2.0 Features

Zen Cart 2.0 Summary of enhancements, new features, and other improvements for Beta v2.0:

Zen Cart 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

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 (This is a big Zenner Feature request coming to fruition)

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

centralize 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 email engine – the more reliable and contemporary and RFC-compliant swiftmail v3 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

Search improvements – This is probably the #1 Zenner feature complaint and request

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 (We like this)

Country status – can now set countries to active/inactive instead of deleting unused countries

“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. (Help for accidental blacklisting!)

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 (Nice and needed!)

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

When Can I Upgrade to Zen Cart 2.0?

The following Beta release schedule has been posted by Zen Cart for V2.0. Note that many shop owners will genuinely be a year or more from considering the Zen Cart 2.0 upgrade following release.In part the reasoning is development cost and needs. Note that for example, old 1.3X templates and modules will no longer function under the new system and wil need to changed significantly to be applicable to the new Zen Cart 2.0 platform. Additionally, any new software release is going to have bugs and issues… A total software rebuild and next generation of this sort is likely to have MANY. This is expected and the core reasoning for the Public Beta release. The release schedule is below.

Releasing Zen Cart 2.0 Public Beta Schedule

In the interest of keeping with the original plan as closely as possible, and in light of the fact that there are a few components of the 2.0 code that are not yet fully production-ready, we have decided that when we release the 2.0 code, it will start as a public beta. This affords numerous benefits: (i) language-pack translators can get a jump start, making the final touches after the beta much faster, (ii) addon-developers will have access to the code so they can prepare their own beta updates to work with the new version, (iii) the community gets a chance to look at it, play with it, and give feedback, (iv) you get to help us identify any bugs, before they hit live stores.

The following is a *tentative* schedule for the beta program (subject to change):
In approximately 30 days – first installment of public beta
30 to 60 days after first beta – second installment of public beta
30 to 60 days after 2nd beta – third installment of beta … hopefully coined as a Release Candidate
Sometime near the end of the first quarter – official release, no longer in beta status

Zen Cart v2.0 Upgrade Information

DATABASE DATA
All your customer, product, and order data is stored in the database, and there are MANY changes to the database in this new version.
The good news: Your orders and customers (and indeed all existing database content) will be preserved when you use the provided zc_install scripts to upgrade your database content to the new structure for you, making this part of the upgrade quite simple.

Templates
You will need to rebuild your template fresh.
YOUR OLD TEMPLATES WILL NOT WORK.
The good news here is that identifiying places to change things, and making changes to templates and stylesheets is a whole lot easier.
Even some new layout formats are automatically handled via some admin switches.

Languages
Old language packs will need to be updated. The biggest change is the need to re-encode language files as UTF-8-without-BOM format. And, of course, add translations for new texts.
Also, the english.php file has been separated into a few additional files, including the locale.php and systemWarnings.php files, and a few others. Just a couple things for translators to note.

Addons
Every addon will need to be rewritten using the new infrastructure.
The good thing to note here is that many addons can now be done using the notifier/observer system far more efficiently than they could in the past. This makes it possible for many addons to be truly plug-and-play: Just drop in the new files and it works!
It will take time to get used to using the new classes and approaches to accessing data more efficiently. Some observer/notifier examples will be provided as a starting base.

I think this is a big and necessary move for the Zen cart team. Some have said that finally, the OS Commerce legacy code will be removed and no longer haunt or programming tasks. The new software platform is expected to be more easily managed by your average shop owner and certainly more robust as well. So whether the teams takes 6 months or 12 matters little as the task at hand is very large and the time they spend testing and coding instead of rushing will be a great benefit to be reaped by developers and shop owners alike.