<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.0.9" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>osCommerce Blog</title>
	<link>http://blogs.oscommerce.com</link>
	<description>Open Source E-Commerce Solutions</description>
	<pubDate>Fri, 14 Mar 2008 10:42:37 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.9</generator>
	<language>en</language>
			<item>
		<title>New Community Add-Ons Site</title>
		<link>http://blogs.oscommerce.com/2007/09/22/new-community-add-ons-site/</link>
		<comments>http://blogs.oscommerce.com/2007/09/22/new-community-add-ons-site/#comments</comments>
		<pubDate>Sat, 22 Sep 2007 01:52:25 +0000</pubDate>
		<dc:creator>Harald Ponce de Leon</dc:creator>
		
		<category>osCommerce</category>

		<guid isPermaLink="false">http://blogs.oscommerce.com/2007/09/22/new-community-add-ons-site/</guid>
		<description><![CDATA[The new community add-ons site is now live which aims to replace the current contributions section on the support site by providing additional features to help developers maintain their add-on packages.
The new site will be rolled out in 3 stages with the first stage contemplating the existing contributions section. In addition, community members and developers [...]]]></description>
			<content:encoded><![CDATA[<p>The new community add-ons site is now live which aims to replace the current contributions section on the support site by providing additional features to help developers maintain their add-on packages.</p>
<p>The new site will be rolled out in 3 stages with the first stage contemplating the existing contributions section. In addition, community members and developers can help clean the structure of add-on packages by reporting uploads to be removed.</p>
<p>The following changes are planned for the second and third stages of updating the new site:</p>
<p>2nd Stage Updates:</p>
<ul>
<li>register_globals compatibility flag for 2.2-RC1 and 2.2-Final installations</li>
<li>Maintainers can assign their add-ons as public or private to allow or disallow additional uploads from other community members</li>
<li>If an add-on is private, maintainers can assign other community members as maintainers who are allowed to upload files to the package</li>
</ul>
<p>3rd Stage Updates:</p>
<ul>
<li>Allow maintainers to edit descriptions</li>
<li>Allow maintainers to link their uploads to a forum topic (for support)</li>
<li>Allow maintainers to upload screenshots of the add-on in action</li>
<li>Allow maintainers to link to other add-ons as a &#8220;related&#8221; feature</li>
<li>Allow community members to adopt an inactive add-on</li>
</ul>
<p>The new community add-ons site can be reached at:</p>
<p><a href="http://addons.oscommerce.com">http://addons.oscommerce.com</a></p>
<p>We look forward to rolling out the additional features in the coming weeks and look forward to the additional suggestions the community has for improving the experience of finding, downloading, and contributing additional add-on packages.
</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.oscommerce.com/2007/09/22/new-community-add-ons-site/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Introducing Product Attributes</title>
		<link>http://blogs.oscommerce.com/2007/09/03/introducing-product-attributes/</link>
		<comments>http://blogs.oscommerce.com/2007/09/03/introducing-product-attributes/#comments</comments>
		<pubDate>Mon, 03 Sep 2007 21:16:36 +0000</pubDate>
		<dc:creator>Harald Ponce de Leon</dc:creator>
		
		<category>osCommerce</category>

		<guid isPermaLink="false">http://blogs.oscommerce.com/2007/09/03/introducing-product-attributes/</guid>
		<description><![CDATA[Although the product attributes implementation has been replaced with the newer Product Variants feature, a new feature of the same title is being introduced to 3.0 Alpha 5 which deals with non-core related product data with a flexible and modular implementation.
This allows modules to be created to define new data parameters for a product which [...]]]></description>
			<content:encoded><![CDATA[<p>Although the product attributes implementation has been replaced with the newer Product Variants feature, a new feature of the same title is being introduced to 3.0 Alpha 5 which deals with non-core related product data with a flexible and modular implementation.</p>
<p>This allows modules to be created to define new data parameters for a product which can easily be accessed via its module code.</p>
<p>Once a product attribute module has been installed via the Administration Tool (in the same manner payment and shipping modules are installed), its field is automatically added to the edit product page where the module controls the presentation of having its value defined.</p>
<p>This allows add-ons to be installed that add data fields to the product without the need to modify the edit product page in order to save the data in the database.</p>
<p>A minor change to the database class has also been performed to automatically bind the database table names in SQL queries which allows any database table to be accessed without the need to define it first in the includes/database_tables.php file. (This file will be removed in the 3.0 release)</p>
<p>Here is a short QuickTime movie showing the new Product Attributes feature with the following attribute modules:</p>
<p>1) Date Available (javascript controlled input field)<br />
2) Manufacturer (pull down menu)<br />
3) Shipping Availability (pull down menu)</p>
<p align="center"><a id="p208" href="http://blogs.oscommerce.com/wp-content/uploads/2007/09/osc30a5attributes.mov"><img id="image209" src="http://blogs.oscommerce.com/wp-content/uploads/2007/09/osc30a5attributes.jpg" alt="osCommerce Online Merchant Product Attributes QuickTime Movie" /></a><br /><b><i>osCommerce Online Merchant Product Attributes QuickTime Movie; 1.1MB</i></b></p>
<p>The product information page on the store front-end has also been updated to allow the dynamic product variant combination values to control certain data on the page, such as the product price and the product model.</p>
<p align="center"><img id="image210" src="http://blogs.oscommerce.com/wp-content/uploads/2007/09/osc30a5productinfo.jpg" alt="osCommerce Online Merchant Product Info Page" /><br /><b><i>osCommerce Online Merchant Product Info Page</i></b></p>
<p>The introduction of the new Product Attributes feature is currently defined for master products only, which product variants will use, and will be definable at the product variants level once the edit product page has been redesigned to handle the presentation of the data.
</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.oscommerce.com/2007/09/03/introducing-product-attributes/feed/</wfw:commentRss>
<enclosure url='http://blogs.oscommerce.com/wp-content/uploads/2007/09/osc30a5attributes.mov' length='1136902' type='video/quicktime'/>
		</item>
		<item>
		<title>Product Variants and Custom Values</title>
		<link>http://blogs.oscommerce.com/2007/08/30/product-variants-and-custom-values/</link>
		<comments>http://blogs.oscommerce.com/2007/08/30/product-variants-and-custom-values/#comments</comments>
		<pubDate>Wed, 29 Aug 2007 23:30:51 +0000</pubDate>
		<dc:creator>Harald Ponce de Leon</dc:creator>
		
		<category>osCommerce</category>

		<guid isPermaLink="false">http://blogs.oscommerce.com/2007/08/30/product-variants-and-custom-values/</guid>
		<description><![CDATA[The new Product Variants feature has been extended to allow custom variant values which customers can define themselves. Common use of custom variant values is accepting text to apply to the product, for example, Apple providing engravements on their iPod multimedia devices, and clothing stores that print custom text on the front and back of [...]]]></description>
			<content:encoded><![CDATA[<p>The new Product Variants feature has been extended to allow custom variant values which customers can define themselves. Common use of custom variant values is accepting text to apply to the product, for example, Apple providing engravements on their iPod multimedia devices, and clothing stores that print custom text on the front and back of t-shirts.</p>
<p>Here is a short QuickTime movie showing how product variants are created for a t-shirt product, and extended on by providing custom variant values:</p>
<p align="center"><a id="p203" href="http://blogs.oscommerce.com/wp-content/uploads/2007/08/osc30a5-variants2.mov"><img id="image198" src="http://blogs.oscommerce.com/wp-content/uploads/2007/08/picture-1.gif" alt="osCommerce Online Merchant Product Variants QuickTime Movie" /></a><br /><b><i>osCommerce Online Merchant Product Variants QuickTime Movie; 3.7MB</i></b></p>
<p>The primary change to support custom variant values went into the shopping cart class where it referenced each product in the shopping cart via its product ID. This brought in a limitation where it was not possible for a customer to add a t-shirt with different custom text values to their shopping cart incase they wanted to order the same t-shirt multiple times with different texts.</p>
<p>To allow this behaviour, each product in the shopping cart is now referenced by an automatically generated, customer specific, item ID where it is possible to order multiple quantities of a product, and now possible to order a product multiple times with different custom variant values.</p>
<p align="center"><img id="image206" src="http://blogs.oscommerce.com/wp-content/uploads/2007/08/product_info.gif" alt="osCommerce Online Merchant Product Info Page" /><br /><b><i>osCommerce Online Merchant Product Info Page</i></b></p>
<p>It is now possible to mark a product variant as the default product variant on the Administration Tool to have default values already selected on the product information page. This shows above with the &#8220;Size&#8221; pull down selection list and the &#8220;Colour&#8221; radio button choices.</p>
<p>As this product accepts custom values, each time it is added to the shopping cart it is treated as a separate product in the shopping cart contents. This allows the product to be added multiple times with the same variant combination values but with different custom text values.</p>
<p align="center"><img id="image207" src="http://blogs.oscommerce.com/wp-content/uploads/2007/08/shopping_cart.gif" alt="osCommerce Online Merchant Shopping Cart Page" /><br /><b><i>osCommerce Online Merchant Shopping Cart Page</i></b></p>
<p>This behaviour only applies to products with custom variant values where adding a normal standard product to the shopping cart multiple times would increment its quantity value.</p>
<p>The parsing of the product variant combinations are performed by modules assigned to the variant group, which can easily extend the behaviour of product variants to suit ones needs. This modular implementation has also introduced our first PHP 5 optimized <a href="http://www.php.net/manual/en/language.oop5.abstract.php" target="_blank">abstract class</a> which forces modules to follow an operation standard.</p>
<p>To further extend the Product Variants feature, we will also be looking at making it possible for customers to upload files when adding products to their shopping cart. This builds on the custom text possibility for t-shirts where logos and images can be attached to an order. The next set of changes will finalize the implementation for the 3.0 Alpha 5 release and be committed to /trunk/, with the file upload extension being looked into for the 3.0 Alpha 6 release.
</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.oscommerce.com/2007/08/30/product-variants-and-custom-values/feed/</wfw:commentRss>
<enclosure url='http://blogs.oscommerce.com/wp-content/uploads/2007/08/osc30a5-variants2.mov' length='3854330' type='video/quicktime'/>
		</item>
		<item>
		<title>Introducing Product Variants</title>
		<link>http://blogs.oscommerce.com/2007/08/21/introducing-product-variants/</link>
		<comments>http://blogs.oscommerce.com/2007/08/21/introducing-product-variants/#comments</comments>
		<pubDate>Mon, 20 Aug 2007 23:14:20 +0000</pubDate>
		<dc:creator>Harald Ponce de Leon</dc:creator>
		
		<category>osCommerce</category>

		<guid isPermaLink="false">http://blogs.oscommerce.com/2007/08/21/introducing-product-variants/</guid>
		<description><![CDATA[The Product Attributes implementation for the 3.0 Alpha 5 release is being replaced with a new cleaner and flexible solution called Product Variants. This extends the previous Product Attributes feature by creating separate product records for each variant and assigning them to one master product.
This allows the quantity, price, model, weight, status, and other product [...]]]></description>
			<content:encoded><![CDATA[<p>The Product Attributes implementation for the 3.0 Alpha 5 release is being replaced with a new cleaner and flexible solution called Product Variants. This extends the previous Product Attributes feature by creating separate product records for each variant and assigning them to one master product.</p>
<p>This allows the quantity, price, model, weight, status, and other product data information to be assigned distinctively to each variant a product has. As each variant has its own product record, referencing a product with a specific variant combination is easily performed with the product ID.</p>
<p>This is an extreme improvement over the previous implementation where specific attribute combinations were referenced with a string value containing the product ID and the various attribute group and attribute value IDs (eg, 14{2}14{5}256).</p>
<p>Here is a short QuickTime movie demonstrating how Product Variants are defined on the Administration Tool and how they are handled on the Online Store:</p>
<p align="center"><a id="p197" href="http://blogs.oscommerce.com/wp-content/uploads/2007/08/osc30a5-variants.mov"><img id="image198" src="http://blogs.oscommerce.com/wp-content/uploads/2007/08/picture-1.gif" alt="osCommerce Online Merchant Product Variants QuickTime Movie" /></a><br /><b><i>osCommerce Online Merchant Product Variants QuickTime Movie; 1.6MB</i></b></p>
<p>The Administration Tool product listing identifies products containing variants and graphically distinguishes the records to normal product records:</p>
<p align="center"><img id="image200" src="http://blogs.oscommerce.com/wp-content/uploads/2007/08/picture-2.gif" alt="osCommerce Online Merchant Administration Tool Product Listing" /><br /><b><i>osCommerce Online Merchant Administration Tool Product Listing</i></b></p>
<p>The price range for the product variants (the minimum and maximum prices) are shown in the product listing as well as the number of total quantities the master product has.</p>
<p>Defining variants for a product can be performed by clicking on an &#8220;Add Variant&#8221; action button and by double clicking on the variant values to add:</p>
<p align="center"><img id="image201" src="http://blogs.oscommerce.com/wp-content/uploads/2007/08/picture-3.gif" alt="osCommerce Online Merchant Administration Tool Product Variants" /><br /><b><i>osCommerce Online Merchant Administration Tool Product Variants</i></b></p>
<p>The product variant combinations are held within javascript values and are first saved (or deleted) when saving the product record.</p>
<p>The Online Store also distinguishes between normal products and products with variants by showing either the full product price for normal products, or the minimum price for products with variations:</p>
<p align="center"><img id="image202" src="http://blogs.oscommerce.com/wp-content/uploads/2007/08/picture-4.gif" alt="osCommerce Online Merchant Product Variant Pricing" /><br /><b><i>osCommerce Online Merchant Product Variant Pricing</i></b></p>
<p>The Product Variants feature has been freshly committed to my subversion development branch and will be merged to trunk as soon as the implementation is finalized. The interaction with product variants on the product information page is being finalized and will be showcased later this week with another blogging entry.</p>
<p>If you&#8217;re keeping up to date with my development branch, please take a look at the changes and provide feedback on the community forums. Thanks!
</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.oscommerce.com/2007/08/21/introducing-product-variants/feed/</wfw:commentRss>
<enclosure url='http://blogs.oscommerce.com/wp-content/uploads/2007/08/osc30a5-variants.mov' length='1630225' type='video/quicktime'/>
		</item>
		<item>
		<title>Optimizing for PHP 5; Object Visibility</title>
		<link>http://blogs.oscommerce.com/2007/07/20/optimizing-for-php-5-object-visibility/</link>
		<comments>http://blogs.oscommerce.com/2007/07/20/optimizing-for-php-5-object-visibility/#comments</comments>
		<pubDate>Fri, 20 Jul 2007 16:45:44 +0000</pubDate>
		<dc:creator>Harald Ponce de Leon</dc:creator>
		
		<category>osCommerce</category>

		<category>PHP</category>

		<guid isPermaLink="false">http://blogs.oscommerce.com/2007/07/20/optimizing-for-php-5-object-visibility/</guid>
		<description><![CDATA[With our recent announcement of optimizing the osCommerce Online Merchant v3.0 release for PHP 5, I will begin blogging about the changes performed here for the v3.0 Alpha 5 and v3.0 Alpha 6 releases to serve as a guide for our community developers. This should help in understanding how the v3.0 framework is designed and [...]]]></description>
			<content:encoded><![CDATA[<p>With our recent announcement of <a href="http://www.oscommerce.com/about/news,128">optimizing the osCommerce Online Merchant v3.0 release for PHP 5</a>, I will begin blogging about the changes performed here for the v3.0 Alpha 5 and v3.0 Alpha 6 releases to serve as a guide for our community developers. This should help in understanding how the v3.0 framework is designed and how add-ons can take advantage of the optimized framework.</p>
<p><a href="http://www.gophp5.org" target="_blank"><img id="image195" src="http://blogs.oscommerce.com/wp-content/uploads/2007/07/gophp5-100x33.png" alt="gophp5-100x33.png" align="right" hspace="5" vspace="5" /></a>Our decision to optimize the v3.0 framework for PHP 5 is based on the <a href="http://www.php.net/index.php#2007-07-13-1" target="_blank">end of life support cycle for PHP 4</a> which ends at the end of this year. The announcement the PHP Group made regarding this coincides with the efforts of the <a href="http://www.gophp5.org" target="_blank">GoPHP5</a> initiative whom which we are also supporting.</p>
<p>This allows us to concentrate on a PHP 5 optimized framework for future releases in the v3.x release series without the need to spend resources on PHP 4 compatibility past its end of life cycle.</p>
<p>The first PHP 5 optimized commits have already been performed in our development repository which reflects the classes and Object Oriented design of the framework. The new Object Model of PHP 5 allows us to tighten the design of the framework with the use of &#8220;object visibility&#8221;, and will be the first step in optimizing the framework for PHP 5.</p>
<p>Object visibility is in regard to defining class members and methods into three different visibility levels: public, protected, and private, which reflect how they can be accessed from outside the class, within the class, and within its inherited children.</p>
<p>The three levels function as:</p>
<p><b>public</b> - this element can be accessed from inside and outside the class object<br />
<b>protected</b> - this element can be accessed from inside the class object and its inherited children<br />
<b>private</b> - this element can only be accessed from inside the class object</p>
<p>We&#8217;ll take a look at a shortened version of the session class to describe how each three visibility levels work.</p>
<p><code>&lt;?php<br />
&nbsp;&nbsp;class osC_Session {<br />
&nbsp;&nbsp;&nbsp;&nbsp;protected $_id = null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;protected $_name = &#039;osCsid&#039;;<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;public function __construct($name = null) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;setName($name);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;_setCookieParameters(SERVICE_SESSION_EXPIRATION_TIME);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;public function getID() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $this-&gt;_id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;public function getName() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $this-&gt;_name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;public function setName($name) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session_name($name);<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;_name = session_name();<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;protected function _setCookieParameters($lifetime = 0, $path = null, $domain = null, $secure = false, $httponly = false) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return session_set_cookie_params($lifetime, $path, $domain, $secure, $httponly);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
?&gt;</code></p>
<p>The class members $_id and $_name are both protected and allow only to be accessed from within the class and its inherited children. This disallows accessing these members from outside the class as shown in the following example:</p>
<p><code>&lt;?php<br />
&nbsp;&nbsp;$osC_Session = new osC_Session();<br />
&nbsp;<br />
&nbsp;&nbsp;echo $osC_Session-&gt;_id; // not allowed<br />
&nbsp;&nbsp;$osC_Session-&gt;_name = &#039;test&#039;; // not allowed<br />
?&gt;</code></p>
<p>To allow access to these members from outside the class they must be defined with the public visibility level. As we don&#8217;t allow this as part of our coding standards, get and set methods are defined in the class that allow public access to the class members, as shown in the following example:</p>
<p><code>&lt;?php<br />
&nbsp;&nbsp;$osC_Session = new osC_Session();<br />
&nbsp;<br />
&nbsp;&nbsp;echo $osC_Session-&gt;getID(); // allowed<br />
&nbsp;&nbsp;$osC_Session-&gt;setName(&#039;test&#039;); // allowed<br />
?&gt;</code></p>
<p>Accessing the getID() and setName() class methods from outside the class object is allowed as these have been defined with the public visibility level.</p>
<p>On the other hand, the _setCookieParameters() class method is defined with a protected visibility level and cannot be accessed from outside the class object. The _setCookieParameters() class method can therefore only be accessed from within the class and its inherited children, as is being done in the class constructor.</p>
<p>The session implementation in v3.0 (Alpha 5) has been impoved to allow modules to be loaded that define how the storage of the session data is accessed. An example session module is the database module that stores the session data in the database. Each session module is an extension to the osC_Session class and therefore inherits its class members and methods.</p>
<p>This allows the database session module, named osC_Session_database, to access the public and protected class members and methods from the main osC_Session class.</p>
<p>If there were class members and methods defined in the osC_Session class with the private visibility level, its inherited children such as the osC_Session_database class would not be allowed to access it.</p>
<p>The default behaviour in PHP 4 is to allow full public access to all class members and methods. By using the visibility levels PHP 5 provides, it is possible to disallow public access to class members and methods to keep certain functionality for internal use by the framework only.</p>
<p>Further information regarding object visibility levels can be read at the <a href="http://www.php.net/manual/en/language.oop5.visibility.php" target="_blank">PHP Manual</a>.</p>
<p>As each class is being updated in the framework, phpDocumentation is also being written to provide a developers API guide with the v3.0 release, that describes each class member and method. This documentation will be completed during v3.0 Alpha 5 and v3.0 Alpha 6.
</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.oscommerce.com/2007/07/20/optimizing-for-php-5-object-visibility/feed/</wfw:commentRss>
		</item>
		<item>
		<title>New Forum Server</title>
		<link>http://blogs.oscommerce.com/2007/05/14/new-forum-server/</link>
		<comments>http://blogs.oscommerce.com/2007/05/14/new-forum-server/#comments</comments>
		<pubDate>Mon, 14 May 2007 19:59:22 +0000</pubDate>
		<dc:creator>Harald Ponce de Leon</dc:creator>
		
		<category>osCommerce</category>

		<guid isPermaLink="false">http://blogs.oscommerce.com/2007/05/14/new-forum-server/</guid>
		<description><![CDATA[I&#8217;m glad to report that the forum has successfully migrated to a new server. The move started last week on Friday which left the forum in a read-only state that led into the weekend. This was required to keep the database consistent while the DNS changes were taking place, and to make sure the new [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m glad to report that the forum has successfully migrated to a new server. The move started last week on Friday which left the forum in a read-only state that led into the weekend. This was required to keep the database consistent while the DNS changes were taking place, and to make sure the new server could handle the load properly incase it had to go back to the old server.</p>
<p>The read-only state was removed on Saturday where logins, new registrations, and postings were being accepted again, and has so far been running fine.
</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.oscommerce.com/2007/05/14/new-forum-server/feed/</wfw:commentRss>
		</item>
		<item>
		<title>History Lesson: register_globals In osCommerce 2.2</title>
		<link>http://blogs.oscommerce.com/2007/04/25/history-lesson-register_globals-in-oscommerce-22/</link>
		<comments>http://blogs.oscommerce.com/2007/04/25/history-lesson-register_globals-in-oscommerce-22/#comments</comments>
		<pubDate>Wed, 25 Apr 2007 16:55:18 +0000</pubDate>
		<dc:creator>Harald Ponce de Leon</dc:creator>
		
		<category>osCommerce</category>

		<guid isPermaLink="false">http://blogs.oscommerce.com/2007/04/25/history-lesson-register_globals-in-oscommerce-22/</guid>
		<description><![CDATA[Although our development priorities are with finalizing the 3.0 release, a final 2.2 release will also be made prior or simultaneously with the 3.0 release. This will move the 2.2 Milestone 2 release into a final 2.2 release with a small number of known bug fixes, and will close the 2.x release line.
No major features [...]]]></description>
			<content:encoded><![CDATA[<p>Although our development priorities are with finalizing the 3.0 release, a final 2.2 release will also be made prior or simultaneously with the 3.0 release. This will move the 2.2 Milestone 2 release into a final 2.2 release with a small number of known bug fixes, and will close the 2.x release line.</p>
<p>No major features will be introduced into 2.2 as any framework enhancements would break compatibility with add-on contribution packages, and any feature missing is likely to be found with over <a href="http://www.oscommerce.com/community/contributions">4,000 add-ons</a> currently available.</p>
<p>One core framework change that will be introduced with 2.2 is a compatibility layer for servers with register_globals disabled. Currently 2.2 Milestone 2 demands that register_globals be enabled otherwise it refuses to continue working.</p>
<p>The register_globals requirement has always existed since the beginning with The Exchange Project Preview Release 1.0 (March 2000) as at this time PHP 3 was used commonly in conjunction with <a href="http://phplib.sourceforge.net" target="_blank">PHPlib</a> (for session management) and the release of PHP 4.0 was being anticipated with the new Zend engine and native session management support.</p>
<p><i><b>Trivia:</b> The Exchange Project Preview Release 1.0 only supported PHP 4 at the time due to the native PHP session management functionality it introduced. It was not until June 2000 that PHP 3 support was added with using PHPlib for its session management functionality, with the release of an &#8220;extra pack&#8221; for The Exchange Project Preview Release 1.1. Support for PHP 3 at the core level was introduced with The Exchange Project Preview Release 2.0 in December 2000.</i></p>
<p>The programming standards since The Exchange Project 1.0 to osCommerce 2.2 Milestone 2 have used proper variable scope usage for the $HTTP_GET_VARS ($_GET) and $HTTP_POST_VARS ($_POST) variables. As security and register_globals were non-issues back in the day, the main reason for using correct variable scope usage here were to <a href="http://blogs.oscommerce.com/wp-content/uploads/2007/04/variable_scope.gif" target="_blank">inform developers which scope the variables were being accessed from</a>. The only variables not used in its correct scope were the session variables which were accessed at the global scope (hello $HTTP_STATE_VARS), and was programmed in mind with register_globals being enabled (which it was by default until PHP 4.2.0 (April 2002)).</p>
<p>Although register_globals needed to be enabled, it was not until <a href="http://cvs.oscommerce.com/viewcvs.cgi/catalog/catalog/includes/application_top.php.diff?r1=1.236&#038;r2=1.237" target="_blank">June 2002</a> that it was forced upon in osCommerce 2.2 Milestone 1 (February 2003) with an evil exit() message if it was disabled, as a means to reduce the number of bug reports made with PHP 4.2.0+ installations. This was seen as a temporary measure at the time to have a proper register_globals compatible solution before the 2.2 release was finalized.</p>
<p>The requirement for register_globals was fixed with a proper solution in <a href="http://cvs.oscommerce.com/viewcvs.cgi/catalog/catalog/includes/application_top.php.diff?r1=1.280&#038;r2=1.281" target="_blank">July 2003</a> during the development of osCommerce 2.2 Milestone 3. As this was just one of the major incompatibilities to osCommerce 2.2 Milestone 2 it was later decided to completely break compatibility for further improvements and continue onwards to a 3.0 release.</p>
<p>Due to the long development period for 2.2 Milestone 3 / 3.0, it unfortunately kept the register_globals requirement active on the 2.2 Milestone 2 release during this time and will be finally fixed for the final 2.2 release. The fix is covered by a compatibility layer and can only be active on PHP 4.3+ installations. This is to keep compatibility with the add-ons available where advancements to PHP that are used for the compatibility layer are available since 4.3.0. It is not possible to implement a fix for lower PHP versions without breaking compatibility with the available add-ons.</p>
<p>This allows 2.2 to be still used on servers running PHP 3+, PHP 4+, and PHP 5+ with register_globals enabled, and optionally on PHP 4.3+ and PHP 5+ with register_globals disabled.  This makes the 2.2 release more interesting even though it is an old release simply because it is a widely used, community supported (4,000+ add-ons!), mature, and secure solution that is  a viable alternative to the next generation 3.0 version once it is finalized and released.</p>
<p>The changes for existing installations can be seen here:</p>
<p><a href="http://svn.oscommerce.com/fisheye/changelog/osCommerce/?cs=1583">http://svn.oscommerce.com/fisheye/changelog/osCommerce/?cs=1583</a><br />
<a href="http://svn.oscommerce.com/fisheye/changelog/osCommerce/?cs=1584">http://svn.oscommerce.com/fisheye/changelog/osCommerce/?cs=1584</a></p>
<p>register_globals has lived the past few years with a bad reputation simply due to bad programming or learning from examples at a time where security was not an issue as it is today. The osCommerce 2.2 Milestone 2 release was a big step towards a secure codebase  and has not been affected by register_globals vulnerabilities that other PHP solutions have been affected by, even that it requires it to be enabled.</p>
<p>osCommerce 3.0 will work on servers with register_globals enabled or disabled, and disables it at run-time if it is enabled. This is to pass secure coding standards onto developers for the add-ons they develop and make available, and is in preparation for future releases when <a href="http://www.php.net/~derick/meeting-notes.html#register-globals" target="_blank">register_globals is removed from PHP 6.0</a>.
</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.oscommerce.com/2007/04/25/history-lesson-register_globals-in-oscommerce-22/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Who&#8217;s Online and the Administrator Log</title>
		<link>http://blogs.oscommerce.com/2007/03/30/whos-online-and-the-administrator-log/</link>
		<comments>http://blogs.oscommerce.com/2007/03/30/whos-online-and-the-administrator-log/#comments</comments>
		<pubDate>Thu, 29 Mar 2007 23:34:34 +0000</pubDate>
		<dc:creator>Harald Ponce de Leon</dc:creator>
		
		<category>osCommerce</category>

		<guid isPermaLink="false">http://blogs.oscommerce.com/2007/03/30/whos-online-and-the-administrator-log/</guid>
		<description><![CDATA[We&#8217;re looking at releasing osCommerce 3.0 Alpha 4 tonight (Friday 30th March CEST). Although the roadmap entries for this release were finalized a while ago, some standard updates were performed on the framework to get both the Administration Tool and Catalog sides on par with each other. This left our Lebkuchen somewhat longer in the [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;re looking at releasing osCommerce 3.0 Alpha 4 tonight (Friday 30th March CEST). Although the roadmap entries for this release were finalized a while ago, some standard updates were performed on the framework to get both the Administration Tool and Catalog sides on par with each other. This left our Lebkuchen somewhat longer in the oven than planned but man does it taste and look real good now <img src='http://blogs.oscommerce.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>One of the last pieces of work that was developed for this release was the migration of the Administration Tool language definitions to the new ini style format that was introduced for the installation routine. This was done in preparation for the HTML E-Mails roadmap entry for 3.0 Alpha 5 where e-mails can be sent out in the language the customer has selected. By moving to the ini style format for the language definitions, it allows us to overwrite definitions with another language set at run-time which was not previously possible with the use of PHP constants.</p>
<p>Getting this work in now for the 3.0 Alpha 4 release gives it a greater audience for aggressive testing rather than leaving it for the 3.0 Alpha 5 release.</p>
<p>The 3.0 Alpha 4 release is also a great starting point for developers to start getting familiar with in regards to creating add-ons for it. Although there are still framework changes planned that will make the add-ons incompatible with the final 3.0 release, we hope to receive a lot of feedback from developers with how their experience with the release went, and how to further improve the framework to make it even easier to integrate add-ons for the final 3.0 release.</p>
<p>To kill time in waiting for the release to occur here are two movies demonstrating the Who&#8217;s Online page with the MaxMind GeoIP Country Lite module activated, and a second movie demonstrating the new Administrator Log section, customer address book administration page, and batch job capabilities.</p>
<p><a id="p184" href="http://blogs.oscommerce.com/wp-content/uploads/2007/03/whos_online.mov" title="Who's Online">Who&#8217;s Online Movie</a></p>
<p>Thanks to the MaxMind GeoIP Country Lite module, it is now possible to see the country flag as icons beside each customer entry, as well as additional information to the IP address which is GeoIP module dependent.</p>
<p>It&#8217;s also now possible to delete active customer sessions via the Who&#8217;s Online page. Although such functionality is available, it must obviously be used with extreme care.</p>
<p><a id="p185" href="http://blogs.oscommerce.com/wp-content/uploads/2007/03/administrator_log.mov">Administrator Log Movie</a></p>
<p>The visual representation of customers is also improved by showing gender specific icons next to each customer and address book entry. This makes it easier to address the customer correctly when contacting them directly.</p>
<p>The introduction of the Administrator Log feature shows what database modifications were performed by which administrator. The logging information helps when a mistake was made and can be backtraced to who made the change and when. Administrators that have access to this section only see the entries to the sections they themselves have access to, and can be filtered together with a specific administrator.</p>
<p>The different coloured backgrounds for the Administrator Log entries mean the following:</p>
<ul>
<li>Green: inserted database field</li>
<li>Orange: modified database field</li>
<li>Red: deleted database field</li>
</ul>
<p>The introduction of the Batch Job Capabilities feature brings in new checkboxes to the table listings on each Administration Tool section where actions can be performed on many entries at once. Newer actions such as exporting will be introduced in the next alpha development releases.
</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.oscommerce.com/2007/03/30/whos-online-and-the-administrator-log/feed/</wfw:commentRss>
<enclosure url='http://blogs.oscommerce.com/wp-content/uploads/2007/03/whos_online.mov' length='275712' type='video/quicktime'/>
<enclosure url='http://blogs.oscommerce.com/wp-content/uploads/2007/03/administrator_log.mov' length='1228249' type='video/quicktime'/>
		</item>
		<item>
		<title>The Lebkuchen Is Still In The Oven</title>
		<link>http://blogs.oscommerce.com/2007/03/06/the-lebkuchen-is-still-in-the-oven/</link>
		<comments>http://blogs.oscommerce.com/2007/03/06/the-lebkuchen-is-still-in-the-oven/#comments</comments>
		<pubDate>Tue, 06 Mar 2007 00:34:32 +0000</pubDate>
		<dc:creator>Harald Ponce de Leon</dc:creator>
		
		<category>osCommerce</category>

		<guid isPermaLink="false">http://blogs.oscommerce.com/2007/03/06/the-lebkuchen-is-still-in-the-oven/</guid>
		<description><![CDATA[The core roadmap entries for the 3.0 Alpha 4 release have been finalized today in trunk on the development repository. There is still some cleaning up to do and some tickets to still take care of, which means a public release of 3.0 Alpha 4 is just around the corner.
As most of the changes in [...]]]></description>
			<content:encoded><![CDATA[<p>The core roadmap entries for the 3.0 Alpha 4 release have been finalized today in trunk on the development repository. There is still some cleaning up to do and some tickets to still take care of, which means a public release of 3.0 Alpha 4 is just around the corner.</p>
<p>As most of the changes in the 3.0 Alpha 4 release are with framework improvements, the coolest feature that can be seen is the new Administrators Log section on the Administration Tool. This section displays all database modifications performed on the Administration Tool and can be used with a simple call to the database class:</p>
<p><code>$Query = $osC_Database-&gt;query(&#039;update :table_customers set customers_firstname = :customers_firstname where customers_id = :customers_id&#039;);<br />
$Query-&gt;bindTable(&#039;:table_customers&#039;, TABLE_CUSTOMERS);<br />
$Query-&gt;bindValue(&#039;:customers_firstname&#039;, &#039;Joe&#039;);<br />
$Query-&gt;bindInt(&#039;:customers_id&#039;, 1);<br />
$Query-&gt;setLogging(&#039;customers&#039;, 1);<br />
$Query-&gt;execute();</code></p>
<p>The parameters passed to the setLogging() class method are the section of the Administration Tool the modification is occurring from (&#8221;customers&#8221; being the Customers section) and the ID of the database record (optional). The query above would log the old value of the customers first name and the new value in the administrators_log database table.</p>
<p>The Administrators Log feature is used together with the Administrators Access Levels implementation and serves to keep the store owner up to date with modifications other administrators have performed.</p>
<p>The output of the Administrators Log is currently rather raw and will be improved in later releases where modules can display the data in a more human readable format.</p>
<p>A movie presenting the Administrators Log feature will be posted in the coming days.</p>
<p>We are also now registered at the <a href="http://cia.navi.cx/stats/project/oscommerce" target="_blank">CIA</a> site that displays the activity occurring on the development repository server. Commit changes are also now displayed in the development IRC chat room in real-time.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.oscommerce.com/2007/03/06/the-lebkuchen-is-still-in-the-oven/feed/</wfw:commentRss>
		</item>
		<item>
		<title>BSD Posix Bug In PHP 5.2.1</title>
		<link>http://blogs.oscommerce.com/2007/02/28/bsd-posix-bug-in-php-521/</link>
		<comments>http://blogs.oscommerce.com/2007/02/28/bsd-posix-bug-in-php-521/#comments</comments>
		<pubDate>Wed, 28 Feb 2007 15:40:39 +0000</pubDate>
		<dc:creator>Harald Ponce de Leon</dc:creator>
		
		<category>osCommerce</category>

		<category>PHP</category>

		<guid isPermaLink="false">http://blogs.oscommerce.com/2007/02/28/bsd-posix-bug-in-php-521/</guid>
		<description><![CDATA[There&#8217;s a posix related bug in PHP 5.2.1 that affects BSD systems. The closest bug report is 40410 which was reported for 5.2.1 RC 4 and is marked as closed.
Although 40410 fixed a posix related compilation error, usage of the PHP function posix_getgrgid() in PHP 5.2.1 returns the following fatal error:
Fatal error:  Out of [...]]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s a posix related bug in PHP 5.2.1 that affects BSD systems. The closest bug report is <a href="http://bugs.php.net/40410" target="_blank">40410</a> which was reported for 5.2.1 RC 4 and is marked as closed.</p>
<p>Although 40410 fixed a posix related compilation error, usage of the PHP function <a href="http://www.php.net/posix_getgrgid" target="_blank">posix_getgrgid()</a> in PHP 5.2.1 returns the following fatal error:</p>
<p>Fatal error:  Out of memory (allocated 2097152) (tried to allocate -1 bytes) in /tmp/test.php</p>
<p>This was reported to Anthony Dovgal, who took care of 40410, and confirmed that this problem was fixed in 5.2.2-dev (php5.2-200702281330).</p>
<p>I came across this problem today while working on the Administration Tool -> Tools -> File Manager section, which uses the posix_getgrgid() function to display the group owner name of the files and directories. As Mac OS X is based on BSD, it also affected my development environment.
</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.oscommerce.com/2007/02/28/bsd-posix-bug-in-php-521/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
