Vous êtes sur la page 1sur 32

ExampleCodeReview

PreparedbyGarethPrice
gareth@clearandfizzy.com

Project Name Example


Basic Outline

Initial code review of core Magento files

Type Code Review

Summary
Example.co.uk are looking at upgrading their Magento version from 1.4.2.0 to the latest release (Version 1.7.0.2 at time of writing). Example are aware that changes to the Core Magento files have been made ( contrary to Best practice ) by developers that have worked on the site. If not correctly implemented the functionality added to these core files will be lost during the upgrade process. Example are aware of this and are keen to get a handle on the work involved.

Support Documents
V1.0.0 Core File Differences.txt Document

Revisions
V1.0.0 22/Sept/2013 Gareth Price Initial Revision

Project:ExampleCodeReview|Proposal:#00101|DatePrepared:22/09/2013 ClearandfizzyLimited|CompanyNo.08230961|gareth@clearandfizzy.com 2013ClearandfizzyLimited.AllRightsReserved.

ExampleCodeReview
PreparedbyGarethPrice
gareth@clearandfizzy.com

Initial Findings
ExampleInstallationDetails
Installed Magento Version: 1.4.2.0 Installation Date: Mon, 12 Sep 2011 08:51:18 Latest Magento Version: 1.7.0.2 Release Date: Friday 5 July, 2012 If i could direct your attention to the release notes, as you scroll down the page, the new features and security fixes are quite vast. http://www.magentocommerce.com/download/release_notes#Release Notes - Magento 1.7.0.2 (Jul 5, 2012)

Summary of CORE Magento files changed


Below is a list of Core files that have been direcly altered from the base 1.4.2.0 installation of Magento, changes within these files will be lost if we were to upgrade. /app/code/core/Mage/Adminhtml/Block/Report/Product/Lowstock/Grid.php /app/code/core/Mage/Adminhtml/Block/Sales/Invoice/Grid.php /app/code/core/Mage/Adminhtml/Block/Sales/Order/Create/Form/Account.php /app/code/core/Mage/Adminhtml/Block/Sales/Order/Grid.php /app/code/core/Mage/Adminhtml/Block/Sales/Order/Invoice/View.php /app/code/core/Mage/Adminhtml/Block/Sales/Order/View.php /app/code/core/Mage/Adminhtml/Model/System/Config/Source/Catalog/ListSort.php /app/code/core/Mage/Adminhtml/controllers/Catalog/ProductController.php /app/code/core/Mage/Bundle/Block/Adminhtml/Catalog/Product/Edit/Tab/Attributes/Special.p hp /app/code/core/Mage/Bundle/Block/Adminhtml/Catalog/Product/Edit/Tab/Attributes.php /app/code/core/Mage/Bundle/Block/Catalog/Product/View/Type/Bundle/Option.php /app/code/core/Mage/Bundle/Block/Sales/Order/Items/Renderer.php /app/code/core/Mage/Bundle/Model/Product/Price.php /app/code/core/Mage/Bundle/Model/Product/Type.php /app/code/core/Mage/Catalog/Model/Abstract.php /app/code/core/Mage/Catalog/Model/Category/Attribute/Source/Sortby.php /app/code/core/Mage/CatalogInventory/Model/Observer.php /app/code/core/Mage/CatalogInventory/Model/Stock/Item.php /app/code/core/Mage/CatalogRule/etc/config.xml /app/code/core/Mage/Checkout/Block/Onepage/Shipping/Method.php
Project:ExampleCodeReview|Proposal:#00101|DatePrepared:22/09/2013 ClearandfizzyLimited|CompanyNo.08230961|gareth@clearandfizzy.com 2013ClearandfizzyLimited.AllRightsReserved.

ExampleCodeReview
PreparedbyGarethPrice
gareth@clearandfizzy.com

/app/code/core/Mage/Checkout/Block/Onepage/Shipping.php /app/code/core/Mage/Checkout/controllers/CartController.php /app/code/core/Mage/Checkout/controllers/OnepageController.php /app/code/core/Mage/GoogleAnalytics/Block/Ga.php /app/code/core/Mage/Log/Model/Visitor.php /app/code/core/Mage/Page/etc/config.xml /app/code/core/Mage/Payment/Block/Form/Cc.php /app/code/core/Mage/Paypal/etc/config.xml /app/code/core/Mage/Sales/etc/config.xml /app/code/core/Mage/SecureHosting/Block/Form.php /app/code/core/Mage/SecureHosting/Block/Redirect.php /app/code/core/Mage/SecureHosting/Helper/Data.php /app/code/core/Mage/SecureHosting/Model/Config.php /app/code/core/Mage/SecureHosting/Model/Redirect.php /app/code/core/Mage/SecureHosting/Model/Source/Language.php /app/code/core/Mage/SecureHosting/controllers/RedirectController.php /app/code/core/Mage/SecureHosting/etc/config.xml /app/code/core/Mage/SecureHosting/etc/system.xml /app/code/core/Mage/SecureHosting/sql/SecureHosting_setup/mysql4-install-0.1.0.php /app/code/core/Mage/Shipping/Model/Shipping.php

Detailed List of changes to CORE Magento files


Below is a list of changes made to each file between Example and Magento 1.4.2.0 - these changes will need to be extracted and correctly extented using Magento Best Practice in order for the core files to be upgraded and the changes to be migrated. As the list of changes is quite considerable ive included them in an external file for download. Core File Changes.txt Document
--- httpdocs/app/code/core/Mage/Adminhtml/Block/Report/Product/Lowstock/Grid.php Thu Nov 10 11:19:54 2011 +++ magento-1.4.2.0/app/code/core/Mage/Adminhtml/Block/Report/Product/Lowstock/Grid.php Wed Dec 8 21:12:01 2010 @@ -61,7 +61,6 @@ class Mage_Adminhtml_Block_Report_Produc ->setStoreId($storeId) ->filterByIsQtyProductTypes() ->joinInventoryItem('qty') ->joinInventoryItem('low_stock_date') // # NuBlue - added this, because it might be a useful feature ->useManageStockFilter($storeId) ->useNotifyStockQtyFilter($storeId) ->setOrder('qty', 'asc'); @@ -97,14 +96,6 @@ class Mage_Adminhtml_Block_Report_Produc 'index' =>'qty', 'type' =>'number' )); Project:ExampleCodeReview|Proposal:#00101|DatePrepared:22/09/2013 ClearandfizzyLimited|CompanyNo.08230961|gareth@clearandfizzy.com 2013ClearandfizzyLimited.AllRightsReserved.

ExampleCodeReview
PreparedbyGarethPrice
gareth@clearandfizzy.com

// # NuBlue - added this, because it might be a useful feature $this->addColumn('low_stock_date', array( 'header' =>Mage::helper('reports')->__('Low Stock Date'), 'sortable' =>false, 'index' =>'low_stock_date', 'type' =>'date' )); $this->addExportType('*/*/exportLowstockCsv', Mage::helper('reports')->__('CSV')); $this->addExportType('*/*/exportLowstockExcel', Mage::helper('reports')->__('Excel'));

--- httpdocs/app/code/core/Mage/Adminhtml/Block/Sales/Invoice/Grid.php Wed Feb 22 13:38:34 2012 +++ magento-1.4.2.0/app/code/core/Mage/Adminhtml/Block/Sales/Invoice/Grid.php Wed Dec 8 21:12:01 2010 @@ -134,15 +134,12 @@ class Mage_Adminhtml_Block_Sales_Invoice $this->setMassactionIdField('entity_id'); $this->getMassactionBlock()->setFormFieldName('invoice_ids'); $this->getMassactionBlock()->setUseSelectAll(false); -// # NuBlue - removed -// $this->getMassactionBlock()->addItem('pdfinvoices_order', array( -// 'label'=> Mage::helper('sales')->__('PDF Invoices'), -// 'url' => $this->getUrl('*/sales_invoice/pdfinvoices'), -// )); $this->getMassactionBlock()->addItem('pdfinvoice_order', array( 'label'=> Mage::helper('sales')->__('PDF Invoices'), 'url' => $this->getUrl('pickpack/sales_order/mooinvoice'), )); + + $this->getMassactionBlock()->addItem('pdfinvoices_order', array( + 'label'=> Mage::helper('sales')->__('PDF Invoices'), + 'url' => $this->getUrl('*/sales_invoice/pdfinvoices'), + )); + return $this; } --- httpdocs/app/code/core/Mage/Adminhtml/Block/Sales/Order/Create/Form/Account.php Fri Jun 29 12:11:01 2012 +++ magento-1.4.2.0/app/code/core/Mage/Adminhtml/Block/Sales/Order/Create/Form/Account.php Wed Dec 8 21:12:01 2010 @@ -20,12 +20,10 @@ * * @category Mage * @package Mage_Adminhtml - * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com) + * @copyright Copyright (c) 2010 Magento Inc. (http://www.magentocommerce.com) * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) */ -/*************************************************************************************** ***************************************************************************************** ************************************************************************************** -// # NuBlue - Fixed the bug for selecting customer groups in magento 1.4.2 ****************************************************************** -**************************************************************************************** ***************************************************************************************** ***************************************************************************************** *******/ + Project:ExampleCodeReview|Proposal:#00101|DatePrepared:22/09/2013 ClearandfizzyLimited|CompanyNo.08230961|gareth@clearandfizzy.com 2013ClearandfizzyLimited.AllRightsReserved.

ExampleCodeReview
PreparedbyGarethPrice
gareth@clearandfizzy.com

/** * Create order account form * @@ -141,7 +139,7 @@ class Mage_Adminhtml_Block_Sales_Order_C $data[substr($key, 9)] = $value; } } + $data['group_id'] = $this->getCreateOrderModel()->getCustomerGroupId(); if ($this->getQuote()->getCustomerEmail()) { $data['email'] = $this->getQuote()->getCustomerEmail(); } --- httpdocs/app/code/core/Mage/Adminhtml/Block/Sales/Order/Grid.php Tue Feb 21 11:42:33 2012 +++ magento-1.4.2.0/app/code/core/Mage/Adminhtml/Block/Sales/Order/Grid.php Wed Dec 8 21:12:01 2010 @@ -174,29 +174,26 @@ class Mage_Adminhtml_Block_Sales_Order_G 'url' => $this->getUrl('*/sales_order/massUnhold'), )); } -// # NuBlue - removed these, so that the client only uses the Moogento PickPack actions! -// -// $this->getMassactionBlock()->addItem('pdfinvoices_order', array( -// 'label'=> Mage::helper('sales')->__('Print Invoices'), -// 'url' => $this->getUrl('*/sales_order/pdfinvoices'), -// )); -// -// $this->getMassactionBlock()->addItem('pdfshipments_order', array( -// 'label'=> Mage::helper('sales')->__('Print Packingslips'), -// 'url' => $this->getUrl('*/sales_order/pdfshipments'), -// )); -// -// $this->getMassactionBlock()->addItem('pdfcreditmemos_order', array( -// 'label'=> Mage::helper('sales')->__('Print Credit Memos'), -// 'url' => $this->getUrl('*/sales_order/pdfcreditmemos'), -// )); -// -// $this->getMassactionBlock()->addItem('pdfdocs_order', array( -// 'label'=> Mage::helper('sales')->__('Print All'), -// 'url' => $this->getUrl('*/sales_order/pdfdocs'), -// )); + + + + + + + + + + + + + + + + $this->getMassactionBlock()->addItem('pdfinvoices_order', array( 'label'=> Mage::helper('sales')->__('Print Invoices'), 'url' => $this->getUrl('*/sales_order/pdfinvoices'), )); $this->getMassactionBlock()->addItem('pdfshipments_order', array( 'label'=> Mage::helper('sales')->__('Print Packingslips'), 'url' => $this->getUrl('*/sales_order/pdfshipments'), )); $this->getMassactionBlock()->addItem('pdfcreditmemos_order', array( 'label'=> Mage::helper('sales')->__('Print Credit Memos'), 'url' => $this->getUrl('*/sales_order/pdfcreditmemos'), )); $this->getMassactionBlock()->addItem('pdfdocs_order', array( Project:ExampleCodeReview|Proposal:#00101|DatePrepared:22/09/2013 ClearandfizzyLimited|CompanyNo.08230961|gareth@clearandfizzy.com 2013ClearandfizzyLimited.AllRightsReserved.

ExampleCodeReview
PreparedbyGarethPrice
gareth@clearandfizzy.com

+ + +

'label'=> Mage::helper('sales')->__('Print All'), 'url' => $this->getUrl('*/sales_order/pdfdocs'), )); return $this; }

--- httpdocs/app/code/core/Mage/Adminhtml/Block/Sales/Order/Invoice/View.php Wed Feb 22 13:46:05 2012 +++ magento-1.4.2.0/app/code/core/Mage/Adminhtml/Block/Sales/Order/Invoice/View.php Wed Dec 8 21:12:01 2010 @@ -176,11 +176,7 @@ class Mage_Adminhtml_Block_Sales_Order_I public function getPrintUrl() { //return $this->getUrl('*/*/print', array( // 'invoice_id' => $this->getInvoice()->getId() //)); // # NuBlue return $this->getUrl('pickpack/sales_order/mooinvoice', array( return $this->getUrl('*/*/print', array( 'invoice_id' => $this->getInvoice()->getId() )); }

--- httpdocs/app/code/core/Mage/Adminhtml/Block/Sales/Order/View.php Tue Nov 1 16:29:08 2011 +++ magento-1.4.2.0/app/code/core/Mage/Adminhtml/Block/Sales/Order/View.php Wed Dec 8 21:12:01 2010 @@ -76,13 +76,6 @@ class Mage_Adminhtml_Block_Sales_Order_V )); } // # NuBlue - we shouldn't have added this here, very naughty // we should move it to a custom extension! $this->_addButton('order_print', array( 'label' => Mage::helper('sales')->__('Print Order'), 'onclick' => 'javascript:window.print();', )); if ($this->_isAllowedAction('emails') && !$order->isCanceled()) { $message = Mage::helper('sales')->__('Are you sure you want to send order email to customer?'); $this->addButton('send_notification', array(

--- httpdocs/app/code/core/Mage/Adminhtml/Model/System/Config/Source/Catalog/ListSort.php Thu Oct 6 15:44:19 2011 +++ magento-1.4.2.0/app/code/core/Mage/Adminhtml/Model/System/Config/Source/Catalog/ListSort.php Wed Dec 8 21:11:55 2010 @@ -42,10 +42,10 @@ class Mage_Adminhtml_Model_System_Config public function toOptionArray() { $options = array(); /*$options[] = array( + $options[] = array( 'label' => Mage::helper('catalog')->__('Best Value'), 'value' => 'position' );*/ + ); foreach ($this->_getCatalogConfig()->getAttributesUsedForSortBy() as $attribute) { $options[] = array( Project:ExampleCodeReview|Proposal:#00101|DatePrepared:22/09/2013 ClearandfizzyLimited|CompanyNo.08230961|gareth@clearandfizzy.com 2013ClearandfizzyLimited.AllRightsReserved.

ExampleCodeReview
PreparedbyGarethPrice
gareth@clearandfizzy.com

'label' => Mage::helper('catalog')->__($attribute['frontend_label']), --- httpdocs/app/code/core/Mage/Adminhtml/controllers/Catalog/ProductController.php Wed Dec 14 14:15:11 2011 +++ magento-1.4.2.0/app/code/core/Mage/Adminhtml/controllers/Catalog/ProductController.php Wed Dec 8 21:11:55 2010 @@ -223,7 +223,7 @@ class Mage_Adminhtml_Catalog_ProductCont } + $this->_title($product->getName()); Mage::dispatchEvent('catalog_product_edit_action', array('product' => $product)); $_additionalLayoutPart = ''; --- httpdocs/app/code/core/Mage/Bundle/Block/Adminhtml/Catalog/Product/Edit/Tab/Attributes/Special.php Wed Dec 14 16:19:28 2011 +++ magento-1.4.2.0/app/code/core/Mage/Bundle/Block/Adminhtml/Catalog/Product/Edit/Tab/Attributes/Special. php Wed Dec 8 21:11:51 2010 @@ -38,7 +38,6 @@ class Mage_Bundle_Block_Adminhtml_Catalo $html = '<input id="'.$this->getElement()->getHtmlId().'" name="'.$this->getElement()->getName() .'" value="'.$this->getElement()->getEscapedValue().'" '.$this->getElement()->serialize($this->getElement()->getHtmlAttributes()).'/>'."\n" .'<strong>[%]</strong>';; return $html; } } --- httpdocs/app/code/core/Mage/Bundle/Block/Adminhtml/Catalog/Product/Edit/Tab/Attributes.php Mon Dec 19 10:09:29 2011 +++ magento-1.4.2.0/app/code/core/Mage/Bundle/Block/Adminhtml/Catalog/Product/Edit/Tab/Attributes.php Wed Dec 8 21:11:51 2010 @@ -51,13 +51,6 @@ class Mage_Bundle_Block_Adminhtml_Catalo ); } if ($price = $this->getForm()->getElement('fixedPrice')) { $price->setRenderer( $this->getLayout()->createBlock('bundle/adminhtml_catalog_product_edit_tab_attributes_extend') ->setDisableChild(true) ); } if ($price = $this->getForm()->getElement('price')) { $price->setRenderer( $this->getLayout()->createBlock('bundle/adminhtml_catalog_product_edit_tab_attributes_extend') --- httpdocs/app/code/core/Mage/Bundle/Block/Catalog/Product/View/Type/Bundle/Option.php Tue Dec 20 09:13:34 2011 +++ magento-1.4.2.0/app/code/core/Mage/Bundle/Block/Catalog/Product/View/Type/Bundle/Option.php Wed Dec 8 21:11:51 2010 @@ -45,24 +45,16 @@ class Mage_Bundle_Block_Catalog_Product_ Project:ExampleCodeReview|Proposal:#00101|DatePrepared:22/09/2013 ClearandfizzyLimited|CompanyNo.08230961|gareth@clearandfizzy.com 2013ClearandfizzyLimited.AllRightsReserved.

ExampleCodeReview
PreparedbyGarethPrice
gareth@clearandfizzy.com

public function getSelectionQtyTitlePrice($_selection, $includeContainer = true) { $price = $this->getProduct()->getPriceModel()->getSelectionPreFinalPrice($this->getProduct(), $_selection); if($price > 0){ return $_selection->getSelectionQty()*1 . ' x ' . $_selection->getName() . ' &nbsp; ' . + return $_selection->getSelectionQty()*1 . ' x ' . $_selection->getName() . ' &nbsp; ' . ($includeContainer ? '<span class="price-notice">':'') . '+' . $this->formatPriceString($price, $includeContainer) . ($includeContainer ? '</span>':''); } else { return $_selection->getSelectionQty()*1 . ' x ' . $_selection->getName(); } } + public function getSelectionTitlePrice($_selection, $includeContainer = true) public function getSelectionTitlePrice($_selection, $includeContainer = true) { $price = $this->getProduct()->getPriceModel()->getSelectionPreFinalPrice($this->getProduct(), $_selection); if($price > 0){ return $_selection->getName() . ($includeContainer ? '<span class="price-notice">':'') . ' +' . $this->formatPriceString($price, $includeContainer) . ($includeContainer ? '</span>':''); } else { return $_selection->getName(); } + $price = $this->getProduct()->getPriceModel()->getSelectionPreFinalPrice($this->getProduct(), $_selection, 1); + return $_selection->getName() . ' &nbsp; ' . ($includeContainer ? '<span class="price-notice">':'') . '+' . + $this->formatPriceString($price, $includeContainer) . ($includeContainer ? '</span>':''); } public function setValidationContainer($elementId, $containerId) --- httpdocs/app/code/core/Mage/Bundle/Block/Sales/Order/Items/Renderer.php Fri Feb 24 14:26:51 2012 +++ magento-1.4.2.0/app/code/core/Mage/Bundle/Block/Sales/Order/Items/Renderer.php Wed Dec 8 21:11:51 2010 @@ -115,19 +115,9 @@ class Mage_Bundle_Block_Sales_Order_Item public function getValueHtml($item) { if ($attributes = $this->getSelectionAttributes($item)) { /*return sprintf('%d', $attributes['qty']) . ' x ' . + return sprintf('%d', $attributes['qty']) . ' x ' . $this->htmlEscape($item->getName()) . " " . $this->getOrder()->formatPrice($attributes['price']); */ // # NuBlue - removing the case where the bundle's options have a ZERO price. if($attributes['price'] > 0){ return sprintf('%d', $attributes['qty']) . ' x ' . $this->htmlEscape($item->getName()) . " " . $this->getOrder()->formatPrice($attributes['price']); } else { return sprintf('%d', $attributes['qty']) . ' x ' . $this->htmlEscape($item->getName()); } } else { return $this->htmlEscape($item->getName()); } Project:ExampleCodeReview|Proposal:#00101|DatePrepared:22/09/2013 ClearandfizzyLimited|CompanyNo.08230961|gareth@clearandfizzy.com 2013ClearandfizzyLimited.AllRightsReserved.

ExampleCodeReview
PreparedbyGarethPrice
gareth@clearandfizzy.com

--- httpdocs/app/code/core/Mage/Bundle/Model/Product/Price.php Tue Dec 20 09:53:01 2011 +++ magento-1.4.2.0/app/code/core/Mage/Bundle/Model/Product/Price.php Wed Dec 8 21:11:51 2010 @@ -611,13 +611,12 @@ class Mage_Bundle_Model_Product_Price ex if (!is_null($specialPrice) && $specialPrice != false) { if (Mage::app()->getLocale()->isStoreDateInInterval($store, $specialPriceFrom, $specialPriceTo)) { $specialPrice = Mage::app()->getStore()->roundPrice($finalPrice * $specialPrice / 100); //$specialPrice = $specialPrice; // # NuBlue - this makes it a fixed special price, instead of a percentage. $finalPrice = min($finalPrice, $specialPrice); } } return $finalPrice; } + /** * Check is tier price value fixed or percent of original price * --- httpdocs/app/code/core/Mage/Bundle/Model/Product/Type.php Wed Feb 29 15:28:24 2012 +++ magento-1.4.2.0/app/code/core/Mage/Bundle/Model/Product/Type.php Wed Dec 8 21:11:51 2010 @@ -144,13 +144,11 @@ class Mage_Bundle_Model_Product_Type ext $selectionIds = unserialize($customOption->getValue()); $selections = $this->getSelectionsByIds($selectionIds, $product); foreach ($selections->getItems() as $selection) { // # NuBlue - edited this, but wasnt able to put it into a extension. makes the SKU dynamic for example {qty1}{SKU1}_{qty2}{SKU2}...etc $skuParts[] = (int)$selection->getSelectionQty() . $selection->getSku(); + $skuParts[] = $selection->getSku(); } } + return implode('_', $skuParts); //return implode('-', $skuParts); return implode('-', $skuParts); } }

--- httpdocs/app/code/core/Mage/Catalog/Model/Abstract.php Mon Oct 10 10:28:33 2011 +++ magento-1.4.2.0/app/code/core/Mage/Catalog/Model/Abstract.php Wed Dec 8 21:11:54 2010 @@ -18,6 +18,7 @@ * versions in the future. If you wish to customize Magento for your * needs please refer to http://www.magentocommerce.com for more information. * + * @category Mage * @package Mage_Catalog * @copyright Copyright (c) 2010 Magento Inc. (http://www.magentocommerce.com) * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) --- httpdocs/app/code/core/Mage/Catalog/Model/Category/Attribute/Source/Sortby.php Thu Oct 6 15:45:27 2011 +++ magento-1.4.2.0/app/code/core/Mage/Catalog/Model/Category/Attribute/Source/Sortby.php Wed Dec 8 21:11:54 2010 @@ -52,12 +52,10 @@ class Mage_Catalog_Model_Category_Attrib public function getAllOptions() Project:ExampleCodeReview|Proposal:#00101|DatePrepared:22/09/2013 ClearandfizzyLimited|CompanyNo.08230961|gareth@clearandfizzy.com 2013ClearandfizzyLimited.AllRightsReserved.

ExampleCodeReview
PreparedbyGarethPrice
gareth@clearandfizzy.com

+ + + +

{ if (is_null($this->_options)) { $this->_options = array( //array( // 'label' => Mage::helper('catalog')->__('Best Value'), // 'value' => 'position' //) ); $this->_options = array(array( 'label' => Mage::helper('catalog')->__('Best Value'), 'value' => 'position' )); foreach ($this->_getCatalogConfig()->getAttributesUsedForSortBy() as $attribute) { $this->_options[] = array( 'label' => Mage::helper('catalog')->__($attribute['frontend_label']),

--- httpdocs/app/code/core/Mage/CatalogInventory/Model/Observer.php Wed Feb 29 16:10:32 2012 +++ magento-1.4.2.0/app/code/core/Mage/CatalogInventory/Model/Observer.php Wed Dec 8 21:12:05 2010 @@ -240,10 +240,7 @@ class Mage_CatalogInventory_Model_Observ /* @var $option Mage_Sales_Model_Quote_Item_Option */ $optionQty = $qty * $option->getValue(); $increaseOptionQty = ($quoteItem->getQtyToAdd() ? $quoteItem->getQtyToAdd() : $qty) * $option->getValue(); // # NuBlue - DDD- I think "$option->getValue()" is returning double its correct value! so halving it! $increaseOptionQty = $increaseOptionQty / 2; + $stockItem = $option->getProduct()->getStockItem(); /* @var $stockItem Mage_CatalogInventory_Model_Stock_Item */ if (!$stockItem instanceof Mage_CatalogInventory_Model_Stock_Item) { --- httpdocs/app/code/core/Mage/CatalogInventory/Model/Stock/Item.php Wed Feb 29 15:44:12 2012 +++ magento-1.4.2.0/app/code/core/Mage/CatalogInventory/Model/Stock/Item.php Wed Dec 8 21:12:05 2010 @@ -470,7 +470,7 @@ class Mage_CatalogInventory_Model_Stock_ { $result = new Varien_Object(); $result->setHasError(false); + if (!is_numeric($qty)) { $qty = Mage::app()->getLocale()->getNumber($qty); } --- httpdocs/app/code/core/Mage/CatalogRule/etc/config.xml Mon Sep 19 11:16:16 2011 +++ magento-1.4.2.0/app/code/core/Mage/CatalogRule/etc/config.xml Wed Dec 8 21:12:07 2010 @@ -171,7 +171,7 @@ <crontab> <jobs> <catalogrule_apply_all> <schedule><cron_expr>*/5 * * * * </cron_expr></schedule> + <schedule><cron_expr>0 1 * * *</cron_expr></schedule> <run><model>catalogrule/observer::dailyCatalogUpdate</model></run> </catalogrule_apply_all> </jobs> --- httpdocs/app/code/core/Mage/Checkout/Block/Onepage/Shipping/Method.php Mon Oct 24 09:32:00

Project:ExampleCodeReview|Proposal:#00101|DatePrepared:22/09/2013 ClearandfizzyLimited|CompanyNo.08230961|gareth@clearandfizzy.com 2013ClearandfizzyLimited.AllRightsReserved.

ExampleCodeReview
PreparedbyGarethPrice
gareth@clearandfizzy.com

2011 +++ magento-1.4.2.0/app/code/core/Mage/Checkout/Block/Onepage/Shipping/Method.php 21:12:09 2010 @@ -37,7 +37,7 @@ class Mage_Checkout_Block_Onepage_Shippi protected function _construct() { $this->getCheckout()->setStepData('shipping_method', array( 'label' => Mage::helper('checkout')->__('Delivery Method'), + 'label' => Mage::helper('checkout')->__('Shipping Method'), 'is_show' => $this->isShow() )); parent::_construct();

Wed Dec 8

--- httpdocs/app/code/core/Mage/Checkout/Block/Onepage/Shipping.php Mon Oct 24 09:28:46 2011 +++ magento-1.4.2.0/app/code/core/Mage/Checkout/Block/Onepage/Shipping.php Wed Dec 8 21:12:09 2010 @@ -34,7 +34,7 @@ class Mage_Checkout_Block_Onepage_Shippi protected function _construct() { $this->getCheckout()->setStepData('shipping', array( 'label' => Mage::helper('checkout')->__('Delivery Information'), + 'label' => Mage::helper('checkout')->__('Shipping Information'), 'is_show' => $this->isShow() )); --- httpdocs/app/code/core/Mage/Checkout/controllers/CartController.php Wed Feb 29 15:38:06 2012 +++ magento-1.4.2.0/app/code/core/Mage/Checkout/controllers/CartController.php Wed Dec 8 21:12:08 2010 @@ -157,7 +157,6 @@ class Mage_Checkout_CartController exten { $cart = $this->_getCart(); $params = $this->getRequest()->getParams(); //var_dump($params); die(); try { if (isset($params['qty'])) { $filter = new Zend_Filter_LocalizedToNormalized( --- httpdocs/app/code/core/Mage/Checkout/controllers/OnepageController.php Tue Jan 31 16:51:49 2012 +++ magento-1.4.2.0/app/code/core/Mage/Checkout/controllers/OnepageController.php Wed Dec 8 21:12:08 2010 @@ -204,17 +204,17 @@ class Mage_Checkout_OnepageController ex public function successAction() { $session = $this->getOnepage()->getCheckout(); //if (!$session->getLastSuccessQuoteId()) { // $this->_redirect('checkout/cart'); // return; //} + if (!$session->getLastSuccessQuoteId()) { + $this->_redirect('checkout/cart'); + return; + } $lastQuoteId = $session->getLastQuoteId(); $lastOrderId = $session->getLastOrderId(); $lastRecurringProfiles = $session->getLastRecurringProfileIds(); if (!$lastQuoteId || (!$lastOrderId && empty($lastRecurringProfiles))) { Project:ExampleCodeReview|Proposal:#00101|DatePrepared:22/09/2013 ClearandfizzyLimited|CompanyNo.08230961|gareth@clearandfizzy.com 2013ClearandfizzyLimited.AllRightsReserved.

ExampleCodeReview
PreparedbyGarethPrice
gareth@clearandfizzy.com

+ +

$this->_redirect('checkout/cart'); return; $this->_redirect('checkout/cart'); return; } $session->clear();

--- httpdocs/app/code/core/Mage/GoogleAnalytics/Block/Ga.php Mon Sep 2 10:44:24 2013 +++ magento-1.4.2.0/app/code/core/Mage/GoogleAnalytics/Block/Ga.php Wed Dec 8 21:11:45 2010 @@ -107,154 +107,7 @@ _gaq.push(function() { */ protected function _getOrdersTrackingCode() { $orderIds = $this->getOrderIds(); if (empty($orderIds) || !is_array($orderIds)) { return; } $collection = Mage::getResourceModel('sales/order_collection') ->addFieldToFilter('entity_id', array('in' => $orderIds)) ; $result = array(); foreach ($collection as $order) { if ($order->getIsVirtual()) { $address = $order->getBillingAddress(); } else { $address = $order->getShippingAddress(); } $result[] = sprintf("_gaq.push(['_addTrans', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s']);", $order->getIncrementId(), $this->jsQuoteEscape(Mage::app()->getStore()->getFrontendName()), $order->getBaseGrandTotal(), $order->getBaseTaxAmount(), $order->getBaseShippingAmount(), $this->jsQuoteEscape(Mage::helper('core')->escapeHtml($address->getCity())), $this->jsQuoteEscape(Mage::helper('core')->escapeHtml($address->getRegion())), $this->jsQuoteEscape(Mage::helper('core')->escapeHtml($address->getCountry())) ); foreach ($order->getAllVisibleItems() as $item) { $result[] = sprintf("_gaq.push(['_addItem', '%s', '%s', '%s', '%s', '%s', '%s']);", $order->getIncrementId(), $this->jsQuoteEscape($item->getSku()), $this->jsQuoteEscape($item->getName()), null, // there is no "category" defined for the order item $item->getBasePrice(), $item->getQtyOrdered() ); } $result[] = "_gaq.push(['_trackTrans']);"; } return implode("\n", $result); /* $currentURL = $this->helper('core/url')->getCurrentUrl(); if((strpos($currentURL,"/checkout/cart/") > 0 && strpos($currentURL,"/checkout/cart/index/") === FALSE) || (strpos($currentURL,"/checkout/onepage/success/") > 0)){ // # NuBlue //$lastQuoteId = Mage::getSingleton('core/session')->getLastOrderId(); $lastQuoteId = $_SESSION['ga_lastOrderId']; $order = Mage::getSingleton('sales/order'); $order->load($lastOrderId); Project:ExampleCodeReview|Proposal:#00101|DatePrepared:22/09/2013 ClearandfizzyLimited|CompanyNo.08230961|gareth@clearandfizzy.com 2013ClearandfizzyLimited.AllRightsReserved.

ExampleCodeReview
PreparedbyGarethPrice
gareth@clearandfizzy.com

$collection = Mage::getResourceModel('sales/order_collection') ->addFieldToFilter('entity_id', array('in' => $lastOrderId)); $result = array(); $result[] = "// lastQuoteId = ".$lastQuoteId; //foreach ($collection as $order) { ////////$result[] = "////".var_export($order, true) . "////"; if ($order->getIsVirtual()) { $address = $order->getBillingAddress(); } else { $address = $order->getShippingAddress(); } if(empty($address)){ $result[] = sprintf("_gaq.push(['_addTrans', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s']);", $order->getIncrementId(), Mage::app()->getStore()->getFrontendName(), $order->getBaseGrandTotal(), $order->getBaseTaxAmount(), $order->getBaseShippingAmount(), $this->jsQuoteEscape(""), $this->jsQuoteEscape(""), $this->jsQuoteEscape("") ); } else { $result[] = sprintf("_gaq.push(['_addTrans', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s']);", $order->getIncrementId(), Mage::app()->getStore()->getFrontendName(), $order->getBaseGrandTotal(), $order->getBaseTaxAmount(), $order->getBaseShippingAmount(), $this->jsQuoteEscape($address->getCity()), $this->jsQuoteEscape($address->getRegion()), $this->jsQuoteEscape($address->getCountry()) ); } foreach ($order->getAllVisibleItems() as $item) { $result[] = sprintf("_gaq.push(['_addItem', '%s', '%s', '%s', '%s', '%s', '%s']);", $order->getIncrementId(), $this->jsQuoteEscape($item->getSku()), $this->jsQuoteEscape($item->getName()), null, // there is no "category" defined for the order item $item->getBasePrice(), $item->getQtyOrdered() ); } //$result[] = "_gaq.push(['_trackTrans']);"; //#comment when it goes live! //} */ /* $orders = Mage::getResourceModel('sales/order_collection') ->addAttributeToFilter('quote_id', $lastQuoteId) ->load(); $result = array(); foreach ($orders as $order) { if (!$order instanceof Mage_Sales_Model_Order) { $order = Mage::getModel('sales/order')->load($order); } echo "<!-- ".var_export($order, true) . " -->"; if ($order->getIsVirtual()) { $address = $order->getBillingAddress(); } else { $address = $order->getShippingAddress(); } Project:ExampleCodeReview|Proposal:#00101|DatePrepared:22/09/2013 ClearandfizzyLimited|CompanyNo.08230961|gareth@clearandfizzy.com 2013ClearandfizzyLimited.AllRightsReserved.

ExampleCodeReview
PreparedbyGarethPrice
gareth@clearandfizzy.com

if(empty($address)){ $result[] = sprintf("_gaq.push(['_addTrans', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s']);", $order->getIncrementId(), Mage::app()->getStore()->getFrontendName(), $order->getBaseGrandTotal(), $order->getBaseTaxAmount(), $order->getBaseShippingAmount(), $this->jsQuoteEscape(""), $this->jsQuoteEscape(""), $this->jsQuoteEscape("") ); } else { $result[] = sprintf("_gaq.push(['_addTrans', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s']);", $order->getIncrementId(), Mage::app()->getStore()->getFrontendName(), $order->getBaseGrandTotal(), $order->getBaseTaxAmount(), $order->getBaseShippingAmount(), $this->jsQuoteEscape($address->getCity()), $this->jsQuoteEscape($address->getRegion()), $this->jsQuoteEscape($address->getCountry()) ); } foreach ($order->getAllVisibleItems() as $item) { $result[] = sprintf("_gaq.push(['_addItem', '%s', '%s', '%s', '%s', '%s', '%s']);", $order->getIncrementId(), $this->jsQuoteEscape($item->getSku()), $this->jsQuoteEscape($item->getName()), null, // there is no "category" defined for the order item $item->getBasePrice(), $item->getQtyOrdered() ); } //$result[] = "_gaq.push(['_trackTrans']);"; //#comment when it goes live! } return implode("\n", $result); } else { return ""; } $currentURL = $this->helper('core/url')->getCurrentUrl(); if((strpos($currentURL,"/checkout/cart/") > 0 && strpos($currentURL,"/checkout/cart/index/") === FALSE) || (strpos($currentURL,"/checkout/onepage/success/") > 0)){ $orderIds = array(Mage::getSingleton('core/session')->getLastOrderId()); //$orderIds = $this->getOrderIds(); + $orderIds = $this->getOrderIds(); if (empty($orderIds) || !is_array($orderIds)) { return; } @@ -286,13 +139,6 @@ _gaq.push(function() { $result[] = "_gaq.push(['_trackTrans']);"; } return implode("\n", $result); Project:ExampleCodeReview|Proposal:#00101|DatePrepared:22/09/2013 ClearandfizzyLimited|CompanyNo.08230961|gareth@clearandfizzy.com 2013ClearandfizzyLimited.AllRightsReserved.

ExampleCodeReview
PreparedbyGarethPrice
gareth@clearandfizzy.com

} else { return ""; } */ }

/** @@ -308,7 +154,6 @@ _gaq.push(function() { $accountId = Mage::getStoreConfig(Mage_GoogleAnalytics_Helper_Data::XML_PATH_ACCOUNT); return ' <!-- BEGIN GOOGLE ANALYTICS CODE --> -<!-- ' . $this->helper('core/url')->getCurrentUrl() . ' = ' . Mage::getSingleton('core/session')->getLastOrderId() . ' = ' . @$_SESSION['ga_lastOrderId'] . ' --> <script type="text/javascript"> //<![CDATA[ (function() { --- httpdocs/app/code/core/Mage/Log/Model/Visitor.php Wed Nov 2 16:17:50 2011 +++ magento-1.4.2.0/app/code/core/Mage/Log/Model/Visitor.php Wed Dec 8 21:11:45 2010 @@ -141,8 +141,8 @@ class Mage_Log_Model_Visitor extends Mag } + + $this->setData($this->_getSession()->getVisitorData()); $this->initServerData(); $this->initServerData(); if (!$this->getId()) { $this->setFirstVisitAt(now()); $this->setIsNewVisitor(true);

--- httpdocs/app/code/core/Mage/Page/etc/config.xml Tue Apr 30 03:35:19 2013 +++ magento-1.4.2.0/app/code/core/Mage/Page/etc/config.xml Wed Dec 8 21:11:54 2010 @@ -55,26 +55,6 @@ <layout_handle>page_one_column</layout_handle> <is_default>1</is_default> </one_column> <ogu_landing_luxury translate="label"> <label>Luxury Landing Page</label> <template>page/landing-luxury.phtml</template> <layout_handle>ogu_landing_luxury</layout_handle> </ogu_landing_luxury> <ogu_landing_rattan translate="label"> <label>Rattan Landing Page</label> <template>page/landing-rattan.phtml</template> <layout_handle>ogu_landing_rattan</layout_handle> </ogu_landing_rattan> <ogu_landing_wickerline translate="label"> <label>Wickerline Landing Page</label> <template>page/landing-wickerline.phtml</template> <layout_handle>ogu_landing_wickerline</layout_handle> </ogu_landing_wickerline> <ogu_landing_teak translate="label"> <label>Teak Landing Page</label> <template>page/landing-teak.phtml</template> <layout_handle>ogu_landing_teak</layout_handle> </ogu_landing_teak> Project:ExampleCodeReview|Proposal:#00101|DatePrepared:22/09/2013 ClearandfizzyLimited|CompanyNo.08230961|gareth@clearandfizzy.com 2013ClearandfizzyLimited.AllRightsReserved.

ExampleCodeReview
PreparedbyGarethPrice
gareth@clearandfizzy.com

<two_columns_left module="page" translate="label"> <label>2 columns with left bar</label> <template>page/2columns-left.phtml</template> --- httpdocs/app/code/core/Mage/Payment/Block/Form/Cc.php Thu Jan 31 16:36:25 2013 +++ magento-1.4.2.0/app/code/core/Mage/Payment/Block/Form/Cc.php Wed Dec 8 21:12:02 2010 @@ -135,8 +135,7 @@ class Mage_Payment_Block_Form_Cc extends { $years = array(); $first = date("Y"); + for ($index=5; $index>=0; $index--) { $year = $first - $index; $years[$year] = $year; --- httpdocs/app/code/core/Mage/Paypal/etc/config.xml Mon Oct 31 12:05:00 2011 +++ magento-1.4.2.0/app/code/core/Mage/Paypal/etc/config.xml Wed Dec 8 21:12:04 2010 @@ -61,7 +61,7 @@ <order> <statuses> <!-- retained for backwards compatibility, not used anymore --> <!--<pending_paypal translate="label"><label>Pending PayPal</label></pending_paypal>--> + <pending_paypal translate="label"><label>Pending PayPal</label></pending_paypal> </statuses> </order> </sales> --- httpdocs/app/code/core/Mage/Sales/etc/config.xml Wed Oct 26 11:37:35 2011 +++ magento-1.4.2.0/app/code/core/Mage/Sales/etc/config.xml Wed Dec 8 21:12:13 2010 @@ -774,7 +774,7 @@ <sort_order>200</sort_order> </discount> <shipping translate="title"> <title>Delivery &amp; Handling</title> + <title>Shipping &amp; Handling</title> <source_field>shipping_amount</source_field> <font_size>7</font_size> <display_zero>0</display_zero> --- httpdocs/app/code/core/Mage/SecureHosting/Block/Form.php Fri Sep 30 09:26:54 2011 +++ magento-1.4.2.0/app/code/core/Mage/SecureHosting/Block/Form.php Thu Jan 1 00:00:00 1970 @@ -1,26 +0,0 @@ -<?php -/** - * Magento -* - * NOTICE OF LICENSE -* - * This source file is subject to the Open Software License (OSL 3.0) - * that is bundled with this package in the file LICENSE.txt. - * It is also available through the world-wide-web at this URL: - * http://opensource.org/licenses/osl-3.0.php - * If you did not receive a copy of the license and are unable to - * obtain it through the world-wide-web, please send an email - * to license@magentocommerce.com so we can send you a copy immediately. -* Project:ExampleCodeReview|Proposal:#00101|DatePrepared:22/09/2013 ClearandfizzyLimited|CompanyNo.08230961|gareth@clearandfizzy.com 2013ClearandfizzyLimited.AllRightsReserved.

ExampleCodeReview
PreparedbyGarethPrice
gareth@clearandfizzy.com

- * @category Mage - * @package Mage_SecureHosting - */ -class Mage_SecureHosting_Block_Form extends Mage_Payment_Block_Form -{ protected function _construct() { parent::_construct(); $this->setTemplate('SecureHosting/form.phtml'); } -} \ No newline at end of file --- httpdocs/app/code/core/Mage/SecureHosting/Block/Redirect.php Fri Sep 30 09:26:54 2011 +++ magento-1.4.2.0/app/code/core/Mage/SecureHosting/Block/Redirect.php Thu Jan 1 00:00:00 1970 @@ -1,43 +0,0 @@ -<?php -/** - * Magento -* - * NOTICE OF LICENSE -* - * This source file is subject to the Open Software License (OSL 3.0) - * that is bundled with this package in the file LICENSE.txt. - * It is also available through the world-wide-web at this URL: - * http://opensource.org/licenses/osl-3.0.php - * If you did not receive a copy of the license and are unable to - * obtain it through the world-wide-web, please send an email - * to license@magentocommerce.com so we can send you a copy immediately. -* - * @category Mage - * @package Mage_SecureHosting - */ -class Mage_SecureHosting_Block_Redirect extends Mage_Core_Block_Abstract -{ protected function _toHtml() { $redirect = Mage::getModel('SecureHosting/redirect'); $config = Mage::getModel('SecureHosting/config'); $form = new Varien_Data_Form(); $form->setAction($config->getSecureHostingUrl()) ->setId('SecureHosting_checkout') ->setName('SecureHosting_checkout') ->setMethod('POST') ->setUseContainer(true); foreach ($redirect->setOrder($this->getOrder())->getStandardCheckoutFormFields() as $field => $value) { $form->addField($field, 'hidden', array('name' => $field, 'value' => $value)); } $html = '<html><body>'; $html.= $this->__('You will be redirected to SecureHosting in a few seconds.'); $html.= $form->toHtml(); $html.= '<script type="text/javascript">document.getElementById("SecureHosting_checkout").submit();</script>'; $html.= '</body></html>'; Project:ExampleCodeReview|Proposal:#00101|DatePrepared:22/09/2013 ClearandfizzyLimited|CompanyNo.08230961|gareth@clearandfizzy.com 2013ClearandfizzyLimited.AllRightsReserved.

ExampleCodeReview
PreparedbyGarethPrice
gareth@clearandfizzy.com

//echo("<pre>".htmlentities($html)."</pre>"); die; return $html; } -} \ No newline at end of file --- httpdocs/app/code/core/Mage/SecureHosting/Helper/Data.php Fri Sep 30 09:26:55 2011 +++ magento-1.4.2.0/app/code/core/Mage/SecureHosting/Helper/Data.php Thu Jan 1 00:00:00 1970 @@ -1,22 +0,0 @@ -<?php -/** - * Magento -* - * NOTICE OF LICENSE -* - * This source file is subject to the Open Software License (OSL 3.0) - * that is bundled with this package in the file LICENSE.txt. - * It is also available through the world-wide-web at this URL: - * http://opensource.org/licenses/osl-3.0.php - * If you did not receive a copy of the license and are unable to - * obtain it through the world-wide-web, please send an email - * to license@magentocommerce.com so we can send you a copy immediately. -* - * @category Mage - * @package Mage_SecureHosting - */ -class Mage_SecureHosting_Helper_Data extends Mage_Core_Helper_Abstract -{ -} --- httpdocs/app/code/core/Mage/SecureHosting/Model/Config.php Fri Sep 30 09:26:55 2011 +++ magento-1.4.2.0/app/code/core/Mage/SecureHosting/Model/Config.php Thu Jan 1 00:00:00 1970 @@ -1,70 +0,0 @@ -<?php -/** - * Magento -* - * NOTICE OF LICENSE -* - * This source file is subject to the Open Software License (OSL 3.0) - * that is bundled with this package in the file LICENSE.txt. - * It is also available through the world-wide-web at this URL: - * http://opensource.org/licenses/osl-3.0.php - * If you did not receive a copy of the license and are unable to - * obtain it through the world-wide-web, please send an email - * to license@magentocommerce.com so we can send you a copy immediately. -* - * @category Mage - * @package Mage_SecureHosting - */ -class Mage_SecureHosting_Model_Config extends Varien_Object -{ /** * Return config var Project:ExampleCodeReview|Proposal:#00101|DatePrepared:22/09/2013 ClearandfizzyLimited|CompanyNo.08230961|gareth@clearandfizzy.com 2013ClearandfizzyLimited.AllRightsReserved.

ExampleCodeReview
PreparedbyGarethPrice
gareth@clearandfizzy.com

-}

* * @param string Var key * @param string Default value for non-existing key * @return mixed */ public function getConfigData($key, $default=false) { if (!$this->hasData($key)) { $value = Mage::getStoreConfig('payment/SecureHosting/'.$key); if (is_null($value) || false===$value) { $value = $default; } $this->setData($key, $value); } return $this->getData($key); } public function getRedirectMessage () { return $this->getConfigData('redirect_message'); } /** * Return Site ID registered in SecureHosting Admnin Panel * * @param none * @return string Site ID */ public function getSHreference () { return $this->getConfigData('shreference'); } public function getCheckCode() { return $this->getConfigData('checkcode'); } public function getSecureHostingUrl(){ return "https://www.secure-server-hosting.com/secutran/secuitems.php"; } public function autoInvoice(){ return ($this->getConfigData('auto_invoice') == "1"); }

--- httpdocs/app/code/core/Mage/SecureHosting/Model/Redirect.php Thu Nov 24 09:49:54 2011 +++ magento-1.4.2.0/app/code/core/Mage/SecureHosting/Model/Redirect.php Thu Jan 1 00:00:00 1970 @@ -1,187 +0,0 @@ -<?php -/** - * Magento -* - * NOTICE OF LICENSE -* Project:ExampleCodeReview|Proposal:#00101|DatePrepared:22/09/2013 ClearandfizzyLimited|CompanyNo.08230961|gareth@clearandfizzy.com 2013ClearandfizzyLimited.AllRightsReserved.

ExampleCodeReview
PreparedbyGarethPrice
gareth@clearandfizzy.com

- * This source file is subject to the Open Software License (OSL 3.0) - * that is bundled with this package in the file LICENSE.txt. - * It is also available through the world-wide-web at this URL: - * http://opensource.org/licenses/osl-3.0.php - * If you did not receive a copy of the license and are unable to - * obtain it through the world-wide-web, please send an email - * to license@magentocommerce.com so we can send you a copy immediately. -* - * @category Mage - * @package Mage_SecureHosting - */ -class Mage_SecureHosting_Model_Redirect extends Mage_Payment_Model_Method_Abstract -{ protected $_code = 'SecureHosting'; protected $_formBlockType = 'SecureHosting/form'; protected $_isGateway = false; protected $_canAuthorize = false; protected $_canCapture = false; protected $_canCapturePartial = false; protected $_canRefund = false; protected $_canVoid = false; protected $_canUseInternal = true; protected $_canUseCheckout = true; protected $_canUseForMultishipping = false; protected $_canSaveCc = false; protected $_order = null; protected $_config = null; /** * Get Config model * * @return object Mage_SecureHostingApi_Model_Config */ public function getConfig() { if($this->_config == null) $this->_config = Mage::getSingleton('SecureHosting/config'); return $this->_config; } public function getOrder () { if ($this->_order == null) { $session = Mage::getSingleton('checkout/session'); $this->_order = Mage::getModel('sales/order'); $this->_order->loadByIncrementId($session->getLastRealOrderId()); } return $this->_order; } public function getOrderPlaceRedirectUrl(){ return Mage::getUrl('SecureHosting/redirect/redirect', array('_secure' => true)); } protected function getSuccessURL () Project:ExampleCodeReview|Proposal:#00101|DatePrepared:22/09/2013 ClearandfizzyLimited|CompanyNo.08230961|gareth@clearandfizzy.com 2013ClearandfizzyLimited.AllRightsReserved.

ExampleCodeReview
PreparedbyGarethPrice
gareth@clearandfizzy.com

{ return Mage::getUrl('SecureHosting/redirect/success', array('_secure' => true)); } /** * Return URL for SecureHosting notification * * @return string Notification URL */ protected function getNotificationURL () { return Mage::getUrl('SecureHosting/redirect/notify/', array('_secure' => true)); } /** * Return URL for SecureHosting failure response * * @return string URL */ protected function getFailureURL () { return Mage::getUrl('SecureHosting/redirect/failure', array('_secure' => true)); } /** * Return URL for SecureHosting cancel * * @return string URL */ protected function getCancelURL () { return Mage::getUrl('SecureHosting/redirect/cancel', array('_secure' => true)); } public function getStandardCheckoutFormFields () { $order = $this->getOrder(); if (!($order instanceof Mage_Sales_Model_Order)) { Mage::throwException($this->_getHelper()->__('Cannot retrieve order object')); } $billingAddress = $order->getBillingAddress(); $streets = $billingAddress->getStreet(); $street = isset($streets[0]) && $streets[0] != '' ? $streets[0] : (isset($streets[1]) && $streets[1] != '' ? $streets[1] : ''); $street2 = (isset($streets[1]) && $streets[1] != '') ? $streets[1] : ''; if ($order->getCustomerEmail()) { $email = $order->getCustomerEmail(); } elseif ($billingAddress->getEmail()) { $email = $billingAddress->getEmail(); } else { $email = ''; } Project:ExampleCodeReview|Proposal:#00101|DatePrepared:22/09/2013 ClearandfizzyLimited|CompanyNo.08230961|gareth@clearandfizzy.com 2013ClearandfizzyLimited.AllRightsReserved.

ExampleCodeReview
PreparedbyGarethPrice
gareth@clearandfizzy.com

$secuitems = ""; //$session = Mage::getSingleton('checkout/session', array('name' => 'frontend')); //$cart = Mage::getModel('checkout/cart'); //var_dump($session->getQuote()->getAllItems()); die; $order = Mage::getModel('sales/order')->load($order->getId()); //$items = $order->getAllItems(); // This function loads all of the options too. $items = $order->getAllVisibleItems(); // This function loads only the parent products, which should have the correct price. $subtotal = 0; $VAT = 1.2; foreach($items as $item){ $item = $item->toArray(); $VAT = 1 + ($item['tax_percent']/100); $allINeed = array( 'product_name_description' => $item['name'], 'product_id' => $item['product_id'], 'options' => '', 'price' => number_format($item['price']*$VAT,2,'.',''), 'quantity' => number_format($item['qty_ordered'], 0), 'cost' => number_format(($item['price']*$item['qty_ordered'])*$VAT,2,'.','') ); $subtotal += ($item['price']*$item['qty_ordered']) * $VAT; $secuitems .= '['.implode('|', $allINeed).']'; //$secuitems .= "[$item[product_id]|$item[sku]|$item[name]|".number_format($item['price'],2,'.','')."|$item[qty]|".number_ format($item['price']*$item['qty'],2,'.','')."]"; } //$xpshippingcharge = 0; //$xpshippingcharge = empty($xpshippingcharge) ? 'n/a' : number_format($xpshippingcharge*$VAT,2,".",""); $fields = array( 'shreference' => $this->getConfig()->getSHreference(), 'checkcode' => $this->getConfig()->getCheckCode(), 'filename' => $this->getConfig()->getSHreference()."/magento_template.html", 'secuitems' => $secuitems, 'orderid' => $order->getRealOrderId(), 'transactionamount' => number_format($order->getBaseGrandTotal(),2,".",""), 'products_price' => number_format(($order->getBaseGrandTotal()-($order->getTaxAmount()+$order->getTaxAmount())),2,".", ""), 'transactiontax' => number_format($order->getTaxAmount(),2,".",""), 'splog' => number_format($subtotal,2,'.',''), 'shippingcharge' => number_format($order->getShippingAmount()*$VAT,2,".",""), //'xpshipcharge' => $xpshippingcharge, 'transactioncurrency' => $order->getBaseCurrencyCode(), 'cardholdersname' => $billingAddress->getFirstname().' '.$billingAddress->getLastname(), 'cardholderaddr1' => $street, 'cardholderaddr2' => $street2, 'cardholdercity' => $billingAddress->getCity(), 'cardholderstate' => $billingAddress->getRegion(), 'cardholderpostcode' => $billingAddress->getPostcode(), 'cardholdercountry' => $billingAddress->getCountryModel()->getIso3Code(), 'cardholdertelephonenumber' => $billingAddress->getTelephone(), 'cardholdersemail' => $email, 'success_url' => $this->getSuccessURL(), 'failure_url' => $this->getFailureURL(), 'callbackurl' => $this->getNotificationURL(), Project:ExampleCodeReview|Proposal:#00101|DatePrepared:22/09/2013 ClearandfizzyLimited|CompanyNo.08230961|gareth@clearandfizzy.com 2013ClearandfizzyLimited.AllRightsReserved.

ExampleCodeReview
PreparedbyGarethPrice
gareth@clearandfizzy.com

-}

'cancelurl' 'callbackdata' ); return $fields; }

=> $this->getCancelURL(), => "orderid|#orderid|transactionamount|#transactionamount"

--- httpdocs/app/code/core/Mage/SecureHosting/Model/Source/Language.php Fri Sep 30 09:26:56 2011 +++ magento-1.4.2.0/app/code/core/Mage/SecureHosting/Model/Source/Language.php Thu Jan 1 00:00:00 1970 @@ -1,30 +0,0 @@ -<?php -/** - * Magento -* - * NOTICE OF LICENSE -* - * This source file is subject to the Open Software License (OSL 3.0) - * that is bundled with this package in the file LICENSE.txt. - * It is also available through the world-wide-web at this URL: - * http://opensource.org/licenses/osl-3.0.php - * If you did not receive a copy of the license and are unable to - * obtain it through the world-wide-web, please send an email - * to license@magentocommerce.com so we can send you a copy immediately. -* - * @category Mage - * @package Mage_SecureHostingApi - */ -class Mage_SecureHosting_Model_Source_Language -{ public function toOptionArray() { return array( array('value' => 'EN', 'label' => Mage::helper('SecureHosting')->__('English')) ); } -} --- httpdocs/app/code/core/Mage/SecureHosting/controllers/RedirectController.php Thu Nov 24 09:27:15 2011 +++ magento-1.4.2.0/app/code/core/Mage/SecureHosting/controllers/RedirectController.php Thu Jan 1 00:00:00 1970 @@ -1,159 +0,0 @@ -<?php -class Mage_SecureHosting_redirectController extends Mage_Core_Controller_Front_Action -{ -protected $_order; protected $_config; Project:ExampleCodeReview|Proposal:#00101|DatePrepared:22/09/2013 ClearandfizzyLimited|CompanyNo.08230961|gareth@clearandfizzy.com 2013ClearandfizzyLimited.AllRightsReserved.

ExampleCodeReview
PreparedbyGarethPrice
gareth@clearandfizzy.com

public function getConfig() { if($this->_config == null) $this->_config = Mage::getSingleton('SecureHosting/config'); return $this->_config; } public function getOrder() { if ($this->_order == null) { $session = Mage::getSingleton('checkout/session'); $this->_order = Mage::getModel('sales/order'); $this->_order->loadByIncrementId($session->getLastRealOrderId()); } return $this->_order; } public function redirectAction() { $session = Mage::getSingleton('checkout/session'); $session->setSecureHostingStandardQuoteId($session->getQuoteId()); $order = $this->getOrder(); if (!$order->getId()) { $this->norouteAction(); return; } $order->addStatusToHistory( $order->getStatus(), Mage::helper('SecureHosting')->__('Customer was redirected to SecureHosting') ); $order->save(); $this->getResponse() ->setBody($this->getLayout() ->createBlock('SecureHosting/redirect') ->setOrder($order) ->toHtml()); $session->unsQuoteId(); } public function successAction() { $session = Mage::getSingleton('checkout/session'); $session->setQuoteId($session->getSecureHostingStandardQuoteId()); $session->unsSecureHostingStandardQuoteId(); $order = $this->getOrder(); if (!$order->getId()) { $this->norouteAction(); return; } Project:ExampleCodeReview|Proposal:#00101|DatePrepared:22/09/2013 ClearandfizzyLimited|CompanyNo.08230961|gareth@clearandfizzy.com 2013ClearandfizzyLimited.AllRightsReserved.

ExampleCodeReview
PreparedbyGarethPrice
gareth@clearandfizzy.com

$order->setBaseTotalPaid($order->getGrandTotal()); $order->setTotalPaid($order->getGrandTotal()); $order->addStatusHistoryComment('Customer was redirected back from SecureHosting ', 'completed_payment'); // # NuBlue - added this so that order confirmation emails are sent from Magento after successfull payment. $order->sendNewOrderEmail(); $order->setEmailSent(true); $order->save(); $this->_redirect('checkout/onepage/success'); } public function notifyAction() { $config = $this->getConfig(); $order = Mage::getModel('sales/order'); $order->loadByIncrementId(urldecode(@$_GET['orderid'])); if($config->autoInvoice() AND $order->canInvoice()){ $invoice = $order->prepareInvoice(); $invoice->register(); Mage::getModel('core/resource_transaction') ->addObject($invoice) ->addObject($invoice->getOrder()) ->save(); $invoice->sendEmail(true,''); $newStatus = Mage_Sales_Model_Order::STATE_COMPLETE; $message = Mage::helper('SecureHosting')->__("Transaction complete, SecureHosting transaction reference: \"$_GET[transactionnumber]\"<br />Order Invoiced"); } else { $newStatus = Mage_Sales_Model_Order::STATE_PROCESSING; $message = Mage::helper('SecureHosting')->__("Transaction complete, SecureHosting transaction reference: \"$_GET[transactionnumber]\""); } $order->addStatusToHistory($newStatus,$message); $order->save(); echo "success"; } public function failureAction($message = "Transaction Call Failed") { //$errorMsg = Mage::helper('SecureHosting')->__('There was an error occurred during paying process.'); Mage::getSingleton('core/session')->addError(__('There was an error occurred during paying process.')); $order = $this->getOrder(); if (!$order->getId()) { $this->norouteAction(); return; } if ($order instanceof Mage_Sales_Model_Order && $order->getId()) { $order->addStatusHistoryComment('Customer was redirected back from SecureHosting', 'failed_payment'); Project:ExampleCodeReview|Proposal:#00101|DatePrepared:22/09/2013 ClearandfizzyLimited|CompanyNo.08230961|gareth@clearandfizzy.com 2013ClearandfizzyLimited.AllRightsReserved.

ExampleCodeReview
PreparedbyGarethPrice
gareth@clearandfizzy.com

-}

//$order->addStatusToHistory($order->getStatus(), $errorMsg); //$order->cancel(); $order->save(); } $this->_redirect('/'); /* if ($order instanceof Mage_Sales_Model_Order && $order->getId()) { $order->addStatusToHistory($order->getStatus(), $errorMsg); $order->cancel(); $order->save(); } $this->loadLayout(); $this->renderLayout(); Mage::getSingleton('checkout/session')->unsLastRealOrderId(); */ } public function cancelAction() { $order = $this->getOrder(); if ($order instanceof Mage_Sales_Model_Order && $order->getId()) { $order->getPayment()->cancel(); $order->registerCancellation(__('The order has been canceled by the user.')); $order->save(); } $this->_redirect('/'); } protected function saveInvoice (Mage_Sales_Model_Order $order) { if ($order->canInvoice()) { $invoiceId = Mage::getModel('sales/order_invoice_api') ->create($order->getIncrementId(), array()); $invoice = Mage::getModel('sales/order_invoice') ->loadByIncrementId($invoiceId); $invoice->capture()->save(); } }

--- httpdocs/app/code/core/Mage/SecureHosting/etc/config.xml Fri Sep 30 09:26:54 2011 +++ magento-1.4.2.0/app/code/core/Mage/SecureHosting/etc/config.xml Thu Jan 1 00:00:00 1970 @@ -1,90 +0,0 @@ -<?xml version="1.0"?> -<!--/** - * Magento -* - * NOTICE OF LICENSE -* - * This source file is subject to the Open Software License (OSL 3.0) - * that is bundled with this package in the file LICENSE.txt. - * It is also available through the world-wide-web at this URL: - * http://opensource.org/licenses/osl-3.0.php - * If you did not receive a copy of the license and are unable to - * obtain it through the world-wide-web, please send an email - * to license@magentocommerce.com so we can send you a copy immediately. Project:ExampleCodeReview|Proposal:#00101|DatePrepared:22/09/2013 ClearandfizzyLimited|CompanyNo.08230961|gareth@clearandfizzy.com 2013ClearandfizzyLimited.AllRightsReserved.

ExampleCodeReview
PreparedbyGarethPrice
gareth@clearandfizzy.com

-* - * @category Mage - * @package Mage_SecureHosting - */ ---> -<config> <modules> <Mage_SecureHosting> <version>1.1.0</version> <depends> <Mage_payment /> </depends> </Mage_SecureHosting> </modules> <global> <models> <SecureHosting> <class>Mage_SecureHosting_Model</class> </SecureHosting> </models> <blocks> <SecureHosting> <class>Mage_SecureHosting_Block</class> </SecureHosting> </blocks> <helpers> <SecureHosting> <class>Mage_SecureHosting_Helper</class> </SecureHosting> </helpers> <resources> <SecureHosting_setup> <setup> <module>Mage_SecureHosting</module> </setup> <connection> <use>core_setup</use> </connection> </SecureHosting_setup> <SecureHosting_write> <connection> <use>core_write</use> </connection> </SecureHosting_write> <SecureHosting_read> <connection> <use>core_read</use> </connection> </SecureHosting_read> </resources> </global> <frontend> <secure_url> <SecureHosting>/SecureHosting/redirect</SecureHosting> </secure_url> <routers> <SecureHosting> <use>standard</use> <args> Project:ExampleCodeReview|Proposal:#00101|DatePrepared:22/09/2013 ClearandfizzyLimited|CompanyNo.08230961|gareth@clearandfizzy.com 2013ClearandfizzyLimited.AllRightsReserved.

ExampleCodeReview
PreparedbyGarethPrice
gareth@clearandfizzy.com

<module>Mage_SecureHosting</module> <frontName>SecureHosting</frontName> </args> </SecureHosting> </routers> </frontend> <default> <payment> <SecureHosting> <active>0</active> <model>SecureHosting/redirect</model> <title>SecureHosting</title> <redirect_message>You will be redirected to SecureHosting website when you place an order.</redirect_message> </SecureHosting> </payment> </default> -</config> \ No newline at end of file --- httpdocs/app/code/core/Mage/SecureHosting/etc/system.xml Fri Sep 30 09:26:54 2011 +++ magento-1.4.2.0/app/code/core/Mage/SecureHosting/etc/system.xml Thu Jan 1 00:00:00 1970 @@ -1,125 +0,0 @@ -<?xml version="1.0"?> -<!--/** - * Magento -* - * NOTICE OF LICENSE -* - * This source file is subject to the Open Software License (OSL 3.0) - * that is bundled with this package in the file LICENSE.txt. - * It is also available through the world-wide-web at this URL: - * http://opensource.org/licenses/osl-3.0.php - * If you did not receive a copy of the license and are unable to - * obtain it through the world-wide-web, please send an email - * to license@magentocommerce.com so we can send you a copy immediately. -* - * @category Mage - * @package Mage_SecureHosting - */ ---> -<config> - <sections> <payment> <groups> <SecureHosting translate="label comment" module="SecureHosting"> <label>SecureHosting</label> <comment>Please enter your SecureHosting account details below.</comment> <frontend_type>text</frontend_type> <sort_order>252</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>0</show_in_store> <fields> <active translate="label"> <label>Enabled</label> <frontend_type>select</frontend_type> <source_model>adminhtml/system_config_source_yesno</source_model> Project:ExampleCodeReview|Proposal:#00101|DatePrepared:22/09/2013 ClearandfizzyLimited|CompanyNo.08230961|gareth@clearandfizzy.com 2013ClearandfizzyLimited.AllRightsReserved.

ExampleCodeReview
PreparedbyGarethPrice
gareth@clearandfizzy.com

<sort_order>1</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>0</show_in_store> </active> <title translate="label"> <label>Title</label> <frontend_type>text</frontend_type> <sort_order>2</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>0</show_in_store> </title> <shreference translate="label"> <label>SH account reference</label> <frontend_type>text</frontend_type> <sort_order>3</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>1</show_in_store> </shreference> <checkcode translate="label"> <label>Second level security checkcode</label> <frontend_type>text</frontend_type> <sort_order>4</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>1</show_in_store> </checkcode> <redirect_message translate="label"> <label>Redirect message </label> <comment><![CDATA[(will be displayed when customer selects Secure Hosting)]]></comment> <frontend_type>textarea</frontend_type> <sort_order>5</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>1</show_in_store> </redirect_message> <order_status translate="label"> <label>New order status</label> <frontend_type>select</frontend_type> <source_model>adminhtml/system_config_source_order_status_new</source_model> <sort_order>6</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>0</show_in_store> </order_status> <auto_invoice translate="label"> <label>Automatic invoicing</label> <comment><![CDATA[(automatically invoice new orders upon transaction confirmation)]]></comment> <frontend_type>select</frontend_type> <source_model>adminhtml/system_config_source_yesno</source_model> <sort_order>7</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>0</show_in_store> Project:ExampleCodeReview|Proposal:#00101|DatePrepared:22/09/2013 ClearandfizzyLimited|CompanyNo.08230961|gareth@clearandfizzy.com 2013ClearandfizzyLimited.AllRightsReserved.

ExampleCodeReview
PreparedbyGarethPrice
gareth@clearandfizzy.com

</auto_invoice> <allowspecific translate="label"> <label>Payment from applicable countries</label> <frontend_type>allowspecific</frontend_type> <sort_order>8</sort_order> <source_model>adminhtml/system_config_source_payment_allspecificcountries</source_model> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>1</show_in_store> </allowspecific> <specificcountry translate="label"> <label>Payment from Specific countries</label> <frontend_type>multiselect</frontend_type> <sort_order>9</sort_order> <source_model>adminhtml/system_config_source_country</source_model> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>1</show_in_store> </specificcountry> <sort_order translate="label"> <label>Sort order</label> <frontend_type>text</frontend_type> <sort_order>10</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>0</show_in_store> </sort_order> </fields> </SecureHosting> </groups> </payment> </sections> -</config> \ No newline at end of file --- httpdocs/app/code/core/Mage/SecureHosting/sql/SecureHosting_setup/mysql4-install-0.1.0.php Fri Sep 30 09:26:56 2011 +++ magento-1.4.2.0/app/code/core/Mage/SecureHosting/sql/SecureHosting_setup/mysql4-install-0.1.0.php Thu Jan 1 00:00:00 1970 @@ -1,36 +0,0 @@ -<?php -/** - * Magento -* - * NOTICE OF LICENSE -* - * This source file is subject to the Open Software License (OSL 3.0) - * that is bundled with this package in the file LICENSE.txt. - * It is also available through the world-wide-web at this URL: - * http://opensource.org/licenses/osl-3.0.php - * If you did not receive a copy of the license and are unable to - * obtain it through the world-wide-web, please send an email - * to license@magentocommerce.com so we can send you a copy immediately. -* - * @category Mage - * @package Mage_SecureHosting - */ Project:ExampleCodeReview|Proposal:#00101|DatePrepared:22/09/2013 ClearandfizzyLimited|CompanyNo.08230961|gareth@clearandfizzy.com 2013ClearandfizzyLimited.AllRightsReserved.

ExampleCodeReview
PreparedbyGarethPrice
gareth@clearandfizzy.com

-$installer = $this; -$installer->startSetup(); -$installer->run(" -CREATE TABLE `{$this->getTable('SecureHosting_api_debug')}` ( - `debug_id` int(10) unsigned NOT NULL auto_increment, - `debug_at` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, - `request_body` text, - `response_body` text, - PRIMARY KEY (`debug_id`), - KEY `debug_at` (`debug_at`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; "); -$installer->endSetup(); \ No newline at end of file --- httpdocs/app/code/core/Mage/Shipping/Model/Shipping.php Mon Oct 17 13:16:45 2011 +++ magento-1.4.2.0/app/code/core/Mage/Shipping/Model/Shipping.php Wed Dec 8 21:11:45 2010 @@ -98,7 +98,7 @@ class Mage_Shipping_Model_Shipping ->setCity(Mage::getStoreConfig('shipping/origin/city', $request->getStore())) ->setPostcode(Mage::getStoreConfig('shipping/origin/postcode', $request->getStore())); } + $limitCarrier = $request->getLimitCarrier(); if (!$limitCarrier) { $carriers = Mage::getStoreConfig('carriers', $request->getStoreId());

Project:ExampleCodeReview|Proposal:#00101|DatePrepared:22/09/2013 ClearandfizzyLimited|CompanyNo.08230961|gareth@clearandfizzy.com 2013ClearandfizzyLimited.AllRightsReserved.

ExampleCodeReview
PreparedbyGarethPrice
gareth@clearandfizzy.com

Conclusion
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque lacus velit, vestibulum vitae iaculis in, blandit ut diam. Cras condimentum consectetur lorem ac laoreet. Phasellus vehicula scelerisque nibh, pharetra faucibus libero. Quisque ornare felis sem, eget aliquam turpis feugiat et. Donec porta nunc porttitor est pharetra molestie. Aliquam eu leo et felis adipiscing condimentum.Maurismassaodio,luctusegetauguenec,interdumadipiscingturpis. Vivamus et lectus rutrum, feugiat augue in, sodales leo. Maecenas et diam porta nibh porttitor porttitor vel ac dui. Sed aliquam malesuada velit, nec tempor sapien viverra ut. Cras egestas iaculis sem, quis faucibus libero ullamcorper a. Sed nisl ligula, consequat eget neque eu, placerat porta purus.Phasellus duimi,volutpat vel orciac,gravidafringillanulla.Donecegetvulputate nulla, non malesuada lacus. Pellentesque congue, lacus idporttitor pulvinar,nisl odioposuerequam,velfaucibussapienquam et dolor. Nulla bibendumleo enim, noncommododiamornareat.Pellentesque sedantesed augueplacerateuismodidrutrumsapien. Doneceumetusdiam.Nullamtinciduntante acfacilisis iaculis.Loremipsumdolorsitamet,consectetur adipiscing elit. Sedsitamet molestieaugue.

Project:ExampleCodeReview|Proposal:#00101|DatePrepared:22/09/2013 ClearandfizzyLimited|CompanyNo.08230961|gareth@clearandfizzy.com 2013ClearandfizzyLimited.AllRightsReserved.

Vous aimerez peut-être aussi