<modification>
	<id>Gifts</id>
	<version>1.0.0</version>
	<vqmver>2.1</vqmver>
	<author><![CDATA[marsilea15@gmail.com]]></author>

	<file name="catalog/controller/checkout/checkout.php">
		<operation>
			<search position="after"><![CDATA[public function index() {]]></search>
			<add><![CDATA[
				if( ! empty( $this->session->data['mod_groups'] ) ) {
					$this->load->model('module/mod_gifts_gift');

					if( ! $this->cart->hasProducts() ) {
						$this->session->data['mod_groups'] = array();
					} else if( ! ModGiftsHelperCart::newInstance( $this, $this->data )->initSetOptions()->initValidOptions() ) {
						$this->language->load('module/mod_gifts');
						$this->session->data['mod_error'] = $this->language->get('complete_all_required_data');

						$this->redirect($this->url->link('checkout/cart')); 
					}
				}
			]]></add>
		</operation>
		<operation index="1">
			<search position="after"><![CDATA[$products = $this->cart->getProducts();]]></search>
			<add><![CDATA[
				if( ! empty( $this->session->data['mod_groups'] ) ) {
					$this->load->model('module/mod_gifts_gift');

					if( ! $this->cart->hasProducts() ) {
						$this->session->data['mod_groups'] = array();
					} else {
						ModGiftsHelperCart::newInstance( $this, $this->data )->initCartOptions( $products );

						$this->data['mod_groups_info'] = $this->model_module_mod_gifts_gift->getGroupsMaxProducts();
					}
				}
			]]></add>
		</operation>
	</file>

	<file name="catalog/controller/checkout/confirm.php">
		<operation>
			<search position="replace"><![CDATA[foreach ($this->cart->getProducts() as $product) {]]></search>
			<add><![CDATA[
				$products = $this->cart->getProducts();
				
				if( ! empty( $this->session->data['mod_groups'] ) ) {
					$this->load->model('module/mod_gifts_gift');

					ModGiftsHelperCart::newInstance( $this, $this->data )->initCartOptions( $products, true );
				}

				foreach( $products as $product ) {
					if( empty( $product['recurring'] ) ) {
						$product['recurring'] = '';
					}

					if( empty( $product['profile_name'] ) ) {
						$product['profile_name'] = '';
					}
			]]></add>
		</operation>
	</file>

	<file name="catalog/controller/module/cart.php">
		<operation index="0">
			<search position="after"><![CDATA[$this->cart->remove($this->request->get['remove']);]]></search>
			<add><![CDATA[
				if( ! empty( $this->session->data['mod_groups'] ) ) {
					$this->load->model('module/mod_gifts_gift');
					$modGroups = array();
					
					if( $this->cart->hasProducts() ) {
						foreach( $this->model_module_mod_gifts_gift->getGroupsByCart( ModGiftsHelperCart::newInstance( $this, $this->data )->getCartTotal() ) as $item ) {
							$modGroups[$item['group_id']] = $item;
						}
					}
					
					foreach( $this->session->data['mod_groups'] as $item ) {
						if( ! isset( $modGroups[$item['group_id']] ) ) {
							unset( $this->session->data['mod_groups'][$item['group_id']] );
						}
					}
				}
			]]></add>
		</operation>
	</file>

	<file name="catalog/controller/account/login.php,catalog/controller/checkout/login.php">
		<operation>
			<search position="after"><![CDATA[$customer_info = $this->model_account_customer->getCustomerByEmail($this->request->post['email']);]]></search>
			<add><![CDATA[
				if( ! empty( $this->session->data['mod_groups'] ) ) {
					$this->load->model('module/mod_gifts_gift');
					$modGroups = array();
					
					if( $this->cart->hasProducts() ) {
						foreach( $this->model_module_mod_gifts_gift->getGroupsByCart( ModGiftsHelperCart::newInstance( $this, $this->data )->getCartTotal() ) as $item ) {
							$modGroups[$item['group_id']] = $item;
						}
					}
					
					foreach( $this->session->data['mod_groups'] as $item ) {
						if( ! isset( $modGroups[$item['group_id']] ) ) {
							unset( $this->session->data['mod_groups'][$item['group_id']] );
						}
					}
				}
			]]></add>
		</operation>
	</file>

	<file name="catalog/controller/checkout/cart.php">
		<operation>
			<search position="before"><![CDATA[$this->redirect($this->url->link('checkout/cart')); ]]></search>
			<add><![CDATA[
				$this->load->model('module/mod_gifts_gift');
				$this->session->data['mod_groups'] = array();

				$modGroups = $this->model_module_mod_gifts_gift->getGroupsByCart( ModGiftsHelperCart::newInstance( $this, $this->data )->getCartTotal() );
						
				if( $modGroups ) {
					$this->language->load('module/mod_gifts');

					$modItems = array();

					foreach( $modGroups as $item ) {
						if( ! isset( $this->session->data['mod_groups'][$item['group_id']] ) ) {
							if( $item['notification'] )
								$modItems[] = str_replace( array( '{currency}', '{amount}' ), array( $this->currency->getCode(), round( $item['amount'] * $this->currency->getValue(), 2 ) ), $item['notification'] );
							elseif( $item['name'] )
								$modItems[] = str_replace( array( '{currency}', '{amount}' ), array( $this->currency->getCode(), round( $item['amount'] * $this->currency->getValue(), 2 ) ), $item['name'] );

							$this->session->data['mod_groups'][$item['group_id']] = $item;
						}
					}

					if( isset( $json['success'] ) && $modItems ) {
						$json['success'] .= '<br /><br />';
						$json['success'] .= implode( '<br /><br />', $modItems );
					}
					
					if( ! empty( $this->request->post['add_gift_to_cart'] ) ) {
						$this->session->data['success'] = $this->language->get( 'update_cart' );
					}

					$this->language->load('checkout/cart');
				}
			]]></add>
		</operation>
		<operation error="skip">
			<search position="before"><![CDATA[if ($product['recurring']) {]]></search>
			<add><![CDATA[
				if( empty( $product['recurring'] ) ) {
					$product['recurring'] = '';
				}
				
				if( empty( $product['profile_name'] ) ) {
					$product['profile_name'] = '';
				}
			]]></add>
		</operation>
		<operation>
			<search position="before"><![CDATA[$this->response->setOutput($this->render());]]></search>
			<add><![CDATA[				
				if( isset( $this->request->post['get_gifts'] ) ) {
					$this->children = array();
					$this->data['column_left'] = $this->data['column_right'] = $this->data['content_bottom'] = $this->data['content_top'] = $this->data['footer'] = $this->data['header'] = '';
				}
				
				$this->data['mod_gifts_settings'] = $this->config->get('mod_gifts_settings');
				
				$this->language->load('module/mod_gifts');
				
				$this->data['button_update'] = $this->language->get( 'button_update' );
				$this->data['button_upload'] = $this->language->get( 'button_upload' );
				$this->data['text_select_gift'] = $this->language->get( 'text_select_gift' );
				$this->data['text_gifts'] = $this->language->get( 'text_gifts' );
				$this->data['text_choose'] = $this->language->get( 'text_choose' );
				$this->data['text_choose_gift'] = $this->language->get( 'text_choose_gift' );
				$this->data['text_choose_gifts'] = $this->language->get( 'text_choose_gifts' );
				$this->data['text_gift'] = $this->language->get( 'text_gift' );
			]]></add>
		</operation>
		<operation index="0">
			<search position="after"><![CDATA[$this->data['products'][] = array(]]></search>
			<add><![CDATA[
				'product_id' => $product['product_id'],
			]]></add>
		</operation>
		<operation index="0">
			<search position="after"><![CDATA[$this->cart->remove($this->request->get['remove']);]]></search>
			<add><![CDATA[
				if( ! empty( $this->session->data['mod_groups'] ) ) {
					$this->load->model('module/mod_gifts_gift');
					$modGroups = array();

					if( $this->cart->hasProducts() ) {
						foreach( $this->model_module_mod_gifts_gift->getGroupsByCart( ModGiftsHelperCart::newInstance( $this, $this->data )->getCartTotal() ) as $item ) {
							$modGroups[$item['group_id']] = $item;
						}
					}
					
					foreach( $this->session->data['mod_groups'] as $item ) {
						if( ! isset( $modGroups[$item['group_id']] ) ) {
							unset( $this->session->data['mod_groups'][$item['group_id']] );
						}
					}
				}
			]]></add>
		</operation>
		<operation index="1">
			<search position="after"><![CDATA[$json['success'] = sprintf($this->language->get('text_success'), $this->url->link('product/product', 'product_id=' . $this->request->post['product_id']), $product_info['name'], $this->url->link('checkout/cart'));]]></search>
			<add><![CDATA[
				$this->load->model('module/mod_gifts_gift');
				$this->session->data['mod_groups'] = array();
				
				$modGroups = $this->model_module_mod_gifts_gift->getGroupsByCart( ModGiftsHelperCart::newInstance( $this, $this->data )->getCartTotal() );

				if( $modGroups ) {
					$this->language->load('module/mod_gifts');

					$modItems = array();

					foreach( $modGroups as $item ) {
						if( ! isset( $this->session->data['mod_groups'][$item['group_id']] ) ) {
							if( $item['notification'] )
								$modItems[] = str_replace( array( '{currency}', '{amount}' ), array( $this->currency->getCode(), round( $item['amount'] * $this->currency->getValue(), 2 ) ), $item['notification'] );
							elseif( $item['name'] )
								$modItems[] = str_replace( array( '{currency}', '{amount}' ), array( $this->currency->getCode(), round( $item['amount'] * $this->currency->getValue(), 2 ) ), $item['name'] );

							$this->session->data['mod_groups'][$item['group_id']] = $item;
						}
					}

					if( isset( $json['success'] ) && $modItems ) {
						$json['success'] .= '<br /><br />';
						$json['success'] .= implode( '<br /><br />', $modItems );
					}

					$this->language->load('checkout/cart');
				}
			]]></add>
		</operation>
		
		<!-- OC.1.5.5 -->
		<operation index="0" error="skip">
			<search position="after"><![CDATA['href'     => $this->url->link('product/product', 'product_id=' . $product['product_id']),]]></search>
			<add><![CDATA[
				'href' => ! isset( $product['status'] ) || ! empty( $product['status'] ) ? $this->url->link('product/product', 'product_id=' . $product['product_id']) : $this->url->link('checkout/cart' ),
				'product_id' => $product['product_id'],
				'mod_is_gift' => ! empty( $product['mod_is_gift'] ),
				'mod_is_select' => isset( $product['mod_group_id'] ) && ! empty( $this->session->data['mod_gifts'][$product['mod_group_id']] ) && in_array( $product['product_id'], $this->session->data['mod_gifts'][$product['mod_group_id']] ),
				'mod_group_id' => isset( $product['mod_group_id'] ) ? $product['mod_group_id'] : NULL,
			]]></add>
		</operation>
		<!-- OC.1.5.6 -->
		<operation index="0" error="skip">
			<search position="after"><![CDATA['href'                => $this->url->link('product/product', 'product_id=' . $product['product_id']),]]></search>
			<add><![CDATA[
				'href' => ! isset( $product['status'] ) || ! empty( $product['status'] ) ? $this->url->link('product/product', 'product_id=' . $product['product_id']) : $this->url->link('checkout/cart' ),
				'product_id' => $product['product_id'],
				'mod_is_gift' => ! empty( $product['mod_is_gift'] ),
				'mod_is_select' => isset( $product['mod_group_id'] ) && ! empty( $this->session->data['mod_gifts'][$product['mod_group_id']] ) && in_array( $product['product_id'], $this->session->data['mod_gifts'][$product['mod_group_id']] ),
				'mod_group_id' => isset( $product['mod_group_id'] ) ? $product['mod_group_id'] : NULL,
			]]></add>
		</operation>
		
		<operation index="1">
			<search position="before"><![CDATA[if (!empty($this->request->post['quantity'])) {]]></search>
			<add><![CDATA[
				if( ! empty( $this->session->data['mod_groups'] ) ) {
					$this->load->model('module/mod_gifts_gift');

					ModGiftsHelperCart::newInstance( $this, $this->data )->initSetOptions();
				}
				
				if( isset( $this->session->data['mod_error'] ) ) {
					$this->error['warning'] = $this->session->data['mod_error'];

					unset( $this->session->data['mod_error'] );
				}
			]]></add>
		</operation>
		<operation index="1">
			<search position="after"><![CDATA[$products = $this->cart->getProducts();]]></search>
			<add><![CDATA[
				if( ! empty( $this->session->data['mod_groups'] ) ) {
					$this->load->model('module/mod_gifts_gift');

					if( ! $this->cart->hasProducts() ) {
						$this->session->data['mod_groups'] = array();
					} else {
						ModGiftsHelperCart::newInstance( $this, $this->data )->initCartOptions( $products );

						$this->data['mod_groups_info'] = $this->model_module_mod_gifts_gift->getGroupsMaxProducts();
					}
				}
			]]></add>
		</operation>
	</file>

	<file name="catalog/view/theme/*/template/checkout/cart.tpl">
		<operation>
			<search position="replace"><![CDATA[<?php foreach ($products as $product) { ?>]]></search>
			<add><![CDATA[
				<?php foreach ($products as $product) { ?>
					<?php if( ! empty( $product['mod_is_gift'] ) ) { $has_gifts = true; ?>
						<?php if( ! empty( $product['mod_is_select'] ) ) { ?>
							<tr>
								<td class="image"><img src="<?php echo $product['thumb']; ?>" /></td>
								<td class="name"><?php echo $product['name']; ?><br /><b><?php echo $text_gift; ?></b></td>
								<td class="model"><?php echo $product['model']; ?></td>
								<td class="quantity"><?php echo $product['quantity']; ?></td>
								<td class="price"><?php echo $this->currency->format(0); ?></td>
								<td class="total"><?php echo $this->currency->format(0); ?></td>
							</tr>
						<?php } ?>
					<?php continue; } ?>
			]]></add>
		</operation>
		<operation>
			<search position="replace"><![CDATA[<?php echo $checkout; ?>]]></search>
			<add><![CDATA[<?php echo $checkout; ?>" id="mod_checkout_cart]]></add>
		</operation>
		<operation>
			<search position="before"><![CDATA[<?php echo $footer; ?>]]></search>
			<add><![CDATA[
				<script type="text/javascript">
				$('#mod_checkout_cart').click(function(){
					$('.cart-info').closest('form').attr('action', $(this).attr('href')).submit();

					return false;
				});
				</script>
			]]></add>
		</operation>
		<operation>
			<search position="before"><![CDATA[<?php echo $footer; ?>]]></search>
			<add><![CDATA[
				<?php require(DIR_TEMPLATE . '/default/template/checkout/mod_gifts_table.tpl'); ?>
			]]></add>
		</operation>
	</file>

	<file name="catalog/controller/checkout/confirm.php">
		<operation error="skip">
			<search position="before"><![CDATA[$this->data['products'][] = array(]]></search>
			<add><![CDATA[
				$product_info = $this->model_catalog_product->getProduct($product['product_id']);
			]]></add>
		</operation>
		<operation error="skip">
			<search position="before"><![CDATA[$this->data['products'] = array();]]></search>
			<add><![CDATA[
				$this->load->model('catalog/product');
			]]></add>
		</operation>
		<operation error="skip">
			<search position="replace"><![CDATA['href'                => $this->url->link('product/product', 'product_id=' . $product['product_id']),]]></search>
			<add><![CDATA['href' => empty( $product_info['status'] ) ? 'javascript:void(0);' : $this->url->link('product/product', 'product_id=' . $product['product_id']),]]></add>
		</operation>
		<operation error="skip">
			<search position="replace"><![CDATA['price'               => $this->currency->format($this->tax->calculate($product['price'], $product['tax_class_id'], $this->config->get('config_tax'))),]]></search>
			<add><![CDATA['price' => ! empty( $product['mod_is_gift'] ) ? $this->currency->format(0) : $this->currency->format($this->tax->calculate($product['price'], $product['tax_class_id'], $this->config->get('config_tax'))),]]></add>
		</operation>
		<operation error="skip">
			<search position="replace"><![CDATA['total'               => $this->currency->format($this->tax->calculate($product['price'], $product['tax_class_id'], $this->config->get('config_tax')) * $product['quantity']),]]></search>
			<add><![CDATA['total' => ! empty( $product['mod_is_gift'] ) ? $this->currency->format(0) : $this->currency->format($this->tax->calculate($product['price'], $product['tax_class_id'], $this->config->get('config_tax')) * $product['quantity']),]]></add>
		</operation>
		<operation error="skip">
			<search position="replace"><![CDATA['tax'        => $this->tax->getTax($product['price'], $product['tax_class_id']),]]></search>
			<add><![CDATA['tax'        => ! empty( $product['mod_is_gift'] ) ? 0 : $this->tax->getTax($product['price'], $product['tax_class_id']),]]></add>
		</operation>
	</file>
</modification>