Version Notes
Massale_FacbookConnector
Download this release
Release Info
| Developer | Magento Core Team |
| Extension | Massale_Facebook_Connector |
| Version | 0.1.0 |
| Comparing to | |
| See all releases | |
Version 0.1.0
- app/code/local/Magestore/Mageconnector/Exception.php +11 -0
- app/code/local/Magestore/Mageconnector/Helper/Data.php +71 -0
- app/code/local/Magestore/Mageconnector/Model/Abstract.php +42 -0
- app/code/local/Magestore/Mageconnector/Model/Cart.php +268 -0
- app/code/local/Magestore/Mageconnector/Model/Category.php +74 -0
- app/code/local/Magestore/Mageconnector/Model/Importstore.php +62 -0
- app/code/local/Magestore/Mageconnector/Model/Product.php +884 -0
- app/code/local/Magestore/Mageconnector/controllers/IndexController.php +269 -0
- app/code/local/Magestore/Mageconnector/etc/adminhtml.xml +46 -0
- app/code/local/Magestore/Mageconnector/etc/config.xml +135 -0
- app/code/local/Magestore/Mageconnector/etc/system.xml +43 -0
- app/code/local/Magestore/Mageconnector/sql/mageconnector_setup/mysql4-install-0.1.0.php +17 -0
- app/etc/modules/Magestore_Mageconnector.xml +9 -0
- package.xml +18 -0
app/code/local/Magestore/Mageconnector/Exception.php
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Class manipulate with Exception in Magestore_Mageconnector module
|
| 4 |
+
*
|
| 5 |
+
* @category Magestore
|
| 6 |
+
* @package Magestore_Mageconnector
|
| 7 |
+
* @author Nguyen Minh Dung (http://oss.com.vn)
|
| 8 |
+
*/
|
| 9 |
+
class Magestore_Mageconnector_Exception extends Mage_Core_Exception
|
| 10 |
+
{
|
| 11 |
+
}
|
app/code/local/Magestore/Mageconnector/Helper/Data.php
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class Magestore_Mageconnector_Helper_Data extends Mage_Core_Helper_Abstract
|
| 4 |
+
{
|
| 5 |
+
public function getListStoreView() {
|
| 6 |
+
$collection = Mage::getResourceModel('core/website_collection');
|
| 7 |
+
$default_view = Mage::getStoreConfig('mageconnector/store/default_store_view');
|
| 8 |
+
|
| 9 |
+
$xml = '<?xml version="1.0" encoding="utf-8"?><views>';
|
| 10 |
+
|
| 11 |
+
$i = 0;
|
| 12 |
+
foreach($collection as $website) {
|
| 13 |
+
|
| 14 |
+
$goupcollection = $website->getGroupCollection();
|
| 15 |
+
foreach($goupcollection as $group) {
|
| 16 |
+
|
| 17 |
+
$storecollection = $group->getStoreCollection();
|
| 18 |
+
foreach ($storecollection as $store) {
|
| 19 |
+
$data = $store->toArray();
|
| 20 |
+
|
| 21 |
+
$isDefault = false;
|
| 22 |
+
if (($default_view != '' && $default_view == $data['code']) ||
|
| 23 |
+
($default_view == '' && $website->__get('is_default') &&
|
| 24 |
+
$website->__get('default_group_id') == $group->getId() &&
|
| 25 |
+
$group->__get('default_store_id') == $store->getId())
|
| 26 |
+
) {
|
| 27 |
+
$isDefault = true;
|
| 28 |
+
}
|
| 29 |
+
|
| 30 |
+
$totalProducts = count(Mage::getModel('catalog/product')->getCollection()
|
| 31 |
+
->addAttributeToSelect('name')
|
| 32 |
+
->addStoreFilter($store->getId())
|
| 33 |
+
->addAttributeToFilter(array(
|
| 34 |
+
array(
|
| 35 |
+
'attribute' => 'name',
|
| 36 |
+
'like' => '%%'
|
| 37 |
+
),
|
| 38 |
+
array(
|
| 39 |
+
'attribute' => 'url_key',
|
| 40 |
+
'like' => '%%'
|
| 41 |
+
),
|
| 42 |
+
array(
|
| 43 |
+
'attribute' => 'short_description',
|
| 44 |
+
'like' => '%%'
|
| 45 |
+
)
|
| 46 |
+
))
|
| 47 |
+
->addAttributeToFilter(array(
|
| 48 |
+
array(
|
| 49 |
+
'attribute' => 'visibility',
|
| 50 |
+
'in' => array(3,4)
|
| 51 |
+
)
|
| 52 |
+
))
|
| 53 |
+
->addFieldToFilter("status", 1)
|
| 54 |
+
);
|
| 55 |
+
|
| 56 |
+
$xml .= '<view>'
|
| 57 |
+
.'<code><![CDATA['.$data['code'].']]></code>'
|
| 58 |
+
.'<name><![CDATA['.$data['name'].']]></name>'
|
| 59 |
+
.'<is_active>'.$data['is_active'].'</is_active>'
|
| 60 |
+
.'<is_default>'.$isDefault.'</is_default>'
|
| 61 |
+
.'<total_products>'.$totalProducts.'</total_products>'
|
| 62 |
+
.'<order>'.(++$i).'</order>'
|
| 63 |
+
.'</view>';
|
| 64 |
+
}
|
| 65 |
+
}
|
| 66 |
+
}
|
| 67 |
+
|
| 68 |
+
$xml .= '</views>';
|
| 69 |
+
return $xml;
|
| 70 |
+
}
|
| 71 |
+
}
|
app/code/local/Magestore/Mageconnector/Model/Abstract.php
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
/**
|
| 4 |
+
* Model abstract class for module
|
| 5 |
+
*
|
| 6 |
+
* @category Magestore
|
| 7 |
+
* @package Magestore_Mageconnector
|
| 8 |
+
* @author Nguyen Minh Dung (http://oss.com.vn)
|
| 9 |
+
*/
|
| 10 |
+
abstract class Magestore_Mageconnector_Model_Abstract {
|
| 11 |
+
|
| 12 |
+
/**
|
| 13 |
+
* Export Product to XML Data by store code
|
| 14 |
+
*
|
| 15 |
+
* @param string $store_code
|
| 16 |
+
* @return array Store array data
|
| 17 |
+
*/
|
| 18 |
+
public function getStore($store_code = null) {
|
| 19 |
+
if (is_null($store_code) || $store_code == '') {
|
| 20 |
+
$store_code = Mage::getStoreConfig('mageconnector/store/default_store_view');
|
| 21 |
+
|
| 22 |
+
if ($store_code == '') {
|
| 23 |
+
$options = Mage::getModel('mageconnector/importstore')->toOptionArray();
|
| 24 |
+
|
| 25 |
+
foreach ($options as $item) {
|
| 26 |
+
$store_code = $item['value'];
|
| 27 |
+
break;
|
| 28 |
+
}
|
| 29 |
+
}
|
| 30 |
+
}
|
| 31 |
+
|
| 32 |
+
$resource = Mage::getSingleton('core/resource');
|
| 33 |
+
$read = $resource->getConnection("core_read");
|
| 34 |
+
$getStore = Mage::getResourceModel('core/store_collection')
|
| 35 |
+
->getSelect()
|
| 36 |
+
->where('code = ?', $store_code);
|
| 37 |
+
|
| 38 |
+
$store = $read->fetchRow($getStore);
|
| 39 |
+
return $store;
|
| 40 |
+
}
|
| 41 |
+
|
| 42 |
+
}
|
app/code/local/Magestore/Mageconnector/Model/Cart.php
ADDED
|
@@ -0,0 +1,268 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
/**
|
| 4 |
+
* Export Category data to xml data
|
| 5 |
+
*
|
| 6 |
+
* @category Magestore
|
| 7 |
+
* @package Magestore_Mageconnector
|
| 8 |
+
* @author Nguyen Minh Dung (http://oss.com.vn)
|
| 9 |
+
*/
|
| 10 |
+
class Magestore_Mageconnector_Model_Cart extends Magestore_Mageconnector_Model_Abstract {
|
| 11 |
+
|
| 12 |
+
/**
|
| 13 |
+
* Initialize product instance from request data
|
| 14 |
+
*
|
| 15 |
+
* @return Mage_Catalog_Model_Product || false
|
| 16 |
+
*/
|
| 17 |
+
protected function _initProduct() {
|
| 18 |
+
$productId = (int) $_REQUEST['product'];
|
| 19 |
+
if ($productId) {
|
| 20 |
+
try {
|
| 21 |
+
$view_code = $_REQUEST['view'];
|
| 22 |
+
} catch (Exception $e) {
|
| 23 |
+
$view_code = '';
|
| 24 |
+
}
|
| 25 |
+
$store = $this->getStore($view_code);
|
| 26 |
+
$storeId = $store['store_id'];
|
| 27 |
+
|
| 28 |
+
$product = Mage::getModel('catalog/product')
|
| 29 |
+
->setStoreId($storeId)
|
| 30 |
+
->load($productId);
|
| 31 |
+
if ($product->getId()) {
|
| 32 |
+
return $product;
|
| 33 |
+
}
|
| 34 |
+
}
|
| 35 |
+
return false;
|
| 36 |
+
}
|
| 37 |
+
|
| 38 |
+
public function addToCart() {
|
| 39 |
+
$cart = Mage::getSingleton('checkout/cart');
|
| 40 |
+
$params = $_REQUEST;
|
| 41 |
+
try {
|
| 42 |
+
if (isset($params['qty'])) {
|
| 43 |
+
$filter = new Zend_Filter_LocalizedToNormalized(
|
| 44 |
+
array('locale' => Mage::app()->getLocale()->getLocaleCode())
|
| 45 |
+
);
|
| 46 |
+
$params['qty'] = $filter->filter($params['qty']);
|
| 47 |
+
}
|
| 48 |
+
|
| 49 |
+
$product = $this->_initProduct();
|
| 50 |
+
try {
|
| 51 |
+
$related = $params['related_product'];
|
| 52 |
+
} catch (Exception $e) {
|
| 53 |
+
$related = null;
|
| 54 |
+
}
|
| 55 |
+
|
| 56 |
+
/**
|
| 57 |
+
* Check product availability
|
| 58 |
+
*/
|
| 59 |
+
if (!$product) {
|
| 60 |
+
return false;
|
| 61 |
+
}
|
| 62 |
+
|
| 63 |
+
$cart->addProduct($product, $params);
|
| 64 |
+
if (!empty($related) && !is_null($related)) {
|
| 65 |
+
$cart->addProductsByIds(explode(',', $related));
|
| 66 |
+
}
|
| 67 |
+
|
| 68 |
+
$cart->save();
|
| 69 |
+
|
| 70 |
+
Mage::getSingleton('checkout/session')->setCartWasUpdated(true);
|
| 71 |
+
|
| 72 |
+
return true;
|
| 73 |
+
} catch (Exception $e) {
|
| 74 |
+
Zend_Debug::dump($e);
|
| 75 |
+
die();
|
| 76 |
+
}
|
| 77 |
+
return false;
|
| 78 |
+
}
|
| 79 |
+
|
| 80 |
+
public function updateCart() {
|
| 81 |
+
try {
|
| 82 |
+
$cartData = $_REQUEST['cart'];
|
| 83 |
+
if (is_array($cartData)) {
|
| 84 |
+
$filter = new Zend_Filter_LocalizedToNormalized(
|
| 85 |
+
array('locale' => Mage::app()->getLocale()->getLocaleCode())
|
| 86 |
+
);
|
| 87 |
+
foreach ($cartData as $index => $data) {
|
| 88 |
+
if (isset($data['qty'])) {
|
| 89 |
+
$cartData[$index]['qty'] = $filter->filter($data['qty']);
|
| 90 |
+
}
|
| 91 |
+
}
|
| 92 |
+
$cart = Mage::getSingleton('checkout/cart');
|
| 93 |
+
if (!$cart->getCustomerSession()->getCustomer()->getId() && $cart->getQuote()->getCustomerId()) {
|
| 94 |
+
$cart->getQuote()->setCustomerId(null);
|
| 95 |
+
}
|
| 96 |
+
$cart->updateItems($cartData)
|
| 97 |
+
->save();
|
| 98 |
+
}
|
| 99 |
+
Mage::getSingleton('checkout/session')->setCartWasUpdated(true);
|
| 100 |
+
return true;
|
| 101 |
+
} catch (Exception $e) {
|
| 102 |
+
|
| 103 |
+
}
|
| 104 |
+
return false;
|
| 105 |
+
}
|
| 106 |
+
|
| 107 |
+
public function deleteCartItem() {
|
| 108 |
+
$id = $_REQUEST['item'];
|
| 109 |
+
if ($id) {
|
| 110 |
+
try {
|
| 111 |
+
$cart = Mage::getSingleton('checkout/cart')->removeItem($id)
|
| 112 |
+
->save();
|
| 113 |
+
return true;
|
| 114 |
+
} catch (Exception $e) {
|
| 115 |
+
|
| 116 |
+
}
|
| 117 |
+
}
|
| 118 |
+
return false;
|
| 119 |
+
}
|
| 120 |
+
|
| 121 |
+
public function exportXml() {
|
| 122 |
+
$cartXML = '<?xml version="1.0" encoding="UTF-8"?><massale-cart>';
|
| 123 |
+
|
| 124 |
+
$quote = Mage::getSingleton('checkout/session')->getQuote();
|
| 125 |
+
$items = $quote->getAllVisibleItems();
|
| 126 |
+
|
| 127 |
+
if (count($items) > 0) {
|
| 128 |
+
$cartXML .= '<products>';
|
| 129 |
+
$i = 0;
|
| 130 |
+
foreach ($items as $item) {
|
| 131 |
+
$product = $item->getProduct();
|
| 132 |
+
|
| 133 |
+
switch ($product->getTypeId()) {
|
| 134 |
+
case "configurable":
|
| 135 |
+
$blockId = "checkout/cart_item_renderer_configurable";
|
| 136 |
+
break;
|
| 137 |
+
case "bundle":
|
| 138 |
+
$blockId = "bundle/checkout_cart_item_renderer";
|
| 139 |
+
break;
|
| 140 |
+
case "downloadable":
|
| 141 |
+
$blockId = "downloadable/checkout_cart_item_renderer";
|
| 142 |
+
break;
|
| 143 |
+
default:
|
| 144 |
+
$blockId = "checkout/cart_item_renderer";
|
| 145 |
+
}
|
| 146 |
+
|
| 147 |
+
$block = Mage::getBlockSingleton($blockId)
|
| 148 |
+
->setItem($item);
|
| 149 |
+
|
| 150 |
+
$cartXML .= '<product>'
|
| 151 |
+
. '<order>#' . (++$i) . '</order>'
|
| 152 |
+
. '<id>' . $block->getItem()->getId() . '</id>'
|
| 153 |
+
. '<name><![CDATA[' . $block->htmlEscape($block->getProductName()) . ']]></name>'
|
| 154 |
+
. '<image><![CDATA[' . $block->getProductThumbnail() . ']]></image>'
|
| 155 |
+
. '<url_key><![CDATA[' . $product->getUrlKey() . ']]></url_key>';
|
| 156 |
+
|
| 157 |
+
if ($_options = $block->getOptionList()):
|
| 158 |
+
$cartXML .= '<options>';
|
| 159 |
+
foreach ($_options as $_option):
|
| 160 |
+
$_formatedOptionValue = $block->getFormatedOptionValue($_option);
|
| 161 |
+
$cartXML .= '<option>'
|
| 162 |
+
. '<label><![CDATA[' . $block->htmlEscape($_option['label']) . ']]></label>'
|
| 163 |
+
. '<value><![CDATA[' . $_formatedOptionValue['value'] . ']]></value>'
|
| 164 |
+
. '</option>'
|
| 165 |
+
;
|
| 166 |
+
endforeach;
|
| 167 |
+
$cartXML .= '</options>';
|
| 168 |
+
endif;
|
| 169 |
+
|
| 170 |
+
$cartXML .= '<qty>' . $item->getQty() . '</qty>';
|
| 171 |
+
|
| 172 |
+
$price = Mage::helper('core')
|
| 173 |
+
->currency($item->getPrice(), true, false);
|
| 174 |
+
$rowsubtotal = Mage::helper('core')
|
| 175 |
+
->currency($item->getRowTotal(), true, false);
|
| 176 |
+
|
| 177 |
+
$cartXML .= '<price><![CDATA[' . $price . ']]></price>';
|
| 178 |
+
$cartXML .= '<subtotal><![CDATA[' . $rowsubtotal . ']]></subtotal>';
|
| 179 |
+
$cartXML .= '</product>';
|
| 180 |
+
}
|
| 181 |
+
$cartXML .= '</products>';
|
| 182 |
+
|
| 183 |
+
if ($quote->getCouponCode() != '') {
|
| 184 |
+
$cartXML .= '<coupon>'
|
| 185 |
+
. '<code><![CDATA[' . $quote->getCouponCode() . ']]></code>'
|
| 186 |
+
. '<label><![CDATA[' . $quote->getCouponCode() . ']]></label>'
|
| 187 |
+
. '</coupon>';
|
| 188 |
+
}
|
| 189 |
+
|
| 190 |
+
$subtotal = $quote->getSubtotal();
|
| 191 |
+
$subtotal_withdiscount = $quote->getSubtotalWithDiscount();
|
| 192 |
+
|
| 193 |
+
$discount = floatval($subtotal_withdiscount) - floatval($subtotal);
|
| 194 |
+
$subtotal = Mage::helper('core')
|
| 195 |
+
->currency($subtotal, true, false);
|
| 196 |
+
$cartXML .= '<subtotal><![CDATA[' . $subtotal . ']]></subtotal>';
|
| 197 |
+
|
| 198 |
+
if ($discount != 0) {
|
| 199 |
+
$discount = Mage::helper('core')
|
| 200 |
+
->currency($discount, true, false);
|
| 201 |
+
$cartXML .= '<discount><![CDATA[' . $discount . ']]></discount>';
|
| 202 |
+
}
|
| 203 |
+
|
| 204 |
+
$grandtotal = $quote->getGrandTotal();
|
| 205 |
+
$tax = $grandtotal - $subtotal_withdiscount;
|
| 206 |
+
|
| 207 |
+
if ($tax != 0) {
|
| 208 |
+
$tax = Mage::helper('core')
|
| 209 |
+
->currency($tax, true, false);
|
| 210 |
+
$cartXML .= '<tax><![CDATA[' . $tax . ']]></tax>';
|
| 211 |
+
}
|
| 212 |
+
$grandtotal = Mage::helper('core')
|
| 213 |
+
->currency($grandtotal, true, false);
|
| 214 |
+
|
| 215 |
+
$cartXML .= '<grandtotal><![CDATA[' . $grandtotal . ']]></grandtotal>';
|
| 216 |
+
} else {
|
| 217 |
+
$cartXML .= 'empty';
|
| 218 |
+
}
|
| 219 |
+
$cartXML .= '</massale-cart>';
|
| 220 |
+
return $cartXML;
|
| 221 |
+
}
|
| 222 |
+
|
| 223 |
+
public function applyCoupon() {
|
| 224 |
+
if (!Mage::getSingleton('checkout/cart')->getQuote()->getItemsCount()) {
|
| 225 |
+
return false;
|
| 226 |
+
}
|
| 227 |
+
|
| 228 |
+
$couponCode = $_REQUEST['coupon_code'];
|
| 229 |
+
$oldCouponCode = Mage::getSingleton('checkout/cart')->getQuote()->getCouponCode();
|
| 230 |
+
|
| 231 |
+
if (!strlen($couponCode) && !strlen($oldCouponCode)) {
|
| 232 |
+
return false;
|
| 233 |
+
}
|
| 234 |
+
|
| 235 |
+
try {
|
| 236 |
+
Mage::getSingleton('checkout/cart')->getQuote()->getShippingAddress()->setCollectShippingRates(true);
|
| 237 |
+
Mage::getSingleton('checkout/cart')->getQuote()->setCouponCode(strlen($couponCode) ? $couponCode : '')
|
| 238 |
+
->collectTotals()
|
| 239 |
+
->save();
|
| 240 |
+
|
| 241 |
+
if ($couponCode) {
|
| 242 |
+
if ($couponCode == Mage::getSingleton('checkout/cart')->getQuote()->getCouponCode()) {
|
| 243 |
+
return true;
|
| 244 |
+
}
|
| 245 |
+
}
|
| 246 |
+
} catch (Exception $e) {
|
| 247 |
+
|
| 248 |
+
}
|
| 249 |
+
|
| 250 |
+
return false;
|
| 251 |
+
}
|
| 252 |
+
|
| 253 |
+
public function cancelCoupon() {
|
| 254 |
+
try {
|
| 255 |
+
Mage::getSingleton('checkout/cart')->getQuote()->getShippingAddress()->setCollectShippingRates(true);
|
| 256 |
+
Mage::getSingleton('checkout/cart')->getQuote()->setCouponCode('')
|
| 257 |
+
->collectTotals()
|
| 258 |
+
->save();
|
| 259 |
+
|
| 260 |
+
return true;
|
| 261 |
+
} catch (Exception $e) {
|
| 262 |
+
|
| 263 |
+
}
|
| 264 |
+
|
| 265 |
+
return false;
|
| 266 |
+
}
|
| 267 |
+
|
| 268 |
+
}
|
app/code/local/Magestore/Mageconnector/Model/Category.php
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Export Category data to xml data
|
| 4 |
+
*
|
| 5 |
+
* @category Magestore
|
| 6 |
+
* @package Magestore_Mageconnector
|
| 7 |
+
* @author Nguyen Minh Dung (http://oss.com.vn)
|
| 8 |
+
*/
|
| 9 |
+
class Magestore_Mageconnector_Model_Category extends Magestore_Mageconnector_Model_Abstract
|
| 10 |
+
{
|
| 11 |
+
/**
|
| 12 |
+
* Export Category to XML Data by store code
|
| 13 |
+
*
|
| 14 |
+
* @param string $store_code
|
| 15 |
+
*/
|
| 16 |
+
public function exportXML($store_code = null) {
|
| 17 |
+
$store = $this->getStore($store_code);
|
| 18 |
+
$storeId = $store['store_id'];
|
| 19 |
+
|
| 20 |
+
$group = Mage::getModel('core/store_group')->load($store['group_id']);
|
| 21 |
+
$rootCategoryId = $group->getRootCategoryId();
|
| 22 |
+
|
| 23 |
+
$xml = '<?xml version="1.0"?><categories>';
|
| 24 |
+
|
| 25 |
+
$category = Mage::getModel('catalog/category')
|
| 26 |
+
->setStoreId($storeId)
|
| 27 |
+
->load($rootCategoryId);
|
| 28 |
+
|
| 29 |
+
if ($category instanceof Mage_Catalog_Model_Category) {
|
| 30 |
+
$data = $category->toArray();
|
| 31 |
+
if (array_key_exists('entity_id', $data)) {
|
| 32 |
+
$this->pushChildrenCategory($category
|
| 33 |
+
->getChildrenCategories(), $xml, $storeId);
|
| 34 |
+
}
|
| 35 |
+
}
|
| 36 |
+
|
| 37 |
+
$xml .= '</categories>';
|
| 38 |
+
return $xml;
|
| 39 |
+
}
|
| 40 |
+
|
| 41 |
+
private function pushChildrenCategory($categoryCollection, &$xml, $storeId) {
|
| 42 |
+
foreach($categoryCollection as $category) {
|
| 43 |
+
if ($category instanceof Mage_Catalog_Model_Category) {
|
| 44 |
+
if ($category->getIsActive()) {
|
| 45 |
+
$productList = $category->getProductCollection();
|
| 46 |
+
$total_products = count($category
|
| 47 |
+
->setStoreId($storeId)
|
| 48 |
+
->getProductCollection()
|
| 49 |
+
->addAttributeToFilter(array(
|
| 50 |
+
array(
|
| 51 |
+
'attribute' => 'visibility',
|
| 52 |
+
'in' => array(2,4)
|
| 53 |
+
)
|
| 54 |
+
))
|
| 55 |
+
);
|
| 56 |
+
$url_key = $category->getRequestPath();
|
| 57 |
+
$url_key = str_replace('.html', '', $url_key);
|
| 58 |
+
$parts = split('/', $url_key);
|
| 59 |
+
$url_key = $parts[count($parts) - 1];
|
| 60 |
+
|
| 61 |
+
$xml .= '<category>'
|
| 62 |
+
.'<id>'.$category->getId().'</id>'
|
| 63 |
+
.'<name><![CDATA['.$category->getName().']]></name>'
|
| 64 |
+
.'<url_key><![CDATA['.$url_key.']]></url_key>'
|
| 65 |
+
.'<url><![CDATA['.$category->getUrl().']]></url>'
|
| 66 |
+
.'<total_products>'.$total_products.'</total_products>'
|
| 67 |
+
.'<children>';
|
| 68 |
+
$this->pushChildrenCategory($category->getChildrenCategories(), $xml, $storeId);
|
| 69 |
+
$xml .= '</children></category>';
|
| 70 |
+
}
|
| 71 |
+
}
|
| 72 |
+
}
|
| 73 |
+
}
|
| 74 |
+
}
|
app/code/local/Magestore/Mageconnector/Model/Importstore.php
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Source for import Store to get store view default
|
| 4 |
+
*
|
| 5 |
+
* @category Magestore
|
| 6 |
+
* @package Magestore_Mageconnector
|
| 7 |
+
* @author Nguyen Minh Dung (http://magestore.com)
|
| 8 |
+
*/
|
| 9 |
+
class Magestore_Mageconnector_Model_Importstore
|
| 10 |
+
{
|
| 11 |
+
public function toOptionArray()
|
| 12 |
+
{
|
| 13 |
+
$collection = Mage::getResourceModel('core/website_collection');
|
| 14 |
+
|
| 15 |
+
$options = array();
|
| 16 |
+
|
| 17 |
+
foreach($collection as $website) {
|
| 18 |
+
|
| 19 |
+
$goupcollection = $website->getGroupCollection();
|
| 20 |
+
foreach($goupcollection as $group) {
|
| 21 |
+
|
| 22 |
+
$storecollection = $group->getStoreCollection();
|
| 23 |
+
foreach ($storecollection as $store) {
|
| 24 |
+
|
| 25 |
+
if ($website->__get('is_default') &&
|
| 26 |
+
$website->__get('default_group_id') == $group->getId() &&
|
| 27 |
+
$group->__get('default_store_id') == $store->getId()) {
|
| 28 |
+
$options[] = array(
|
| 29 |
+
'value' => $store->code,
|
| 30 |
+
'label' => $website->getName().' / '.$group->getName().' / '.$store->getName()
|
| 31 |
+
);
|
| 32 |
+
break;
|
| 33 |
+
}
|
| 34 |
+
}
|
| 35 |
+
}
|
| 36 |
+
}
|
| 37 |
+
|
| 38 |
+
foreach($collection as $website) {
|
| 39 |
+
|
| 40 |
+
$goupcollection = $website->getGroupCollection();
|
| 41 |
+
foreach($goupcollection as $group) {
|
| 42 |
+
|
| 43 |
+
$storecollection = $group->getStoreCollection();
|
| 44 |
+
foreach ($storecollection as $store) {
|
| 45 |
+
|
| 46 |
+
if ($website->__get('is_default') &&
|
| 47 |
+
$website->__get('default_group_id') == $group->getId() &&
|
| 48 |
+
$group->__get('default_store_id') == $store->getId()) {
|
| 49 |
+
continue;
|
| 50 |
+
} else {
|
| 51 |
+
$options[] = array(
|
| 52 |
+
'value' => $store->code,
|
| 53 |
+
'label' => $website->getName().' / '.$group->getName().' / '.$store->getName()
|
| 54 |
+
);
|
| 55 |
+
}
|
| 56 |
+
}
|
| 57 |
+
}
|
| 58 |
+
}
|
| 59 |
+
|
| 60 |
+
return $options;
|
| 61 |
+
}
|
| 62 |
+
}
|
app/code/local/Magestore/Mageconnector/Model/Product.php
ADDED
|
@@ -0,0 +1,884 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
/**
|
| 4 |
+
* Export Product data to xml data
|
| 5 |
+
*
|
| 6 |
+
* @category Magestore
|
| 7 |
+
* @package Magestore_Mageconnector
|
| 8 |
+
* @author Nguyen Minh Dung (http://oss.com.vn)
|
| 9 |
+
*/
|
| 10 |
+
class Magestore_Mageconnector_Model_Product extends Magestore_Mageconnector_Model_Abstract {
|
| 11 |
+
|
| 12 |
+
public function exportXMLProduct(Mage_Catalog_Model_Product $product, &$i, $isShowAllDetails = false) {
|
| 13 |
+
try {
|
| 14 |
+
$xml = '';
|
| 15 |
+
$inventory = Mage::getModel('cataloginventory/stock_item')
|
| 16 |
+
->loadByProduct($product);
|
| 17 |
+
|
| 18 |
+
if ($product->getStatus()) {
|
| 19 |
+
$xml .= '<product>'
|
| 20 |
+
. '<order>#' . ++$i . '</order>'
|
| 21 |
+
. '<id>' . $product->getId() . '</id>'
|
| 22 |
+
. '<name><![CDATA[' . $product->getName() . ']]></name>';
|
| 23 |
+
|
| 24 |
+
if ($product->getTypeId() != 'grouped') {
|
| 25 |
+
$real_price = $product->getPrice();
|
| 26 |
+
|
| 27 |
+
if ($real_price > 0) {
|
| 28 |
+
$price = Mage::helper('core')
|
| 29 |
+
->currency(Mage::helper('tax')
|
| 30 |
+
->getPrice(
|
| 31 |
+
$product,
|
| 32 |
+
$product->getPrice()
|
| 33 |
+
)
|
| 34 |
+
, true, false);
|
| 35 |
+
|
| 36 |
+
$now = date('Y-m-d');
|
| 37 |
+
$special_from_date = split(' ', $product->getSpecialFromDate());
|
| 38 |
+
$special_from_date = $special_from_date[0];
|
| 39 |
+
$special_to_date = split(' ', $product->getSpecialToDate());
|
| 40 |
+
$special_to_date = $special_to_date[0];
|
| 41 |
+
|
| 42 |
+
$xml .= '<price><![CDATA[' . $price . ']]></price>';
|
| 43 |
+
|
| 44 |
+
if ($now >= $special_from_date && $now <= $special_to_date &&
|
| 45 |
+
$product->getSpecialPrice() < $product->getPrice()) {
|
| 46 |
+
$special_price = Mage::helper('tax')
|
| 47 |
+
->getPrice(
|
| 48 |
+
$product,
|
| 49 |
+
$product->getSpecialPrice()
|
| 50 |
+
);
|
| 51 |
+
|
| 52 |
+
if ($product->getTypeId() == 'bundle') {
|
| 53 |
+
$special_price = $special_price / 100 * $real_price;
|
| 54 |
+
}
|
| 55 |
+
$real_price = $special_price;
|
| 56 |
+
|
| 57 |
+
$special_price = Mage::helper('core')
|
| 58 |
+
->currency($special_price, true, false);
|
| 59 |
+
|
| 60 |
+
$xml .= '<special_price><![CDATA[' . $special_price . ']]></special_price>'
|
| 61 |
+
. '<special_from_date>' . $special_from_date . '</special_from_date>'
|
| 62 |
+
. '<special_to_date>' . $special_to_date . '</special_to_date>';
|
| 63 |
+
} else if ($product->getFinalPrice() < $product->getPrice()) {
|
| 64 |
+
$special_price = Mage::helper('tax')
|
| 65 |
+
->getPrice(
|
| 66 |
+
$product,
|
| 67 |
+
$product->getFinalPrice()
|
| 68 |
+
);
|
| 69 |
+
|
| 70 |
+
if ($product->getTypeId() == 'bundle') {
|
| 71 |
+
$special_price = $special_price / 100 * $real_price;
|
| 72 |
+
}
|
| 73 |
+
$real_price = $special_price;
|
| 74 |
+
|
| 75 |
+
$special_price = Mage::helper('core')
|
| 76 |
+
->currency($special_price, true, false);
|
| 77 |
+
|
| 78 |
+
$xml .= '<special_price><![CDATA[' . $special_price . ']]></special_price>';
|
| 79 |
+
}
|
| 80 |
+
}
|
| 81 |
+
if ($isShowAllDetails) {
|
| 82 |
+
$xml .= $this->addCustomOptions($product, $real_price)
|
| 83 |
+
. $this->addPriceTiers($product, $real_price);
|
| 84 |
+
}
|
| 85 |
+
}
|
| 86 |
+
|
| 87 |
+
$xml .= '<url_key><![CDATA[' . $product->getUrlKey() . ']]></url_key>'
|
| 88 |
+
. '<url><![CDATA[' . $product->getProductUrl() . ']]></url>'
|
| 89 |
+
. '<short_description><![CDATA[' . $product->getShortDescription() . ']]></short_description>'
|
| 90 |
+
. '<is_in_stock>' . $product->isInStock() . '</is_in_stock>'
|
| 91 |
+
. '<is_salable>' . $product->isSalable() . '</is_salable>'
|
| 92 |
+
. '<image><![CDATA[' . $product->getImageUrl() . ']]></image>'
|
| 93 |
+
. '<image_label><![CDATA[' . $product->getImageLabel() . ']]></image_label>';
|
| 94 |
+
|
| 95 |
+
$listImage = $product->getMediaGalleryImages();
|
| 96 |
+
$gallery = '';
|
| 97 |
+
foreach ($listImage as $image) {
|
| 98 |
+
$gallery .= '<image>'
|
| 99 |
+
. '<src><![CDATA[' . $image->getUrl() . ']]></src>'
|
| 100 |
+
. '<label><![CDATA[' . $image->getLabel() . ']]></label>'
|
| 101 |
+
. '</image>';
|
| 102 |
+
}
|
| 103 |
+
$xml .= '<image_gallery>' . $gallery . '</image_gallery>';
|
| 104 |
+
|
| 105 |
+
if ($isShowAllDetails) {
|
| 106 |
+
$xml .= '<description><![CDATA[' . $product->getDescription() . ']]></description>';
|
| 107 |
+
|
| 108 |
+
switch ($product->getTypeId()) {
|
| 109 |
+
case 'grouped':
|
| 110 |
+
$xml .= $this->addAssociatedProducts($product);
|
| 111 |
+
break;
|
| 112 |
+
case 'downloadable':
|
| 113 |
+
$xml .= $this->addLinks($product);
|
| 114 |
+
break;
|
| 115 |
+
case 'configurable':
|
| 116 |
+
$xml .= $this->addConfigurationAttributes($product, $real_price);
|
| 117 |
+
break;
|
| 118 |
+
}
|
| 119 |
+
$xml .= $this->addMoreInformation($product);
|
| 120 |
+
}
|
| 121 |
+
|
| 122 |
+
$xml .= '</product>';
|
| 123 |
+
}
|
| 124 |
+
return $xml;
|
| 125 |
+
} catch (Exception $e) {
|
| 126 |
+
Zend_Debug::dump($e);
|
| 127 |
+
die();
|
| 128 |
+
}
|
| 129 |
+
}
|
| 130 |
+
|
| 131 |
+
public function addLinks(Mage_Catalog_Model_Product $product) {
|
| 132 |
+
$xml = '<downloadable_links>';
|
| 133 |
+
try {
|
| 134 |
+
$xml .= '<links_purchased_separately>' . $product->getLinksPurchasedSeparately() . '</links_purchased_separately>'
|
| 135 |
+
. '<purchased_links_title>' . $product->getLinksTitle() . '</purchased_links_title>'
|
| 136 |
+
. '<links_form_key>links[]</links_form_key>'
|
| 137 |
+
. '<purchased_links>';
|
| 138 |
+
$links = $product->getTypeInstance(true)->getLinks($product);
|
| 139 |
+
foreach ($links as $item) {
|
| 140 |
+
if ($item instanceof Mage_Downloadable_Model_Link) {
|
| 141 |
+
$xml .= '<link><title><![CDATA[' . $item->getTitle() . ']]></title>';
|
| 142 |
+
if (floatval($item->getPrice()) != 0) {
|
| 143 |
+
$p = Mage::helper('core')
|
| 144 |
+
->currency($item->getPrice(), true, false);
|
| 145 |
+
if (substr($p, 0, 1) != '-') {
|
| 146 |
+
$p = '+' . $p;
|
| 147 |
+
}
|
| 148 |
+
|
| 149 |
+
$xml .= '<option_price><![CDATA[' . $p . ']]></option_price>';
|
| 150 |
+
}
|
| 151 |
+
$xml .= '<form_value>' . $item->getId() . '</form_value>'
|
| 152 |
+
. '</link>';
|
| 153 |
+
}
|
| 154 |
+
}
|
| 155 |
+
$xml .= '</purchased_links>'
|
| 156 |
+
. '<sample_links_title>' . $product->getSamplesTitle() . '</sample_links_title>'
|
| 157 |
+
. '<sample_links>';
|
| 158 |
+
$samples = $product->getTypeInstance(true)->getSamples($product);
|
| 159 |
+
foreach ($samples as $item) {
|
| 160 |
+
if ($item instanceof Mage_Downloadable_Model_Sample) {
|
| 161 |
+
$xml .= '<link>'
|
| 162 |
+
. '<title><![CDATA[' . $item->getTitle() . ']]></title>'
|
| 163 |
+
. '<url><![CDATA[' . Mage::getBaseUrl() . 'downloadable/download/sample/sample_id/' . $item->getId() . ']]></url>'
|
| 164 |
+
. '</link>';
|
| 165 |
+
}
|
| 166 |
+
}
|
| 167 |
+
$xml .= '</sample_links>';
|
| 168 |
+
} catch (Exception $e) {
|
| 169 |
+
|
| 170 |
+
}
|
| 171 |
+
$xml .= '</downloadable_links>';
|
| 172 |
+
return $xml;
|
| 173 |
+
}
|
| 174 |
+
|
| 175 |
+
public function addMoreInformation(Mage_Catalog_Model_Product $product) {
|
| 176 |
+
$xml = '<more_attributes>';
|
| 177 |
+
try {
|
| 178 |
+
$data = $product->getData();
|
| 179 |
+
|
| 180 |
+
foreach ($data as $attrCode => $v) {
|
| 181 |
+
$attribute = $product->getResource()->getAttribute($attrCode);
|
| 182 |
+
|
| 183 |
+
if ($attribute instanceof Mage_Catalog_Model_Resource_Eav_Attribute) {
|
| 184 |
+
if ($attribute->getIsVisibleOnFront()) {
|
| 185 |
+
$value = $attribute->getFrontend()->getValue($product);
|
| 186 |
+
$label = $attribute->getFrontendLabel();
|
| 187 |
+
|
| 188 |
+
// TODO this is temporary skipping eco taxes
|
| 189 |
+
if (is_string($value)) {
|
| 190 |
+
if (strlen($value) && $product->hasData($attrCode)) {
|
| 191 |
+
if ($attribute->getFrontendInput() == 'price') {
|
| 192 |
+
$value = Mage::app()->getStore($product->getStoreId())->convertPrice($value, true);
|
| 193 |
+
} else {
|
| 194 |
+
$value = $value;
|
| 195 |
+
}
|
| 196 |
+
$xml .= '<attribute><label><![CDATA[' . $label . ']]></label>'
|
| 197 |
+
. '<value><![CDATA[' . $value . ']]></value></attribute>';
|
| 198 |
+
}
|
| 199 |
+
}
|
| 200 |
+
}
|
| 201 |
+
}
|
| 202 |
+
}
|
| 203 |
+
} catch (Exception $e) {
|
| 204 |
+
Zend_Debug::dump($e);
|
| 205 |
+
}
|
| 206 |
+
|
| 207 |
+
$xml .= '</more_attributes>';
|
| 208 |
+
return $xml;
|
| 209 |
+
}
|
| 210 |
+
|
| 211 |
+
/**
|
| 212 |
+
* Get list associated produts of grouped product
|
| 213 |
+
*
|
| 214 |
+
* @param Mage_Catalog_Model_Product $product
|
| 215 |
+
*/
|
| 216 |
+
public function addAssociatedProducts(Mage_Catalog_Model_Product $product) {
|
| 217 |
+
$xml = '<associated_products>';
|
| 218 |
+
|
| 219 |
+
$grouped = $product->getTypeInstance(true);
|
| 220 |
+
$listAssociatedProducts = $grouped->getAssociatedProducts($product);
|
| 221 |
+
$i = 0;
|
| 222 |
+
foreach ($listAssociatedProducts as $associatedProduct) {
|
| 223 |
+
if ($associatedProduct->getStatus()) {
|
| 224 |
+
$xml .= '<associated_product>'
|
| 225 |
+
. '<order>#' . ++$i . '</order>'
|
| 226 |
+
. '<id>' . $associatedProduct->getId() . '</id>'
|
| 227 |
+
. '<name><![CDATA[' . $associatedProduct->getName() . ']]></name>';
|
| 228 |
+
|
| 229 |
+
$real_price = $associatedProduct->getPrice();
|
| 230 |
+
|
| 231 |
+
$price = Mage::helper('core')
|
| 232 |
+
->currency(Mage::helper('tax')
|
| 233 |
+
->getPrice(
|
| 234 |
+
$associatedProduct,
|
| 235 |
+
$associatedProduct->getPrice()
|
| 236 |
+
)
|
| 237 |
+
, true, false);
|
| 238 |
+
|
| 239 |
+
$now = date('Y-m-d');
|
| 240 |
+
$special_from_date = split(' ', $associatedProduct->getSpecialFromDate());
|
| 241 |
+
$special_from_date = $special_from_date[0];
|
| 242 |
+
$special_to_date = split(' ', $associatedProduct->getSpecialToDate());
|
| 243 |
+
$special_to_date = $special_to_date[0];
|
| 244 |
+
|
| 245 |
+
$xml .= '<price><![CDATA[' . $price . ']]></price>';
|
| 246 |
+
|
| 247 |
+
if ($now >= $special_from_date && $now <= $special_to_date) {
|
| 248 |
+
$special_price = Mage::helper('tax')
|
| 249 |
+
->getPrice(
|
| 250 |
+
$associatedProduct,
|
| 251 |
+
$associatedProduct->getSpecialPrice()
|
| 252 |
+
);
|
| 253 |
+
$real_price = $special_price;
|
| 254 |
+
|
| 255 |
+
$special_price = Mage::helper('core')
|
| 256 |
+
->currency($special_price, true, false);
|
| 257 |
+
|
| 258 |
+
$xml .= '<special_price><![CDATA[' . $special_price . ']]></special_price>'
|
| 259 |
+
. '<special_from_date>' . $special_from_date . '</special_from_date>'
|
| 260 |
+
. '<special_to_date>' . $special_to_date . '</special_to_date>';
|
| 261 |
+
}
|
| 262 |
+
|
| 263 |
+
$xml .= '<url_key><![CDATA[' . $associatedProduct->getUrlKey() . ']]></url_key>'
|
| 264 |
+
. '<url><![CDATA[' . $associatedProduct->getProductUrl() . ']]></url>'
|
| 265 |
+
. '<form_key>super_group[' . $associatedProduct->getId() . ']</form_key>'
|
| 266 |
+
. '</associated_product>';
|
| 267 |
+
}
|
| 268 |
+
}
|
| 269 |
+
|
| 270 |
+
$xml .= '</associated_products>';
|
| 271 |
+
return $xml;
|
| 272 |
+
}
|
| 273 |
+
|
| 274 |
+
public function addPriceTiers(Mage_Catalog_Model_Product $product, $real_price) {
|
| 275 |
+
$xml = '<price_tiers>';
|
| 276 |
+
try {
|
| 277 |
+
|
| 278 |
+
$tiers = $product->getTierPrice();
|
| 279 |
+
foreach ($tiers as $tier) {
|
| 280 |
+
if ($real_price > $tier['website_price']) {
|
| 281 |
+
$xml .= '<tier>'
|
| 282 |
+
. '<quantity>' . rtrim(rtrim($tier['price_qty'], '0'), '.') . '</quantity>';
|
| 283 |
+
if ($product->getTypeId() != 'bundle') {
|
| 284 |
+
$xml .= '<price>' . Mage::helper('core')
|
| 285 |
+
->currency($tier['price'], true, false) . '</price>';
|
| 286 |
+
} else {
|
| 287 |
+
$xml .= '<discount>' . $tier['percent'] . '</discount>';
|
| 288 |
+
}
|
| 289 |
+
$xml .= '</tier>';
|
| 290 |
+
}
|
| 291 |
+
}
|
| 292 |
+
} catch (Exception $e) {
|
| 293 |
+
|
| 294 |
+
}
|
| 295 |
+
|
| 296 |
+
$xml .= '</price_tiers>';
|
| 297 |
+
return $xml;
|
| 298 |
+
}
|
| 299 |
+
|
| 300 |
+
public function addCustomOptions(Mage_Catalog_Model_Product $product, $real_price) {
|
| 301 |
+
$xml = '<custom_options>';
|
| 302 |
+
try {
|
| 303 |
+
$options = $product->getOptions();
|
| 304 |
+
|
| 305 |
+
foreach ($options as $o) {
|
| 306 |
+
if ($o instanceof Mage_Catalog_Model_Product_Option) {
|
| 307 |
+
$type = $o->getType();
|
| 308 |
+
switch ($type) {
|
| 309 |
+
case 'drop_down':
|
| 310 |
+
$type = 'dropdown';
|
| 311 |
+
break;
|
| 312 |
+
case 'field':
|
| 313 |
+
$type = 'textfield';
|
| 314 |
+
break;
|
| 315 |
+
case 'area':
|
| 316 |
+
$type = 'textarea';
|
| 317 |
+
break;
|
| 318 |
+
case 'multiple':
|
| 319 |
+
$type = 'multiselect';
|
| 320 |
+
break;
|
| 321 |
+
case 'date_time':
|
| 322 |
+
$type = 'datetime';
|
| 323 |
+
break;
|
| 324 |
+
}
|
| 325 |
+
|
| 326 |
+
$xml .= '<option><type>' . $type . '</type>'
|
| 327 |
+
. '<title><![CDATA[' . $o->getTitle() . ']]></title>'
|
| 328 |
+
. '<is_require>' . $o->getIsRequire() . '</is_require>';
|
| 329 |
+
|
| 330 |
+
if ($type == 'multiselect' || $type == 'checkbox') {
|
| 331 |
+
$xml .= '<form_key>options[' . $o->getId() . '][]</form_key>';
|
| 332 |
+
} else {
|
| 333 |
+
$xml .= '<form_key>options[' . $o->getId() . ']</form_key>';
|
| 334 |
+
}
|
| 335 |
+
if ($type == 'textfield' || $type == 'textarea' || $type == 'file'
|
| 336 |
+
|| $type == 'date' || $type == 'datetime' || $type == 'time') {
|
| 337 |
+
|
| 338 |
+
$p = $o->getPrice();
|
| 339 |
+
if ($p == 0) {
|
| 340 |
+
$xml .= '<option_price/>';
|
| 341 |
+
} else {
|
| 342 |
+
$t = $o->getPriceType();
|
| 343 |
+
$op = $p;
|
| 344 |
+
if ($t == 'percent') {
|
| 345 |
+
$op = $p * $real_price / 100;
|
| 346 |
+
}
|
| 347 |
+
$p = Mage::helper('core')
|
| 348 |
+
->currency($op, true, false);
|
| 349 |
+
if (substr($p, 0, 1) != '-') {
|
| 350 |
+
$p = '+' . $p;
|
| 351 |
+
}
|
| 352 |
+
$xml .= '<option_price><![CDATA[' . $p . ']]></option_price>';
|
| 353 |
+
}
|
| 354 |
+
}
|
| 355 |
+
$xml .= '<items>';
|
| 356 |
+
|
| 357 |
+
$values = $o->getValues();
|
| 358 |
+
foreach ($values as $item) {
|
| 359 |
+
$data = $item->getData();
|
| 360 |
+
$xml .= '<item>'
|
| 361 |
+
. '<title><![CDATA[' . $data['title'] . ']]></title>';
|
| 362 |
+
|
| 363 |
+
$p = $data['price'];
|
| 364 |
+
if ($p == 0) {
|
| 365 |
+
$xml .= '<option_price/>';
|
| 366 |
+
} else {
|
| 367 |
+
$t = $data['price_type'];
|
| 368 |
+
$op = $p;
|
| 369 |
+
if ($t == 'percent') {
|
| 370 |
+
$op = $p * $real_price / 100;
|
| 371 |
+
}
|
| 372 |
+
$p = Mage::helper('core')
|
| 373 |
+
->currency($op, true, false);
|
| 374 |
+
if (substr($p, 0, 1) != '-') {
|
| 375 |
+
$p = '+' . $p;
|
| 376 |
+
}
|
| 377 |
+
$xml .= '<option_price><![CDATA[' . $p . ']]></option_price>';
|
| 378 |
+
}
|
| 379 |
+
$xml .= '<form_value>' . $item->getId() . '</form_value>';
|
| 380 |
+
$xml .= '</item>';
|
| 381 |
+
}
|
| 382 |
+
$xml .= '</items></option>';
|
| 383 |
+
}
|
| 384 |
+
}
|
| 385 |
+
} catch (Exception $e) {
|
| 386 |
+
|
| 387 |
+
}
|
| 388 |
+
|
| 389 |
+
$xml .= '</custom_options>';
|
| 390 |
+
return $xml;
|
| 391 |
+
}
|
| 392 |
+
|
| 393 |
+
/**
|
| 394 |
+
* Get list attributes of Configuration product
|
| 395 |
+
*
|
| 396 |
+
* @param Mage_Catalog_Model_Product $product
|
| 397 |
+
*/
|
| 398 |
+
public function addConfigurationAttributes(Mage_Catalog_Model_Product $product, $real_price) {
|
| 399 |
+
try {
|
| 400 |
+
$xml = '<configuration_options>';
|
| 401 |
+
$options = $product->getTypeInstance(true)
|
| 402 |
+
->getConfigurableAttributesAsArray($product);
|
| 403 |
+
|
| 404 |
+
foreach ($options as $o) {
|
| 405 |
+
$xml .= '<option><type>dropdown</type>'
|
| 406 |
+
. '<title><![CDATA[' . $o['frontend_label'] . ']]></title>'
|
| 407 |
+
. '<is_require>1</is_require>'
|
| 408 |
+
. '<form_key>super_attribute[' . $o['attribute_id'] . ']</form_key>'
|
| 409 |
+
. '<items>';
|
| 410 |
+
|
| 411 |
+
$values = $o['values'];
|
| 412 |
+
foreach ($values as $item) {
|
| 413 |
+
$xml .= '<item>'
|
| 414 |
+
. '<form_value><![CDATA[' . $item['value_index'] . ']]></form_value>'
|
| 415 |
+
. '<title><![CDATA[' . $item['store_label'] . ']]></title>';
|
| 416 |
+
|
| 417 |
+
$p = $item['pricing_value'];
|
| 418 |
+
if (!is_null($p)) {
|
| 419 |
+
$op = $p;
|
| 420 |
+
if ($item['is_percent'] == 1) {
|
| 421 |
+
$op = $p * $real_price / 100;
|
| 422 |
+
}
|
| 423 |
+
$p = Mage::helper('core')
|
| 424 |
+
->currency($op, true, false);
|
| 425 |
+
if (substr($p, 0, 1) != '-') {
|
| 426 |
+
$p = '+' . $p;
|
| 427 |
+
}
|
| 428 |
+
$xml .= '<option_price><![CDATA[' . $p . ']]></option_price>';
|
| 429 |
+
}
|
| 430 |
+
$xml .= '</item>';
|
| 431 |
+
}
|
| 432 |
+
$xml .= '</items></option>';
|
| 433 |
+
}
|
| 434 |
+
|
| 435 |
+
$xml .= '</configuration_options>';
|
| 436 |
+
return $xml;
|
| 437 |
+
} catch (Exception $e) {
|
| 438 |
+
Zend_Debug::dump($e);
|
| 439 |
+
die();
|
| 440 |
+
}
|
| 441 |
+
return '';
|
| 442 |
+
}
|
| 443 |
+
|
| 444 |
+
/**
|
| 445 |
+
* Export Product to XML Data by store code
|
| 446 |
+
*
|
| 447 |
+
* @param Mage_Catalog_Model_Product_Collection $collection
|
| 448 |
+
* @param int $totalProducts
|
| 449 |
+
* @param int $totalPages
|
| 450 |
+
* @param int $currentPage
|
| 451 |
+
* @param int $pageSize
|
| 452 |
+
* @param string $orderBy
|
| 453 |
+
* @param string $typeOrder
|
| 454 |
+
*/
|
| 455 |
+
public function exportXML($collection, $totalProducts = 1, $totalPages = 1, $currentPage = 1, $pageSize = 1, $orderBy = 'entity_id', $typeOrder = 'desc') {
|
| 456 |
+
|
| 457 |
+
$xml = '<?xml version="1.0"?><root><products>';
|
| 458 |
+
|
| 459 |
+
$i = $pageSize * ($currentPage - 1);
|
| 460 |
+
foreach ($collection as $product) {
|
| 461 |
+
$xml .= $this->exportXMLProduct($product, $i);
|
| 462 |
+
}
|
| 463 |
+
|
| 464 |
+
if ($orderBy == 'entity_id') {
|
| 465 |
+
$orderBy = 'new';
|
| 466 |
+
}
|
| 467 |
+
|
| 468 |
+
$xml .= '</products>'
|
| 469 |
+
. '<paginator><totalProducts>' . $totalProducts . '</totalProducts>'
|
| 470 |
+
. '<totalPages>' . $totalPages . '</totalPages>'
|
| 471 |
+
. '<currentPage>' . $currentPage . '</currentPage>'
|
| 472 |
+
. '<pageSize>' . $pageSize . '</pageSize>'
|
| 473 |
+
. '<orderBy>' . $orderBy . '</orderBy>'
|
| 474 |
+
. '<typeOrder>' . $typeOrder . '</typeOrder></paginator>'
|
| 475 |
+
. '</root>';
|
| 476 |
+
|
| 477 |
+
return $xml;
|
| 478 |
+
}
|
| 479 |
+
|
| 480 |
+
/**
|
| 481 |
+
* Loads product list by Category
|
| 482 |
+
*
|
| 483 |
+
* If category has no product and $showProductsInSubCategories = true, then shows
|
| 484 |
+
* all product in sub categories
|
| 485 |
+
*
|
| 486 |
+
* @param string $store_code
|
| 487 |
+
* @param string $category_url_key
|
| 488 |
+
* @param int $_currentPage
|
| 489 |
+
* @param int $_pageSize
|
| 490 |
+
* @param string $_orderBy
|
| 491 |
+
* @param string $_typeOrder
|
| 492 |
+
* @param boolean $showProductsInSubCategories
|
| 493 |
+
*/
|
| 494 |
+
public function getProductListByCategory($store_code, $category_url_key, $_currentPage = 1, $_pageSize = 10, $_orderBy = 'new', $_typeOrder = 'desc', $showProductsInSubCategories = false) {
|
| 495 |
+
$store = $this->getStore($store_code);
|
| 496 |
+
$storeId = $store['store_id'];
|
| 497 |
+
|
| 498 |
+
if (is_null($_orderBy) || $_orderBy == '' || $_orderBy == 'new') {
|
| 499 |
+
$_orderBy = 'entity_id';
|
| 500 |
+
}
|
| 501 |
+
$_orderBy = strtolower($_orderBy);
|
| 502 |
+
|
| 503 |
+
if (is_null($_typeOrder) || $_typeOrder == '') {
|
| 504 |
+
$_typeOrder = 'desc';
|
| 505 |
+
}
|
| 506 |
+
$_typeOrder = strtolower($_typeOrder);
|
| 507 |
+
|
| 508 |
+
if (is_null($_currentPage) || intval($_currentPage) <= 0) {
|
| 509 |
+
$_currentPage = 1;
|
| 510 |
+
}
|
| 511 |
+
|
| 512 |
+
if (is_null($_pageSize) || $_pageSize == '') {
|
| 513 |
+
$_pageSize = 10;
|
| 514 |
+
}
|
| 515 |
+
|
| 516 |
+
$category = Mage::getModel('catalog/category')
|
| 517 |
+
->loadByAttribute('url_key', $category_url_key);
|
| 518 |
+
|
| 519 |
+
if ($category instanceof Mage_Catalog_Model_Category) {
|
| 520 |
+
$totalProducts = count($category
|
| 521 |
+
->setStoreId($storeId)
|
| 522 |
+
->getProductCollection()
|
| 523 |
+
->addAttributeToFilter(array(
|
| 524 |
+
array(
|
| 525 |
+
'attribute' => 'visibility',
|
| 526 |
+
'in' => array(2, 4)
|
| 527 |
+
)
|
| 528 |
+
))
|
| 529 |
+
);
|
| 530 |
+
$collection = array();
|
| 531 |
+
if ($totalProducts > 0) {
|
| 532 |
+
$collection = $category->setStoreId($storeId)
|
| 533 |
+
->getProductCollection()
|
| 534 |
+
->addAttributeToFilter(array(
|
| 535 |
+
array(
|
| 536 |
+
'attribute' => 'visibility',
|
| 537 |
+
'in' => array(2, 4)
|
| 538 |
+
)
|
| 539 |
+
))
|
| 540 |
+
->addAttributeToSort($_orderBy, $_typeOrder)
|
| 541 |
+
->setCurPage($_currentPage)
|
| 542 |
+
->setPageSize($_pageSize);
|
| 543 |
+
} else if ($showProductsInSubCategories) {
|
| 544 |
+
$children_category_ids = $category->getChildren();
|
| 545 |
+
$resource = Mage::getSingleton("core/resource");
|
| 546 |
+
$read = $resource->getConnection("core_read");
|
| 547 |
+
|
| 548 |
+
$sql = Mage::getModel("catalog/product")
|
| 549 |
+
->getCollection()
|
| 550 |
+
->addStoreFilter($storeId)
|
| 551 |
+
->addAttributeToFilter(array(
|
| 552 |
+
array(
|
| 553 |
+
'attribute' => 'visibility',
|
| 554 |
+
'in' => array(2, 4)
|
| 555 |
+
)
|
| 556 |
+
))
|
| 557 |
+
->addAttributeToSort($_orderBy, $_typeOrder)
|
| 558 |
+
->getSelect()
|
| 559 |
+
->distinct()
|
| 560 |
+
->join(array('B' => Mage::getSingleton('core/resource')->getTableName('catalog_category_product_index')),
|
| 561 |
+
'e.entity_id = B.product_id', '')
|
| 562 |
+
->where('B.category_id in (?)', split(',', $children_category_ids));
|
| 563 |
+
|
| 564 |
+
$rows = $read->fetchAll($sql->__toString());
|
| 565 |
+
$ids = array();
|
| 566 |
+
foreach ($rows as $row) {
|
| 567 |
+
$ids[] = $row['entity_id'];
|
| 568 |
+
}
|
| 569 |
+
$totalProducts = count($ids);
|
| 570 |
+
|
| 571 |
+
$collection = Mage::getModel("catalog/product")
|
| 572 |
+
->getCollection()
|
| 573 |
+
->addStoreFilter($storeId)
|
| 574 |
+
->addAttributeToFilter(array(
|
| 575 |
+
array(
|
| 576 |
+
'attribute' => 'visibility',
|
| 577 |
+
'in' => array(2, 4)
|
| 578 |
+
)
|
| 579 |
+
))
|
| 580 |
+
->addAttributeToSort($_orderBy, $_typeOrder)
|
| 581 |
+
->addAttributeToFilter('entity_id', array('in' => $ids))
|
| 582 |
+
->setCurPage($_currentPage)
|
| 583 |
+
->setPageSize($_pageSize);
|
| 584 |
+
}
|
| 585 |
+
|
| 586 |
+
$list = array();
|
| 587 |
+
foreach ($collection as $p) {
|
| 588 |
+
$product = Mage::getModel('catalog/product')
|
| 589 |
+
->setStoreId($storeId)
|
| 590 |
+
->load($p->getId());
|
| 591 |
+
|
| 592 |
+
$list[] = $product;
|
| 593 |
+
}
|
| 594 |
+
|
| 595 |
+
$totalPages = intval($totalProducts / $_pageSize);
|
| 596 |
+
if ($totalProducts % $_pageSize > 0) {
|
| 597 |
+
$totalPages++;
|
| 598 |
+
}
|
| 599 |
+
|
| 600 |
+
return $this->exportXML($list, $totalProducts, $totalPages, $_currentPage, $_pageSize, $_orderBy, $_typeOrder);
|
| 601 |
+
} else {
|
| 602 |
+
return '';
|
| 603 |
+
}
|
| 604 |
+
}
|
| 605 |
+
|
| 606 |
+
/**
|
| 607 |
+
* Searchs Products, if $category_url_key = '' then searchs all product by keyword
|
| 608 |
+
* else searchs product in category has url_key = $category_url_key
|
| 609 |
+
*
|
| 610 |
+
* If category has no product and $showProductsInSubCategories = true, then search
|
| 611 |
+
* all product in sub categories
|
| 612 |
+
*
|
| 613 |
+
* @param string $store_code
|
| 614 |
+
* @param string $keyword
|
| 615 |
+
* @param string $category_url_key
|
| 616 |
+
* @param int $_currentPage
|
| 617 |
+
* @param int $_pageSize
|
| 618 |
+
* @param string $_orderBy
|
| 619 |
+
* @param string $_typeOrder
|
| 620 |
+
* @param boolean $showProductsInSubCategories
|
| 621 |
+
*/
|
| 622 |
+
public function searchProduct($store_code = null, $keyword = '', $category_url_key = '', $_currentPage = 1, $_pageSize = 10, $_orderBy = 'new', $_typeOrder = 'desc', $showProductsInSubCategories = false) {
|
| 623 |
+
$store = $this->getStore($store_code);
|
| 624 |
+
$storeId = $store['store_id'];
|
| 625 |
+
|
| 626 |
+
if (is_null($_currentPage) || $_currentPage == '') {
|
| 627 |
+
$_currentPage = 1;
|
| 628 |
+
}
|
| 629 |
+
|
| 630 |
+
if (is_null($_pageSize) || $_pageSize == '') {
|
| 631 |
+
$_pageSize = 10;
|
| 632 |
+
}
|
| 633 |
+
|
| 634 |
+
if (is_null($_orderBy) || $_orderBy == '' || $_orderBy == 'new') {
|
| 635 |
+
$_orderBy = 'entity_id';
|
| 636 |
+
}
|
| 637 |
+
|
| 638 |
+
if (is_null($_typeOrder) || $_typeOrder == '') {
|
| 639 |
+
$_typeOrder = 'desc';
|
| 640 |
+
}
|
| 641 |
+
|
| 642 |
+
$_orderBy = strtolower($_orderBy);
|
| 643 |
+
$_typeOrder = strtolower($_typeOrder);
|
| 644 |
+
|
| 645 |
+
if (is_null($category_url_key) || $category_url_key == '') {
|
| 646 |
+
$collection = Mage::getModel('catalog/product')->getCollection()
|
| 647 |
+
->addAttributeToSelect('name')
|
| 648 |
+
->addStoreFilter($storeId)
|
| 649 |
+
->addAttributeToFilter(array(
|
| 650 |
+
array(
|
| 651 |
+
'attribute' => 'name',
|
| 652 |
+
'like' => '%' . $this->clean_url($keyword) . '%'
|
| 653 |
+
),
|
| 654 |
+
array(
|
| 655 |
+
'attribute' => 'url_key',
|
| 656 |
+
'like' => '%' . $this->clean_url($keyword) . '%'
|
| 657 |
+
),
|
| 658 |
+
array(
|
| 659 |
+
'attribute' => 'short_description',
|
| 660 |
+
'like' => '%' . $this->clean_url($keyword) . '%'
|
| 661 |
+
)
|
| 662 |
+
))
|
| 663 |
+
->addAttributeToFilter(array(
|
| 664 |
+
array(
|
| 665 |
+
'attribute' => 'visibility',
|
| 666 |
+
'in' => array(3, 4)
|
| 667 |
+
)
|
| 668 |
+
))
|
| 669 |
+
->addFieldToFilter("status", 1)
|
| 670 |
+
->setOrder($_orderBy, $_typeOrder)
|
| 671 |
+
->setCurPage($_currentPage)
|
| 672 |
+
->setPageSize($_pageSize)
|
| 673 |
+
;
|
| 674 |
+
|
| 675 |
+
$products = Mage::getModel('catalog/product')->getCollection()
|
| 676 |
+
->addAttributeToSelect('name')
|
| 677 |
+
->addStoreFilter($storeId)
|
| 678 |
+
->addAttributeToFilter(array(
|
| 679 |
+
array(
|
| 680 |
+
'attribute' => 'name',
|
| 681 |
+
'like' => '%' . $this->clean_url($keyword) . '%'
|
| 682 |
+
),
|
| 683 |
+
array(
|
| 684 |
+
'attribute' => 'url_key',
|
| 685 |
+
'like' => '%' . $this->clean_url($keyword) . '%'
|
| 686 |
+
),
|
| 687 |
+
array(
|
| 688 |
+
'attribute' => 'short_description',
|
| 689 |
+
'like' => '%' . $this->clean_url($keyword) . '%'
|
| 690 |
+
)
|
| 691 |
+
))
|
| 692 |
+
->addAttributeToFilter(array(
|
| 693 |
+
array(
|
| 694 |
+
'attribute' => 'visibility',
|
| 695 |
+
'in' => array(3, 4)
|
| 696 |
+
)
|
| 697 |
+
))
|
| 698 |
+
->addFieldToFilter("status", 1);
|
| 699 |
+
|
| 700 |
+
$totalProducts = count($products);
|
| 701 |
+
} else {
|
| 702 |
+
$category = Mage::getModel('catalog/category')
|
| 703 |
+
->loadByAttribute('url_key', $category_url_key);
|
| 704 |
+
|
| 705 |
+
$totalProducts = count($category
|
| 706 |
+
->setStoreId($storeId)
|
| 707 |
+
->getProductCollection()
|
| 708 |
+
->addAttributeToFilter(array(
|
| 709 |
+
array(
|
| 710 |
+
'attribute' => 'visibility',
|
| 711 |
+
'in' => array(3, 4)
|
| 712 |
+
)
|
| 713 |
+
))
|
| 714 |
+
->addFieldToFilter("status", 1));
|
| 715 |
+
$collection = array();
|
| 716 |
+
if ($totalProducts > 0) {
|
| 717 |
+
$products = Mage::getModel('catalog/product')->getCollection()
|
| 718 |
+
->addAttributeToSelect('name')
|
| 719 |
+
->addStoreFilter($storeId)
|
| 720 |
+
->addAttributeToFilter(array(
|
| 721 |
+
array(
|
| 722 |
+
'attribute' => 'name',
|
| 723 |
+
'like' => '%' . $this->clean_url($keyword) . '%'
|
| 724 |
+
),
|
| 725 |
+
array(
|
| 726 |
+
'attribute' => 'url_key',
|
| 727 |
+
'like' => '%' . $this->clean_url($keyword) . '%'
|
| 728 |
+
),
|
| 729 |
+
array(
|
| 730 |
+
'attribute' => 'short_description',
|
| 731 |
+
'like' => '%' . $this->clean_url($keyword) . '%'
|
| 732 |
+
)
|
| 733 |
+
))
|
| 734 |
+
->addCategoryFilter($category)
|
| 735 |
+
->addAttributeToFilter(array(
|
| 736 |
+
array(
|
| 737 |
+
'attribute' => 'visibility',
|
| 738 |
+
'in' => array(3, 4)
|
| 739 |
+
)
|
| 740 |
+
))
|
| 741 |
+
->addFieldToFilter("status", 1);
|
| 742 |
+
$totalProducts = count($products);
|
| 743 |
+
|
| 744 |
+
$collection = Mage::getModel('catalog/product')->getCollection()
|
| 745 |
+
->addAttributeToSelect('name')
|
| 746 |
+
->addStoreFilter($storeId)
|
| 747 |
+
->addAttributeToFilter(array(
|
| 748 |
+
array(
|
| 749 |
+
'attribute' => 'name',
|
| 750 |
+
'like' => '%' . $this->clean_url($keyword) . '%'
|
| 751 |
+
),
|
| 752 |
+
array(
|
| 753 |
+
'attribute' => 'url_key',
|
| 754 |
+
'like' => '%' . $this->clean_url($keyword) . '%'
|
| 755 |
+
),
|
| 756 |
+
array(
|
| 757 |
+
'attribute' => 'short_description',
|
| 758 |
+
'like' => '%' . $this->clean_url($keyword) . '%'
|
| 759 |
+
)
|
| 760 |
+
))
|
| 761 |
+
->addCategoryFilter($category)
|
| 762 |
+
->addAttributeToFilter(array(
|
| 763 |
+
array(
|
| 764 |
+
'attribute' => 'visibility',
|
| 765 |
+
'in' => array(3, 4)
|
| 766 |
+
)
|
| 767 |
+
))
|
| 768 |
+
->addFieldToFilter("status", 1)
|
| 769 |
+
->setOrder($_orderBy, $_typeOrder)
|
| 770 |
+
->setCurPage($_currentPage)
|
| 771 |
+
->setPageSize($_pageSize)
|
| 772 |
+
;
|
| 773 |
+
} else if ($showProductsInSubCategories) {
|
| 774 |
+
$children_category_ids = $category->getChildren();
|
| 775 |
+
$resource = Mage::getSingleton("core/resource");
|
| 776 |
+
$read = $resource->getConnection("core_read");
|
| 777 |
+
|
| 778 |
+
$sql = Mage::getModel("catalog/product")
|
| 779 |
+
->getCollection()
|
| 780 |
+
->addStoreFilter($storeId)
|
| 781 |
+
->addAttributeToFilter(array(
|
| 782 |
+
array(
|
| 783 |
+
'attribute' => 'name',
|
| 784 |
+
'like' => '%' . $this->clean_url($keyword) . '%'
|
| 785 |
+
),
|
| 786 |
+
array(
|
| 787 |
+
'attribute' => 'url_key',
|
| 788 |
+
'like' => '%' . $this->clean_url($keyword) . '%'
|
| 789 |
+
),
|
| 790 |
+
array(
|
| 791 |
+
'attribute' => 'short_description',
|
| 792 |
+
'like' => '%' . $this->clean_url($keyword) . '%'
|
| 793 |
+
)
|
| 794 |
+
))
|
| 795 |
+
->addAttributeToFilter(array(
|
| 796 |
+
array(
|
| 797 |
+
'attribute' => 'visibility',
|
| 798 |
+
'in' => array(3, 4)
|
| 799 |
+
)
|
| 800 |
+
))
|
| 801 |
+
->addFieldToFilter("status", 1)
|
| 802 |
+
->addAttributeToSort($_orderBy, $_typeOrder)
|
| 803 |
+
->getSelect()
|
| 804 |
+
->distinct()
|
| 805 |
+
->join(array('B' => Mage::getSingleton('core/resource')->getTableName('catalog_category_product_index')),
|
| 806 |
+
'e.entity_id = B.product_id', '')
|
| 807 |
+
->where('B.category_id in (?)', split(',', $children_category_ids));
|
| 808 |
+
|
| 809 |
+
$rows = $read->fetchAll($sql->__toString());
|
| 810 |
+
$ids = array();
|
| 811 |
+
foreach ($rows as $row) {
|
| 812 |
+
$ids[] = $row['entity_id'];
|
| 813 |
+
}
|
| 814 |
+
$totalProducts = count($ids);
|
| 815 |
+
|
| 816 |
+
$collection = Mage::getModel("catalog/product")
|
| 817 |
+
->getCollection()
|
| 818 |
+
->addStoreFilter($storeId)
|
| 819 |
+
->addAttributeToFilter(array(
|
| 820 |
+
array(
|
| 821 |
+
'attribute' => 'visibility',
|
| 822 |
+
'in' => array(3, 4)
|
| 823 |
+
)
|
| 824 |
+
))
|
| 825 |
+
->addFieldToFilter("status", 1)
|
| 826 |
+
->addAttributeToSort($_orderBy, $_typeOrder)
|
| 827 |
+
->addAttributeToFilter('entity_id', array('in' => $ids))
|
| 828 |
+
->setCurPage($_currentPage)
|
| 829 |
+
->setPageSize($_pageSize);
|
| 830 |
+
}
|
| 831 |
+
}
|
| 832 |
+
|
| 833 |
+
$list = array();
|
| 834 |
+
foreach ($collection as $p) {
|
| 835 |
+
$product = Mage::getModel('catalog/product')
|
| 836 |
+
->setStoreId($storeId)
|
| 837 |
+
->load($p->getId());
|
| 838 |
+
|
| 839 |
+
$list[] = $product;
|
| 840 |
+
}
|
| 841 |
+
|
| 842 |
+
$totalPages = intval($totalProducts / $_pageSize);
|
| 843 |
+
if ($totalProducts % $_pageSize > 0) {
|
| 844 |
+
$totalPages++;
|
| 845 |
+
}
|
| 846 |
+
|
| 847 |
+
return $this->exportXML($list, $totalProducts, $totalPages, $_currentPage, $_pageSize, $_orderBy, $_typeOrder);
|
| 848 |
+
}
|
| 849 |
+
|
| 850 |
+
/**
|
| 851 |
+
* Get product detail
|
| 852 |
+
*/
|
| 853 |
+
public function getProductDetail($store_code = null, $product_url_key = null) {
|
| 854 |
+
try {
|
| 855 |
+
$store = $this->getStore($store_code);
|
| 856 |
+
$storeId = $store['store_id'];
|
| 857 |
+
$product = Mage::getModel('catalog/product')
|
| 858 |
+
->loadByAttribute('url_key', $product_url_key);
|
| 859 |
+
|
| 860 |
+
$product = Mage::getModel('catalog/product')
|
| 861 |
+
->setStoreId($storeId)
|
| 862 |
+
->load($product->getId());
|
| 863 |
+
|
| 864 |
+
$xml = '<?xml version="1.0"?><root>';
|
| 865 |
+
$i = 0;
|
| 866 |
+
$xml .= $this->exportXMLProduct($product, $i, true);
|
| 867 |
+
$xml .= '</root>';
|
| 868 |
+
|
| 869 |
+
return $xml;
|
| 870 |
+
} catch (Exception $e) {
|
| 871 |
+
Zend_Debug::dump($e);
|
| 872 |
+
die();
|
| 873 |
+
}
|
| 874 |
+
}
|
| 875 |
+
|
| 876 |
+
public function clean_url($text) {
|
| 877 |
+
$text = strtolower($text);
|
| 878 |
+
$code_entities_match = array(' ', '--', '"', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', '{', '}', '|', ':', '"', '<', '>', '?', '[', ']', '\\', ';', "'", ',', '.', '/', '*', '+', '~', '`', '=');
|
| 879 |
+
$code_entities_replace = array('-', '-', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '');
|
| 880 |
+
$text = str_replace($code_entities_match, $code_entities_replace, $text);
|
| 881 |
+
return $text;
|
| 882 |
+
}
|
| 883 |
+
|
| 884 |
+
}
|
app/code/local/Magestore/Mageconnector/controllers/IndexController.php
ADDED
|
@@ -0,0 +1,269 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class Magestore_Mageconnector_IndexController extends Mage_Core_Controller_Front_Action {
|
| 4 |
+
|
| 5 |
+
public function indexAction() {
|
| 6 |
+
$action = $this->getRequest()->get('action');
|
| 7 |
+
|
| 8 |
+
switch ($action) {
|
| 9 |
+
case 'xml':
|
| 10 |
+
$this->xml();
|
| 11 |
+
break;
|
| 12 |
+
case 'view':
|
| 13 |
+
$this->storeView();
|
| 14 |
+
break;
|
| 15 |
+
case 'category':
|
| 16 |
+
$this->category();
|
| 17 |
+
break;
|
| 18 |
+
case 'addToCart':
|
| 19 |
+
$this->addToCart();
|
| 20 |
+
break;
|
| 21 |
+
case 'refreshCart':
|
| 22 |
+
$this->refreshCart();
|
| 23 |
+
break;
|
| 24 |
+
case 'updateCart':
|
| 25 |
+
$this->updateCart();
|
| 26 |
+
break;
|
| 27 |
+
case 'cartApplyCoupon':
|
| 28 |
+
$this->cartApplyCoupon();
|
| 29 |
+
break;
|
| 30 |
+
case 'cartCancelCoupon':
|
| 31 |
+
$this->cartCancelCoupon();
|
| 32 |
+
break;
|
| 33 |
+
case 'deleteCartItem':
|
| 34 |
+
$this->deleteCartItem();
|
| 35 |
+
break;
|
| 36 |
+
case 'checkout':
|
| 37 |
+
$this->checkout();
|
| 38 |
+
break;
|
| 39 |
+
default:
|
| 40 |
+
$this->product();
|
| 41 |
+
}
|
| 42 |
+
}
|
| 43 |
+
|
| 44 |
+
private function checkout() {
|
| 45 |
+
$view = $this->getRequest()->getParam('view');
|
| 46 |
+
if (!is_null($view) && $view != '') {
|
| 47 |
+
header("Location: " . Mage::getBaseUrl() . 'checkout/?___store=' . $view);
|
| 48 |
+
} else {
|
| 49 |
+
header("Location: " . Mage::getBaseUrl() . 'checkout/');
|
| 50 |
+
}
|
| 51 |
+
}
|
| 52 |
+
|
| 53 |
+
private function addCartDataToUrl(&$url) {
|
| 54 |
+
$cartData = Mage::getModel('mageconnector/cart')
|
| 55 |
+
->exportXML();
|
| 56 |
+
|
| 57 |
+
$cartData = urlencode($cartData);
|
| 58 |
+
$url .= "&cart=$cartData";
|
| 59 |
+
}
|
| 60 |
+
|
| 61 |
+
private function addToCart() {
|
| 62 |
+
$result = Mage::getModel('mageconnector/cart')
|
| 63 |
+
->addToCart();
|
| 64 |
+
|
| 65 |
+
$url = $_REQUEST['url'];
|
| 66 |
+
if ($result) {
|
| 67 |
+
$url .= "&addToCart=success";
|
| 68 |
+
} else {
|
| 69 |
+
$url .= "&addToCart=unsuccess";
|
| 70 |
+
}
|
| 71 |
+
$this->addCartDataToUrl($url);
|
| 72 |
+
header("Location: $url");
|
| 73 |
+
}
|
| 74 |
+
|
| 75 |
+
private function refreshCart() {
|
| 76 |
+
$url = $_REQUEST['url'];
|
| 77 |
+
$url .= "&refreshCart=success";
|
| 78 |
+
$this->addCartDataToUrl($url);
|
| 79 |
+
header("Location: $url");
|
| 80 |
+
}
|
| 81 |
+
|
| 82 |
+
private function cartApplyCoupon() {
|
| 83 |
+
$result = Mage::getModel('mageconnector/cart')
|
| 84 |
+
->applyCoupon();
|
| 85 |
+
|
| 86 |
+
$url = $_REQUEST['couponUrl'];
|
| 87 |
+
if ($result) {
|
| 88 |
+
$url .= "&applyCoupon=success&couponCode=" . $_REQUEST['coupon_code'];
|
| 89 |
+
} else {
|
| 90 |
+
$url .= "&applyCoupon=unsuccess&couponCode=" . $_REQUEST['coupon_code'];
|
| 91 |
+
}
|
| 92 |
+
$this->addCartDataToUrl($url);
|
| 93 |
+
header("Location: $url");
|
| 94 |
+
}
|
| 95 |
+
|
| 96 |
+
private function cartCancelCoupon() {
|
| 97 |
+
$result = Mage::getModel('mageconnector/cart')
|
| 98 |
+
->cancelCoupon();
|
| 99 |
+
|
| 100 |
+
$url = $_REQUEST['couponUrl'];
|
| 101 |
+
if ($result) {
|
| 102 |
+
$url .= "&cancelCoupon=success";
|
| 103 |
+
} else {
|
| 104 |
+
$url .= "&cancelCoupon=unsuccess";
|
| 105 |
+
}
|
| 106 |
+
$this->addCartDataToUrl($url);
|
| 107 |
+
header("Location: $url");
|
| 108 |
+
}
|
| 109 |
+
|
| 110 |
+
private function updateCart() {
|
| 111 |
+
$result = Mage::getModel('mageconnector/cart')
|
| 112 |
+
->updateCart();
|
| 113 |
+
|
| 114 |
+
$url = $_REQUEST['url'];
|
| 115 |
+
if ($result) {
|
| 116 |
+
$url .= "&updateCart=success";
|
| 117 |
+
} else {
|
| 118 |
+
$url .= "&updateCart=unsuccess";
|
| 119 |
+
}
|
| 120 |
+
$this->addCartDataToUrl($url);
|
| 121 |
+
header("Location: $url");
|
| 122 |
+
}
|
| 123 |
+
|
| 124 |
+
private function deleteCartItem() {
|
| 125 |
+
$result = Mage::getModel('mageconnector/cart')
|
| 126 |
+
->deleteCartItem();
|
| 127 |
+
|
| 128 |
+
$url = $_REQUEST['url'];
|
| 129 |
+
if ($result) {
|
| 130 |
+
$url .= "&deleteCartItem=success";
|
| 131 |
+
} else {
|
| 132 |
+
$url .= "&deleteCartItem=unsuccess";
|
| 133 |
+
}
|
| 134 |
+
$this->addCartDataToUrl($url);
|
| 135 |
+
header("Location: $url");
|
| 136 |
+
}
|
| 137 |
+
|
| 138 |
+
private function storeView() {
|
| 139 |
+
$output = Mage::helper('mageconnector')->getListStoreView();
|
| 140 |
+
|
| 141 |
+
$response = $this->getResponse();
|
| 142 |
+
$response->setHeader('Content-Type', 'text/xml; charset=utf-8')
|
| 143 |
+
->setBody($output);
|
| 144 |
+
}
|
| 145 |
+
|
| 146 |
+
private function category() {
|
| 147 |
+
$store_code = $this->getRequest()->get('view');
|
| 148 |
+
|
| 149 |
+
if ($store_code == '') {
|
| 150 |
+
$store_code = null;
|
| 151 |
+
}
|
| 152 |
+
|
| 153 |
+
$output = Mage::getModel('mageconnector/category')
|
| 154 |
+
->exportXML($store_code);
|
| 155 |
+
|
| 156 |
+
$response = $this->getResponse();
|
| 157 |
+
$response->setHeader('Content-Type', 'text/xml; charset=utf-8')
|
| 158 |
+
->setBody($output);
|
| 159 |
+
}
|
| 160 |
+
|
| 161 |
+
private function product() {
|
| 162 |
+
$keyword = $this->getRequest()->get('keyword');
|
| 163 |
+
$category = $this->getRequest()->get('category');
|
| 164 |
+
|
| 165 |
+
if ($keyword != '') {
|
| 166 |
+
$output = $this->productSearch($keyword, $category);
|
| 167 |
+
} else {
|
| 168 |
+
$urlKey = $this->getRequest()->get('url_key');
|
| 169 |
+
if ($urlKey != '') {
|
| 170 |
+
$output = $this->productDetail($urlKey);
|
| 171 |
+
} else {
|
| 172 |
+
if ($category != '') {
|
| 173 |
+
$output = $this->productCategory($category);
|
| 174 |
+
} else {
|
| 175 |
+
$output = $this->allProducts();
|
| 176 |
+
}
|
| 177 |
+
}
|
| 178 |
+
}
|
| 179 |
+
|
| 180 |
+
$response = $this->getResponse();
|
| 181 |
+
$response->setHeader('Content-Type', 'text/xml; charset=utf-8')
|
| 182 |
+
->setBody($output);
|
| 183 |
+
}
|
| 184 |
+
|
| 185 |
+
private function productCategory($category) {
|
| 186 |
+
$store_code = $this->getRequest()->get('view');
|
| 187 |
+
|
| 188 |
+
$currentPage = $this->getRequest()->get('page');
|
| 189 |
+
$pageSize = $this->getRequest()->get('pageSize');
|
| 190 |
+
$orderBy = $this->getRequest()->get('orderBy');
|
| 191 |
+
$typeOrder = $this->getRequest()->get('typeOrder');
|
| 192 |
+
$showProductsInSubCategories = $this->getRequest()->get('showProductsInSubCategories');
|
| 193 |
+
|
| 194 |
+
return Mage::getModel('mageconnector/product')
|
| 195 |
+
->getProductListByCategory($store_code, $category, $currentPage, $pageSize, $orderBy, $typeOrder, $showProductsInSubCategories);
|
| 196 |
+
}
|
| 197 |
+
|
| 198 |
+
private function productSearch($keyword, $category) {
|
| 199 |
+
$store_code = $this->getRequest()->get('view');
|
| 200 |
+
|
| 201 |
+
$currentPage = $this->getRequest()->get('page');
|
| 202 |
+
$pageSize = $this->getRequest()->get('pageSize');
|
| 203 |
+
$orderBy = $this->getRequest()->get('orderBy');
|
| 204 |
+
$typeOrder = $this->getRequest()->get('typeOrder');
|
| 205 |
+
$showProductsInSubCategories = $this->getRequest()->get('showProductsInSubCategories');
|
| 206 |
+
|
| 207 |
+
return Mage::getModel('mageconnector/product')
|
| 208 |
+
->searchProduct($store_code, $keyword, $category, $currentPage, $pageSize, $orderBy, $typeOrder, $showProductsInSubCategories);
|
| 209 |
+
}
|
| 210 |
+
|
| 211 |
+
private function productDetail($productUrlKey) {
|
| 212 |
+
$store_code = $this->getRequest()->get('view');
|
| 213 |
+
|
| 214 |
+
return Mage::getModel('mageconnector/product')
|
| 215 |
+
->getProductDetail($store_code, $productUrlKey);
|
| 216 |
+
}
|
| 217 |
+
|
| 218 |
+
private function allProducts() {
|
| 219 |
+
$store_code = $this->getRequest()->get('view');
|
| 220 |
+
|
| 221 |
+
$currentPage = $this->getRequest()->get('page');
|
| 222 |
+
$pageSize = $this->getRequest()->get('pageSize');
|
| 223 |
+
$orderBy = $this->getRequest()->get('orderBy');
|
| 224 |
+
$typeOrder = $this->getRequest()->get('typeOrder');
|
| 225 |
+
|
| 226 |
+
return Mage::getModel('mageconnector/product')
|
| 227 |
+
->searchProduct($store_code, '', '', $currentPage, $pageSize, $orderBy, $typeOrder);
|
| 228 |
+
}
|
| 229 |
+
|
| 230 |
+
public function xml() {
|
| 231 |
+
$products = Mage::getModel('catalog/product')->getCollection()
|
| 232 |
+
->addAttributeToSelect('name')
|
| 233 |
+
->addStoreFilter(1)
|
| 234 |
+
->addAttributeToFilter(array(
|
| 235 |
+
array(
|
| 236 |
+
'attribute' => 'visibility',
|
| 237 |
+
'in' => array(3, 4)
|
| 238 |
+
)
|
| 239 |
+
))
|
| 240 |
+
->addFieldToFilter("status", 1);
|
| 241 |
+
|
| 242 |
+
$xml = '<?xml version="1.0"?><products>';
|
| 243 |
+
|
| 244 |
+
$i = 0;
|
| 245 |
+
foreach ($products as $p) {
|
| 246 |
+
$product = Mage::getModel('catalog/product')
|
| 247 |
+
->setStoreId(1)
|
| 248 |
+
->load($p->getId());
|
| 249 |
+
$xml .= '<product order="#' . ++$i . '">'
|
| 250 |
+
. '<id>' . $product->getId() . '</id>'
|
| 251 |
+
. '<name><![CDATA[' . $product->getName() . ']]></name>'
|
| 252 |
+
. '<price><![CDATA[' . Mage::helper('core')
|
| 253 |
+
->currency(Mage::helper('tax')
|
| 254 |
+
->getPrice(
|
| 255 |
+
$product,
|
| 256 |
+
$product->getFinalPrice()
|
| 257 |
+
)
|
| 258 |
+
, true, false) . ']]></price>'
|
| 259 |
+
. '<description><![CDATA[' . $product->getShortDescription() . ']]></description>'
|
| 260 |
+
. '</product>';
|
| 261 |
+
}
|
| 262 |
+
|
| 263 |
+
$xml .= '</products>';
|
| 264 |
+
$response = $this->getResponse();
|
| 265 |
+
$response->setHeader('Content-Type', 'text/xml; charset=utf-8')
|
| 266 |
+
->setBody($xml);
|
| 267 |
+
}
|
| 268 |
+
|
| 269 |
+
}
|
app/code/local/Magestore/Mageconnector/etc/adminhtml.xml
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<config>
|
| 3 |
+
<menu>
|
| 4 |
+
<catalog>
|
| 5 |
+
<children>
|
| 6 |
+
<mageconnector>
|
| 7 |
+
<title>Magestore Connector Settings</title>
|
| 8 |
+
<sort_order>20</sort_order>
|
| 9 |
+
<action>adminhtml/system_config/edit/section/mageconnector</action>
|
| 10 |
+
</mageconnector>
|
| 11 |
+
</children>
|
| 12 |
+
</catalog>
|
| 13 |
+
</menu>
|
| 14 |
+
<acl>
|
| 15 |
+
<resources>
|
| 16 |
+
<all>
|
| 17 |
+
<title>Allow Everything</title>
|
| 18 |
+
</all>
|
| 19 |
+
<admin>
|
| 20 |
+
<children>
|
| 21 |
+
<catalog>
|
| 22 |
+
<children>
|
| 23 |
+
<mageconnector>
|
| 24 |
+
<title>Magestore Connector Settings</title>
|
| 25 |
+
<sort_order>20</sort_order>
|
| 26 |
+
<action>adminhtml/system_config/edit/section/mageconnector</action>
|
| 27 |
+
</mageconnector>
|
| 28 |
+
</children>
|
| 29 |
+
</catalog>
|
| 30 |
+
<system>
|
| 31 |
+
<children>
|
| 32 |
+
<config>
|
| 33 |
+
<children>
|
| 34 |
+
<mageconnector translate="title">
|
| 35 |
+
<title>Magestore Connector Settings</title>
|
| 36 |
+
<sort_order>50</sort_order>
|
| 37 |
+
</mageconnector>
|
| 38 |
+
</children>
|
| 39 |
+
</config>
|
| 40 |
+
</children>
|
| 41 |
+
</system>
|
| 42 |
+
</children>
|
| 43 |
+
</admin>
|
| 44 |
+
</resources>
|
| 45 |
+
</acl>
|
| 46 |
+
</config>
|
app/code/local/Magestore/Mageconnector/etc/config.xml
ADDED
|
@@ -0,0 +1,135 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<config>
|
| 3 |
+
<modules>
|
| 4 |
+
<Magestore_Mageconnector>
|
| 5 |
+
<version>0.1.0</version>
|
| 6 |
+
</Magestore_Mageconnector>
|
| 7 |
+
</modules>
|
| 8 |
+
<frontend>
|
| 9 |
+
<routers>
|
| 10 |
+
<mageconnector>
|
| 11 |
+
<use>standard</use>
|
| 12 |
+
<args>
|
| 13 |
+
<module>Magestore_Mageconnector</module>
|
| 14 |
+
<frontName>mageconnector</frontName>
|
| 15 |
+
</args>
|
| 16 |
+
</mageconnector>
|
| 17 |
+
</routers>
|
| 18 |
+
<layout>
|
| 19 |
+
<updates>
|
| 20 |
+
<mageconnector>
|
| 21 |
+
<file>mageconnector.xml</file>
|
| 22 |
+
</mageconnector>
|
| 23 |
+
</updates>
|
| 24 |
+
</layout>
|
| 25 |
+
</frontend>
|
| 26 |
+
<admin>
|
| 27 |
+
<routers>
|
| 28 |
+
<mageconnector>
|
| 29 |
+
<use>admin</use>
|
| 30 |
+
<args>
|
| 31 |
+
<module>Magestore_Mageconnector</module>
|
| 32 |
+
<frontName>mageconnector</frontName>
|
| 33 |
+
</args>
|
| 34 |
+
</mageconnector>
|
| 35 |
+
</routers>
|
| 36 |
+
</admin>
|
| 37 |
+
<adminhtml>
|
| 38 |
+
<menu>
|
| 39 |
+
<catalog>
|
| 40 |
+
<children>
|
| 41 |
+
<mageconnector>
|
| 42 |
+
<title>Magestore Connector Settings</title>
|
| 43 |
+
<sort_order>20</sort_order>
|
| 44 |
+
<action>adminhtml/system_config/edit/section/mageconnector</action>
|
| 45 |
+
</mageconnector>
|
| 46 |
+
</children>
|
| 47 |
+
</catalog>
|
| 48 |
+
</menu>
|
| 49 |
+
<acl>
|
| 50 |
+
<resources>
|
| 51 |
+
<all>
|
| 52 |
+
<title>Allow Everything</title>
|
| 53 |
+
</all>
|
| 54 |
+
<admin>
|
| 55 |
+
<children>
|
| 56 |
+
<catalog>
|
| 57 |
+
<children>
|
| 58 |
+
<mageconnector>
|
| 59 |
+
<title>Magestore Connector Settings</title>
|
| 60 |
+
<sort_order>20</sort_order>
|
| 61 |
+
<action>adminhtml/system_config/edit/section/mageconnector</action>
|
| 62 |
+
</mageconnector>
|
| 63 |
+
</children>
|
| 64 |
+
</catalog>
|
| 65 |
+
<system>
|
| 66 |
+
<children>
|
| 67 |
+
<config>
|
| 68 |
+
<children>
|
| 69 |
+
<mageconnector translate="title">
|
| 70 |
+
<title>Magestore Connector Settings</title>
|
| 71 |
+
<sort_order>50</sort_order>
|
| 72 |
+
</mageconnector>
|
| 73 |
+
</children>
|
| 74 |
+
</config>
|
| 75 |
+
</children>
|
| 76 |
+
</system>
|
| 77 |
+
</children>
|
| 78 |
+
</admin>
|
| 79 |
+
</resources>
|
| 80 |
+
</acl>
|
| 81 |
+
<layout>
|
| 82 |
+
<updates>
|
| 83 |
+
<mageconnector>
|
| 84 |
+
<file>mageconnector.xml</file>
|
| 85 |
+
</mageconnector>
|
| 86 |
+
</updates>
|
| 87 |
+
</layout>
|
| 88 |
+
</adminhtml>
|
| 89 |
+
<global>
|
| 90 |
+
<models>
|
| 91 |
+
<mageconnector>
|
| 92 |
+
<class>Magestore_Mageconnector_Model</class>
|
| 93 |
+
<resourceModel>mageconnector_mysql4</resourceModel>
|
| 94 |
+
</mageconnector>
|
| 95 |
+
<mageconnector_mysql4>
|
| 96 |
+
<class>Magestore_Mageconnector_Model_Mysql4</class>
|
| 97 |
+
<entities>
|
| 98 |
+
<mageconnector>
|
| 99 |
+
<table>mageconnector_featured_products</table>
|
| 100 |
+
</mageconnector>
|
| 101 |
+
</entities>
|
| 102 |
+
</mageconnector_mysql4>
|
| 103 |
+
</models>
|
| 104 |
+
<resources>
|
| 105 |
+
<mageconnector_setup>
|
| 106 |
+
<setup>
|
| 107 |
+
<module>Magestore_Mageconnector</module>
|
| 108 |
+
</setup>
|
| 109 |
+
<connection>
|
| 110 |
+
<use>core_setup</use>
|
| 111 |
+
</connection>
|
| 112 |
+
</mageconnector_setup>
|
| 113 |
+
<mageconnector_write>
|
| 114 |
+
<connection>
|
| 115 |
+
<use>core_write</use>
|
| 116 |
+
</connection>
|
| 117 |
+
</mageconnector_write>
|
| 118 |
+
<mageconnector_read>
|
| 119 |
+
<connection>
|
| 120 |
+
<use>core_read</use>
|
| 121 |
+
</connection>
|
| 122 |
+
</mageconnector_read>
|
| 123 |
+
</resources>
|
| 124 |
+
<blocks>
|
| 125 |
+
<mageconnector>
|
| 126 |
+
<class>Magestore_Mageconnector_Block</class>
|
| 127 |
+
</mageconnector>
|
| 128 |
+
</blocks>
|
| 129 |
+
<helpers>
|
| 130 |
+
<mageconnector>
|
| 131 |
+
<class>Magestore_Mageconnector_Helper</class>
|
| 132 |
+
</mageconnector>
|
| 133 |
+
</helpers>
|
| 134 |
+
</global>
|
| 135 |
+
</config>
|
app/code/local/Magestore/Mageconnector/etc/system.xml
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<config>
|
| 3 |
+
<tabs>
|
| 4 |
+
<magestore translate="label">
|
| 5 |
+
<label>Magestore Extension</label>
|
| 6 |
+
<sort_order>400</sort_order>
|
| 7 |
+
</magestore>
|
| 8 |
+
</tabs>
|
| 9 |
+
<sections>
|
| 10 |
+
<mageconnector translate="label" module="mageconnector">
|
| 11 |
+
<class>separator-top</class>
|
| 12 |
+
<label>Magestore Connector</label>
|
| 13 |
+
<tab>magestore</tab>
|
| 14 |
+
<frontend_type>text</frontend_type>
|
| 15 |
+
<sort_order>300</sort_order>
|
| 16 |
+
<show_in_default>1</show_in_default>
|
| 17 |
+
<show_in_website>1</show_in_website>
|
| 18 |
+
<show_in_store>1</show_in_store>
|
| 19 |
+
<groups>
|
| 20 |
+
<store translate="label">
|
| 21 |
+
<label>Store View Connector Information</label>
|
| 22 |
+
<frontend_type>text</frontend_type>
|
| 23 |
+
<sort_order>0</sort_order>
|
| 24 |
+
<show_in_default>1</show_in_default>
|
| 25 |
+
<show_in_website>1</show_in_website>
|
| 26 |
+
<show_in_store>1</show_in_store>
|
| 27 |
+
<fields>
|
| 28 |
+
<default_store_view translate="label">
|
| 29 |
+
<label>Default store view</label>
|
| 30 |
+
<frontend_type>select</frontend_type>
|
| 31 |
+
<source_model>mageconnector/importstore</source_model>
|
| 32 |
+
<sort_order>0</sort_order>
|
| 33 |
+
<show_in_default>1</show_in_default>
|
| 34 |
+
<show_in_website>1</show_in_website>
|
| 35 |
+
<show_in_store>1</show_in_store>
|
| 36 |
+
<comment>Default store view will export data went external website don't request view parameter</comment>
|
| 37 |
+
</default_store_view>
|
| 38 |
+
</fields>
|
| 39 |
+
</store>
|
| 40 |
+
</groups>
|
| 41 |
+
</mageconnector>
|
| 42 |
+
</sections>
|
| 43 |
+
</config>
|
app/code/local/Magestore/Mageconnector/sql/mageconnector_setup/mysql4-install-0.1.0.php
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Create table data
|
| 4 |
+
*
|
| 5 |
+
* @category Magestore
|
| 6 |
+
* @package Magestore_Mageconnector
|
| 7 |
+
* @author Nguyen Minh Dung (http://oss.com.vn)
|
| 8 |
+
*/
|
| 9 |
+
$installer = $this;
|
| 10 |
+
|
| 11 |
+
$installer->startSetup();
|
| 12 |
+
|
| 13 |
+
$installer->run("
|
| 14 |
+
|
| 15 |
+
");
|
| 16 |
+
|
| 17 |
+
$installer->endSetup();
|
app/etc/modules/Magestore_Mageconnector.xml
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<config>
|
| 3 |
+
<modules>
|
| 4 |
+
<Magestore_Mageconnector>
|
| 5 |
+
<active>true</active>
|
| 6 |
+
<codePool>local</codePool>
|
| 7 |
+
</Magestore_Mageconnector>
|
| 8 |
+
</modules>
|
| 9 |
+
</config>
|
package.xml
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<package>
|
| 3 |
+
<name>Massale_Facebook_Connector</name>
|
| 4 |
+
<version>0.1.0</version>
|
| 5 |
+
<stability>stable</stability>
|
| 6 |
+
<license uri="http://www.opensource.org/licenses/osl-3.0.php">http://www.opensource.org/licenses/osl-3.0.php</license>
|
| 7 |
+
<channel>community</channel>
|
| 8 |
+
<extends/>
|
| 9 |
+
<summary>Massale_Facbook_Connector</summary>
|
| 10 |
+
<description>Module to connect magento with Facebook.</description>
|
| 11 |
+
<notes>Massale_FacbookConnector</notes>
|
| 12 |
+
<authors><author><name>massale</name><user>auto-converted</user><email>sales@massale.com</email></author></authors>
|
| 13 |
+
<date>2011-03-18</date>
|
| 14 |
+
<time>03:04:27</time>
|
| 15 |
+
<contents><target name="magelocal"><dir name="Magestore"><dir name="Mageconnector"><file name="Exception.php" hash="a26ebf68f3fa9b9674770653147c9404"/><dir name="controllers"><file name="IndexController.php" hash="6618290d9de2a807f53918418cb04da8"/></dir><dir name="etc"><file name="adminhtml.xml" hash="744adb7936a5a62726d9af2b20655554"/><file name="config.xml" hash="f5b69ad7195f6eb8e467d49b093baccb"/><file name="system.xml" hash="ba54c582b5105840e664598c7daec065"/></dir><dir name="Helper"><file name="Data.php" hash="ca3999ca04541005a2b7a4f52a01be43"/></dir><dir name="Model"><file name="Abstract.php" hash="74a75bafc0d7aae284af9efbae629d5f"/><file name="Cart.php" hash="8aa1031721fddab9aff262517815bce5"/><file name="Category.php" hash="1e5f56107e247ab5c05829dd6e7091ce"/><file name="Importstore.php" hash="b7421ba269bc92444f9d755930dc5b54"/><file name="Product.php" hash="43c23b53e5a4d39a8072502ee394e219"/></dir><dir name="sql"><dir name="mageconnector_setup"><file name="mysql4-install-0.1.0.php" hash="e5605e8c961291ba9633a78777eb3cb0"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Magestore_Mageconnector.xml" hash="0443a138f02d278a3f928ada60f57101"/></dir></target></contents>
|
| 16 |
+
<compatible/>
|
| 17 |
+
<dependencies/>
|
| 18 |
+
</package>
|
