<?php
/*
* 2007-2012 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 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/afl-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@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
*  @author PrestaShop SA <contact@prestashop.com>
*  @copyright  2007-2012 PrestaShop SA
*  @version  Release: $Revision: 14390 $
*  @license    http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
*  International Registered Trademark & Property of PrestaShop SA
*/

if (!defined('_PS_VERSION_'))
    exit;

function upgrade_module_3_0($object, $install = false)
{
	$paypal_version = Configuration::get('PAYPAL_VERSION');

	if ((!$paypal_version) || (empty($paypal_version)) || ($paypal_version < $object->version))
	{
		/* Update hooks */
		$object->registerHook('payment');
		$object->registerHook('paymentReturn');
		$object->registerHook('shoppingCartExtra');
		$object->registerHook('backBeforePayment');
		$object->registerHook('rightColumn');
		$object->registerHook('cancelProduct');
		$object->registerHook('productFooter');
		$object->registerHook('header');
		$object->registerHook('adminOrder');
		$object->registerHook('backOfficeHeader');

		Configuration::updateValue('PAYPAL_VERSION', $object->version);

		$payment_method = (int)Configuration::get('PAYPAL_PAYMENT_METHOD');
		$payment_methods = array(
			0 => WPS,
			2 => HSS,
			1 => ECS
		);

		Configuration::updateValue('PAYPAL_PAYMENT_METHOD', (int)$payment_methods[$payment_method]);
		Configuration::updateValue('PAYPAL_BUSINESS_ACCOUNT', Configuration::get('PAYPAL_BUSINESS'));
		Configuration::updateValue('PAYPAL_BUSINESS', 0);
	}

	$sql = 'SHOW TABLES FROM `' . _DB_NAME_ . '`
			LIKE \'' . _DB_PREFIX_ . 'paypal_order\'';

	$need_upgrade = Db::getInstance()->executeS($sql);

	if (sizeof($need_upgrade) > 0)
	{
		$columns = array(array('name' => 'id_invoice', 'type' => 'varchar(255) DEFAULT NULL'), array('name' => 'currency', 'type' => 'varchar(10) NOT NULL'), array('name' => 'total_paid', 'type' => 'varchar(50) NOT NULL'), array('name' => 'shipping', 'type' => 'varchar(50) NOT NULL'), array('name' => 'payment_date', 'type' => 'varchar(50) NOT NULL'), array('name' => 'capture', 'type' => 'int(2) NOT NULL'));

		foreach ($columns as $column)
		{
			$sql = 'SHOW COLUMNS FROM `' . _DB_PREFIX_ . 'paypal_order`
					LIKE \'' . pSQL($column['name']) . '\'';

			if (!Db::getInstance()->executeS($sql))
			{
				$sql = 'ALTER TABLE `' . _DB_PREFIX_ . 'paypal_order`
						ADD `' . pSQL($column['name']) . '` ' . $column['type'];

				Db::getInstance()->execute($sql);
			}
		}
	}

	return true;
}
