Last months we have been working on renewing all Joomla! extensions for compatibility with Joomla! 3.0, and one extension was falling behind: Vm2Mage - it did not even have a Joomla! 2.5 version yet. So here it is: Version 0.10.0 of the tool to migrate from VirtueMart to Magento.
Does there need to be a Joomla! 3.0 version?
One question we asked ourselves was a simple one: Do we actually need to create a Joomla! 2.5 version of Vm2Mage? Vm2Mage is used to migrate VirtueMart data to Magento, so that assumes there is a reason to give up on VirtueMart and choose Magento instead. But if Joomla! 3.0 and VirtueMart 2 are used (at this time of writing) in one site, how big are the chances on migrating from that choice to Magento? With only a couple of months of usage? We assumed this chance to be very little - so we won't start for a Joomla! 3.0 of Vm2Mage just yet.
Joomla! 1.6 is Joomla! 1.7 is Joomla! 2.5
However, having no Joomla! 2.5 version was a major short-coming: The migration-tool now not only supports Joomla! 2.5, but is backwards compatible with Joomla! 1.6 and Joomla! 1.7 as well (which are both very different from Joomla! 1.5 but similar to Joomla! 2.5).
VirtueMart 2 support
Because Joomla! 2.5 also involved the usae of VirtueMart 2, Vm2Mage now also incorporates support for VirtueMart 2 - and that's where actually most of the work went into. From VirtueMart 1 to 2, the database-table-prefix of VirtueMart tables changed (#__vm to #__virtuemart), but that's only one example for the numerous database changes.
Vm2Mage now makes use of a parameter to determine the Virtuemart-version. By default, VM1 is used under Joomla! 1.5 and VM2 under Joomla! 1.6 and later. All database-queries are switching there syntax depending on this flag. For instance, with VM1 the product-description comes from the main product-table. With VM2, a new product-table is used for the multilingual data, so an extra query-join is used to bind that data into the result-set.
Well, all that sounds very complex (and it is), but we are just happy to say it works. It just works.