<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><description>Manager at osCommerce. Specialize in ecommerce web development. Love to cook and bake. Getting into photography. Located in Solingen, Germany, Rock City No. 1.

    </description><title>Shiny Red Apples</title><generator>Tumblr (3.0; @haraldpdl)</generator><link>http://www.shinyredapples.com/</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ShinyRedApples" /><feedburner:info uri="shinyredapples" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://tumblr.superfeedr.com/" /><feedburner:browserFriendly></feedburner:browserFriendly><item><title>Sage Pay Server v1.2</title><description>&lt;p&gt;&lt;img align="right" src="http://media.tumblr.com/tumblr_m9z61zE8Kl1qck9g4.png" width="200"/&gt;There have been reports of the Sage Pay Server payment module not working and failing with the following error message:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Unable to redirect to Vendor&amp;#8217;s web site. The Vendor failed to provide a RedirectionURL&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The problem was introduced with v2.3.0 where &lt;em&gt;tep_href_link()&lt;/em&gt; returns HTML formated URLs and the RedirectionURL value containing &amp;amp;amp; instead of &amp;amp; in the URL.&lt;/p&gt;
&lt;p&gt;This has been fixed in v1.2 of the payment module and can be downloaded here:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://addons.oscommerce.com/info/6984"&gt;http://addons.oscommerce.com/info/6984&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This will also be included in osCommerce Online Merchant v2.3.4.&lt;/p&gt;</description><link>http://www.shinyredapples.com/post/31055227959</link><guid>http://www.shinyredapples.com/post/31055227959</guid><pubDate>Fri, 07 Sep 2012 15:23:53 +0200</pubDate><category>oscom23</category><category>sagepay</category></item><item><title>"extras" Directory Vulnerability Reminder</title><description>&lt;p&gt;If you&amp;#8217;re using an earlier version of osCommerce Online Merchant before v2.2 Release Candidate 1 (July 2007), please make sure the &amp;#8220;extras&amp;#8221; directory is not publicly accessible on the server if it has been copied over. This directory is not part of the installation and had to be separately copied over if upgrades were being performed from even earlier releases.&lt;/p&gt;
&lt;p&gt;A list of affected servers has recently been published that unfortunately still have the &amp;#8220;extras&amp;#8221; directory publicly accessible.&lt;/p&gt;
&lt;p&gt;If left on the server, the scripts in the directory may allow any file on the server to be read due to an insecure directory listing implementation.&lt;/p&gt;
&lt;p&gt;More information at:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.oscommerce.com/about/news,141"&gt;http://www.oscommerce.com/about/news,141&lt;/a&gt;&lt;/p&gt;</description><link>http://www.shinyredapples.com/post/28623334587</link><guid>http://www.shinyredapples.com/post/28623334587</guid><pubDate>Fri, 03 Aug 2012 13:35:09 +0200</pubDate><category>oscom22</category><category>security</category></item><item><title>OSCOM v2.3.2 and Upcoming Releases</title><description>&lt;p&gt;&lt;a href="http://www.oscommerce.com/about/news,140" title="osCommerce Online Merchant v2.3.2"&gt;osCommerce Online Merchant v2.3.2&lt;/a&gt; has just been released which improves the customer password forgotten routine and generation of random strings.&lt;/p&gt;
&lt;p&gt;Previously, when the customer requested a new password, their password was instantly updated to a random string and was e-mailed to the customer. The length of the random password was based on &lt;em&gt;ENTRY_PASSWORD_MIN_LENGTH&lt;/em&gt; which by default is 5 characters long.&lt;/p&gt;
&lt;p&gt;Although it is strongly recommended to use longer passwords, the real problem was that the random string generated for the new password was &lt;a href="http://www.suspekt.org/2008/08/17/mt_srand-and-not-so-random-numbers/" title="mt_srand and not so random numbers"&gt;not random enough&lt;/a&gt; to use in a secure manner due to a weak seeding of the random number generator.&lt;/p&gt;
&lt;p&gt;This has now been improved by using &lt;a href="http://www.openwall.com/phpass/"&gt;Phpass&lt;/a&gt;&amp;#8217; get_random_bytes() method to generate cryptographically secure random strings based on /dev/urandom, openssl_random_pseudo_bytes(), and mcrypt_create_iv() where available. &lt;em&gt;Phpass was introduced in osCommerce Online Merchant v2.3.0 to replace the older password hashing algorithm.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Also new to the customer password forgotten routine is that the customers password is no longer instantly updated with a random string, but a personal link is generated and e-mailed to the customer and gives them 24 hours to update their own password. Customers can ignore the e-mail if they did not request a new password themselves, and can continue to use their existing password if they have remembered it. New password requests are protected by an Action Recorder module to limit requests to once every 5 minutes (this is configurable).&lt;/p&gt;
&lt;p&gt;Once the customer has updated their password via their personal link, they are redirected to the login page to login using their new password. There are advantages and disadvantages to automatically authenticate the customer as soon as they&amp;#8217;ve updated their password or to make them login again. We chose a manual login due to technical issues:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;We did not want to duplicate the core login code as it would have missed on Add-On or custom changes made to the login routine.&lt;/li&gt;
&lt;li&gt;We did not want to have an automatic redirect page pointing to login.php with the customers e-mail address and password in plain-text within hidden fields in a form.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;The advantage to a manual login is it gives the customer an opportunity to save their new credentials in their browsers password management feature.&lt;/p&gt;
&lt;p&gt;We wanted to make updating to these improvements as easy as possible and have placed these improvements in v2.3.2 only. Additional bug fixes will soon arrive in v2.3.3, and a PHP 5.4 compatible release will arrive shortly after in v2.4.&lt;/p&gt;
&lt;p&gt;A new &lt;a href="http://forums.oscommerce.com/forum/83-upgrading-from-earlier-versions-v2x-to-v2x/" title="Upgrading from Earlier Versions (v2.x to v2.x)"&gt;discussion channel has been added to the forum&lt;/a&gt; to discuss upgrades from earlier versions.&lt;/p&gt;</description><link>http://www.shinyredapples.com/post/27547441932</link><guid>http://www.shinyredapples.com/post/27547441932</guid><pubDate>Thu, 19 Jul 2012 12:11:50 +0200</pubDate><category>oscom23</category><category>security</category></item><item><title>During the Week..</title><description>&lt;p&gt;Lots has happened during the week! Here is a summary of some of the events:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;UTF-8 issues:&lt;/strong&gt; Laurent discovered that PHP does not report errors in UTF-8 and brings problems to our custom ErrorHandler class which logs errors in an SQLite3 database and is retrieved via JSON. Both SQLite3 and JSON require valid UTF-8 sequences. This problem can arise if PHP reports errors in a foreign language. The bug report is &lt;a title="#259" href="http://forums.oscommerce.com/tracker/issue-259-internal-errors-can-not-be-displayed-in-error-log-module/"&gt;#259&lt;/a&gt;. A solution is still being looked into.&lt;/li&gt;
&lt;li&gt;Some reports of MYSQL_ATTR_INIT_COMMAND being undefined have been submitted. This is a &lt;a title="PHP 5.3.0 bug" href="http://bugs.php.net/bug.php?id=47224"&gt;PHP v5.3.0 bug&lt;/a&gt; that only affects Windows. No work around will be provided so the solution is to upgrade the WAMP solution being used to a version using PHP v5.3.1 or later.&lt;/li&gt;
&lt;li&gt;Our &lt;a href="http://forums.oscommerce.com/tracker/"&gt;Bug Reporter&lt;/a&gt; now has separate categories for OSCOM v2.x and v3.x.&lt;/li&gt;
&lt;li&gt;SessionAbstract now checks if the supplied session ID in GET/POST/COOKIE exists. If it does not exist, it ignores the supplied value and generates a new session ID to use.&lt;/li&gt;
&lt;li&gt;Support for Site Domains will be introduced in v3.0.2, which allows each Site to have its own http server and cookie domain settings. For example, this allows Shop and Admin to be called as:&lt;br/&gt;&lt;br/&gt;&lt;a href="http://shop.oscommerce.com/index.php,"&gt;http://shop.oscommerce.com/index.php,&lt;/a&gt; and&lt;br/&gt;&lt;a href="http://admin.oscommerce.com/index.php"&gt;http://admin.oscommerce.com/index.php&lt;/a&gt; (?Admin is not needed)&lt;br/&gt;&lt;br/&gt;Sites that require cookies to be shared must have proper cookie domain settings (eg, &amp;#8220;.oscommerce.com&amp;#8221;).&lt;br/&gt;&lt;br/&gt;OSCOM::getDefaultSite() now checks against $_SERVER[&amp;#8216;SERVER_NAME&amp;#8217;] to load the appropriate Site and default Site Application.&lt;br/&gt;&lt;br/&gt;OSCOM::getLink() automatically generates correctly formed URLs to Sites with different domains.&lt;/li&gt;
&lt;li&gt;Some reports of OSCOM v3.0 not working with PHP v6.0-dev have been submitted. This is due to an old version of PHP v6.0-dev being used that does not support namespaces. According to &lt;a href="http://lwn.net/Articles/379909/"&gt;this LWN article from March 2010&lt;/a&gt;, work on PHP v6.0-dev has been pushed to a separate branch and is no longer part of the main PHP development path. I downloaded the latest trunk version of PHP from their subversion development repository, compiled it, installed it, ran OSCOM v3.0.1 on it, and can happily report that it works superbly without any errors being reported! The version PHP reported is PHP v5.3.99-dev / Zend v2.4.0 and will be PHP v5.4 once released. This version &lt;a href="http://svn.php.net/viewvc/php/php-src/trunk/NEWS?revision=310080&amp;amp;view=markup"&gt;finally removes deprecated functions and settings&lt;/a&gt; that still exist in PHP v5.3.&lt;/li&gt;
&lt;li&gt;Work on a &lt;a href="http://www.phing.info"&gt;Phing&lt;/a&gt; build script has been started to build, test (PHPUnit), and package (ZIP) OSCOM download releases. Ultimately this will automatically build full download release packages, manual upgrade packages, and CoreUpdate Phar update packages.&lt;/li&gt;
&lt;li&gt;The list of files and source code changes from &lt;a href="https://github.com/osCommerce/oscommerce/compare/v3.0.1...master"&gt;v3.0.1 leading up to v3.0.2 can be viewed here&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;</description><link>http://www.shinyredapples.com/post/4631677948</link><guid>http://www.shinyredapples.com/post/4631677948</guid><pubDate>Fri, 15 Apr 2011 14:26:20 +0200</pubDate><category>oscom30</category></item><item><title>Improving CoreUpdate</title><description>&lt;p&gt;One of the great new features of our framework is the ability to perform upgrades via the Admin Dashboard, where update packages are listed, modified files can be seen, and upgrades can be performed at the click of a button.&lt;/p&gt;

&lt;p&gt;Unfortunately not everyone will get to experience how great this can work with the &lt;a href="http://www.oscommerce.com/about/news,137"&gt;v3.0.1 release&lt;/a&gt; as CoreUpdate in v3.0 can detect incorrect file permissions under certain server environments during an upgrade procedure, and reports back of a successful upgrade when no files were updated at all. This affects you if after the upgrade to v3.0.1, v3.0.1 is still listed as an available update package to upgrade to.&lt;/p&gt;

&lt;p&gt;Those affected can download the manual &lt;a href="http://www.oscommerce.com/solutions/downloads"&gt;v3.0-to-v3.0.1&lt;/a&gt; upgrade package to extract and copy over to their installation via FTP. Although also an easy procedure, this is not the kind of experience we want to share with you when upgrading.&lt;/p&gt;

&lt;p&gt;We&amp;#8217;ve taken this opportunity to improve CoreUpdate in v3.0.1 and are extremely pleased with how it now handles upgrades.&lt;/p&gt;

&lt;p&gt;CoreUpdate utilizes &lt;a href="http://www.php.net/manual/en/intro.phar.php"&gt;Phar&lt;/a&gt; to download signed phar update packages from our server, to list the contents of the update package to show which files are going to be modified, and to extract the files over the installation to perform the upgrade.&lt;/p&gt;

&lt;p&gt;It sounds easy, but when file permissions become an issue, Phar panics and produces a fatal error that can stop further processing of PHP code.&lt;/p&gt;

&lt;p&gt;We&amp;#8217;ve improved CoreUpdate to better handle file permissions and situations where Phar can produce unexpected errors. Instead of just extracting files in an update package to the installation, CoreUpdate now tracks which files are going to be modified, backs those files up, extracts the updated files in place, and if all files have been successfully updated, goes back and deletes the older files no longer necessary. If an unexpected error occurs, CoreUpdate deletes the files that have been extracted and restores the original files automatically reverting to the original state.&lt;/p&gt;

&lt;p&gt;There are a lot of server environments and file permissions CoreUpdate has to handle, and we&amp;#8217;re striving to make it &amp;#8220;just work&amp;#8221; to provide the best user experience as possible.&lt;/p&gt;

&lt;p&gt;CoreUpdate is still in its infancy. We imagine that update packages can first be tried before an actual upgrade is performed, to test and make sure customizations continue to function as normal in a live environment. Phar allows this and we look forward to taking advantage of its full feature set to make this possible.&lt;/p&gt;

&lt;p&gt;We know that feeling of pushing an &amp;#8220;Upgrade&amp;#8221; button and want to turn that fear into a pleasurable moment. We enjoy the challenges working with the strictest levels of error reporting to richen our creativity and produce even better code.&lt;/p&gt;

&lt;p&gt;And we can&amp;#8217;t wait to bring CoreUpdate to Add-Ons!&lt;/p&gt;</description><link>http://www.shinyredapples.com/post/4451959281</link><guid>http://www.shinyredapples.com/post/4451959281</guid><pubDate>Sat, 09 Apr 2011 01:44:02 +0200</pubDate><category>oscom30</category></item><item><title>The New Framework Architecture (Part One: Site! Application! Action!)</title><description>&lt;p&gt;&lt;em&gt;This is the first of a multi-part series documenting the new framework architecture of osCommerce Online Merchant v3.0.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Those that have not been following the development of the new framework will receive quite a shock when they download the osCommerce Online Merchant v3.0 release package and start inspecting its source code. The new OO/MVC design approach will be completey foreign to those accustomed to the procedural style design v2.2 was based on. This is a new ballpark to play in, and it’s open for everyone to participate!&lt;/p&gt;

&lt;p&gt;The first difference that will be seen is the new file and directory structure of the framework, specifically how clean it is. What’s provided is:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;index.php&lt;/li&gt;
&lt;li&gt;public/&lt;/li&gt;
&lt;li&gt;osCommerce/&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;That’s it! The index.php file initiates the framework and the public directory holds site and template related images, stylesheets, javascript, and other assets that must be publicly available. The osCommerce directory is where the source code of the framework resides and is recommended to move to a PHP include directory that is outside of the public html directory serving the website.&lt;/p&gt;

&lt;p&gt;The framework is initialized by the main OSCOM controller located at osCommerce/OM/Core/OSCOM.php. It’s main responsibility is to automatically load Sites, Applications, and Actions depending on the request URL.&lt;/p&gt;

&lt;p&gt;Sites? Applications? Actions?&lt;/p&gt;

&lt;p&gt;These are new modular sections of the framework that build the website. Correction, that build websites. The basis of the framework is flexible to support different kinds of websites, for example, a website content management system, a blog, a forum, etc., and with your help, will be improved on in future releases to support the building of such sites even easier. Our primary focus will remain on e-commerce - we can’t wait to see what the community builds in addition!&lt;/p&gt;

&lt;p&gt;osCommerce Online Merchant v3.0 is built with the following four Sites:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;Shop&lt;/li&gt;
&lt;li&gt;Admin&lt;/li&gt;
&lt;li&gt;RPC&lt;/li&gt;
&lt;li&gt;Setup&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;The Shop Site is the frontend of the shop, the Admin Site is the administrative backend to the shop, the RPC Site manages JSON requests, and the Setup Site installs and configures new installations.&lt;/p&gt;

&lt;p&gt;The first part of the request URL loads the specific Site. For example, the Shop Site would be loaded with the following URL:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://demo.oscommerce.com/index.php?Shop"&gt;http://demo.oscommerce.com/index.php?Shop&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sites are formed by areas packaged as Applications. The Shop Site includes the Account, Checkout, and Products Applications, and are loaded by the second part of the request URL:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://demo.oscommerce.com/index.php?Shop&amp;amp;Account"&gt;http://demo.oscommerce.com/index.php?Shop&amp;amp;Account&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Applications define the default page content to load and can be fine-tuned with Actions. Actions override the default loading page and can execute certain functionality that is loaded by the third part of the request URL. The log in page, which is part of the Account Application, can be loaded with the following URL:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://demo.oscommerce.com/index.php?Shop&amp;amp;Account&amp;amp;LogIn"&gt;http://demo.oscommerce.com/index.php?Shop&amp;amp;Account&amp;amp;LogIn&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Actions are recursive - the processing of the log in page is performed by the following URL:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://demo.oscommerce.com/index.php?Shop&amp;amp;Account&amp;amp;LogIn&amp;amp;Process"&gt;http://demo.oscommerce.com/index.php?Shop&amp;amp;Account&amp;amp;LogIn&amp;amp;Process&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This allows new Sites, Applications, and Actions to be copied to the framework directory which work immediately without the need to edit core source code files.&lt;/p&gt;

&lt;p&gt;The controllers loaded for the above examples are defined in the following file and directory structure:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;osCommerce/OM/Core/Site/Shop/Controller.php
osCommerce/OM/Core/Site/Shop/Application/Account/Controller.php
osCommerce/OM/Core/Site/Shop/Application/Account/Action/LogIn.php
osCommerce/OM/Core/Site/Shop/Application/Account/Action/LogIn/Process.php
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Sites and Applications are self contained. Its required classes are located in its Site and Application directories, and are accessible by other Sites and Applications.&lt;/p&gt;

&lt;p&gt;A default Site is defined in the configuration to load for requested Sites that do not exist, and to shorten the URLs used within the default Site. The default Site for new installations is Shop allowing for the following shortened URL:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://demo.oscommerce.com/index.php?Account&amp;amp;LogIn"&gt;http://demo.oscommerce.com/index.php?Account&amp;amp;LogIn&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This works only for Sites and Applications that do not share the same names. For example, the above URL would load the Account Application and LogIn Action from the Shop Site if no Account Site exists. If an Account Site exists, it would be loaded instead with its LogIn Application.&lt;/p&gt;

&lt;p&gt;Custom modifications to the framework must be performed in the following directory:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;osCommerce/OM/Custom/
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This directory is empty for new installations and follows the same file and directory structure as the osCommerce/OM/Core/ directory. Before files are loaded from the Core directory, a check is performed to see if a matching named file exists in the Custom directory to load instead. This allows for any part of the core framework to be overridden and for the core framework to be easily updated to newer releases without losing custom modifications.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Stay tuned for The New Framework Architecture (Part Two: Namespaces)&lt;/em&gt;&lt;/p&gt;</description><link>http://www.shinyredapples.com/post/4206332256</link><guid>http://www.shinyredapples.com/post/4206332256</guid><pubDate>Wed, 30 Mar 2011 12:28:06 +0200</pubDate><category>oscom30</category></item><item><title>Open Source Rocks!</title><description>&lt;p&gt;We are fortunate to have a unique relationship with our community that is based on trust. This was built on and earned naturally from the very beginning when we first announced ourselves to the world in March 2000. Our user base has grown from a few people to millions worldwide, attracted through curiosity and interest - not by hype or marketing campaigns.&lt;/p&gt;

&lt;p&gt;Attracting such a large amount of interest was possible by releasing our products under the Open Source GNU General Public License and allowing people not only to work with the source code of our products, but to actively participate in discussions and development, and be involved in the direction we were taking.&lt;/p&gt;

&lt;p&gt;We were first called &amp;#8220;The Exchange Project&amp;#8221; to reflect the relationship between sellers and buyers exchanging goods, and to also reflect people participating and exchanging ideas in our community. Our first slogan was &amp;#8220;Community Made Shopping&amp;#8221;.&lt;/p&gt;

&lt;p&gt;We introduced a lot of our community members to PHP and Open Source. Store Owners that had enough of the limitations of point-and-click solutions now had the power to dive into the actual source code of our products and to perform the modifications they required. They shared the same beliefs in exchanging ideas and Open Source, and started to contribute additional features to share with the community.&lt;/p&gt;

&lt;p&gt;There are now over 6,400 Add-Ons that have been contributed by our community members, available for free as Open Source for others to use, modify, and help improve on. That’s over 27,000 uploaded archives with over 48,000,000 lines of code!&lt;/p&gt;

&lt;p&gt;Our Community Rocks!&lt;/p&gt;

&lt;p&gt;Not only has Open Source helped us establish a thriving worldwide community of store owners, developers, and enthusiasts, it has also created opportunities outside our community by spawning many project forks, commercial solutions, and commercial services, and have also inspired and influenced many Open Source and commercial solutions available today.&lt;/p&gt;

&lt;p&gt;The GNU General Public License has served us well for 11 years and with the launch of osCommerce Online Merchant v3.0, is now time to move on and target higher goals.&lt;/p&gt;

&lt;p&gt;We want to take our success with Open Source even further and continue sharing it with you. We want to create even more business possibilities and opportunities for store owners, developers, and our community. We want to spawn even more project forks, commercial solutions, and commercial services that anyone and everyone can profit from.&lt;/p&gt;

&lt;p&gt;We want to be at the core of e-commerce!&lt;/p&gt;

&lt;p&gt;To make this possible, osCommerce Online Merchant v3.0 will be released under the BSD license, completely. All source code including the core framework and modules will be published under the BSD license.&lt;/p&gt;

&lt;p&gt;Sharing all of our hard work, for free, under the BSD license. We are giving you total freedom!&lt;/p&gt;

&lt;p&gt;This will drive innovation and competition further in our eco-system. Community members now have the choice to release their Add-Ons under a BSD compatible license or to continue using the GNU General Public License. Commercial Add-Ons will be accepted later this year through an integrated market place providing the best user experience we can offer.&lt;/p&gt;

&lt;p&gt;We are one of the first general solutions to move to PHP 5.3, and are now also one of the first general solutions to move completely to the BSD license and give you total freedom.&lt;/p&gt;

&lt;p&gt;Open Source Rocks!&lt;/p&gt;</description><link>http://www.shinyredapples.com/post/4066009575</link><guid>http://www.shinyredapples.com/post/4066009575</guid><pubDate>Thu, 24 Mar 2011 18:21:21 +0100</pubDate><category>oscom30</category></item><item><title>Open Source Licenses</title><description>&lt;a href="http://www.redhat.com/magazine/006apr05/features/licenses/"&gt;Open Source Licenses&lt;/a&gt;: &lt;p&gt;So what is this stuff called Open Source about anyway?&lt;/p&gt;

&lt;p&gt;Mark Webbink, Deputy General Counsel for Red Hat, delivers a broad overview of the software licenses around Open Source.&lt;/p&gt;</description><link>http://www.shinyredapples.com/post/4064710307</link><guid>http://www.shinyredapples.com/post/4064710307</guid><pubDate>Thu, 24 Mar 2011 16:48:04 +0100</pubDate></item><item><title>Minimum Requirements Check</title><description>&lt;p&gt;A script is available to check the minimum requirements and settings for osCommerce Online Merchant v3.0 on a PHP enabled webserver.&lt;/p&gt;

&lt;p&gt;To check your server, download the following package from Github, unpack it, copy oscom_check.php to a public html directory on your server, and call it with your browser.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://gist.github.com/gists/881326/download"&gt;&lt;a href="https://gist.github.com/gists/881326/download"&gt;https://gist.github.com/gists/881326/download&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;An example output of the results can be seen at:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://countdown.oscommerce.com/oscom_check.php"&gt;&lt;a href="http://countdown.oscommerce.com/oscom_check.php"&gt;http://countdown.oscommerce.com/oscom_check.php&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;osCommerce Online Merchant v3.0 will successfully run on your server when all required conditions have been met and are shown as green.&lt;/p&gt;</description><link>http://www.shinyredapples.com/post/4024495002</link><guid>http://www.shinyredapples.com/post/4024495002</guid><pubDate>Tue, 22 Mar 2011 16:03:49 +0100</pubDate><category>oscom30</category></item><item><title>Roadmap for 2011</title><description>&lt;p&gt;The biggest milestone in our history will be reached on March 31&amp;#160;2011 with the release of osCommerce Online Merchant v3.0. This is the result of years of hard work, community feedback, and patience! We thank the community and our partners tremendously for their support during this long development phase and look forward to working with you in achieving our goals for 2011.&lt;/p&gt;

&lt;p&gt;Each piece of the puzzle we&amp;#8217;ve blogged about previously has now come together and formed the framework as v3.0. The focus on this release is to provide a solid and flexible base that can be built on with exciting new core framework and user features, and to be easily extended on with Add-Ons.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Our vision&lt;/b&gt; is not to provide one or more full feature packed &amp;#8220;enterprise-ready&amp;#8221; solutions but to provide a solid core framework that can be easily customized and extended on to meet specific requirements.&lt;/p&gt;

&lt;p&gt;The framework has finally reached the stage of being production-ready. The release date of March 31 was set to freeze and clean the API to provide a solid-as-possible framework to start building on. Most of the new exciting user features we had wished for v3.0 will not arrive with the initial release as it would have otherwise delayed the release even longer. &lt;i&gt;We strived for perfection and are now delivering as fantastic.&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Our release strategy&lt;/b&gt; is now changing from delaying releases until a set number of new features are ready for production use, to pushing out new features as soon as they are ready. &lt;i&gt;Features and bug fixes belong in products, not in development repositories!&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;The flexibility of the framework allows us to &lt;i&gt;release early, release often&lt;/i&gt; without conflicting with customizations. Updates are safely applied through the Administration Dashboard after displaying which core files are to be modified. Customizations are performed in a separate namespace that override core framework functionality.&lt;/p&gt;

&lt;p&gt;The level of hard work does not stop on March 31 but will continue strongly throughout April and coming months to push out regular update releases that fix bug reports and introduce user features that did not make it for the v3.0 release.&lt;/p&gt;

&lt;p&gt;April will be an extremely busy and exciting month we can&amp;#8217;t wait for!&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Our versioning scheme&lt;/b&gt; is now improving from no longer publishing Preview, Milestone, Release Candidate, Alpha, or Beta releases but fully supported production-ready releases. Each version number will be in the form of X.Y.Z (eg, 3.0.0) where X is increased for major incompatible releases, Y for minor API changes, and Z for bug fixes and new features that don&amp;#8217;t break compatibility to earlier versions.&lt;/p&gt;

&lt;p&gt;Each API change will be documented for developers to review.&lt;/p&gt;

&lt;p&gt;From April we are going to:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;Be active in the community to help developers understand the framework and store owners its user features&lt;/li&gt;
&lt;li&gt;Update remaining Applications and Modules that were not finalized for the v3.0 release&lt;/li&gt;
&lt;li&gt;Provide a database import tool for existing v2.2RC2, v2.3.1 and v3.0A5 users&lt;/li&gt;
&lt;li&gt;Start a localization site for translators to use and build language translation packages&lt;/li&gt;
&lt;li&gt;Document v3.0 framework and user features&lt;/li&gt;
&lt;li&gt;Finalize MS SQL Server database abstraction queries&lt;/li&gt;
&lt;li&gt;Extend the CoreUpdate Application to also support installed Add-Ons&lt;/li&gt;
&lt;li&gt;Allow Phar packaged Add-Ons to be tested without the need to install them first&lt;/li&gt;
&lt;li&gt;Continually improve existing features and introduce exciting new features&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;In addition we are looking for new talent to help us:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;Improve overall UI design&lt;/li&gt;
&lt;li&gt;Support database servers with our abstracted queries&lt;/li&gt;
&lt;li&gt;Continue to improve the core framework&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;We are looking forward to expanding our team and to improve our products and services. Contact us if we don&amp;#8217;t find you and you&amp;#8217;re passionate about Open Source and E-Commerce!&lt;/p&gt;</description><link>http://www.shinyredapples.com/post/4009821929</link><guid>http://www.shinyredapples.com/post/4009821929</guid><pubDate>Mon, 21 Mar 2011 22:42:44 +0100</pubDate><category>oscom30</category></item><item><title>Countdown to v3.0</title><description>&lt;p&gt;We are extremely proud to countdown to March 31 for the release of osCommerce Online Merchant v3.0 and to cause a disruption in the Open Source and e-commerce community. Our future goals are based on this new foundation that will continually be improved on to meet the demands of tomorrows store owners and developers. We are one of the first general Open Source solutions to move to PHP 5.3 and now stand tall at the front in utilizing todays standards and technologies.&lt;/p&gt;

&lt;p&gt;This is the result of a lot of hard work based on community feedback; not to try and achieve the best feature-packed e-commerce solution in the market but to remain focused on a solid core framework that can be extended by store owners and developers to meet unique requirements. This was a huge success with over 6,400 Add-Ons being provided by the community for the v2 series which we aim to take even further with the next v3 series.&lt;/p&gt;

&lt;p&gt;v3.0 has evolved in multiple phases starting with v2.2 Milestone 3 to v3.0 Alpha 5 resulting with a new solid and flexible core framework. Its long development path ends March 31&amp;#160;2011 reaching a major milestone for osCommerce.&lt;/p&gt;

&lt;p&gt;Stay tuned for exciting articles regarding v3.0 and our future plans that will be published leading up to the release. We thank our community members and partners for their continued support over the past 11 years, and are anxious to keep rocking for the next 11 years and more to come!&lt;/p&gt;

&lt;p&gt;Countdown with us at:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://countdown.oscommerce.com"&gt;http://countdown.oscommerce.com&lt;/a&gt;&lt;/p&gt;</description><link>http://www.shinyredapples.com/post/3855849820</link><guid>http://www.shinyredapples.com/post/3855849820</guid><pubDate>Mon, 14 Mar 2011 16:33:34 +0100</pubDate><category>oscom30</category></item><item><title>Announcing the release date for osCommerce Online Merchant v3.0</title><description>&lt;object id="prezi_hzfvdbmlynni" name="prezi_hzfvdbmlynni" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="400" height="290"&gt;&lt;param name="movie" value="http://prezi.com/bin/preziloader.swf" /&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="bgcolor" value="#ffffff" /&gt;&lt;param name="flashvars" value="prezi_id=hzfvdbmlynni&amp;lock_to_path=0&amp;color=ffffff&amp;autoplay=no&amp;autohide_ctrls=0" /&gt;&lt;embed id="preziEmbed_hzfvdbmlynni" name="preziEmbed_hzfvdbmlynni" src="http://prezi.com/bin/preziloader.swf" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="290" bgcolor="#ffffff" flashvars="prezi_id=hzfvdbmlynni&amp;lock_to_path=0&amp;color=ffffff&amp;autoplay=no&amp;autohide_ctrls=0"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Announcing the release date for osCommerce Online Merchant v3.0&lt;/p&gt;</description><link>http://www.shinyredapples.com/post/3830301703</link><guid>http://www.shinyredapples.com/post/3830301703</guid><pubDate>Sun, 13 Mar 2011 14:26:49 +0100</pubDate><category>oscom30</category></item><item><title>Brian Swan, PHP Developer Advocate at Microsoft, showcases PHP...</title><description>&lt;iframe width="400" height="300" src="http://www.youtube.com/embed/DvNhyk4Bdcw?wmode=transparent&amp;autohide=1&amp;egm=0&amp;hd=1&amp;iv_load_policy=3&amp;modestbranding=1&amp;rel=0&amp;showinfo=0&amp;showsearch=0" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Brian Swan, PHP Developer Advocate at Microsoft, showcases PHP Manager 1.1 for IIS 7.&lt;/p&gt;</description><link>http://www.shinyredapples.com/post/2347145673</link><guid>http://www.shinyredapples.com/post/2347145673</guid><pubDate>Fri, 17 Dec 2010 10:31:13 +0100</pubDate><category>php iis</category></item><item><title>Development Cycle, as Music</title><description>&lt;a href="http://www.youtube.com/watch?v=zRvLb1Ok04U&amp;p=73FEBDB904E8EA24&amp;feature=BF&amp;index=1"&gt;Development Cycle, as Music&lt;/a&gt;: &lt;p&gt;Music to listen to during the development cycle. Release (by Patti Labelle) courtesy of &lt;a href="http://www.matthijs.org"&gt;Matthijs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Know a song that fits in the playlist? Share it! :-)&lt;/p&gt;</description><link>http://www.shinyredapples.com/post/1478939279</link><guid>http://www.shinyredapples.com/post/1478939279</guid><pubDate>Thu, 04 Nov 2010 12:56:07 +0100</pubDate></item><item><title>Thanks to all the birthday wishes! Two self baked cakes that...</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_l89t07axSd1qdssd7o1_500.jpg"/&gt;&lt;br/&gt; Vanilla Pudding Cherry Cake&lt;br/&gt;&lt;br/&gt; &lt;img src="http://25.media.tumblr.com/tumblr_l89t07axSd1qdssd7o2_500.jpg"/&gt;&lt;br/&gt; Cheeeesecake&lt;br/&gt;&lt;br/&gt; &lt;p&gt;Thanks to all the birthday wishes! Two self baked cakes that didn’t survive the family party :-)&lt;/p&gt;</description><link>http://www.shinyredapples.com/post/1069093668</link><guid>http://www.shinyredapples.com/post/1069093668</guid><pubDate>Sun, 05 Sep 2010 12:57:35 +0200</pubDate><category>fun</category></item><item><title>One expensive accessory! via Walyou</title><description>&lt;iframe width="400" height="300" src="http://www.youtube.com/embed/42fsPaAkcag?wmode=transparent&amp;autohide=1&amp;egm=0&amp;hd=1&amp;iv_load_policy=3&amp;modestbranding=1&amp;rel=0&amp;showinfo=0&amp;showsearch=0" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;One expensive accessory! via &lt;a href="http://www.walyou.com/blog/2010/08/23/super-mario-bros-theme-remakes/"&gt;Walyou&lt;/a&gt;&lt;/p&gt;</description><link>http://www.shinyredapples.com/post/1026347545</link><guid>http://www.shinyredapples.com/post/1026347545</guid><pubDate>Sat, 28 Aug 2010 20:25:57 +0200</pubDate><category>fun</category></item><item><title>OSCOM v2.3 Pre-Release Notes</title><description>&lt;p&gt;[Updated on 8th November 2010]&lt;/p&gt;
&lt;p&gt;We stated earlier that the next osCommerce Online Merchant releases would be v2.2 and v3.0 and that we wouldn’t be publishing any more alpha, beta, or release candidate labelled versions. The next v2.2 release was declared as “v2.2final” to finalize the versioning cycle it went through, from “Milestone 1” to “Release Candidate 2a”.&lt;/p&gt;
&lt;p&gt;To better distinguish the final v2.2 release from its earlier versions, the version number will jump to and be released as v2.3.&lt;/p&gt;
&lt;p&gt;The upgrade guide to v2.3 (from “v2.2 Release Candidate 2a”) will be split into the following sections:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Bugfixes&lt;/li&gt;
&lt;li&gt;PHP 5.3 Compatibility Changes&lt;/li&gt;
&lt;li&gt;New Features&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;This makes it easier for store owners and developers to apply the bugfixes to their existing installations, and to choose which new core features they’d like to apply.&lt;/p&gt;
&lt;p&gt;Some of the new features include:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Tokenize forms to customer sessions&lt;/li&gt;
&lt;li&gt;Automatic Administration Tool logins through Basic HTTP Authentication (htpasswd)&lt;/li&gt;
&lt;li&gt;New currencies can be added through a pre-populated list of common currencies&lt;/li&gt;
&lt;li&gt;Modular Action Recorder implementation to limit and log certain functions, including:   
&lt;ul&gt;&lt;li&gt;Administration Tool login attempts&lt;/li&gt;
&lt;li&gt;Tell A Friend e-mails&lt;/li&gt;
&lt;li&gt;Contact Us e-mails&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Security Directory Permissions for the Administration Tool shows which directories are writable&lt;/li&gt;
&lt;li&gt;Version Checker for the Administration Tool to check for new versions&lt;/li&gt;
&lt;li&gt;Store Logo for the Administration Tool to easily upload a new store logo&lt;/li&gt;
&lt;li&gt;Modular Social Bookmarks implementation to share products on social sites, including:   
&lt;ul&gt;&lt;li&gt;Digg&lt;/li&gt;
&lt;li&gt;Facebook and Facebook Like&lt;/li&gt;
&lt;li&gt;Google Buzz&lt;/li&gt;
&lt;li&gt;Twitter and Twitter Button&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Export Server Information for the Administration Tool to help with bug reports&lt;/li&gt;
&lt;li&gt;Allow guest orders through PayPal Express Checkout&lt;/li&gt;
&lt;li&gt;Modular Header Tags implementation, including:   
&lt;ul&gt;&lt;li&gt;Google Analytics and E-Commerce Tracking&lt;/li&gt;
&lt;li&gt;MailChimp E-Commerce 360&lt;/li&gt;
&lt;li&gt;OpenSearch&lt;/li&gt;
&lt;li&gt;Categories (SEO)&lt;/li&gt;
&lt;li&gt;Manufacturers (SEO)&lt;/li&gt;
&lt;li&gt;Products (SEO)&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;HTML layout separated and moved to new template_top.php and template_bottom.php files, including: 
&lt;ul&gt;&lt;li&gt;jQuery UI design&lt;/li&gt;
&lt;li&gt;960 Grid System CSS Framework&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Password hashing algorithm changed to Portable PHP hashing for customer and administrator passwords&lt;/li&gt;
&lt;li&gt;Security Check modules for add-ons to check on server requirements&lt;/li&gt;
&lt;li&gt;Administration Tool Dashboard widgets, including new charts&lt;/li&gt;
&lt;li&gt;Modular Boxes to inject content anywhere in the HTML layout&lt;/li&gt;
&lt;li&gt;Multiple Product Images with large images and HTML content for Flash videos&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;p&gt;The online demonstration site has been updated to showcase the new features of osCommerce Online Merchant v2.3 at:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://demo.oscommerce.com"&gt;&lt;a href="http://demo.oscommerce.com"&gt;http://demo.oscommerce.com&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;osCommerce Online Merchant v2.3 will be released on the 12th November 2010.&lt;/p&gt;
&lt;hr&gt;&lt;p&gt;&lt;em&gt;Interested in the latest developments of osCommerce Online Merchant v3.0? Find out at:&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;a href="http://www.oscommerce.info/confluence/display/OSCOM30"&gt;&lt;a href="http://www.oscommerce.info/confluence/display/OSCOM30"&gt;http://www.oscommerce.info/confluence/display/OSCOM30&lt;/a&gt;&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;</description><link>http://www.shinyredapples.com/post/1025216204</link><guid>http://www.shinyredapples.com/post/1025216204</guid><pubDate>Sat, 28 Aug 2010 15:39:00 +0200</pubDate><category>oscom22</category><category>oscom23</category></item><item><title>Improvements Made to our Blog</title><description>&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_l7r8d0DVGD1qck9g4.gif" border="0" alt="" title="Social Connections" align="right"/&gt;
Our blog has found a new home at Tumblr and now functions as an aggregator, linking to and publishing interesting articles from the osCommerce team and our partners.&lt;/p&gt;

&lt;p&gt;New publications are automatically syndicated to our &lt;a href="http://twitter.com/osCommerce"&gt;Twitter&lt;/a&gt; account and &lt;a href="http://www.facebook.com/pages/osCommerce/33387373079"&gt;Facebook Page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Our blog can be reached at:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.oscommerce.com"&gt;http://blogs.oscommerce.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Aggregating publications allows us to separate our personal publications from the main blog to keep the content interesting to the osCommerce community. Those interested in our personal publications can continue to follow us on our own personal sites and blogs.&lt;/p&gt;</description><link>http://www.shinyredapples.com/post/1013837281</link><guid>http://www.shinyredapples.com/post/1013837281</guid><pubDate>Thu, 26 Aug 2010 13:11:34 +0200</pubDate><category>website</category></item><item><title>OSCOM v3.0 Intelligent Checkout With Product Types</title><description>&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_l7kxxdzRm21qck9g4.jpg" alt="" title="Shopping Cart" width="180" height="130" align="right"/&gt;&lt;/p&gt;

&lt;h4&gt;Checkout Application&lt;/h4&gt;

&lt;p&gt;The number of steps during the checkout procedure has been drastically reduced with the new Checkout Application. The checkout procedure no longer starts at the shipping page but now heads directly to the confirmation page which takes care of all dependencies for the order.&lt;/p&gt;

&lt;p&gt;The new Checkout Application is simply accessed with:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;index.php?Checkout
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;and works exceptionally well with the flexible Product Types implementation to gather all the information required to complete the order.&lt;/p&gt;

&lt;h4&gt;Product Types&lt;/h4&gt;

&lt;p&gt;Each product (or product variant) is assigned a Product Type group which define certain conditions that must be met when a Product Type action is called. Examples of Product Type actions are:&lt;/p&gt;

&lt;p&gt;&lt;u&gt;AddToShoppingCart&lt;/u&gt;&lt;br/&gt;
Called when products are added to the shopping cart&lt;/p&gt;

&lt;p&gt;&lt;u&gt;PerformOrder&lt;/u&gt;&lt;br/&gt;
Called when the Checkout Application is initialized&lt;/p&gt;

&lt;p&gt;Each Product Type action is assigned one or more modular conditions which are checked in the specified order and return either true or false depending on the condition to meet. Failed conditions can optionally execute an onFail() function to help pass the condition. Example conditions are:&lt;/p&gt;

&lt;p&gt;&lt;u&gt;RequireBilling&lt;/u&gt;&lt;br/&gt;
Passes true if a billing address and billing method is available&lt;/p&gt;

&lt;p&gt;&lt;u&gt;RequireShipping&lt;/u&gt;&lt;br/&gt;
Passes true if a shipping address and shipping method is available&lt;/p&gt;

&lt;p&gt;&lt;u&gt;RequireCustomerAccount&lt;/u&gt;&lt;br/&gt;
Passes true if a customer is logged in with their account&lt;/p&gt;

&lt;p&gt;&lt;u&gt;RequireStock&lt;/u&gt;&lt;br/&gt;
Passes true if sufficient stock is available&lt;/p&gt;

&lt;p&gt;Most, if not all, products would need the RequireBilling condition for the PerformOrder action. Physical products for shipping would obviously also need the RequireShipping condition, whereas digital products would not.&lt;/p&gt;

&lt;p&gt;Want to force a customer account for orders? That&amp;#8217;s possible with the RequireCustomerAccount condition. Should customers be logged in to add certain products to their shopping cart? No problem. Simply assign the AddToShoppingCart action and the RequireCustomerAccount condition to its Product Type group. Done.&lt;/p&gt;

&lt;p&gt;Creating new conditions is amazingly simple with developing new modules that check on the conditions to meet.&lt;/p&gt;

&lt;p&gt;Here is how the RequireCustomerAccount condition module is developed:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;?php
  namespace osCommerce\OM\Site\Shop\Module\ProductType;

  use osCommerce\OM\Registry;
  use osCommerce\OM\OSCOM;
  use osCommerce\OM\Site\Shop\Product;

  class RequireCustomerAccount {
    public static function isValid(Product $OSCOM_Product) {
      $OSCOM_Customer = Registry::get('Customer');

      return $OSCOM_Customer-&amp;gt;isLoggedOn();
    }

    public static function onFail(Product $OSCOM_Product) {
      $OSCOM_NavigationHistory = Registry::get('NavigationHistory');

      $OSCOM_NavigationHistory-&amp;gt;setSnapshot();

      osc_redirect(OSCOM::getLink(null, 'Account', 'LogIn', 'SSL'));
    }
  }
?&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Easy.&lt;/p&gt;

&lt;h4&gt;Intelligent Checkout&lt;/h4&gt;

&lt;p&gt;The Checkout Application intelligently gathers the information required to process the order. Both RequiredShipping and RequiredBilling would be common conditions to meet for the PerformOrder action, and would operate with the following workflow:&lt;/p&gt;

&lt;ol&gt;&lt;li&gt;If no shipping address is defined, automatically use the default customer address if one exists or present the new address form.&lt;/li&gt;
&lt;li&gt;Automatically select the cheapest shipping method available for the order.&lt;/li&gt;
&lt;li&gt;If no billing address is defined, use the shipping address.&lt;/li&gt;
&lt;li&gt;Automatically select the first payment method available for the order.&lt;/li&gt;
&lt;li&gt;Present payment method on the confirmation page (eg, credit card details).&lt;/li&gt;
&lt;li&gt;Provide links to change the shipping address, shipping method (eg, Express Shipping), billing address, and payment method on the confirmation page.&lt;/li&gt;
&lt;li&gt;Process the order once confirmed.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;For a customer that is logged in, all information required for the order is already available and is directly taken to the checkout confirmation page. For guests, the minimum checkout flow is 2 steps with the shipping address form and confirmation page.&lt;/p&gt;

&lt;p&gt;There is still plenty of room for improving the user experience as described previously with &lt;a href="http://blogs.oscommerce.com/2009/12/16/london-public-meet-up/"&gt;mockups of how the Checkout Application can function&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We look forward to extending this flexibility in future releases to also properly support services that are sold with recurring billing.&lt;/p&gt;

&lt;h4&gt;Community Feedback&lt;/h4&gt;

&lt;p&gt;Feedback to this blog entry can be posted on the following topic in the community support forums:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://forums.oscommerce.com/topic/358932-oscom-v30-framework-optimized-for-php-v53/"&gt;&lt;a href="http://forums.oscommerce.com/topic/358932-oscom-v30-framework-optimized-for-php-v53/"&gt;http://forums.oscommerce.com/topic/358932-oscom-v30-framework-optimized-for-php-v53/&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://www.shinyredapples.com/post/995067784</link><guid>http://www.shinyredapples.com/post/995067784</guid><pubDate>Mon, 12 Jul 2010 23:33:00 +0200</pubDate><category>oscom30</category></item><item><title>OSCOM v3.0 Application Actions</title><description>&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_l7ky2qbDxQ1qck9g4.jpg" alt="" title="Application Actions" width="180" height="151" align="right"/&gt;&lt;/p&gt;

&lt;h4&gt;What Application Actions Do&lt;/h4&gt;

&lt;p&gt;Application Actions allows functionality to be added to Applications in a flexible manner without needing to edit core source code files. Actions typically define what page content is presented in a given situation and can load nested actions for further processing of data.&lt;/p&gt;

&lt;p&gt;Actions are loaded through the page request in the following manner:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;index.php?Shop&amp;amp;Account&amp;amp;AddressBook
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This initializes the Shop Site, loads the Account Application, and executes the AddressBook Action. The files executed as part of this page request are located in:&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Shop Site&lt;/u&gt;&lt;br/&gt;
osCommerce/OM/Site/Shop/Controller.php&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Account Application&lt;/u&gt;&lt;br/&gt; osCommerce/OM/Site/Shop/Application/Account/Controller.php&lt;/p&gt;

&lt;p&gt;&lt;u&gt;AddressBook Action&lt;/u&gt;&lt;br/&gt;
osCommerce/OM/Site/Shop/Application/Account/Action/AddressBook.php&lt;/p&gt;

&lt;h4&gt;Nested Actions&lt;/h4&gt;

&lt;p&gt;The AddressBook Action only presents the address book page to the customer  and contains no data processing logic whatsoever. As the address book should provide functionality to create, edit, and delete address book entries, these operations are properly handled through nested Actions in the following manner:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;index.php?Shop&amp;amp;Account&amp;amp;AddressBook&amp;amp;Create
index.php?Shop&amp;amp;Account&amp;amp;AddressBook&amp;amp;Create&amp;amp;Process
index.php?Shop&amp;amp;Account&amp;amp;AddressBook&amp;amp;Edit=1
index.php?Shop&amp;amp;Account&amp;amp;AddressBook&amp;amp;Edit=1&amp;amp;Process
index.php?Shop&amp;amp;Account&amp;amp;AddressBook&amp;amp;Delete=1
index.php?Shop&amp;amp;Account&amp;amp;AddressBook&amp;amp;Delete=1&amp;amp;Process
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The files executed as part of these page requests are located in (from the Shop Site directory):&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Create and Process Actions&lt;/u&gt;&lt;br/&gt;
Application/Account/Action/AddressBook/Create.php&lt;br/&gt;
Application/Account/Action/AddressBook/Create/Process.php&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Edit and Process Actions&lt;/u&gt;&lt;br/&gt;
Application/Account/Action/AddressBook/Edit.php&lt;br/&gt;
Application/Account/Action/AddressBook/Edit/Process.php&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Delete and Process Actions&lt;/u&gt;&lt;br/&gt;
Application/Account/Action/AddressBook/Delete.php&lt;br/&gt;
Application/Account/Action/AddressBook/Delete/Process.php&lt;/p&gt;

&lt;h4&gt;Security And Protection&lt;/h4&gt;

&lt;p&gt;All Actions in the page request are executed in order. This allows control logic to be defined in the main Action class and affects nested Actions as they are executed. An  example is having a customer log-in check in the main Action class and not needing to perform the same check in the nested Actions.&lt;/p&gt;

&lt;p&gt;As the dynamic nature of Actions allows great flexibility and ease in adding features and functions to a Sites Application, the order of Actions executed as defined in the page request is halted as soon as an Action does not exist or if the name of the Action is the same as the Session name.&lt;/p&gt;

&lt;p&gt;Nested Actions also take priority over parameters in the page request that share the same name.&lt;/p&gt;

&lt;p&gt;For example, product information pages are loaded in the following manner with the product keyword:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;index.php?Shop&amp;amp;Products&amp;amp;oscommerce-tshirt
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The Products Application has the following Actions which therefore cannot be used as product keywords:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;All&lt;/li&gt;
  &lt;li&gt;Images&lt;/li&gt;
  &lt;li&gt;Reviews&lt;/li&gt;
  &lt;li&gt;Specials&lt;/li&gt;
  &lt;li&gt;TellAFriend&lt;/li&gt;
&lt;/ul&gt;&lt;h4&gt;Community Feedback&lt;/h4&gt;

&lt;p&gt;Feedback to this blog entry can be posted on the following topic in the community support forums:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://forums.oscommerce.com/topic/358932-oscom-v30-framework-optimized-for-php-v53/"&gt;&lt;a href="http://forums.oscommerce.com/topic/358932-oscom-v30-framework-optimized-for-php-v53/"&gt;http://forums.oscommerce.com/topic/358932-oscom-v30-framework-optimized-for-php-v53/&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://www.shinyredapples.com/post/995067667</link><guid>http://www.shinyredapples.com/post/995067667</guid><pubDate>Thu, 08 Jul 2010 12:00:00 +0200</pubDate><category>oscom30</category></item></channel></rss>
