<?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:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>About Web Development by Activo</title>
	
	<link>http://www.activoinc.com/blog</link>
	<description>Web Development in a Web 2.0 World</description>
	<lastBuildDate>Thu, 22 Oct 2009 14:00:57 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/Activo" type="application/rss+xml" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FActivo" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FActivo" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2FActivo" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/Activo" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FActivo" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FActivo" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FActivo" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2FActivo" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2FActivo" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:browserFriendly>We hope you enjoy reading our articles. Thank you for subscribing.</feedburner:browserFriendly><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>How to Detect if the Page is Secure in a Magento Template?</title>
		<link>http://feedproxy.google.com/~r/Activo/~3/3km1Yh9gggA/</link>
		<comments>http://www.activoinc.com/blog/2009/10/22/how-to-detect-if-the-page-is-secure-in-a-magento-template/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 14:00:57 +0000</pubDate>
		<dc:creator>Ron Peled</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.activoinc.com/blog/?p=361</guid>
		<description><![CDATA[When you are designing a Magento template it is easy to overlook a simple fact: most links should not be hard-coded and you should always use the methods that are available for you like getSkinUrl() and getJsUrl(). In addition to pointing to the right root folder, these methods also point to the secure or unsecure [...]]]></description>
			<content:encoded><![CDATA[<p>When you are designing a Magento template it is easy to overlook a simple fact: most links should not be hard-coded and you should always use the methods that are available for you like <strong>getSkinUrl()</strong> and <strong>getJsUrl()</strong>. In addition to pointing to the right root folder, these methods also point to the secure or unsecure URLs, &#8216;https&#8217; and &#8216;http&#8217; respectively. However, how can you detect if a URL needs to be secured or not?</p>
<p><img class="aligncenter size-full wp-image-362" title="herring-hall-marvin-safe" src="http://www.activoinc.com/blog/wp-content/uploads/2009/10/herring-hall-marvin-safe.jpg" alt="herring-hall-marvin-safe" width="500" height="331" /></p>
<p>In a recent Magento project, I needed to do exactly that: find out if we are in secure or in a non secure page and point to the right <a href="http://code.google.com/apis/ajaxlibs/documentation/index.html#jquery">jQuery file on Google CDN&#8217;s</a>. Here is the code:</p>
<pre>&lt;?php if(Mage::app()-&gt;getStore()-&gt;isCurrentlySecure()): ?&gt;
&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;?php else: ?&gt;
&lt;script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;?php endif;  ?&gt;</pre>
<p>The key method here is the <em><strong>Mage::app()-&gt;getStore()-&gt;isCurrentlySecure()</strong></em>.</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/772f8f00-52d3-4f3a-885f-66a3ef6fbbd5/"><img class="zemanta-pixie-img" style="border: medium none; float: right;" src="http://img.zemanta.com/reblog_e.png?x-id=772f8f00-52d3-4f3a-885f-66a3ef6fbbd5" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related pretty-attribution"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
<h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li>January 7, 2009 -- <a href="http://www.activoinc.com/blog/2009/01/07/2009-the-year-of-open-source-software/" title="2009, the year of Open Source Software">2009, the year of Open Source Software</a> (0)</li><li>December 7, 2008 -- <a href="http://www.activoinc.com/blog/2008/12/07/a-list-of-cms-ecommerce-and-blogging-systems-that-officially-support-jquery/" title="A list of CMS and eCommerce systems that officially support jQuery">A list of CMS and eCommerce systems that officially support jQuery</a> (2)</li><li>October 8, 2009 -- <a href="http://www.activoinc.com/blog/2009/10/08/magentos-massaction-for-custom-plugins/" title="Magento&#8217;s massAction for Custom Plugins">Magento&#8217;s massAction for Custom Plugins</a> (0)</li><li>September 29, 2009 -- <a href="http://www.activoinc.com/blog/2009/09/29/magentos-order-management-workflow-comprehensive-but-unrealistic-2/" title="Magento&#8217;s Order Management Workflow: Comprehensive but Unrealistic #2">Magento&#8217;s Order Management Workflow: Comprehensive but Unrealistic #2</a> (2)</li><li>June 18, 2009 -- <a href="http://www.activoinc.com/blog/2009/06/18/the-case-for-zencart-supporting-the-long-tail-of-ecommerce/" title="The Case for ZenCart: Supporting the Long Tail of eCommerce">The Case for ZenCart: Supporting the Long Tail of eCommerce</a> (2)</li><li>January 28, 2009 -- <a href="http://www.activoinc.com/blog/2009/01/28/open-source-ecommerce-the-good-the-bad-and-the-ugly/" title="Open Source eCommerce: the Good, the Bad, and the Ugly!">Open Source eCommerce: the Good, the Bad, and the Ugly!</a> (1)</li><li>December 4, 2008 -- <a href="http://www.activoinc.com/blog/2008/12/04/can-magento-and-typo3-be-integrated-yes-with-typogento/" title="Can Magento and Typo3 be integrated? Yes, with TypoGento">Can Magento and Typo3 be integrated? Yes, with TypoGento</a> (0)</li><li>November 3, 2008 -- <a href="http://www.activoinc.com/blog/2008/11/03/jquery-emerges-as-most-popular-javascript-library-for-web-development/" title="jQuery Emerges as Most Popular Javascript Library for Web Development">jQuery Emerges as Most Popular Javascript Library for Web Development</a> (2)</li><li>October 29, 2008 -- <a href="http://www.activoinc.com/blog/2008/10/29/is-magento-commerce-the-new-joomla/" title="Is Magento Commerce the new Joomla?">Is Magento Commerce the new Joomla?</a> (1)</li><li>September 22, 2008 -- <a href="http://www.activoinc.com/blog/2008/09/22/zencart-and-magento-for-ecommerce/" title="ZenCart and Magento for eCommerce">ZenCart and Magento for eCommerce</a> (2)</li></ul><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Activo?a=3km1Yh9gggA:j5Rm-U2QyQI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Activo?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=3km1Yh9gggA:j5Rm-U2QyQI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Activo?i=3km1Yh9gggA:j5Rm-U2QyQI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=3km1Yh9gggA:j5Rm-U2QyQI:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Activo?i=3km1Yh9gggA:j5Rm-U2QyQI:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=3km1Yh9gggA:j5Rm-U2QyQI:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Activo?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Activo/~4/3km1Yh9gggA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.activoinc.com/blog/2009/10/22/how-to-detect-if-the-page-is-secure-in-a-magento-template/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.activoinc.com/blog/2009/10/22/how-to-detect-if-the-page-is-secure-in-a-magento-template/</feedburner:origLink></item>
		<item>
		<title>ZenCart 1.3.8 and PHP 5.2.11 Bug: problem login to admin area</title>
		<link>http://feedproxy.google.com/~r/Activo/~3/p7eXpOewyhc/</link>
		<comments>http://www.activoinc.com/blog/2009/10/15/zencart-1-3-8-and-php-5-2-11-bug-problem-login-to-admin-area/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 14:00:20 +0000</pubDate>
		<dc:creator>Ron Peled</dc:creator>
				<category><![CDATA[ZenCart]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.activoinc.com/blog/?p=357</guid>
		<description><![CDATA[Yes, I do have some clients that still use ZenCart. In fact, some ZenCart stores are doing very well in terms of SEO and more importantly, sales. This morning, I ran a routine yum update command on one of my clients servers. To my surprise, after rebooting the admin was inaccessible. I&#8217;ll share with you [...]]]></description>
			<content:encoded><![CDATA[<p>Yes, I do have some clients that still use ZenCart. In fact, some ZenCart stores are doing very well in terms of SEO and more importantly, sales. This morning, I ran a routine yum update command on one of my clients servers. To my surprise, after rebooting the admin was inaccessible. I&#8217;ll share with you the symptoms so you can identify it and the solution that worked for me.</p>
<p><img class="aligncenter size-full wp-image-358" title="zencart-1.3.8-php-5.2.11-bug" src="http://www.activoinc.com/blog/wp-content/uploads/2009/10/zencart-1.3.8-php-5.2.11-bug.jpg" alt="zencart-1.3.8-php-5.2.11-bug" width="500" height="200" /></p>
<p><strong>The symptoms:</strong></p>
<ol>
<li>Not able to login to Admin panel. More importantly, when you try to login it doesn&#8217;t show any error message.</li>
<li>No admin is able to login, in other words, the problem is global.</li>
<li>If you look in the php log files, you&#8217;ll find a similar line:<br />
<strong>PHP Fatal error:  Class &#8216;queryFactory&#8217; not found in /var/www/html/includes/functions/sessions.php on line 54, referer: http://www.securepersonalcare.com/admin/login.php</strong></li>
</ol>
<p><strong>What is happening:</strong></p>
<p>While I am not sure exactly, <a href="http://www.zen-cart.com/forum/showthread.php?p=786640">this post in the ZenCart forums</a> gave up a clue: it was something in PHP 5.2.11. Now, it may be a new bug in this new version or a bug that got resolved and as a result it broke something in the old ZenCart. Note that as of this writing, ZenCart 1.3.8 is about a year and nine months old. In internet time this is a significant amount of time.</p>
<p><strong>The solution that </strong></p>
<p>Once I had an assumption for what the problem is, I worked on reverting the PHP version to an older one. However, when I tried to revert using the Atomic repository &#8211; it did not work because while they do make old versions of php available, the php-common is not. I ended up removing the atomic repository and using CentOS repositories which provide PHP ver 5.1.6 something. Reinstalled, restarted apache, and vuala!</p>
<p>Now, only if the ZenCart team will get off their butts (or maybe get on their butts) and finish up what they call the next release of this eCommerce application!! What is the next version 1.4, 1.6, 2.0, 2.5? of ZenCart, well that is another discussion altogether.</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><span class="zem-script more-related pretty-attribution"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
<h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li>August 25, 2008 -- <a href="http://www.activoinc.com/blog/2008/08/25/zencart-ver-1-4-looking-ahead/" title="Looking Ahead: ZenCart ver 1.4">Looking Ahead: ZenCart ver 1.4</a> (3)</li><li>August 1, 2009 -- <a href="http://www.activoinc.com/blog/2009/08/01/php-simplexml-rules/" title="PHP SimpleXML Rules!">PHP SimpleXML Rules!</a> (0)</li><li>June 25, 2009 -- <a href="http://www.activoinc.com/blog/2009/06/25/method-overloading-workaround-in-php5/" title="Method Overloading Workaround in PHP5">Method Overloading Workaround in PHP5</a> (0)</li><li>June 18, 2009 -- <a href="http://www.activoinc.com/blog/2009/06/18/the-case-for-zencart-supporting-the-long-tail-of-ecommerce/" title="The Case for ZenCart: Supporting the Long Tail of eCommerce">The Case for ZenCart: Supporting the Long Tail of eCommerce</a> (2)</li><li>February 16, 2009 -- <a href="http://www.activoinc.com/blog/2009/02/16/zend-studio-61-wrong-way-to-enhance-a-php-ide/" title="Zend Studio 6.1: Wrong Way to Enhance a PHP IDE!">Zend Studio 6.1: Wrong Way to Enhance a PHP IDE!</a> (1)</li><li>September 22, 2008 -- <a href="http://www.activoinc.com/blog/2008/09/22/zencart-and-magento-for-ecommerce/" title="ZenCart and Magento for eCommerce">ZenCart and Magento for eCommerce</a> (2)</li><li>September 21, 2008 -- <a href="http://www.activoinc.com/blog/2008/09/21/3-steps-to-increase-your-website-traffic-with-popular-keywords/" title="3 Steps to Increase Your Website&#8217;s Traffic with Popular Keywords">3 Steps to Increase Your Website&#8217;s Traffic with Popular Keywords</a> (0)</li><li>August 21, 2008 -- <a href="http://www.activoinc.com/blog/2008/08/21/authorizenet-changes-transaction-id-field-zencart-passes-tests/" title="Authorize.net changes Transaction ID field &#8211; ZenCart passes tests">Authorize.net changes Transaction ID field &#8211; ZenCart passes tests</a> (0)</li><li>May 26, 2008 -- <a href="http://www.activoinc.com/blog/2008/05/26/zencart-develop-an-advanced-plugin-without-overwriting-core-files/" title="ZenCart: Develop an Advanced Plugin Without Overwriting Core Files">ZenCart: Develop an Advanced Plugin Without Overwriting Core Files</a> (1)</li></ul><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Activo?a=p7eXpOewyhc:orj737h08do:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Activo?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=p7eXpOewyhc:orj737h08do:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Activo?i=p7eXpOewyhc:orj737h08do:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=p7eXpOewyhc:orj737h08do:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Activo?i=p7eXpOewyhc:orj737h08do:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=p7eXpOewyhc:orj737h08do:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Activo?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Activo/~4/p7eXpOewyhc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.activoinc.com/blog/2009/10/15/zencart-1-3-8-and-php-5-2-11-bug-problem-login-to-admin-area/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.activoinc.com/blog/2009/10/15/zencart-1-3-8-and-php-5-2-11-bug-problem-login-to-admin-area/</feedburner:origLink></item>
		<item>
		<title>Magento’s massAction for Custom Plugins</title>
		<link>http://feedproxy.google.com/~r/Activo/~3/EvqWOMkLoZU/</link>
		<comments>http://www.activoinc.com/blog/2009/10/08/magentos-massaction-for-custom-plugins/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 14:00:43 +0000</pubDate>
		<dc:creator>Ron Peled</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[massAction]]></category>
		<category><![CDATA[prepareMassaction()]]></category>

		<guid isPermaLink="false">http://www.activoinc.com/blog/?p=354</guid>
		<description><![CDATA[Ever wanted to allow your users to make mass action on your Magento Custom Plugin records? The good news is that it is built in to the Magento Admin Panel and is available at the community edition. The bad news is that there is absolutely no documentation on how to use it. Here are the [...]]]></description>
			<content:encoded><![CDATA[<p>Ever wanted to allow your users to make mass action on your Magento Custom Plugin records? The good news is that it is built in to the Magento Admin Panel and is available at the community edition. The bad news is that there is absolutely no documentation on how to use it. Here are the 3 steps you will need to take in order to develop this feature in your custom plugin:</p>
<p><img class="aligncenter size-full wp-image-355" title="magento-mass-action" src="http://www.activoinc.com/blog/wp-content/uploads/2009/10/magento-mass-action.jpg" alt="magento-mass-action" width="453" height="209" /></p>
<p><strong>1. Prepare a Grid Container and Grid in your backend:<br />
</strong>For this you will need a collection of records, a controller, and the basic blocks of a grid admin page. I will not cover this in this post, but you can find more about setting it up nicely on <a href="http://t.wits.sg/"><em><strong>Tips for Twits</strong></em></a> Magento Blog, the article is called <em><strong><a title="Permanent Link to Howto: Repackageable custom extension development in Magento" rel="bookmark" href="http://t.wits.sg/2009/03/31/howto-repackageable-custom-extension-development-in-magento/">Howto: Repackageable custom extension development in Magento</a>.</strong></em></p>
<p><strong>2. Add the _prepareMassaction() method inside the Grid class:</strong><em><strong><br />
</strong></em>Add the following code inside your module class that extends Mage_Adminhtml_Block_Widget_Grid:</p>
<pre>protected function _prepareMassaction()
 {
 $this-&gt;setMassactionIdField('entity_id');
 $this-&gt;getMassactionBlock()-&gt;setFormFieldName('product');

 $this-&gt;getMassactionBlock()-&gt;addItem('add', array(
 'label'    =&gt; Mage::helper('rma')-&gt;__('Add Products to <a class="zem_slink" title="Return merchandise authorization" rel="wikipedia" href="http://en.wikipedia.org/wiki/Return_merchandise_authorization">RMA</a> List'),
 'url'      =&gt; $this-&gt;getUrl('*/*/massAdd'),
 ));

 return $this;
 }</pre>
<p>A few things to notice:</p>
<p>2.1. &#8216;entity_id&#8217; is the database column that serves as the unique identifier throughout your data structure, including: db table, single product magento model, and the collection.<br />
2.2. setFormFieldName(&#8217;product&#8217;) &#8211; the text &#8216;product&#8217; is flexible but you will need it in the next step, so remember it.<br />
2.3. The routing string &#8216;*/*/massAdd&#8217; will triger a method called massAddAction() in your controller.</p>
<p><strong>3. Prepare the actual action to be taken in your controller</strong><br />
Here is the code that needs to be added, notes are below:</p>
<pre>public function massAddAction()
 {
 $productIds = $this-&gt;getRequest()-&gt;getParam('product');
 if(!is_array($productIds)) {
 Mage::getSingleton('adminhtml/session')-&gt;addError(Mage::helper('rma')-&gt;__('Please select product(s)'));
 } else {
 try {
 $product = Mage::getModel('catalog/product');

 foreach ($productIds as $productId)
 {
 $product-&gt;reset()-&gt;load($productId);
 $rmaProduct = Mage::getModel('rma/product');
 $rmaProduct-&gt;setName($product-&gt;getName())
 -&gt;setDescription($product-&gt;getDescription())
 -&gt;setStatus(Activo_RMA_Model_Product::STATUS_ENABLED)
 -&gt;setCreatedAt(now())
 -&gt;setCatalogProductId($productId)
 -&gt;save();
 }
 Mage::getSingleton('adminhtml/session')-&gt;addSuccess(
 Mage::helper('rma')-&gt;__(
 'Total of %d product(s) were successfully added to the RMA product list', count($productIds)
 )
 );
 } catch (Exception $e) {
 Mage::getSingleton('adminhtml/session')-&gt;addError($e-&gt;getMessage());
 }
 }

 $this-&gt;_redirect('*/*/index');

 }</pre>
<p>Notes:</p>
<p>3.1. The method name is routed from the previously provided $this-&gt;getUrl(&#8217;*/*/massAdd&#8217;) method.<br />
3.2. Yes, the variable <strong>$productIds </strong>contains a simple array of entity_id numbers. This is not a collection by any means, so you should treat it this way.<br />
3.3. Inside the main foreach loop, you can pretty much do whatever action you wanted.</p>
<p>In conclusion, with about 20 lines of code and updates to two files we are able to leverage a powerful built in feature provided by Magento which allows for mass actions on our records. Obviously, this little excerpt is not for the beginners out there. However, I hope this will make some developers&#8217; lives a bit easier.</p>
<p>Let me know how what other advanced Magento features you use the most.</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><span class="zem-script more-related pretty-attribution"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
<h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li>October 22, 2009 -- <a href="http://www.activoinc.com/blog/2009/10/22/how-to-detect-if-the-page-is-secure-in-a-magento-template/" title="How to Detect if the Page is Secure in a Magento Template?">How to Detect if the Page is Secure in a Magento Template?</a> (0)</li><li>September 29, 2009 -- <a href="http://www.activoinc.com/blog/2009/09/29/magentos-order-management-workflow-comprehensive-but-unrealistic-2/" title="Magento&#8217;s Order Management Workflow: Comprehensive but Unrealistic #2">Magento&#8217;s Order Management Workflow: Comprehensive but Unrealistic #2</a> (2)</li><li>June 18, 2009 -- <a href="http://www.activoinc.com/blog/2009/06/18/the-case-for-zencart-supporting-the-long-tail-of-ecommerce/" title="The Case for ZenCart: Supporting the Long Tail of eCommerce">The Case for ZenCart: Supporting the Long Tail of eCommerce</a> (2)</li><li>January 28, 2009 -- <a href="http://www.activoinc.com/blog/2009/01/28/open-source-ecommerce-the-good-the-bad-and-the-ugly/" title="Open Source eCommerce: the Good, the Bad, and the Ugly!">Open Source eCommerce: the Good, the Bad, and the Ugly!</a> (1)</li><li>December 7, 2008 -- <a href="http://www.activoinc.com/blog/2008/12/07/a-list-of-cms-ecommerce-and-blogging-systems-that-officially-support-jquery/" title="A list of CMS and eCommerce systems that officially support jQuery">A list of CMS and eCommerce systems that officially support jQuery</a> (2)</li><li>December 4, 2008 -- <a href="http://www.activoinc.com/blog/2008/12/04/can-magento-and-typo3-be-integrated-yes-with-typogento/" title="Can Magento and Typo3 be integrated? Yes, with TypoGento">Can Magento and Typo3 be integrated? Yes, with TypoGento</a> (0)</li><li>October 29, 2008 -- <a href="http://www.activoinc.com/blog/2008/10/29/is-magento-commerce-the-new-joomla/" title="Is Magento Commerce the new Joomla?">Is Magento Commerce the new Joomla?</a> (1)</li><li>September 22, 2008 -- <a href="http://www.activoinc.com/blog/2008/09/22/zencart-and-magento-for-ecommerce/" title="ZenCart and Magento for eCommerce">ZenCart and Magento for eCommerce</a> (2)</li><li>August 25, 2008 -- <a href="http://www.activoinc.com/blog/2008/08/25/zencart-ver-1-4-looking-ahead/" title="Looking Ahead: ZenCart ver 1.4">Looking Ahead: ZenCart ver 1.4</a> (3)</li></ul><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Activo?a=EvqWOMkLoZU:HAqtkwm3LFk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Activo?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=EvqWOMkLoZU:HAqtkwm3LFk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Activo?i=EvqWOMkLoZU:HAqtkwm3LFk:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=EvqWOMkLoZU:HAqtkwm3LFk:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Activo?i=EvqWOMkLoZU:HAqtkwm3LFk:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=EvqWOMkLoZU:HAqtkwm3LFk:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Activo?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Activo/~4/EvqWOMkLoZU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.activoinc.com/blog/2009/10/08/magentos-massaction-for-custom-plugins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.activoinc.com/blog/2009/10/08/magentos-massaction-for-custom-plugins/</feedburner:origLink></item>
		<item>
		<title>Updating iNove to work with KeywordLuv plugin</title>
		<link>http://feedproxy.google.com/~r/Activo/~3/6cXtaKrfr3w/</link>
		<comments>http://www.activoinc.com/blog/2009/10/05/updating-inove-to-work-with-keywordluv-plugin/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 14:00:33 +0000</pubDate>
		<dc:creator>Ron Peled</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[iNove]]></category>
		<category><![CDATA[KeywordLuv]]></category>

		<guid isPermaLink="false">http://www.activoinc.com/blog/?p=347</guid>
		<description><![CDATA[Last week I discussed a new wordpress plugin that got me excited: KeywordLuv. I also promised to show you how I fixed the issue with iNove theme. Here it goes:

The main issue is that the iNove theme uses the get_comment_author_url() and the KeywordLuv works on a different method, the get_comment_author_link(). So, here are the steps [...]]]></description>
			<content:encoded><![CDATA[<p>Last week I discussed a new <a href="http://www.activoinc.com/blog/2009/10/02/keywordluv-a-must-have-wordpress-plugin">wordpress plugin that got me excited: KeywordLuv</a>. I also promised to show you how I fixed the issue with <a href="http://wordpress.org/extend/themes/inove">iNove theme</a>. Here it goes:</p>
<p><img class="aligncenter size-full wp-image-351" title="fixing-inove-toolbox" src="http://www.activoinc.com/blog/wp-content/uploads/2009/10/fixing-inove-toolbox.jpg" alt="fixing-inove-toolbox" width="500" height="250" /></p>
<p>The main issue is that the iNove theme uses the <strong>get_comment_author_url()</strong> and the <a href="http://www.scratch99.com/wordpress-plugin-keywordluv/">KeywordLuv</a> works on a different method, the <strong>get_comment_author_link(). </strong>So, here are the steps to update your iNove theme in a way that the author will show the Author name and the keywords properly:</p>
<ol>
<li>Go to your Wordpress admin area</li>
<li>Install the DoFollow plugin</li>
<li>Install the KeywordLuv plugin</li>
<li>Go to the Appearance tab</li>
<li>Click on the Editor (Themes Editor for wordpress)</li>
<li>Click on the &#8216;<em><strong>Theme Functions</strong></em>&#8216; file (functions.php)</li>
<li>Look for these lines of code around line 230:<br />
<code><br />
&lt;?php if (get_comment_author_url()) : ?&gt;<br />
&lt;a id="commentauthor-&lt;?php comment_ID() ?&gt;" href="&lt;?php comment_author_url() ?&gt;" rel="external nofollow"&gt;<br />
&lt;?php else : ?&gt;<br />
&lt;span id="commentauthor-&lt;?php comment_ID() ?&gt;"&gt;<br />
&lt;?php endif; ?&gt;<br />
&lt;?php comment_author(); ?&gt;<br />
&lt;?php if(get_comment_author_url()) : ?&gt;<br />
&lt;/a&gt;<br />
&lt;?php else : ?&gt;<br />
&lt;/span&gt;<br />
&lt;?php endif; ?&gt;</code></li>
<li>Erase the above lines and instead insert the following code:<br />
<code><br />
&lt;?php echo get_comment_author_link(); ?&gt;</code></li>
<li>Save by clicking the &#8216;update file&#8217; &amp; check your work</li>
</ol>
<p>That should do it. Notice that this site already has it installed and working properly. Disclaimer: the steps above are provided with the intention that it may fix an issue &#8211; there is by no means a guarantee. Each blog is slightly different.</p>
<p>Let me know how this worked out for you.</p>
<h3  class="related_post_title">Most Commected Posts</h3><ul class="related_post"><li>April 13, 2008 -- <a href="http://www.activoinc.com/blog/2008/04/13/about-linux-distros-ubuntu-and-centos/" title="About Linux Distros: Ubuntu and CentOS">About Linux Distros: Ubuntu and CentOS</a> (9)</li><li>October 2, 2009 -- <a href="http://www.activoinc.com/blog/2009/10/02/keywordluv-a-must-have-wordpress-plugin/" title="KeywordLuv: a must have wordpress plugin">KeywordLuv: a must have wordpress plugin</a> (7)</li><li>March 10, 2008 -- <a href="http://www.activoinc.com/blog/2008/03/10/10-key-search-engine-optimization-items-feeding-the-spiders/" title="10 Key Search Engine Optimization Items &#8211; Feeding the Spiders">10 Key Search Engine Optimization Items &#8211; Feeding the Spiders</a> (5)</li><li>October 5, 2009 -- <a href="http://www.activoinc.com/blog/2009/10/05/updating-inove-to-work-with-keywordluv-plugin/" title="Updating iNove to work with KeywordLuv plugin">Updating iNove to work with KeywordLuv plugin</a> (5)</li><li>August 19, 2008 -- <a href="http://www.activoinc.com/blog/2008/08/19/5-missing-features-preventing-joomla-cms-from-entering-the-enterprise-cms-market/" title="5 Missing Features Preventing Joomla! CMS from Entering the Enterprise CMS Market">5 Missing Features Preventing Joomla! CMS from Entering the Enterprise CMS Market</a> (3)</li><li>August 25, 2008 -- <a href="http://www.activoinc.com/blog/2008/08/25/zencart-ver-1-4-looking-ahead/" title="Looking Ahead: ZenCart ver 1.4">Looking Ahead: ZenCart ver 1.4</a> (3)</li><li>September 25, 2009 -- <a href="http://www.activoinc.com/blog/2009/09/25/magentos-order-management-workflow-comprehensive-but-unrealistic/" title="Magento&#8217;s Order Management Workflow: Comprehensive but Unrealistic">Magento&#8217;s Order Management Workflow: Comprehensive but Unrealistic</a> (3)</li><li>October 15, 2009 -- <a href="http://www.activoinc.com/blog/2009/10/15/zencart-1-3-8-and-php-5-2-11-bug-problem-login-to-admin-area/" title="ZenCart 1.3.8 and PHP 5.2.11 Bug: problem login to admin area">ZenCart 1.3.8 and PHP 5.2.11 Bug: problem login to admin area</a> (3)</li><li>July 29, 2007 -- <a href="http://www.activoinc.com/blog/2007/07/29/why-we-chose-eventum-over-any-other-issue-tracking-system/" title="Why we chose Eventum over any other issue tracking system?">Why we chose Eventum over any other issue tracking system?</a> (2)</li><li>June 18, 2009 -- <a href="http://www.activoinc.com/blog/2009/06/18/the-case-for-zencart-supporting-the-long-tail-of-ecommerce/" title="The Case for ZenCart: Supporting the Long Tail of eCommerce">The Case for ZenCart: Supporting the Long Tail of eCommerce</a> (2)</li></ul><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Activo?a=6cXtaKrfr3w:UpUjNgnZjTU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Activo?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=6cXtaKrfr3w:UpUjNgnZjTU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Activo?i=6cXtaKrfr3w:UpUjNgnZjTU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=6cXtaKrfr3w:UpUjNgnZjTU:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Activo?i=6cXtaKrfr3w:UpUjNgnZjTU:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=6cXtaKrfr3w:UpUjNgnZjTU:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Activo?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Activo/~4/6cXtaKrfr3w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.activoinc.com/blog/2009/10/05/updating-inove-to-work-with-keywordluv-plugin/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://www.activoinc.com/blog/2009/10/05/updating-inove-to-work-with-keywordluv-plugin/</feedburner:origLink></item>
		<item>
		<title>KeywordLuv: a must have wordpress plugin</title>
		<link>http://feedproxy.google.com/~r/Activo/~3/3hYnMx_reZY/</link>
		<comments>http://www.activoinc.com/blog/2009/10/02/keywordluv-a-must-have-wordpress-plugin/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 14:00:52 +0000</pubDate>
		<dc:creator>Ron Peled</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[wordpress plugin]]></category>

		<guid isPermaLink="false">http://www.activoinc.com/blog/?p=339</guid>
		<description><![CDATA[KeywordLuv is the latest hot wordpress plugin. It did not officially catch on fire yet, but it will. I won’t be surprised to find it built in next versions of wordpress. So what is it anyway? From the publisher&#8217;s website:
Description: Reward your commentators by separating their name from their keywords in the link to their [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;"><a href="http://www.scratch99.com/wordpress-plugin-keywordluv/">KeywordLuv</a> is the latest hot wordpress plugin. It did not officially catch on fire yet, but it will. I won’t be surprised to find it built in next versions of wordpress. So what is it anyway? From the publisher&#8217;s website:</p>
<blockquote><p>Description: <strong>Reward your commentators</strong> by separating their name from their keywords in the link to their website, giving them <strong>improved anchor text</strong>.</p>
<p>- Stephan Cronin</p></blockquote>
<p><a href="http://www.scratch99.com/wordpress-plugin-keywordluv/"><img class="size-full wp-image-343 aligncenter" title="keywordluv-google-wonder-wheel" src="http://www.activoinc.com/blog/wp-content/uploads/2009/10/keywordluv-google-wonder-wheel.gif" alt="keywordluv-google-wonder-wheel" width="482" height="263" /></a>In other words it lets commentators leave a comment and allow area for their name and keywords while showing clear separation.  Instead of having <strong>Dedicated Advanced Hosting </strong>or <strong>Magento Plugins</strong> post comments on your site, the author of the comment can leave their name and get the credit they want with the keywords they selected. Three immediate benefits arise from this plugin/feature:</p>
<ol>
<li> Clear separation between author name and the keyword.</li>
<li>Since the plugin needs a DoFollow plugin installed and the keywords entice authors to comment on your posts, more people will potentially join the discussion.</li>
<li>Ability to separate between spammers and non spammers easily (for now).</li>
</ol>
<p>There was a tiny issue with inove and the usage of this plugin. Next week, I will share with you how to address the issue in the iNove theme.</p>
<p>Let me know if you find this plugin useful or not.</p>
<h3  class="related_post_title">Most Commected Posts</h3><ul class="related_post"><li>April 13, 2008 -- <a href="http://www.activoinc.com/blog/2008/04/13/about-linux-distros-ubuntu-and-centos/" title="About Linux Distros: Ubuntu and CentOS">About Linux Distros: Ubuntu and CentOS</a> (9)</li><li>October 2, 2009 -- <a href="http://www.activoinc.com/blog/2009/10/02/keywordluv-a-must-have-wordpress-plugin/" title="KeywordLuv: a must have wordpress plugin">KeywordLuv: a must have wordpress plugin</a> (7)</li><li>March 10, 2008 -- <a href="http://www.activoinc.com/blog/2008/03/10/10-key-search-engine-optimization-items-feeding-the-spiders/" title="10 Key Search Engine Optimization Items &#8211; Feeding the Spiders">10 Key Search Engine Optimization Items &#8211; Feeding the Spiders</a> (5)</li><li>October 5, 2009 -- <a href="http://www.activoinc.com/blog/2009/10/05/updating-inove-to-work-with-keywordluv-plugin/" title="Updating iNove to work with KeywordLuv plugin">Updating iNove to work with KeywordLuv plugin</a> (5)</li><li>August 19, 2008 -- <a href="http://www.activoinc.com/blog/2008/08/19/5-missing-features-preventing-joomla-cms-from-entering-the-enterprise-cms-market/" title="5 Missing Features Preventing Joomla! CMS from Entering the Enterprise CMS Market">5 Missing Features Preventing Joomla! CMS from Entering the Enterprise CMS Market</a> (3)</li><li>August 25, 2008 -- <a href="http://www.activoinc.com/blog/2008/08/25/zencart-ver-1-4-looking-ahead/" title="Looking Ahead: ZenCart ver 1.4">Looking Ahead: ZenCart ver 1.4</a> (3)</li><li>September 25, 2009 -- <a href="http://www.activoinc.com/blog/2009/09/25/magentos-order-management-workflow-comprehensive-but-unrealistic/" title="Magento&#8217;s Order Management Workflow: Comprehensive but Unrealistic">Magento&#8217;s Order Management Workflow: Comprehensive but Unrealistic</a> (3)</li><li>October 15, 2009 -- <a href="http://www.activoinc.com/blog/2009/10/15/zencart-1-3-8-and-php-5-2-11-bug-problem-login-to-admin-area/" title="ZenCart 1.3.8 and PHP 5.2.11 Bug: problem login to admin area">ZenCart 1.3.8 and PHP 5.2.11 Bug: problem login to admin area</a> (3)</li><li>July 29, 2007 -- <a href="http://www.activoinc.com/blog/2007/07/29/why-we-chose-eventum-over-any-other-issue-tracking-system/" title="Why we chose Eventum over any other issue tracking system?">Why we chose Eventum over any other issue tracking system?</a> (2)</li><li>June 18, 2009 -- <a href="http://www.activoinc.com/blog/2009/06/18/the-case-for-zencart-supporting-the-long-tail-of-ecommerce/" title="The Case for ZenCart: Supporting the Long Tail of eCommerce">The Case for ZenCart: Supporting the Long Tail of eCommerce</a> (2)</li></ul><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Activo?a=3hYnMx_reZY:-GtEAnClBWc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Activo?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=3hYnMx_reZY:-GtEAnClBWc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Activo?i=3hYnMx_reZY:-GtEAnClBWc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=3hYnMx_reZY:-GtEAnClBWc:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Activo?i=3hYnMx_reZY:-GtEAnClBWc:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=3hYnMx_reZY:-GtEAnClBWc:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Activo?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Activo/~4/3hYnMx_reZY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.activoinc.com/blog/2009/10/02/keywordluv-a-must-have-wordpress-plugin/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://www.activoinc.com/blog/2009/10/02/keywordluv-a-must-have-wordpress-plugin/</feedburner:origLink></item>
		<item>
		<title>Coming Book Review for Magento: Beginner’s Guide</title>
		<link>http://feedproxy.google.com/~r/Activo/~3/eFDqhmUmdmA/</link>
		<comments>http://www.activoinc.com/blog/2009/10/01/coming-book-review-for-magento-beginners-guide/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 14:00:31 +0000</pubDate>
		<dc:creator>Ron Peled</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[book review]]></category>

		<guid isPermaLink="false">http://www.activoinc.com/blog/?p=336</guid>
		<description><![CDATA[I&#8217;ve recently been approach by a UK publisher, Packt Publishing, to review a new books about Magento. The book is called Magento: Beginner&#8217;s Guide and covers many aspects of the Magento eCommerce platform. In fact, it almost seem like an intermediate or even advanced from a merchant&#8217;s point of view. Here are a few pros [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.packtpub.com/magento-beginners-guide?utm_source=activoinc.com%2Fblog%2F&amp;utm_medium=bookrev&amp;utm_content=blog&amp;utm_campaign=mdb_000564"><img class="alignright size-full wp-image-341" title="Magento-for-Beginners-Guide" src="http://www.activoinc.com/blog/wp-content/uploads/2009/10/Magento-for-Beginners-Guide.jpg" alt="Magento-for-Beginners-Guide" width="250" height="318" /></a>I&#8217;ve recently been approach by a UK publisher, Packt Publishing, to review a new books about <a href="http://www.magentocommerce.com/">Magento</a>. The book is called <em><a href="http://www.packtpub.com/magento-beginners-guide?utm_source=activoinc.com%2Fblog%2F&amp;utm_medium=bookrev&amp;utm_content=blog&amp;utm_campaign=mdb_000564"><strong>Magento: Beginner&#8217;s Guide</strong></a> </em>and covers many aspects of the Magento eCommerce platform. In fact, it almost seem like an intermediate or even advanced from a merchant&#8217;s point of view. Here are a few pros and cons for this book which I drafted from a quick 10 minutes glance:</p>
<p><strong>Pros:</strong></p>
<ul>
<li>From the table of content, the book seem to be comprehensive and covers many parts of the Magento eCommerce.</li>
<li>The book has a duo setup of Author(William Rice) + Technical Reviewer(Jose Argudo) &#8211; which is promising.</li>
<li>Installation chapter includes FTP instructions and folder/file permissions instructions which is more than I have seen in similar books.</li>
</ul>
<p><strong>Cons:<br />
</strong></p>
<ul>
<li>The book claims to target <em>everyone</em>. Realistically, this book seem to target smaller merchants who will be installing, setting up, and running the store themselves.</li>
<li>The book refers to a bit outdated version of Magento: 1.2.x.x. Not a big issue since Magento&#8217;s main features have not changed much.</li>
<li>Seem to be a bit technical for the average smaller merchants. Still remains to be seen how technical.</li>
</ul>
<p>If you have any thoughts about this book or if you read it and have something to say about it, let me know.</p>
<h3  class="related_post_title">Most Commected Posts</h3><ul class="related_post"><li>April 13, 2008 -- <a href="http://www.activoinc.com/blog/2008/04/13/about-linux-distros-ubuntu-and-centos/" title="About Linux Distros: Ubuntu and CentOS">About Linux Distros: Ubuntu and CentOS</a> (9)</li><li>October 2, 2009 -- <a href="http://www.activoinc.com/blog/2009/10/02/keywordluv-a-must-have-wordpress-plugin/" title="KeywordLuv: a must have wordpress plugin">KeywordLuv: a must have wordpress plugin</a> (7)</li><li>March 10, 2008 -- <a href="http://www.activoinc.com/blog/2008/03/10/10-key-search-engine-optimization-items-feeding-the-spiders/" title="10 Key Search Engine Optimization Items &#8211; Feeding the Spiders">10 Key Search Engine Optimization Items &#8211; Feeding the Spiders</a> (5)</li><li>October 5, 2009 -- <a href="http://www.activoinc.com/blog/2009/10/05/updating-inove-to-work-with-keywordluv-plugin/" title="Updating iNove to work with KeywordLuv plugin">Updating iNove to work with KeywordLuv plugin</a> (5)</li><li>August 19, 2008 -- <a href="http://www.activoinc.com/blog/2008/08/19/5-missing-features-preventing-joomla-cms-from-entering-the-enterprise-cms-market/" title="5 Missing Features Preventing Joomla! CMS from Entering the Enterprise CMS Market">5 Missing Features Preventing Joomla! CMS from Entering the Enterprise CMS Market</a> (3)</li><li>August 25, 2008 -- <a href="http://www.activoinc.com/blog/2008/08/25/zencart-ver-1-4-looking-ahead/" title="Looking Ahead: ZenCart ver 1.4">Looking Ahead: ZenCart ver 1.4</a> (3)</li><li>September 25, 2009 -- <a href="http://www.activoinc.com/blog/2009/09/25/magentos-order-management-workflow-comprehensive-but-unrealistic/" title="Magento&#8217;s Order Management Workflow: Comprehensive but Unrealistic">Magento&#8217;s Order Management Workflow: Comprehensive but Unrealistic</a> (3)</li><li>October 15, 2009 -- <a href="http://www.activoinc.com/blog/2009/10/15/zencart-1-3-8-and-php-5-2-11-bug-problem-login-to-admin-area/" title="ZenCart 1.3.8 and PHP 5.2.11 Bug: problem login to admin area">ZenCart 1.3.8 and PHP 5.2.11 Bug: problem login to admin area</a> (3)</li><li>July 29, 2007 -- <a href="http://www.activoinc.com/blog/2007/07/29/why-we-chose-eventum-over-any-other-issue-tracking-system/" title="Why we chose Eventum over any other issue tracking system?">Why we chose Eventum over any other issue tracking system?</a> (2)</li><li>June 18, 2009 -- <a href="http://www.activoinc.com/blog/2009/06/18/the-case-for-zencart-supporting-the-long-tail-of-ecommerce/" title="The Case for ZenCart: Supporting the Long Tail of eCommerce">The Case for ZenCart: Supporting the Long Tail of eCommerce</a> (2)</li></ul><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Activo?a=eFDqhmUmdmA:BqygAilYgwY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Activo?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=eFDqhmUmdmA:BqygAilYgwY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Activo?i=eFDqhmUmdmA:BqygAilYgwY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=eFDqhmUmdmA:BqygAilYgwY:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Activo?i=eFDqhmUmdmA:BqygAilYgwY:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=eFDqhmUmdmA:BqygAilYgwY:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Activo?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Activo/~4/eFDqhmUmdmA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.activoinc.com/blog/2009/10/01/coming-book-review-for-magento-beginners-guide/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.activoinc.com/blog/2009/10/01/coming-book-review-for-magento-beginners-guide/</feedburner:origLink></item>
		<item>
		<title>Magento’s Order Management Workflow: Comprehensive but Unrealistic #2</title>
		<link>http://feedproxy.google.com/~r/Activo/~3/Jm7H2CuSg68/</link>
		<comments>http://www.activoinc.com/blog/2009/09/29/magentos-order-management-workflow-comprehensive-but-unrealistic-2/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 14:00:18 +0000</pubDate>
		<dc:creator>Ron Peled</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[goEmerchant]]></category>

		<guid isPermaLink="false">http://www.activoinc.com/blog/?p=334</guid>
		<description><![CDATA[Yes, I finished the goEmerchant payment plugin for Magento and figured out how to use and modify Magento&#8217;s Order Management Workflow. It did require a lot of reverse engineering and a bit of tweaking of the button labels to improve the admin&#8217;s understanding on what each operation actually does.

Pre-Authorize transaction on Checkout:
So, the first thing [...]]]></description>
			<content:encoded><![CDATA[<p>Yes, I finished the goEmerchant payment plugin for Magento and figured out how to use and modify Magento&#8217;s Order Management Workflow. It did require a lot of reverse engineering and a bit of tweaking of the button labels to improve the admin&#8217;s understanding on what each operation actually does.</p>
<p><img class="aligncenter size-full wp-image-332" title="Magento's Order Management Workflow is like a plumbing job, maybe not so bad." src="http://www.activoinc.com/blog/wp-content/uploads/2009/09/bad-plumbing-job.jpg" alt="Magento's Order Management Workflow is like a plumbing job, maybe not so bad." width="500" height="200" /></p>
<p><strong>Pre-Authorize transaction on Checkout</strong>:<br />
So, the first thing we want to do is pre-authorize transactions when a user places an online order and checks out from Magento. That is relatively easy and mostly built in. Nothing needed to change from a workflow point of view. The only thing we had to realize is that there are two values that stay with the payment which is associated with the Order and we can use for the goEmerchant reference_number. Those are: &#8216;cc_trans_id&#8217; and &#8216;last_trans_id&#8217; &#8211; I chose to use &#8216;cc_trans_id&#8217; just because it made more sense.</p>
<p><strong>Cenceling &amp; Voiding an Order:<br />
</strong>In Magento you can only void invoices. However, if you create an invoice you in effect will triger the captur() method of the payment. Now, goEmerchant allows you to void only unsettled transactions &#8211; so we had to handle the voiding before we create an invoice. Luckily Magento has the cancel() method that is called when an order is canceled. So, we wired the void operation to the cancel() method and relabeled the button from &#8216;Cancel&#8217; to &#8216;Cancel &amp; Void&#8217; &#8211; to explain what it actually does. We also turned off voiding, since there is not much sense in voiding an already created/settled invoice.</p>
<p><strong>Settling a Transaction (Capture Funds):<br />
</strong>goEmerchant needs the eCommerce application to send a &#8217;settle&#8217; request when the order was processed, shipped, and invoiced. This request than places the transaction in the settled queue  and will be processed usually at 2am. This was relatively easy and no modifications to the workflow needed here. All we needed to do is perform the &#8217;settle&#8217; request in the capture() method of the payment. Note: since our module still allows Authorization &amp; Capture setups, we had to handle the special cases here. But overall no problem.</p>
<p><strong>Refund or Creditmemos:<br />
</strong>Magento has this option to create new credit memos, these serve as what we call it as refunds. Luckily, here Magento&#8217;s Order Management Workflow works finde and allows you to process a credit memo and &#8216;Refund Online&#8217;. It is actualy labeled &#8216;Refund&#8217; and the other option is to &#8216;Refund Offline&#8217;. So, in our plugin we are simply wiring the refund request in the refund() method of the payment. Note: Magento also allows a refund of the entire order which is not triggering anything. So, we will need to be cautious to explain to our merchants that they will need to refund already created invoices.</p>
<p><strong>Conclusion<br />
</strong>Magento&#8217;s Order Workflow is definitely rich in features and allows great level of flexibility for the merchants. However, some of it would not make sense and seems like overly complex for something that should be configurable but simple. We were able to get our plugin working the way we needed it to by a combination of using the existing functionality and relabeling some buttons. We will also need to caution our merchants from certain actions or make the decision to remove these options altogether.</p>
<p>If you are interested in our goEmerchant payment module for Magento,  email us at info@activoinc.com or call at (888) 897-7775.</p>
<h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li>October 22, 2009 -- <a href="http://www.activoinc.com/blog/2009/10/22/how-to-detect-if-the-page-is-secure-in-a-magento-template/" title="How to Detect if the Page is Secure in a Magento Template?">How to Detect if the Page is Secure in a Magento Template?</a> (0)</li><li>October 8, 2009 -- <a href="http://www.activoinc.com/blog/2009/10/08/magentos-massaction-for-custom-plugins/" title="Magento&#8217;s massAction for Custom Plugins">Magento&#8217;s massAction for Custom Plugins</a> (0)</li><li>September 25, 2009 -- <a href="http://www.activoinc.com/blog/2009/09/25/magentos-order-management-workflow-comprehensive-but-unrealistic/" title="Magento&#8217;s Order Management Workflow: Comprehensive but Unrealistic">Magento&#8217;s Order Management Workflow: Comprehensive but Unrealistic</a> (3)</li><li>June 18, 2009 -- <a href="http://www.activoinc.com/blog/2009/06/18/the-case-for-zencart-supporting-the-long-tail-of-ecommerce/" title="The Case for ZenCart: Supporting the Long Tail of eCommerce">The Case for ZenCart: Supporting the Long Tail of eCommerce</a> (2)</li><li>January 28, 2009 -- <a href="http://www.activoinc.com/blog/2009/01/28/open-source-ecommerce-the-good-the-bad-and-the-ugly/" title="Open Source eCommerce: the Good, the Bad, and the Ugly!">Open Source eCommerce: the Good, the Bad, and the Ugly!</a> (1)</li><li>December 7, 2008 -- <a href="http://www.activoinc.com/blog/2008/12/07/a-list-of-cms-ecommerce-and-blogging-systems-that-officially-support-jquery/" title="A list of CMS and eCommerce systems that officially support jQuery">A list of CMS and eCommerce systems that officially support jQuery</a> (2)</li><li>December 4, 2008 -- <a href="http://www.activoinc.com/blog/2008/12/04/can-magento-and-typo3-be-integrated-yes-with-typogento/" title="Can Magento and Typo3 be integrated? Yes, with TypoGento">Can Magento and Typo3 be integrated? Yes, with TypoGento</a> (0)</li><li>October 29, 2008 -- <a href="http://www.activoinc.com/blog/2008/10/29/is-magento-commerce-the-new-joomla/" title="Is Magento Commerce the new Joomla?">Is Magento Commerce the new Joomla?</a> (1)</li><li>September 22, 2008 -- <a href="http://www.activoinc.com/blog/2008/09/22/zencart-and-magento-for-ecommerce/" title="ZenCart and Magento for eCommerce">ZenCart and Magento for eCommerce</a> (2)</li><li>August 25, 2008 -- <a href="http://www.activoinc.com/blog/2008/08/25/zencart-ver-1-4-looking-ahead/" title="Looking Ahead: ZenCart ver 1.4">Looking Ahead: ZenCart ver 1.4</a> (3)</li></ul><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Activo?a=Jm7H2CuSg68:LgnmAaj3Q6s:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Activo?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=Jm7H2CuSg68:LgnmAaj3Q6s:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Activo?i=Jm7H2CuSg68:LgnmAaj3Q6s:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=Jm7H2CuSg68:LgnmAaj3Q6s:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Activo?i=Jm7H2CuSg68:LgnmAaj3Q6s:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=Jm7H2CuSg68:LgnmAaj3Q6s:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Activo?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Activo/~4/Jm7H2CuSg68" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.activoinc.com/blog/2009/09/29/magentos-order-management-workflow-comprehensive-but-unrealistic-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.activoinc.com/blog/2009/09/29/magentos-order-management-workflow-comprehensive-but-unrealistic-2/</feedburner:origLink></item>
		<item>
		<title>Magento’s Order Management Workflow: Comprehensive but Unrealistic</title>
		<link>http://feedproxy.google.com/~r/Activo/~3/B2EAK9XzCRQ/</link>
		<comments>http://www.activoinc.com/blog/2009/09/25/magentos-order-management-workflow-comprehensive-but-unrealistic/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 21:46:04 +0000</pubDate>
		<dc:creator>Ron Peled</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[goEmerchant]]></category>

		<guid isPermaLink="false">http://www.activoinc.com/blog/?p=330</guid>
		<description><![CDATA[Here I am, knee deep finalizing a Magento goEmerchant payment module. When done, the module will integrate a Magento store with the goEmerchant XML API which will allow seamless pre-authorizations, captures (on invoicing), refunds, and voids.  All will be handled by the Magento admin panel at the order management pages. Well, I have just discovered [...]]]></description>
			<content:encoded><![CDATA[<p>Here I am, knee deep finalizing a Magento goEmerchant payment module. When done, the module will integrate a Magento store with the goEmerchant XML API which will allow seamless pre-authorizations, captures (on invoicing), refunds, and voids.  All will be handled by the Magento admin panel at the order management pages. Well, I have just discovered how Magento handles things and it is slightly different then what we need it to be. In fact, it is different than what any payment gateway will require. Let me explain:</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-332" title="Magento's Order Management Workflow is like a bad plumbing job" src="http://www.activoinc.com/blog/wp-content/uploads/2009/09/bad-plumbing-job.jpg" alt="bad-plumbing-job" width="500" height="200" /></p>
<p>Assuming that the Magento is configured to Authorize only on checkout, once an order is processed, the payment info will be sent to the gateway and a Credit Card pre-authorization will occur. Resulting in a reference_number which is stored somewhere in the database. In the back-end, an admin will then review all the open orders, or orders under the &#8216;processing&#8217; status and will create invoices accordingly. When the invoice is created there is an option to Capture the funds at that point. Great! this is almost what needs to happen, but workable. In essence, pre-authorized transactions need to be &#8216;Settled&#8217; not &#8216;Captured&#8217; according to goEmerchant&#8217;s logic. Not a problem.</p>
<p>What is problematic and will require serious re-plumbing of the Magento logic is the fact that only captured invoices can be voided. Well, this defeats the purpose because that is why we pre-authenticate. In short, according to Magento, a pre-authenticated order can issue an invoice which will then capture the funds and only then one can void the captured, pre-authorized transaction. This is a problem in the logic! What needs to happen, according to goEmerchant, is the ability to void a pre-authorized order without the need to issue an invoice and capture the funds.</p>
<p>I&#8217;ll keep you posted on this&#8230; to be continued.</p>
<h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li>September 29, 2009 -- <a href="http://www.activoinc.com/blog/2009/09/29/magentos-order-management-workflow-comprehensive-but-unrealistic-2/" title="Magento&#8217;s Order Management Workflow: Comprehensive but Unrealistic #2">Magento&#8217;s Order Management Workflow: Comprehensive but Unrealistic #2</a> (2)</li></ul><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Activo?a=B2EAK9XzCRQ:F-fangGnBvg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Activo?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=B2EAK9XzCRQ:F-fangGnBvg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Activo?i=B2EAK9XzCRQ:F-fangGnBvg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=B2EAK9XzCRQ:F-fangGnBvg:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Activo?i=B2EAK9XzCRQ:F-fangGnBvg:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=B2EAK9XzCRQ:F-fangGnBvg:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Activo?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Activo/~4/B2EAK9XzCRQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.activoinc.com/blog/2009/09/25/magentos-order-management-workflow-comprehensive-but-unrealistic/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.activoinc.com/blog/2009/09/25/magentos-order-management-workflow-comprehensive-but-unrealistic/</feedburner:origLink></item>
		<item>
		<title>Quick Way to Update Fail2ban jail.conf file</title>
		<link>http://feedproxy.google.com/~r/Activo/~3/55xaC6YYbQw/</link>
		<comments>http://www.activoinc.com/blog/2009/09/03/quick-way-to-update-fail2ban-jail-conf-file/#comments</comments>
		<pubDate>Thu, 03 Sep 2009 22:19:24 +0000</pubDate>
		<dc:creator>Ron Peled</dc:creator>
				<category><![CDATA[Web Application Hosting]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[fail2ban]]></category>

		<guid isPermaLink="false">http://www.activoinc.com/blog/?p=327</guid>
		<description><![CDATA[There are plenty of settings in that file, especially if you are running CentOS 5.3 with latest patches and fail2ban from atomic repository. Here is a short list of steps that I follow when setting up new servers:
1. Setup sendmail to start on boot. Make sure it can send emails correctly (Reverse DNS records, hostname [...]]]></description>
			<content:encoded><![CDATA[<p>There are plenty of settings in that file, especially if you are running CentOS 5.3 with latest patches and fail2ban from atomic repository. Here is a short list of steps that I follow when setting up new servers:</p>
<p>1. Setup sendmail to start on boot. Make sure it can send emails correctly (Reverse DNS records, hostname config, etc).</p>
<p>2. Make sure that fail2ban starts on boot (I use ntsysv for that).</p>
<p>3. Edit the jail.conf file, type vi /etc/fail2ban/jail.conf</p>
<p>4. Change the time for increased security:</p>
<pre>bantime = 86400
findtime = 3600</pre>
<p>5. After you save and exit, change all the destination emails to go to root which will then be forwarded to you:</p>
<pre>sed -i 's/you@mail.com/root/g' /etc/fail2ban/jail.conf</pre>
<p>6. Add a forward for all emails to root to your email:</p>
<pre>echo "myemailaddress@mydomain.com" &gt; ~/.forward</pre>
<p>7. Restart  fail2ban:</p>
<pre>service fail2ban restart</pre>
<h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li>August 31, 2009 -- <a href="http://www.activoinc.com/blog/2009/08/31/performance-optimized-httpd-conf-for-magento-ecommerce/" title="Performance Optimized httpd.conf for Magento eCommerce">Performance Optimized httpd.conf for Magento eCommerce</a> (0)</li><li>August 24, 2009 -- <a href="http://www.activoinc.com/blog/2009/08/24/howto-setup-iptables-for-www-and-dbmysql-on-linux/" title="Howto setup iptables for www and db(mysql) on linux">Howto setup iptables for www and db(mysql) on linux</a> (0)</li><li>August 23, 2009 -- <a href="http://www.activoinc.com/blog/2009/08/23/centos-5-3-install-essentials/" title="CentOS 5.3 Install Essentials">CentOS 5.3 Install Essentials</a> (0)</li><li>August 3, 2009 -- <a href="http://www.activoinc.com/blog/2009/08/03/block-access-to-your-dedicated-server-automatically-if-more-than-3-failed-logins/" title="Block access to your dedicated server automatically if more than 3 failed logins">Block access to your dedicated server automatically if more than 3 failed logins</a> (0)</li><li>March 27, 2009 -- <a href="http://www.activoinc.com/blog/2009/03/27/recommended-visual-svn-server-now-with-subversion-16/" title="Recommended: Visual SVN Server, now with Subversion 1.6">Recommended: Visual SVN Server, now with Subversion 1.6</a> (1)</li><li>March 25, 2009 -- <a href="http://www.activoinc.com/blog/2009/03/25/tightening-up-iptables-for-a-dedicated-db-server-mysql-and-centos/" title="Tightening up iptables for a dedicated DB server (MySQL and CentOS)">Tightening up iptables for a dedicated DB server (MySQL and CentOS)</a> (1)</li><li>December 25, 2008 -- <a href="http://www.activoinc.com/blog/2008/12/25/pdnsd-decrease-dns-response-time-and-save-bandwidth/" title="pdnsd &#8211; Decrease DNS response time and save bandwidth">pdnsd &#8211; Decrease DNS response time and save bandwidth</a> (0)</li><li>November 30, 2008 -- <a href="http://www.activoinc.com/blog/2008/11/30/centos-for-linux-servers-a-cut-above/" title="CentOS for Linux Servers: a cut above">CentOS for Linux Servers: a cut above</a> (0)</li><li>April 13, 2008 -- <a href="http://www.activoinc.com/blog/2008/04/13/about-linux-distros-ubuntu-and-centos/" title="About Linux Distros: Ubuntu and CentOS">About Linux Distros: Ubuntu and CentOS</a> (9)</li></ul><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Activo?a=55xaC6YYbQw:63PtAULUuRA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Activo?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=55xaC6YYbQw:63PtAULUuRA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Activo?i=55xaC6YYbQw:63PtAULUuRA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=55xaC6YYbQw:63PtAULUuRA:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Activo?i=55xaC6YYbQw:63PtAULUuRA:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=55xaC6YYbQw:63PtAULUuRA:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Activo?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Activo/~4/55xaC6YYbQw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.activoinc.com/blog/2009/09/03/quick-way-to-update-fail2ban-jail-conf-file/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.activoinc.com/blog/2009/09/03/quick-way-to-update-fail2ban-jail-conf-file/</feedburner:origLink></item>
		<item>
		<title>Performance Optimized httpd.conf for Magento eCommerce</title>
		<link>http://feedproxy.google.com/~r/Activo/~3/1Yntlr-1Y7E/</link>
		<comments>http://www.activoinc.com/blog/2009/08/31/performance-optimized-httpd-conf-for-magento-ecommerce/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 09:00:46 +0000</pubDate>
		<dc:creator>Ron Peled</dc:creator>
				<category><![CDATA[Web Application Hosting]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[httpd.conf]]></category>

		<guid isPermaLink="false">http://www.activoinc.com/blog/?p=320</guid>
		<description><![CDATA[If you ever run Magento eCommerce on your servers you know that it requires some serious horse power. It is just the nature of the beast, with XML configuration, the usage of the Zend Framework, and MVC design &#8211; every page load is not trivial. I realize that there are many lighter and various other [...]]]></description>
			<content:encoded><![CDATA[<p>If you ever run Magento eCommerce on your servers you know that it requires some serious horse power. It is just the nature of the beast, with XML configuration, the usage of the Zend Framework, and MVC design &#8211; every page load is not trivial. I realize that there are many lighter and various other forms of web servers, however I always stick to the safest and most reliable which usually happens to be the most popular option out there: httpd. Here is an optimized httpd.conf targeting a dedicated server box for running only httpd (no mysql) and Magento:</p>
<p>A couple of assumptions first:</p>
<ul>
<li> You are running CentOS (I did not test any other distros)</li>
<li>You have httpd installed</li>
<li>You have lots of RAM (this server has 16GB of RAM)</li>
<li>This is a dedicated box</li>
<li>You know what you are doing&#8230;</li>
</ul>
<p>Download the file, copy over your httpd.conf, restart httpd:</p>
<pre>wget http://www.activoinc.com/downloads/httpd.conf-magento
cp /etc/httpd/conf/httpd.conf ./httpd.conf.old
cat httpd.conf-magento &gt; /etc/httpd/conf/httpd.conf</pre>
<p>Once done, you will also need to update the vhosts area of the file near the bottom of it. In case you wanted, here is a direct link to the file: <a href="http://www.activoinc.com/downloads/httpd.conf-magento">http://www.activoinc.com/downloads/httpd.conf-magento</a></p>
<h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li>September 3, 2009 -- <a href="http://www.activoinc.com/blog/2009/09/03/quick-way-to-update-fail2ban-jail-conf-file/" title="Quick Way to Update Fail2ban jail.conf file">Quick Way to Update Fail2ban jail.conf file</a> (0)</li><li>August 24, 2009 -- <a href="http://www.activoinc.com/blog/2009/08/24/howto-setup-iptables-for-www-and-dbmysql-on-linux/" title="Howto setup iptables for www and db(mysql) on linux">Howto setup iptables for www and db(mysql) on linux</a> (0)</li><li>August 23, 2009 -- <a href="http://www.activoinc.com/blog/2009/08/23/centos-5-3-install-essentials/" title="CentOS 5.3 Install Essentials">CentOS 5.3 Install Essentials</a> (0)</li><li>August 3, 2009 -- <a href="http://www.activoinc.com/blog/2009/08/03/block-access-to-your-dedicated-server-automatically-if-more-than-3-failed-logins/" title="Block access to your dedicated server automatically if more than 3 failed logins">Block access to your dedicated server automatically if more than 3 failed logins</a> (0)</li><li>March 27, 2009 -- <a href="http://www.activoinc.com/blog/2009/03/27/recommended-visual-svn-server-now-with-subversion-16/" title="Recommended: Visual SVN Server, now with Subversion 1.6">Recommended: Visual SVN Server, now with Subversion 1.6</a> (1)</li><li>March 25, 2009 -- <a href="http://www.activoinc.com/blog/2009/03/25/tightening-up-iptables-for-a-dedicated-db-server-mysql-and-centos/" title="Tightening up iptables for a dedicated DB server (MySQL and CentOS)">Tightening up iptables for a dedicated DB server (MySQL and CentOS)</a> (1)</li><li>December 25, 2008 -- <a href="http://www.activoinc.com/blog/2008/12/25/pdnsd-decrease-dns-response-time-and-save-bandwidth/" title="pdnsd &#8211; Decrease DNS response time and save bandwidth">pdnsd &#8211; Decrease DNS response time and save bandwidth</a> (0)</li><li>November 30, 2008 -- <a href="http://www.activoinc.com/blog/2008/11/30/centos-for-linux-servers-a-cut-above/" title="CentOS for Linux Servers: a cut above">CentOS for Linux Servers: a cut above</a> (0)</li><li>April 13, 2008 -- <a href="http://www.activoinc.com/blog/2008/04/13/about-linux-distros-ubuntu-and-centos/" title="About Linux Distros: Ubuntu and CentOS">About Linux Distros: Ubuntu and CentOS</a> (9)</li></ul><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Activo?a=1Yntlr-1Y7E:V_GyJvzFUVg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Activo?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=1Yntlr-1Y7E:V_GyJvzFUVg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Activo?i=1Yntlr-1Y7E:V_GyJvzFUVg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=1Yntlr-1Y7E:V_GyJvzFUVg:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Activo?i=1Yntlr-1Y7E:V_GyJvzFUVg:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=1Yntlr-1Y7E:V_GyJvzFUVg:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Activo?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Activo/~4/1Yntlr-1Y7E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.activoinc.com/blog/2009/08/31/performance-optimized-httpd-conf-for-magento-ecommerce/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.activoinc.com/blog/2009/08/31/performance-optimized-httpd-conf-for-magento-ecommerce/</feedburner:origLink></item>
		<item>
		<title>Required PHP Extensions for Magento eCommerce</title>
		<link>http://feedproxy.google.com/~r/Activo/~3/V_FPqyzmli4/</link>
		<comments>http://www.activoinc.com/blog/2009/08/27/required-php-extensions-for-magento-ecommerce/#comments</comments>
		<pubDate>Thu, 27 Aug 2009 09:00:47 +0000</pubDate>
		<dc:creator>Ron Peled</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.activoinc.com/blog/?p=318</guid>
		<description><![CDATA[When I setup a new linux server I make sure to set it up lean since performance is always on my mind. I usually install packages manually, so here is the list of PHP extensions that are needed for the latest stable version of Magento:

PHP
php-mysql
php-mcrypt
php-hash
php-xml (will be required for Magento 1.4.xx)
php-gd
php-pdo
php-mhash
php-soap

Here is the command line [...]]]></description>
			<content:encoded><![CDATA[<p>When I setup a new linux server I make sure to set it up lean since performance is always on my mind. I usually install packages manually, so here is the list of PHP extensions that are needed for the latest stable version of Magento:</p>
<ul>
<li>PHP</li>
<li>php-mysql</li>
<li>php-mcrypt</li>
<li>php-hash</li>
<li>php-xml (will be required for Magento 1.4.xx)</li>
<li>php-gd</li>
<li>php-pdo</li>
<li>php-mhash</li>
<li>php-soap</li>
</ul>
<p>Here is the command line that will do the job:</p>
<pre>yum install php php-mysql php-mcrypt php-xml php-gd php-pdo php-mhash php-soap</pre>
<p>Tip: you should use PECL extension APC. Also known as Alternative PHP Caching. This little extension can  speed things up significantly. Assuming you have setup Atomic as a repository in yum, you can run this command:</p>
<pre>yum install php-pecl-apc</pre>
<h3  class="related_post_title">Most Commected Posts</h3><ul class="related_post"><li>April 13, 2008 -- <a href="http://www.activoinc.com/blog/2008/04/13/about-linux-distros-ubuntu-and-centos/" title="About Linux Distros: Ubuntu and CentOS">About Linux Distros: Ubuntu and CentOS</a> (9)</li><li>October 2, 2009 -- <a href="http://www.activoinc.com/blog/2009/10/02/keywordluv-a-must-have-wordpress-plugin/" title="KeywordLuv: a must have wordpress plugin">KeywordLuv: a must have wordpress plugin</a> (7)</li><li>March 10, 2008 -- <a href="http://www.activoinc.com/blog/2008/03/10/10-key-search-engine-optimization-items-feeding-the-spiders/" title="10 Key Search Engine Optimization Items &#8211; Feeding the Spiders">10 Key Search Engine Optimization Items &#8211; Feeding the Spiders</a> (5)</li><li>October 5, 2009 -- <a href="http://www.activoinc.com/blog/2009/10/05/updating-inove-to-work-with-keywordluv-plugin/" title="Updating iNove to work with KeywordLuv plugin">Updating iNove to work with KeywordLuv plugin</a> (5)</li><li>August 19, 2008 -- <a href="http://www.activoinc.com/blog/2008/08/19/5-missing-features-preventing-joomla-cms-from-entering-the-enterprise-cms-market/" title="5 Missing Features Preventing Joomla! CMS from Entering the Enterprise CMS Market">5 Missing Features Preventing Joomla! CMS from Entering the Enterprise CMS Market</a> (3)</li><li>August 25, 2008 -- <a href="http://www.activoinc.com/blog/2008/08/25/zencart-ver-1-4-looking-ahead/" title="Looking Ahead: ZenCart ver 1.4">Looking Ahead: ZenCart ver 1.4</a> (3)</li><li>September 25, 2009 -- <a href="http://www.activoinc.com/blog/2009/09/25/magentos-order-management-workflow-comprehensive-but-unrealistic/" title="Magento&#8217;s Order Management Workflow: Comprehensive but Unrealistic">Magento&#8217;s Order Management Workflow: Comprehensive but Unrealistic</a> (3)</li><li>October 15, 2009 -- <a href="http://www.activoinc.com/blog/2009/10/15/zencart-1-3-8-and-php-5-2-11-bug-problem-login-to-admin-area/" title="ZenCart 1.3.8 and PHP 5.2.11 Bug: problem login to admin area">ZenCart 1.3.8 and PHP 5.2.11 Bug: problem login to admin area</a> (3)</li><li>July 29, 2007 -- <a href="http://www.activoinc.com/blog/2007/07/29/why-we-chose-eventum-over-any-other-issue-tracking-system/" title="Why we chose Eventum over any other issue tracking system?">Why we chose Eventum over any other issue tracking system?</a> (2)</li><li>June 18, 2009 -- <a href="http://www.activoinc.com/blog/2009/06/18/the-case-for-zencart-supporting-the-long-tail-of-ecommerce/" title="The Case for ZenCart: Supporting the Long Tail of eCommerce">The Case for ZenCart: Supporting the Long Tail of eCommerce</a> (2)</li></ul><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Activo?a=V_FPqyzmli4:9TJioZzVccs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Activo?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=V_FPqyzmli4:9TJioZzVccs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Activo?i=V_FPqyzmli4:9TJioZzVccs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=V_FPqyzmli4:9TJioZzVccs:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Activo?i=V_FPqyzmli4:9TJioZzVccs:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=V_FPqyzmli4:9TJioZzVccs:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Activo?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Activo/~4/V_FPqyzmli4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.activoinc.com/blog/2009/08/27/required-php-extensions-for-magento-ecommerce/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.activoinc.com/blog/2009/08/27/required-php-extensions-for-magento-ecommerce/</feedburner:origLink></item>
		<item>
		<title>A Quick Way to Download, Install, and Setup pdnsd (local DNS Caching)</title>
		<link>http://feedproxy.google.com/~r/Activo/~3/JWcwuJxQCN0/</link>
		<comments>http://www.activoinc.com/blog/2009/08/26/a-quick-way-to-download-install-and-setup-pdnsd-local-dns-caching/#comments</comments>
		<pubDate>Wed, 26 Aug 2009 15:00:25 +0000</pubDate>
		<dc:creator>Ron Peled</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.activoinc.com/blog/?p=313</guid>
		<description><![CDATA[Back in December of last year I posted an article about setting up pdnsd. This is a revised version of the same howto, but with a shorter approach for fast setups. I also changed the IP addresses to point to the OpenDNS servers which has proven to be both effective and reliable.
wget http://www.phys.uu.nl/~rombouts/pdnsd/releases/pdnsd-1.2.7-par_sl5.x86_64.rpm
rpm -i pdnsd-1.2.7-par_sl5.x86_64.rpm
echo [...]]]></description>
			<content:encoded><![CDATA[<p>Back in December of last year I posted an <a href="http://www.activoinc.com/blog/2008/12/25/pdnsd-decrease-dns-response-time-and-save-bandwidth/">article about setting up pdnsd</a>. This is a revised version of the same howto, but with a shorter approach for fast setups. I also changed the IP addresses to point to the OpenDNS servers which has proven to be both effective and reliable.</p>
<pre>wget http://www.phys.uu.nl/~rombouts/pdnsd/releases/pdnsd-1.2.7-par_sl5.x86_64.rpm
rpm -i pdnsd-1.2.7-par_sl5.x86_64.rpm</pre>
<pre>echo "server {" &gt; /etc/pdnsd.conf
echo "label=\"opendns\";" &gt;&gt; /etc/pdnsd.conf
echo "ip = 208.67.222.222,208.67.220.220;" &gt;&gt; /etc/pdnsd.conf
echo "}" &gt;&gt; /etc/pdnsd.conf</pre>
<pre>service pdnsd start

echo START_DAEMON=yes &gt; /etc/default/pdnsd</pre>
<p>Edit your resolve.conf file and make sure that the first row has nameserver=127.0.0.1, the rest should remain the same. Here is how:</p>
<pre>vi /etc/resolv.conf</pre>
<pre>nameserver 127.0.0.1</pre>
<p>Restart your network service:</p>
<pre>service network restart</pre>
<p>Last: make sure that pdnsd auto starts on boot, I use <strong>ntsysv </strong>for this.</p>
<h3  class="related_post_title">Most Commected Posts</h3><ul class="related_post"><li>April 13, 2008 -- <a href="http://www.activoinc.com/blog/2008/04/13/about-linux-distros-ubuntu-and-centos/" title="About Linux Distros: Ubuntu and CentOS">About Linux Distros: Ubuntu and CentOS</a> (9)</li><li>October 2, 2009 -- <a href="http://www.activoinc.com/blog/2009/10/02/keywordluv-a-must-have-wordpress-plugin/" title="KeywordLuv: a must have wordpress plugin">KeywordLuv: a must have wordpress plugin</a> (7)</li><li>March 10, 2008 -- <a href="http://www.activoinc.com/blog/2008/03/10/10-key-search-engine-optimization-items-feeding-the-spiders/" title="10 Key Search Engine Optimization Items &#8211; Feeding the Spiders">10 Key Search Engine Optimization Items &#8211; Feeding the Spiders</a> (5)</li><li>October 5, 2009 -- <a href="http://www.activoinc.com/blog/2009/10/05/updating-inove-to-work-with-keywordluv-plugin/" title="Updating iNove to work with KeywordLuv plugin">Updating iNove to work with KeywordLuv plugin</a> (5)</li><li>August 19, 2008 -- <a href="http://www.activoinc.com/blog/2008/08/19/5-missing-features-preventing-joomla-cms-from-entering-the-enterprise-cms-market/" title="5 Missing Features Preventing Joomla! CMS from Entering the Enterprise CMS Market">5 Missing Features Preventing Joomla! CMS from Entering the Enterprise CMS Market</a> (3)</li><li>August 25, 2008 -- <a href="http://www.activoinc.com/blog/2008/08/25/zencart-ver-1-4-looking-ahead/" title="Looking Ahead: ZenCart ver 1.4">Looking Ahead: ZenCart ver 1.4</a> (3)</li><li>September 25, 2009 -- <a href="http://www.activoinc.com/blog/2009/09/25/magentos-order-management-workflow-comprehensive-but-unrealistic/" title="Magento&#8217;s Order Management Workflow: Comprehensive but Unrealistic">Magento&#8217;s Order Management Workflow: Comprehensive but Unrealistic</a> (3)</li><li>October 15, 2009 -- <a href="http://www.activoinc.com/blog/2009/10/15/zencart-1-3-8-and-php-5-2-11-bug-problem-login-to-admin-area/" title="ZenCart 1.3.8 and PHP 5.2.11 Bug: problem login to admin area">ZenCart 1.3.8 and PHP 5.2.11 Bug: problem login to admin area</a> (3)</li><li>July 29, 2007 -- <a href="http://www.activoinc.com/blog/2007/07/29/why-we-chose-eventum-over-any-other-issue-tracking-system/" title="Why we chose Eventum over any other issue tracking system?">Why we chose Eventum over any other issue tracking system?</a> (2)</li><li>June 18, 2009 -- <a href="http://www.activoinc.com/blog/2009/06/18/the-case-for-zencart-supporting-the-long-tail-of-ecommerce/" title="The Case for ZenCart: Supporting the Long Tail of eCommerce">The Case for ZenCart: Supporting the Long Tail of eCommerce</a> (2)</li></ul><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Activo?a=JWcwuJxQCN0:T14ec9MiJQg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Activo?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=JWcwuJxQCN0:T14ec9MiJQg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Activo?i=JWcwuJxQCN0:T14ec9MiJQg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=JWcwuJxQCN0:T14ec9MiJQg:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Activo?i=JWcwuJxQCN0:T14ec9MiJQg:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=JWcwuJxQCN0:T14ec9MiJQg:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Activo?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Activo/~4/JWcwuJxQCN0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.activoinc.com/blog/2009/08/26/a-quick-way-to-download-install-and-setup-pdnsd-local-dns-caching/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.activoinc.com/blog/2009/08/26/a-quick-way-to-download-install-and-setup-pdnsd-local-dns-caching/</feedburner:origLink></item>
		<item>
		<title>Setting noatime and nodiratime for improved disk performance</title>
		<link>http://feedproxy.google.com/~r/Activo/~3/sM5IY8gEf2s/</link>
		<comments>http://www.activoinc.com/blog/2009/08/25/setting-noatime-and-nodiratime-for-improved-disk-performance/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 15:00:46 +0000</pubDate>
		<dc:creator>Ron Peled</dc:creator>
				<category><![CDATA[Web Application Hosting]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[noatime]]></category>
		<category><![CDATA[nodiratime]]></category>

		<guid isPermaLink="false">http://www.activoinc.com/blog/?p=305</guid>
		<description><![CDATA[This is great if you have a server that performs plenty of disk access operations and you are interested in speeding things up a bit. Here is how to do this in three steps. First some assumptions:

You have root access
You are the only one that will ever need to mount or unmount this file system
Running [...]]]></description>
			<content:encoded><![CDATA[<p>This is great if you have a server that performs plenty of disk access operations and you are interested in speeding things up a bit. Here is how to do this in three steps. First some assumptions:</p>
<ul>
<li>You have root access</li>
<li>You are the only one that will ever need to mount or unmount this file system</li>
<li>Running CentOS (this may work, but was not tested on any other linux server)</li>
</ul>
<p>This is what we are doing:</p>
<ol>
<li>Editing /etc/fstab to set the noatime and nodiratime flags for the file system</li>
<li>Remounting the drives/file systems (without rebooting)</li>
<li>Checking our work</li>
</ol>
<p><strong>Step 1: Edit the /etc/fstab, type:</strong></p>
<pre>vi /etc/fstab</pre>
<p>Add the noatime, nodiratime flags right after the defaults flag in the &#8220;/&#8221; root mount partition. Repeat to all the partitions that you wish to speed up. Here is how my fstab file looks like after the change (click to enlarge):</p>
<p><a href="http://www.activoinc.com/blog/wp-content/uploads/2009/08/etc-fstab-in-vi_with_noatime_nodiratime.jpg"><img class="aligncenter size-medium wp-image-308" title="etc-fstab-in-vi_with_noatime_nodiratime" src="http://www.activoinc.com/blog/wp-content/uploads/2009/08/etc-fstab-in-vi_with_noatime_nodiratime-300x53.jpg" alt="etc-fstab-in-vi_with_noatime_nodiratime" width="300" height="53" /></a><strong>Step 2: Remount the file system:</strong></p>
<pre>mount -oremount /</pre>
<p><strong>Step 3: Check our work:</strong></p>
<pre>cat /proc/mounts</pre>
<p><strong>Tip</strong>: the following command will perform a tiny benchmark test, in case you want to see how fast your hard drives perform. If you want to compare, you should perform a before and after tests.</p>
<pre>hdparm -tT /dev/sda</pre>
<h3  class="related_post_title">Most Commected Posts</h3><ul class="related_post"><li>April 13, 2008 -- <a href="http://www.activoinc.com/blog/2008/04/13/about-linux-distros-ubuntu-and-centos/" title="About Linux Distros: Ubuntu and CentOS">About Linux Distros: Ubuntu and CentOS</a> (9)</li><li>October 2, 2009 -- <a href="http://www.activoinc.com/blog/2009/10/02/keywordluv-a-must-have-wordpress-plugin/" title="KeywordLuv: a must have wordpress plugin">KeywordLuv: a must have wordpress plugin</a> (7)</li><li>March 10, 2008 -- <a href="http://www.activoinc.com/blog/2008/03/10/10-key-search-engine-optimization-items-feeding-the-spiders/" title="10 Key Search Engine Optimization Items &#8211; Feeding the Spiders">10 Key Search Engine Optimization Items &#8211; Feeding the Spiders</a> (5)</li><li>October 5, 2009 -- <a href="http://www.activoinc.com/blog/2009/10/05/updating-inove-to-work-with-keywordluv-plugin/" title="Updating iNove to work with KeywordLuv plugin">Updating iNove to work with KeywordLuv plugin</a> (5)</li><li>August 19, 2008 -- <a href="http://www.activoinc.com/blog/2008/08/19/5-missing-features-preventing-joomla-cms-from-entering-the-enterprise-cms-market/" title="5 Missing Features Preventing Joomla! CMS from Entering the Enterprise CMS Market">5 Missing Features Preventing Joomla! CMS from Entering the Enterprise CMS Market</a> (3)</li><li>August 25, 2008 -- <a href="http://www.activoinc.com/blog/2008/08/25/zencart-ver-1-4-looking-ahead/" title="Looking Ahead: ZenCart ver 1.4">Looking Ahead: ZenCart ver 1.4</a> (3)</li><li>September 25, 2009 -- <a href="http://www.activoinc.com/blog/2009/09/25/magentos-order-management-workflow-comprehensive-but-unrealistic/" title="Magento&#8217;s Order Management Workflow: Comprehensive but Unrealistic">Magento&#8217;s Order Management Workflow: Comprehensive but Unrealistic</a> (3)</li><li>October 15, 2009 -- <a href="http://www.activoinc.com/blog/2009/10/15/zencart-1-3-8-and-php-5-2-11-bug-problem-login-to-admin-area/" title="ZenCart 1.3.8 and PHP 5.2.11 Bug: problem login to admin area">ZenCart 1.3.8 and PHP 5.2.11 Bug: problem login to admin area</a> (3)</li><li>July 29, 2007 -- <a href="http://www.activoinc.com/blog/2007/07/29/why-we-chose-eventum-over-any-other-issue-tracking-system/" title="Why we chose Eventum over any other issue tracking system?">Why we chose Eventum over any other issue tracking system?</a> (2)</li><li>June 18, 2009 -- <a href="http://www.activoinc.com/blog/2009/06/18/the-case-for-zencart-supporting-the-long-tail-of-ecommerce/" title="The Case for ZenCart: Supporting the Long Tail of eCommerce">The Case for ZenCart: Supporting the Long Tail of eCommerce</a> (2)</li></ul><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Activo?a=sM5IY8gEf2s:2BxXv1Skv8Q:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Activo?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=sM5IY8gEf2s:2BxXv1Skv8Q:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Activo?i=sM5IY8gEf2s:2BxXv1Skv8Q:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=sM5IY8gEf2s:2BxXv1Skv8Q:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Activo?i=sM5IY8gEf2s:2BxXv1Skv8Q:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=sM5IY8gEf2s:2BxXv1Skv8Q:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Activo?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Activo/~4/sM5IY8gEf2s" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.activoinc.com/blog/2009/08/25/setting-noatime-and-nodiratime-for-improved-disk-performance/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.activoinc.com/blog/2009/08/25/setting-noatime-and-nodiratime-for-improved-disk-performance/</feedburner:origLink></item>
		<item>
		<title>Howto setup iptables for www and db(mysql) on linux</title>
		<link>http://feedproxy.google.com/~r/Activo/~3/eSAErwerMBI/</link>
		<comments>http://www.activoinc.com/blog/2009/08/24/howto-setup-iptables-for-www-and-dbmysql-on-linux/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 05:06:53 +0000</pubDate>
		<dc:creator>Ron Peled</dc:creator>
				<category><![CDATA[Web Application Hosting]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[iptables]]></category>

		<guid isPermaLink="false">http://www.activoinc.com/blog/?p=303</guid>
		<description><![CDATA[Since I provide fully managed hosting services to my selective clients, I&#8217;ve been setting up iptables more than I can count. After a while I have the tendency to automate common tasks. In the case of setting iptables it can easily be done by downloading and running a shell script. So I created these two [...]]]></description>
			<content:encoded><![CDATA[<p>Since I provide fully managed hosting services to my selective clients, I&#8217;ve been setting up iptables more than I can count. After a while I have the tendency to automate common tasks. In the case of setting iptables it can easily be done by downloading and running a shell script. So I created these two shell scripts each one targets a specific server usage: one for WWW servers and the other is for dedicated DB servers.</p>
<p>Here is a couple of assumptions:</p>
<ul>
<li>Using a linux server</li>
<li>Has iptables installed and running</li>
<li>You have root access to the server (or enough privileges to run these commands)</li>
<li>Not a must, but I only tested these scripts on a CentOS server (and many of them&#8230;)</li>
<li>You know what you are doing!</li>
</ul>
<p>The scripts simply clears the current settings of your iptables, adds open ports as necessary and restarts the iptables service. In the case of WWW it opens the ports 22, 80, and 443 (SSL). In the case of MYSQL it opens the ports 22, and 3306 and if you wish you can uncomment a line in there to restrict access only to a specific set of IPs. In the case of a dedicated server you may only want the corresponding WWW server to be able to access the MYSQL server. Here are the steps, I will divide them by the type of the server:</p>
<p><strong>Setting iptables on a WWW server:</strong></p>
<pre>wget http://www.activoinc.com/downloads/iptables-www
chmod +x iptables-www
./iptables-www</pre>
<p><strong>Setting iptables on a MySQL server:</strong></p>
<pre>wget http://www.activoinc.com/downloads/iptables-mysql
chmod +x iptables-mysql
./iptables-mysql</pre>
<p>Note: there is absolutely no warranty that this will work, it is provided with the sole hope that it may save you a few minutes or a couple of hours.</p>
<h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li>September 3, 2009 -- <a href="http://www.activoinc.com/blog/2009/09/03/quick-way-to-update-fail2ban-jail-conf-file/" title="Quick Way to Update Fail2ban jail.conf file">Quick Way to Update Fail2ban jail.conf file</a> (0)</li><li>August 31, 2009 -- <a href="http://www.activoinc.com/blog/2009/08/31/performance-optimized-httpd-conf-for-magento-ecommerce/" title="Performance Optimized httpd.conf for Magento eCommerce">Performance Optimized httpd.conf for Magento eCommerce</a> (0)</li><li>August 23, 2009 -- <a href="http://www.activoinc.com/blog/2009/08/23/centos-5-3-install-essentials/" title="CentOS 5.3 Install Essentials">CentOS 5.3 Install Essentials</a> (0)</li><li>August 3, 2009 -- <a href="http://www.activoinc.com/blog/2009/08/03/block-access-to-your-dedicated-server-automatically-if-more-than-3-failed-logins/" title="Block access to your dedicated server automatically if more than 3 failed logins">Block access to your dedicated server automatically if more than 3 failed logins</a> (0)</li><li>March 27, 2009 -- <a href="http://www.activoinc.com/blog/2009/03/27/recommended-visual-svn-server-now-with-subversion-16/" title="Recommended: Visual SVN Server, now with Subversion 1.6">Recommended: Visual SVN Server, now with Subversion 1.6</a> (1)</li><li>March 25, 2009 -- <a href="http://www.activoinc.com/blog/2009/03/25/tightening-up-iptables-for-a-dedicated-db-server-mysql-and-centos/" title="Tightening up iptables for a dedicated DB server (MySQL and CentOS)">Tightening up iptables for a dedicated DB server (MySQL and CentOS)</a> (1)</li><li>December 25, 2008 -- <a href="http://www.activoinc.com/blog/2008/12/25/pdnsd-decrease-dns-response-time-and-save-bandwidth/" title="pdnsd &#8211; Decrease DNS response time and save bandwidth">pdnsd &#8211; Decrease DNS response time and save bandwidth</a> (0)</li><li>November 30, 2008 -- <a href="http://www.activoinc.com/blog/2008/11/30/centos-for-linux-servers-a-cut-above/" title="CentOS for Linux Servers: a cut above">CentOS for Linux Servers: a cut above</a> (0)</li><li>April 13, 2008 -- <a href="http://www.activoinc.com/blog/2008/04/13/about-linux-distros-ubuntu-and-centos/" title="About Linux Distros: Ubuntu and CentOS">About Linux Distros: Ubuntu and CentOS</a> (9)</li></ul><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Activo?a=eSAErwerMBI:DCe455IUdYQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Activo?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=eSAErwerMBI:DCe455IUdYQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Activo?i=eSAErwerMBI:DCe455IUdYQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=eSAErwerMBI:DCe455IUdYQ:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Activo?i=eSAErwerMBI:DCe455IUdYQ:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=eSAErwerMBI:DCe455IUdYQ:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Activo?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Activo/~4/eSAErwerMBI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.activoinc.com/blog/2009/08/24/howto-setup-iptables-for-www-and-dbmysql-on-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.activoinc.com/blog/2009/08/24/howto-setup-iptables-for-www-and-dbmysql-on-linux/</feedburner:origLink></item>
		<item>
		<title>CentOS 5.3 Install Essentials</title>
		<link>http://feedproxy.google.com/~r/Activo/~3/q7E527fIqLQ/</link>
		<comments>http://www.activoinc.com/blog/2009/08/23/centos-5-3-install-essentials/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 05:13:12 +0000</pubDate>
		<dc:creator>Ron Peled</dc:creator>
				<category><![CDATA[LAMP: Linux Apache MySQL PHP]]></category>
		<category><![CDATA[Web Application Hosting]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[Linux server]]></category>

		<guid isPermaLink="false">http://www.activoinc.com/blog/?p=300</guid>
		<description><![CDATA[When I setup a new server, I typically install it with nothing checked in the packages list of the installation process. I like using yum update first and then running yum install on the packages that I absolutely need. Clean and mean is my favorite way to run a Linux server. Two main reason are [...]]]></description>
			<content:encoded><![CDATA[<p>When I setup a new server, I typically install it with nothing checked in the packages list of the installation process. I like using yum update first and then running yum install on the packages that I absolutely need. Clean and mean is my favorite way to run a Linux server. Two main reason are behind this: one is performance, this is a bit obvious: the less you got on the HD and processes running in the background the faster the server. Two is security: the less software you have installed your vulnerability &#8220;surface area&#8221; is smaller.</p>
<p>While installing it clean is great, I do have a minimum set of tools that I usually need in any server. Most of these tools are small and do not require background services so I install them almost by default. You should check if they suite your needs and use it at your discretion. Hint: the goal here is to copy and paste once a new server is installed.</p>
<p><strong>(correction) Before I can use the next command I need to install wget:</strong></p>
<pre>yum install wget</pre>
<p><strong>Add the Atomic repository (newer versions of LAMP, some security packages):</strong></p>
<pre>wget -q -O - http://www.atomicorp.com/installers/atomic.sh | sh</pre>
<p><strong>Install basic packages:</strong></p>
<pre>yum install unzip sendmail ntsysv fail2ban logrotate pdns</pre>
<h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li>November 30, 2008 -- <a href="http://www.activoinc.com/blog/2008/11/30/centos-for-linux-servers-a-cut-above/" title="CentOS for Linux Servers: a cut above">CentOS for Linux Servers: a cut above</a> (0)</li><li>September 3, 2009 -- <a href="http://www.activoinc.com/blog/2009/09/03/quick-way-to-update-fail2ban-jail-conf-file/" title="Quick Way to Update Fail2ban jail.conf file">Quick Way to Update Fail2ban jail.conf file</a> (0)</li><li>August 31, 2009 -- <a href="http://www.activoinc.com/blog/2009/08/31/performance-optimized-httpd-conf-for-magento-ecommerce/" title="Performance Optimized httpd.conf for Magento eCommerce">Performance Optimized httpd.conf for Magento eCommerce</a> (0)</li><li>August 24, 2009 -- <a href="http://www.activoinc.com/blog/2009/08/24/howto-setup-iptables-for-www-and-dbmysql-on-linux/" title="Howto setup iptables for www and db(mysql) on linux">Howto setup iptables for www and db(mysql) on linux</a> (0)</li><li>August 3, 2009 -- <a href="http://www.activoinc.com/blog/2009/08/03/block-access-to-your-dedicated-server-automatically-if-more-than-3-failed-logins/" title="Block access to your dedicated server automatically if more than 3 failed logins">Block access to your dedicated server automatically if more than 3 failed logins</a> (0)</li><li>March 27, 2009 -- <a href="http://www.activoinc.com/blog/2009/03/27/recommended-visual-svn-server-now-with-subversion-16/" title="Recommended: Visual SVN Server, now with Subversion 1.6">Recommended: Visual SVN Server, now with Subversion 1.6</a> (1)</li><li>March 25, 2009 -- <a href="http://www.activoinc.com/blog/2009/03/25/tightening-up-iptables-for-a-dedicated-db-server-mysql-and-centos/" title="Tightening up iptables for a dedicated DB server (MySQL and CentOS)">Tightening up iptables for a dedicated DB server (MySQL and CentOS)</a> (1)</li><li>December 25, 2008 -- <a href="http://www.activoinc.com/blog/2008/12/25/pdnsd-decrease-dns-response-time-and-save-bandwidth/" title="pdnsd &#8211; Decrease DNS response time and save bandwidth">pdnsd &#8211; Decrease DNS response time and save bandwidth</a> (0)</li><li>April 13, 2008 -- <a href="http://www.activoinc.com/blog/2008/04/13/about-linux-distros-ubuntu-and-centos/" title="About Linux Distros: Ubuntu and CentOS">About Linux Distros: Ubuntu and CentOS</a> (9)</li></ul><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Activo?a=q7E527fIqLQ:3mbD3IOrYyw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Activo?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=q7E527fIqLQ:3mbD3IOrYyw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Activo?i=q7E527fIqLQ:3mbD3IOrYyw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=q7E527fIqLQ:3mbD3IOrYyw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Activo?i=q7E527fIqLQ:3mbD3IOrYyw:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=q7E527fIqLQ:3mbD3IOrYyw:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Activo?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Activo/~4/q7E527fIqLQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.activoinc.com/blog/2009/08/23/centos-5-3-install-essentials/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.activoinc.com/blog/2009/08/23/centos-5-3-install-essentials/</feedburner:origLink></item>
		<item>
		<title>Howto change the Base URL in Magento via command line</title>
		<link>http://feedproxy.google.com/~r/Activo/~3/paTI9mgfsH0/</link>
		<comments>http://www.activoinc.com/blog/2009/08/07/howto-change-the-base-url-in-magento-via-command-line/#comments</comments>
		<pubDate>Fri, 07 Aug 2009 18:02:44 +0000</pubDate>
		<dc:creator>Ron Peled</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[baseurl]]></category>
		<category><![CDATA[commandline]]></category>
		<category><![CDATA[howto]]></category>

		<guid isPermaLink="false">http://www.activoinc.com/blog/?p=294</guid>
		<description><![CDATA[A quick howto that complements chandansweb&#8217;s article on how to change the Base URL using phpMyAdmin. On production servers I do not install phpMyAdmin and therefore I need to use command line. Here is how in 3 steps:
Step 1: Login to mysql (command line) and update two records:
Note that the values in square brackets need [...]]]></description>
			<content:encoded><![CDATA[<p>A quick howto that complements chandansweb&#8217;s article on <a href="http://blog.chandanweb.com/magento/how-to-change-base-url-in-magento">how to change the Base URL using phpMyAdmin</a>. On production servers I do not install phpMyAdmin and therefore I need to use command line. Here is how in 3 steps:</p>
<p><strong>Step 1: Login to mysql (command line) and update two records:</strong><br />
Note that the values in square brackets need to be filled with your specific values.</p>
<pre>update [prefix]core_config_data set value="http://[domain]/[rootfolder/]" where path='web/unsecure/base_url';
update [prefix]core_config_data set value="http://[domain]/[rootfolder/]" where path='web/secure/base_url';</pre>
<p><strong>Step 2: Clear cache by removing entries in the /var/cache/* folder:</strong><br />
<strong>Careful</strong> with this one, make sure you are pointing to<strong> the right folder</strong>.</p>
<pre>rm -rf /var/www/[path to html folder]/var/cache/*</pre>
<p><strong>Step 3: Force Magento to clear its database cache by running this php file:</strong><br />
Note that I recommend that you copy and paste this code in a file at your Magento root folder. Then point your browser to this file, it will trigger the clearing of various cache objects in Magento.</p>
<pre>&lt;?php
ob_implicit_flush(true); //Saves having to flush manually
set_time_limit(0); //Set time limit to unlimited, though we shouldnt need to
ignore_user_abort();

require_once("app/Mage.php");
umask(0);

// clean overall cache
Mage::app()-&gt;cleanCache();

// clear 'refresh_catalog_rewrites':
Mage::getSingleton('catalog/url')-&gt;refreshRewrites();
echo 'Catalog Rewrites was refreshed succesfuly&lt;br&gt;';

//  clear 'clear_images_cache':
Mage::getModel('catalog/product_image')-&gt;clearCache();
echo 'Image cache was cleared succesfuly&lt;br&gt;';

//  clear 'refresh_layered_navigation':
Mage::getSingleton('catalogindex/indexer')-&gt;plainReindex();
echo 'Layered Navigation Indices was refreshed succesfuly&lt;br&gt;';
?&gt;</pre>
<p>That should do it, you should now be able to point to your production store and it will pull the right URLs. It worked for me after various attempts of other howto&#8217;s. The above steps are the ones that worked for me.</p>
<h3  class="related_post_title">Most Commected Posts</h3><ul class="related_post"><li>April 13, 2008 -- <a href="http://www.activoinc.com/blog/2008/04/13/about-linux-distros-ubuntu-and-centos/" title="About Linux Distros: Ubuntu and CentOS">About Linux Distros: Ubuntu and CentOS</a> (9)</li><li>October 2, 2009 -- <a href="http://www.activoinc.com/blog/2009/10/02/keywordluv-a-must-have-wordpress-plugin/" title="KeywordLuv: a must have wordpress plugin">KeywordLuv: a must have wordpress plugin</a> (7)</li><li>March 10, 2008 -- <a href="http://www.activoinc.com/blog/2008/03/10/10-key-search-engine-optimization-items-feeding-the-spiders/" title="10 Key Search Engine Optimization Items &#8211; Feeding the Spiders">10 Key Search Engine Optimization Items &#8211; Feeding the Spiders</a> (5)</li><li>October 5, 2009 -- <a href="http://www.activoinc.com/blog/2009/10/05/updating-inove-to-work-with-keywordluv-plugin/" title="Updating iNove to work with KeywordLuv plugin">Updating iNove to work with KeywordLuv plugin</a> (5)</li><li>August 19, 2008 -- <a href="http://www.activoinc.com/blog/2008/08/19/5-missing-features-preventing-joomla-cms-from-entering-the-enterprise-cms-market/" title="5 Missing Features Preventing Joomla! CMS from Entering the Enterprise CMS Market">5 Missing Features Preventing Joomla! CMS from Entering the Enterprise CMS Market</a> (3)</li><li>August 25, 2008 -- <a href="http://www.activoinc.com/blog/2008/08/25/zencart-ver-1-4-looking-ahead/" title="Looking Ahead: ZenCart ver 1.4">Looking Ahead: ZenCart ver 1.4</a> (3)</li><li>September 25, 2009 -- <a href="http://www.activoinc.com/blog/2009/09/25/magentos-order-management-workflow-comprehensive-but-unrealistic/" title="Magento&#8217;s Order Management Workflow: Comprehensive but Unrealistic">Magento&#8217;s Order Management Workflow: Comprehensive but Unrealistic</a> (3)</li><li>October 15, 2009 -- <a href="http://www.activoinc.com/blog/2009/10/15/zencart-1-3-8-and-php-5-2-11-bug-problem-login-to-admin-area/" title="ZenCart 1.3.8 and PHP 5.2.11 Bug: problem login to admin area">ZenCart 1.3.8 and PHP 5.2.11 Bug: problem login to admin area</a> (3)</li><li>July 29, 2007 -- <a href="http://www.activoinc.com/blog/2007/07/29/why-we-chose-eventum-over-any-other-issue-tracking-system/" title="Why we chose Eventum over any other issue tracking system?">Why we chose Eventum over any other issue tracking system?</a> (2)</li><li>June 18, 2009 -- <a href="http://www.activoinc.com/blog/2009/06/18/the-case-for-zencart-supporting-the-long-tail-of-ecommerce/" title="The Case for ZenCart: Supporting the Long Tail of eCommerce">The Case for ZenCart: Supporting the Long Tail of eCommerce</a> (2)</li></ul><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Activo?a=paTI9mgfsH0:pP5P1SZZM-E:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Activo?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=paTI9mgfsH0:pP5P1SZZM-E:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Activo?i=paTI9mgfsH0:pP5P1SZZM-E:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=paTI9mgfsH0:pP5P1SZZM-E:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Activo?i=paTI9mgfsH0:pP5P1SZZM-E:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=paTI9mgfsH0:pP5P1SZZM-E:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Activo?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Activo/~4/paTI9mgfsH0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.activoinc.com/blog/2009/08/07/howto-change-the-base-url-in-magento-via-command-line/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.activoinc.com/blog/2009/08/07/howto-change-the-base-url-in-magento-via-command-line/</feedburner:origLink></item>
		<item>
		<title>Is Magento for eCommerce Scalable?</title>
		<link>http://feedproxy.google.com/~r/Activo/~3/NOqQhllSeGo/</link>
		<comments>http://www.activoinc.com/blog/2009/08/04/is-magento-for-ecommerce-scalable/#comments</comments>
		<pubDate>Wed, 05 Aug 2009 07:59:18 +0000</pubDate>
		<dc:creator>Ron Peled</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[scalability]]></category>

		<guid isPermaLink="false">http://www.activoinc.com/blog/?p=291</guid>
		<description><![CDATA[My recent experience with Magento brings a doubt: is Magento Scalable? I am finalizing a plugin that will allow catalog synchronization with a POS system. Some stores have over 10,000 products, skus to be accurate. I have extended the core classes to accommodate for the product import with certain attributes and was shocked to discover [...]]]></description>
			<content:encoded><![CDATA[<p>My recent experience with Magento brings a doubt: is Magento Scalable? I am finalizing a plugin that will allow catalog synchronization with a POS system. Some stores have over 10,000 products, skus to be accurate. I have extended the core classes to accommodate for the product import with certain attributes and was shocked to discover that for each new product saved, or in code terms, each <em><strong>$product-&gt;save()</strong></em> it was hammering the DB with approximately 1,000 queries. That also meant that importing 1,000 products took approximately 3-5 minutes on a powerful server which included 15K SCSI hard drives.</p>
<p><img class="aligncenter size-full wp-image-292" title="will_magento_scale" src="http://www.activoinc.com/blog/wp-content/uploads/2009/08/will_magento_scale.jpg" alt="will_magento_scale" width="600" height="200" /></p>
<p>Writing directly to the database is not an option because it will potentially introduce a problem with any upgrade efforts and in general is not recommended. There is a limit to how much hardware is being thrown at Magento in order to cover for any performance imperfections. Additionally, almost any interaction with the Magento support team results in lists of mysql configuration best practices which are already in place. Magento: you can run but you cannot hide! Perhaps you cannot run either.</p>
<p>The bottom line is that I am positive that there is a solution, and I am 100% convinced that the Magento developers are working on a solution as I write this blog. It is only in the meantime that it is painful to see all these great sites serving &#8216;gummy&#8217; pages and developers asking how to add the &#8216;Please wait while loading&#8217; AJAX loader to the front end of the store&#8230;</p>
<h3  class="related_post_title">Most Commected Posts</h3><ul class="related_post"><li>April 13, 2008 -- <a href="http://www.activoinc.com/blog/2008/04/13/about-linux-distros-ubuntu-and-centos/" title="About Linux Distros: Ubuntu and CentOS">About Linux Distros: Ubuntu and CentOS</a> (9)</li><li>October 2, 2009 -- <a href="http://www.activoinc.com/blog/2009/10/02/keywordluv-a-must-have-wordpress-plugin/" title="KeywordLuv: a must have wordpress plugin">KeywordLuv: a must have wordpress plugin</a> (7)</li><li>March 10, 2008 -- <a href="http://www.activoinc.com/blog/2008/03/10/10-key-search-engine-optimization-items-feeding-the-spiders/" title="10 Key Search Engine Optimization Items &#8211; Feeding the Spiders">10 Key Search Engine Optimization Items &#8211; Feeding the Spiders</a> (5)</li><li>October 5, 2009 -- <a href="http://www.activoinc.com/blog/2009/10/05/updating-inove-to-work-with-keywordluv-plugin/" title="Updating iNove to work with KeywordLuv plugin">Updating iNove to work with KeywordLuv plugin</a> (5)</li><li>August 19, 2008 -- <a href="http://www.activoinc.com/blog/2008/08/19/5-missing-features-preventing-joomla-cms-from-entering-the-enterprise-cms-market/" title="5 Missing Features Preventing Joomla! CMS from Entering the Enterprise CMS Market">5 Missing Features Preventing Joomla! CMS from Entering the Enterprise CMS Market</a> (3)</li><li>August 25, 2008 -- <a href="http://www.activoinc.com/blog/2008/08/25/zencart-ver-1-4-looking-ahead/" title="Looking Ahead: ZenCart ver 1.4">Looking Ahead: ZenCart ver 1.4</a> (3)</li><li>September 25, 2009 -- <a href="http://www.activoinc.com/blog/2009/09/25/magentos-order-management-workflow-comprehensive-but-unrealistic/" title="Magento&#8217;s Order Management Workflow: Comprehensive but Unrealistic">Magento&#8217;s Order Management Workflow: Comprehensive but Unrealistic</a> (3)</li><li>October 15, 2009 -- <a href="http://www.activoinc.com/blog/2009/10/15/zencart-1-3-8-and-php-5-2-11-bug-problem-login-to-admin-area/" title="ZenCart 1.3.8 and PHP 5.2.11 Bug: problem login to admin area">ZenCart 1.3.8 and PHP 5.2.11 Bug: problem login to admin area</a> (3)</li><li>July 29, 2007 -- <a href="http://www.activoinc.com/blog/2007/07/29/why-we-chose-eventum-over-any-other-issue-tracking-system/" title="Why we chose Eventum over any other issue tracking system?">Why we chose Eventum over any other issue tracking system?</a> (2)</li><li>June 18, 2009 -- <a href="http://www.activoinc.com/blog/2009/06/18/the-case-for-zencart-supporting-the-long-tail-of-ecommerce/" title="The Case for ZenCart: Supporting the Long Tail of eCommerce">The Case for ZenCart: Supporting the Long Tail of eCommerce</a> (2)</li></ul><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Activo?a=NOqQhllSeGo:_0eMIfPsKNY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Activo?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=NOqQhllSeGo:_0eMIfPsKNY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Activo?i=NOqQhllSeGo:_0eMIfPsKNY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=NOqQhllSeGo:_0eMIfPsKNY:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Activo?i=NOqQhllSeGo:_0eMIfPsKNY:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=NOqQhllSeGo:_0eMIfPsKNY:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Activo?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Activo/~4/NOqQhllSeGo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.activoinc.com/blog/2009/08/04/is-magento-for-ecommerce-scalable/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.activoinc.com/blog/2009/08/04/is-magento-for-ecommerce-scalable/</feedburner:origLink></item>
		<item>
		<title>Magento: Hard but not Impossible</title>
		<link>http://feedproxy.google.com/~r/Activo/~3/wco7ps4_ahA/</link>
		<comments>http://www.activoinc.com/blog/2009/08/04/magento-hard-but-not-impossible/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 17:16:11 +0000</pubDate>
		<dc:creator>Ron Peled</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[eCommerce]]></category>
		<category><![CDATA[Mage_Catalog_Model_Product]]></category>

		<guid isPermaLink="false">http://www.activoinc.com/blog/?p=288</guid>
		<description><![CDATA[In the last few weeks I have been hard at work on a Magento plugin that extends the eCommerce app to become a front end of a POS (point of sale) system. With over 6,000 files Magento can certainly be intimidating at first, but as you get familiar with its architecture you find it less [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-289" title="magento_hard_but_not_impossible" src="http://www.activoinc.com/blog/wp-content/uploads/2009/08/magento_hard_but_not_impossible.jpg" alt="magento_hard_but_not_impossible" width="160" height="153" />In the last few weeks I have been hard at work on a Magento plugin that extends the eCommerce app to become a front end of a POS (point of sale) system. With over 6,000 files Magento can certainly be intimidating at first, but as you get familiar with its architecture you find it less and less intimidating. One main design feature makes it easy to find a class by its class names.</p>
<p>For example, the class <em><strong>Mage_Catalog_Model_Product</strong> </em>will be located in the <strong>/app/code/core/Mage/Catalog/Model</strong> folder and the file name is <strong>Product.php</strong>. If you ever need to instantiate the class, use <em><strong>Mage::getModel(&#8217;catalog/product&#8217;).</strong> </em></p>
<p>Another useful tip about the architecture is that most everything is handled in the various session objects and every operation is basically an event that occurs which then calls a certain method within a particular class. Some of these events are dispatched and can be used by <a href="http://www.magentocommerce.com/wiki/customizing_magento_using_event-observer_method">Magento&#8217;s event/observer</a> architecture but most are not and therefore one needs to <a href="http://www.magentocommerce.com/wiki/groups/174/changing_and_customizing_magento_code">override the class</a> instead.</p>
<p>I know this is very vague but will make sense if you are knee deep inside the magento code.</p>
<h3  class="related_post_title">Most Commected Posts</h3><ul class="related_post"><li>April 13, 2008 -- <a href="http://www.activoinc.com/blog/2008/04/13/about-linux-distros-ubuntu-and-centos/" title="About Linux Distros: Ubuntu and CentOS">About Linux Distros: Ubuntu and CentOS</a> (9)</li><li>October 2, 2009 -- <a href="http://www.activoinc.com/blog/2009/10/02/keywordluv-a-must-have-wordpress-plugin/" title="KeywordLuv: a must have wordpress plugin">KeywordLuv: a must have wordpress plugin</a> (7)</li><li>March 10, 2008 -- <a href="http://www.activoinc.com/blog/2008/03/10/10-key-search-engine-optimization-items-feeding-the-spiders/" title="10 Key Search Engine Optimization Items &#8211; Feeding the Spiders">10 Key Search Engine Optimization Items &#8211; Feeding the Spiders</a> (5)</li><li>October 5, 2009 -- <a href="http://www.activoinc.com/blog/2009/10/05/updating-inove-to-work-with-keywordluv-plugin/" title="Updating iNove to work with KeywordLuv plugin">Updating iNove to work with KeywordLuv plugin</a> (5)</li><li>August 19, 2008 -- <a href="http://www.activoinc.com/blog/2008/08/19/5-missing-features-preventing-joomla-cms-from-entering-the-enterprise-cms-market/" title="5 Missing Features Preventing Joomla! CMS from Entering the Enterprise CMS Market">5 Missing Features Preventing Joomla! CMS from Entering the Enterprise CMS Market</a> (3)</li><li>August 25, 2008 -- <a href="http://www.activoinc.com/blog/2008/08/25/zencart-ver-1-4-looking-ahead/" title="Looking Ahead: ZenCart ver 1.4">Looking Ahead: ZenCart ver 1.4</a> (3)</li><li>September 25, 2009 -- <a href="http://www.activoinc.com/blog/2009/09/25/magentos-order-management-workflow-comprehensive-but-unrealistic/" title="Magento&#8217;s Order Management Workflow: Comprehensive but Unrealistic">Magento&#8217;s Order Management Workflow: Comprehensive but Unrealistic</a> (3)</li><li>October 15, 2009 -- <a href="http://www.activoinc.com/blog/2009/10/15/zencart-1-3-8-and-php-5-2-11-bug-problem-login-to-admin-area/" title="ZenCart 1.3.8 and PHP 5.2.11 Bug: problem login to admin area">ZenCart 1.3.8 and PHP 5.2.11 Bug: problem login to admin area</a> (3)</li><li>July 29, 2007 -- <a href="http://www.activoinc.com/blog/2007/07/29/why-we-chose-eventum-over-any-other-issue-tracking-system/" title="Why we chose Eventum over any other issue tracking system?">Why we chose Eventum over any other issue tracking system?</a> (2)</li><li>June 18, 2009 -- <a href="http://www.activoinc.com/blog/2009/06/18/the-case-for-zencart-supporting-the-long-tail-of-ecommerce/" title="The Case for ZenCart: Supporting the Long Tail of eCommerce">The Case for ZenCart: Supporting the Long Tail of eCommerce</a> (2)</li></ul><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Activo?a=wco7ps4_ahA:i3nJiDApFxY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Activo?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=wco7ps4_ahA:i3nJiDApFxY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Activo?i=wco7ps4_ahA:i3nJiDApFxY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=wco7ps4_ahA:i3nJiDApFxY:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Activo?i=wco7ps4_ahA:i3nJiDApFxY:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=wco7ps4_ahA:i3nJiDApFxY:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Activo?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Activo/~4/wco7ps4_ahA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.activoinc.com/blog/2009/08/04/magento-hard-but-not-impossible/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.activoinc.com/blog/2009/08/04/magento-hard-but-not-impossible/</feedburner:origLink></item>
		<item>
		<title>Block access to your dedicated server automatically if more than 3 failed logins</title>
		<link>http://feedproxy.google.com/~r/Activo/~3/_bUOd-dPLso/</link>
		<comments>http://www.activoinc.com/blog/2009/08/03/block-access-to-your-dedicated-server-automatically-if-more-than-3-failed-logins/#comments</comments>
		<pubDate>Mon, 03 Aug 2009 08:07:26 +0000</pubDate>
		<dc:creator>Ron Peled</dc:creator>
				<category><![CDATA[Web Application Hosting]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.activoinc.com/blog/?p=284</guid>
		<description><![CDATA[Lately I have been noticing high activity of cyberattacks. In fact, a few of our servers got hit and had to be rebuilt. Of course some of these servers were never built with security in mind. We did manage to save all the data and the redo took less than one day total so the [...]]]></description>
			<content:encoded><![CDATA[<p>Lately I have been noticing high activity of cyberattacks. In fact, a few of our servers got hit and had to be rebuilt. Of course some of these servers were never built with security in mind. We did manage to save all the data and the redo took less than one day total so the end result is great overall with fully patched servers, firewall, email alerts in place, and finally a way to automatically block failed logins. I&#8217;ll show you how to setup the last part, it is actually quite easy.</p>
<p>So, I assume you have a CentOS server. I am using CentOS 5.3 fully updated (yum update) and i have the <a href="http://www.atomicorp.com/channels/">atomicorp repository</a> setup. The atomicorp is not necessary (it seems) but will allow you to use newer versions of PHP and other packages. The package that will do the work is called <a href="http://www.fail2ban.org/wiki/index.php/Main_Page">fail2ban</a>. A simple install seems to take care of it for us:</p>
<pre>yum install fail2ban</pre>
<p>Lets install the service, in case that we restart the server &#8211; the service will automatically start running, I use ntsysv for this:</p>
<pre>ntsysv (hit enter, select the service, make sure it has a start inside the brackets, and click 'ok')</pre>
<p>Lets start the service:</p>
<pre>service fail2ban start</pre>
<p>Here is recommend to setup a auto forward on the root emails to you:</p>
<pre>echo 'youremail@yourdomain.com' &gt; ~/.forward</pre>
<p>You should be all set. Try to check the log files once a week after the install, see if the service actually blocked potential hackers. Let me know if this worked for you or if you are using a better package?</p>
<h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li>November 30, 2008 -- <a href="http://www.activoinc.com/blog/2008/11/30/centos-for-linux-servers-a-cut-above/" title="CentOS for Linux Servers: a cut above">CentOS for Linux Servers: a cut above</a> (0)</li><li>April 13, 2008 -- <a href="http://www.activoinc.com/blog/2008/04/13/about-linux-distros-ubuntu-and-centos/" title="About Linux Distros: Ubuntu and CentOS">About Linux Distros: Ubuntu and CentOS</a> (9)</li><li>September 3, 2009 -- <a href="http://www.activoinc.com/blog/2009/09/03/quick-way-to-update-fail2ban-jail-conf-file/" title="Quick Way to Update Fail2ban jail.conf file">Quick Way to Update Fail2ban jail.conf file</a> (0)</li><li>August 31, 2009 -- <a href="http://www.activoinc.com/blog/2009/08/31/performance-optimized-httpd-conf-for-magento-ecommerce/" title="Performance Optimized httpd.conf for Magento eCommerce">Performance Optimized httpd.conf for Magento eCommerce</a> (0)</li><li>August 24, 2009 -- <a href="http://www.activoinc.com/blog/2009/08/24/howto-setup-iptables-for-www-and-dbmysql-on-linux/" title="Howto setup iptables for www and db(mysql) on linux">Howto setup iptables for www and db(mysql) on linux</a> (0)</li><li>August 23, 2009 -- <a href="http://www.activoinc.com/blog/2009/08/23/centos-5-3-install-essentials/" title="CentOS 5.3 Install Essentials">CentOS 5.3 Install Essentials</a> (0)</li><li>March 27, 2009 -- <a href="http://www.activoinc.com/blog/2009/03/27/recommended-visual-svn-server-now-with-subversion-16/" title="Recommended: Visual SVN Server, now with Subversion 1.6">Recommended: Visual SVN Server, now with Subversion 1.6</a> (1)</li><li>March 25, 2009 -- <a href="http://www.activoinc.com/blog/2009/03/25/tightening-up-iptables-for-a-dedicated-db-server-mysql-and-centos/" title="Tightening up iptables for a dedicated DB server (MySQL and CentOS)">Tightening up iptables for a dedicated DB server (MySQL and CentOS)</a> (1)</li><li>December 25, 2008 -- <a href="http://www.activoinc.com/blog/2008/12/25/pdnsd-decrease-dns-response-time-and-save-bandwidth/" title="pdnsd &#8211; Decrease DNS response time and save bandwidth">pdnsd &#8211; Decrease DNS response time and save bandwidth</a> (0)</li></ul><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Activo?a=_bUOd-dPLso:d3gZkNJdJvs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Activo?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=_bUOd-dPLso:d3gZkNJdJvs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Activo?i=_bUOd-dPLso:d3gZkNJdJvs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=_bUOd-dPLso:d3gZkNJdJvs:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Activo?i=_bUOd-dPLso:d3gZkNJdJvs:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=_bUOd-dPLso:d3gZkNJdJvs:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Activo?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Activo/~4/_bUOd-dPLso" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.activoinc.com/blog/2009/08/03/block-access-to-your-dedicated-server-automatically-if-more-than-3-failed-logins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.activoinc.com/blog/2009/08/03/block-access-to-your-dedicated-server-automatically-if-more-than-3-failed-logins/</feedburner:origLink></item>
		<item>
		<title>PHP SimpleXML Rules!</title>
		<link>http://feedproxy.google.com/~r/Activo/~3/cRCnZYMAj6c/</link>
		<comments>http://www.activoinc.com/blog/2009/08/01/php-simplexml-rules/#comments</comments>
		<pubDate>Sat, 01 Aug 2009 20:12:37 +0000</pubDate>
		<dc:creator>Ron Peled</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[SimpleXML]]></category>

		<guid isPermaLink="false">http://www.activoinc.com/blog/?p=280</guid>
		<description><![CDATA[Last week I was debugging an xml parsing utility in PHP. Debugging can be enjoyable when it goes well but in my case it just wasn&#8217;t happening. It felt like chewing mud. The issue was actually a bug within the libxml library which is a native PHP extension. Apparently it was a bug that was [...]]]></description>
			<content:encoded><![CDATA[<p>Last week I was debugging an xml parsing utility in PHP. Debugging can be enjoyable when it goes well but in my case it just wasn&#8217;t happening. It felt like chewing mud. The issue was actually a bug within the libxml library which is a native PHP extension. Apparently it was a bug that was introduced in PHP version 5.2.6 and was addressed in version 5.2.8 or 5.2.9. The bug presented itself when using the xml_parser methods which are built into the PHP. It is the old way of parsing XML with PHP, the new way is using SimpleXML, SimpleXMLElement, or XMLReader objects.</p>
<p>Now, once I read over the documentation I realized how easy it is to use the new SimpleXML. Additionally, I reduced my XML related code size from 100+ lines to less than 20. Fun!</p>
<p>Here is a short example of how to use it, let&#8217;s say we have the following XML structure:</p>
<pre>&lt;webservers&gt;
 &lt;webserver&gt;
 &lt;hostname&gt;dev1&lt;/hostname&gt;
 &lt;purpose&gt;eCommerce LAMP Development&lt;/purpose&gt;
 &lt;os&gt;CentOS&lt;/os&gt;
 &lt;applications&gt;
 &lt;application isInstalled="1"&gt;Apache&lt;/application&gt;
 &lt;application isInstalled="1"&gt;MySQL&lt;/application&gt;
 &lt;application isInstalled="1"&gt;PHP&lt;/application&gt;
 &lt;/applications&gt;
 &lt;/webserver&gt;
&lt;/webservers&gt;</pre>
<p>Now lets observe how to use the SimpleXML class:</p>
<pre>//We'll assume that the above xml is represented as a string and located inside $xmlDoc
//Here we create the SimpleXML object named $xml from the xmlDoc shown above
$xml = simplexml_load_string($xmlDoc);

//Now we can loop through the nodes
//Notice how the node translates to a property of the object)
foreach($xml-&gt;webservers-&gt;webserver as $webserver)
{
  //Here we can use $webserver as a sub-node
  echo "My Web Server Info:\n";
  echo "Hostname: " . $webserver-&gt;hostname . "\n";
  echo "Purpose: " . $webserver-&gt;purpose . "\n";
  echo "OS: ". $webserver-&gt;os . "\n";
  //Now we'll see how we can use the xml node attributes
  foreach($webserver-&gt;applications as $application)
  {
    echo "Application: ". $application;
    echo ($application['isInstalled'] == 1 ? " is installed" : " is not installed");
    echo "\n";
  }
}</pre>
<p>That is it! easy right? I thought so. At least it is much easier than working directly with the old xml_parser methods which turns to be buggy in recent versions of PHP.</p>
<p>A word of caution: I found it is necessary to join the values of the SimpleXML object to a string, sometimes even to an empty string in case that I am sending it to a function. In other words, i had to use:</p>
<pre>myFunction($webserver-&gt;hostname."");</pre>
<p>instead of simply:</p>
<pre>myFunction($webserver-&gt;hostname);</pre>
<p>and the reason is that otherwise PHP would pass a copy of the object instead of triggering the toString() method. By adding the empty string we force PHP to first convert it to string and then send it to the function or method.</p>
<h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li>October 15, 2009 -- <a href="http://www.activoinc.com/blog/2009/10/15/zencart-1-3-8-and-php-5-2-11-bug-problem-login-to-admin-area/" title="ZenCart 1.3.8 and PHP 5.2.11 Bug: problem login to admin area">ZenCart 1.3.8 and PHP 5.2.11 Bug: problem login to admin area</a> (3)</li><li>June 25, 2009 -- <a href="http://www.activoinc.com/blog/2009/06/25/method-overloading-workaround-in-php5/" title="Method Overloading Workaround in PHP5">Method Overloading Workaround in PHP5</a> (0)</li><li>February 16, 2009 -- <a href="http://www.activoinc.com/blog/2009/02/16/zend-studio-61-wrong-way-to-enhance-a-php-ide/" title="Zend Studio 6.1: Wrong Way to Enhance a PHP IDE!">Zend Studio 6.1: Wrong Way to Enhance a PHP IDE!</a> (1)</li><li>August 25, 2008 -- <a href="http://www.activoinc.com/blog/2008/08/25/zencart-ver-1-4-looking-ahead/" title="Looking Ahead: ZenCart ver 1.4">Looking Ahead: ZenCart ver 1.4</a> (3)</li></ul><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Activo?a=cRCnZYMAj6c:uPa-DpY4Sik:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Activo?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=cRCnZYMAj6c:uPa-DpY4Sik:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Activo?i=cRCnZYMAj6c:uPa-DpY4Sik:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=cRCnZYMAj6c:uPa-DpY4Sik:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Activo?i=cRCnZYMAj6c:uPa-DpY4Sik:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Activo?a=cRCnZYMAj6c:uPa-DpY4Sik:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Activo?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Activo/~4/cRCnZYMAj6c" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.activoinc.com/blog/2009/08/01/php-simplexml-rules/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.activoinc.com/blog/2009/08/01/php-simplexml-rules/</feedburner:origLink></item>
	</channel>
</rss>
