Zen Cart 1.5.6 – Upgrade Drivers

There’s a new release of Zen Cart – but why should you upgrade?  I’ll review some of the key reasons in this post.

  • Compatibility with PHP 7.2 and 7.3: PHP is constantly changing, and as new versions are introduced, older ones fall by the wayside.  This means they no longer receive bug fixes or even security patches for issues which are discovered by researchers and hackers.  If you look at the PHP supported versions page, you’ll see that versions prior to PHP7 won’t even receive security patches after January 2019.  To stay secure, you must update your PHP, which means you must update your Zen Cart software.
  • All security patches released in Zen Cart 1.5.5 and before included: if your Zen Cart hasn’t been actively maintained, you may have missed the PHPMailer security patch, the Trustwave patch, or any of the other Zen Cart security patches which has been released in the last few years.  Upgrading to Zen Cart 1.5.6 gets you all those patches without any extra work.
  • All prior bugfixes from ZenCart 1.5.5 and below are included: how many times have you struggled with an issue, only to find that it has been resolved in a newer release? Upgrading means you’re using the latest fixes.
  •  Improved admin appearance: the Zen Cart 1.5.6 admin is much easier on the eyes than the older versions.  Works great on mobile too!  
Mobile product editing in Zen Cart 1.5.6
Product Editor Screen in Zen Cart 1.5.6 on Mobile
Mobile customer edit screen in Zen Cart 1.5.6
Customer Editor Screen in Zen Cart 1.5.6 on Mobile
Zen Cart 1.5.6 Product/Category creation screen
Looks good on the desktop too! 

WordPress 5.0.1 – Update Time!

Open Source but powerful, but with great power comes great responsibility – notably, your responsibility to keep your software updated!  If you haven’t upgraded to WordPress 5 yet, this WordPress security announcement should get you into gear.  We all knew we’d have to learn Gutenberg some day, it just seems that someday came sooner than we had planned! 

Enhancements to Zen Cart 360 Sales Reporting

I have added an optional feature to Zen Cart 360 Sales Reporting (link) which shows recent direct deposits on the admin dashboard.  Update admin/index_dashboard.php, and at the end of the file, add this block of code:

<div id="colthree" class="col-xs-12 col-sm-6 col-md-4 col-lg-4">
<div class="reportBox">
<div class="header"><?php echo "Recent Direct Deposits"; ?> </div>
<?php
require_once(DIR_WS_CLASSES . 'currencies.php');
$currencies = new currencies();
$orders = $db->Execute( "SELECT * FROM " . TABLE_DIRECT_DEPOSIT . " ORDER BY deposit_date DESC LIMIT 5");
while (!$orders->EOF) {
?>
  <div class="row">
  <span class="left">
    <?php echo substr($orders->fields['name'], 0, 20); ?>
  </span>
  <span class="center">
     <?php echo $currencies->format($orders->fields['amount']); ?>
  </span>
  <span class="left">
     <?php echo $orders->fields['deposit_date']; ?>
  </span>
</div>
<?php
$orders->MoveNext();
}
?>
</div>
</div>

Is osCommerce Dead?

I’m a Zen Cart guy, so normally the only thing I have to say about osCommerce is, “Them’s fightin’ words!”

But Gary Burton is a true open source hero, who has provided an upgrade path for merchants whose businesses depend on an active branch of osCommerce that works with modern versions of PHP. Thank you, Gary, for your leadership in creating the Frozen and Edge branches of osCommerce.

https://github.com/gburton/Responsive-osCommerce

Zen Cart Coupon Single User

Zen Cart Coupon Single User has been upgraded so that you can now restrict a coupon to any email address on a single domain, not just a single email.

So for example, if you want to permit a coupon to only be used by customers with a “@BigClient.com” email address, you would create a coupon code starting with “@BigClient.com”, such as “@BigClient.com_save_ten” or “@BigClient.com-half-off”.

BUG: Always Display State as a Pulldown in Zen Cart 1.5.5

There’s a bug in Zen Cart 1.5.5 that causes the State dropdown not to be correctly populated when you set Configuration->Customer Details->State - Always display as pulldownto true in Admin->Configuration->Customer Details.  It causes your State dropdown menu to look like this:

Zen Cart State dropdown without state set

even though the value of State has been set.

You can see the root cause of this error in the Chrome Javascript debugger.  Right click and select Inspect, then click the Console tab, and you’ll see the traceback for the error.

Traceback in Zen Cart for no state error in 1.5.5

The root cause of the error was that the stText element id was removed from the default template Zen Cart 1.5.5, an attempt to modify that DOM element failed, and stopped JavaScript processing.  The fix was straightforward; just check for this element’s existence before updating it.  You can pull the fix from Github and apply it to your Zen Cart 1.5.5 site, or hire me to do it.

Zen Cart – MailChimp Integration

My Zen Cart – MailChimp integrations have received the following updates:

  • Fixed bug in API integration:
    The original integration had error checking that was based on the 1.3 API, and lo longer work.  So while the success path logic was all correct, the error handling was wrong.
  • Added instructions for changing Zen Cart newsletter page:
    The original Zen Cart integration only handled signup on the account creation page. Now users may subscribe or unsubscribe on the newsletter page (which is linked to on the My Account page as /index.php?main_page=account_newsletters.
  • Removed double opt in:
    At the request of ecommerce companies, MailChimp has changed the default subscribe behavior so that double opt in is no longer required.  Users who prefer the prior behavior can still change it back by modifying the PHP API (includes/functions/extra_functions/mailchimp.php) to set status based on $options[‘status’] rather than just to subscribed.
  • Moved MailChimp error log to /logs folder:
    In the event of an error, the MailChimp.log file was being written to the /cache folder; it is now written to the /logs folder where it is more likely to be noticed (since most logfiles have been migrated there in Zen Cart 1.5+).

You can see the updates in my ZenCart MailChimp and ZenCart Newsletter Discount contributions, and  my MailChimp Integration for Zen Cart GitHub repository.