Version Notes
Product caching added to load product more faster.
Download this release
Release Info
| Developer | mss |
| Extension | Mss_Connector |
| Version | 1.4.5 |
| Comparing to | |
| See all releases | |
Version 1.4.5
- app/code/local/Mss/Bannerslider/Block/Adminhtml/Bannerslider/Edit.php +29 -0
- app/code/local/Mss/Bannerslider/Block/Adminhtml/Bannerslider/Edit/Form.php +21 -0
- app/code/local/Mss/Bannerslider/Block/Adminhtml/Bannerslider/Edit/Tab/Form.php +97 -0
- app/code/local/Mss/Bannerslider/Block/Adminhtml/Bannerslider/Edit/Tabs.php +24 -0
- app/code/local/Mss/Bannerslider/Block/Adminhtml/Bannerslider/Grid.php +53 -0
- app/code/local/Mss/Bannerslider/Block/Adminhtml/Bannerslider/Helper/Image.php +14 -0
- app/code/local/Mss/Bannerslider/Block/Adminhtml/Grid.php +12 -0
- app/code/local/Mss/Bannerslider/Block/Adminhtml/Renderer/Image.php +15 -0
- app/code/local/Mss/Bannerslider/Helper/Data.php +67 -0
- app/code/local/Mss/Bannerslider/Model/Bannerslider.php +12 -0
- app/code/local/Mss/Bannerslider/Model/Mysql4/Bannerslider.php +8 -0
- app/code/local/Mss/Bannerslider/Model/Mysql4/Bannerslider/Collection.php +13 -0
- app/code/local/Mss/Bannerslider/Model/Observer.php +6 -0
- app/code/local/Mss/Bannerslider/controllers/Adminhtml/BannersliderController.php +203 -0
- app/code/local/Mss/Bannerslider/controllers/BannerController.php +61 -0
- app/code/local/Mss/Bannerslider/etc/adminhtml.xml +15 -0
- app/code/local/Mss/Bannerslider/etc/config.xml +89 -0
- app/code/local/Mss/Bannerslider/sql/bannerslider_setup/mysql4-install-0.1.0.php +21 -0
- app/code/local/Mss/Connector/Block/Adminhtml/Notifications.php +22 -0
- app/code/local/Mss/Connector/Block/System/Config/About.php +14 -0
- app/code/local/Mss/Connector/Block/System/Config/Authorizenet.php +15 -0
- app/code/local/Mss/Connector/Block/System/Config/Banktransfer.php +15 -0
- app/code/local/Mss/Connector/Block/System/Config/Checkmo.php +15 -0
- app/code/local/Mss/Connector/Block/System/Config/Cod.php +15 -0
- app/code/local/Mss/Connector/Block/System/Config/Mpaypal.php +16 -0
- app/code/local/Mss/Connector/Block/System/Config/Payu.php +19 -0
- app/code/local/Mss/Connector/Helper/Data.php +197 -0
- app/code/local/Mss/Connector/Model/Connector.php +10 -0
- app/code/local/Mss/Connector/Model/Mysql4/Connector.php +10 -0
- app/code/local/Mss/Connector/Model/Mysql4/Connector/Collection.php +10 -0
- app/code/local/Mss/Connector/Model/Observer.php +67 -0
- app/code/local/Mss/Connector/controllers/CartController.php +1394 -0
- app/code/local/Mss/Connector/controllers/CreditController.php +143 -0
- app/code/local/Mss/Connector/controllers/CustomerController.php +802 -0
- app/code/local/Mss/Connector/controllers/FeedbackController.php +37 -0
- app/code/local/Mss/Connector/controllers/IndexController.php +753 -0
- app/code/local/Mss/Connector/controllers/ItemController.php +798 -0
- app/code/local/Mss/Connector/controllers/ItemsController.php +398 -0
- app/code/local/Mss/Connector/controllers/MenuController.php +98 -0
- app/code/local/Mss/Connector/controllers/ProductsController.php +594 -0
- app/code/local/Mss/Connector/controllers/SearchController.php +200 -0
- app/code/local/Mss/Connector/controllers/StaticpagesController.php +76 -0
- app/code/local/Mss/Connector/controllers/StoreController.php +61 -0
- app/code/local/Mss/Connector/controllers/StoreinfoController.php +69 -0
- app/code/local/Mss/Connector/controllers/TokenController.php +189 -0
- app/code/local/Mss/Connector/controllers/WishlistController.php +182 -0
- app/code/local/Mss/Connector/controllers/_new_ProductsController.php +1 -0
- app/code/local/Mss/Connector/etc/adminhtml.xml +43 -0
- app/code/local/Mss/Connector/etc/config.xml +93 -0
- app/code/local/Mss/Connector/etc/system.xml +427 -0
- app/code/local/Mss/Connector/sql/connector_setup/mysql4-install-0.1.0.php +21 -0
- app/code/local/Mss/Connector/sql/connector_setup/mysql4-upgrade-0.1.0-0.1.1.php +26 -0
- app/code/local/Mss/Mpaypal/Helper/Data.php +5 -0
- app/code/local/Mss/Mpaypal/Model/Mpaypal.php +8 -0
- app/code/local/Mss/Mpaypal/Model/Observer.php +21 -0
- app/code/local/Mss/Mpaypal/controllers/IndexController.php +126 -0
- app/code/local/Mss/Mpaypal/etc/config.xml +70 -0
- app/code/local/Mss/Mpaypal/etc/system.xml +46 -0
- app/code/local/Mss/Payu/Block/Index.php +10 -0
- app/code/local/Mss/Payu/Helper/Data.php +5 -0
- app/code/local/Mss/Payu/controllers/IndexController.php +89 -0
- app/code/local/Mss/Payu/etc/config.xml +38 -0
- app/code/local/Mss/Pushnotification/Block/Adminhtml/Pushnotificationbackend.php +5 -0
- app/code/local/Mss/Pushnotification/Helper/Data.php +182 -0
- app/code/local/Mss/Pushnotification/Model/Entity/Resource.php +24 -0
- app/code/local/Mss/Pushnotification/Model/Mysql4/Pushnotification.php +10 -0
- app/code/local/Mss/Pushnotification/Model/Mysql4/Pushnotification/Collection.php +10 -0
- app/code/local/Mss/Pushnotification/Model/Pushnotification.php +10 -0
- app/code/local/Mss/Pushnotification/Model/System/Config/Backend/File.php +13 -0
- app/code/local/Mss/Pushnotification/Model/System/Config/Backend/Image.php +10 -0
- app/code/local/Mss/Pushnotification/Model/System/Config/Backend/Iosmode.php +60 -0
- app/code/local/Mss/Pushnotification/controllers/Adminhtml/PushnotificationbackendController.php +18 -0
- app/code/local/Mss/Pushnotification/etc/config.xml +133 -0
- app/code/local/Mss/Pushnotification/etc/system.xml +173 -0
- app/code/local/Mss/Pushnotification/sql/pushnotification_setup/mysql4-upgrade-0.1.5-0.1.6.php +67 -0
- app/code/local/Mss/Sociallogin/Helper/Data.php +140 -0
- app/code/local/Mss/Sociallogin/Model/Mysql4/Sociallogin.php +10 -0
- app/code/local/Mss/Sociallogin/Model/Sociallogin.php +10 -0
- app/code/local/Mss/Sociallogin/etc/config.xml +47 -0
- app/code/local/Mss/Sociallogin/sql/sociallogin_setup/mysql4-install-0.1.0.php +51 -0
- app/design/adminhtml/default/default/layout/bannerslider.xml +8 -0
- app/design/adminhtml/default/default/layout/connector.xml +8 -0
- app/design/adminhtml/default/default/layout/pushnotification.xml +8 -0
- app/design/adminhtml/default/default/template/connector/notification.phtml +3 -0
- app/design/adminhtml/default/default/template/pushnotification/pushnotificationbackend.phtml +58 -0
- app/design/frontend/base/default/layout/mpaypal.xml +13 -0
- app/design/frontend/base/default/layout/payu.xml +13 -0
- app/design/frontend/base/default/template/mpaypal/index.phtml +117 -0
- app/design/frontend/base/default/template/payu/index.phtml +265 -0
- app/design/frontend/base/default/template/payu/test.phtml +10 -0
- app/etc/modules/Mss_Bannerslider.xml +30 -0
- app/etc/modules/Mss_Connector.xml +9 -0
- app/etc/modules/Mss_Mpaypal.xml +13 -0
- app/etc/modules/Mss_Payu.xml +10 -0
- app/etc/modules/Mss_Pushnotification.xml +10 -0
- app/etc/modules/Mss_Sociallogin.xml +10 -0
- package.xml +18 -0
- skin/frontend/base/default/images/magentomobileshop/magentomobileshop_loader.gif +0 -0
app/code/local/Mss/Bannerslider/Block/Adminhtml/Bannerslider/Edit.php
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class Mss_Bannerslider_Block_Adminhtml_Bannerslider_Edit extends Mage_Adminhtml_Block_Widget_Form_Container
|
| 4 |
+
{
|
| 5 |
+
public function __construct()
|
| 6 |
+
{
|
| 7 |
+
parent::__construct();
|
| 8 |
+
|
| 9 |
+
$this->_objectId = 'id';
|
| 10 |
+
$this->_blockGroup = 'bannerslider';
|
| 11 |
+
$this->_controller = 'adminhtml_bannerslider';
|
| 12 |
+
|
| 13 |
+
$this->_updateButton('save', 'label', Mage::helper('bannerslider')->__('Save Banner'));
|
| 14 |
+
$this->_updateButton('delete', 'label', Mage::helper('bannerslider')->__('Delete Banner'));
|
| 15 |
+
|
| 16 |
+
|
| 17 |
+
}
|
| 18 |
+
|
| 19 |
+
public function getHeaderText()
|
| 20 |
+
{
|
| 21 |
+
if( Mage::registry('banner_data') && Mage::registry('banner_data')->getId() ) {
|
| 22 |
+
return Mage::helper('bannerslider')->__("Edit Banner '%s'", $this->htmlEscape(Mage::registry('banner_data')->getName()));
|
| 23 |
+
} else {
|
| 24 |
+
return Mage::helper('bannerslider')->__('Add Banner');
|
| 25 |
+
}
|
| 26 |
+
}
|
| 27 |
+
|
| 28 |
+
|
| 29 |
+
}
|
app/code/local/Mss/Bannerslider/Block/Adminhtml/Bannerslider/Edit/Form.php
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class Mss_Bannerslider_Block_Adminhtml_Bannerslider_Edit_Form extends Mage_Adminhtml_Block_Widget_Form
|
| 4 |
+
{
|
| 5 |
+
protected function _prepareForm()
|
| 6 |
+
{
|
| 7 |
+
$form = new Varien_Data_Form(array(
|
| 8 |
+
'id' => 'edit_form',
|
| 9 |
+
'action' => $this->getUrl('*/*/save',
|
| 10 |
+
array('id' => $this->getRequest()->getParam('id')
|
| 11 |
+
)),
|
| 12 |
+
'method' => 'post',
|
| 13 |
+
'enctype' => 'multipart/form-data'
|
| 14 |
+
)
|
| 15 |
+
);
|
| 16 |
+
|
| 17 |
+
$form->setUseContainer(true);
|
| 18 |
+
$this->setForm($form);
|
| 19 |
+
return parent::_prepareForm();
|
| 20 |
+
}
|
| 21 |
+
}
|
app/code/local/Mss/Bannerslider/Block/Adminhtml/Bannerslider/Edit/Tab/Form.php
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class Mss_Bannerslider_Block_Adminhtml_Bannerslider_Edit_Tab_Form extends Mage_Adminhtml_Block_Widget_Form {
|
| 4 |
+
|
| 5 |
+
protected function _prepareForm() {
|
| 6 |
+
$form = new Varien_Data_Form();
|
| 7 |
+
$this->setForm($form);
|
| 8 |
+
$fieldset = $form->addFieldset('banner_form',
|
| 9 |
+
array('legend'=>'Banner Information'));
|
| 10 |
+
$fieldset->addField('name', 'text',
|
| 11 |
+
array(
|
| 12 |
+
'label' => Mage::helper('bannerslider')->__('Title'),
|
| 13 |
+
'class' => 'required-entry',
|
| 14 |
+
'required' => true,
|
| 15 |
+
'name' => 'name',
|
| 16 |
+
));
|
| 17 |
+
$fieldset->addType('thumbnail','Mss_Bannerslider_Block_Adminhtml_Bannerslider_Helper_Image');
|
| 18 |
+
|
| 19 |
+
$fieldset->addField('image', 'thumbnail', array(
|
| 20 |
+
'label' => Mage::helper('bannerslider')->__('Image'),
|
| 21 |
+
'required' => true,
|
| 22 |
+
'name' => 'image',
|
| 23 |
+
));
|
| 24 |
+
$fieldset->addField('image_alt', 'textarea',
|
| 25 |
+
array(
|
| 26 |
+
'label' => Mage::helper('bannerslider')->__('Description'),
|
| 27 |
+
|
| 28 |
+
|
| 29 |
+
'name' => 'image_alt',
|
| 30 |
+
));
|
| 31 |
+
$fieldset->addField('order_banner', 'text',
|
| 32 |
+
array(
|
| 33 |
+
'label' => Mage::helper('bannerslider')->__('Order'),
|
| 34 |
+
|
| 35 |
+
|
| 36 |
+
|
| 37 |
+
'name' => 'order_banner',
|
| 38 |
+
));
|
| 39 |
+
$fieldset->addField('url_type', 'select',
|
| 40 |
+
array(
|
| 41 |
+
'label' => Mage::helper('bannerslider')->__('Link With Type'),
|
| 42 |
+
'values' => array(
|
| 43 |
+
|
| 44 |
+
|
| 45 |
+
array(
|
| 46 |
+
'value' => 'Category',
|
| 47 |
+
'label' => Mage::helper('core')->__('Category'),
|
| 48 |
+
),
|
| 49 |
+
array(
|
| 50 |
+
'value' => 'Product',
|
| 51 |
+
'label' => Mage::helper('core')->__('Product'),
|
| 52 |
+
),
|
| 53 |
+
),
|
| 54 |
+
|
| 55 |
+
'name' => 'url_type',
|
| 56 |
+
));
|
| 57 |
+
|
| 58 |
+
$fieldset->addField('product_id', 'text',
|
| 59 |
+
array(
|
| 60 |
+
'label' => Mage::helper('bannerslider')->__('Product Id to Display'),
|
| 61 |
+
|
| 62 |
+
|
| 63 |
+
'name' => 'product_id',
|
| 64 |
+
));
|
| 65 |
+
$fieldset->addField('category_id', 'text',
|
| 66 |
+
array(
|
| 67 |
+
'label' => Mage::helper('bannerslider')->__('Category Id to Display'),
|
| 68 |
+
|
| 69 |
+
|
| 70 |
+
'name' => 'category_id',
|
| 71 |
+
));
|
| 72 |
+
$fieldset->addField('status', 'select',
|
| 73 |
+
array(
|
| 74 |
+
'label' => Mage::helper('bannerslider')->__('Status'),
|
| 75 |
+
|
| 76 |
+
'values' => array(
|
| 77 |
+
|
| 78 |
+
|
| 79 |
+
array(
|
| 80 |
+
'value' => 0,
|
| 81 |
+
'label' => Mage::helper('core')->__('Disable'),
|
| 82 |
+
),
|
| 83 |
+
array(
|
| 84 |
+
'value' => 1,
|
| 85 |
+
'label' => Mage::helper('core')->__('Enable'),
|
| 86 |
+
),
|
| 87 |
+
),
|
| 88 |
+
'name' => 'status',
|
| 89 |
+
));
|
| 90 |
+
|
| 91 |
+
if ( Mage::registry('banner_data') )
|
| 92 |
+
{
|
| 93 |
+
$form->setValues(Mage::registry('banner_data')->getData());
|
| 94 |
+
}
|
| 95 |
+
return parent::_prepareForm();
|
| 96 |
+
}
|
| 97 |
+
}
|
app/code/local/Mss/Bannerslider/Block/Adminhtml/Bannerslider/Edit/Tabs.php
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class Mss_Bannerslider_Block_Adminhtml_Bannerslider_Edit_Tabs extends Mage_Adminhtml_Block_Widget_Tabs
|
| 4 |
+
{
|
| 5 |
+
|
| 6 |
+
public function __construct()
|
| 7 |
+
{
|
| 8 |
+
parent::__construct();
|
| 9 |
+
$this->setId('banner_tabs');
|
| 10 |
+
$this->setDestElementId('edit_form');
|
| 11 |
+
$this->setTitle(Mage::helper('bannerslider')->__('Banner Manager'));
|
| 12 |
+
}
|
| 13 |
+
|
| 14 |
+
protected function _beforeToHtml()
|
| 15 |
+
{
|
| 16 |
+
$this->addTab('form_section', array(
|
| 17 |
+
'label' => Mage::helper('bannerslider')->__('Banner Information'),
|
| 18 |
+
'title' => Mage::helper('bannerslider')->__('Banner Information'),
|
| 19 |
+
'content' => $this->getLayout()->createBlock('bannerslider/adminhtml_bannerslider_edit_tab_form')->toHtml(),
|
| 20 |
+
));
|
| 21 |
+
|
| 22 |
+
return parent::_beforeToHtml();
|
| 23 |
+
}
|
| 24 |
+
}
|
app/code/local/Mss/Bannerslider/Block/Adminhtml/Bannerslider/Grid.php
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class Mss_Bannerslider_Block_Adminhtml_Bannerslider_Grid extends Mage_Adminhtml_Block_Widget_Grid {
|
| 4 |
+
|
| 5 |
+
public function __construct()
|
| 6 |
+
{
|
| 7 |
+
parent::__construct();
|
| 8 |
+
$this->setId('bannerGrid');
|
| 9 |
+
$this->setDefaultSort('banner_id');
|
| 10 |
+
$this->setDefaultDir('ASC');
|
| 11 |
+
$this->setSaveParametersInSession(true);
|
| 12 |
+
|
| 13 |
+
}
|
| 14 |
+
protected function _prepareCollection()
|
| 15 |
+
{
|
| 16 |
+
$collection = Mage::getModel('bannerslider/bannerslider')->getCollection();
|
| 17 |
+
$this->setCollection($collection);
|
| 18 |
+
return parent::_prepareCollection();
|
| 19 |
+
}
|
| 20 |
+
protected function _prepareColumns()
|
| 21 |
+
{
|
| 22 |
+
$this->addColumn('banner_id',
|
| 23 |
+
array(
|
| 24 |
+
'header' => 'ID',
|
| 25 |
+
'align' =>'right',
|
| 26 |
+
'width' => '50px',
|
| 27 |
+
'index' => 'banner_id',
|
| 28 |
+
));
|
| 29 |
+
$this->addColumn('name',
|
| 30 |
+
array(
|
| 31 |
+
'header' => 'Name',
|
| 32 |
+
'align' =>'left',
|
| 33 |
+
'index' => 'name',
|
| 34 |
+
));
|
| 35 |
+
$this->addColumn('url_type', array(
|
| 36 |
+
'header' => 'Link Type',
|
| 37 |
+
'align' =>'left',
|
| 38 |
+
'index' => 'url_type',
|
| 39 |
+
));
|
| 40 |
+
$this->addColumn('image', array(
|
| 41 |
+
'header' => 'Image',
|
| 42 |
+
'align' =>'left',
|
| 43 |
+
'index' => 'image',
|
| 44 |
+
'renderer' => 'Mss_Bannerslider_Block_Adminhtml_Renderer_Image',
|
| 45 |
+
));
|
| 46 |
+
return parent::_prepareColumns();
|
| 47 |
+
}
|
| 48 |
+
public function getRowUrl($row)
|
| 49 |
+
{
|
| 50 |
+
return $this->getUrl('*/*/edit', array('id' => $row->getId()));
|
| 51 |
+
}
|
| 52 |
+
|
| 53 |
+
}
|
app/code/local/Mss/Bannerslider/Block/Adminhtml/Bannerslider/Helper/Image.php
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
|
| 4 |
+
class Mss_Bannerslider_Block_Adminhtml_Bannerslider_Helper_Image
|
| 5 |
+
extends Varien_Data_Form_Element_Image {
|
| 6 |
+
protected function _getUrl(){
|
| 7 |
+
$url = false;
|
| 8 |
+
if ($this->getValue()) {
|
| 9 |
+
$path = Mage::helper('bannerslider')->reImageName($this->getValue());
|
| 10 |
+
$url = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB)."media/bannerslider/".$path;
|
| 11 |
+
}
|
| 12 |
+
return $url;
|
| 13 |
+
}
|
| 14 |
+
}
|
app/code/local/Mss/Bannerslider/Block/Adminhtml/Grid.php
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
class Mss_Bannerslider_Block_Adminhtml_Grid extends Mage_Adminhtml_Block_Widget_Grid_Container
|
| 3 |
+
{
|
| 4 |
+
public function __construct()
|
| 5 |
+
{
|
| 6 |
+
$this->_controller = 'adminhtml_bannerslider';
|
| 7 |
+
$this->_blockGroup = 'bannerslider';
|
| 8 |
+
$this->_headerText = Mage::helper('bannerslider')->__('Banner Manager');
|
| 9 |
+
$this->_addButtonLabel = Mage::helper('bannerslider')->__('Add Banner');
|
| 10 |
+
parent::__construct();
|
| 11 |
+
}
|
| 12 |
+
}
|
app/code/local/Mss/Bannerslider/Block/Adminhtml/Renderer/Image.php
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php class Mss_Bannerslider_Block_Adminhtml_Renderer_Image extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
|
| 2 |
+
{
|
| 3 |
+
public function render(Varien_Object $row)
|
| 4 |
+
{
|
| 5 |
+
|
| 6 |
+
if($row->getData('image') != NULL)
|
| 7 |
+
{
|
| 8 |
+
$image=$row->getData('image');
|
| 9 |
+
$path = Mage::helper('bannerslider')->reImageName($image);
|
| 10 |
+
return '<img src="'.Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB).'media/bannerslider/'.$path.'" width="100px" alt="brandlogo"/>';
|
| 11 |
+
}
|
| 12 |
+
}
|
| 13 |
+
|
| 14 |
+
|
| 15 |
+
}
|
app/code/local/Mss/Bannerslider/Helper/Data.php
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
class Mss_Bannerslider_Helper_Data extends Mage_Core_Helper_Abstract
|
| 3 |
+
{
|
| 4 |
+
|
| 5 |
+
public function deleteImageFile($image) {
|
| 6 |
+
if (!$image) {
|
| 7 |
+
return;
|
| 8 |
+
}
|
| 9 |
+
$name = $this->reImageName($image);
|
| 10 |
+
$banner_image_path = Mage::getBaseDir() . '/media/bannerslider/' . $name;
|
| 11 |
+
if (!file_exists($banner_image_path)) {
|
| 12 |
+
return;
|
| 13 |
+
}
|
| 14 |
+
|
| 15 |
+
try {
|
| 16 |
+
unlink($banner_image_path);
|
| 17 |
+
} catch (Exception $exc) {
|
| 18 |
+
echo $exc->getTraceAsString();
|
| 19 |
+
}
|
| 20 |
+
}
|
| 21 |
+
|
| 22 |
+
public static function uploadBannerImage() {
|
| 23 |
+
$banner_image_path = Mage::getBaseDir() . '/media/bannerslider/';
|
| 24 |
+
$image = "";
|
| 25 |
+
$image_resolution = getimagesize($_FILES['image']['tmp_name']);
|
| 26 |
+
|
| 27 |
+
if($image_resolution['0'] != '640' && $image_resolution['1'] != '320'):
|
| 28 |
+
Mage::getSingleton('core/session')->addError('Banner Image resolution is incorrect, please upload image of resolution 640X320 px. ');
|
| 29 |
+
$image = false;
|
| 30 |
+
else:
|
| 31 |
+
if (isset($_FILES['image']['name']) && $_FILES['image']['name'] != '') {
|
| 32 |
+
try {
|
| 33 |
+
/* Starting upload */
|
| 34 |
+
$uploader = new Varien_File_Uploader('image');
|
| 35 |
+
|
| 36 |
+
// Any extention would work
|
| 37 |
+
$uploader->setAllowedExtensions(array('jpg', 'jpeg', 'gif', 'png'));
|
| 38 |
+
$uploader->setAllowRenameFiles(false);
|
| 39 |
+
|
| 40 |
+
$uploader->setFilesDispersion(true);
|
| 41 |
+
|
| 42 |
+
$uploader->save($banner_image_path, $_FILES['image']['name']);
|
| 43 |
+
|
| 44 |
+
} catch (Exception $e) {
|
| 45 |
+
|
| 46 |
+
}
|
| 47 |
+
|
| 48 |
+
$image = $_FILES['image']['name'];
|
| 49 |
+
}
|
| 50 |
+
endif;
|
| 51 |
+
return $image;
|
| 52 |
+
}
|
| 53 |
+
|
| 54 |
+
public function reImageName($imageName) {
|
| 55 |
+
|
| 56 |
+
$subname = substr($imageName, 0, 2);
|
| 57 |
+
$array = array();
|
| 58 |
+
$subDir1 = substr($subname, 0, 1);
|
| 59 |
+
$subDir2 = substr($subname, 1, 1);
|
| 60 |
+
$array[0] = $subDir1;
|
| 61 |
+
$array[1] = $subDir2;
|
| 62 |
+
$name = $array[0] . '/' . $array[1] . '/' . $imageName;
|
| 63 |
+
|
| 64 |
+
return strtolower($name);
|
| 65 |
+
}
|
| 66 |
+
}
|
| 67 |
+
|
app/code/local/Mss/Bannerslider/Model/Bannerslider.php
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class Mss_Bannerslider_Model_Bannerslider extends Mage_Core_Model_Abstract
|
| 4 |
+
{
|
| 5 |
+
protected function _construct(){
|
| 6 |
+
|
| 7 |
+
$this->_init("bannerslider/bannerslider");
|
| 8 |
+
|
| 9 |
+
}
|
| 10 |
+
|
| 11 |
+
}
|
| 12 |
+
|
app/code/local/Mss/Bannerslider/Model/Mysql4/Bannerslider.php
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
class Mss_Bannerslider_Model_Mysql4_Bannerslider extends Mage_Core_Model_Mysql4_Abstract
|
| 3 |
+
{
|
| 4 |
+
protected function _construct()
|
| 5 |
+
{
|
| 6 |
+
$this->_init("bannerslider/bannerslider", "banner_id");
|
| 7 |
+
}
|
| 8 |
+
}
|
app/code/local/Mss/Bannerslider/Model/Mysql4/Bannerslider/Collection.php
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
class Mss_Bannerslider_Model_Mysql4_Bannerslider_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
|
| 3 |
+
{
|
| 4 |
+
|
| 5 |
+
public function _construct(){
|
| 6 |
+
parent::_construct();
|
| 7 |
+
$this->_init("bannerslider/bannerslider");
|
| 8 |
+
}
|
| 9 |
+
|
| 10 |
+
|
| 11 |
+
|
| 12 |
+
}
|
| 13 |
+
|
app/code/local/Mss/Bannerslider/Model/Observer.php
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
class Mss_Bannerslider_Model_Observer
|
| 3 |
+
{
|
| 4 |
+
|
| 5 |
+
|
| 6 |
+
}
|
app/code/local/Mss/Bannerslider/controllers/Adminhtml/BannersliderController.php
ADDED
|
@@ -0,0 +1,203 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
|
| 4 |
+
class Mss_Bannerslider_Adminhtml_BannersliderController extends Mage_Adminhtml_Controller_Action {
|
| 5 |
+
|
| 6 |
+
/**
|
| 7 |
+
* init layout and set active for current menu
|
| 8 |
+
*
|
| 9 |
+
* @return Mss_Bannerslider_Adminhtml_BannersliderController
|
| 10 |
+
*/
|
| 11 |
+
protected function _initAction() {
|
| 12 |
+
$this->loadLayout()
|
| 13 |
+
->_setActiveMenu('bannerslider/bannerslider')
|
| 14 |
+
->_addBreadcrumb(Mage::helper('adminhtml')->__('Items Manager'), Mage::helper('adminhtml')->__('Item Manager'));
|
| 15 |
+
return $this;
|
| 16 |
+
}
|
| 17 |
+
|
| 18 |
+
/**
|
| 19 |
+
* index action
|
| 20 |
+
*/
|
| 21 |
+
public function indexAction() {
|
| 22 |
+
$this->_initAction()
|
| 23 |
+
->renderLayout();
|
| 24 |
+
}
|
| 25 |
+
|
| 26 |
+
/**
|
| 27 |
+
* view and edit item action
|
| 28 |
+
*/
|
| 29 |
+
public function editAction() {
|
| 30 |
+
$id = $this->getRequest()->getParam('id');
|
| 31 |
+
$store = $this->getRequest()->getParam('store');
|
| 32 |
+
$model = Mage::getModel('bannerslider/bannerslider')->setStoreId($store)->load($id);
|
| 33 |
+
|
| 34 |
+
if ($model->getId() || $id == 0) {
|
| 35 |
+
$data = Mage::getSingleton('adminhtml/session')->getFormData(true);
|
| 36 |
+
if (!empty($data))
|
| 37 |
+
$model->setData($data);
|
| 38 |
+
|
| 39 |
+
Mage::register('banner_data', $model);
|
| 40 |
+
|
| 41 |
+
$this->loadLayout();
|
| 42 |
+
$this->_setActiveMenu('bannerslider/bannerslider');
|
| 43 |
+
|
| 44 |
+
$this->_addBreadcrumb(Mage::helper('adminhtml')->__('Item Manager'), Mage::helper('adminhtml')->__('Item Manager'));
|
| 45 |
+
$this->_addBreadcrumb(Mage::helper('adminhtml')->__('Item News'), Mage::helper('adminhtml')->__('Item News'));
|
| 46 |
+
|
| 47 |
+
$this->getLayout()->getBlock('head')->setCanLoadExtJs(true);
|
| 48 |
+
$this->_addContent($this->getLayout()->createBlock('bannerslider/adminhtml_bannerslider_edit'))
|
| 49 |
+
->_addLeft($this->getLayout()->createBlock('bannerslider/adminhtml_bannerslider_edit_tabs'));
|
| 50 |
+
|
| 51 |
+
$this->renderLayout();
|
| 52 |
+
} else {
|
| 53 |
+
Mage::getSingleton('adminhtml/session')->addError(Mage::helper('bannerslider')->__('Item does not exist'));
|
| 54 |
+
$this->_redirect('*/*/');
|
| 55 |
+
}
|
| 56 |
+
}
|
| 57 |
+
|
| 58 |
+
public function newAction() {
|
| 59 |
+
$this->_forward('edit');
|
| 60 |
+
}
|
| 61 |
+
|
| 62 |
+
public function addinAction() {
|
| 63 |
+
$this->loadLayout();
|
| 64 |
+
$this->_setActiveMenu('bannerslider/bannerslider');
|
| 65 |
+
|
| 66 |
+
$this->_addBreadcrumb(Mage::helper('adminhtml')->__('Item Manager'), Mage::helper('adminhtml')->__('Item Manager'));
|
| 67 |
+
$this->_addBreadcrumb(Mage::helper('adminhtml')->__('Item News'), Mage::helper('adminhtml')->__('Item News'));
|
| 68 |
+
|
| 69 |
+
$this->getLayout()->getBlock('head')->setCanLoadExtJs(true);
|
| 70 |
+
|
| 71 |
+
$this->_addContent($this->getLayout()->createBlock('bannerslider/adminhtml_addbutton')->setTemplate('bannerslider/addbanner.phtml'));
|
| 72 |
+
|
| 73 |
+
$this->renderLayout();
|
| 74 |
+
}
|
| 75 |
+
|
| 76 |
+
/**
|
| 77 |
+
* save item action
|
| 78 |
+
*/
|
| 79 |
+
public function saveAction() {
|
| 80 |
+
if ($data = $this->getRequest()->getPost()) {
|
| 81 |
+
|
| 82 |
+
$model = Mage::getModel('bannerslider/bannerslider');
|
| 83 |
+
if (isset($data['image']['delete'])) {
|
| 84 |
+
Mage::helper('bannerslider')->deleteImageFile($data['image']['value']);
|
| 85 |
+
}
|
| 86 |
+
$image = Mage::helper('bannerslider')->uploadBannerImage();
|
| 87 |
+
|
| 88 |
+
if(!$image):
|
| 89 |
+
|
| 90 |
+
$this->_redirect('*/*/new', array('page_key' => 'collection'));
|
| 91 |
+
return;
|
| 92 |
+
endif;
|
| 93 |
+
|
| 94 |
+
if ($image || (isset($data['image']['delete']) && $data['image']['delete'])) {
|
| 95 |
+
$data['image'] = $image;
|
| 96 |
+
} else {
|
| 97 |
+
unset($data['image']);
|
| 98 |
+
}
|
| 99 |
+
|
| 100 |
+
$model->setOrderBanner("7");
|
| 101 |
+
$model->setData($data)
|
| 102 |
+
->setData('banner_id', $this->getRequest()->getParam('id'));
|
| 103 |
+
try {
|
| 104 |
+
|
| 105 |
+
|
| 106 |
+
$model->save();
|
| 107 |
+
Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('bannerslider')->__('Banner was successfully saved'));
|
| 108 |
+
Mage::getSingleton('adminhtml/session')->setFormData(false);
|
| 109 |
+
//Zend_debug::dump($this->getRequest()->getParam('slider'));die();
|
| 110 |
+
if($this->getRequest()->getParam('slider') == 'check'){
|
| 111 |
+
$this->_redirect('*/*/addin', array('id' => $model->getId()));
|
| 112 |
+
return;
|
| 113 |
+
}
|
| 114 |
+
if ($this->getRequest()->getParam('back')) {
|
| 115 |
+
$this->_redirect('*/*/edit', array('id' => $model->getId(), 'store' => $this->getRequest()->getParam("store")));
|
| 116 |
+
return;
|
| 117 |
+
}
|
| 118 |
+
$this->_redirect('*/*/');
|
| 119 |
+
return;
|
| 120 |
+
} catch (Exception $e) {
|
| 121 |
+
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
|
| 122 |
+
Mage::getSingleton('adminhtml/session')->setFormData($data);
|
| 123 |
+
$this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id')));
|
| 124 |
+
return;
|
| 125 |
+
}
|
| 126 |
+
}
|
| 127 |
+
Mage::getSingleton('adminhtml/session')->addError(Mage::helper('bannerslider')->__('Unable to find banner to save'));
|
| 128 |
+
$this->_redirect('*/*/');
|
| 129 |
+
}
|
| 130 |
+
|
| 131 |
+
/**
|
| 132 |
+
* delete item action
|
| 133 |
+
*/
|
| 134 |
+
public function deleteAction() {
|
| 135 |
+
if ($this->getRequest()->getParam('id') > 0) {
|
| 136 |
+
try {
|
| 137 |
+
$model = Mage::getModel('bannerslider/bannerslider');
|
| 138 |
+
$model->setId($this->getRequest()->getParam('id'))
|
| 139 |
+
->delete();
|
| 140 |
+
Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('adminhtml')->__('Banner was successfully deleted'));
|
| 141 |
+
$this->_redirect('*/*/');
|
| 142 |
+
} catch (Exception $e) {
|
| 143 |
+
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
|
| 144 |
+
$this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id'), 'store' => $this->getRequest()->getParam("store")));
|
| 145 |
+
}
|
| 146 |
+
}
|
| 147 |
+
$this->_redirect('*/*/');
|
| 148 |
+
}
|
| 149 |
+
|
| 150 |
+
/**
|
| 151 |
+
* mass delete item(s) action
|
| 152 |
+
*/
|
| 153 |
+
public function massDeleteAction() {
|
| 154 |
+
$bannersliderIds = $this->getRequest()->getParam('banner');
|
| 155 |
+
if (!is_array($bannersliderIds)) {
|
| 156 |
+
Mage::getSingleton('adminhtml/session')->addError(Mage::helper('adminhtml')->__('Please select item(s)'));
|
| 157 |
+
} else {
|
| 158 |
+
try {
|
| 159 |
+
foreach ($bannersliderIds as $bannersliderId) {
|
| 160 |
+
$bannerslider = Mage::getModel('bannerslider/bannerslider')->load($bannersliderId);
|
| 161 |
+
$bannerslider->delete();
|
| 162 |
+
}
|
| 163 |
+
Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('adminhtml')->__('Total of %d record(s) were successfully deleted', count($bannersliderIds)));
|
| 164 |
+
} catch (Exception $e) {
|
| 165 |
+
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
|
| 166 |
+
}
|
| 167 |
+
}
|
| 168 |
+
$this->_redirect('*/*/index', array('store' => $this->getRequest()->getParam("store")));
|
| 169 |
+
}
|
| 170 |
+
|
| 171 |
+
/**
|
| 172 |
+
* mass change status for item(s) action
|
| 173 |
+
*/
|
| 174 |
+
public function massStatusAction() {
|
| 175 |
+
$bannerIds = $this->getRequest()->getParam('banner');
|
| 176 |
+
if (!is_array($bannerIds)) {
|
| 177 |
+
Mage::getSingleton('adminhtml/session')->addError($this->__('Please select item(s)'));
|
| 178 |
+
} else {
|
| 179 |
+
try {
|
| 180 |
+
foreach ($bannerIds as $bannerId) {
|
| 181 |
+
$banner = Mage::getSingleton('bannerslider/bannerslider')
|
| 182 |
+
->load($bannerId)
|
| 183 |
+
->setStatus($this->getRequest()->getParam('status'))
|
| 184 |
+
->setIsMassupdate(true)
|
| 185 |
+
->save();
|
| 186 |
+
}
|
| 187 |
+
$this->_getSession()->addSuccess(
|
| 188 |
+
$this->__('Total of %d record(s) were successfully updated', count($bannerIds))
|
| 189 |
+
);
|
| 190 |
+
} catch (Exception $e) {
|
| 191 |
+
$this->_getSession()->addError($e->getMessage());
|
| 192 |
+
}
|
| 193 |
+
}
|
| 194 |
+
$this->_redirect('*/*/index', array('store' => $this->getRequest()->getParam("store")));
|
| 195 |
+
}
|
| 196 |
+
|
| 197 |
+
|
| 198 |
+
|
| 199 |
+
protected function _isAllowed() {
|
| 200 |
+
return Mage::getSingleton('admin/session')->isAllowed('banner');
|
| 201 |
+
}
|
| 202 |
+
|
| 203 |
+
}
|
app/code/local/Mss/Bannerslider/controllers/BannerController.php
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class Mss_Bannerslider_BannerController extends Mage_Core_Controller_Front_Action {
|
| 4 |
+
|
| 5 |
+
private $key = 'bannerslider';
|
| 6 |
+
private $store = '1';
|
| 7 |
+
|
| 8 |
+
public function _construct(){
|
| 9 |
+
|
| 10 |
+
header('content-type: application/json; charset=utf-8');
|
| 11 |
+
header("access-control-allow-origin: *");
|
| 12 |
+
|
| 13 |
+
Mage::helper('connector')->loadParent(Mage::app()->getFrontController()->getRequest()->getHeader('token'));
|
| 14 |
+
parent::_construct();
|
| 15 |
+
|
| 16 |
+
}
|
| 17 |
+
|
| 18 |
+
public function bannerAction(){
|
| 19 |
+
$bannerCollection = Mage::getModel('bannerslider/bannerslider')->getCollection();
|
| 20 |
+
$bannerCollection->addFieldToFilter( 'status', '1' );
|
| 21 |
+
|
| 22 |
+
/*check for cache*/
|
| 23 |
+
Mage::helper('connector')->checkcache($this->key,$this->store);
|
| 24 |
+
|
| 25 |
+
$alldata = array();
|
| 26 |
+
foreach($bannerCollection->getData() as $bannerdata){
|
| 27 |
+
|
| 28 |
+
|
| 29 |
+
$path = Mage::helper('bannerslider')->reImageName( $bannerdata['image']);
|
| 30 |
+
|
| 31 |
+
$imgeurl = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB).'media/bannerslider/'.$path;
|
| 32 |
+
|
| 33 |
+
$data['name'] = $bannerdata['name'];
|
| 34 |
+
|
| 35 |
+
$data['image_description'] = $bannerdata['image_alt'];
|
| 36 |
+
$data['image_url'] = $imgeurl;
|
| 37 |
+
$data['category_name'] = Mage::getModel('catalog/category')->load($bannerdata['category_id'])->getName();
|
| 38 |
+
$data['link_type'] = $bannerdata['url_type'];
|
| 39 |
+
$data['product_id'] = $bannerdata['product_id'];
|
| 40 |
+
$data['category_id'] = $bannerdata['category_id'];
|
| 41 |
+
|
| 42 |
+
$alldata[] = $data;
|
| 43 |
+
|
| 44 |
+
}
|
| 45 |
+
if(Mage::getStoreConfig('mss/connector/email') != '1'):
|
| 46 |
+
$event_data_array = array(true);
|
| 47 |
+
Mage::dispatchEvent('send_email_store_data', $event_data_array);
|
| 48 |
+
endif;
|
| 49 |
+
|
| 50 |
+
if(sizeof($alldata)):
|
| 51 |
+
/*create new cache*/
|
| 52 |
+
Mage::helper('connector')->createNewcache($this->key,$this->store,json_encode(array('status'=>'success','data'=>$alldata)));
|
| 53 |
+
echo json_encode(array('status'=>'success','data'=>$alldata));
|
| 54 |
+
exit;
|
| 55 |
+
else:
|
| 56 |
+
echo json_encode(array('status'=>'error','message'=>'No banner uploaded'));
|
| 57 |
+
endif;
|
| 58 |
+
}
|
| 59 |
+
}
|
| 60 |
+
|
| 61 |
+
?>
|
app/code/local/Mss/Bannerslider/etc/adminhtml.xml
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
|
| 3 |
+
<config>
|
| 4 |
+
<menu>
|
| 5 |
+
<connector>
|
| 6 |
+
<children>
|
| 7 |
+
<banner module="bannerslider" translate="title">
|
| 8 |
+
<title>Manage Banners</title>
|
| 9 |
+
<sort_order>2</sort_order>
|
| 10 |
+
<action>admin_bannerslider/adminhtml_bannerslider</action>
|
| 11 |
+
</banner>
|
| 12 |
+
</children>
|
| 13 |
+
</connector>
|
| 14 |
+
</menu>
|
| 15 |
+
</config>
|
app/code/local/Mss/Bannerslider/etc/config.xml
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<config>
|
| 3 |
+
<modules>
|
| 4 |
+
<Mss_Bannerslider>
|
| 5 |
+
<version>0.1.0</version>
|
| 6 |
+
</Mss_Bannerslider>
|
| 7 |
+
</modules>
|
| 8 |
+
|
| 9 |
+
<frontend>
|
| 10 |
+
<routers>
|
| 11 |
+
<bannerslider>
|
| 12 |
+
<use>standard</use>
|
| 13 |
+
<args>
|
| 14 |
+
<module>Mss_Bannerslider</module>
|
| 15 |
+
<frontName>bannerslider</frontName>
|
| 16 |
+
</args>
|
| 17 |
+
</bannerslider>
|
| 18 |
+
</routers>
|
| 19 |
+
</frontend>
|
| 20 |
+
|
| 21 |
+
<global>
|
| 22 |
+
<helpers>
|
| 23 |
+
<bannerslider>
|
| 24 |
+
<class>Mss_Bannerslider_Helper</class>
|
| 25 |
+
</bannerslider>
|
| 26 |
+
|
| 27 |
+
</helpers>
|
| 28 |
+
<blocks>
|
| 29 |
+
<bannerslider>
|
| 30 |
+
<class>Mss_Bannerslider_Block</class>
|
| 31 |
+
</bannerslider>
|
| 32 |
+
</blocks>
|
| 33 |
+
<models>
|
| 34 |
+
<bannerslider>
|
| 35 |
+
<class>Mss_Bannerslider_Model</class>
|
| 36 |
+
<resourceModel>bannerslider_mysql4</resourceModel>
|
| 37 |
+
</bannerslider>
|
| 38 |
+
<bannerslider_mysql4>
|
| 39 |
+
<class>Mss_Bannerslider_Model_Mysql4</class>
|
| 40 |
+
<entities>
|
| 41 |
+
<bannerslider>
|
| 42 |
+
<table>magentomobile_bannerslider</table>
|
| 43 |
+
</bannerslider>
|
| 44 |
+
</entities>
|
| 45 |
+
</bannerslider_mysql4>
|
| 46 |
+
</models>
|
| 47 |
+
<resources>
|
| 48 |
+
<bannerslider_setup>
|
| 49 |
+
<setup>
|
| 50 |
+
<module>Mss_Bannerslider</module>
|
| 51 |
+
</setup>
|
| 52 |
+
<connection>
|
| 53 |
+
<use>core_setup</use>
|
| 54 |
+
</connection>
|
| 55 |
+
</bannerslider_setup>
|
| 56 |
+
<bannerslider_write>
|
| 57 |
+
<connection>
|
| 58 |
+
<use>core_write</use>
|
| 59 |
+
</connection>
|
| 60 |
+
</bannerslider_write>
|
| 61 |
+
<bannerslider_read>
|
| 62 |
+
<connection>
|
| 63 |
+
<use>core_read</use>
|
| 64 |
+
</connection>
|
| 65 |
+
</bannerslider_read>
|
| 66 |
+
</resources>
|
| 67 |
+
|
| 68 |
+
</global>
|
| 69 |
+
<admin>
|
| 70 |
+
<routers>
|
| 71 |
+
<bannerslider>
|
| 72 |
+
<use>admin</use>
|
| 73 |
+
<args>
|
| 74 |
+
<module>Mss_Bannerslider</module>
|
| 75 |
+
<frontName>admin_bannerslider</frontName>
|
| 76 |
+
</args>
|
| 77 |
+
</bannerslider>
|
| 78 |
+
</routers>
|
| 79 |
+
</admin>
|
| 80 |
+
<adminhtml>
|
| 81 |
+
<layout>
|
| 82 |
+
<updates>
|
| 83 |
+
<bannerslider>
|
| 84 |
+
<file>bannerslider.xml</file>
|
| 85 |
+
</bannerslider>
|
| 86 |
+
</updates>
|
| 87 |
+
</layout>
|
| 88 |
+
</adminhtml>
|
| 89 |
+
</config>
|
app/code/local/Mss/Bannerslider/sql/bannerslider_setup/mysql4-install-0.1.0.php
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
$installer = $this;
|
| 3 |
+
$installer->startSetup();
|
| 4 |
+
$sql="CREATE TABLE {$this->getTable('magentomobile_bannerslider')} (
|
| 5 |
+
`banner_id` int(11) unsigned NOT NULL auto_increment,
|
| 6 |
+
`name` varchar(255) NOT NULL default '',
|
| 7 |
+
`order_banner` int(11) NULL default '0',
|
| 8 |
+
`status` smallint(6) NOT NULL default '0',
|
| 9 |
+
`url_type` varchar(20) NULL default '',
|
| 10 |
+
`product_id` int(11) NULL,
|
| 11 |
+
`category_id` int(11) NULL,
|
| 12 |
+
`image` varchar(255) NULL,
|
| 13 |
+
`image_alt` varchar(255) NULL,
|
| 14 |
+
|
| 15 |
+
PRIMARY KEY (`banner_id`)
|
| 16 |
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;";
|
| 17 |
+
|
| 18 |
+
$installer->run($sql);
|
| 19 |
+
|
| 20 |
+
$installer->endSetup();
|
| 21 |
+
|
app/code/local/Mss/Connector/Block/Adminhtml/Notifications.php
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
class Mss_Connector_Block_Adminhtml_Notifications extends Mage_Adminhtml_Block_Template
|
| 3 |
+
{
|
| 4 |
+
|
| 5 |
+
const XML_SECURE_KEY = 'magentomobileshop/secure/key';
|
| 6 |
+
const ACTIVATION_URL = 'https://www.magentomobileshop.com/mobile-connect';
|
| 7 |
+
const TRNS_EMAIL = 'trans_email/ident_general/email';
|
| 8 |
+
|
| 9 |
+
public function getMessage()
|
| 10 |
+
{
|
| 11 |
+
$href ='';
|
| 12 |
+
if(!Mage::getStoreConfig(self::XML_SECURE_KEY))
|
| 13 |
+
|
| 14 |
+
$href = '<strong class="label">Magentomobileshop</strong> extension is not activated yet, <a href="'.self::ACTIVATION_URL.'?email='.Mage::getStoreConfig(self::TRNS_EMAIL).'&url='.Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB)
|
| 15 |
+
.'" target="_blank">Click here</a> to activate your extension.';
|
| 16 |
+
|
| 17 |
+
return $href;
|
| 18 |
+
|
| 19 |
+
|
| 20 |
+
}
|
| 21 |
+
|
| 22 |
+
}
|
app/code/local/Mss/Connector/Block/System/Config/About.php
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class Mss_Connector_Block_System_Config_About
|
| 4 |
+
extends Mage_Adminhtml_Block_Abstract
|
| 5 |
+
implements Varien_Data_Form_Element_Renderer_Interface
|
| 6 |
+
{
|
| 7 |
+
|
| 8 |
+
|
| 9 |
+
public function render(Varien_Data_Form_Element_Abstract $element)
|
| 10 |
+
{
|
| 11 |
+
$html = file_get_contents('http://magentomobileshop.com/wp-content/magentomobiledata/about_us.html');
|
| 12 |
+
return $html;
|
| 13 |
+
}
|
| 14 |
+
}
|
app/code/local/Mss/Connector/Block/System/Config/Authorizenet.php
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class Mss_Connector_Block_System_Config_Authorizenet
|
| 4 |
+
extends Mage_Adminhtml_Block_Abstract
|
| 5 |
+
implements Varien_Data_Form_Element_Renderer_Interface
|
| 6 |
+
{
|
| 7 |
+
public function render(Varien_Data_Form_Element_Abstract $element)
|
| 8 |
+
{
|
| 9 |
+
$html = '';
|
| 10 |
+
if(!Mage::getStoreConfig('payment/authorizenet/active')):
|
| 11 |
+
$html = "<div id='messages'><ul class='messages'><li class='error-msg'>Authorizenet Payment method is Disabled, Kindly Enable the Authorize.net Payment method to make it work with mobile app.<span></span></li></ul></div>";
|
| 12 |
+
endif;
|
| 13 |
+
return $html;
|
| 14 |
+
}
|
| 15 |
+
}
|
app/code/local/Mss/Connector/Block/System/Config/Banktransfer.php
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class Mss_Connector_Block_System_Config_Banktransfer
|
| 4 |
+
extends Mage_Adminhtml_Block_Abstract
|
| 5 |
+
implements Varien_Data_Form_Element_Renderer_Interface
|
| 6 |
+
{
|
| 7 |
+
public function render(Varien_Data_Form_Element_Abstract $element)
|
| 8 |
+
{
|
| 9 |
+
$html = '';
|
| 10 |
+
if(!Mage::getStoreConfig('payment/banktransfer/active')):
|
| 11 |
+
$html = "<div id='messages'><ul class='messages'><li class='error-msg'>Bank Transfer Payment method is Disabled, Kindly Enable the Bank Transfer Payment method to make it work with mobile app.<span></span></li></ul></div>";
|
| 12 |
+
endif;
|
| 13 |
+
return $html;
|
| 14 |
+
}
|
| 15 |
+
}
|
app/code/local/Mss/Connector/Block/System/Config/Checkmo.php
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class Mss_Connector_Block_System_Config_Checkmo
|
| 4 |
+
extends Mage_Adminhtml_Block_Abstract
|
| 5 |
+
implements Varien_Data_Form_Element_Renderer_Interface
|
| 6 |
+
{
|
| 7 |
+
public function render(Varien_Data_Form_Element_Abstract $element)
|
| 8 |
+
{
|
| 9 |
+
$html = '';
|
| 10 |
+
if(!Mage::getStoreConfig('payment/checkmo/active')):
|
| 11 |
+
$html = "<div id='messages'><ul class='messages'><li class='error-msg'>Check / Money Order method is Disabled, Kindly Enable the Check / Money Order method to make it work with mobile app.<span></span></li></ul></div>";
|
| 12 |
+
endif;
|
| 13 |
+
return $html;
|
| 14 |
+
}
|
| 15 |
+
}
|
app/code/local/Mss/Connector/Block/System/Config/Cod.php
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class Mss_Connector_Block_System_Config_Cod
|
| 4 |
+
extends Mage_Adminhtml_Block_Abstract
|
| 5 |
+
implements Varien_Data_Form_Element_Renderer_Interface
|
| 6 |
+
{
|
| 7 |
+
public function render(Varien_Data_Form_Element_Abstract $element)
|
| 8 |
+
{
|
| 9 |
+
$html = '';
|
| 10 |
+
if(!Mage::getStoreConfig('payment/cashondelivery/active')):
|
| 11 |
+
$html = "<div id='messages'><ul class='messages'><li class='error-msg'>Cashondelivery method is Disabled, Kindly Enable the cashondelivery Payment method to make it work with mobile app.<span></span></li></ul></div>";
|
| 12 |
+
endif;
|
| 13 |
+
return $html;
|
| 14 |
+
}
|
| 15 |
+
}
|
app/code/local/Mss/Connector/Block/System/Config/Mpaypal.php
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class Mss_Connector_Block_System_Config_Mpaypal
|
| 4 |
+
extends Mage_Adminhtml_Block_Abstract
|
| 5 |
+
implements Varien_Data_Form_Element_Renderer_Interface
|
| 6 |
+
{
|
| 7 |
+
public function render(Varien_Data_Form_Element_Abstract $element)
|
| 8 |
+
{
|
| 9 |
+
$html = '';
|
| 10 |
+
|
| 11 |
+
if(!Mage::getStoreConfig('payment/mpaypal/active')):
|
| 12 |
+
$html = "<div id='messages'><ul class='messages'><li class='error-msg'>PayPal (app) is Disabled, Kindly Enable the PayPal (app) to make it work with mobile app.<span></span></li></ul></div>";
|
| 13 |
+
endif;
|
| 14 |
+
return $html;
|
| 15 |
+
}
|
| 16 |
+
}
|
app/code/local/Mss/Connector/Block/System/Config/Payu.php
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class Mss_Connector_Block_System_Config_Payu
|
| 4 |
+
extends Mage_Adminhtml_Block_Abstract
|
| 5 |
+
implements Varien_Data_Form_Element_Renderer_Interface
|
| 6 |
+
{
|
| 7 |
+
public function render(Varien_Data_Form_Element_Abstract $element)
|
| 8 |
+
{
|
| 9 |
+
$html = '';
|
| 10 |
+
if(Mage::getStoreConfig('payment/payucheckout_shared/active') == ''):
|
| 11 |
+
$html = "<div id='messages'><ul class='messages'><li class='error-msg'>PayU extension is missing, Kindly install the PayU extension to make it work with mobile app.<span> <a href='https://github.com/PayU/plugin_magento/archive/master.zip'>Download Extension </a></span></li></ul></div>";
|
| 12 |
+
endif;
|
| 13 |
+
|
| 14 |
+
if(!Mage::getStoreConfig('payment/payucheckout_shared/active')):
|
| 15 |
+
$html = "<div id='messages'><ul class='messages'><li class='error-msg'>PayU extension is Disabled, Kindly Enable the PayU extension to make it work with mobile app.<span></span></li></ul></div>";
|
| 16 |
+
endif;
|
| 17 |
+
return $html;
|
| 18 |
+
}
|
| 19 |
+
}
|
app/code/local/Mss/Connector/Helper/Data.php
ADDED
|
@@ -0,0 +1,197 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
class Mss_Connector_Helper_Data extends Mage_Core_Helper_Abstract
|
| 3 |
+
{
|
| 4 |
+
|
| 5 |
+
/*resize image according to size*/
|
| 6 |
+
|
| 7 |
+
public function Imageresize($_file_name,$type,$width,$height){
|
| 8 |
+
try{
|
| 9 |
+
|
| 10 |
+
$_media_dir = Mage::getBaseDir('media') . DS . 'catalog' . DS . $type ;
|
| 11 |
+
$cache_dir = $_media_dir . DS. 'cache' . DS;
|
| 12 |
+
|
| 13 |
+
|
| 14 |
+
if (file_exists($cache_dir . $_file_name)):
|
| 15 |
+
$real_path = Mage::getBaseUrl('media') . 'catalog' . DS . $type . DS . 'cache' . $_file_name;
|
| 16 |
+
// elseif (file_exists($_media_dir . $_file_name)):
|
| 17 |
+
else:
|
| 18 |
+
if (!is_dir(Mage::getBaseDir('media') . DS . 'catalog' . DS . $type))
|
| 19 |
+
mkdir(Mage::getBaseDir('media') . DS . 'catalog' . DS . $type,0777);
|
| 20 |
+
|
| 21 |
+
if (!is_dir($cache_dir))
|
| 22 |
+
mkdir($cache_dir,0777);
|
| 23 |
+
endif;
|
| 24 |
+
|
| 25 |
+
if($type == 'thumbnail'):
|
| 26 |
+
$_media_dir = Mage::getBaseDir('media') . DS . 'catalog' . DS . 'product' ;
|
| 27 |
+
endif;
|
| 28 |
+
|
| 29 |
+
$_image = new Varien_Image($_media_dir . $_file_name);
|
| 30 |
+
|
| 31 |
+
$_image->constrainOnly(true);
|
| 32 |
+
$_image->keepAspectRatio(true);
|
| 33 |
+
$_image->backgroundColor(array(255,255,255));
|
| 34 |
+
$_image->keepFrame(true);
|
| 35 |
+
$_image->resize($width, $height);
|
| 36 |
+
$_image->save($cache_dir . $_file_name);
|
| 37 |
+
|
| 38 |
+
return Mage::getBaseUrl('media') . 'catalog' . DS . $type . DS . 'cache' . $_file_name;
|
| 39 |
+
}
|
| 40 |
+
catch(exception $e){
|
| 41 |
+
|
| 42 |
+
return Mage::getBaseUrl('media') . 'catalog' . DS . $type .$_file_name;
|
| 43 |
+
}
|
| 44 |
+
}
|
| 45 |
+
|
| 46 |
+
/*check cache according to request*/
|
| 47 |
+
|
| 48 |
+
public function checkcache($key,$store = 1){
|
| 49 |
+
try{
|
| 50 |
+
$cache = Mage::app()->getCache();
|
| 51 |
+
$cache_key = "mss_".$key."_store".$store;
|
| 52 |
+
|
| 53 |
+
if($cache->load($cache_key)):
|
| 54 |
+
|
| 55 |
+
echo $cache->load($cache_key);
|
| 56 |
+
exit;
|
| 57 |
+
endif;
|
| 58 |
+
return false;
|
| 59 |
+
}
|
| 60 |
+
catch(exception $e){
|
| 61 |
+
return false;
|
| 62 |
+
}
|
| 63 |
+
|
| 64 |
+
|
| 65 |
+
}
|
| 66 |
+
|
| 67 |
+
/*create cache according to request*/
|
| 68 |
+
public function createNewcache($key,$store = 1,$data){
|
| 69 |
+
|
| 70 |
+
try{
|
| 71 |
+
$CACHE_EXPIRY = 300;
|
| 72 |
+
$cache = Mage::app()->getCache();
|
| 73 |
+
$cache_key = "mss_".$key."_store".$store;
|
| 74 |
+
|
| 75 |
+
$cache->save($data, $cache_key, array("mss"), $CACHE_EXPIRY);
|
| 76 |
+
return true;
|
| 77 |
+
}
|
| 78 |
+
catch(exception $e){
|
| 79 |
+
return false;
|
| 80 |
+
}
|
| 81 |
+
}
|
| 82 |
+
|
| 83 |
+
public function loadParent($helper){
|
| 84 |
+
|
| 85 |
+
if(Mage::helper('connector')->compareExp() > 24):
|
| 86 |
+
echo json_encode(array('status'=>'error','code'=>'001'));
|
| 87 |
+
exit;
|
| 88 |
+
endif;
|
| 89 |
+
|
| 90 |
+
if(Mage::getStoreConfig('magentomobileshop/secure/token') != $helper):
|
| 91 |
+
echo json_encode(array('status'=>'error','code'=>'002'));
|
| 92 |
+
exit;
|
| 93 |
+
endif;
|
| 94 |
+
if(!Mage::getStoreConfig('magentomobileshop/key/status')):
|
| 95 |
+
echo json_encode(array('status'=>'error','code'=>'003'));
|
| 96 |
+
exit;
|
| 97 |
+
endif;
|
| 98 |
+
|
| 99 |
+
if(Mage::helper('connector')->compareExp() > 24 ||
|
| 100 |
+
Mage::getStoreConfig('magentomobileshop/secure/token') != isset($helper)
|
| 101 |
+
|| !Mage::getStoreConfig('magentomobileshop/key/status') || !$helper):
|
| 102 |
+
echo json_encode(array('status'=>'error','code'=>'004'));
|
| 103 |
+
exit;
|
| 104 |
+
endif;
|
| 105 |
+
}
|
| 106 |
+
|
| 107 |
+
|
| 108 |
+
public function compareExp(){
|
| 109 |
+
$saved_session = strtotime(Mage::getStoreConfig('secure/token/exp'));
|
| 110 |
+
$current_session = strtotime(Mage::getModel('core/date')->date('Y-m-d H:i:s'));
|
| 111 |
+
return round(($current_session - $saved_session) / 3600);
|
| 112 |
+
}
|
| 113 |
+
|
| 114 |
+
// Functionality to check product is in wishlist or not
|
| 115 |
+
|
| 116 |
+
public function check_wishlist($productId){
|
| 117 |
+
|
| 118 |
+
$customer = Mage::getSingleton("customer/session");
|
| 119 |
+
|
| 120 |
+
if($customer->isLoggedIn()):
|
| 121 |
+
|
| 122 |
+
$wishlist = Mage::getModel('wishlist/wishlist')->loadByCustomer($customer->getId(), true);
|
| 123 |
+
$wishListItemCollection = $wishlist->getItemCollection();
|
| 124 |
+
$wishlist_product_id = array();
|
| 125 |
+
foreach ($wishListItemCollection as $item){
|
| 126 |
+
|
| 127 |
+
$wishlist_product_id[]= $item->getProductId();
|
| 128 |
+
}
|
| 129 |
+
if(in_array($productId, $wishlist_product_id))
|
| 130 |
+
return true;
|
| 131 |
+
else
|
| 132 |
+
return false;
|
| 133 |
+
|
| 134 |
+
else:
|
| 135 |
+
return false;
|
| 136 |
+
endif;
|
| 137 |
+
}
|
| 138 |
+
|
| 139 |
+
public function saveCc($data){
|
| 140 |
+
|
| 141 |
+
$data['user_id'] = Mage::getSingleton("customer/session")->getId();
|
| 142 |
+
|
| 143 |
+
$collection = Mage::getModel("connector/connector");
|
| 144 |
+
try{
|
| 145 |
+
$collection->setData($data)->save();
|
| 146 |
+
return true;
|
| 147 |
+
}
|
| 148 |
+
catch(Exception $e){
|
| 149 |
+
Mage::throwException(Mage::helper('payment')->__('Error in saving card.'));
|
| 150 |
+
}
|
| 151 |
+
|
| 152 |
+
return true;
|
| 153 |
+
}
|
| 154 |
+
|
| 155 |
+
public function reigesterGuestUser($userdata){
|
| 156 |
+
|
| 157 |
+
|
| 158 |
+
$customer = Mage::getModel("customer/customer");
|
| 159 |
+
$customer->setWebsiteId(Mage::app()->getWebsite()->getId());
|
| 160 |
+
$load_pre = $customer->loadByEmail($userdata['email']);
|
| 161 |
+
|
| 162 |
+
if($load_pre->getId())
|
| 163 |
+
return $load_pre->getId();
|
| 164 |
+
|
| 165 |
+
$customer = $customer->setId(null);
|
| 166 |
+
|
| 167 |
+
$customer->setData('email',$userdata['email']);
|
| 168 |
+
$customer->setData('firstname',$userdata['firstname']);
|
| 169 |
+
$customer->setData('lastname',$userdata['lastname']);
|
| 170 |
+
$customer->setData('password',$this->radPassoword());
|
| 171 |
+
|
| 172 |
+
try{
|
| 173 |
+
$customer->setConfirmation(null);
|
| 174 |
+
$customer->save();
|
| 175 |
+
$customer->sendNewAccountEmail ('registered','', Mage::app ()->getStore ()->getId ());
|
| 176 |
+
return $customer->getId();
|
| 177 |
+
|
| 178 |
+
}
|
| 179 |
+
catch(Exception $ex){
|
| 180 |
+
echo json_encode(array('status'=>'error','message'=>$ex->getMessage()));
|
| 181 |
+
exit;
|
| 182 |
+
}
|
| 183 |
+
|
| 184 |
+
}
|
| 185 |
+
|
| 186 |
+
private function radPassoword()
|
| 187 |
+
{
|
| 188 |
+
return substr(str_shuffle(str_repeat('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', mt_rand(1,6))),1,6);
|
| 189 |
+
}
|
| 190 |
+
|
| 191 |
+
public function getProductStockInfoById($productId){
|
| 192 |
+
|
| 193 |
+
$stock_product = Mage::getModel('cataloginventory/stock_item')->loadByProduct($productId);
|
| 194 |
+
$stock_data = $stock_product->getIsInStock();
|
| 195 |
+
return $stock_data;
|
| 196 |
+
}
|
| 197 |
+
}
|
app/code/local/Mss/Connector/Model/Connector.php
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
class Mss_Connector_Model_Connector extends Mage_Core_Model_Abstract
|
| 3 |
+
{
|
| 4 |
+
protected function _construct(){
|
| 5 |
+
|
| 6 |
+
$this->_init("connector/connector");
|
| 7 |
+
|
| 8 |
+
}
|
| 9 |
+
}
|
| 10 |
+
?>
|
app/code/local/Mss/Connector/Model/Mysql4/Connector.php
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class Mss_Connector_Model_Mysql4_Connector extends Mage_Core_Model_Mysql4_Abstract
|
| 4 |
+
{
|
| 5 |
+
public function _construct()
|
| 6 |
+
{
|
| 7 |
+
// Note that the web_id refers to the key field in your database table.
|
| 8 |
+
$this->_init('connector/connector','id');
|
| 9 |
+
}
|
| 10 |
+
}
|
app/code/local/Mss/Connector/Model/Mysql4/Connector/Collection.php
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class Mss_Connector_Model_Mysql4_Connector_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
|
| 4 |
+
{
|
| 5 |
+
public function _construct()
|
| 6 |
+
{
|
| 7 |
+
parent::_construct();
|
| 8 |
+
$this->_init('connector/connector');
|
| 9 |
+
}
|
| 10 |
+
}
|
app/code/local/Mss/Connector/Model/Observer.php
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
class Mss_Connector_Model_Observer
|
| 3 |
+
{
|
| 4 |
+
const XML_SECURE_KEY = 'magentomobileshop/secure/key';
|
| 5 |
+
const ACTIVATION_URL = 'https://www.magentomobileshop.com/mobile-connect';
|
| 6 |
+
const TRNS_EMAIL = 'trans_email/ident_general/email';
|
| 7 |
+
|
| 8 |
+
public function notificationMessage()
|
| 9 |
+
{
|
| 10 |
+
$adminsession = Mage::getSingleton('admin/session', array('name'=>'adminhtml'));
|
| 11 |
+
|
| 12 |
+
if(!Mage::getStoreConfig(self::XML_SECURE_KEY) AND $adminsession->isLoggedIn()):
|
| 13 |
+
|
| 14 |
+
$href = self::ACTIVATION_URL.'?email='.Mage::getStoreConfig(self::TRNS_EMAIL).'&url='.Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
|
| 15 |
+
|
| 16 |
+
Mage::getSingleton('core/session')->addError('Magentomobileshop extension is not activated yet, <a href="'.$href.'" target="_blank">Click here</a> to activate your extension.');
|
| 17 |
+
|
| 18 |
+
endif;
|
| 19 |
+
|
| 20 |
+
$configValue = Mage::getStoreConfig('mss/connector/email');
|
| 21 |
+
|
| 22 |
+
if($configValue =='' AND $adminsession->isLoggedIn())
|
| 23 |
+
$this->sendemail();
|
| 24 |
+
|
| 25 |
+
|
| 26 |
+
|
| 27 |
+
}
|
| 28 |
+
|
| 29 |
+
public function sendemail(){
|
| 30 |
+
|
| 31 |
+
|
| 32 |
+
$current_store_url = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);;
|
| 33 |
+
$current_store_name = Mage::getStoreConfig('general/store_information/name');
|
| 34 |
+
$current_store_phone =Mage::getStoreConfig('general/store_information/phone');
|
| 35 |
+
$current_store_address = Mage::getStoreConfig('general/store_information/address');
|
| 36 |
+
$current_store_email = Mage::getStoreConfig('trans_email/ident_general/email');
|
| 37 |
+
$message = <<<MESSAGE
|
| 38 |
+
Hello
|
| 39 |
+
My Store name is : $current_store_name
|
| 40 |
+
My Store URl is : $current_store_url
|
| 41 |
+
My Store Contact Number is : $current_store_phone
|
| 42 |
+
My Store Address is : $current_store_address
|
| 43 |
+
My Store Email is : $current_store_email
|
| 44 |
+
Thank you,
|
| 45 |
+
MagentoMobileshop Dev Tem
|
| 46 |
+
MESSAGE;
|
| 47 |
+
|
| 48 |
+
|
| 49 |
+
$to = "contact@magentomobileshop.com";
|
| 50 |
+
|
| 51 |
+
$subject = "New Connector Installation ";
|
| 52 |
+
$headers = "MIME-Version: 1.0" . "\r\n";
|
| 53 |
+
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
|
| 54 |
+
$headers .= 'From: <contact@magentomobileshop.com>' . "\r\n";
|
| 55 |
+
$headers .= 'Cc: mss.yogendra@gmail.com' . "\r\n";
|
| 56 |
+
$email = mail($to,$subject,$message,$headers);
|
| 57 |
+
|
| 58 |
+
if($email):
|
| 59 |
+
$mssSwitch = new Mage_Core_Model_Config();
|
| 60 |
+
$mssSwitch ->saveConfig('mss/connector/email', 1);
|
| 61 |
+
endif;
|
| 62 |
+
|
| 63 |
+
return true;
|
| 64 |
+
|
| 65 |
+
}
|
| 66 |
+
|
| 67 |
+
}
|
app/code/local/Mss/Connector/controllers/CartController.php
ADDED
|
@@ -0,0 +1,1394 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
class Mss_Connector_CartController extends Mage_Core_Controller_Front_Action {
|
| 3 |
+
|
| 4 |
+
public $errors = '';
|
| 5 |
+
public $cc_type ='';
|
| 6 |
+
public $cc_number = '';
|
| 7 |
+
public $cc_month = '';
|
| 8 |
+
public $cc_year = '';
|
| 9 |
+
public $cc_cid ='';
|
| 10 |
+
|
| 11 |
+
public function _construct(){
|
| 12 |
+
|
| 13 |
+
header('content-type: application/json; charset=utf-8');
|
| 14 |
+
header("access-control-allow-origin: *");
|
| 15 |
+
Mage::helper('connector')->loadParent(Mage::app()->getFrontController()->getRequest()->getHeader('token'));
|
| 16 |
+
parent::_construct();
|
| 17 |
+
|
| 18 |
+
}
|
| 19 |
+
public function getaddurlAction() {
|
| 20 |
+
$productid = $this->getRequest ()->getParam ( 'productid' );
|
| 21 |
+
$product = Mage::getModel ( "catalog/product" )->load ( $productid );
|
| 22 |
+
$url = Mage::helper ( 'checkout/cart' )->getAddUrl ( $product );
|
| 23 |
+
echo "{'url':'" . $url . "'}";
|
| 24 |
+
$cart = Mage::helper ( 'checkout/cart' )->getCart ();
|
| 25 |
+
$item_qty = $cart->getItemsQty ();
|
| 26 |
+
echo "{'item_qty':'" . $item_qty . "'}";
|
| 27 |
+
$summarycount = $cart->getSummaryCount ();
|
| 28 |
+
echo "{'summarycount':'" . $summarycount . "'}";
|
| 29 |
+
}
|
| 30 |
+
|
| 31 |
+
public function getMinimumorderAction(){
|
| 32 |
+
|
| 33 |
+
$cart_data = json_decode($this->getRequest ()->getParam('cart_data'),1);
|
| 34 |
+
|
| 35 |
+
|
| 36 |
+
if(!sizeof($cart_data)):
|
| 37 |
+
echo json_encode(array('status'=>'error','message'=> 'Nothing to add in cart, cart is empty.'));
|
| 38 |
+
exit;
|
| 39 |
+
endif;
|
| 40 |
+
|
| 41 |
+
$cart = Mage::helper ( 'checkout/cart' )->getCart ();
|
| 42 |
+
$cart->truncate();
|
| 43 |
+
|
| 44 |
+
|
| 45 |
+
$session = Mage::getSingleton ( 'core/session', array (
|
| 46 |
+
'name' => 'frontend'
|
| 47 |
+
) );
|
| 48 |
+
|
| 49 |
+
foreach($cart_data as $params):
|
| 50 |
+
|
| 51 |
+
|
| 52 |
+
try {
|
| 53 |
+
|
| 54 |
+
|
| 55 |
+
$product = Mage::getModel ('catalog/product')->load ($params['product']);
|
| 56 |
+
|
| 57 |
+
if ($product->getData('has_options')):
|
| 58 |
+
# validate options
|
| 59 |
+
$options=$params['options'];
|
| 60 |
+
if(count($options)>0):
|
| 61 |
+
$params['options']=$options;
|
| 62 |
+
endif;
|
| 63 |
+
endif;
|
| 64 |
+
|
| 65 |
+
if (isset ($params ['super_attribute'] )) :
|
| 66 |
+
|
| 67 |
+
if(isset($params['options'])):
|
| 68 |
+
$data = array("product"=>$params['product'],"options"=>$params['options'],"super_attribute"=>$params['super_attribute'],
|
| 69 |
+
'qty' => $params['qty']
|
| 70 |
+
);
|
| 71 |
+
else:
|
| 72 |
+
$data = array("product"=>$params ['product'],"super_attribute"=>$params['super_attribute'],
|
| 73 |
+
'qty' => $params['qty']
|
| 74 |
+
);
|
| 75 |
+
endif;
|
| 76 |
+
$cart->addProduct ( $product, $data );
|
| 77 |
+
else:
|
| 78 |
+
|
| 79 |
+
$cart->addProduct ( $product, $params );
|
| 80 |
+
endif;
|
| 81 |
+
$session->setLastAddedProductId ( $product->getId () );
|
| 82 |
+
|
| 83 |
+
|
| 84 |
+
|
| 85 |
+
} catch ( Exception $e ) {
|
| 86 |
+
|
| 87 |
+
|
| 88 |
+
$result = '{"status":"error"';
|
| 89 |
+
$result .= ', "message": "' . str_replace("\"","||",$e->getMessage ()) . '"}';
|
| 90 |
+
echo $result;
|
| 91 |
+
exit;
|
| 92 |
+
|
| 93 |
+
}
|
| 94 |
+
|
| 95 |
+
|
| 96 |
+
endforeach;
|
| 97 |
+
$session->setCartWasUpdated ( true );
|
| 98 |
+
$cart->save ();
|
| 99 |
+
|
| 100 |
+
|
| 101 |
+
|
| 102 |
+
|
| 103 |
+
if(Mage::getStoreConfig('sales/minimum_order/active')):
|
| 104 |
+
$check_grand_total = Mage::helper('checkout/cart')->getQuote()->getBaseSubtotalWithDiscount();
|
| 105 |
+
|
| 106 |
+
$amount = Mage::getStoreConfig('sales/minimum_order/amount');
|
| 107 |
+
if ($check_grand_total < $amount):
|
| 108 |
+
$message = Mage::getStoreConfig('sales/minimum_order/error_message');
|
| 109 |
+
if(!$message) $message = 'Minimum Order Limit is '.$amount;
|
| 110 |
+
echo json_encode(array('status'=>'error','message'=> $message));
|
| 111 |
+
exit;
|
| 112 |
+
endif;
|
| 113 |
+
|
| 114 |
+
endif;
|
| 115 |
+
echo json_encode(array('status'=>'success','message'=> 'true'));
|
| 116 |
+
exit;
|
| 117 |
+
|
| 118 |
+
}
|
| 119 |
+
|
| 120 |
+
|
| 121 |
+
public function updateCartAction()
|
| 122 |
+
{
|
| 123 |
+
|
| 124 |
+
$cart_data = json_decode($this->getRequest ()->getParam('cart_data'),1);
|
| 125 |
+
|
| 126 |
+
|
| 127 |
+
foreach($cart_data as $itemId => $qty):
|
| 128 |
+
|
| 129 |
+
$itemId=(int)$itemId;
|
| 130 |
+
$qty = (int)$qty;
|
| 131 |
+
$oldQty = 0;
|
| 132 |
+
$item = null;
|
| 133 |
+
|
| 134 |
+
try {
|
| 135 |
+
if ($itemId):
|
| 136 |
+
$cartData = array ();
|
| 137 |
+
|
| 138 |
+
$cartHelper = Mage::helper('checkout/cart');
|
| 139 |
+
$items = $cartHelper->getCart()->getItems();
|
| 140 |
+
|
| 141 |
+
foreach($items as $item):
|
| 142 |
+
if($item->getProduct()->getId() == $itemId):
|
| 143 |
+
$itemId = $item->getItemId();
|
| 144 |
+
$cartHelper->getCart()->removeItem($itemId)->save();
|
| 145 |
+
break;
|
| 146 |
+
endif;
|
| 147 |
+
endforeach;
|
| 148 |
+
|
| 149 |
+
endif;
|
| 150 |
+
|
| 151 |
+
|
| 152 |
+
}
|
| 153 |
+
catch ( Mage_Core_Exception $e ) {
|
| 154 |
+
echo json_encode (array('status'=>'error','message'=> $e->getMessage ()) );
|
| 155 |
+
exit;
|
| 156 |
+
}
|
| 157 |
+
endforeach;
|
| 158 |
+
echo json_encode(array('status'=>'success','message'=> 'true'));
|
| 159 |
+
exit;
|
| 160 |
+
}
|
| 161 |
+
public function clearcartAction()
|
| 162 |
+
{
|
| 163 |
+
|
| 164 |
+
$cart = Mage::helper ( 'checkout/cart' )->getCart ();
|
| 165 |
+
if($cart->getQuote ()->getItemsCount ()){
|
| 166 |
+
Mage::getSingleton('checkout/cart')->truncate()->save();
|
| 167 |
+
}
|
| 168 |
+
Mage::getSingleton('checkout/session')->clear();
|
| 169 |
+
|
| 170 |
+
|
| 171 |
+
$result = '{"result":"success"';
|
| 172 |
+
$result .= ', "message": "' . 'cart is empty!' . '"}';
|
| 173 |
+
echo $result;
|
| 174 |
+
|
| 175 |
+
|
| 176 |
+
}
|
| 177 |
+
|
| 178 |
+
# Add to cart product start
|
| 179 |
+
public function addAction() {
|
| 180 |
+
try {
|
| 181 |
+
|
| 182 |
+
$product_id = $this->getRequest ()->getParam ( 'product' );
|
| 183 |
+
|
| 184 |
+
$params = $this->getRequest ()->getParams ();
|
| 185 |
+
|
| 186 |
+
if (isset ( $params ['qty'] )) {
|
| 187 |
+
$filter = new Zend_Filter_LocalizedToNormalized ( array (
|
| 188 |
+
'locale' => Mage::app ()->getLocale ()->getLocaleCode ()
|
| 189 |
+
) );
|
| 190 |
+
$params ['qty'] = $filter->filter ( $params ['qty'] );
|
| 191 |
+
} else if ($product_id == '') {
|
| 192 |
+
$session->addError ( "Product Not Added
|
| 193 |
+
The SKU you entered ($sku) was not found." );
|
| 194 |
+
}
|
| 195 |
+
$request = Mage::app ()->getRequest ();
|
| 196 |
+
$product = Mage::getModel ( 'catalog/product' )->load ( $product_id );
|
| 197 |
+
|
| 198 |
+
if ($product->getData('has_options')):
|
| 199 |
+
# validate options
|
| 200 |
+
$options=json_decode($params['options'],true);
|
| 201 |
+
if(count($options)>0):
|
| 202 |
+
$params['options']=$options;
|
| 203 |
+
endif;
|
| 204 |
+
endif;
|
| 205 |
+
|
| 206 |
+
$session = Mage::getSingleton ( 'core/session', array (
|
| 207 |
+
'name' => 'frontend'
|
| 208 |
+
) );
|
| 209 |
+
$cart = Mage::helper ( 'checkout/cart' )->getCart ();
|
| 210 |
+
|
| 211 |
+
|
| 212 |
+
if (isset ( $params ['super_attribute'] )) :
|
| 213 |
+
|
| 214 |
+
if(isset($params['options'])):
|
| 215 |
+
$params = array("product"=>$params ['product'],"options"=>$params['options'],"super_attribute"=>json_decode($params ['super_attribute'],1),
|
| 216 |
+
'qty' => $params ['qty']
|
| 217 |
+
);
|
| 218 |
+
else:
|
| 219 |
+
$params = array("product"=>$params ['product'],"super_attribute"=>json_decode($params ['super_attribute'],1),
|
| 220 |
+
'qty' => $params ['qty']
|
| 221 |
+
);
|
| 222 |
+
endif;
|
| 223 |
+
|
| 224 |
+
$cart->addProduct ( $product,$params);
|
| 225 |
+
|
| 226 |
+
else:
|
| 227 |
+
|
| 228 |
+
$cart->addProduct ( $product, $params );
|
| 229 |
+
endif;
|
| 230 |
+
|
| 231 |
+
|
| 232 |
+
$session->setLastAddedProductId ( $product->getId () );
|
| 233 |
+
$session->setCartWasUpdated ( true );
|
| 234 |
+
$cart->save ();
|
| 235 |
+
|
| 236 |
+
|
| 237 |
+
$items_qty = floor ( Mage::getModel ( 'checkout/cart' )->getQuote ()->getItemsQty () );
|
| 238 |
+
$result = '{"result":"success"';
|
| 239 |
+
$result .= ', "items_qty": "' . $items_qty . '"}';
|
| 240 |
+
echo $result;
|
| 241 |
+
} catch ( Exception $e ) {
|
| 242 |
+
|
| 243 |
+
|
| 244 |
+
$result = '{"result":"error"';
|
| 245 |
+
$result .= ', "message": "' . str_replace("\"","||",$e->getMessage ()) . '"}';
|
| 246 |
+
echo $result;
|
| 247 |
+
|
| 248 |
+
}
|
| 249 |
+
}
|
| 250 |
+
|
| 251 |
+
|
| 252 |
+
# End add to cart product
|
| 253 |
+
public function getQtyAction() {
|
| 254 |
+
$items_qty = floor(Mage::getModel('checkout/cart')->getQuote()->getItemsQty());
|
| 255 |
+
$result = '{"items_qty": "' . $items_qty . '"}';
|
| 256 |
+
|
| 257 |
+
echo $result;
|
| 258 |
+
}
|
| 259 |
+
|
| 260 |
+
public function addpro($product_id,$qty) {
|
| 261 |
+
try {
|
| 262 |
+
$session = Mage::getSingleton ( 'core/session', array (
|
| 263 |
+
'name' => 'frontend'
|
| 264 |
+
) );
|
| 265 |
+
// $product_id = $this->getRequest ()->getParam ( 'product' );
|
| 266 |
+
$params['qty'] = $qty;//;$this->getRequest ()->getParams ();
|
| 267 |
+
if (isset ( $params ['qty'] )) {
|
| 268 |
+
$filter = new Zend_Filter_LocalizedToNormalized ( array (
|
| 269 |
+
'locale' => Mage::app ()->getLocale ()->getLocaleCode ()
|
| 270 |
+
) );
|
| 271 |
+
$params ['qty'] = $filter->filter ( $params ['qty'] );
|
| 272 |
+
} else if ($product_id == '') {
|
| 273 |
+
$session->addError ( "Product Not Added
|
| 274 |
+
The SKU you entered ($sku) was not found." );
|
| 275 |
+
}
|
| 276 |
+
$request = Mage::app ()->getRequest ();
|
| 277 |
+
$product = Mage::getModel ( 'catalog/product' )->load ( $product_id );
|
| 278 |
+
$cart = Mage::helper ( 'checkout/cart' )->getCart ();
|
| 279 |
+
$cart->addProduct ( $product, $params );
|
| 280 |
+
$session->setLastAddedProductId ( $product->getId () );
|
| 281 |
+
$session->setCartWasUpdated ( true );
|
| 282 |
+
$cart->save ();
|
| 283 |
+
return true;
|
| 284 |
+
} catch ( Exception $e ) {
|
| 285 |
+
return $e;
|
| 286 |
+
}
|
| 287 |
+
}
|
| 288 |
+
public function getCartInfoAction() {
|
| 289 |
+
echo json_encode ( $this->_getCartInformation () );
|
| 290 |
+
}
|
| 291 |
+
public function removeAction() {
|
| 292 |
+
$cart = Mage::getSingleton ( 'checkout/cart' );
|
| 293 |
+
$id = ( int ) $this->getRequest ()->getParam ( 'cart_item_id', 0 );
|
| 294 |
+
if ($id) {
|
| 295 |
+
try {
|
| 296 |
+
$cart->removeItem ( $id )->save ();
|
| 297 |
+
echo json_encode(array('cart_info'=>$this->_getCartInformation(),'total'=>$this->_getCartTotal ()));
|
| 298 |
+
} catch ( Mage_Core_Exception $e ) {
|
| 299 |
+
echo json_encode ( $e->getMessage () );
|
| 300 |
+
|
| 301 |
+
} catch ( Exception $e ) {
|
| 302 |
+
echo json_encode ( $e->getMessage () );
|
| 303 |
+
|
| 304 |
+
}
|
| 305 |
+
} else {
|
| 306 |
+
echo json_encode ( array (
|
| 307 |
+
false,
|
| 308 |
+
'0x5002',
|
| 309 |
+
'Param cart_item_id is empty.'
|
| 310 |
+
) );
|
| 311 |
+
}
|
| 312 |
+
}
|
| 313 |
+
|
| 314 |
+
|
| 315 |
+
public function updateAction() {
|
| 316 |
+
$itemId = ( int ) $this->getRequest ()->getParam ( 'cart_item_id', 0 );
|
| 317 |
+
$qty = ( int ) $this->getRequest ()->getParam ( 'qty', 0 );
|
| 318 |
+
$oldQty = 0;
|
| 319 |
+
$item = null;
|
| 320 |
+
try {
|
| 321 |
+
if ($itemId && $qty > 0) {
|
| 322 |
+
$cartData = array ();
|
| 323 |
+
$cartData [$itemId] ['qty'] = $qty;
|
| 324 |
+
$cart = Mage::getSingleton ( 'checkout/cart' );
|
| 325 |
+
/* * ****** if update fail rollback ********* */
|
| 326 |
+
if ($cart->getQuote ()->getItemById ( $itemId )) {
|
| 327 |
+
$item = $cart->getQuote ()->getItemById ( $itemId );
|
| 328 |
+
} else {
|
| 329 |
+
echo json_encode ( array (
|
| 330 |
+
'status' => 'error',
|
| 331 |
+
'message' => 'a wrong cart_item_id was given.'
|
| 332 |
+
) );
|
| 333 |
+
return false;
|
| 334 |
+
}
|
| 335 |
+
$oldQty = $item->getQty ();
|
| 336 |
+
if (! $cart->getCustomerSession ()->getCustomer ()->getId () && $cart->getQuote ()->getCustomerId ()) {
|
| 337 |
+
$cart->getQuote ()->setCustomerId ( null );
|
| 338 |
+
}
|
| 339 |
+
$cart->updateItems ( $cartData )->save ();
|
| 340 |
+
if ($cart->getQuote ()->getHasError ()) { // apply for 1.7.0.2
|
| 341 |
+
$mesg = current ( $cart->getQuote ()->getErrors () );
|
| 342 |
+
Mage::throwException ( $mesg->getText () );
|
| 343 |
+
return false;
|
| 344 |
+
}
|
| 345 |
+
}
|
| 346 |
+
$session = Mage::getSingleton ( 'checkout/session' );
|
| 347 |
+
$session->setCartWasUpdated ( true );
|
| 348 |
+
} catch ( Mage_Core_Exception $e ) { // rollback $quote->collectTotals()->save();
|
| 349 |
+
$item && $item->setData ( 'qty', $oldQty );
|
| 350 |
+
$cart->getQuote ()->setTotalsCollectedFlag ( false ); // reflash price
|
| 351 |
+
echo json_encode (array('status'=>'error','message'=> $e->getMessage ()) );
|
| 352 |
+
exit;
|
| 353 |
+
} catch ( Exception $e ) {
|
| 354 |
+
echo json_encode (array('status'=>'error','message'=> $e->getMessage ()) );
|
| 355 |
+
exit;
|
| 356 |
+
}
|
| 357 |
+
echo json_encode(array('cart_info'=>$this->_getCartInformation(),'total'=>$this->_getCartTotal ()));
|
| 358 |
+
}
|
| 359 |
+
|
| 360 |
+
|
| 361 |
+
public function getTotalAction() {
|
| 362 |
+
echo json_encode ( $this->_getCartTotal () );
|
| 363 |
+
}
|
| 364 |
+
|
| 365 |
+
|
| 366 |
+
public function postCouponAction() {
|
| 367 |
+
$couponCode = ( string ) Mage::app ()->getRequest ()->getParam ( 'coupon_code' );
|
| 368 |
+
$cart = Mage::helper ( 'checkout/cart' )->getCart ();
|
| 369 |
+
|
| 370 |
+
$coupan_codes = array();
|
| 371 |
+
$rulesCollection = Mage::getModel('salesrule/rule')->getCollection();
|
| 372 |
+
foreach($rulesCollection as $rule){
|
| 373 |
+
$coupan_codes[] = $rule->getCode();
|
| 374 |
+
}
|
| 375 |
+
|
| 376 |
+
if (!in_array($couponCode, $coupan_codes))
|
| 377 |
+
{
|
| 378 |
+
echo json_encode ( array (
|
| 379 |
+
'status' => 'error',
|
| 380 |
+
'message' => "Coupan Is not Valid"
|
| 381 |
+
) );
|
| 382 |
+
return false;
|
| 383 |
+
}
|
| 384 |
+
|
| 385 |
+
|
| 386 |
+
|
| 387 |
+
|
| 388 |
+
if (! $cart->getItemsCount ()) {
|
| 389 |
+
echo json_encode ( array (
|
| 390 |
+
'code' => '0X0001',
|
| 391 |
+
'message' => "You can't use coupon code with an empty shopping cart"
|
| 392 |
+
) );
|
| 393 |
+
return false;
|
| 394 |
+
}
|
| 395 |
+
if (Mage::app ()->getRequest ()->getParam ( 'remove' ) == 1) {
|
| 396 |
+
$couponCode = '';
|
| 397 |
+
}
|
| 398 |
+
$oldCouponCode = $cart->getQuote ()->getCouponCode ();
|
| 399 |
+
if (! strlen ( $couponCode ) && ! strlen ( $oldCouponCode )) {
|
| 400 |
+
echo json_encode ( array (
|
| 401 |
+
'code' => '0X0002',
|
| 402 |
+
'message' => "Emptyed."
|
| 403 |
+
) );
|
| 404 |
+
return false;
|
| 405 |
+
}
|
| 406 |
+
try {
|
| 407 |
+
$codeLength = strlen ( $couponCode );
|
| 408 |
+
$isCodeLengthValid = $codeLength && $codeLength <= Mage_Checkout_Helper_Cart::COUPON_CODE_MAX_LENGTH;
|
| 409 |
+
|
| 410 |
+
$cart->getQuote ()->getShippingAddress ()->setCollectShippingRates ( true );
|
| 411 |
+
$cart->getQuote ()->setCouponCode ( $isCodeLengthValid ? $couponCode : '' )->collectTotals ()->save ();
|
| 412 |
+
|
| 413 |
+
if ($codeLength) {
|
| 414 |
+
if ($isCodeLengthValid && $couponCode == $cart->getQuote ()->getCouponCode ()) {
|
| 415 |
+
$messages = array (
|
| 416 |
+
'code' => '0x0000',
|
| 417 |
+
'message' => $this->__ ( 'Coupon code "%s" was applied.', Mage::helper ( 'core' )->escapeHtml ( $couponCode ) )
|
| 418 |
+
);
|
| 419 |
+
} else {
|
| 420 |
+
$messages = array (
|
| 421 |
+
'code' => '0x0001',
|
| 422 |
+
'message' => $this->__ ( 'Coupon code "%s" is not valid.', Mage::helper ( 'core' )->escapeHtml ( $couponCode ) )
|
| 423 |
+
);
|
| 424 |
+
}
|
| 425 |
+
} else {
|
| 426 |
+
$messages = array (
|
| 427 |
+
'code' => '0x0002',
|
| 428 |
+
'message' => $this->__ ( 'Coupon code was canceled.' )
|
| 429 |
+
);
|
| 430 |
+
}
|
| 431 |
+
} catch ( Mage_Core_Exception $e ) {
|
| 432 |
+
$messages = array (
|
| 433 |
+
'code' => '0x0003',
|
| 434 |
+
'message' => $e->getMessage ()
|
| 435 |
+
);
|
| 436 |
+
} catch ( Exception $e ) {
|
| 437 |
+
$messages = array (
|
| 438 |
+
'code' => '0x0004',
|
| 439 |
+
'message' => $this->__ ( 'Cannot apply the coupon code.' )
|
| 440 |
+
);
|
| 441 |
+
}
|
| 442 |
+
|
| 443 |
+
echo json_encode ( $this->_getCartTotal () );
|
| 444 |
+
}
|
| 445 |
+
|
| 446 |
+
|
| 447 |
+
protected function _getCartInformation() {
|
| 448 |
+
$cart = Mage::getSingleton ( 'checkout/cart' );
|
| 449 |
+
if ($cart->getQuote ()->getItemsCount ()) {
|
| 450 |
+
$cart->init ();
|
| 451 |
+
$cart->save ();
|
| 452 |
+
}
|
| 453 |
+
$cart->getQuote ()->collectTotals ()->save ();
|
| 454 |
+
|
| 455 |
+
$cartInfo = array ();
|
| 456 |
+
$cartInfo ['is_virtual'] = Mage::helper ( 'checkout/cart' )->getIsVirtualQuote ();
|
| 457 |
+
$cartInfo ['cart_items'] = $this->_getCartItems ();
|
| 458 |
+
$cartInfo ['messages'] = sizeof ( $this->errors ) ? $this->errors : $this->_getMessage ();
|
| 459 |
+
$cartInfo ['cart_items_count'] = Mage::helper ( 'checkout/cart' )->getSummaryCount ();
|
| 460 |
+
$cartInfo ['grand_total'] = $cart->getQuote()->getGrandTotal();
|
| 461 |
+
$cartInfo ['sub_total'] = $cart->getQuote()->getSubtotal();
|
| 462 |
+
$cartInfo ['allow_guest_checkout'] = Mage::helper ( 'checkout' )->isAllowedGuestCheckout ( $cart->getQuote () );
|
| 463 |
+
|
| 464 |
+
return $cartInfo;
|
| 465 |
+
}
|
| 466 |
+
|
| 467 |
+
|
| 468 |
+
protected function _getCartTotal() {
|
| 469 |
+
$cart = Mage::getSingleton ( 'checkout/cart' );
|
| 470 |
+
$totalItemsInCart = Mage::helper ( 'checkout/cart' )->getItemsCount (); // total items in cart
|
| 471 |
+
$totals = Mage::getSingleton ( 'checkout/session' )->getQuote ()->getTotals (); // Total object
|
| 472 |
+
$oldCouponCode = $cart->getQuote ()->getCouponCode ();
|
| 473 |
+
$oCoupon = Mage::getModel ( 'salesrule/coupon' )->load ( $oldCouponCode, 'code' );
|
| 474 |
+
$oRule = Mage::getModel ( 'salesrule/rule' )->load ( $oCoupon->getRuleId () );
|
| 475 |
+
|
| 476 |
+
$subtotal = round ( $totals ["subtotal"]->getValue () ); // Subtotal value
|
| 477 |
+
$grandtotal = round ( $totals ["grand_total"]->getValue () ); // Grandtotal value
|
| 478 |
+
if (isset ( $totals ['discount'] )) { // $totals['discount']->getValue()) {
|
| 479 |
+
$discount = round ( $totals ['discount']->getValue () ); // Discount value if applied
|
| 480 |
+
} else {
|
| 481 |
+
$discount = '0';
|
| 482 |
+
}
|
| 483 |
+
if (isset ( $totals ['tax'] )) { // $totals['tax']->getValue()) {
|
| 484 |
+
$tax = round ( $totals ['tax']->getValue () ); // Tax value if present
|
| 485 |
+
} else {
|
| 486 |
+
$tax = '';
|
| 487 |
+
}
|
| 488 |
+
return array (
|
| 489 |
+
'subtotal' => $subtotal,
|
| 490 |
+
'grandtotal' => $grandtotal,
|
| 491 |
+
'discount' => str_replace('-','',$discount),
|
| 492 |
+
'tax' => $tax,
|
| 493 |
+
'coupon_code' => $oldCouponCode,
|
| 494 |
+
'coupon_rule' => $oRule->getData ()
|
| 495 |
+
);
|
| 496 |
+
}
|
| 497 |
+
|
| 498 |
+
|
| 499 |
+
protected function _getMessage() {
|
| 500 |
+
$cart = Mage::getSingleton ( 'checkout/cart' );
|
| 501 |
+
if (! Mage::getSingleton ( 'checkout/type_onepage' )->getQuote ()->hasItems ()) {
|
| 502 |
+
$this->errors [] = 'Cart is empty!';
|
| 503 |
+
return $this->errors;
|
| 504 |
+
}
|
| 505 |
+
if (! $cart->getQuote ()->validateMinimumAmount ()) {
|
| 506 |
+
$warning = Mage::getStoreConfig ( 'sales/minimum_order/description' );
|
| 507 |
+
$this->errors [] = $warning;
|
| 508 |
+
}
|
| 509 |
+
|
| 510 |
+
if (($messages = $cart->getQuote ()->getErrors ())) {
|
| 511 |
+
foreach ( $messages as $message ) {
|
| 512 |
+
if ($message) {
|
| 513 |
+
$message = str_replace("\"","||",$message);
|
| 514 |
+
$this->errors [] = $message->getText ();
|
| 515 |
+
}
|
| 516 |
+
}
|
| 517 |
+
}
|
| 518 |
+
|
| 519 |
+
return $this->errors;
|
| 520 |
+
}
|
| 521 |
+
|
| 522 |
+
|
| 523 |
+
private function _getPaymentInfo() {
|
| 524 |
+
$cart = Mage::getSingleton ( 'checkout/cart' );
|
| 525 |
+
$methods = $cart->getAvailablePayment ();
|
| 526 |
+
|
| 527 |
+
|
| 528 |
+
|
| 529 |
+
foreach ( $methods as $method ) {
|
| 530 |
+
if ($method->getCode () == 'paypal_express') {
|
| 531 |
+
return array (
|
| 532 |
+
'paypalec'
|
| 533 |
+
);
|
| 534 |
+
}
|
| 535 |
+
}
|
| 536 |
+
|
| 537 |
+
return array ();
|
| 538 |
+
}
|
| 539 |
+
|
| 540 |
+
|
| 541 |
+
protected function _getCartItems() {
|
| 542 |
+
$cartItemsArr = array ();
|
| 543 |
+
$cart = Mage::getSingleton ( 'checkout/cart' );
|
| 544 |
+
$quote = $cart->getQuote ();
|
| 545 |
+
$currency = $quote->getquote_currency_code ();
|
| 546 |
+
$displayCartPriceInclTax = Mage::helper ( 'tax' )->displayCartPriceInclTax ();
|
| 547 |
+
$displayCartPriceExclTax = Mage::helper ( 'tax' )->displayCartPriceExclTax ();
|
| 548 |
+
$displayCartBothPrices = Mage::helper ( 'tax' )->displayCartBothPrices ();
|
| 549 |
+
$items = $quote->getAllVisibleItems ();
|
| 550 |
+
foreach ( $items as $item ) {
|
| 551 |
+
$cartItemArr = array ();
|
| 552 |
+
$cartItemArr ['cart_item_id'] = $item->getId ();
|
| 553 |
+
$cartItemArr ['currency'] = $currency;
|
| 554 |
+
$cartItemArr ['entity_type'] = $item->getProductType ();
|
| 555 |
+
$cartItemArr ['item_id'] = $item->getProduct ()->getId ();
|
| 556 |
+
$cartItemArr ['item_title'] = strip_tags ( $item->getProduct ()->getName () );
|
| 557 |
+
$cartItemArr ['qty'] = $item->getQty ();
|
| 558 |
+
$cartItemArr ['thumbnail_pic_url'] = ( string ) Mage::getModel('catalog/product_media_config')
|
| 559 |
+
->getMediaUrl( $item->getImage() );
|
| 560 |
+
$cartItemArr ['custom_option'] = $this->_getCustomOptions ( $item );
|
| 561 |
+
if ($displayCartPriceExclTax || $displayCartBothPrices) {
|
| 562 |
+
if (Mage::helper ( 'weee' )->typeOfDisplay ( $item, array (
|
| 563 |
+
0,
|
| 564 |
+
1,
|
| 565 |
+
4
|
| 566 |
+
), 'sales' ) && $item->getWeeeTaxAppliedAmount ()) {
|
| 567 |
+
$exclPrice = $item->getCalculationPrice () + $item->getWeeeTaxAppliedAmount () + $item->getWeeeTaxDisposition ();
|
| 568 |
+
} else {
|
| 569 |
+
$exclPrice = $item->getCalculationPrice ();
|
| 570 |
+
}
|
| 571 |
+
}
|
| 572 |
+
$inclPrice = Mage::helper ( 'checkout' )->getPriceInclTax ( $item );
|
| 573 |
+
if ($displayCartPriceInclTax || $displayCartBothPrices) {
|
| 574 |
+
$_incl = Mage::helper ( 'checkout' )->getPriceInclTax ( $item );
|
| 575 |
+
if (Mage::helper ( 'weee' )->typeOfDisplay ( $item, array (
|
| 576 |
+
0,
|
| 577 |
+
1,
|
| 578 |
+
4
|
| 579 |
+
), 'sales' ) && $item->getWeeeTaxAppliedAmount ()) {
|
| 580 |
+
$inclPrice = $_incl + $item->getWeeeTaxAppliedAmount ();
|
| 581 |
+
} else {
|
| 582 |
+
$inclPrice = $_incl - $item->getWeeeTaxDisposition ();
|
| 583 |
+
}
|
| 584 |
+
}
|
| 585 |
+
|
| 586 |
+
//$cartItemArr ['item_price'] = max ( $exclPrice, $inclPrice );
|
| 587 |
+
$cartItemArr ['item_price'] = $exclPrice;
|
| 588 |
+
|
| 589 |
+
array_push ( $cartItemsArr, $cartItemArr );
|
| 590 |
+
}
|
| 591 |
+
|
| 592 |
+
return $cartItemsArr;
|
| 593 |
+
}
|
| 594 |
+
|
| 595 |
+
|
| 596 |
+
protected function _getCustomOptions($item) {
|
| 597 |
+
$session = Mage::getSingleton ( 'checkout/session' );
|
| 598 |
+
$options = $item->getProduct ()->getTypeInstance ( true )->getOrderOptions ( $item->getProduct () );
|
| 599 |
+
|
| 600 |
+
$result = array ();
|
| 601 |
+
if ($options) {
|
| 602 |
+
if (isset ( $options ['options'] )) {
|
| 603 |
+
$result = array_merge ( $result, $options ['options'] );
|
| 604 |
+
}
|
| 605 |
+
if (isset ( $options ['additional_options'] )) {
|
| 606 |
+
$result = $result = array_merge ( $result, $options ['additional_options'] );
|
| 607 |
+
}
|
| 608 |
+
if (! empty ( $options ['attributes_info'] )) {
|
| 609 |
+
$result = $result = array_merge ( $result, $options ['attributes_info'] );
|
| 610 |
+
}
|
| 611 |
+
}
|
| 612 |
+
|
| 613 |
+
return $result;
|
| 614 |
+
}
|
| 615 |
+
|
| 616 |
+
protected function _getCustomOption($item) {
|
| 617 |
+
$session = Mage::getSingleton ( 'checkout/session' );
|
| 618 |
+
$options = $item->getProduct ()->getTypeInstance ( true )->getOrderOptions ( $item->getProduct () );
|
| 619 |
+
|
| 620 |
+
$result = array ();
|
| 621 |
+
if (count($options['options'])) {
|
| 622 |
+
if (isset ( $options ['options'] )) {
|
| 623 |
+
$result = array_merge ( $result, $options ['options'] );
|
| 624 |
+
}
|
| 625 |
+
if (isset ( $options ['additional_options'] )) {
|
| 626 |
+
$result = $result = array_merge ( $result, $options ['additional_options'] );
|
| 627 |
+
}
|
| 628 |
+
/*if (! empty ( $options ['attributes_info'] )) {
|
| 629 |
+
$result = $result = array_merge ( $result, $options ['attributes_info'] );
|
| 630 |
+
}*/
|
| 631 |
+
}
|
| 632 |
+
|
| 633 |
+
return $result;
|
| 634 |
+
}
|
| 635 |
+
|
| 636 |
+
protected function _getConfigurableOptions($item) {
|
| 637 |
+
|
| 638 |
+
$options = $item->getProduct ()->getTypeInstance ( true )->getOrderOptions ( $item->getProduct () );
|
| 639 |
+
|
| 640 |
+
$result = array ();
|
| 641 |
+
if(count($options['info_buyRequest']['super_attribute'])):
|
| 642 |
+
$configurable = array();
|
| 643 |
+
$i = 0;
|
| 644 |
+
foreach($options['info_buyRequest']['super_attribute'] as $key => $value):
|
| 645 |
+
$configurable['attribute_id'] = $key;
|
| 646 |
+
$configurable['option_id'] = $value;
|
| 647 |
+
$configurable['attribute_name'] = $options['attributes_info'][$i]['label'];
|
| 648 |
+
$configurable['option_name'] = $options['attributes_info'][$i]['value'];
|
| 649 |
+
|
| 650 |
+
$i++;
|
| 651 |
+
$result[]= $configurable;
|
| 652 |
+
endforeach;
|
| 653 |
+
|
| 654 |
+
endif;
|
| 655 |
+
|
| 656 |
+
return $result;
|
| 657 |
+
}
|
| 658 |
+
|
| 659 |
+
|
| 660 |
+
public function _addToCart() {
|
| 661 |
+
$cart = Mage::getSingleton ( 'checkout/cart' );
|
| 662 |
+
$session = Mage::getSingleton ( 'core/session', array (
|
| 663 |
+
'name' => 'frontend'
|
| 664 |
+
) );
|
| 665 |
+
$params = $this->getRequest ()->getParams ();
|
| 666 |
+
if ($params ['isAjax'] == 1) {
|
| 667 |
+
$response = array ();
|
| 668 |
+
try {
|
| 669 |
+
if (isset ( $params ['qty'] )) {
|
| 670 |
+
$filter = new Zend_Filter_LocalizedToNormalized ( array (
|
| 671 |
+
'locale' => Mage::app ()->getLocale ()->getLocaleCode ()
|
| 672 |
+
) );
|
| 673 |
+
$params ['qty'] = $filter->filter ( $params ['qty'] );
|
| 674 |
+
}
|
| 675 |
+
$product = Mage::getModel ( 'catalog/product' )->load ( $params['product_id'] );
|
| 676 |
+
$related = $this->getRequest ()->getParam ( 'related_product' );
|
| 677 |
+
/**
|
| 678 |
+
* Check product availability
|
| 679 |
+
*/
|
| 680 |
+
if (! $product) {
|
| 681 |
+
$response ['status'] = 'ERROR';
|
| 682 |
+
$response ['message'] = $this->__ ( 'Unable to find Product ID' );
|
| 683 |
+
}
|
| 684 |
+
$cart->addProduct ( $product, $params );
|
| 685 |
+
if (! empty ( $related )) {
|
| 686 |
+
$cart->addProductsByIds ( explode ( ',', $related ) );
|
| 687 |
+
}
|
| 688 |
+
$cart->save ();
|
| 689 |
+
$session->setCartWasUpdated ( true );
|
| 690 |
+
/**
|
| 691 |
+
*
|
| 692 |
+
* @todo remove wishlist observer processAddToCart
|
| 693 |
+
*/
|
| 694 |
+
Mage::dispatchEvent ( 'checkout_cart_add_product_complete', array (
|
| 695 |
+
'product' => $product,
|
| 696 |
+
'request' => $this->getRequest (),
|
| 697 |
+
'response' => $this->getResponse ()
|
| 698 |
+
) );
|
| 699 |
+
if (! $session->getNoCartRedirect ( true )) {
|
| 700 |
+
if (! $cart->getQuote ()->getHasError ()) {
|
| 701 |
+
$message = $this->__ ( '%s was added to your shopping cart.', Mage::helper ( 'core' )->htmlEscape ( $product->getName () ) );
|
| 702 |
+
$response ['status'] = 'SUCCESS';
|
| 703 |
+
$response ['message'] = $message;
|
| 704 |
+
}
|
| 705 |
+
}
|
| 706 |
+
} catch ( Mage_Core_Exception $e ) {
|
| 707 |
+
$msg = "";
|
| 708 |
+
if ($session->getUseNotice ( true )) {
|
| 709 |
+
$msg = $e->getMessage ();
|
| 710 |
+
} else {
|
| 711 |
+
$messages = array_unique ( explode ( "\n", $e->getMessage () ) );
|
| 712 |
+
foreach ( $messages as $message ) {
|
| 713 |
+
$msg .= $message . '<br>';
|
| 714 |
+
}
|
| 715 |
+
}
|
| 716 |
+
$response ['status'] = 'ERROR';
|
| 717 |
+
$response ['message'] = $msg;
|
| 718 |
+
} catch ( Exception $e ) {
|
| 719 |
+
$response ['status'] = 'ERROR';
|
| 720 |
+
$response ['message'] = $this->__ ( 'Cannot add the item to shopping cart.' );
|
| 721 |
+
Mage::logException ( $e );
|
| 722 |
+
}
|
| 723 |
+
$this->getResponse ()->setBody ( Mage::helper ( 'core' )->jsonEncode ( $response ) );
|
| 724 |
+
return;
|
| 725 |
+
} else {
|
| 726 |
+
return parent::addAction ();
|
| 727 |
+
}
|
| 728 |
+
}
|
| 729 |
+
|
| 730 |
+
|
| 731 |
+
####get all enabled shipping methods
|
| 732 |
+
public function getshippingmethodsAction(){
|
| 733 |
+
|
| 734 |
+
$methods = Mage::getSingleton('shipping/config')->getActiveCarriers();
|
| 735 |
+
$shipMethods = array();
|
| 736 |
+
foreach ($methods as $shippigCode=>$shippingModel)
|
| 737 |
+
{
|
| 738 |
+
|
| 739 |
+
if($shippigCode == 'freeshipping'):
|
| 740 |
+
if(Mage::getStoreConfig('carriers/'.$shippigCode.'/free_shipping_subtotal') < Mage::helper('checkout/cart')->getQuote()->getBaseSubtotalWithDiscount()):
|
| 741 |
+
$shippingTitle = Mage::getStoreConfig('carriers/'.$shippigCode.'/title');
|
| 742 |
+
$shippingPrice = Mage::getStoreConfig('carriers/'.$shippigCode.'/price');
|
| 743 |
+
$shipMethods[]=array(
|
| 744 |
+
'code'=>$shippigCode,
|
| 745 |
+
'value'=>$shippingTitle,
|
| 746 |
+
'price'=>(int)$shippingPrice
|
| 747 |
+
);
|
| 748 |
+
endif;
|
| 749 |
+
|
| 750 |
+
else:
|
| 751 |
+
$shippingTitle = Mage::getStoreConfig('carriers/'.$shippigCode.'/title');
|
| 752 |
+
$shippingPrice = Mage::getStoreConfig('carriers/'.$shippigCode.'/price');
|
| 753 |
+
$shipMethods[]=array(
|
| 754 |
+
'code'=>$shippigCode,
|
| 755 |
+
'value'=>$shippingTitle,
|
| 756 |
+
'price'=>(int)$shippingPrice
|
| 757 |
+
);
|
| 758 |
+
endif;
|
| 759 |
+
|
| 760 |
+
|
| 761 |
+
}
|
| 762 |
+
|
| 763 |
+
echo json_encode($shipMethods);
|
| 764 |
+
}
|
| 765 |
+
|
| 766 |
+
|
| 767 |
+
####get all payment methods for now only paypal and cod
|
| 768 |
+
public function getpaymentmethodsAction(){
|
| 769 |
+
|
| 770 |
+
$payments = Mage::getSingleton('payment/config')->getActiveMethods();
|
| 771 |
+
$methods = array();
|
| 772 |
+
foreach ($payments as $paymentCode=>$paymentModel) {
|
| 773 |
+
if(Mage::getStoreConfig('magentomobileshop_payment/'.$paymentCode.'/'.$paymentCode.'_status')):
|
| 774 |
+
$paymentTitle = Mage::getStoreConfig('payment/'.$paymentCode.'/title');
|
| 775 |
+
if($paymentCode == 'authorizenet')
|
| 776 |
+
$methods[] = array(
|
| 777 |
+
'value' => $paymentTitle,
|
| 778 |
+
'code' => $paymentCode,
|
| 779 |
+
'cards' => array('Visa'=>'VI','Mastercard'=>'MC','American Express'=>'AE','Discover'=>'DI'),
|
| 780 |
+
);
|
| 781 |
+
else
|
| 782 |
+
$methods[] = array(
|
| 783 |
+
'value' => $paymentTitle,
|
| 784 |
+
'code' => $paymentCode,
|
| 785 |
+
);
|
| 786 |
+
endif;
|
| 787 |
+
}
|
| 788 |
+
/* if(Mage::getStoreConfig('magentomobileshop_payment/paypal_express/paypal_express_status') &&
|
| 789 |
+
Mage::getStoreConfig('magentomobileshop_payment/paypal_express/paypal_express_email'))
|
| 790 |
+
$methods[] = array('value'=> 'PayPal Express Checkout','code'=> 'paypal_express');
|
| 791 |
+
*/
|
| 792 |
+
|
| 793 |
+
echo json_encode($methods);
|
| 794 |
+
}
|
| 795 |
+
|
| 796 |
+
|
| 797 |
+
/*check for minium order*/
|
| 798 |
+
public function checkMinimumorder($price){
|
| 799 |
+
|
| 800 |
+
|
| 801 |
+
$amount = Mage::getStoreConfig('sales/minimum_order/amount');
|
| 802 |
+
if ($price < $amount):
|
| 803 |
+
$message = Mage::getStoreConfig('sales/minimum_order/error_message');
|
| 804 |
+
if(!$message) $message = 'Minimum Order Limit is '.$amount;
|
| 805 |
+
echo json_encode(array('status'=>'error','message'=> $message));
|
| 806 |
+
exit;
|
| 807 |
+
endif;
|
| 808 |
+
|
| 809 |
+
return true;
|
| 810 |
+
|
| 811 |
+
}
|
| 812 |
+
|
| 813 |
+
####place order api
|
| 814 |
+
public function placeOrderAction(){
|
| 815 |
+
|
| 816 |
+
if(Mage::getStoreConfig('sales/minimum_order/active')):
|
| 817 |
+
$check_grand_total = Mage::helper('checkout/cart')->getQuote()->getBaseSubtotalWithDiscount();
|
| 818 |
+
$this->checkMinimumorder($check_grand_total);
|
| 819 |
+
endif;
|
| 820 |
+
|
| 821 |
+
if (Mage::getSingleton ( 'customer/session' )->isLoggedIn ()) {
|
| 822 |
+
|
| 823 |
+
|
| 824 |
+
$session = Mage::getSingleton ( 'customer/session' );
|
| 825 |
+
$customerId=$session->getId();
|
| 826 |
+
|
| 827 |
+
|
| 828 |
+
|
| 829 |
+
##Get current quote
|
| 830 |
+
$totalItems = Mage::helper('checkout/cart')->getSummaryCount();
|
| 831 |
+
|
| 832 |
+
if($totalItems > 0):
|
| 833 |
+
#get the addressid
|
| 834 |
+
$addressId=(int)$this->getRequest()->getParam('addressid');
|
| 835 |
+
$shipping_method=$this->getRequest()->getParam('shippingmethod');
|
| 836 |
+
$paymentmethod=$this->getRequest()->getParam('paymentmethod');
|
| 837 |
+
$registration_id = $this->getRequest()->getParam('registration_id');
|
| 838 |
+
$card_details = $this->getRequest()->getParam('cards_details');
|
| 839 |
+
$save_cc = $this->getRequest()->getParam('save_cc');
|
| 840 |
+
|
| 841 |
+
|
| 842 |
+
|
| 843 |
+
if($paymentmethod == 'authorizenet')
|
| 844 |
+
$this->validateCarddtails(json_decode($card_details,1));
|
| 845 |
+
|
| 846 |
+
if (!Zend_Validate::is($addressId, 'NotEmpty')):
|
| 847 |
+
echo json_encode(array('Status'=>'error','message'=>'AddressId should not be empty'));
|
| 848 |
+
exit;
|
| 849 |
+
endif;
|
| 850 |
+
if (!Zend_Validate::is($shipping_method, 'NotEmpty')):
|
| 851 |
+
echo json_encode(array('Status'=>'error','message'=>'Shippingmethod should not be empty'));
|
| 852 |
+
exit;
|
| 853 |
+
endif;
|
| 854 |
+
if (!Zend_Validate::is($paymentmethod, 'NotEmpty')):
|
| 855 |
+
echo json_encode(array('Status'=>'error','message'=>'paymentmethod should not be empty'));
|
| 856 |
+
exit;
|
| 857 |
+
endif;
|
| 858 |
+
if($addressId==''){
|
| 859 |
+
$result=array(
|
| 860 |
+
'message'=>'address is missing!!!!',
|
| 861 |
+
'status'=>'success'
|
| 862 |
+
|
| 863 |
+
);
|
| 864 |
+
echo json_encode($result);
|
| 865 |
+
exit;
|
| 866 |
+
|
| 867 |
+
}
|
| 868 |
+
|
| 869 |
+
|
| 870 |
+
#load the customer
|
| 871 |
+
$customer = Mage::getModel('customer/customer')->load($customerId);
|
| 872 |
+
|
| 873 |
+
#address load
|
| 874 |
+
try {
|
| 875 |
+
$addressData=Mage::getModel('customer/address')->load($addressId)->getData();
|
| 876 |
+
$quote=Mage::getSingleton ( 'checkout/session' )->getQuote();
|
| 877 |
+
$quote->setMms_order_type('app')->save();
|
| 878 |
+
|
| 879 |
+
$billingAddress = $quote->getBillingAddress()->addData($addressData);
|
| 880 |
+
$shippingAddress = $quote->getShippingAddress()->addData($addressData);
|
| 881 |
+
|
| 882 |
+
$shippingAddress->setCollectShippingRates(true)->collectShippingRates()
|
| 883 |
+
->setShippingMethod($shipping_method.'_'.$shipping_method);
|
| 884 |
+
|
| 885 |
+
if($paymentmethod != 'authorizenet'):
|
| 886 |
+
$shippingAddress->setPaymentMethod($paymentmethod);
|
| 887 |
+
$quote->getPayment()->importData(array('method' => $paymentmethod));
|
| 888 |
+
|
| 889 |
+
endif;
|
| 890 |
+
|
| 891 |
+
|
| 892 |
+
|
| 893 |
+
|
| 894 |
+
$quote->collectTotals()->save();
|
| 895 |
+
|
| 896 |
+
|
| 897 |
+
$transaction = Mage::getModel('core/resource_transaction');
|
| 898 |
+
|
| 899 |
+
if ($quote->getCustomerId()) {
|
| 900 |
+
$transaction->addObject($quote->getCustomer());
|
| 901 |
+
}
|
| 902 |
+
$transaction->addObject($quote);
|
| 903 |
+
$quote->reserveOrderId();
|
| 904 |
+
|
| 905 |
+
|
| 906 |
+
if($paymentmethod == 'authorizenet')
|
| 907 |
+
$this->authorizePayment($quote,$transaction,$save_cc);
|
| 908 |
+
|
| 909 |
+
|
| 910 |
+
$service = Mage::getModel('sales/service_quote', $quote);
|
| 911 |
+
$service->submitAll();
|
| 912 |
+
$order = $service->getOrder();
|
| 913 |
+
$quote->delete();
|
| 914 |
+
|
| 915 |
+
$cart = Mage::helper ( 'checkout/cart' )->getCart ();
|
| 916 |
+
if($cart->getQuote ()->getItemsCount ()){
|
| 917 |
+
Mage::getSingleton('checkout/cart')->truncate()->save();
|
| 918 |
+
}
|
| 919 |
+
Mage::getSingleton('checkout/session')->clear();
|
| 920 |
+
|
| 921 |
+
$result=array( 'message'=>'Order placed successfully.',
|
| 922 |
+
'orderid'=>$order->getIncrementId(),
|
| 923 |
+
'result'=>'success'
|
| 924 |
+
|
| 925 |
+
);
|
| 926 |
+
|
| 927 |
+
|
| 928 |
+
|
| 929 |
+
echo json_encode($result);
|
| 930 |
+
|
| 931 |
+
} catch (Exception $e) {
|
| 932 |
+
|
| 933 |
+
echo json_encode(array('status'=>'error','message'=>$e->getMessage()));
|
| 934 |
+
exit;
|
| 935 |
+
|
| 936 |
+
}
|
| 937 |
+
else:
|
| 938 |
+
$result=array(
|
| 939 |
+
'message'=>'cart is empty',
|
| 940 |
+
'result'=>'success'
|
| 941 |
+
|
| 942 |
+
);
|
| 943 |
+
echo json_encode($result);
|
| 944 |
+
endif;
|
| 945 |
+
|
| 946 |
+
}else{
|
| 947 |
+
ini_set('memory_limit', '128M');
|
| 948 |
+
|
| 949 |
+
$getParams = $this->getRequest()->getParams();
|
| 950 |
+
|
| 951 |
+
$payment_method = $getParams['paymentmethod'];
|
| 952 |
+
$shipping_method = $getParams['shippingmethod'];
|
| 953 |
+
$registration_id = $this->getRequest()->getParam('registration_id');
|
| 954 |
+
$card_details = $this->getRequest()->getParam('cards_details');
|
| 955 |
+
$save_cc = $this->getRequest()->getParam('save_cc');
|
| 956 |
+
|
| 957 |
+
if($payment_method == 'authorizenet')
|
| 958 |
+
$this->validateCarddtails(json_decode($card_details,1));
|
| 959 |
+
|
| 960 |
+
|
| 961 |
+
try{
|
| 962 |
+
|
| 963 |
+
if(Mage::getStoreConfig('sales/minimum_order/active')):
|
| 964 |
+
$check_grand_total = Mage::helper('checkout/cart')->getQuote()->getBaseSubtotalWithDiscount();
|
| 965 |
+
$this->checkMinimumorder($check_grand_total);
|
| 966 |
+
endif;
|
| 967 |
+
|
| 968 |
+
$checkout_session =Mage::getModel ( 'checkout/session' )->getQuoteId();
|
| 969 |
+
Mage::getSingleton ( 'checkout/session' )->getQuote()->setMms_order_type('app')->save();
|
| 970 |
+
|
| 971 |
+
$quote = Mage::getModel('sales/quote')->load($checkout_session);
|
| 972 |
+
$quote->setStoreId(Mage::app()->getStore()->getId());
|
| 973 |
+
|
| 974 |
+
|
| 975 |
+
|
| 976 |
+
|
| 977 |
+
$billingAddress = array(
|
| 978 |
+
'firstname' => $getParams['firstname'],
|
| 979 |
+
'lastname' => $getParams['lastname'],
|
| 980 |
+
|
| 981 |
+
'email' => $getParams['email'],
|
| 982 |
+
'street' => array(
|
| 983 |
+
$getParams['street_line_1'],
|
| 984 |
+
@$getParams['street_line_2']
|
| 985 |
+
),
|
| 986 |
+
'city' => $getParams['city'],
|
| 987 |
+
/*'region' => $getParams['region'],*/
|
| 988 |
+
'postcode' => $getParams['postcode'],
|
| 989 |
+
'country_id' => $getParams['country_id'],
|
| 990 |
+
'telephone' => $getParams['telephone'],
|
| 991 |
+
'customer_password' => '',
|
| 992 |
+
'confirm_password' => '',
|
| 993 |
+
'save_in_address_book' => '0',
|
| 994 |
+
'use_for_shipping' => '1',
|
| 995 |
+
);
|
| 996 |
+
|
| 997 |
+
if(isset($data['region']))
|
| 998 |
+
$billingAddress['region']=$getParams['region'];
|
| 999 |
+
else
|
| 1000 |
+
$billingAddress['region_id']=$getParams['region_id'];
|
| 1001 |
+
|
| 1002 |
+
$quote->getBillingAddress()
|
| 1003 |
+
->addData($billingAddress);
|
| 1004 |
+
|
| 1005 |
+
$quote->getShippingAddress()
|
| 1006 |
+
->addData($billingAddress)
|
| 1007 |
+
->setShippingMethod($shipping_method.'_'.$shipping_method);
|
| 1008 |
+
|
| 1009 |
+
$quote->getShippingAddress()->setCollectShippingRates(true)->collectShippingRates();
|
| 1010 |
+
$quote->collectTotals();
|
| 1011 |
+
|
| 1012 |
+
if($payment_method != 'authorizenet'):
|
| 1013 |
+
$quote->setPaymentMethod($payment_method);
|
| 1014 |
+
$quote->getPayment()->importData( array('method' => $payment_method));
|
| 1015 |
+
|
| 1016 |
+
endif;
|
| 1017 |
+
|
| 1018 |
+
$customer_id = Mage::helper('connector')->reigesterGuestUser(array('firstname' => $getParams['firstname'],
|
| 1019 |
+
'lastname' => $getParams['lastname'],'email'=>$getParams['email']));
|
| 1020 |
+
|
| 1021 |
+
$quote->setCustomer(Mage::getSingleton('customer/customer')->load($customer_id));
|
| 1022 |
+
|
| 1023 |
+
$quote->save();
|
| 1024 |
+
|
| 1025 |
+
$transaction = Mage::getModel('core/resource_transaction');
|
| 1026 |
+
|
| 1027 |
+
if ($quote->getCustomerId())
|
| 1028 |
+
$transaction->addObject($quote->getCustomer());
|
| 1029 |
+
|
| 1030 |
+
if($payment_method == 'authorizenet')
|
| 1031 |
+
$this->authorizePayment($quote,$transaction,$save_cc);
|
| 1032 |
+
|
| 1033 |
+
|
| 1034 |
+
$service = Mage::getModel('sales/service_quote', $quote);
|
| 1035 |
+
$service->submitAll();
|
| 1036 |
+
$order = $service->getOrder();
|
| 1037 |
+
|
| 1038 |
+
$increment_id = $order->getRealOrderId();
|
| 1039 |
+
$quote = $customer = $service = null;
|
| 1040 |
+
|
| 1041 |
+
|
| 1042 |
+
$cart = Mage::helper ( 'checkout/cart' )->getCart ();
|
| 1043 |
+
if($cart->getQuote ()->getItemsCount ()){
|
| 1044 |
+
Mage::getSingleton('checkout/cart')->truncate()->save();
|
| 1045 |
+
}
|
| 1046 |
+
Mage::getSingleton('checkout/session')->clear();
|
| 1047 |
+
echo json_encode(array('status' =>'success','orderid' => $increment_id));
|
| 1048 |
+
exit;
|
| 1049 |
+
}
|
| 1050 |
+
catch (Exception $e)
|
| 1051 |
+
{
|
| 1052 |
+
echo json_encode(array('status' =>'error','message' => $e->getMessage()));
|
| 1053 |
+
exit;
|
| 1054 |
+
|
| 1055 |
+
}
|
| 1056 |
+
|
| 1057 |
+
}
|
| 1058 |
+
|
| 1059 |
+
}
|
| 1060 |
+
|
| 1061 |
+
public function authorizePayment($quoteObj,$transaction,$save_cc=false){
|
| 1062 |
+
|
| 1063 |
+
$ccInfo = array();
|
| 1064 |
+
$quotePaymentObj = $quoteObj->getPayment();
|
| 1065 |
+
$quotePaymentObj->setMethod('authorizenet');
|
| 1066 |
+
$quoteObj->setPayment($quotePaymentObj);
|
| 1067 |
+
|
| 1068 |
+
$quoteObj->getPayment()->setCcNumber($this->cc_number);
|
| 1069 |
+
$quoteObj->getPayment()->setCcType($this->cc_type);
|
| 1070 |
+
$quoteObj->getPayment()->setCcExpMonth($this->cc_month);
|
| 1071 |
+
$quoteObj->getPayment()->setCcExpYear($this->cc_year);
|
| 1072 |
+
$quoteObj->getPayment()->setCcLast4(substr($this->cc_number,-4));
|
| 1073 |
+
$quoteObj->getPayment()->setCcCid($this->cc_cid);
|
| 1074 |
+
|
| 1075 |
+
|
| 1076 |
+
$convertQuoteObj = Mage::getSingleton('sales/convert_quote');
|
| 1077 |
+
if ($quoteObj->getIsVirtual())
|
| 1078 |
+
$orderObj = $convertQuoteObj->addressToOrder($quoteObj->getBillingAddress());
|
| 1079 |
+
else
|
| 1080 |
+
$orderObj = $convertQuoteObj->addressToOrder($quoteObj->getShippingAddress());
|
| 1081 |
+
|
| 1082 |
+
$orderPaymentObj = $convertQuoteObj->paymentToOrderPayment($quotePaymentObj);
|
| 1083 |
+
|
| 1084 |
+
$orderObj->setBillingAddress($convertQuoteObj->addressToOrderAddress($quoteObj->getBillingAddress()));
|
| 1085 |
+
$orderObj->setPayment($convertQuoteObj->paymentToOrderPayment($quoteObj->getPayment()));
|
| 1086 |
+
|
| 1087 |
+
if (!$quoteObj->getIsVirtual())
|
| 1088 |
+
$orderObj->setShippingAddress($convertQuoteObj->addressToOrderAddress($quoteObj->getShippingAddress()));
|
| 1089 |
+
|
| 1090 |
+
|
| 1091 |
+
// set payment options
|
| 1092 |
+
if (count($ccInfo) > 0):
|
| 1093 |
+
$orderObj->setPayment($convertQuoteObj->paymentToOrderPayment($quoteObj->getPayment()));
|
| 1094 |
+
$orderObj->getPayment()->setCcNumber($this->cc_number);
|
| 1095 |
+
$orderObj->getPayment()->setCcType($this->cc_type);
|
| 1096 |
+
$orderObj->getPayment()->setCcExpMonth($this->cc_month);
|
| 1097 |
+
$orderObj->getPayment()->setCcExpYear($this->cc_year);
|
| 1098 |
+
$orderObj->getPayment()->setCcLast4(substr($this->cc_number,-4));
|
| 1099 |
+
$orderObj->getPayment()->setCcCid($this->cc_cid);
|
| 1100 |
+
|
| 1101 |
+
else:
|
| 1102 |
+
$orderObj->setPayment($convertQuoteObj->paymentToOrderPayment($quoteObj->getPayment()));
|
| 1103 |
+
endif;
|
| 1104 |
+
|
| 1105 |
+
$items=$quoteObj->getAllItems();
|
| 1106 |
+
|
| 1107 |
+
foreach ($items as $item):
|
| 1108 |
+
|
| 1109 |
+
$orderItem = $convertQuoteObj->itemToOrderItem($item);
|
| 1110 |
+
|
| 1111 |
+
if ($item->getParentItem())
|
| 1112 |
+
$orderItem->setParentItem($orderObj->getItemByQuoteItemId($item->getParentItem()->getId()));
|
| 1113 |
+
|
| 1114 |
+
$orderObj->addItem($orderItem);
|
| 1115 |
+
endforeach;
|
| 1116 |
+
|
| 1117 |
+
$orderObj->setCanShipPartiallyItem(false);
|
| 1118 |
+
|
| 1119 |
+
$totalDue = $orderObj->getTotalDue();
|
| 1120 |
+
|
| 1121 |
+
$transaction->addObject($orderObj);
|
| 1122 |
+
$transaction->addCommitCallback(array($orderObj, 'place'));
|
| 1123 |
+
$transaction->addCommitCallback(array($orderObj, 'save'));
|
| 1124 |
+
|
| 1125 |
+
try {
|
| 1126 |
+
$transaction->save();
|
| 1127 |
+
|
| 1128 |
+
$data = array('cc_number'=>(int)$this->cc_number,
|
| 1129 |
+
'cc_type'=>$this->cc_type,
|
| 1130 |
+
'cc_exp_month'=>(int)$this->cc_month,
|
| 1131 |
+
'cc_exp_year'=>(int)$this->cc_year,
|
| 1132 |
+
'cc_last4'=>(int)substr($this->cc_number,-4)
|
| 1133 |
+
);
|
| 1134 |
+
|
| 1135 |
+
if($save_cc =='true')Mage::helper('connector')->saveCc($data);
|
| 1136 |
+
|
| 1137 |
+
} catch (Exception $e){
|
| 1138 |
+
Mage::throwException('Order Cancelled Bad Response from Credit Authorization.');
|
| 1139 |
+
exit;
|
| 1140 |
+
}
|
| 1141 |
+
|
| 1142 |
+
$orderObj->sendNewOrderEmail();
|
| 1143 |
+
|
| 1144 |
+
try{
|
| 1145 |
+
$quoteObj->setIsActive(0);
|
| 1146 |
+
$quoteObj->save();
|
| 1147 |
+
$orderId =$orderObj->getRealOrderId();
|
| 1148 |
+
/*$quoteObj->delete();*/
|
| 1149 |
+
|
| 1150 |
+
$cart = Mage::helper ( 'checkout/cart' )->getCart ();
|
| 1151 |
+
if($cart->getQuote ()->getItemsCount ())
|
| 1152 |
+
Mage::getSingleton('checkout/cart')->truncate()->save();
|
| 1153 |
+
|
| 1154 |
+
Mage::getSingleton('checkout/session')->clear();
|
| 1155 |
+
}
|
| 1156 |
+
catch(exception $e){
|
| 1157 |
+
//add mail function
|
| 1158 |
+
}
|
| 1159 |
+
|
| 1160 |
+
|
| 1161 |
+
|
| 1162 |
+
$result=array( 'message'=>'Order placed successfully.',
|
| 1163 |
+
'orderid'=>$orderId,
|
| 1164 |
+
'result'=>'success'
|
| 1165 |
+
|
| 1166 |
+
);
|
| 1167 |
+
|
| 1168 |
+
echo json_encode($result);exit;
|
| 1169 |
+
|
| 1170 |
+
}
|
| 1171 |
+
|
| 1172 |
+
|
| 1173 |
+
// Authorize.net payment Implementation
|
| 1174 |
+
|
| 1175 |
+
public function validateCarddtails($card_details){
|
| 1176 |
+
|
| 1177 |
+
if(!sizeof($card_details)):
|
| 1178 |
+
echo json_encode(array('status' =>'error','message' => 'Card Information is required in case of authorize.net payment method.'));
|
| 1179 |
+
exit;
|
| 1180 |
+
endif;
|
| 1181 |
+
|
| 1182 |
+
if(!$card_details['cc_type'] || !$card_details['cc_number'] ||
|
| 1183 |
+
!$card_details['cc_month'] || !$card_details['cc_year'] || !$card_details['cc_cid']):
|
| 1184 |
+
echo json_encode(array('status' =>'error','message' => 'Some Required card information is missing.'));
|
| 1185 |
+
exit;
|
| 1186 |
+
endif;
|
| 1187 |
+
$this->cc_type = $card_details['cc_type'];
|
| 1188 |
+
$this->cc_number = $card_details['cc_number'];
|
| 1189 |
+
$this->cc_month = $card_details['cc_month'];
|
| 1190 |
+
$this->cc_year = $card_details['cc_year'];
|
| 1191 |
+
$this->cc_cid = $card_details['cc_cid'];
|
| 1192 |
+
|
| 1193 |
+
|
| 1194 |
+
return true;
|
| 1195 |
+
|
| 1196 |
+
|
| 1197 |
+
}
|
| 1198 |
+
|
| 1199 |
+
/* URL : /restapi/cart/getcheckoutcart/
|
| 1200 |
+
Route: Connector
|
| 1201 |
+
Controller: cart
|
| 1202 |
+
Action: getcheckoutcart
|
| 1203 |
+
Request Parameter : None
|
| 1204 |
+
Method : POST
|
| 1205 |
+
Response : JSON
|
| 1206 |
+
{"product":[{"id":"3","sku":"test3","qty":7,"Name":"test3","Price":3500}],"subtotal":"3500.0000","grandtotal":"3500.0000","totalitems":"1","totalquantity":"3500.0000"}
|
| 1207 |
+
*/
|
| 1208 |
+
|
| 1209 |
+
public function getcheckoutcartAction(){
|
| 1210 |
+
$customerId =(int)$this->getRequest()->getParam('customerid');
|
| 1211 |
+
|
| 1212 |
+
if ($customerId) {
|
| 1213 |
+
|
| 1214 |
+
$customer = Mage::getModel('customer/customer')->load($customerId);
|
| 1215 |
+
try{
|
| 1216 |
+
$cart = Mage::getModel('sales/quote') ->loadByCustomer($customer);
|
| 1217 |
+
|
| 1218 |
+
if(!count($cart->getAllItems())):
|
| 1219 |
+
echo json_encode(array('status'=>'success','message'=>$product));
|
| 1220 |
+
exit;
|
| 1221 |
+
endif;
|
| 1222 |
+
$product_model = Mage::getModel ( 'catalog/product' );
|
| 1223 |
+
foreach ($cart->getAllItems() as $item) {
|
| 1224 |
+
|
| 1225 |
+
|
| 1226 |
+
|
| 1227 |
+
$productName= array();
|
| 1228 |
+
$productName['id'] = $item->getProductId();
|
| 1229 |
+
$productName['sku'] = $item->getSku();
|
| 1230 |
+
$productName['qty'] = $item->getQty();
|
| 1231 |
+
$productName['Name'] = $item->getProduct()->getName();
|
| 1232 |
+
/*$productName['Price'] = $item->getPrice()* $item->getQty();*/
|
| 1233 |
+
$productName['Price'] = $item->getPrice();
|
| 1234 |
+
$productName['image'] =Mage::helper('connector')-> Imageresize($product_model->load($item->getProductId())->getImage()
|
| 1235 |
+
,'product','100','100');
|
| 1236 |
+
|
| 1237 |
+
if($product_model->load($item->getProductId())->isConfigurable())
|
| 1238 |
+
$productName['configurable'] = $this->_getConfigurableOptions( $item );
|
| 1239 |
+
|
| 1240 |
+
if($product_model->load($item->getProductId())->getData('has_options'))
|
| 1241 |
+
$productName['custom_option'] = $this->_getCustomOption( $item );
|
| 1242 |
+
|
| 1243 |
+
$product['product'][] = $productName;
|
| 1244 |
+
|
| 1245 |
+
}
|
| 1246 |
+
$product['subtotal'] = $cart->getSubtotal();
|
| 1247 |
+
$product['grandtotal'] = $cart->getGrandTotal();
|
| 1248 |
+
$product['totalitems'] = $cart->getItemsCount();
|
| 1249 |
+
$product['symbol'] = Mage::app()->getLocale()->currency(Mage::app()->getStore()->getCurrentCurrencyCode())->getSymbol();
|
| 1250 |
+
|
| 1251 |
+
echo json_encode(array('status'=>'success','message'=>$product));
|
| 1252 |
+
|
| 1253 |
+
}
|
| 1254 |
+
catch(exception $e)
|
| 1255 |
+
{
|
| 1256 |
+
echo json_encode(array('status'=>'error','message'=>$e->getMessage()));
|
| 1257 |
+
}
|
| 1258 |
+
}
|
| 1259 |
+
else{
|
| 1260 |
+
|
| 1261 |
+
echo json_encode(array('status'=>'error','message'=>'Please Login.'));
|
| 1262 |
+
}
|
| 1263 |
+
|
| 1264 |
+
|
| 1265 |
+
}
|
| 1266 |
+
|
| 1267 |
+
/* Cancel Order API :
|
| 1268 |
+
|
| 1269 |
+
URL : /restapi/cart/cancelOrder/
|
| 1270 |
+
Route: Connector
|
| 1271 |
+
Controller: cart
|
| 1272 |
+
Action: cancelOrder
|
| 1273 |
+
Request Parameter orderId
|
| 1274 |
+
Method : POST
|
| 1275 |
+
Response : status(error,success),message
|
| 1276 |
+
|
| 1277 |
+
*/
|
| 1278 |
+
|
| 1279 |
+
public function cancelOrderAction(){
|
| 1280 |
+
$orderId =(int)$this->getRequest()->getParam('orderid');
|
| 1281 |
+
|
| 1282 |
+
if($orderId):
|
| 1283 |
+
if(Mage::getSingleton ( 'customer/session' )->isLoggedIn()):
|
| 1284 |
+
try{
|
| 1285 |
+
$order = Mage::getModel('sales/order')->loadByIncrementId($orderId);
|
| 1286 |
+
if(!$order->getId()):
|
| 1287 |
+
echo json_encode(array('status'=>'error','message'=>'Invalid Order Id.'));
|
| 1288 |
+
exit;
|
| 1289 |
+
endif;
|
| 1290 |
+
|
| 1291 |
+
$order->setState(Mage_Sales_Model_Order::STATE_CANCELED, true)->save();
|
| 1292 |
+
|
| 1293 |
+
$history = $order->addStatusHistoryComment('Order marked as cancelled by User.', false);
|
| 1294 |
+
$history->setIsCustomerNotified(true);
|
| 1295 |
+
|
| 1296 |
+
if($order->canCancel())
|
| 1297 |
+
$order->cancel()->save();
|
| 1298 |
+
}
|
| 1299 |
+
catch(Exceptio $e)
|
| 1300 |
+
{
|
| 1301 |
+
echo json_encode(array('status'=>'error','message'=>$e->getMessage()));
|
| 1302 |
+
exit;
|
| 1303 |
+
}
|
| 1304 |
+
|
| 1305 |
+
echo json_encode(array('status'=>'success','message'=>'Order marked as cancelled by User.'));
|
| 1306 |
+
exit;
|
| 1307 |
+
else:
|
| 1308 |
+
echo json_encode(array('status'=>'error','message'=>'Login first tio cancel Order.'));
|
| 1309 |
+
exit;
|
| 1310 |
+
endif;
|
| 1311 |
+
|
| 1312 |
+
else:
|
| 1313 |
+
echo json_encode(array('status'=>'error','message'=>'Please send Order Id to cancel.'));
|
| 1314 |
+
exit;
|
| 1315 |
+
endif;
|
| 1316 |
+
|
| 1317 |
+
}
|
| 1318 |
+
|
| 1319 |
+
/* Get Saved Cards API :
|
| 1320 |
+
|
| 1321 |
+
URL : /restapi/cart/getsavedCc/
|
| 1322 |
+
Route: Connector
|
| 1323 |
+
Controller: cart
|
| 1324 |
+
Action: getsavedCc
|
| 1325 |
+
Method : POST
|
| 1326 |
+
|
| 1327 |
+
*/
|
| 1328 |
+
|
| 1329 |
+
public function getsavedCcAction(){
|
| 1330 |
+
|
| 1331 |
+
$user_id = Mage::getSingleton("customer/session")->getId();
|
| 1332 |
+
|
| 1333 |
+
$collection = Mage::getModel("connector/connector")->getCollection();
|
| 1334 |
+
$collection->addFieldToFilter('user_id',array('eq'=>$user_id))
|
| 1335 |
+
->addFieldToSelect(array('id','cc_number','cc_last4','cc_type','cc_exp_month','cc_exp_year'));
|
| 1336 |
+
|
| 1337 |
+
if($collection->getSize()):
|
| 1338 |
+
echo json_encode($collection->getData());
|
| 1339 |
+
exit;
|
| 1340 |
+
else:
|
| 1341 |
+
echo json_encode(array());
|
| 1342 |
+
exit;
|
| 1343 |
+
|
| 1344 |
+
endif;
|
| 1345 |
+
echo json_encode(array()); exit;
|
| 1346 |
+
|
| 1347 |
+
|
| 1348 |
+
}
|
| 1349 |
+
|
| 1350 |
+
/* Remove Saved Cards API :
|
| 1351 |
+
|
| 1352 |
+
URL : /restapi/cart/removesavedCc/
|
| 1353 |
+
Route: Connector
|
| 1354 |
+
Controller: cart
|
| 1355 |
+
Action: removesavedCc
|
| 1356 |
+
Parameter : id*
|
| 1357 |
+
Method : POST
|
| 1358 |
+
|
| 1359 |
+
*/
|
| 1360 |
+
|
| 1361 |
+
public function removesavedCcAction(){
|
| 1362 |
+
|
| 1363 |
+
$cc_id =(int)$this->getRequest()->getParam('id');
|
| 1364 |
+
|
| 1365 |
+
|
| 1366 |
+
$user_id = Mage::getSingleton("customer/session")->getId();
|
| 1367 |
+
|
| 1368 |
+
if($cc_id && $user_id):
|
| 1369 |
+
|
| 1370 |
+
$collection = Mage::getModel("connector/connector")->getCollection();
|
| 1371 |
+
|
| 1372 |
+
$collection->addFieldToFilter(array('user_id', 'id'), array( array('eq'=>$user_id),
|
| 1373 |
+
array('eq'=>$cc_id)
|
| 1374 |
+
));
|
| 1375 |
+
|
| 1376 |
+
if($collection->getSize()):
|
| 1377 |
+
foreach ($collection as $cc_card):
|
| 1378 |
+
try{$cc_card->delete();}
|
| 1379 |
+
catch(expection $e){
|
| 1380 |
+
echo json_encode( array('status' => 'error' , 'massage'=>$e->getMessage() ));
|
| 1381 |
+
exit;
|
| 1382 |
+
}
|
| 1383 |
+
endforeach;
|
| 1384 |
+
endif;
|
| 1385 |
+
echo json_encode( array('status' => 'success' , 'massage'=>'Card remove successfully' ));
|
| 1386 |
+
exit;
|
| 1387 |
+
else:
|
| 1388 |
+
echo json_encode( array('status' => 'error' , 'massage'=>'error in removing card' ));
|
| 1389 |
+
exit;
|
| 1390 |
+
endif;
|
| 1391 |
+
}
|
| 1392 |
+
|
| 1393 |
+
|
| 1394 |
+
}
|
app/code/local/Mss/Connector/controllers/CreditController.php
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class Mss_Connector_CreditController extends Mage_Core_Controller_Front_Action{
|
| 4 |
+
|
| 5 |
+
public function _construct(){
|
| 6 |
+
|
| 7 |
+
header('content-type: application/json; charset=utf-8');
|
| 8 |
+
header("access-control-allow-origin: *");
|
| 9 |
+
Mage::helper('connector')->loadParent(Mage::app()->getFrontController()->getRequest()->getHeader('token'));
|
| 10 |
+
parent::_construct();
|
| 11 |
+
|
| 12 |
+
}
|
| 13 |
+
|
| 14 |
+
private function getCustomerId($customer)
|
| 15 |
+
{
|
| 16 |
+
$customerid = Mage::getModel('customer/customer')->load($customer);
|
| 17 |
+
if ($customerid->getData()) {
|
| 18 |
+
return $customerid->getId();
|
| 19 |
+
} else {
|
| 20 |
+
$collection = Mage::getModel('customer/customer')->getCollection();
|
| 21 |
+
$collection->addFieldToFilter('email', $customer);
|
| 22 |
+
return $collection->getFirstItem()->getId();
|
| 23 |
+
}
|
| 24 |
+
}
|
| 25 |
+
|
| 26 |
+
/* set transaction type
|
| 27 |
+
*
|
| 28 |
+
* return type_id
|
| 29 |
+
*/
|
| 30 |
+
|
| 31 |
+
private function setType($type)
|
| 32 |
+
{
|
| 33 |
+
$collection = Mage::getModel('customercredit/typetransaction')->getCollection();
|
| 34 |
+
$collection->addFieldToFilter('transaction_name', $type);
|
| 35 |
+
if (count($collection)) {
|
| 36 |
+
return $collection->getFirstItem()->getId();
|
| 37 |
+
} else {
|
| 38 |
+
$update_type = Mage::getModel('customercredit/typetransaction');
|
| 39 |
+
$update_type->setTransactionName($type);
|
| 40 |
+
try {
|
| 41 |
+
$update_type->save();
|
| 42 |
+
return $update_type->getId();
|
| 43 |
+
} catch (exception $e) {
|
| 44 |
+
return null;
|
| 45 |
+
}
|
| 46 |
+
}
|
| 47 |
+
}
|
| 48 |
+
|
| 49 |
+
/* update credit balance */
|
| 50 |
+
|
| 51 |
+
public function updateBalance($customer, $value)
|
| 52 |
+
{
|
| 53 |
+
$customer_id = $this->getCustomerId($customer);
|
| 54 |
+
$customer = Mage::getModel('customer/customer')->load($customer_id);
|
| 55 |
+
$customer->setCreditValue($customer->getCreditValue() + $value)->save();
|
| 56 |
+
}
|
| 57 |
+
|
| 58 |
+
public function getCreditBalanceAction()
|
| 59 |
+
{
|
| 60 |
+
$customer_id=Mage::app ()->getRequest ()->getParam ( 'customer_id' );
|
| 61 |
+
if (!Zend_Validate::is($customer_id, 'NotEmpty')):
|
| 62 |
+
echo json_encode(array('status'=>'error','message'=>'Customer Id should not be empty'));
|
| 63 |
+
exit;
|
| 64 |
+
endif;
|
| 65 |
+
$customer = Mage::getModel('customer/customer')->load($customer_id);
|
| 66 |
+
if(count($customer->getData())>0):
|
| 67 |
+
echo json_encode('The credit balance of customer id '.$customer_id.'is'.$customer->getCreditValue());
|
| 68 |
+
else:
|
| 69 |
+
echo json_encode(array('status'=>'error','message'=>'CustomerId does not exist'));
|
| 70 |
+
endif;
|
| 71 |
+
|
| 72 |
+
}
|
| 73 |
+
|
| 74 |
+
public function updateCreditAction()
|
| 75 |
+
{
|
| 76 |
+
$customer_id=Mage::app ()->getRequest ()->getParam ( 'customer_id' );
|
| 77 |
+
$transaction_type=Mage::app ()->getRequest ()->getParam ( 'transaction_type' );
|
| 78 |
+
$transaction_detail=Mage::app ()->getRequest ()->getParam ( 'transaction_detail' );
|
| 79 |
+
$order_id=Mage::app ()->getRequest ()->getParam ( 'order_id' );
|
| 80 |
+
$amount_credit=Mage::app ()->getRequest ()->getParam ( 'amount_credit' );
|
| 81 |
+
|
| 82 |
+
if (!Zend_Validate::is($customer_id, 'NotEmpty')):
|
| 83 |
+
echo json_encode(array('status'=>'error','message'=>'Customer Id should not be empty'));
|
| 84 |
+
exit;
|
| 85 |
+
endif;
|
| 86 |
+
|
| 87 |
+
if (!Zend_Validate::is($transaction_type, 'NotEmpty')):
|
| 88 |
+
echo json_encode(array('status'=>'error','message'=>'Transaction Type should not be empty'));
|
| 89 |
+
exit;
|
| 90 |
+
endif;
|
| 91 |
+
|
| 92 |
+
if (!Zend_Validate::is($amount_credit, 'NotEmpty')):
|
| 93 |
+
echo json_encode(array('status'=>'error','message'=>'Amount Credit should not be empty'));
|
| 94 |
+
exit;
|
| 95 |
+
endif;
|
| 96 |
+
|
| 97 |
+
Mage::getModel('customercredit/transaction')->addTransactionHistory($customer_id, $transaction_type, $transaction_detail, $order_id, $amount_credit);
|
| 98 |
+
$this->updateBalance($customer_id, $amount_credit);
|
| 99 |
+
echo json_encode(array('status'=>'success','message'=>'Credit has been updated'));
|
| 100 |
+
}
|
| 101 |
+
|
| 102 |
+
public function redeemCreditAction()
|
| 103 |
+
{
|
| 104 |
+
|
| 105 |
+
$customer_id=Mage::app ()->getRequest ()->getParam ( 'customer_id' );
|
| 106 |
+
$creditcode=Mage::app ()->getRequest ()->getParam ( 'creditcode' );
|
| 107 |
+
if (!Zend_Validate::is($customer_id, 'NotEmpty')):
|
| 108 |
+
echo json_encode(array('status'=>'error','message'=>'Customer Id should not be empty'));
|
| 109 |
+
exit;
|
| 110 |
+
endif;
|
| 111 |
+
|
| 112 |
+
if (!Zend_Validate::is($creditcode, 'NotEmpty')):
|
| 113 |
+
echo json_encode(array('status'=>'error','message'=>'Credit Code should not be empty'));
|
| 114 |
+
exit;
|
| 115 |
+
endif;
|
| 116 |
+
|
| 117 |
+
$credit = Mage::getModel('customercredit/creditcode')->getCollection()
|
| 118 |
+
->addFieldToFilter('credit_code', $creditcode);
|
| 119 |
+
if(count($credit->getData)):
|
| 120 |
+
echo json_encode(array('status'=>'error','message'=>'Customer ID does not be exist'));
|
| 121 |
+
exit;
|
| 122 |
+
endif;
|
| 123 |
+
if ($credit->getSize() == 0) {
|
| 124 |
+
json_encode(array('status'=>'error','message'=>' Code is invalid. Please check again!'));
|
| 125 |
+
exit;
|
| 126 |
+
}
|
| 127 |
+
if ($credit->getFirstItem()->getStatus() != 1) {
|
| 128 |
+
json_encode(array('status'=>'error','message'=>' Code was used. Please check again!'));
|
| 129 |
+
}
|
| 130 |
+
|
| 131 |
+
Mage::getModel('customercredit/creditcode')
|
| 132 |
+
->changeCodeStatus($credit->getFirstItem()->getId(), Magestore_Customercredit_Model_Status::STATUS_UNUSED);
|
| 133 |
+
$credit_amount = $credit->getFirstItem()->getAmountCredit();
|
| 134 |
+
Mage::getModel('customercredit/transaction')->addTransactionHistory($customer_id, Magestore_Customercredit_Model_TransactionType::TYPE_REDEEM_CREDIT, "redeemcredit", "", $credit_amount);
|
| 135 |
+
$this->updateBalance($customer_id, $credit_amount);
|
| 136 |
+
json_encode(array('status'=>'success','message'=>' Credit has been redeemed'));
|
| 137 |
+
}
|
| 138 |
+
}
|
| 139 |
+
|
| 140 |
+
|
| 141 |
+
|
| 142 |
+
|
| 143 |
+
?>
|
app/code/local/Mss/Connector/controllers/CustomerController.php
ADDED
|
@@ -0,0 +1,802 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
class Mss_Connector_CustomerController extends Mage_Core_Controller_Front_Action {
|
| 3 |
+
|
| 4 |
+
|
| 5 |
+
const XML_PATH_REGISTER_EMAIL_TEMPLATE = 'customer/create_account/email_template';
|
| 6 |
+
const XML_PATH_REGISTER_EMAIL_IDENTITY = 'customer/create_account/email_identity';
|
| 7 |
+
const XML_PATH_REMIND_EMAIL_TEMPLATE = 'customer/password/remind_email_template';
|
| 8 |
+
const XML_PATH_FORGOT_EMAIL_TEMPLATE = 'customer/password/forgot_email_template';
|
| 9 |
+
const XML_PATH_FORGOT_EMAIL_IDENTITY = 'customer/password/forgot_email_identity';
|
| 10 |
+
const XML_PATH_DEFAULT_EMAIL_DOMAIN = 'customer/create_account/email_domain';
|
| 11 |
+
const XML_PATH_IS_CONFIRM = 'customer/create_account/confirm';
|
| 12 |
+
const XML_PATH_CONFIRM_EMAIL_TEMPLATE = 'customer/create_account/email_confirmation_template';
|
| 13 |
+
const XML_PATH_CONFIRMED_EMAIL_TEMPLATE = 'customer/create_account/email_confirmed_template';
|
| 14 |
+
const XML_PATH_GENERATE_HUMAN_FRIENDLY_ID = 'customer/create_account/generate_human_friendly_id';
|
| 15 |
+
|
| 16 |
+
public function _construct(){
|
| 17 |
+
|
| 18 |
+
header('content-type: application/json; charset=utf-8');
|
| 19 |
+
header("access-control-allow-origin: *");
|
| 20 |
+
Mage::helper('connector')->loadParent(Mage::app()->getFrontController()->getRequest()->getHeader('token'));
|
| 21 |
+
parent::_construct();
|
| 22 |
+
|
| 23 |
+
}
|
| 24 |
+
|
| 25 |
+
/*confirm Login API
|
| 26 |
+
* Endpoint : baseurl/restapi/customer/loginStatus
|
| 27 |
+
* Return : json
|
| 28 |
+
* Return Parameters : status : true/false
|
| 29 |
+
*/
|
| 30 |
+
|
| 31 |
+
public function loginStatusAction(){
|
| 32 |
+
if (Mage::getSingleton ( 'customer/session' )->isLoggedIn()):
|
| 33 |
+
echo json_encode(array('status'=>true));
|
| 34 |
+
exit;
|
| 35 |
+
else:
|
| 36 |
+
echo json_encode(array('status'=>false));
|
| 37 |
+
exit;
|
| 38 |
+
endif;
|
| 39 |
+
}
|
| 40 |
+
|
| 41 |
+
public function statusAction() {
|
| 42 |
+
|
| 43 |
+
$customerinfo = array ();
|
| 44 |
+
|
| 45 |
+
if (Mage::getSingleton ( 'customer/session' )->isLoggedIn()) {
|
| 46 |
+
$customer = Mage::getSingleton ( 'customer/session' )->getCustomer ();
|
| 47 |
+
$storeUrl = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA);
|
| 48 |
+
|
| 49 |
+
$customerinfo = array (
|
| 50 |
+
'id'=>$customer->getId(),
|
| 51 |
+
'name' => $customer->getFirstname () .$customer->getLastname (),
|
| 52 |
+
'email' => $customer->getEmail (),
|
| 53 |
+
);
|
| 54 |
+
|
| 55 |
+
return $customerinfo;
|
| 56 |
+
} else
|
| 57 |
+
|
| 58 |
+
return false;
|
| 59 |
+
}
|
| 60 |
+
|
| 61 |
+
|
| 62 |
+
public function loginAction() {
|
| 63 |
+
|
| 64 |
+
if(Mage::app()->getRequest()->getParam('login_token') && Mage::app()->getRequest()->getParam ('sociallogintype'))
|
| 65 |
+
Mage::helper('sociallogin')->socialloginRequest(Mage::app()->getRequest()->getParam('login_token'),Mage::app()->getRequest()->getParam('sociallogintype'));
|
| 66 |
+
|
| 67 |
+
|
| 68 |
+
$session = Mage::getSingleton ( 'customer/session' );
|
| 69 |
+
if (Mage::getSingleton ( 'customer/session' )->isLoggedIn ()) {
|
| 70 |
+
$session->logout ();
|
| 71 |
+
}
|
| 72 |
+
$username = Mage::app ()->getRequest ()->getParam ( 'username' );
|
| 73 |
+
$password = Mage::app ()->getRequest ()->getParam ( 'password' );
|
| 74 |
+
|
| 75 |
+
try {
|
| 76 |
+
if (!$session->login ( $username, $password )) {
|
| 77 |
+
echo json_encode(array('status' => 'error','message'=>'wrong username or password.'));
|
| 78 |
+
exit;
|
| 79 |
+
} else {
|
| 80 |
+
|
| 81 |
+
echo json_encode(array('status' => 'success','message'=>$this->statusAction ()));
|
| 82 |
+
exit;
|
| 83 |
+
}
|
| 84 |
+
} catch ( Mage_Core_Exception $e ) {
|
| 85 |
+
switch ($e->getCode ()) {
|
| 86 |
+
case Mage_Customer_Model_Customer::EXCEPTION_EMAIL_NOT_CONFIRMED :
|
| 87 |
+
$value = Mage::helper ( 'customer' )->getEmailConfirmationUrl ( $uname );
|
| 88 |
+
$message = Mage::helper ( 'customer' )->__ ( 'This account is not confirmed. <a href="%s">Click here</a> to resend confirmation email.', $value );
|
| 89 |
+
echo json_encode ( array (
|
| 90 |
+
'status' => 'error',
|
| 91 |
+
'message' => $message
|
| 92 |
+
) );
|
| 93 |
+
break;
|
| 94 |
+
case Mage_Customer_Model_Customer::EXCEPTION_INVALID_EMAIL_OR_PASSWORD :
|
| 95 |
+
$message = $e->getMessage ();
|
| 96 |
+
echo json_encode ( array (
|
| 97 |
+
'status' => 'error',
|
| 98 |
+
'message' => $message
|
| 99 |
+
) );
|
| 100 |
+
break;
|
| 101 |
+
default :
|
| 102 |
+
$message = $e->getMessage ();
|
| 103 |
+
echo json_encode ( array (
|
| 104 |
+
'status' => 'error',
|
| 105 |
+
'message' => $message
|
| 106 |
+
) );
|
| 107 |
+
}
|
| 108 |
+
}
|
| 109 |
+
}
|
| 110 |
+
|
| 111 |
+
|
| 112 |
+
public function registerAction() {
|
| 113 |
+
$params = Mage::app ()->getRequest ()->getParams ();
|
| 114 |
+
|
| 115 |
+
$session = Mage::getSingleton ( 'customer/session' );
|
| 116 |
+
$session->setEscapeMessages ( true );
|
| 117 |
+
|
| 118 |
+
$customer = Mage::registry ( 'current_customer' );
|
| 119 |
+
header('content-type: application/json; charset=utf-8');
|
| 120 |
+
header("access-control-allow-origin: *");
|
| 121 |
+
$errors = array ();
|
| 122 |
+
if (is_null ( $customer )) {
|
| 123 |
+
$customer = Mage::getModel ( 'customer/customer' )->setId ( null );
|
| 124 |
+
}
|
| 125 |
+
if (isset ( $params ['isSubscribed'] )) {
|
| 126 |
+
$customer->setIsSubscribed ( 1 );
|
| 127 |
+
}
|
| 128 |
+
if( (null==Mage::app ()->getRequest ()->getParam ('password') ) || (null==Mage::app ()->getRequest ()->getParam ('email')) ){
|
| 129 |
+
echo json_encode ( array (
|
| 130 |
+
false,
|
| 131 |
+
'0x1100',
|
| 132 |
+
'empty password or email.'
|
| 133 |
+
) );
|
| 134 |
+
return ;
|
| 135 |
+
}
|
| 136 |
+
$customer->getGroupId ();
|
| 137 |
+
try {
|
| 138 |
+
$customer->setPassword ( $params ['password'] );
|
| 139 |
+
$customer->setConfirmation ( $this->getRequest ()->getPost ( 'confirmation', $params ['password'] ) );
|
| 140 |
+
$customer->setData ( 'email', $params ['email'] );
|
| 141 |
+
$customer->setData ( 'firstname', $params ['firstname'] );
|
| 142 |
+
$customer->setData ( 'lastname', $params ['lastname'] );
|
| 143 |
+
$customer->setData ( 'gender', $params ['gender'] );
|
| 144 |
+
$customer->setData ( 'default_mobile_number', $params ['default_mobile_number'] );
|
| 145 |
+
$validationResult = count ( $errors ) == 0;
|
| 146 |
+
if (true === $validationResult) {
|
| 147 |
+
$customer->save ();
|
| 148 |
+
if ($customer->isConfirmationRequired ()) {
|
| 149 |
+
$customer->sendNewAccountEmail ( 'confirmation', $session->getBeforeAuthUrl (), Mage::app ()->getStore ()->getId () );
|
| 150 |
+
} else {
|
| 151 |
+
$session->setCustomerAsLoggedIn ( $customer );
|
| 152 |
+
$customer->sendNewAccountEmail ( 'registered', '', Mage::app ()->getStore ()->getId () );
|
| 153 |
+
}
|
| 154 |
+
|
| 155 |
+
$addressData = $session->getGuestAddress ();
|
| 156 |
+
if ($addressData && $customer->getId ()) {
|
| 157 |
+
$address = Mage::getModel ( 'customer/address' );
|
| 158 |
+
$address->setData ( $addressData );
|
| 159 |
+
$address->setCustomerId ( $customer->getId () );
|
| 160 |
+
$address->save ();
|
| 161 |
+
$session->unsGuestAddress ();
|
| 162 |
+
}
|
| 163 |
+
|
| 164 |
+
echo json_encode ( array (
|
| 165 |
+
true,
|
| 166 |
+
'0x0000',
|
| 167 |
+
array ()
|
| 168 |
+
) );
|
| 169 |
+
} else {
|
| 170 |
+
echo json_encode ( array (
|
| 171 |
+
false,
|
| 172 |
+
'0x1000',
|
| 173 |
+
$errors
|
| 174 |
+
) );
|
| 175 |
+
}
|
| 176 |
+
} catch ( Mage_Core_Exception $e ) {
|
| 177 |
+
if ($e->getCode () === Mage_Customer_Model_Customer::EXCEPTION_EMAIL_EXISTS) {
|
| 178 |
+
$url = Mage::getUrl ( 'customer/account/forgotpassword' );
|
| 179 |
+
$message = $this->__ ( 'There is already an account with this email address. If you are sure that it is your email address, <a href="%s">click here</a> to get your password and access your account.', $url );
|
| 180 |
+
$session->setEscapeMessages ( false );
|
| 181 |
+
} else {
|
| 182 |
+
$message = $e->getMessage ();
|
| 183 |
+
}
|
| 184 |
+
echo json_encode ( array (
|
| 185 |
+
false,
|
| 186 |
+
'0x1000',
|
| 187 |
+
array (
|
| 188 |
+
$message
|
| 189 |
+
)
|
| 190 |
+
) );
|
| 191 |
+
} catch ( Exception $e ) {
|
| 192 |
+
echo json_encode ( array (
|
| 193 |
+
false,
|
| 194 |
+
'0x1000',
|
| 195 |
+
$e->getMessage ()
|
| 196 |
+
) );
|
| 197 |
+
}
|
| 198 |
+
}
|
| 199 |
+
|
| 200 |
+
|
| 201 |
+
public function forgotpwdAction() {
|
| 202 |
+
$email = Mage::app ()->getRequest ()->getParam ( 'email' );
|
| 203 |
+
$session = Mage::getSingleton ( 'customer/session' );
|
| 204 |
+
$customer = Mage::registry ( 'current_customer' );
|
| 205 |
+
if (is_null ( $customer )) {
|
| 206 |
+
$customer = Mage::getModel ( 'customer/customer' )->setId ( null );
|
| 207 |
+
}
|
| 208 |
+
if ($this->_user_isexists ( $email )) {
|
| 209 |
+
$customer = Mage::getModel ( 'customer/customer' )->setWebsiteId ( Mage::app ()->getStore ()->getWebsiteId () )->loadByEmail ( $email );
|
| 210 |
+
$this->_sendEmailTemplate ( $customer,self::XML_PATH_FORGOT_EMAIL_TEMPLATE, self::XML_PATH_FORGOT_EMAIL_IDENTITY, array (
|
| 211 |
+
'customer' => $customer
|
| 212 |
+
), $storeId );
|
| 213 |
+
echo json_encode ( array (
|
| 214 |
+
'status' => 'error',
|
| 215 |
+
'message' => 'Request has sent to your Email.'
|
| 216 |
+
) );
|
| 217 |
+
} else
|
| 218 |
+
echo json_encode ( array (
|
| 219 |
+
'status' => 'error',
|
| 220 |
+
'message' => 'No matched email data.'
|
| 221 |
+
) );
|
| 222 |
+
}
|
| 223 |
+
public function logoutAction() {
|
| 224 |
+
header('content-type: application/json; charset=utf-8');
|
| 225 |
+
header("access-control-allow-origin: *");
|
| 226 |
+
try {
|
| 227 |
+
Mage::getSingleton ( 'customer/session' )->logout();
|
| 228 |
+
echo json_encode(array(true, '0x0000', null));
|
| 229 |
+
} catch (Exception $e) {
|
| 230 |
+
echo json_encode(array(false, '0x1000', $e->getMessage()));
|
| 231 |
+
}
|
| 232 |
+
}
|
| 233 |
+
protected function _user_isexists($email) {
|
| 234 |
+
$info = array ();
|
| 235 |
+
$customer = Mage::getModel ( 'customer/customer' )->setWebsiteId ( Mage::app ()->getStore ()->getWebsiteId () )->loadByEmail ( $email );
|
| 236 |
+
$info ['uname_is_exist'] = $customer->getId () > 0;
|
| 237 |
+
$result = array (
|
| 238 |
+
true,
|
| 239 |
+
'0x0000',
|
| 240 |
+
$info
|
| 241 |
+
);
|
| 242 |
+
return $customer->getId () > 0;
|
| 243 |
+
}
|
| 244 |
+
|
| 245 |
+
|
| 246 |
+
protected function _sendEmailTemplate($customer,$template, $sender, $templateParams = array(), $storeId = null)
|
| 247 |
+
{
|
| 248 |
+
/** @var $mailer Mage_Core_Model_Email_Template_Mailer */
|
| 249 |
+
$mailer = Mage::getModel('core/email_template_mailer');
|
| 250 |
+
$emailInfo = Mage::getModel('core/email_info');
|
| 251 |
+
$emailInfo->addTo($customer->getEmail(), $customer->getName());
|
| 252 |
+
$mailer->addEmailInfo($emailInfo);
|
| 253 |
+
|
| 254 |
+
// Set all required params and send emails
|
| 255 |
+
$mailer->setSender(Mage::getStoreConfig($sender, $storeId));
|
| 256 |
+
$mailer->setStoreId($storeId);
|
| 257 |
+
$mailer->setTemplateId(Mage::getStoreConfig($template, $storeId));
|
| 258 |
+
$mailer->setTemplateParams($templateParams);
|
| 259 |
+
$mailer->send();
|
| 260 |
+
return $this;
|
| 261 |
+
}
|
| 262 |
+
|
| 263 |
+
|
| 264 |
+
# set shipping Address and billing Address for customer
|
| 265 |
+
public function setAddressAction()
|
| 266 |
+
{
|
| 267 |
+
|
| 268 |
+
try {
|
| 269 |
+
$userid = Mage::app ()->getRequest ()->getParam ( 'userid' );
|
| 270 |
+
//$session = Mage::getSingleton ( 'customer/session' );
|
| 271 |
+
//if (Mage::getSingleton ( 'customer/session' )->isLoggedIn ()) {
|
| 272 |
+
if($userid){
|
| 273 |
+
$customerId = $userid;
|
| 274 |
+
$data=$this->getRequest()->getPost();
|
| 275 |
+
|
| 276 |
+
|
| 277 |
+
if (!Zend_Validate::is($data['firstname'], 'NotEmpty')):
|
| 278 |
+
echo json_encode(array('status'=>'error','message'=>'Firstname should not be empty'));
|
| 279 |
+
exit;
|
| 280 |
+
endif;
|
| 281 |
+
if (!Zend_Validate::is($data['lastname'], 'NotEmpty')):
|
| 282 |
+
echo json_encode(array('status'=>'error','message'=>'Lastname should not be empty'));
|
| 283 |
+
exit;
|
| 284 |
+
endif;
|
| 285 |
+
if (!Zend_Validate::is($data['street'], 'NotEmpty')):
|
| 286 |
+
echo json_encode(array('status'=>'error','message'=>'Street should not be empty'));
|
| 287 |
+
exit;
|
| 288 |
+
endif;
|
| 289 |
+
if (!Zend_Validate::is($data['city'], 'NotEmpty')):
|
| 290 |
+
echo json_encode(array('status'=>'error','message'=>'City should not be empty'));
|
| 291 |
+
exit;
|
| 292 |
+
endif;
|
| 293 |
+
if (!Zend_Validate::is($data['country_id'], 'NotEmpty') || $data['country_id'] == 'undefined'):
|
| 294 |
+
echo json_encode(array('status'=>'error','message'=>'Country_id should not be empty'));
|
| 295 |
+
exit;
|
| 296 |
+
endif;
|
| 297 |
+
if (!Zend_Validate::is($data['region'], 'NotEmpty')):
|
| 298 |
+
echo json_encode(array('status'=>'error','message'=>'Region should not be empty'));
|
| 299 |
+
exit;
|
| 300 |
+
endif;
|
| 301 |
+
if (!Zend_Validate::is($data['postcode'], 'NotEmpty')):
|
| 302 |
+
echo json_encode(array('status'=>'error','message'=>'Postcode should not be empty'));
|
| 303 |
+
exit;
|
| 304 |
+
endif;
|
| 305 |
+
if (!Zend_Validate::is($data['telephone'], 'NotEmpty')):
|
| 306 |
+
echo json_encode(array('status'=>'error','message'=>'Telephone should not be empty'));
|
| 307 |
+
exit;
|
| 308 |
+
endif;
|
| 309 |
+
|
| 310 |
+
if($data['firstname']==null):
|
| 311 |
+
echo json_encode ( array (
|
| 312 |
+
'status' => 'error',
|
| 313 |
+
'message' => 'please enter the firstname,'));
|
| 314 |
+
endif;
|
| 315 |
+
|
| 316 |
+
|
| 317 |
+
$addressData = array (
|
| 318 |
+
'firstname' => $data['firstname'],
|
| 319 |
+
'lastname'=> $data['lastname'],
|
| 320 |
+
'street' => $data['street'],
|
| 321 |
+
'city' => $data['city'],
|
| 322 |
+
'country_id' => $data['country_id'],
|
| 323 |
+
'region' => $data['region'],
|
| 324 |
+
'postcode' => $data['postcode'],
|
| 325 |
+
'telephone' => $data['telephone'],
|
| 326 |
+
'fax' => @$data['fax'],
|
| 327 |
+
'is_default_billing' => '1',
|
| 328 |
+
'is_default_shipping' => '1',
|
| 329 |
+
);
|
| 330 |
+
|
| 331 |
+
$address = Mage::getModel("customer/address");
|
| 332 |
+
$address->addData($addressData);
|
| 333 |
+
$address->setCustomerId($customerId);
|
| 334 |
+
|
| 335 |
+
try{
|
| 336 |
+
$address->save();
|
| 337 |
+
$result['id']=$address->getId();
|
| 338 |
+
$result['message']='Address added successfully.';
|
| 339 |
+
$result['status']='success';
|
| 340 |
+
|
| 341 |
+
echo json_encode($result);
|
| 342 |
+
}
|
| 343 |
+
catch (Exception $e) {
|
| 344 |
+
|
| 345 |
+
echo json_encode ( array (
|
| 346 |
+
'status' => 'error',
|
| 347 |
+
'message' => $e->getMessage()
|
| 348 |
+
) );
|
| 349 |
+
}
|
| 350 |
+
|
| 351 |
+
|
| 352 |
+
|
| 353 |
+
}
|
| 354 |
+
else{
|
| 355 |
+
|
| 356 |
+
echo json_encode ( array (
|
| 357 |
+
'status' => 'error',
|
| 358 |
+
'message' => 'No matched email data.'
|
| 359 |
+
) );
|
| 360 |
+
$session->logout();
|
| 361 |
+
}
|
| 362 |
+
|
| 363 |
+
} catch (Exception $e) {
|
| 364 |
+
echo $e->getMessage();
|
| 365 |
+
}
|
| 366 |
+
|
| 367 |
+
|
| 368 |
+
}
|
| 369 |
+
|
| 370 |
+
public function getAddressbyidAction()
|
| 371 |
+
{
|
| 372 |
+
$id=(int)$this->getRequest()->getParam('addressid');
|
| 373 |
+
|
| 374 |
+
|
| 375 |
+
$address=Mage::getModel('customer/address')->load($id);
|
| 376 |
+
|
| 377 |
+
if($address->getId()):
|
| 378 |
+
|
| 379 |
+
|
| 380 |
+
$result=array(
|
| 381 |
+
|
| 382 |
+
'id'=>$address->getId(),
|
| 383 |
+
'firstname'=>$address->getFirstname(),
|
| 384 |
+
'lastname'=>$address->getLastname(),
|
| 385 |
+
'street'=>$address->getStreet1().''.$address->getStreet2(),
|
| 386 |
+
'city'=>$address->getCity(),
|
| 387 |
+
'country_id'=>Mage::getModel('directory/country')->loadByCode($address->getCountryId())->getName(),
|
| 388 |
+
'region'=>$address->getRegion(),
|
| 389 |
+
'postcode'=>$address->getPostcode(),
|
| 390 |
+
'telephone'=>$address->getTelephone(),
|
| 391 |
+
'fax'=>$address->getFax(),
|
| 392 |
+
|
| 393 |
+
|
| 394 |
+
|
| 395 |
+
);
|
| 396 |
+
echo json_encode($result);
|
| 397 |
+
|
| 398 |
+
else:
|
| 399 |
+
echo json_encode ( array (
|
| 400 |
+
'code' => '0x0001',
|
| 401 |
+
'message' => 'No matched email data.'
|
| 402 |
+
) );
|
| 403 |
+
endif;
|
| 404 |
+
|
| 405 |
+
|
| 406 |
+
}
|
| 407 |
+
|
| 408 |
+
# get shipping Address listing of customer
|
| 409 |
+
public function getAddressAction()
|
| 410 |
+
{
|
| 411 |
+
|
| 412 |
+
try {
|
| 413 |
+
$session = Mage::getSingleton ( 'customer/session' );
|
| 414 |
+
$userid = Mage::app ()->getRequest ()->getParam ( 'userid' );
|
| 415 |
+
|
| 416 |
+
|
| 417 |
+
if($userid){
|
| 418 |
+
|
| 419 |
+
$customerId=$session->getId();
|
| 420 |
+
|
| 421 |
+
$customer = Mage::getModel('customer/customer')->load($userid); //insert cust ID
|
| 422 |
+
|
| 423 |
+
#create customer address array
|
| 424 |
+
$customerAddress = array();
|
| 425 |
+
#loop to create the array
|
| 426 |
+
foreach ($customer->getAddresses() as $address)
|
| 427 |
+
{
|
| 428 |
+
$customerAddress[] =array(
|
| 429 |
+
|
| 430 |
+
'id'=>$address->getId(),
|
| 431 |
+
'firstname'=>$address->getFirstname(),
|
| 432 |
+
'lastname'=>$address->getLastname(),
|
| 433 |
+
'street'=>$address->getStreet1().''.$address->getStreet2(),
|
| 434 |
+
'city'=>$address->getCity(),
|
| 435 |
+
// 'country_id'=>$address->getCountryId(),
|
| 436 |
+
'country_id'=>Mage::getModel('directory/country')->loadByCode($address->getCountryId())->getName(),
|
| 437 |
+
'region'=>$address->getRegion(),
|
| 438 |
+
'postcode'=>$address->getPostcode(),
|
| 439 |
+
'telephone'=>$address->getTelephone(),
|
| 440 |
+
'fax'=>$address->getFax(),
|
| 441 |
+
'email'=>$customer->getEmail(),
|
| 442 |
+
|
| 443 |
+
|
| 444 |
+
);
|
| 445 |
+
}
|
| 446 |
+
|
| 447 |
+
echo json_encode($customerAddress);
|
| 448 |
+
}
|
| 449 |
+
else{
|
| 450 |
+
|
| 451 |
+
echo json_encode ( array (
|
| 452 |
+
'code' => '0x0001',
|
| 453 |
+
'message' => 'No matched email data.'
|
| 454 |
+
) );
|
| 455 |
+
$session->logout();
|
| 456 |
+
}
|
| 457 |
+
|
| 458 |
+
} catch (Exception $e) {
|
| 459 |
+
|
| 460 |
+
echo $e->getMessage();
|
| 461 |
+
}
|
| 462 |
+
|
| 463 |
+
|
| 464 |
+
}
|
| 465 |
+
|
| 466 |
+
|
| 467 |
+
###Fetch all country and code
|
| 468 |
+
public function getcountriesAction()
|
| 469 |
+
{
|
| 470 |
+
|
| 471 |
+
$collection = Mage::getModel('directory/country')->getResourceCollection()
|
| 472 |
+
->loadByStore()
|
| 473 |
+
->toOptionArray(true);
|
| 474 |
+
|
| 475 |
+
|
| 476 |
+
|
| 477 |
+
$countriesArray=array();
|
| 478 |
+
foreach ($collection as $country)
|
| 479 |
+
{
|
| 480 |
+
|
| 481 |
+
if($country['value']):
|
| 482 |
+
$states = Mage::getModel('directory/country')->load($country['value'])->getRegions();
|
| 483 |
+
|
| 484 |
+
|
| 485 |
+
if($states->getData()):
|
| 486 |
+
$countriesArray[]=['value'=>$country['value'],'name'=>$country['label'],'state'=>$states->getData()];
|
| 487 |
+
else:
|
| 488 |
+
$countriesArray[]=['value'=>$country['value'],'name'=>$country['label'],'state'=>[]];
|
| 489 |
+
endif;
|
| 490 |
+
|
| 491 |
+
|
| 492 |
+
endif;
|
| 493 |
+
|
| 494 |
+
}
|
| 495 |
+
|
| 496 |
+
echo json_encode($countriesArray);
|
| 497 |
+
|
| 498 |
+
|
| 499 |
+
}
|
| 500 |
+
|
| 501 |
+
/*register device */
|
| 502 |
+
|
| 503 |
+
public function registerdeviceAction()
|
| 504 |
+
{
|
| 505 |
+
header('content-type: application/json; charset=utf-8');
|
| 506 |
+
header("access-control-allow-origin: *");
|
| 507 |
+
|
| 508 |
+
$data = $this->getRequest()->getParams();
|
| 509 |
+
|
| 510 |
+
if($data):
|
| 511 |
+
|
| 512 |
+
Mage::helper('pushnotification')->registerdevice($data);
|
| 513 |
+
echo json_encode(array('status'=>'success','message'=>'successfully registered.'));
|
| 514 |
+
exit;
|
| 515 |
+
else:
|
| 516 |
+
echo json_encode(array('status'=>'error','message'=>'Error in data format.'));
|
| 517 |
+
endif;
|
| 518 |
+
|
| 519 |
+
}
|
| 520 |
+
|
| 521 |
+
# Start Get My Orders listing
|
| 522 |
+
/***Convert Currency***/
|
| 523 |
+
public function convert_currency($price,$from,$to) {
|
| 524 |
+
$newPrice = Mage::helper('directory')->currencyConvert($price, $from, $to);
|
| 525 |
+
return $newPrice;
|
| 526 |
+
}
|
| 527 |
+
|
| 528 |
+
|
| 529 |
+
public function getMyOrdersAction()
|
| 530 |
+
{
|
| 531 |
+
|
| 532 |
+
|
| 533 |
+
$session = Mage::getSingleton ( 'customer/session' );
|
| 534 |
+
if (Mage::getSingleton ( 'customer/session' )->isLoggedIn ()) {
|
| 535 |
+
$cust_id=$session->getId();
|
| 536 |
+
|
| 537 |
+
$basecurrencycode = Mage::app()->getStore($store)->getBaseCurrencyCode();
|
| 538 |
+
$res = array();
|
| 539 |
+
$totorders = Mage::getResourceModel('sales/order_collection')
|
| 540 |
+
->addFieldToSelect('*')
|
| 541 |
+
->addFieldToFilter('customer_id', $cust_id);
|
| 542 |
+
$res["total"] = count($totorders);
|
| 543 |
+
$orders = Mage::getResourceModel('sales/order_collection')
|
| 544 |
+
->addFieldToSelect('*')
|
| 545 |
+
->addFieldToFilter('customer_id', $cust_id)
|
| 546 |
+
->setOrder('created_at', 'desc')
|
| 547 |
+
->setPage($curr_page,$page_size);
|
| 548 |
+
//$this->setOrders($orders);
|
| 549 |
+
# start order loop
|
| 550 |
+
foreach ($orders as $order) {
|
| 551 |
+
|
| 552 |
+
$shippingAddress = $order->getShippingAddress();
|
| 553 |
+
if(is_object($shippingAddress)) {
|
| 554 |
+
$shippadd = array();
|
| 555 |
+
$flag = 0;
|
| 556 |
+
if(count($orderData)>0)
|
| 557 |
+
$flag = 1;
|
| 558 |
+
$shippadd = array(
|
| 559 |
+
"firstname" => $shippingAddress->getFirstname(),
|
| 560 |
+
"lastname" => $shippingAddress->getLastname(),
|
| 561 |
+
"company" => $shippingAddress->getCompany(),
|
| 562 |
+
"street" => $shippingAddress->getStreetFull(),
|
| 563 |
+
"region" => $shippingAddress->getRegion(),
|
| 564 |
+
"city" => $shippingAddress->getCity(),
|
| 565 |
+
"pincode" => $shippingAddress->getPostcode(),
|
| 566 |
+
"countryid" => $shippingAddress->getCountry_id(),
|
| 567 |
+
"contactno" => $shippingAddress->getTelephone(),
|
| 568 |
+
"shipmyid" => $flag
|
| 569 |
+
);
|
| 570 |
+
}
|
| 571 |
+
$billingAddress = $order->getBillingAddress();
|
| 572 |
+
if(is_object($billingAddress)) {
|
| 573 |
+
$billadd = array();
|
| 574 |
+
$billadd = array(
|
| 575 |
+
"firstname" => $billingAddress->getFirstname(),
|
| 576 |
+
"lastname" => $billingAddress->getLastname(),
|
| 577 |
+
"company" => $billingAddress->getCompany(),
|
| 578 |
+
"street" => $billingAddress->getStreetFull(),
|
| 579 |
+
"region" => $billingAddress->getRegion(),
|
| 580 |
+
"city" => $billingAddress->getCity(),
|
| 581 |
+
"pincode" => $billingAddress->getPostcode(),
|
| 582 |
+
"countryid" => $billingAddress->getCountry_id(),
|
| 583 |
+
"contactno" => $billingAddress->getTelephone()
|
| 584 |
+
);
|
| 585 |
+
}
|
| 586 |
+
$payment = array();
|
| 587 |
+
$payment = $order->getPayment();
|
| 588 |
+
|
| 589 |
+
|
| 590 |
+
|
| 591 |
+
try {
|
| 592 |
+
$payment_result = array (
|
| 593 |
+
"payment_method_title" => $payment->getMethodInstance()->getTitle(),
|
| 594 |
+
"payment_method_code" => $payment->getMethodInstance()->getCode(),
|
| 595 |
+
);
|
| 596 |
+
if($payment->getMethodInstance()->getCode()=="banktransfer") {
|
| 597 |
+
|
| 598 |
+
$payment_result["payment_method_description"] = $payment->getMethodInstance()->getInstructions();
|
| 599 |
+
}
|
| 600 |
+
}
|
| 601 |
+
catch(Exception $ex2) {
|
| 602 |
+
|
| 603 |
+
}
|
| 604 |
+
|
| 605 |
+
$items = $order->getAllItems();
|
| 606 |
+
$itemcount=count($items);
|
| 607 |
+
$name=array();
|
| 608 |
+
$unitPrice=array();
|
| 609 |
+
$sku=array();
|
| 610 |
+
$ids=array();
|
| 611 |
+
$qty=array();
|
| 612 |
+
$images = array();
|
| 613 |
+
$test_p = array();
|
| 614 |
+
$itemsExcludingConfigurables = array();
|
| 615 |
+
$productlist = array();
|
| 616 |
+
foreach ($items as $itemId => $item) {
|
| 617 |
+
$name= $item->getName();
|
| 618 |
+
//echo $item->getName();
|
| 619 |
+
if($item->getOriginalPrice() > 0) {
|
| 620 |
+
$unitPrice = number_format($this->convert_currency(floatval($item->getOriginalPrice()),$basecurrencycode,$currency), 2, '.', '');
|
| 621 |
+
}
|
| 622 |
+
else {
|
| 623 |
+
$unitPrice = number_format($this->convert_currency(floatval($item->getPrice()),$basecurrencycode,$currency), 2, '.', '');
|
| 624 |
+
}
|
| 625 |
+
|
| 626 |
+
$sku=$item->getSku();
|
| 627 |
+
$ids=$item->getProductId();
|
| 628 |
+
//$qty[]=$item->getQtyToInvoice();
|
| 629 |
+
$qty= $item->getQtyOrdered();
|
| 630 |
+
$products = Mage::getModel('catalog/product')->load($item->getProductId());
|
| 631 |
+
$images= Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB).'/media/catalog/product'.$products->getThumbnail();
|
| 632 |
+
|
| 633 |
+
$productlist[] = array (
|
| 634 |
+
"name" => $name,
|
| 635 |
+
"sku" => $sku,
|
| 636 |
+
"id" => $ids,
|
| 637 |
+
"quantity" => $qty,
|
| 638 |
+
"unitprice" => $unitPrice,
|
| 639 |
+
"image" => $images,
|
| 640 |
+
"total_item_count" => $itemcount,
|
| 641 |
+
"price_org" => $test_p,
|
| 642 |
+
"price_based_curr" => 1,
|
| 643 |
+
);
|
| 644 |
+
|
| 645 |
+
} # item foreach close
|
| 646 |
+
|
| 647 |
+
|
| 648 |
+
|
| 649 |
+
$order_date = $order->getCreatedAtStoreDate().'';
|
| 650 |
+
$orderData = array(
|
| 651 |
+
"id" => $order->getId(),
|
| 652 |
+
"order_id" => $order->getRealOrderId(),
|
| 653 |
+
"status" => $order->getStatus(),
|
| 654 |
+
"order_date" => $order_date,
|
| 655 |
+
"grand_total" => number_format($this->convert_currency(floatval($order->getGrandTotal()),$basecurrencycode,$currency), 2, '.', ''),
|
| 656 |
+
"shipping_address" => $shippadd,
|
| 657 |
+
"billing_address" => $billadd,
|
| 658 |
+
"shipping_message" => $order->getShippingDescription(),
|
| 659 |
+
"shipping_amount" => number_format($this->convert_currency(floatval($order->getShippingAmount()),$basecurrencycode,$currency), 2, '.', ''),
|
| 660 |
+
"payment_method" => $payment_result,
|
| 661 |
+
"tax_amount" => number_format($this->convert_currency(floatval($order->getTaxAmount()),$basecurrencycode,$currency), 2, '.', ''),
|
| 662 |
+
"products" => $productlist,
|
| 663 |
+
"order_currency" => $order->getOrderCurrencyCode(),
|
| 664 |
+
"order_currency_symbol" => Mage::app()->getLocale()->currency($order->getOrderCurrencyCode())->getSymbol(),
|
| 665 |
+
"currency" => $currency,
|
| 666 |
+
"couponUsed" => 0
|
| 667 |
+
);
|
| 668 |
+
$couponCode = $order->getCouponCode();
|
| 669 |
+
if($couponCode!="") {
|
| 670 |
+
$orderData["couponUsed"] = 1;
|
| 671 |
+
$orderData["couponCode"] = $couponCode;
|
| 672 |
+
$orderData["discount_amount"] = floatval(number_format($this->convert_currency(floatval($order->getDiscountAmount()),$basecurrencycode,$currency), 2, '.', ''))*-1;
|
| 673 |
+
}
|
| 674 |
+
|
| 675 |
+
$res["data"][] = $orderData;
|
| 676 |
+
} # end foreach
|
| 677 |
+
echo json_encode($res);
|
| 678 |
+
|
| 679 |
+
|
| 680 |
+
|
| 681 |
+
}
|
| 682 |
+
else{
|
| 683 |
+
|
| 684 |
+
echo json_encode(array('status'=>'error','message'=>'Please Login to see the Orders'));
|
| 685 |
+
|
| 686 |
+
}
|
| 687 |
+
|
| 688 |
+
} # end my orders
|
| 689 |
+
|
| 690 |
+
|
| 691 |
+
/*
|
| 692 |
+
URL : baseurl/restapi/customer/getuserinfo/
|
| 693 |
+
Controller : customer
|
| 694 |
+
Action : getuserinfo
|
| 695 |
+
Method : POST
|
| 696 |
+
Request Parameters :
|
| 697 |
+
Parameter Type :
|
| 698 |
+
Response : JSON
|
| 699 |
+
|
| 700 |
+
*/
|
| 701 |
+
public function getuserinfoAction(){
|
| 702 |
+
|
| 703 |
+
if(Mage::getSingleton('customer/session')->isLoggedIn()):
|
| 704 |
+
$info=array();
|
| 705 |
+
$customer = Mage::getSingleton('customer/session')->getCustomer();
|
| 706 |
+
$info['firstname'] = $customer->getFirstname();
|
| 707 |
+
$info['lastname'] = $customer->getLastname();
|
| 708 |
+
$customerAddressId =$customer->getDefaultBilling();
|
| 709 |
+
|
| 710 |
+
if ($customerAddressId):
|
| 711 |
+
$address = Mage::getModel('customer/address')->load($customerAddressId);
|
| 712 |
+
|
| 713 |
+
if(sizeof( $address)){
|
| 714 |
+
$info['postcode'] = $address->getPostcode();
|
| 715 |
+
$info['city'] = $address->getCity();
|
| 716 |
+
$street = $address->getStreet();
|
| 717 |
+
$info['street'] = $street[0];
|
| 718 |
+
$info['telephone'] = $address->getTelephone();
|
| 719 |
+
$info['fax'] = $address->getFax();
|
| 720 |
+
$info['country'] = $address->getCountry();
|
| 721 |
+
$info['region'] = $address->getRegion();
|
| 722 |
+
}
|
| 723 |
+
|
| 724 |
+
echo json_encode(array('status' => 'success','data'=>$info));
|
| 725 |
+
exit;
|
| 726 |
+
else:
|
| 727 |
+
|
| 728 |
+
echo json_encode(array('status' => 'success','data'=>$info));
|
| 729 |
+
exit;
|
| 730 |
+
endif;
|
| 731 |
+
|
| 732 |
+
else:
|
| 733 |
+
echo json_encode(array('status' => 'error','message'=>'Login First.'));
|
| 734 |
+
exit;
|
| 735 |
+
|
| 736 |
+
endif;
|
| 737 |
+
}
|
| 738 |
+
|
| 739 |
+
/*
|
| 740 |
+
URL : baseurl/restapi/customer/setuserinfo/
|
| 741 |
+
Controller : customer
|
| 742 |
+
Action : setuserinfo
|
| 743 |
+
Method : POST
|
| 744 |
+
Request Parameters :Data*
|
| 745 |
+
Dummy Data: {
|
| 746 |
+
"firstname": "abc",
|
| 747 |
+
"lastname": "def",
|
| 748 |
+
"postcode": "123456",
|
| 749 |
+
"city": "delhi",
|
| 750 |
+
"street": "chandigarh",
|
| 751 |
+
"telephone": "9888898888",
|
| 752 |
+
"fax": null,
|
| 753 |
+
"country": "IN",
|
| 754 |
+
"region": null
|
| 755 |
+
}
|
| 756 |
+
Parameter Type:
|
| 757 |
+
Response : JSON
|
| 758 |
+
*/
|
| 759 |
+
|
| 760 |
+
public function setuserinfoAction(){
|
| 761 |
+
|
| 762 |
+
if (Mage::getSingleton('customer/session')->isLoggedIn()) {
|
| 763 |
+
$customer = Mage::getModel('customer/customer')
|
| 764 |
+
->load(Mage::getSingleton('customer/session')->getId());
|
| 765 |
+
$data = Mage::app()->getRequest ()->getParam ('data');
|
| 766 |
+
|
| 767 |
+
|
| 768 |
+
$customer_info = json_decode($data, true);
|
| 769 |
+
if(isset($customer_info)){
|
| 770 |
+
|
| 771 |
+
|
| 772 |
+
$customer->setFirstname($customer_info['firstname']);
|
| 773 |
+
$customer->setLastname($customer_info['lastname']);
|
| 774 |
+
|
| 775 |
+
$address = $customer->getPrimaryBillingAddress();
|
| 776 |
+
|
| 777 |
+
$address->setFirstname($customer_info['firstname']);
|
| 778 |
+
$address->setLastname($customer_info['lastname']);
|
| 779 |
+
$address->setPhoneno($customer_info['telephone']);
|
| 780 |
+
$address->setCity($customer_info['city']);
|
| 781 |
+
$address->setState($customer_info['region']);
|
| 782 |
+
$address->setCountry($customer_info['country']);
|
| 783 |
+
$address->setPostcode($customer_info['postcode']);
|
| 784 |
+
try{
|
| 785 |
+
$address->save();
|
| 786 |
+
$customer->save();
|
| 787 |
+
echo json_encode(array('status' => 'success','message'=>'Data Updated successfully'));
|
| 788 |
+
}
|
| 789 |
+
catch(exception $e){
|
| 790 |
+
echo json_encode(array('status' => 'error','message'=>'Data Not Updated'));
|
| 791 |
+
}
|
| 792 |
+
}else{
|
| 793 |
+
echo json_encode(array('status' => 'error','message'=>'Data Not Updated'));
|
| 794 |
+
}
|
| 795 |
+
}
|
| 796 |
+
else {
|
| 797 |
+
echo json_encode(array('status' => 'error','message'=>'Login First.'));
|
| 798 |
+
}
|
| 799 |
+
|
| 800 |
+
}
|
| 801 |
+
|
| 802 |
+
}
|
app/code/local/Mss/Connector/controllers/FeedbackController.php
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
class Mss_Connector_FeedbackController extends Mage_Core_Controller_Front_Action {
|
| 3 |
+
|
| 4 |
+
public function _construct(){
|
| 5 |
+
|
| 6 |
+
header('content-type: application/json; charset=utf-8');
|
| 7 |
+
header("access-control-allow-origin: *");
|
| 8 |
+
Mage::helper('connector')->loadParent(Mage::app()->getFrontController()->getRequest()->getHeader('token'));
|
| 9 |
+
parent::_construct();
|
| 10 |
+
|
| 11 |
+
}
|
| 12 |
+
|
| 13 |
+
|
| 14 |
+
public function sendFeedbackAction()
|
| 15 |
+
{
|
| 16 |
+
|
| 17 |
+
$email = Mage::app()->getRequest()->getParams('email');
|
| 18 |
+
$message = Mage::app()->getRequest()->getParams('message');
|
| 19 |
+
|
| 20 |
+
if($email):
|
| 21 |
+
$result['message']='Thanks for your valuable feedback.';
|
| 22 |
+
$result['status']='success';
|
| 23 |
+
|
| 24 |
+
echo json_encode($result);
|
| 25 |
+
exit;
|
| 26 |
+
endif;
|
| 27 |
+
|
| 28 |
+
|
| 29 |
+
echo json_encode ( array (
|
| 30 |
+
'status' => 'error',
|
| 31 |
+
'message' =>'please enter the email !!'
|
| 32 |
+
) );
|
| 33 |
+
|
| 34 |
+
}
|
| 35 |
+
|
| 36 |
+
|
| 37 |
+
}
|
app/code/local/Mss/Connector/controllers/IndexController.php
ADDED
|
@@ -0,0 +1,753 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
class Mss_Connector_IndexController extends Mage_Core_Controller_Front_Action {
|
| 3 |
+
|
| 4 |
+
public function _construct(){
|
| 5 |
+
|
| 6 |
+
header('content-type: application/json; charset=utf-8');
|
| 7 |
+
header("access-control-allow-origin: *");
|
| 8 |
+
|
| 9 |
+
Mage::helper('connector')->loadParent(Mage::app()->getFrontController()->getRequest()->getHeader('token'));
|
| 10 |
+
parent::_construct();
|
| 11 |
+
|
| 12 |
+
}
|
| 13 |
+
|
| 14 |
+
|
| 15 |
+
public function CategoryListingAction()
|
| 16 |
+
{
|
| 17 |
+
|
| 18 |
+
echo json_encode($this->getCategoryTree(3));
|
| 19 |
+
exit;
|
| 20 |
+
|
| 21 |
+
}
|
| 22 |
+
|
| 23 |
+
protected function getCategoryTree($recursionLevel, $storeId = 1)
|
| 24 |
+
{
|
| 25 |
+
$parent = Mage::app()->getStore()->getRootCategoryId();
|
| 26 |
+
$tree = Mage::getResourceModel('catalog/category_tree');
|
| 27 |
+
|
| 28 |
+
|
| 29 |
+
$nodes = $tree->loadNode($parent)
|
| 30 |
+
->loadChildren()
|
| 31 |
+
->getChildren();
|
| 32 |
+
$tree->addCollectionData(null, false, $parent,true,false);
|
| 33 |
+
|
| 34 |
+
$categoryTreeData = array();
|
| 35 |
+
foreach ($nodes as $node) {
|
| 36 |
+
if($node->getIsActive())
|
| 37 |
+
$categoryTreeData[] = $this->getNodeChildrenData($node);
|
| 38 |
+
|
| 39 |
+
}
|
| 40 |
+
|
| 41 |
+
return $categoryTreeData;
|
| 42 |
+
}
|
| 43 |
+
|
| 44 |
+
protected function getNodeChildrenData(Varien_Data_Tree_Node $node)
|
| 45 |
+
{
|
| 46 |
+
|
| 47 |
+
|
| 48 |
+
$data = array(
|
| 49 |
+
'id' => $node->getData('entity_id'),
|
| 50 |
+
'title' => $node->getData('name'),
|
| 51 |
+
'url' => $node->getData('url_key'),
|
| 52 |
+
);
|
| 53 |
+
|
| 54 |
+
foreach ($node->getChildren() as $childNode) {
|
| 55 |
+
|
| 56 |
+
|
| 57 |
+
if (!array_key_exists('children', $data)) {
|
| 58 |
+
$data['children'] = array();
|
| 59 |
+
}
|
| 60 |
+
if($childNode->getIsActive())
|
| 61 |
+
$data['children'][] = $this->getNodeChildrenData($childNode);
|
| 62 |
+
}
|
| 63 |
+
return $data;
|
| 64 |
+
}
|
| 65 |
+
|
| 66 |
+
public function getSubcategoryAction()
|
| 67 |
+
{
|
| 68 |
+
|
| 69 |
+
|
| 70 |
+
$categoryid = ($this->getRequest ()->getParam ( 'categoryid' )) ? ($this->getRequest ()->getParam ( 'categoryid' )) : 2;
|
| 71 |
+
|
| 72 |
+
/*check for cache*/
|
| 73 |
+
Mage::helper('connector')->checkcache($categoryid,'1');
|
| 74 |
+
|
| 75 |
+
$_categorylist = array ();
|
| 76 |
+
$children = Mage::getModel('catalog/category')->getCategories($categoryid);
|
| 77 |
+
|
| 78 |
+
|
| 79 |
+
foreach ($children as $_category) {
|
| 80 |
+
$catimg=Mage::getModel ( 'catalog/category' )->load ( $_category->getId () )->getImageUrl ();
|
| 81 |
+
$thumbimg=Mage::getModel ( 'catalog/category' )->load ( $_category->getId () )->getThumbnailUrl ();
|
| 82 |
+
if(!$thumbimg):
|
| 83 |
+
$thumbimg=Mage::getSingleton('catalog/product_media_config')->getBaseMediaUrl(). '/placeholder/default/small_image.jpg';
|
| 84 |
+
endif;
|
| 85 |
+
if(!$catimg):
|
| 86 |
+
$catimg=Mage::getSingleton('catalog/product_media_config')->getBaseMediaUrl(). '/placeholder/default/small_image.jpg';
|
| 87 |
+
endif;
|
| 88 |
+
$_categorylist [] = array (
|
| 89 |
+
'category_id' => $_category->getId (),
|
| 90 |
+
'name' => $_category->getName (),
|
| 91 |
+
'is_active' => $_category->getIsActive (),
|
| 92 |
+
'position ' => $_category->getPosition (),
|
| 93 |
+
'level ' => $_category->getLevel (),
|
| 94 |
+
'url_key' => Mage::getModel ( 'catalog/category' )->load ( $_category->getId () )->getUrlPath (),
|
| 95 |
+
'thumbnail_url' => $thumbimg,
|
| 96 |
+
'image_url' => $catimg,
|
| 97 |
+
|
| 98 |
+
);
|
| 99 |
+
}
|
| 100 |
+
if(!sizeof($_categorylist))
|
| 101 |
+
$_categorylist=array("status"=>"error");
|
| 102 |
+
|
| 103 |
+
/*create new cache*/
|
| 104 |
+
Mage::helper('connector')->createNewcache($categoryid,'1',json_encode($_categorylist));
|
| 105 |
+
|
| 106 |
+
echo json_encode($_categorylist);
|
| 107 |
+
}
|
| 108 |
+
|
| 109 |
+
|
| 110 |
+
public function indexAction() {
|
| 111 |
+
Mage::app ()->cleanCache ();
|
| 112 |
+
$cmd = $this->getRequest ()->getParam ( 'cmd' );
|
| 113 |
+
if (!Zend_Validate::is($cmd, 'NotEmpty')):
|
| 114 |
+
echo json_encode(array('status'=>'error','message'=>'filter field should not be empty'));
|
| 115 |
+
exit;
|
| 116 |
+
endif;
|
| 117 |
+
switch ($cmd) {
|
| 118 |
+
case 'menu' :
|
| 119 |
+
|
| 120 |
+
/*check for cache*/
|
| 121 |
+
Mage::helper('connector')->checkcache('menu','1');
|
| 122 |
+
|
| 123 |
+
$_helper = Mage::helper ( 'catalog/category' );
|
| 124 |
+
$_categories = $_helper->getStoreCategories ();
|
| 125 |
+
$_categorylist = array ();
|
| 126 |
+
if (count ( $_categories ) > 0) {
|
| 127 |
+
foreach ( $_categories as $_category ) {
|
| 128 |
+
$_helper->getCategoryUrl ( $_category );
|
| 129 |
+
# if category have not image then set placeholder image
|
| 130 |
+
$catimg=Mage::getModel ( 'catalog/category' )->load ( $_category->getId () )->getImageUrl ();
|
| 131 |
+
$thumbimg=Mage::getModel ( 'catalog/category' )->load ( $_category->getId () )->getThumbnailUrl ();
|
| 132 |
+
if(!$thumbimg):
|
| 133 |
+
$thumbimg=Mage::getSingleton('catalog/product_media_config')->getBaseMediaUrl(). '/placeholder/default/small_image.jpg';
|
| 134 |
+
endif;
|
| 135 |
+
if(!$catimg):
|
| 136 |
+
$catimg=Mage::getSingleton('catalog/product_media_config')->getBaseMediaUrl(). '/placeholder/default/small_image.jpg';
|
| 137 |
+
endif;
|
| 138 |
+
$_categorylist [] = array (
|
| 139 |
+
'category_id' => $_category->getId (),
|
| 140 |
+
'name' => $_category->getName (),
|
| 141 |
+
'is_active' => $_category->getIsActive (),
|
| 142 |
+
'position ' => $_category->getPosition (),
|
| 143 |
+
'level ' => $_category->getLevel (),
|
| 144 |
+
'url_key' => Mage::getModel ( 'catalog/category' )->load ( $_category->getId () )->getUrlPath (),
|
| 145 |
+
'thumbnail_url' => $thumbimg,
|
| 146 |
+
'image_url' => $catimg,
|
| 147 |
+
'children' => Mage::getModel ( 'catalog/category' )->load ( $_category->getId () )->getAllChildren ()
|
| 148 |
+
);
|
| 149 |
+
|
| 150 |
+
|
| 151 |
+
}
|
| 152 |
+
}
|
| 153 |
+
else
|
| 154 |
+
{
|
| 155 |
+
|
| 156 |
+
$_categorylist = array('status'=>'error','message'=>'No Record Found');
|
| 157 |
+
exit;
|
| 158 |
+
}
|
| 159 |
+
|
| 160 |
+
/*create new cache*/
|
| 161 |
+
Mage::helper('connector')->createNewcache('menu','1',json_encode($_categorylist));
|
| 162 |
+
|
| 163 |
+
echo json_encode ( $_categorylist );
|
| 164 |
+
break;
|
| 165 |
+
case 'catalog' : // OK
|
| 166 |
+
//min=29022&max=95032&ajaxcatalog=true&dir=asc&order=weight&filter
|
| 167 |
+
$categoryid = $this->getRequest ()->getParam ( 'categoryid' );
|
| 168 |
+
|
| 169 |
+
if (!Zend_Validate::is($categoryid, 'NotEmpty')):
|
| 170 |
+
echo json_encode(array('status'=>'error','message'=>'category id should not be empty'));
|
| 171 |
+
exit;
|
| 172 |
+
endif;
|
| 173 |
+
|
| 174 |
+
$page = ($this->getRequest ()->getParam ( 'page' )) ? ($this->getRequest ()->getParam ( 'page' )) : 1;
|
| 175 |
+
$limit = ($this->getRequest ()->getParam ( 'limit' )) ? ($this->getRequest ()->getParam ( 'limit' )) : 10;
|
| 176 |
+
$order = ($this->getRequest ()->getParam ( 'order' )) ? ($this->getRequest ()->getParam ( 'order' )) : 'entity_id';
|
| 177 |
+
$dir = ($this->getRequest ()->getParam ( 'dir' )) ? ($this->getRequest ()->getParam ( 'dir' )) : 'desc';
|
| 178 |
+
|
| 179 |
+
$category = Mage::getModel ( 'catalog/category' )->load ( $categoryid );
|
| 180 |
+
|
| 181 |
+
|
| 182 |
+
if (!$category->getId()):
|
| 183 |
+
echo json_encode(array('status'=>'error','message'=>'category id does not exist'));
|
| 184 |
+
exit;
|
| 185 |
+
endif;
|
| 186 |
+
|
| 187 |
+
$model = Mage::getModel ( 'catalog/product' ); // getting product model
|
| 188 |
+
$collection = $category->getProductCollection ()->addAttributeToFilter ( 'status', 1 )
|
| 189 |
+
->addAttributeToFilter ( 'visibility', array ('neq' => 1 ) );
|
| 190 |
+
|
| 191 |
+
$price_filter = array();
|
| 192 |
+
|
| 193 |
+
/*filter added*/
|
| 194 |
+
if($this->getRequest ()->getParam ( 'filter' )){
|
| 195 |
+
$filters = json_decode($this->getRequest ()->getParam ( 'filter' ),1);
|
| 196 |
+
|
| 197 |
+
|
| 198 |
+
foreach($filters as $key => $filter):
|
| 199 |
+
|
| 200 |
+
if(sizeof($filter)):
|
| 201 |
+
|
| 202 |
+
if($key == 'price'):
|
| 203 |
+
|
| 204 |
+
$price = explode(',',$filter[0]);
|
| 205 |
+
$price_filter = array('gt'=>$price['0'],'lt'=>$price['1']);
|
| 206 |
+
$collection = $collection->addAttributeToFilter ( 'price', array ('gt' => $price['0'] ) );
|
| 207 |
+
$collection = $collection->addAttributeToFilter ( 'price', array ('lt' => $price['1']) );
|
| 208 |
+
else:
|
| 209 |
+
$collection = $collection->addAttributeToFilter ( $key, array('in' => $filter) );
|
| 210 |
+
endif;
|
| 211 |
+
endif;
|
| 212 |
+
endforeach;
|
| 213 |
+
}
|
| 214 |
+
/*filter added*/
|
| 215 |
+
|
| 216 |
+
|
| 217 |
+
if($this->getRequest ()->getParam ( 'min' )){
|
| 218 |
+
$collection=$collection->addAttributeToFilter ( 'price', array ('gt' => $this->getRequest ()->getParam ( 'min' ) ) );
|
| 219 |
+
}
|
| 220 |
+
if($this->getRequest ()->getParam ( 'max' )){
|
| 221 |
+
$collection=$collection->addAttributeToFilter ( 'price', array ('lt' => $this->getRequest ()->getParam ( 'max' ) ) );
|
| 222 |
+
}
|
| 223 |
+
|
| 224 |
+
$collection=$collection->addAttributeToSort ( $order, $dir )/* ->setPage ( $page, $limit ) */;
|
| 225 |
+
$pages = $collection->setPageSize ( $limit )->getLastPageNumber ();
|
| 226 |
+
$count=$collection->getSize();
|
| 227 |
+
|
| 228 |
+
if(!$count):
|
| 229 |
+
|
| 230 |
+
echo json_encode(array('status'=>'error','message'=>'No Record Found'));
|
| 231 |
+
exit;
|
| 232 |
+
endif;
|
| 233 |
+
|
| 234 |
+
if ($page <= $pages) {
|
| 235 |
+
$collection->setPage ( $page, $limit );
|
| 236 |
+
$productlist = $this->getProductlist ( $collection, 'catalog',$price_filter );
|
| 237 |
+
}
|
| 238 |
+
|
| 239 |
+
if(sizeof($productlist))
|
| 240 |
+
echo json_encode ( $productlist );
|
| 241 |
+
else
|
| 242 |
+
echo "[]";
|
| 243 |
+
|
| 244 |
+
|
| 245 |
+
break;
|
| 246 |
+
case 'coming_soon' :
|
| 247 |
+
|
| 248 |
+
$page = ($this->getRequest ()->getParam ( 'page' )) ? ($this->getRequest ()->getParam ( 'page' )) : 1;
|
| 249 |
+
$limit = ($this->getRequest ()->getParam ( 'limit' )) ? ($this->getRequest ()->getParam ( 'limit' )) : 5;
|
| 250 |
+
$order = ($this->getRequest ()->getParam ( 'order' )) ? ($this->getRequest ()->getParam ( 'order' )) : 'entity_id';
|
| 251 |
+
$dir = ($this->getRequest ()->getParam ( 'dir' )) ? ($this->getRequest ()->getParam ( 'dir' )) : 'desc';
|
| 252 |
+
;
|
| 253 |
+
$tomorrow = mktime ( 0, 0, 0, date ( 'm' ), date ( 'd' ) + 1, date ( 'y' ) );
|
| 254 |
+
$dateTomorrow = date ( 'm/d/y', $tomorrow );
|
| 255 |
+
$tdatomorrow = mktime ( 0, 0, 0, date ( 'm' ), date ( 'd' ) + 3, date ( 'y' ) );
|
| 256 |
+
$tdaTomorrow = date ( 'm/d/y', $tdatomorrow );
|
| 257 |
+
$_productCollection = Mage::getModel ( 'catalog/product' )->getCollection ();
|
| 258 |
+
$_productCollection->addAttributeToSelect ( '*' )->addAttributeToFilter ( 'visibility', array (
|
| 259 |
+
'neq' => 1
|
| 260 |
+
) )->addAttributeToFilter ( 'status', 1 )->addAttributeToFilter ( 'special_price', array (
|
| 261 |
+
'neq' => 0
|
| 262 |
+
) )->addAttributeToFilter ( 'special_from_date', array (
|
| 263 |
+
'date' => true,
|
| 264 |
+
'to' => $dateTomorrow
|
| 265 |
+
) )->addAttributeToFilter ( array (
|
| 266 |
+
array (
|
| 267 |
+
'attribute' => 'special_to_date',
|
| 268 |
+
'date' => true,
|
| 269 |
+
'from' => $tdaTomorrow
|
| 270 |
+
),
|
| 271 |
+
array (
|
| 272 |
+
'attribute' => 'special_to_date',
|
| 273 |
+
'null' => 1
|
| 274 |
+
)
|
| 275 |
+
) )
|
| 276 |
+
->addAttributeToFilter('visibility',array('eq'=>4))
|
| 277 |
+
->addAttributeToSort ( $order, $dir )/* ->setPage ( $page, $limit ) */;
|
| 278 |
+
$pages = $_productCollection->setPageSize ( $limit )->getLastPageNumber ();
|
| 279 |
+
$count=$collection->getSize();
|
| 280 |
+
if(!$count):
|
| 281 |
+
|
| 282 |
+
echo json_encode(array('status'=>'error','message'=>'No Record Found'));
|
| 283 |
+
exit;
|
| 284 |
+
endif;
|
| 285 |
+
if ($page <= $pages) {
|
| 286 |
+
$_productCollection->setPage ( $page, $limit );
|
| 287 |
+
$products = $_productCollection->getItems ();
|
| 288 |
+
$productlist = $this->getProductlist ( $products );
|
| 289 |
+
}
|
| 290 |
+
|
| 291 |
+
if(sizeof($productlist))
|
| 292 |
+
echo json_encode ( $productlist );
|
| 293 |
+
else
|
| 294 |
+
echo "[]";
|
| 295 |
+
|
| 296 |
+
break;
|
| 297 |
+
case 'best_seller' :
|
| 298 |
+
|
| 299 |
+
$order = ($this->getRequest ()->getParam ( 'order' )) ? ($this->getRequest ()->getParam ( 'order' )) : 'entity_id';
|
| 300 |
+
$dir = ($this->getRequest ()->getParam ( 'dir' )) ? ($this->getRequest ()->getParam ( 'dir' )) : 'desc'; // ------------------------------Home Pre Specials BEGIN------------------------------//
|
| 301 |
+
$page = ($this->getRequest ()->getParam ( 'page' )) ? ($this->getRequest ()->getParam ( 'page' )) : 1;
|
| 302 |
+
$limit = ($this->getRequest ()->getParam ( 'limit' )) ? ($this->getRequest ()->getParam ( 'limit' )) : 5;
|
| 303 |
+
$todayDate = Mage::app ()->getLocale ()->date ()->toString ( Varien_Date::DATETIME_INTERNAL_FORMAT );
|
| 304 |
+
$_products = Mage::getModel ( 'catalog/product' )->getCollection ()->addAttributeToSelect ('*')
|
| 305 |
+
->addAttributeToFilter ( 'status', 1 )->addAttributeToFilter ( 'news_from_date', array (
|
| 306 |
+
'or' => array (
|
| 307 |
+
0 => array (
|
| 308 |
+
'date' => true,
|
| 309 |
+
'to' => $todayDate
|
| 310 |
+
),
|
| 311 |
+
1 => array (
|
| 312 |
+
'is' => new Zend_Db_Expr ( 'null' )
|
| 313 |
+
)
|
| 314 |
+
)
|
| 315 |
+
), 'left' )->addAttributeToFilter ( 'news_to_date', array (
|
| 316 |
+
'or' => array (
|
| 317 |
+
0 => array (
|
| 318 |
+
'date' => true,
|
| 319 |
+
'from' => $todayDate
|
| 320 |
+
),
|
| 321 |
+
1 => array (
|
| 322 |
+
'is' => new Zend_Db_Expr ( 'null' )
|
| 323 |
+
)
|
| 324 |
+
)
|
| 325 |
+
), 'left' )->addAttributeToFilter ( array (
|
| 326 |
+
array (
|
| 327 |
+
'attribute' => 'news_from_date',
|
| 328 |
+
'is' => new Zend_Db_Expr ( 'not null' )
|
| 329 |
+
),
|
| 330 |
+
array (
|
| 331 |
+
'attribute' => 'news_to_date',
|
| 332 |
+
'is' => new Zend_Db_Expr ( 'not null' )
|
| 333 |
+
)
|
| 334 |
+
) )->addAttributeToFilter ( 'visibility', array (
|
| 335 |
+
'in' => array (
|
| 336 |
+
2,
|
| 337 |
+
4
|
| 338 |
+
)
|
| 339 |
+
) )
|
| 340 |
+
->addAttributeToFilter('visibility',array('eq'=>4))
|
| 341 |
+
->addAttributeToSort ( 'news_from_date', 'desc' )->addAttributeToSort ( $order, $dir )/* ->setPage ( $page, $limit ) */;
|
| 342 |
+
$pages = $_products->setPageSize ( $limit )->getLastPageNumber ();
|
| 343 |
+
$count=$collection->getSize();
|
| 344 |
+
if(!$count):
|
| 345 |
+
|
| 346 |
+
echo json_encode(array('status'=>'error','message'=>'No Record Found'));
|
| 347 |
+
exit;
|
| 348 |
+
endif;
|
| 349 |
+
if ($page <= $pages) {
|
| 350 |
+
$_products->setPage ( $page, $limit );
|
| 351 |
+
$products = $_products->getItems ();
|
| 352 |
+
$productlist = $this->getProductlist ( $products );
|
| 353 |
+
}
|
| 354 |
+
|
| 355 |
+
if(sizeof($productlist))
|
| 356 |
+
echo json_encode ( $productlist );
|
| 357 |
+
else
|
| 358 |
+
echo "[]";
|
| 359 |
+
|
| 360 |
+
break;
|
| 361 |
+
case 'daily_sale' :
|
| 362 |
+
|
| 363 |
+
$order = ($this->getRequest ()->getParam ( 'order' )) ? ($this->getRequest ()->getParam ( 'order' )) : 'entity_id';
|
| 364 |
+
$dir = ($this->getRequest ()->getParam ( 'dir' )) ? ($this->getRequest ()->getParam ( 'dir' )) : 'desc';
|
| 365 |
+
$page = ($this->getRequest ()->getParam ( 'page' )) ? ($this->getRequest ()->getParam ( 'page' )) : 1;
|
| 366 |
+
$limit = ($this->getRequest ()->getParam ( 'limit' )) ? ($this->getRequest ()->getParam ( 'limit' )) : 5;
|
| 367 |
+
$todayDate = Mage::app ()->getLocale ()->date ()->toString ( Varien_Date::DATETIME_INTERNAL_FORMAT );
|
| 368 |
+
$tomorrow = mktime ( 0, 0, 0, date ( 'm' ), date ( 'd' ) + 1, date ( 'y' ) );
|
| 369 |
+
$dateTomorrow = date ( 'm/d/y', $tomorrow );
|
| 370 |
+
|
| 371 |
+
$collection = Mage::getModel ( 'catalog/product' )->getCollection ();
|
| 372 |
+
$collection->addAttributeToSelect ( '*' )->addAttributeToFilter ( 'visibility', array (
|
| 373 |
+
|
| 374 |
+
'neq' => 1
|
| 375 |
+
|
| 376 |
+
) )->addAttributeToFilter ( 'status', 1 )->addAttributeToFilter ( 'special_price', array (
|
| 377 |
+
'neq' => "0"
|
| 378 |
+
) )->addAttributeToFilter ( 'special_from_date', array (
|
| 379 |
+
'date' => true,
|
| 380 |
+
'to' => $todayDate
|
| 381 |
+
) )->addAttributeToFilter ( array (
|
| 382 |
+
array (
|
| 383 |
+
'attribute' => 'special_to_date',
|
| 384 |
+
'date' => true,
|
| 385 |
+
'from' => $dateTomorrow
|
| 386 |
+
),
|
| 387 |
+
array (
|
| 388 |
+
'attribute' => 'special_to_date',
|
| 389 |
+
'null' => 1
|
| 390 |
+
)
|
| 391 |
+
) )
|
| 392 |
+
->addAttributeToFilter('visibility',array('eq'=>4))
|
| 393 |
+
->addAttributeToSort ( $order, $dir );
|
| 394 |
+
$pages = $collection->setPageSize ( $limit )->getLastPageNumber ();
|
| 395 |
+
$count=$collection->getSize();
|
| 396 |
+
if(!$count):
|
| 397 |
+
echo json_encode(array('status'=>'error','message'=>'No Record Found'));
|
| 398 |
+
exit;
|
| 399 |
+
endif;
|
| 400 |
+
if ($page <= $pages) {
|
| 401 |
+
$collection->setPage ( $page, $limit );
|
| 402 |
+
$products = $collection->getItems ();
|
| 403 |
+
$productlist = $this->getProductlist ( $products );
|
| 404 |
+
}
|
| 405 |
+
if(sizeof($productlist))
|
| 406 |
+
echo json_encode ( $productlist );
|
| 407 |
+
else
|
| 408 |
+
echo "[]";
|
| 409 |
+
|
| 410 |
+
break;
|
| 411 |
+
case 'new_product' :
|
| 412 |
+
|
| 413 |
+
$todayDate = Mage::app()->getLocale()->date()->toString(Varien_Date::DATETIME_INTERNAL_FORMAT);
|
| 414 |
+
|
| 415 |
+
$_productCollection = Mage::getResourceModel('catalog/product_collection')
|
| 416 |
+
->addAttributeToSelect('*')
|
| 417 |
+
->addAttributeToFilter('status',array('eq'=>1))
|
| 418 |
+
->addAttributeToFilter('visibility',array('eq'=>4))
|
| 419 |
+
->addAttributeToFilter('news_from_date', array('date' => true, 'to' => $todayDate))
|
| 420 |
+
->addAttributeToFilter('news_to_date', array('or'=> array(
|
| 421 |
+
0 => array('date' => true, 'from' => $todayDate),
|
| 422 |
+
1 => array('is' => new Zend_Db_Expr('null')))
|
| 423 |
+
), 'left');
|
| 424 |
+
|
| 425 |
+
$now = date('Y-m-d');
|
| 426 |
+
$newsFrom= substr($_productCollection->getData('news_from_date'),0,10);
|
| 427 |
+
$newsTo= substr($_productCollection->getData('news_to_date'),0,10);
|
| 428 |
+
|
| 429 |
+
if(!$_productCollection->count()):
|
| 430 |
+
echo json_encode(array('status'=>'error','message'=>'There are no products matching the selection'));
|
| 431 |
+
else:
|
| 432 |
+
if ($now>=$newsFrom && $now<=$newsTo)$i=0;
|
| 433 |
+
|
| 434 |
+
$productlist = array ();
|
| 435 |
+
$baseCurrency = Mage::app ()->getStore ()->getBaseCurrency ()->getCode ();
|
| 436 |
+
$currentCurrency = Mage::app ()->getStore ()->getCurrentCurrencyCode ();
|
| 437 |
+
foreach ( $_productCollection as $product ) {
|
| 438 |
+
|
| 439 |
+
$product = Mage::getModel ( 'catalog/product' )->load ( $product ['entity_id'] );
|
| 440 |
+
$rating = Mage::getModel('rating/rating')->getEntitySummary($product->getId());
|
| 441 |
+
$rating_final = ($rating->getSum()/$rating->getCount())/20;
|
| 442 |
+
|
| 443 |
+
$productlist [] = array (
|
| 444 |
+
'entity_id' => $product->getId (),
|
| 445 |
+
'sku' => $product->getSku (),
|
| 446 |
+
'name' => $product->getName (),
|
| 447 |
+
'news_from_date' => $product->getNewsFromDate (),
|
| 448 |
+
'news_to_date' => $product->getNewsToDate (),
|
| 449 |
+
'special_from_date' => $product->getSpecialFromDate (),
|
| 450 |
+
'special_to_date' => $product->getSpecialToDate (),
|
| 451 |
+
'image_url' => Mage::helper('connector')-> Imageresize($product->getImage(),'product','300','300'),
|
| 452 |
+
'url_key' => $product->getProductUrl (),
|
| 453 |
+
'regular_price_with_tax' => number_format ( Mage::helper ( 'directory' )->currencyConvert ( $product->getPrice (), $baseCurrency, $currentCurrency ), 2, '.', '' ),
|
| 454 |
+
'final_price_with_tax' => number_format ( Mage::helper ( 'directory' )->currencyConvert ( $product->getSpecialPrice (), $baseCurrency, $currentCurrency ), 2, '.', '' ),
|
| 455 |
+
'symbol'=> Mage::app()->getLocale()->currency(Mage::app()->getStore()->getCurrentCurrencyCode())->getSymbol(),
|
| 456 |
+
'qty'=>(int)Mage::getModel('cataloginventory/stock_item')->loadByProduct($product->getId())->getQty(),//$product->getStockItem()->getData('qty')
|
| 457 |
+
'rating' => $rating_final,
|
| 458 |
+
'wishlist' => Mage::helper('connector')->check_wishlist($product->getId ()),
|
| 459 |
+
|
| 460 |
+
);
|
| 461 |
+
}
|
| 462 |
+
|
| 463 |
+
if(sizeof($productlist))
|
| 464 |
+
echo json_encode ( $productlist );
|
| 465 |
+
else
|
| 466 |
+
echo "[]";
|
| 467 |
+
|
| 468 |
+
endif;
|
| 469 |
+
break;
|
| 470 |
+
|
| 471 |
+
default :
|
| 472 |
+
echo 'Parameters are invalid';
|
| 473 |
+
|
| 474 |
+
break;
|
| 475 |
+
}
|
| 476 |
+
}
|
| 477 |
+
|
| 478 |
+
public function getStaticBlockAction(){
|
| 479 |
+
$block = ($this->getRequest ()->getParam ( 'block' )) ? ($this->getRequest ()->getParam ( 'block' )) : 'footer_links';
|
| 480 |
+
echo $this->getLayout()->createBlock('cms/block')->setBlockId($block)->toHtml();
|
| 481 |
+
}
|
| 482 |
+
|
| 483 |
+
public function getProductlist($products, $mod = 'product',$price_filter = array()) {
|
| 484 |
+
|
| 485 |
+
$productlist = array ();
|
| 486 |
+
$baseCurrency = Mage::app ()->getStore ()->getBaseCurrency ()->getCode ();
|
| 487 |
+
$currentCurrency = Mage::app ()->getStore ()->getCurrentCurrencyCode ();
|
| 488 |
+
|
| 489 |
+
foreach ( $products as $product ) {
|
| 490 |
+
if ($mod == 'catalog') {
|
| 491 |
+
$product = Mage::getModel ( 'catalog/product' )->load ( $product ['entity_id'] );
|
| 492 |
+
|
| 493 |
+
$rating = Mage::getModel('rating/rating')->getEntitySummary($product->getId());
|
| 494 |
+
$rating_final = ($rating->getSum()/$rating->getCount())/20;
|
| 495 |
+
|
| 496 |
+
}
|
| 497 |
+
if($product->getTypeId() == "configurable")
|
| 498 |
+
$qty = Mage::helper('connector')->getProductStockInfoById($product->getId());
|
| 499 |
+
else
|
| 500 |
+
$qty = (int)Mage::getModel('cataloginventory/stock_item')->loadByProduct($product->getId())->getQty();
|
| 501 |
+
|
| 502 |
+
if(sizeof($price_filter)):
|
| 503 |
+
|
| 504 |
+
if($product->getFinalPrice() > $price_filter['0'] AND $product->getFinalPrice() > $price_filter['1']):
|
| 505 |
+
|
| 506 |
+
$productlist [] = array (
|
| 507 |
+
'entity_id' => $product->getId (),
|
| 508 |
+
'sku' => $product->getSku (),
|
| 509 |
+
'name' => $product->getName (),
|
| 510 |
+
'news_from_date' => $product->getNewsFromDate (),
|
| 511 |
+
'news_to_date' => $product->getNewsToDate (),
|
| 512 |
+
'special_from_date' => $product->getSpecialFromDate (),
|
| 513 |
+
'special_to_date' => $product->getSpecialToDate (),
|
| 514 |
+
'image_url' => Mage::helper('connector')-> Imageresize($product->getImage(),'product','300','300'),
|
| 515 |
+
'url_key' => $product->getProductUrl (),
|
| 516 |
+
'regular_price_with_tax' => number_format ( Mage::helper ( 'directory' )->currencyConvert ( $product->getPrice (), $baseCurrency, $currentCurrency ), 2, '.', '' ),
|
| 517 |
+
'final_price_with_tax' => number_format ( Mage::helper ( 'directory' )->currencyConvert ( $product->getSpecialPrice (), $baseCurrency, $currentCurrency ), 2, '.', '' ),
|
| 518 |
+
'symbol'=> Mage::app()->getLocale()->currency(Mage::app()->getStore()->getCurrentCurrencyCode())->getSymbol()?: Mage::app()->getStore()->getCurrentCurrencyCode(),
|
| 519 |
+
'qty'=>$qty,//$product->getStockItem()->getData('qty')
|
| 520 |
+
'rating' => $rating_final,
|
| 521 |
+
'wishlist' => Mage::helper('connector')->check_wishlist($product->getId ()),
|
| 522 |
+
);
|
| 523 |
+
endif;
|
| 524 |
+
else:
|
| 525 |
+
|
| 526 |
+
$productlist [] = array (
|
| 527 |
+
'entity_id' => $product->getId (),
|
| 528 |
+
'sku' => $product->getSku (),
|
| 529 |
+
'name' => $product->getName (),
|
| 530 |
+
'news_from_date' => $product->getNewsFromDate (),
|
| 531 |
+
'news_to_date' => $product->getNewsToDate (),
|
| 532 |
+
'special_from_date' => $product->getSpecialFromDate (),
|
| 533 |
+
'special_to_date' => $product->getSpecialToDate (),
|
| 534 |
+
'image_url' => Mage::helper('connector')-> Imageresize($product->getImage(),'product','300','300'),
|
| 535 |
+
'url_key' => $product->getProductUrl (),
|
| 536 |
+
'regular_price_with_tax' => number_format ( Mage::helper ( 'directory' )->currencyConvert ( $product->getPrice (), $baseCurrency, $currentCurrency ), 2, '.', '' ),
|
| 537 |
+
'final_price_with_tax' => number_format ( Mage::helper ( 'directory' )->currencyConvert ( $product->getSpecialPrice (), $baseCurrency, $currentCurrency ), 2, '.', '' ),
|
| 538 |
+
'symbol'=> Mage::app()->getLocale()->currency(Mage::app()->getStore()->getCurrentCurrencyCode())->getSymbol()?: Mage::app()->getStore()->getCurrentCurrencyCode(),
|
| 539 |
+
'qty'=>$qty,//$product->getStockItem()->getData('qty')
|
| 540 |
+
'rating' => $rating_final,
|
| 541 |
+
'wishlist' => Mage::helper('connector')->check_wishlist($product->getId ()),
|
| 542 |
+
);
|
| 543 |
+
endif;
|
| 544 |
+
}
|
| 545 |
+
return $productlist;
|
| 546 |
+
}
|
| 547 |
+
|
| 548 |
+
# start dashboard api to return the new products sale products
|
| 549 |
+
public function getdashboardAction()
|
| 550 |
+
{
|
| 551 |
+
|
| 552 |
+
/*check for cache*/
|
| 553 |
+
Mage::helper('connector')->checkcache('dashboard','1');
|
| 554 |
+
|
| 555 |
+
|
| 556 |
+
$top_products=$this->getBestsellerProducts();
|
| 557 |
+
$new_pro_list=$this->getnewproducts();
|
| 558 |
+
$sale_pro_list=$this->getsaleproducts();
|
| 559 |
+
$topproductslist=array(
|
| 560 |
+
'Title'=>'Top Products',
|
| 561 |
+
'count'=>count($top_products),
|
| 562 |
+
'products'=>$top_products
|
| 563 |
+
|
| 564 |
+
);
|
| 565 |
+
$newproductslist=array(
|
| 566 |
+
'Title'=>'New Products',
|
| 567 |
+
'count'=>count($new_pro_list),
|
| 568 |
+
'products'=>$new_pro_list
|
| 569 |
+
|
| 570 |
+
);
|
| 571 |
+
|
| 572 |
+
$saleproductslist=array(
|
| 573 |
+
'Title'=>'Sale Products',
|
| 574 |
+
'count'=>count($sale_pro_list),
|
| 575 |
+
'products'=>$sale_pro_list
|
| 576 |
+
|
| 577 |
+
);
|
| 578 |
+
/*create new cache*/
|
| 579 |
+
Mage::helper('connector')->createNewcache('dashboard','1',json_encode(array($topproductslist,$newproductslist,$saleproductslist)));
|
| 580 |
+
|
| 581 |
+
echo json_encode(array($topproductslist,$newproductslist,$saleproductslist)); die;
|
| 582 |
+
}
|
| 583 |
+
|
| 584 |
+
public function getBestsellerProducts()
|
| 585 |
+
{
|
| 586 |
+
$products = Mage::getResourceModel('reports/product_collection')
|
| 587 |
+
->addOrderedQty()
|
| 588 |
+
->addAttributeToSelect('*')
|
| 589 |
+
->addAttributeToSelect(array('name', 'price', 'small_image'))
|
| 590 |
+
->addAttributeToFilter('visibility',array('eq'=>4))
|
| 591 |
+
// ->setStoreId($storeId)
|
| 592 |
+
// ->addStoreFilter($storeId)
|
| 593 |
+
|
| 594 |
+
->addViewsCount();
|
| 595 |
+
Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($products);
|
| 596 |
+
Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($products);
|
| 597 |
+
|
| 598 |
+
Mage::getSingleton('cataloginventory/stock')->addInStockFilterToCollection($products);
|
| 599 |
+
$products->setPageSize(5)->setCurPage(1);
|
| 600 |
+
//->getLastPageNumber ();
|
| 601 |
+
$new_productlist = array ();
|
| 602 |
+
$baseCurrency = Mage::app ()->getStore ()->getBaseCurrency ()->getCode ();
|
| 603 |
+
$currentCurrency = Mage::app ()->getStore ()->getCurrentCurrencyCode ();
|
| 604 |
+
foreach ( $products as $product ) {
|
| 605 |
+
|
| 606 |
+
$product = Mage::getModel ( 'catalog/product' )->load ( $product ['entity_id'] );
|
| 607 |
+
$rating = Mage::getModel('rating/rating')->getEntitySummary($product->getId());
|
| 608 |
+
$rating_final = ($rating->getSum()/$rating->getCount())/20;
|
| 609 |
+
|
| 610 |
+
if($product->getTypeId() == "configurable")
|
| 611 |
+
$qty = Mage::helper('connector')->getProductStockInfoById($product->getId());
|
| 612 |
+
else
|
| 613 |
+
$qty = (int)Mage::getModel('cataloginventory/stock_item')->loadByProduct($product->getId())->getQty();
|
| 614 |
+
|
| 615 |
+
$new_productlist [] = array (
|
| 616 |
+
'entity_id' => $product->getId (),
|
| 617 |
+
'sku' => $product->getSku (),
|
| 618 |
+
'name' => $product->getName (),
|
| 619 |
+
'news_from_date' => $product->getNewsFromDate (),
|
| 620 |
+
'news_to_date' => $product->getNewsToDate (),
|
| 621 |
+
'special_from_date' => $product->getSpecialFromDate (),
|
| 622 |
+
'special_to_date' => $product->getSpecialToDate (),
|
| 623 |
+
'image_url' => Mage::helper('connector')-> Imageresize($product->getImage(),'product','300','300'),
|
| 624 |
+
'url_key' => $product->getProductUrl (),
|
| 625 |
+
'regular_price_with_tax' => number_format ( Mage::helper ( 'directory' )->currencyConvert ( $product->getPrice (), $baseCurrency, $currentCurrency ), 2, '.', '' ),
|
| 626 |
+
'final_price_with_tax' => number_format ( Mage::helper ( 'directory' )->currencyConvert ( $product->getSpecialPrice (), $baseCurrency, $currentCurrency ), 2, '.', '' ),
|
| 627 |
+
'symbol'=>Mage::app()->getLocale()->currency(Mage::app()->getStore()->getCurrentCurrencyCode())->getSymbol()?: Mage::app()->getStore()->getCurrentCurrencyCode(),
|
| 628 |
+
'qty'=>$qty,
|
| 629 |
+
'rating' => $rating_final,
|
| 630 |
+
'wishlist' => Mage::helper('connector')->check_wishlist($product->getId ()),
|
| 631 |
+
);
|
| 632 |
+
}
|
| 633 |
+
return $new_productlist;
|
| 634 |
+
}
|
| 635 |
+
public function getnewproducts()
|
| 636 |
+
{
|
| 637 |
+
# get New Products start
|
| 638 |
+
$todayDate = Mage::app()->getLocale()->date()->toString(Varien_Date::DATETIME_INTERNAL_FORMAT);
|
| 639 |
+
$_productCollection = Mage::getResourceModel('catalog/product_collection')
|
| 640 |
+
->addAttributeToSelect('*')
|
| 641 |
+
->addAttributeToFilter('status',array('eq'=>1))
|
| 642 |
+
->setPageSize (5)
|
| 643 |
+
->addAttributeToFilter('visibility',array('eq'=>4))
|
| 644 |
+
->addAttributeToFilter('news_from_date', array('date' => true, 'to' => $todayDate))
|
| 645 |
+
->addAttributeToFilter('news_to_date', array('or'=> array(
|
| 646 |
+
0 => array('date' => true, 'from' => $todayDate),
|
| 647 |
+
1 => array('is' => new Zend_Db_Expr('null')))
|
| 648 |
+
), 'left');
|
| 649 |
+
|
| 650 |
+
$now = date('Y-m-d');
|
| 651 |
+
$newsFrom= substr($_productCollection->getData('news_from_date'),0,10);
|
| 652 |
+
$newsTo= substr($_productCollection->getData('news_to_date'),0,10);
|
| 653 |
+
Mage::getSingleton('cataloginventory/stock')->addInStockFilterToCollection($_productCollection);
|
| 654 |
+
|
| 655 |
+
if(!$_productCollection->count()):
|
| 656 |
+
return $new_productlist = array ();
|
| 657 |
+
else:
|
| 658 |
+
if ($now>=$newsFrom && $now<=$newsTo)$i=0;
|
| 659 |
+
|
| 660 |
+
$new_productlist = array ();
|
| 661 |
+
$baseCurrency = Mage::app ()->getStore ()->getBaseCurrency ()->getCode ();
|
| 662 |
+
$currentCurrency = Mage::app ()->getStore ()->getCurrentCurrencyCode ();
|
| 663 |
+
foreach ( $_productCollection as $product ) {
|
| 664 |
+
|
| 665 |
+
$product = Mage::getModel ( 'catalog/product' )->load ( $product ['entity_id'] );
|
| 666 |
+
|
| 667 |
+
$rating = Mage::getModel('rating/rating')->getEntitySummary($product->getId());
|
| 668 |
+
$rating_final = ($rating->getSum()/$rating->getCount())/20;
|
| 669 |
+
|
| 670 |
+
if($product->getTypeId() == "configurable")
|
| 671 |
+
$qty = Mage::helper('connector')->getProductStockInfoById($product->getId());
|
| 672 |
+
else
|
| 673 |
+
$qty = (int)Mage::getModel('cataloginventory/stock_item')->loadByProduct($product->getId())->getQty();
|
| 674 |
+
|
| 675 |
+
|
| 676 |
+
$new_productlist [] = array (
|
| 677 |
+
'entity_id' => $product->getId (),
|
| 678 |
+
'sku' => $product->getSku (),
|
| 679 |
+
'name' => $product->getName (),
|
| 680 |
+
'news_from_date' => $product->getNewsFromDate (),
|
| 681 |
+
'news_to_date' => $product->getNewsToDate (),
|
| 682 |
+
'special_from_date' => $product->getSpecialFromDate (),
|
| 683 |
+
'special_to_date' => $product->getSpecialToDate (),
|
| 684 |
+
'image_url' => Mage::helper('connector')-> Imageresize($product->getImage(),'product','300','300'),
|
| 685 |
+
'url_key' => $product->getProductUrl (),
|
| 686 |
+
'regular_price_with_tax' => number_format ( Mage::helper ( 'directory' )->currencyConvert ( $product->getPrice (), $baseCurrency, $currentCurrency ), 2, '.', '' ),
|
| 687 |
+
'final_price_with_tax' => number_format ( Mage::helper ( 'directory' )->currencyConvert ( $product->getSpecialPrice (), $baseCurrency, $currentCurrency ), 2, '.', '' ),
|
| 688 |
+
'symbol'=>Mage::app()->getLocale()->currency(Mage::app()->getStore()->getCurrentCurrencyCode())->getSymbol()?: Mage::app()->getStore()->getCurrentCurrencyCode(),
|
| 689 |
+
'qty'=>$qty,
|
| 690 |
+
'rating' => $rating_final,
|
| 691 |
+
'wishlist' => Mage::helper('connector')->check_wishlist($product->getId ()),
|
| 692 |
+
);
|
| 693 |
+
}
|
| 694 |
+
|
| 695 |
+
return $new_productlist;
|
| 696 |
+
|
| 697 |
+
endif;
|
| 698 |
+
|
| 699 |
+
}
|
| 700 |
+
|
| 701 |
+
|
| 702 |
+
|
| 703 |
+
|
| 704 |
+
|
| 705 |
+
|
| 706 |
+
public function getsaleproducts()
|
| 707 |
+
{
|
| 708 |
+
|
| 709 |
+
$order = ($this->getRequest ()->getParam ( 'order' )) ? ($this->getRequest ()->getParam ( 'order' )) : 'entity_id';
|
| 710 |
+
$dir = ($this->getRequest ()->getParam ( 'dir' )) ? ($this->getRequest ()->getParam ( 'dir' )) : 'desc';
|
| 711 |
+
$page = ($this->getRequest ()->getParam ( 'page' )) ? ($this->getRequest ()->getParam ( 'page' )) : 1;
|
| 712 |
+
$limit = ($this->getRequest ()->getParam ( 'limit' )) ? ($this->getRequest ()->getParam ( 'limit' )) : 5;
|
| 713 |
+
$todayDate = Mage::app ()->getLocale ()->date ()->toString ( Varien_Date::DATETIME_INTERNAL_FORMAT );
|
| 714 |
+
$tomorrow = mktime ( 0, 0, 0, date ( 'm' ), date ( 'd' ) + 1, date ( 'y' ) );
|
| 715 |
+
$dateTomorrow = date ( 'm/d/y', $tomorrow );
|
| 716 |
+
|
| 717 |
+
$collection = Mage::getModel ( 'catalog/product' )->getCollection ();
|
| 718 |
+
$collection->addAttributeToSelect ( '*' )->addAttributeToFilter ( 'visibility', array (
|
| 719 |
+
|
| 720 |
+
'neq' => 1
|
| 721 |
+
|
| 722 |
+
) )->addAttributeToFilter ( 'status', 1 )->addAttributeToFilter ( 'special_price', array (
|
| 723 |
+
'neq' => "0"
|
| 724 |
+
) )->addAttributeToFilter ( 'special_from_date', array (
|
| 725 |
+
'date' => true,
|
| 726 |
+
'to' => $todayDate
|
| 727 |
+
) )->addAttributeToFilter ( array (
|
| 728 |
+
array (
|
| 729 |
+
'attribute' => 'special_to_date',
|
| 730 |
+
'date' => true,
|
| 731 |
+
'from' => $dateTomorrow
|
| 732 |
+
),
|
| 733 |
+
array (
|
| 734 |
+
'attribute' => 'special_to_date',
|
| 735 |
+
'null' => 1
|
| 736 |
+
)
|
| 737 |
+
) )
|
| 738 |
+
->addAttributeToFilter('visibility',array('eq'=>4))
|
| 739 |
+
->addAttributeToSort ( $order, $dir );
|
| 740 |
+
$pages = $collection->setPageSize ( $limit )->getLastPageNumber ();
|
| 741 |
+
$count=$collection->getSize();
|
| 742 |
+
if(!$count):
|
| 743 |
+
return array();
|
| 744 |
+
endif;
|
| 745 |
+
if ($page <= $pages) {
|
| 746 |
+
$collection->setPage ( $page, $limit );
|
| 747 |
+
$products = $collection->getItems ();
|
| 748 |
+
$productlist = $this->getProductlist ( $products );
|
| 749 |
+
}
|
| 750 |
+
return $productlist;
|
| 751 |
+
|
| 752 |
+
}
|
| 753 |
+
}
|
app/code/local/Mss/Connector/controllers/ItemController.php
ADDED
|
@@ -0,0 +1,798 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
class Mss_Connector_ItemController extends Mage_Core_Controller_Front_Action {
|
| 3 |
+
/**
|
| 4 |
+
* Current product object
|
| 5 |
+
*
|
| 6 |
+
* @var Mage_Catalog_Model_Product
|
| 7 |
+
*/
|
| 8 |
+
protected $product;
|
| 9 |
+
protected $_keepFrame = true;
|
| 10 |
+
protected $_keepAspectRatio = true; // false stretch the image
|
| 11 |
+
protected $thumbnail_with = 320;
|
| 12 |
+
protected $thumbnail_height = null;
|
| 13 |
+
protected $main_with = 640;
|
| 14 |
+
protected $main_height = null;
|
| 15 |
+
|
| 16 |
+
/**
|
| 17 |
+
* the item converted by the current product
|
| 18 |
+
*
|
| 19 |
+
*/
|
| 20 |
+
private $item = array ();
|
| 21 |
+
private $detail = false;
|
| 22 |
+
const OPTION_TYPE_SELECT = 'select';
|
| 23 |
+
const OPTION_TYPE_CHECKBOX = 'multiselect';
|
| 24 |
+
const OPTION_TYPE_MULTIPLE_SELECT = 'multiselect';
|
| 25 |
+
const OPTION_TYPE_TEXT = 'text';
|
| 26 |
+
const OPTION_TYPE_DATE = 'date';
|
| 27 |
+
const OPTION_TYPE_TIME = 'time';
|
| 28 |
+
const OPTION_TYPE_DATE_TIME = 'datetime';
|
| 29 |
+
|
| 30 |
+
public function _construct(){
|
| 31 |
+
|
| 32 |
+
header('content-type: application/json; charset=utf-8');
|
| 33 |
+
header("access-control-allow-origin: *");
|
| 34 |
+
Mage::helper('connector')->loadParent(Mage::app()->getFrontController()->getRequest()->getHeader('token'));
|
| 35 |
+
parent::_construct();
|
| 36 |
+
|
| 37 |
+
}
|
| 38 |
+
public function getItemAction() {
|
| 39 |
+
return json_encode ( $this->_getitem () );
|
| 40 |
+
}
|
| 41 |
+
/**
|
| 42 |
+
* the API interface function
|
| 43 |
+
*
|
| 44 |
+
* @param type $apidata
|
| 45 |
+
* @return type
|
| 46 |
+
*/
|
| 47 |
+
public function _getitem() {
|
| 48 |
+
$apidata = $this->getRequest ()->getParams ();
|
| 49 |
+
$item_id = $apidata ['item_id'];
|
| 50 |
+
if ($this->loadProduct ( $item_id )) {
|
| 51 |
+
$this->detail = true;
|
| 52 |
+
$this->getItemBaseInfo ();
|
| 53 |
+
$this->getItemAttributes ();
|
| 54 |
+
$this->getItemPrices ();
|
| 55 |
+
$this->getItemImages ();
|
| 56 |
+
$this->getProductDescription ();
|
| 57 |
+
$this->getRecommendedItems ();
|
| 58 |
+
// $this->getRelatedItems();
|
| 59 |
+
}
|
| 60 |
+
return array (
|
| 61 |
+
true,
|
| 62 |
+
'0x0000',
|
| 63 |
+
array (
|
| 64 |
+
'item' => $this->item
|
| 65 |
+
)
|
| 66 |
+
);
|
| 67 |
+
}
|
| 68 |
+
public function getItemBaseInfo() {
|
| 69 |
+
$helper = Mage::helper ( 'catalog/image' );
|
| 70 |
+
$helper->init ( $this->product, $this->getProductImageType () )->keepAspectRatio ( $this->_keepAspectRatio )->keepFrame ( $this->_keepFrame );
|
| 71 |
+
$this->item ['item_id'] = $this->product->getId ();
|
| 72 |
+
$this->item ['item_title'] = $this->product->getName ();
|
| 73 |
+
$this->item ['item_url'] = $this->product->getProductUrl ();
|
| 74 |
+
$this->item ['cid'] = $this->product->getCategoryIds ();
|
| 75 |
+
$this->item ['qty'] = $this->product->getStockItem ()->getQty ();
|
| 76 |
+
$this->item ['thumbnail_pic_url'] = ( string ) $helper->resize ( $this->thumbnail_with, $this->thumbnail_height );
|
| 77 |
+
$this->item ['main_pic_url'] = ( string ) $helper->resize ( $this->main_with, $this->main_height );
|
| 78 |
+
$this->item ['is_virtual'] = $this->product->isVirtual ();
|
| 79 |
+
$this->item ['item_status'] = $this->product->isSaleable () ? 'instock' : 'outofstock';
|
| 80 |
+
if (! $this->product->getRatingSummary ()) {
|
| 81 |
+
Mage::getModel ( 'review/review' )->getEntitySummary ( $this->product, Mage::app ()->getStore ()->getId () );
|
| 82 |
+
}
|
| 83 |
+
$this->item ['allow_add_to_cart'] = ! $this->HasOptions ();
|
| 84 |
+
$this->item ['rating_score'] = round ( ( int ) $this->product->getRatingSummary ()->getRatingSummary () / 20 );
|
| 85 |
+
$this->item ['rating_count'] = $this->product->getRatingSummary ()->getReviewsCount ();
|
| 86 |
+
$this->item ['sales_type'] = ($this->product->isInStock ()) ? 'stock' : 'distribute';
|
| 87 |
+
$this->item ['qty_min_unit'] = 1;
|
| 88 |
+
$stockItem = $this->product->getStockItem ();
|
| 89 |
+
if ($stockItem) {
|
| 90 |
+
if ($stockItem->getMinSaleQty () && $stockItem->getMinSaleQty () > 0) {
|
| 91 |
+
$this->item ['qty_min_unit'] = $stockItem->getMinSaleQty ();
|
| 92 |
+
}
|
| 93 |
+
}
|
| 94 |
+
$this->item ['item_type'] = $this->product->getTypeId ();
|
| 95 |
+
return $this->item;
|
| 96 |
+
}
|
| 97 |
+
public function getItemPrices() {
|
| 98 |
+
$prices = array ();
|
| 99 |
+
$productType = $this->product->getTypeId ();
|
| 100 |
+
switch ($productType) {
|
| 101 |
+
case Mage_Catalog_Model_Product_Type::TYPE_BUNDLE :
|
| 102 |
+
{
|
| 103 |
+
$prices = $this->collectBundleProductPrices ( $this->product );
|
| 104 |
+
}
|
| 105 |
+
break;
|
| 106 |
+
default :
|
| 107 |
+
{
|
| 108 |
+
$prices = $this->collectProductPrices ( $this->product );
|
| 109 |
+
}
|
| 110 |
+
break;
|
| 111 |
+
}
|
| 112 |
+
$this->item ['prices'] = $prices;
|
| 113 |
+
return $prices;
|
| 114 |
+
}
|
| 115 |
+
public function HasOptions() {
|
| 116 |
+
if (! $this->product->isSaleable ()) {
|
| 117 |
+
return false;
|
| 118 |
+
} else if ($this->product->getHasOptions ()) {
|
| 119 |
+
return true;
|
| 120 |
+
} else {
|
| 121 |
+
return $this->product->getTypeInstance ( true )->hasOptions ( $this->product );
|
| 122 |
+
}
|
| 123 |
+
}
|
| 124 |
+
public function getItemAttributes() {
|
| 125 |
+
$productType = $this->product->getTypeId ();
|
| 126 |
+
switch ($productType) {
|
| 127 |
+
case Mage_Catalog_Model_Product_Type::TYPE_SIMPLE :
|
| 128 |
+
{
|
| 129 |
+
$this->item ['attributes'] = $this->getProductCustomOptionsOption ( $this->product );
|
| 130 |
+
}
|
| 131 |
+
break;
|
| 132 |
+
case Mage_Catalog_Model_Product_Type::TYPE_BUNDLE :
|
| 133 |
+
{
|
| 134 |
+
if ($this->product->getTypeInstance ( true )->hasOptions ( $this->product )) {
|
| 135 |
+
$this->item ['attributes'] = $this->getProductBundleOptions ( $this->product );
|
| 136 |
+
}
|
| 137 |
+
}
|
| 138 |
+
break;
|
| 139 |
+
case Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE :
|
| 140 |
+
{
|
| 141 |
+
if ($this->product->isConfigurable ()) {
|
| 142 |
+
$this->item ['attributes'] = $this->getProductOptions ( $this->product );
|
| 143 |
+
}
|
| 144 |
+
}
|
| 145 |
+
break;
|
| 146 |
+
case Mage_Catalog_Model_Product_Type::TYPE_GROUPED :
|
| 147 |
+
{
|
| 148 |
+
$this->item ['attributes'] = $this->getProductGroupedOptions ( $this->product );
|
| 149 |
+
}
|
| 150 |
+
break;
|
| 151 |
+
case Mage_Downloadable_Model_Product_Type::TYPE_DOWNLOADABLE :
|
| 152 |
+
{ // downloadable/catalog_product_links
|
| 153 |
+
$this->item ['attributes'] = $this->getProductDownloadOptions ( $this->product );
|
| 154 |
+
}
|
| 155 |
+
break;
|
| 156 |
+
case Mage_Catalog_Model_Product_Type::TYPE_VIRTUAL :
|
| 157 |
+
{
|
| 158 |
+
$this->item ['attributes'] = array ();
|
| 159 |
+
}
|
| 160 |
+
break;
|
| 161 |
+
default :
|
| 162 |
+
{
|
| 163 |
+
$this->item ['attributes'] = array ();
|
| 164 |
+
}
|
| 165 |
+
break;
|
| 166 |
+
}
|
| 167 |
+
return $this->item ['attributes'];
|
| 168 |
+
}
|
| 169 |
+
public function setProduct($product) {
|
| 170 |
+
$this->product = $product;
|
| 171 |
+
}
|
| 172 |
+
public function loadProduct($itemId) {
|
| 173 |
+
if ($this->product && $this->product->getId ()) {
|
| 174 |
+
return $this->product;
|
| 175 |
+
}
|
| 176 |
+
$this->product = Mage::getModel ( 'catalog/product' )->setStoreId ( Mage::app ()->getStore ()->getId () )->load ( $itemId );
|
| 177 |
+
if ($this->product && $this->product->getId ()) {
|
| 178 |
+
return true;
|
| 179 |
+
}
|
| 180 |
+
return false;
|
| 181 |
+
}
|
| 182 |
+
public function getItem() {
|
| 183 |
+
return $this->item;
|
| 184 |
+
}
|
| 185 |
+
private function getProductImageType() {
|
| 186 |
+
$imageType = 'image';
|
| 187 |
+
$itemData = $this->product->getData ();
|
| 188 |
+
if (isset ( $itemData ['image'] )) {
|
| 189 |
+
$imageType = 'image';
|
| 190 |
+
} else if (isset ( $itemData ['small_image'] )) {
|
| 191 |
+
$imageType = 'small_image';
|
| 192 |
+
} else if (isset ( $itemData ['thumbnail'] )) {
|
| 193 |
+
$imageType = 'thumbnail';
|
| 194 |
+
}
|
| 195 |
+
return $imageType;
|
| 196 |
+
}
|
| 197 |
+
|
| 198 |
+
/**
|
| 199 |
+
* add prefix to options to distinguish between options,super attribute,bunlde and super group
|
| 200 |
+
*
|
| 201 |
+
* @param type $options
|
| 202 |
+
*/
|
| 203 |
+
private function addPrefixTo(&$options, $type) {
|
| 204 |
+
if ($options) {
|
| 205 |
+
foreach ( $options as &$option ) {
|
| 206 |
+
$prefix = "{$type}_" . $option ['attribute_id'];
|
| 207 |
+
$option ['attribute_id'] = $prefix;
|
| 208 |
+
if ($option ['options']) {
|
| 209 |
+
foreach ( $option ['options'] as &$value ) {
|
| 210 |
+
$value ['attribute_id'] = $prefix;
|
| 211 |
+
}
|
| 212 |
+
}
|
| 213 |
+
}
|
| 214 |
+
}
|
| 215 |
+
}
|
| 216 |
+
public function getProductDescription() {
|
| 217 |
+
$_helper = Mage::helper ( 'catalog/output' );
|
| 218 |
+
$this->item ['short_description'] = $_helper->productAttribute ( $this->product, nl2br ( $this->product->getShortDescription () ), 'short_description' );
|
| 219 |
+
$this->item ['short_description'] = preg_replace ( '/(<img[^<>]+?src\s*=\s*\")([^:\"]+\")/i', '$1' . Mage::getBaseUrl () . '$2', $this->item ['short_description'] );
|
| 220 |
+
$this->item ['detail_description'] = $_helper->productAttribute ( $this->product, $this->product->getDescription (), 'description' );
|
| 221 |
+
if (preg_match ( '/{{(.+)}}/i', $this->item ['detail_description'] )) {
|
| 222 |
+
$this->item ['detail_description'] = preg_replace ( '/(\<img[^<>]+src\s*=\s*"){{(\w+)\s*url="(.+)}}/i', '$1' . Mage::getBaseUrl () . '/$2/$3', $this->item ['detail_description'] );
|
| 223 |
+
}
|
| 224 |
+
$this->item ['detail_description'] = preg_replace ( '/(<img[^<>]+?src\s*=\s*\")([^:\"]+\")/i', '$1' . Mage::getBaseUrl () . '$2', $this->item ['detail_description'] );
|
| 225 |
+
$this->item ['specifications'] = $this->getProductFeature ();
|
| 226 |
+
}
|
| 227 |
+
public function getProductFeature() {
|
| 228 |
+
$features = array ();
|
| 229 |
+
if (Mage_Downloadable_Model_Product_Type::TYPE_DOWNLOADABLE == $this->product->getTypeId ()) {
|
| 230 |
+
$block = Mage::getBlockSingleton ( 'downloadable/catalog_product_samples' );
|
| 231 |
+
$block->setProduct ( $this->product );
|
| 232 |
+
if ($block->hasSamples ()) {
|
| 233 |
+
foreach ( $block->getSamples () as $sample ) {
|
| 234 |
+
$features [] = array (
|
| 235 |
+
'name' => $block->getSamplesTitle (),
|
| 236 |
+
'value' => '<a href="' . $block->getSampleUrl ( $sample ) . '" ' . ($block->getIsOpenInNewWindow () ? 'onclick="this.target=\'_blank\'">' : '>') . $block->escapeHtml ( $sample->getTitle () ) . '</a>'
|
| 237 |
+
);
|
| 238 |
+
}
|
| 239 |
+
}
|
| 240 |
+
} else {
|
| 241 |
+
Mage::register ( 'product', $this->product );
|
| 242 |
+
$block = Mage::getBlockSingleton ( 'catalog/product_view_Attributes' );
|
| 243 |
+
$helper = $block->helper ( 'catalog/output' );
|
| 244 |
+
$data = $block->getAdditionalData ();
|
| 245 |
+
foreach ( $data as $feature ) {
|
| 246 |
+
$features [] = array (
|
| 247 |
+
'name' => $block->htmlEscape ( $block->__ ( $feature ['label'] ) ),
|
| 248 |
+
'value' => $helper->productAttribute ( $this->product, $feature ['value'], $feature ['code'] )
|
| 249 |
+
);
|
| 250 |
+
}
|
| 251 |
+
}
|
| 252 |
+
|
| 253 |
+
return $features;
|
| 254 |
+
}
|
| 255 |
+
private function getItemImageUrl($imageFile = null) {
|
| 256 |
+
$imageType = $this->getProductImageType ();
|
| 257 |
+
$helper = Mage::helper ( 'catalog/image' );
|
| 258 |
+
return ( string ) $helper->init ( $this->product, $imageType, $imageFile )->keepAspectRatio ( $this->_keepAspectRatio )->keepFrame ( $this->_keepFrame )->resize ( $this->main_with, $this->main_height );
|
| 259 |
+
}
|
| 260 |
+
public function getItemImages() {
|
| 261 |
+
$this->item ['item_imgs'] = array ();
|
| 262 |
+
$name = basename ( $this->product->getImageUrl () );
|
| 263 |
+
if (($images = $this->product->getMediaGalleryImages ())) {
|
| 264 |
+
if (count ( $images ) > 0) {
|
| 265 |
+
$position = 0;
|
| 266 |
+
foreach ( $images as $image ) {
|
| 267 |
+
$itemImg = array ();
|
| 268 |
+
$itemImg ['img_id'] = $image->getId ();
|
| 269 |
+
$itemImg ['img_url'] = $this->getItemImageUrl ( $image->getFile () );
|
| 270 |
+
$itemImg ['position'] = ++ $position;
|
| 271 |
+
if ($position > 1 && $name == basename ( $image->getFile () )) {
|
| 272 |
+
$first = $itemImg;
|
| 273 |
+
$first ['position'] = 0;
|
| 274 |
+
} else {
|
| 275 |
+
$this->item ['item_imgs'] [] = $itemImg;
|
| 276 |
+
}
|
| 277 |
+
}
|
| 278 |
+
if (isset ( $first )) {
|
| 279 |
+
$this->item ['item_imgs'] = array_merge ( array (
|
| 280 |
+
$first
|
| 281 |
+
), $this->item ['item_imgs'] );
|
| 282 |
+
}
|
| 283 |
+
|
| 284 |
+
return $this->item ['item_imgs'];
|
| 285 |
+
}
|
| 286 |
+
}
|
| 287 |
+
$itemImg = array ();
|
| 288 |
+
$itemImg ['img_id'] = 0;
|
| 289 |
+
$itemImg ['img_url'] = $this->getItemImageUrl ();
|
| 290 |
+
$itemImg ['position'] = 0;
|
| 291 |
+
$this->item ['item_imgs'] [] = $itemImg;
|
| 292 |
+
return $this->item ['item_imgs'];
|
| 293 |
+
}
|
| 294 |
+
public function getRelatedItems() {
|
| 295 |
+
$items = array ();
|
| 296 |
+
$collection = $this->product->getRelatedProductCollection ();
|
| 297 |
+
$layer = Mage::getSingleton ( 'catalog/layer' );
|
| 298 |
+
$layer->prepareProductCollection ( $collection );
|
| 299 |
+
$products = $collection->getItems ();
|
| 300 |
+
if ($products) {
|
| 301 |
+
$itemObject = Kancart::getModel ( 'Item' );
|
| 302 |
+
foreach ( $products as $product ) {
|
| 303 |
+
$itemObject->setProduct ( $product );
|
| 304 |
+
$itemObject->getItemBaseInfo ();
|
| 305 |
+
$itemObject->getItemPrices ();
|
| 306 |
+
$items [] = $itemObject->getItem ();
|
| 307 |
+
$itemObject->clear ();
|
| 308 |
+
}
|
| 309 |
+
}
|
| 310 |
+
$this->item ['related_items'] = $items;
|
| 311 |
+
return $items;
|
| 312 |
+
}
|
| 313 |
+
public function getRecommendedItems() {
|
| 314 |
+
$items = array ();
|
| 315 |
+
$collection = $this->product->getUpSellProductCollection ();
|
| 316 |
+
$layer = Mage::getSingleton ( 'catalog/layer' );
|
| 317 |
+
$layer->prepareProductCollection ( $collection );
|
| 318 |
+
$products = $collection->getItems ();
|
| 319 |
+
if ($products) {
|
| 320 |
+
$itemObject = Kancart::getModel ( 'Item' );
|
| 321 |
+
foreach ( $products as $product ) {
|
| 322 |
+
$itemObject->setProduct ( $product );
|
| 323 |
+
$itemObject->getItemBaseInfo ();
|
| 324 |
+
$itemObject->getItemPrices ();
|
| 325 |
+
$items [] = $itemObject->getItem ();
|
| 326 |
+
$itemObject->clear ();
|
| 327 |
+
}
|
| 328 |
+
}
|
| 329 |
+
$this->item ['recommended_items'] = $items;
|
| 330 |
+
return $items;
|
| 331 |
+
}
|
| 332 |
+
private function getItemTierPrice($_product) { // getTierPrice
|
| 333 |
+
$result = array ();
|
| 334 |
+
if ($this->detail) {
|
| 335 |
+
foreach ( $_product->getTierPrice () as $discount ) {
|
| 336 |
+
$result [] = array (
|
| 337 |
+
'min_qty' => ( int ) $discount ['price_qty'],
|
| 338 |
+
'price' => $this->getCurrencyPrice ( $discount ['price'] )
|
| 339 |
+
);
|
| 340 |
+
}
|
| 341 |
+
}
|
| 342 |
+
return $result;
|
| 343 |
+
}
|
| 344 |
+
public function clear() {
|
| 345 |
+
$this->item = array ();
|
| 346 |
+
$this->product = null;
|
| 347 |
+
}
|
| 348 |
+
private function getProductGroupedOptions(Mage_Catalog_Model_Product $product) {
|
| 349 |
+
if (! $product->getId ()) {
|
| 350 |
+
return array ();
|
| 351 |
+
}
|
| 352 |
+
if (! $product->isSaleable ()) {
|
| 353 |
+
return array ();
|
| 354 |
+
}
|
| 355 |
+
/**
|
| 356 |
+
* Grouped (associated) products
|
| 357 |
+
*/
|
| 358 |
+
$_associatedProducts = $product->getTypeInstance ( true )->getAssociatedProducts ( $product );
|
| 359 |
+
if (! sizeof ( $_associatedProducts )) {
|
| 360 |
+
return array ();
|
| 361 |
+
}
|
| 362 |
+
$attributes = array ();
|
| 363 |
+
foreach ( $_associatedProducts as $_item ) {
|
| 364 |
+
if (! $_item->isSaleable ()) {
|
| 365 |
+
continue;
|
| 366 |
+
}
|
| 367 |
+
$attribute = array ();
|
| 368 |
+
|
| 369 |
+
$attribute ['attribute_id'] = $_item->getId ();
|
| 370 |
+
$attribute ['input'] = 'product';
|
| 371 |
+
$attribute ['title'] = strip_tags ( $_item->getName () );
|
| 372 |
+
$attribute ['qty'] = $_item->getQty () * 1;
|
| 373 |
+
$attribute ['is_editable'] = 1;
|
| 374 |
+
/**
|
| 375 |
+
* Process product price
|
| 376 |
+
*/
|
| 377 |
+
if ($_item->getPrice () != $_item->getFinalPrice ()) {
|
| 378 |
+
$productPrice = $_item->getFinalPrice ();
|
| 379 |
+
} else {
|
| 380 |
+
$productPrice = $_item->getPrice ();
|
| 381 |
+
}
|
| 382 |
+
if ($productPrice > 0.00) {
|
| 383 |
+
// add
|
| 384 |
+
$attribute ['price'] = $this->getCurrencyPrice ( $productPrice );
|
| 385 |
+
}
|
| 386 |
+
$attribute ['options'] = array ();
|
| 387 |
+
$attributes [] = $attribute;
|
| 388 |
+
}
|
| 389 |
+
return $attributes;
|
| 390 |
+
}
|
| 391 |
+
private function getProductBundleOptions(Mage_Catalog_Model_Product $product) {
|
| 392 |
+
if ($product->getTypeInstance ( true )->hasOptions ( $product )) {
|
| 393 |
+
$product->getTypeInstance ( true )->setStoreFilter ( $product->getStoreId (), $product );
|
| 394 |
+
$optionCollection = $product->getTypeInstance ( true )->getOptionsCollection ( $product );
|
| 395 |
+
$selectionCollection = $product->getTypeInstance ( true )->getSelectionsCollection ( $product->getTypeInstance ( true )->getOptionsIds ( $product ), $product );
|
| 396 |
+
$bundleOptions = $optionCollection->appendSelections ( $selectionCollection, false, false );
|
| 397 |
+
if (! sizeof ( $bundleOptions )) {
|
| 398 |
+
return array ();
|
| 399 |
+
}
|
| 400 |
+
$attributes = array ();
|
| 401 |
+
foreach ( $bundleOptions as $_option ) {
|
| 402 |
+
$selections = $_option->getSelections ();
|
| 403 |
+
if (empty ( $selections )) {
|
| 404 |
+
continue;
|
| 405 |
+
}
|
| 406 |
+
$type = self::OPTION_TYPE_SELECT;
|
| 407 |
+
if ($_option->isMultiSelection ()) {
|
| 408 |
+
$type = self::OPTION_TYPE_MULTIPLE_SELECT;
|
| 409 |
+
}
|
| 410 |
+
$code = $_option->getId ();
|
| 411 |
+
if ($type == self::OPTION_TYPE_MULTIPLE_SELECT) {
|
| 412 |
+
$code .= '';
|
| 413 |
+
}
|
| 414 |
+
$attribute = array ();
|
| 415 |
+
$attribute ['attribute_id'] = $code;
|
| 416 |
+
$attribute ['parent_id'] = $_option->getParentId ();
|
| 417 |
+
$attribute ['position'] = $_option->getPosition ();
|
| 418 |
+
$attribute ['required'] = $_option->getRequired () || $_option->getIsRequired () || $_option->getIsRequire ();
|
| 419 |
+
$attribute ['input'] = $this->_getOptionTypeForKanCartByRealType ( $_option->getType () );
|
| 420 |
+
$attribute ['title'] = $_option->getTitle ();
|
| 421 |
+
$attribute ['options'] = array ();
|
| 422 |
+
if (! $attribute ['required'] && $attribute ['input'] == self::OPTION_TYPE_SELECT) {
|
| 423 |
+
$none = array (
|
| 424 |
+
'attribute_id' => 'none',
|
| 425 |
+
'option_id' => '',
|
| 426 |
+
'title' => 'None'
|
| 427 |
+
);
|
| 428 |
+
$attribute ['options'] [] = $none;
|
| 429 |
+
}
|
| 430 |
+
if (empty ( $selections )) {
|
| 431 |
+
$attributes [] = $attribute;
|
| 432 |
+
continue;
|
| 433 |
+
}
|
| 434 |
+
foreach ( $_option->getSelections () as $_selection ) {
|
| 435 |
+
if (! $_selection->isSaleable ()) {
|
| 436 |
+
continue;
|
| 437 |
+
}
|
| 438 |
+
$finalValue = array ();
|
| 439 |
+
$finalValue ['attribute_id'] = $_option->getOptionId ();
|
| 440 |
+
$finalValue ['option_id'] = $_selection->getSelectionId ();
|
| 441 |
+
$finalValue ['title'] = $_selection->getName ();
|
| 442 |
+
$finalValue ['qty'] = ! ($_selection->getSelectionQty () * 1) ? '1' : $_selection->getSelectionQty () * 1;
|
| 443 |
+
$finalValue ['is_default'] = $_selection->getIsDefault ();
|
| 444 |
+
if (! $_option->isMultiSelection ()) {
|
| 445 |
+
if ($_selection->getSelectionCanChangeQty ()) {
|
| 446 |
+
$finalValue ['is_qty_editable'] = 1;
|
| 447 |
+
}
|
| 448 |
+
}
|
| 449 |
+
$price = $product->getPriceModel ()->getSelectionPreFinalPrice ( $product, $_selection );
|
| 450 |
+
if (( float ) $price != 0.00) {
|
| 451 |
+
$finalValue ['price'] = $this->getCurrencyPrice ( $price );
|
| 452 |
+
} else {
|
| 453 |
+
$finalValue ['price'] = null;
|
| 454 |
+
}
|
| 455 |
+
$attribute ['options'] [] = $finalValue;
|
| 456 |
+
}
|
| 457 |
+
$attributes [] = $attribute;
|
| 458 |
+
}
|
| 459 |
+
return $attributes;
|
| 460 |
+
}
|
| 461 |
+
return false;
|
| 462 |
+
}
|
| 463 |
+
|
| 464 |
+
/**
|
| 465 |
+
* 仅仅将$attributes中的数据提取出来,其中价格已经是根据当前汇率转换后的价格
|
| 466 |
+
*
|
| 467 |
+
* @param type $attributes
|
| 468 |
+
* @return type
|
| 469 |
+
*/
|
| 470 |
+
private function getProductConfigurableAttributes($configurableProductAttributes) {
|
| 471 |
+
$attributes = array ();
|
| 472 |
+
foreach ( $configurableProductAttributes as $attrId => $attribute ) {
|
| 473 |
+
$eachAttribute = array ();
|
| 474 |
+
$eachAttribute ['attribute_id'] = $attrId;
|
| 475 |
+
$eachAttribute ['required'] = $attribute ['is_required'] == '1' ? true : false;
|
| 476 |
+
$eachAttribute ['input'] = 'select';
|
| 477 |
+
$eachAttribute ['title'] = $attribute ['label'];
|
| 478 |
+
$eachAttribute ['options'] = array ();
|
| 479 |
+
if (isset ( $attribute ['options'] )) {
|
| 480 |
+
foreach ( $attribute ['options'] as $option ) {
|
| 481 |
+
$value = array ();
|
| 482 |
+
$value ['attribute_id'] = $attrId;
|
| 483 |
+
$value ['option_id'] = $option ['id'];
|
| 484 |
+
$value ['title'] = $option ['label'];
|
| 485 |
+
$value ['price'] = $option ['price'];
|
| 486 |
+
$eachAttribute ['options'] [] = $value;
|
| 487 |
+
}
|
| 488 |
+
}
|
| 489 |
+
$attributes [] = $eachAttribute;
|
| 490 |
+
}
|
| 491 |
+
return $attributes;
|
| 492 |
+
}
|
| 493 |
+
private function getProductOptions(Mage_Catalog_Model_Product $product) {
|
| 494 |
+
$orgiOptions = $this->getProductCustomOptionsOption ( $product );
|
| 495 |
+
$options = array ();
|
| 496 |
+
if (! $product->isSaleable ()) {
|
| 497 |
+
return $orgiOptions;
|
| 498 |
+
}
|
| 499 |
+
$_attributes = $product->getTypeInstance ( true )->getConfigurableAttributes ( $product );
|
| 500 |
+
if (! sizeof ( $_attributes )) {
|
| 501 |
+
return $orgiOptions;
|
| 502 |
+
}
|
| 503 |
+
$_allowProducts = array ();
|
| 504 |
+
$_allProducts = $product->getTypeInstance ( true )->getUsedProducts ( null, $product );
|
| 505 |
+
foreach ( $_allProducts as $_product ) {
|
| 506 |
+
if ($_product->isSaleable ()) {
|
| 507 |
+
$_allowProducts [] = $_product;
|
| 508 |
+
}
|
| 509 |
+
}
|
| 510 |
+
foreach ( $_allowProducts as $_item ) {
|
| 511 |
+
$_productId = $_item->getId ();
|
| 512 |
+
foreach ( $_attributes as $attribute ) {
|
| 513 |
+
$productAttribute = $attribute->getProductAttribute ();
|
| 514 |
+
$attributeValue = $_item->getData ( $productAttribute->getAttributeCode () );
|
| 515 |
+
$options [$productAttribute->getId ()] [$_productId] = $attributeValue;
|
| 516 |
+
}
|
| 517 |
+
}
|
| 518 |
+
$this->item ['attribute_relation'] = $this->getAttributeRelation ( $options );
|
| 519 |
+
foreach ( $_attributes as $attribute ) {
|
| 520 |
+
$productAttribute = $attribute->getProductAttribute ();
|
| 521 |
+
$attributeId = $productAttribute->getId ();
|
| 522 |
+
$info = array (
|
| 523 |
+
'id' => $productAttribute->getId (),
|
| 524 |
+
'label' => $attribute->getLabel (),
|
| 525 |
+
'is_required' => $productAttribute->getRequired () || $productAttribute->getIsRequired () || $productAttribute->getIsRequire (),
|
| 526 |
+
'options' => array ()
|
| 527 |
+
);
|
| 528 |
+
$prices = $attribute->getPrices ();
|
| 529 |
+
if (is_array ( $prices )) {
|
| 530 |
+
foreach ( $prices as $value ) {
|
| 531 |
+
if (! in_array ( $value ['value_index'], $options [$attributeId] )) {
|
| 532 |
+
continue;
|
| 533 |
+
}
|
| 534 |
+
$info ['options'] [] = array (
|
| 535 |
+
'id' => $value ['value_index'],
|
| 536 |
+
'label' => $value ['label'],
|
| 537 |
+
'price' => $this->_preparePrice ( $product, $value ['pricing_value'], $value ['is_percent'] )
|
| 538 |
+
);
|
| 539 |
+
}
|
| 540 |
+
}
|
| 541 |
+
if (sizeof ( $info ['options'] ) > 0) {
|
| 542 |
+
$attributes [$attributeId] = $info;
|
| 543 |
+
}
|
| 544 |
+
}
|
| 545 |
+
$configurabeAttributes = $this->getProductConfigurableAttributes ( $attributes );
|
| 546 |
+
$this->addPrefixTo ( $orgiOptions, 'option' );
|
| 547 |
+
$this->addPrefixTo ( $configurabeAttributes, 'super_attribute' );
|
| 548 |
+
foreach ( $orgiOptions as $opt ) {
|
| 549 |
+
$configurabeAttributes [] = $opt;
|
| 550 |
+
}
|
| 551 |
+
return $configurabeAttributes;
|
| 552 |
+
}
|
| 553 |
+
private function getProductCustomOptionsOption(Mage_Catalog_Model_Product $product) {
|
| 554 |
+
$options = array ();
|
| 555 |
+
if (! $product->getId ()) {
|
| 556 |
+
return $options;
|
| 557 |
+
}
|
| 558 |
+
if (! $product->isSaleable () || ! sizeof ( $product->getOptions () )) {
|
| 559 |
+
return $options;
|
| 560 |
+
}
|
| 561 |
+
foreach ( $product->getOptions () as $option ) {
|
| 562 |
+
$optionObj = array ();
|
| 563 |
+
$type = $this->_getOptionTypeForKanCartByRealType ( $option->getType () );
|
| 564 |
+
$optionObj ['attribute_id'] = $option->getId ();
|
| 565 |
+
$optionObj ['required'] = $option->getRequired () || $option->getIsRequire () || $option->getIsRequired ();
|
| 566 |
+
$optionObj ['input'] = $type;
|
| 567 |
+
$optionObj ['title'] = $option->getTitle ();
|
| 568 |
+
$price = $option->getPrice ();
|
| 569 |
+
if ($price) {
|
| 570 |
+
$optionObj ['price'] = $this->getCurrencyPrice ( $price );
|
| 571 |
+
} else {
|
| 572 |
+
$optionObj ['price'] = null;
|
| 573 |
+
}
|
| 574 |
+
$optionObj ['options'] = array ();
|
| 575 |
+
if (! $optionObj ['required'] && $optionObj ['input'] == self::OPTION_TYPE_SELECT) {
|
| 576 |
+
$none = array (
|
| 577 |
+
'attribute_id' => 'none',
|
| 578 |
+
'option_id' => '',
|
| 579 |
+
'title' => 'None'
|
| 580 |
+
);
|
| 581 |
+
$optionObj ['options'] [] = $none;
|
| 582 |
+
}
|
| 583 |
+
foreach ( $option->getValues () as $value ) {
|
| 584 |
+
$optionValueObj = array ();
|
| 585 |
+
$optionValueObj ['attribute_id'] = $option->getId ();
|
| 586 |
+
$optionValueObj ['option_id'] = $value->getId ();
|
| 587 |
+
$optionValueObj ['title'] = $value->getTitle ();
|
| 588 |
+
$price = $value->getPrice ();
|
| 589 |
+
if ($price) {
|
| 590 |
+
$optionValueObj ['price'] = $this->getCurrencyPrice ( $price );
|
| 591 |
+
} else {
|
| 592 |
+
$optionValueObj ['price'] = null;
|
| 593 |
+
}
|
| 594 |
+
$optionObj ['options'] [] = $optionValueObj;
|
| 595 |
+
}
|
| 596 |
+
$options [] = $optionObj;
|
| 597 |
+
}
|
| 598 |
+
return $options;
|
| 599 |
+
}
|
| 600 |
+
private function _getOptionTypeForKanCartByRealType($realType) {
|
| 601 |
+
static $map = null;
|
| 602 |
+
|
| 603 |
+
if (is_null ( $map )) {
|
| 604 |
+
$maps = array (
|
| 605 |
+
Mage_Catalog_Model_Product_Option::OPTION_TYPE_DROP_DOWN => self::OPTION_TYPE_SELECT,
|
| 606 |
+
Mage_Catalog_Model_Product_Option::OPTION_TYPE_RADIO => self::OPTION_TYPE_SELECT,
|
| 607 |
+
Mage_Catalog_Model_Product_Option::OPTION_GROUP_SELECT => self::OPTION_TYPE_SELECT,
|
| 608 |
+
Mage_Catalog_Model_Product_Option::OPTION_TYPE_MULTIPLE => self::OPTION_TYPE_MULTIPLE_SELECT,
|
| 609 |
+
Mage_Catalog_Model_Product_Option::OPTION_TYPE_CHECKBOX => self::OPTION_TYPE_MULTIPLE_SELECT,
|
| 610 |
+
Mage_Catalog_Model_Product_Option::OPTION_TYPE_DATE => self::OPTION_TYPE_DATE,
|
| 611 |
+
Mage_Catalog_Model_Product_Option::OPTION_TYPE_TIME => self::OPTION_TYPE_TIME,
|
| 612 |
+
Mage_Catalog_Model_Product_Option::OPTION_TYPE_DATE_TIME => self::OPTION_TYPE_DATE_TIME,
|
| 613 |
+
Mage_Catalog_Model_Product_Option::OPTION_TYPE_FIELD => self::OPTION_TYPE_TEXT,
|
| 614 |
+
Mage_Catalog_Model_Product_Option::OPTION_TYPE_AREA => self::OPTION_TYPE_TEXT,
|
| 615 |
+
'multi' => self::OPTION_TYPE_MULTIPLE_SELECT
|
| 616 |
+
);
|
| 617 |
+
}
|
| 618 |
+
|
| 619 |
+
return isset ( $maps [$realType] ) ? $maps [$realType] : self::OPTION_TYPE_TEXT;
|
| 620 |
+
}
|
| 621 |
+
|
| 622 |
+
/**
|
| 623 |
+
* dowload options
|
| 624 |
+
*
|
| 625 |
+
* @param type $attributes
|
| 626 |
+
* @return type
|
| 627 |
+
*/
|
| 628 |
+
private function getProductDownloadOptions($product) {
|
| 629 |
+
$block = Mage::getBlockSingleton ( 'downloadable/catalog_product_links' );
|
| 630 |
+
$block->setProduct ( $product );
|
| 631 |
+
$links = $block->getLinks ();
|
| 632 |
+
|
| 633 |
+
$attributes = array ();
|
| 634 |
+
if ($block->hasLinks ()) {
|
| 635 |
+
$eachAttribute = array ();
|
| 636 |
+
$attrId = strtolower ( $block->getLinksTitle () );
|
| 637 |
+
$eachAttribute ['attribute_id'] = $attrId;
|
| 638 |
+
$eachAttribute ['required'] = ( bool ) $block->getLinkSelectionRequired ();
|
| 639 |
+
$eachAttribute ['input'] = self::OPTION_TYPE_MULTIPLE_SELECT;
|
| 640 |
+
$eachAttribute ['title'] = $block->getLinksTitle ();
|
| 641 |
+
$eachAttribute ['options'] = array ();
|
| 642 |
+
foreach ( $links as $link ) {
|
| 643 |
+
$value = array ();
|
| 644 |
+
preg_match ( '/\d+\.\d+/', $block->getFormattedLinkPrice ( $link ), $prices );
|
| 645 |
+
if ($link->getSampleFile () || $link->getSampleUrl ()) {
|
| 646 |
+
$title = $link->getTitle () . ' (<a href="' . $block->getLinkSamlpeUrl ( $link ) . '" ' . ($block->getIsOpenInNewWindow () ? 'onclick="this.target=\'_blank\'">' : '>') . Mage::helper ( 'downloadable' )->__ ( 'sample' ) . '</a>)';
|
| 647 |
+
} else {
|
| 648 |
+
$title = $link->getTitle ();
|
| 649 |
+
}
|
| 650 |
+
$value ['attribute_id'] = $attrId;
|
| 651 |
+
$value ['option_id'] = $link->getId ();
|
| 652 |
+
$value ['title'] = $title;
|
| 653 |
+
$value ['price'] = floatval ( $prices [0] );
|
| 654 |
+
$eachAttribute ['options'] [] = $value;
|
| 655 |
+
}
|
| 656 |
+
$attributes [] = $eachAttribute;
|
| 657 |
+
}
|
| 658 |
+
return $attributes;
|
| 659 |
+
}
|
| 660 |
+
private function getAttributeRelation($options, $type = 'associate') {
|
| 661 |
+
$attributeRelation = array ();
|
| 662 |
+
|
| 663 |
+
if ($type == 'associate') {
|
| 664 |
+
if ($options && sizeof ( $options ) > 1) {
|
| 665 |
+
$min = 100;
|
| 666 |
+
$parentAttributeId = 0;
|
| 667 |
+
$parentOption = array ();
|
| 668 |
+
foreach ( $options as $attributeId => $option ) {
|
| 669 |
+
$optionSize = sizeof ( array_flip ( $option ) );
|
| 670 |
+
if ($optionSize < $min) {
|
| 671 |
+
$min = $optionSize;
|
| 672 |
+
$parentAttributeId = $attributeId;
|
| 673 |
+
$parentOption = $option;
|
| 674 |
+
}
|
| 675 |
+
}
|
| 676 |
+
|
| 677 |
+
foreach ( $options as $attributeId => $option ) {
|
| 678 |
+
if ($parentAttributeId == $attributeId) {
|
| 679 |
+
continue;
|
| 680 |
+
}
|
| 681 |
+
$relations = array ();
|
| 682 |
+
foreach ( $option as $key => $value ) {
|
| 683 |
+
$parentOptionId = $parentOption [$key];
|
| 684 |
+
$relations [$parentOptionId] ['parent_option_id'] = $parentOptionId;
|
| 685 |
+
$relations [$parentOptionId] ['child_option_id'] [] = $value;
|
| 686 |
+
}
|
| 687 |
+
$attributeRelation [] = array (
|
| 688 |
+
'parent_attribute_id' => 'super_attribute_' . $parentAttributeId,
|
| 689 |
+
'child_attribute_id' => 'super_attribute_' . $attributeId,
|
| 690 |
+
'type' => $type,
|
| 691 |
+
'value' => array_values ( $relations )
|
| 692 |
+
);
|
| 693 |
+
}
|
| 694 |
+
}
|
| 695 |
+
} elseif ($type == 'display') {
|
| 696 |
+
}
|
| 697 |
+
|
| 698 |
+
return $attributeRelation;
|
| 699 |
+
}
|
| 700 |
+
private function _preparePrice($product, $price, $isPercent = false) {
|
| 701 |
+
if ($isPercent && ! empty ( $price )) {
|
| 702 |
+
$price = $product->getFinalPrice () * $price / 100;
|
| 703 |
+
}
|
| 704 |
+
$price = Mage::app ()->getStore ()->convertPrice ( $price );
|
| 705 |
+
$price = Mage::app ()->getStore ()->roundPrice ( $price );
|
| 706 |
+
return $price;
|
| 707 |
+
}
|
| 708 |
+
private function collectProductPrices($product) {
|
| 709 |
+
$DisplayMinimalPrice = true;
|
| 710 |
+
$UseLinkForAsLowAs = false;
|
| 711 |
+
$prices = array ();
|
| 712 |
+
$prices ['currency'] = Mage::app ()->getStore ()->getCurrentCurrencyCode ();
|
| 713 |
+
$display_prices = array ();
|
| 714 |
+
$prices ['tier_prices'] = $this->getItemTierPrice ( $product );
|
| 715 |
+
|
| 716 |
+
$_minimalPriceValue = $product->getMinimalPrice ();
|
| 717 |
+
|
| 718 |
+
if (! $product->isGrouped ()) {
|
| 719 |
+
$_price = $product->getPrice ();
|
| 720 |
+
$_finalPrice = $product->getFinalPrice ();
|
| 721 |
+
if ($DisplayMinimalPrice && $_minimalPriceValue && $_minimalPriceValue < $_finalPrice) {
|
| 722 |
+
if (! $UseLinkForAsLowAs) {
|
| 723 |
+
if ($_finalPrice > 0) {
|
| 724 |
+
$this->addtoDisplayPrices ( $display_prices, $this->__ ( 'Price:' ), $this->getCurrencyPrice ( $_finalPrice ) );
|
| 725 |
+
}
|
| 726 |
+
if (! $this->detail) { // items list show different
|
| 727 |
+
$this->addtoDisplayPrices ( $display_prices, $this->__ ( 'As low as:' ) . $this->getCurrencyPrice ( $_minimalPriceValue, true, false ), 0, 'free' );
|
| 728 |
+
} else if (! $_finalPrice) {
|
| 729 |
+
$this->addtoDisplayPrices ( $display_prices, $this->__ ( 'As low as:' ), $this->getCurrencyPrice ( $_minimalPriceValue ) );
|
| 730 |
+
}
|
| 731 |
+
}
|
| 732 |
+
} else {
|
| 733 |
+
if ($_finalPrice == $_price) {
|
| 734 |
+
$this->addtoDisplayPrices ( $display_prices, $this->__ ( 'Price:' ), $this->getCurrencyPrice ( $_price ) );
|
| 735 |
+
} else {
|
| 736 |
+
$this->addtoDisplayPrices ( $display_prices, $this->__ ( 'Regular Price:' ), $this->getCurrencyPrice ( $_price ), 'line-through' );
|
| 737 |
+
$this->addtoDisplayPrices ( $display_prices, $this->__ ( 'Special Price:' ), $this->getCurrencyPrice ( $_finalPrice ) );
|
| 738 |
+
$this->item ['discount'] = round ( 100 - ($_finalPrice * 100) / $_price );
|
| 739 |
+
}
|
| 740 |
+
}
|
| 741 |
+
} else {
|
| 742 |
+
if ($DisplayMinimalPrice && $_minimalPriceValue) {
|
| 743 |
+
if (! $this->detail) { // items list show different
|
| 744 |
+
$this->addtoDisplayPrices ( $display_prices, $this->__ ( 'Starting at:' ) . $this->getCurrencyPrice ( $_minimalPriceValue, true, false ), 0, 'free' );
|
| 745 |
+
} else {
|
| 746 |
+
$this->addtoDisplayPrices ( $display_prices, $this->__ ( 'Starting at:' ), $this->getCurrencyPrice ( $_minimalPriceValue ) );
|
| 747 |
+
}
|
| 748 |
+
}
|
| 749 |
+
$_finalPrice = $_minimalPriceValue;
|
| 750 |
+
}
|
| 751 |
+
$prices ['base_price'] = array (
|
| 752 |
+
'price' => $this->getCurrencyPrice ( $_finalPrice )
|
| 753 |
+
);
|
| 754 |
+
$prices ['display_prices'] = $display_prices;
|
| 755 |
+
return $prices;
|
| 756 |
+
}
|
| 757 |
+
private function collectBundleProductPrices($product) {
|
| 758 |
+
$prices = array ();
|
| 759 |
+
$prices ['currency'] = Mage::app ()->getStore ()->getCurrentCurrencyCode ();
|
| 760 |
+
$display_prices = array ();
|
| 761 |
+
$prices ['tier_prices'] = $this->getItemTierPrice ( $product );
|
| 762 |
+
|
| 763 |
+
/* @var $_weeeHelper Mage_Weee_Helper_Data */
|
| 764 |
+
/* @var $_taxHelper Mage_Tax_Helper_Data */
|
| 765 |
+
list ( $_minimalPrice, $_maximalPrice ) = $product->getPriceModel ()->getPrices ( $product );
|
| 766 |
+
$_finalPrice = $product->getFinalPrice ();
|
| 767 |
+
if ($product->getPriceView ()) {
|
| 768 |
+
if ($_finalPrice > 0) {
|
| 769 |
+
$this->addtoDisplayPrices ( $display_prices, $this->__ ( 'Price:' ), $this->getCurrencyPrice ( $_finalPrice ) );
|
| 770 |
+
}
|
| 771 |
+
if (! $this->detail) { // items list show different
|
| 772 |
+
$this->addtoDisplayPrices ( $display_prices, $this->__ ( 'As low as: ' ) . $this->getCurrencyPrice ( $_minimalPrice, true, false ), 0, 'free' );
|
| 773 |
+
} else if (! $_finalPrice) {
|
| 774 |
+
$this->addtoDisplayPrices ( $display_prices, $this->__ ( 'As low as: ' ), $this->getCurrencyPrice ( $_minimalPrice ) );
|
| 775 |
+
}
|
| 776 |
+
} else {
|
| 777 |
+
if ($_minimalPrice != $_maximalPrice) {
|
| 778 |
+
$this->addtoDisplayPrices ( $display_prices, $this->__ ( 'From:' ), $this->getCurrencyPrice ( $_minimalPrice ), 'from' );
|
| 779 |
+
$this->addtoDisplayPrices ( $display_prices, $this->__ ( 'To:' ), $this->getCurrencyPrice ( $_maximalPrice ), 'to' );
|
| 780 |
+
} else {
|
| 781 |
+
$this->addtoDisplayPrices ( $display_prices, $this->__ ( 'Price:' ), $this->getCurrencyPrice ( $_minimalPrice ), 'normal' );
|
| 782 |
+
}
|
| 783 |
+
}
|
| 784 |
+
$prices ['base_price'] = array (
|
| 785 |
+
'price' => $this->getCurrencyPrice ( $_finalPrice )
|
| 786 |
+
);
|
| 787 |
+
$prices ['display_prices'] = $display_prices;
|
| 788 |
+
return $prices;
|
| 789 |
+
}
|
| 790 |
+
private function addtoDisplayPrices(&$display_prices, $title, $value, $style = 'normal') {
|
| 791 |
+
$display_prices [] = array (
|
| 792 |
+
'title' => $title,
|
| 793 |
+
'price' => $value,
|
| 794 |
+
'style' => $style ? $style : 'normal'
|
| 795 |
+
);
|
| 796 |
+
return $display_prices;
|
| 797 |
+
}
|
| 798 |
+
}
|
app/code/local/Mss/Connector/controllers/ItemsController.php
ADDED
|
@@ -0,0 +1,398 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
class Mss_Connector_ItemsController extends Mage_Core_Controller_Front_Action {
|
| 3 |
+
protected $_keepFrame = true;
|
| 4 |
+
protected $_keepAspectRatio = true; // false stretch the image
|
| 5 |
+
|
| 6 |
+
public function _construct(){
|
| 7 |
+
|
| 8 |
+
header('content-type: application/json; charset=utf-8');
|
| 9 |
+
header("access-control-allow-origin: *");
|
| 10 |
+
Mage::helper('connector')->loadParent(Mage::app()->getFrontController()->getRequest()->getHeader('token'));
|
| 11 |
+
parent::_construct();
|
| 12 |
+
|
| 13 |
+
}
|
| 14 |
+
|
| 15 |
+
public function getItemsAction() {
|
| 16 |
+
echo json_encode ( $this->_getItems () );
|
| 17 |
+
}
|
| 18 |
+
public function getSortingListAction() {
|
| 19 |
+
echo json_decode ( $this->_getSortingList () );
|
| 20 |
+
}
|
| 21 |
+
public function _getSortingList() {
|
| 22 |
+
$options = Mage::getModel ( 'catalog/config' )->getAttributeUsedForSortByArray ();
|
| 23 |
+
return $options;
|
| 24 |
+
}
|
| 25 |
+
public function getProductByFilterAction() {
|
| 26 |
+
$categoryid = $this->getRequest ()->getParam ( 'categoryid' );
|
| 27 |
+
$pageNo = $this->getRequest ()->getParam ( 'page_no', 1 );
|
| 28 |
+
$pageSize = $this->getRequest ()->getParam ( 'page_size', 20 );
|
| 29 |
+
$orderBy = $this->getRequest ()->getParam ( 'order_by', false );
|
| 30 |
+
$orderBy = $orderBy && strpos ( $orderBy, ':' ) > 0 ? $orderBy : 'postion:desc';
|
| 31 |
+
list ( $order, $direction ) = explode ( ':', $orderBy, 2 );
|
| 32 |
+
|
| 33 |
+
$category = Mage::getModel ( 'catalog/category' )->load ( $categoryid );
|
| 34 |
+
$model = Mage::getModel ( 'catalog/product' );
|
| 35 |
+
$collection = $category->getProductCollection ()->addAttributeToFilter ( 'status', 1 )->addAttributeToFilter ( 'visibility', array (
|
| 36 |
+
|
| 37 |
+
'neq' => 1
|
| 38 |
+
) );
|
| 39 |
+
$filter = $this->getRequest ()->getParam ( 'filter', array () );
|
| 40 |
+
if ($filter && is_array ( $filter )) {
|
| 41 |
+
foreach ( $filter as $key => $o ) {
|
| 42 |
+
|
| 43 |
+
$collection->addAttributeToFilter ( $o ['attribute'], array (
|
| 44 |
+
$o ['key'] => $o ['value']
|
| 45 |
+
) );
|
| 46 |
+
}
|
| 47 |
+
}
|
| 48 |
+
$collection = $collection->addAttributeToSort ( $order, $direction );
|
| 49 |
+
$pages = $collection->setPageSize ( $pageSize )->getLastPageNumber ();
|
| 50 |
+
$size = $collection->getSize ();
|
| 51 |
+
$productList = $collection->getItems ();
|
| 52 |
+
if ($pageNo <= $pages) {
|
| 53 |
+
$items = array ();
|
| 54 |
+
foreach ( $productList as $key => $product ) {
|
| 55 |
+
if ($product->getId ()) {
|
| 56 |
+
$items [$key] = $this->_getItemBaseInfo ( $product );
|
| 57 |
+
}
|
| 58 |
+
}
|
| 59 |
+
$products = array ();
|
| 60 |
+
$products ['items'] = $items;
|
| 61 |
+
$products ['total_results'] = $size;
|
| 62 |
+
echo json_encode ( $products );
|
| 63 |
+
}
|
| 64 |
+
|
| 65 |
+
|
| 66 |
+
}
|
| 67 |
+
public function getProductlist($products, $mod = 'product') {
|
| 68 |
+
$productlist = array ();
|
| 69 |
+
$baseCurrency = Mage::app ()->getStore ()->getBaseCurrency ()->getCode ();
|
| 70 |
+
$currentCurrency = Mage::app ()->getStore ()->getCurrentCurrencyCode ();
|
| 71 |
+
foreach ( $products as $product ) {
|
| 72 |
+
if ($mod == 'catalog') {
|
| 73 |
+
$product = Mage::getModel ( 'catalog/product' )->load ( $product ['entity_id'] );
|
| 74 |
+
|
| 75 |
+
}
|
| 76 |
+
|
| 77 |
+
$productlist [] = array (
|
| 78 |
+
'entity_id' => $product->getId (),
|
| 79 |
+
'sku' => $product->getSku (),
|
| 80 |
+
'name' => $product->getName (),
|
| 81 |
+
'news_from_date' => $product->getNewsFromDate (),
|
| 82 |
+
'news_to_date' => $product->getNewsToDate (),
|
| 83 |
+
'special_from_date' => $product->getSpecialFromDate (),
|
| 84 |
+
'special_to_date' => $product->getSpecialToDate (),
|
| 85 |
+
'image_url' => $product->getImageUrl (),
|
| 86 |
+
'url_key' => $product->getProductUrl (),
|
| 87 |
+
'regular_price_with_tax' => number_format ( Mage::helper ( 'directory' )->currencyConvert ( $product->getPrice (), $baseCurrency, $currentCurrency ), 2, '.', '' ),
|
| 88 |
+
'final_price_with_tax' => number_format ( Mage::helper ( 'directory' )->currencyConvert ( $product->getSpecialPrice (), $baseCurrency, $currentCurrency ), 2, '.', '' ),
|
| 89 |
+
'symbol' => Mage::app ()->getLocale ()->currency ( Mage::app ()->getStore ()->getCurrentCurrencyCode () )->getSymbol ()
|
| 90 |
+
);
|
| 91 |
+
}
|
| 92 |
+
return $productlist;
|
| 93 |
+
}
|
| 94 |
+
public function getfilterableattributesAction() {
|
| 95 |
+
$categoryid = $this->getRequest ()->getParam ( 'categoryid', false );
|
| 96 |
+
echo json_encode ( $this->_getfilterableattributes ( $categoryid ) );
|
| 97 |
+
}
|
| 98 |
+
protected function _getfilterableattributes($categoryid) {
|
| 99 |
+
$layer = Mage::getModel ( "catalog/layer" );
|
| 100 |
+
$category = Mage::getModel ( "catalog/category" )->load ( $categoryid );
|
| 101 |
+
$layer->setCurrentCategory ( $category );
|
| 102 |
+
$attributes = $layer->getFilterableAttributes ();
|
| 103 |
+
|
| 104 |
+
foreach ( $attributes as $key => $attribute ) {
|
| 105 |
+
if ($attribute->getAttributeCode () == 'price') {
|
| 106 |
+
$filterBlockName = 'catalog/layer_filter_price';
|
| 107 |
+
} elseif ($attribute->getBackendType () == 'decimal') {
|
| 108 |
+
$filterBlockName = 'catalog/layer_filter_decimal';
|
| 109 |
+
} else {
|
| 110 |
+
$filterBlockName = 'catalog/layer_filter_attribute';
|
| 111 |
+
}
|
| 112 |
+
if ($filterBlockName !== 'catalog/layer_filter_price') {
|
| 113 |
+
$result = $this->getLayout ()->createBlock ( $filterBlockName )->setLayer ( $layer )->setAttributeModel ( $attribute )->init ();
|
| 114 |
+
$filter_options [$key] ['att_code'] = $attribute->getAttributeCode ();
|
| 115 |
+
foreach ( $result->getItems () as $option ) {
|
| 116 |
+
$filter_options [$key] ['options'] [] = array (
|
| 117 |
+
'laber' => $option->getLabel (),
|
| 118 |
+
'value' => $option->getValue ()
|
| 119 |
+
);
|
| 120 |
+
}
|
| 121 |
+
} elseif ($filterBlockName == 'catalog/layer_filter_price') {
|
| 122 |
+
try {
|
| 123 |
+
if ($this->getLayout ()->createBlock ( $filterBlockName )) {
|
| 124 |
+
$result = $this->getLayout ()->createBlock ( $filterBlockName )->setLayer ( $layer )->setAttributeModel ( $attribute )->init ();
|
| 125 |
+
$filter_options [$key] ['att_code'] = $attribute->getAttributeCode ();
|
| 126 |
+
foreach ( $result->getItems () as $option ) {
|
| 127 |
+
$filter_options [$key] ['options'] [] = array (
|
| 128 |
+
'laber' => $option->getLabel (),
|
| 129 |
+
'value' => $option->getValue ()
|
| 130 |
+
);
|
| 131 |
+
}
|
| 132 |
+
} else
|
| 133 |
+
$filter_options [$key] ['att_code'] = 'price';
|
| 134 |
+
} catch ( Exception $e ) {
|
| 135 |
+
$filter_options [$key] ['att_code'] = 'price';
|
| 136 |
+
}
|
| 137 |
+
}
|
| 138 |
+
}
|
| 139 |
+
return $filter_options;
|
| 140 |
+
}
|
| 141 |
+
private function _getProductImageType($product) {
|
| 142 |
+
$imageType = 'image';
|
| 143 |
+
$itemData = $product->getData ();
|
| 144 |
+
if (isset ( $itemData ['image'] )) {
|
| 145 |
+
$imageType = 'image';
|
| 146 |
+
} else if (isset ( $itemData ['small_image'] )) {
|
| 147 |
+
$imageType = 'small_image';
|
| 148 |
+
} else if (isset ( $itemData ['thumbnail'] )) {
|
| 149 |
+
$imageType = 'thumbnail';
|
| 150 |
+
}
|
| 151 |
+
return $imageType;
|
| 152 |
+
}
|
| 153 |
+
public function _HasOptions($product) {
|
| 154 |
+
if (! $product->isSaleable ()) {
|
| 155 |
+
return false;
|
| 156 |
+
} else if ($product->getHasOptions ()) {
|
| 157 |
+
return true;
|
| 158 |
+
} else {
|
| 159 |
+
return $product->getTypeInstance ( true )->hasOptions ( $product );
|
| 160 |
+
}
|
| 161 |
+
}
|
| 162 |
+
public function _getItemBaseInfo($product) {
|
| 163 |
+
$baseCurrency = Mage::app ()->getStore ()->getBaseCurrency ()->getCode ();
|
| 164 |
+
$currentCurrency = Mage::app ()->getStore ()->getCurrentCurrencyCode ();
|
| 165 |
+
$helper = Mage::helper ( 'catalog/image' );
|
| 166 |
+
$helper->init ( $product, $this->_getProductImageType ( $product ) )->keepAspectRatio ( $this->_keepAspectRatio )->keepFrame ( $this->_keepFrame );
|
| 167 |
+
$item = array ();
|
| 168 |
+
$item ['item_id'] = $product->getId ();
|
| 169 |
+
$item ['item_title'] = $product->getName ();
|
| 170 |
+
$item ['item_url'] = $product->getProductUrl ();
|
| 171 |
+
$item ['cid'] = $product->getCategoryIds ();
|
| 172 |
+
$item ['qty'] = $product->getStockItem ()->getQty ();
|
| 173 |
+
$item ['special_from_date'] = $product->getSpecialFromDate ();
|
| 174 |
+
$item ['special_to_date'] = $product->getSpecialToDate ();
|
| 175 |
+
$item ['regular_price_with_tax'] = number_format ( Mage::helper ( 'directory' )->currencyConvert ( $product->getPrice (), $baseCurrency, $currentCurrency ), 2, '.', '' );
|
| 176 |
+
$item ['final_price_with_tax'] = number_format ( Mage::helper ( 'directory' )->currencyConvert ( $product->getSpecialPrice (), $baseCurrency, $currentCurrency ), 2, '.', '' );
|
| 177 |
+
$item ['symbol'] = Mage::app ()->getLocale ()->currency ( Mage::app ()->getStore ()->getCurrentCurrencyCode () )->getSymbol ();
|
| 178 |
+
$item ['thumbnail_pic_url'] = ( string ) $helper->resize ( $this->thumbnail_with, $this->thumbnail_height );
|
| 179 |
+
$item ['main_pic_url'] = ( string ) $helper->resize ( $this->main_with, $this->main_height );
|
| 180 |
+
$item ['is_virtual'] = $product->isVirtual ();
|
| 181 |
+
$item ['item_status'] = $product->isSaleable () ? 'instock' : 'outofstock';
|
| 182 |
+
if (! $product->getRatingSummary ()) {
|
| 183 |
+
Mage::getModel ( 'review/review' )->getEntitySummary ( $product, Mage::app ()->getStore ()->getId () );
|
| 184 |
+
}
|
| 185 |
+
$item ['allow_add_to_cart'] = ! $this->_HasOptions ( $product );
|
| 186 |
+
$item ['rating_score'] = round ( ( int ) $product->getRatingSummary ()->getRatingSummary () / 20 );
|
| 187 |
+
$item ['rating_count'] = $product->getRatingSummary ()->getReviewsCount ();
|
| 188 |
+
$item ['sales_type'] = ($product->isInStock ()) ? 'stock' : 'distribute';
|
| 189 |
+
$item ['qty_min_unit'] = 1;
|
| 190 |
+
$stockItem = $product->getStockItem ();
|
| 191 |
+
if ($stockItem) {
|
| 192 |
+
if ($stockItem->getMinSaleQty () && $stockItem->getMinSaleQty () > 0) {
|
| 193 |
+
$item ['qty_min_unit'] = $stockItem->getMinSaleQty ();
|
| 194 |
+
}
|
| 195 |
+
}
|
| 196 |
+
$item ['item_type'] = $product->getTypeId ();
|
| 197 |
+
return $item;
|
| 198 |
+
}
|
| 199 |
+
public function _getItems() {
|
| 200 |
+
try {
|
| 201 |
+
$cid = $this->getRequest ()->getParam ( 'cid', false );
|
| 202 |
+
$query = str_replace ( '%20', ' ', $this->getRequest ()->getParam ( 'query', '' ) );
|
| 203 |
+
$pageNo = $this->getRequest ()->getParam ( 'page_no', 1 );
|
| 204 |
+
$pageSize = $this->getRequest ()->getParam ( 'page_size', 20 );
|
| 205 |
+
$itemIds = $this->getRequest ()->getParam ( 'item_ids', false );
|
| 206 |
+
$orderBy = $this->getRequest ()->getParam ( 'order_by', false );
|
| 207 |
+
$orderBy = $orderBy && strpos ( $orderBy, ':' ) > 0 ? $orderBy : 'postion:desc';
|
| 208 |
+
list ( $order, $direction ) = explode ( ':', $orderBy, 2 );
|
| 209 |
+
var_dump ( $direction );
|
| 210 |
+
var_dump ( $order );
|
| 211 |
+
if ($itemIds && trim ( $itemIds )) {
|
| 212 |
+
// get by item ids
|
| 213 |
+
$products = $this->getSpecifiedProducts ( $itemIds, $pageNo, $pageSize, $order, $direction );
|
| 214 |
+
} else if (( int ) $this->getRequest ()->getParam ( 'is_specials', 0 )) {
|
| 215 |
+
// get Special Products
|
| 216 |
+
$products = $this->getSpecialProducts ( $pageNo, $pageSize, $order, $direction );
|
| 217 |
+
} else if (strlen ( $query ) || isset ( $_POST ['query'] ) && (! $cid)) {
|
| 218 |
+
// get by query
|
| 219 |
+
$products = $this->getProductsByQuery ( $query, $pageNo, $pageSize, $order, $direction );
|
| 220 |
+
} else if ($cid == - 1) {
|
| 221 |
+
// get all products
|
| 222 |
+
$products = $this->getAllProducts ( $pageNo, $pageSize, $order, $direction );
|
| 223 |
+
} else {
|
| 224 |
+
// get by category
|
| 225 |
+
$products = $this->getProductsByCategory ( $cid, $pageNo, $pageSize, $order, $direction );
|
| 226 |
+
}
|
| 227 |
+
return array (
|
| 228 |
+
true,
|
| 229 |
+
'0x0000',
|
| 230 |
+
$products
|
| 231 |
+
);
|
| 232 |
+
} catch ( Exception $e ) {
|
| 233 |
+
return array (
|
| 234 |
+
false,
|
| 235 |
+
'0x0013',
|
| 236 |
+
$e->getMessage ()
|
| 237 |
+
);
|
| 238 |
+
}
|
| 239 |
+
}
|
| 240 |
+
private function getSpecifiedProducts($ids, $pageNo, $pageSize, $order, $direction) {
|
| 241 |
+
$collection = Mage::getResourceModel ( 'catalog/product_collection' )->addAttributeToSelect ( Mage::getSingleton ( 'catalog/config' )->getProductAttributes () )->addMinimalPrice ()->addFinalPrice ()->addTaxPercents ()->setCurPage ( $pageNo )->setPageSize ( $pageSize );
|
| 242 |
+
|
| 243 |
+
if (strlen ( $ids )) {
|
| 244 |
+
is_string ( $ids ) && $ids = explode ( ',', $ids );
|
| 245 |
+
$count = count ( $ids );
|
| 246 |
+
$start = max ( $pageNo - 1, 0 ) * $pageSize;
|
| 247 |
+
$itemIds = array_splice ( $ids, $start, $pageSize );
|
| 248 |
+
$collection->addIdFilter ( $itemIds );
|
| 249 |
+
} else {
|
| 250 |
+
return array (
|
| 251 |
+
'items' => array (),
|
| 252 |
+
'total_results' => 0
|
| 253 |
+
);
|
| 254 |
+
}
|
| 255 |
+
|
| 256 |
+
$collection->load ();
|
| 257 |
+
$productList = $collection->getItems ();
|
| 258 |
+
|
| 259 |
+
$items = array ();
|
| 260 |
+
$sortOrder = array ();
|
| 261 |
+
foreach ( $productList as $key => $product ) {
|
| 262 |
+
if ($product->getId ()) {
|
| 263 |
+
$items [$key] = $this->_getItemBaseInfo ( $product );
|
| 264 |
+
$sortOrder [] = array_search ( $product->getId (), $itemIds );
|
| 265 |
+
}
|
| 266 |
+
}
|
| 267 |
+
array_multisort ( $sortOrder, SORT_ASC, $items );
|
| 268 |
+
|
| 269 |
+
$products = array ();
|
| 270 |
+
$products ['items'] = $items;
|
| 271 |
+
$products ['total_results'] = $count;
|
| 272 |
+
return $products;
|
| 273 |
+
}
|
| 274 |
+
private function getSpecialProducts($pageNo, $pageSize, $order, $direction) {
|
| 275 |
+
return $this->getAllProducts ( $pageNo, $pageSize, $order, $direction, true );
|
| 276 |
+
}
|
| 277 |
+
private function getAllProducts($pageNo, $pageSize, $order, $direction, $specials = false) {
|
| 278 |
+
$collection = Mage::getSingleton ( 'catalog/layer' )->setCurrentCategory ( Mage::app ()->getStore ()->getRootCategoryId () )->getProductCollection ()->setCurPage ( $pageNo )->setPageSize ( $pageSize )->setOrder ( $order, $direction );
|
| 279 |
+
$fromPart = $collection->getSelect ()->getPart ( Zend_Db_Select::FROM );
|
| 280 |
+
if (isset ( $fromPart ['cat_index'] )) {
|
| 281 |
+
$fromPart ['cat_index'] ['joinCondition'] = preg_replace ( '/category_id\s*=\s*\'\d+\'/', 'category_id > \'0\'', $fromPart ['cat_index'] ['joinCondition'] );
|
| 282 |
+
$collection->getSelect ()->setPart ( Zend_Db_Select::FROM, $fromPart );
|
| 283 |
+
}
|
| 284 |
+
|
| 285 |
+
if ($specials) {
|
| 286 |
+
$collection->getSelect ()->where ( '`price` > `final_price`' );
|
| 287 |
+
}
|
| 288 |
+
$size = $collection->getSize ();
|
| 289 |
+
$collection->getSelect ()->group ( 'e.entity_id' );
|
| 290 |
+
$collection->load ();
|
| 291 |
+
$productList = $collection->getItems ();
|
| 292 |
+
|
| 293 |
+
$items = array ();
|
| 294 |
+
foreach ( $productList as $key => $product ) {
|
| 295 |
+
if ($product->getId ()) {
|
| 296 |
+
$items [$key] = $this->_getItemBaseInfo ( $product );
|
| 297 |
+
}
|
| 298 |
+
}
|
| 299 |
+
$products = array ();
|
| 300 |
+
$products ['items'] = $items;
|
| 301 |
+
$products ['total_results'] = $size;
|
| 302 |
+
return $products;
|
| 303 |
+
}
|
| 304 |
+
private function getProductsByQuery($query, $pageNo, $pageSize, $order, $direction) {
|
| 305 |
+
$products = array ();
|
| 306 |
+
if ($query) {
|
| 307 |
+
$helper = Mage::helper ( 'catalogsearch' );
|
| 308 |
+
$this->getRequest ()->setParam ( $helper->getQueryParamName (), $query );
|
| 309 |
+
$query = $helper->getQuery ();
|
| 310 |
+
var_dump ( $query->getQueryText () );
|
| 311 |
+
$query->setStoreId ( Mage::app ()->getStore ()->getId () );
|
| 312 |
+
if ($query->getQueryText ()) {
|
| 313 |
+
if ($helper->isMinQueryLength ()) {
|
| 314 |
+
$query->setId ( 0 )->setIsActive ( 1 )->setIsProcessed ( 1 );
|
| 315 |
+
} else {
|
| 316 |
+
if ($query->getId ()) {
|
| 317 |
+
$query->setPopularity ( $query->getPopularity () + 1 );
|
| 318 |
+
} else {
|
| 319 |
+
$query->setPopularity ( 1 );
|
| 320 |
+
}
|
| 321 |
+
if (false && $query->getRedirect ()) {
|
| 322 |
+
$query->save ();
|
| 323 |
+
return array ();
|
| 324 |
+
} else {
|
| 325 |
+
$query->prepare ();
|
| 326 |
+
}
|
| 327 |
+
}
|
| 328 |
+
$helper->checkNotes ();
|
| 329 |
+
if (! Mage::helper ( 'catalogsearch' )->isMinQueryLength ()) {
|
| 330 |
+
$query->save ();
|
| 331 |
+
}
|
| 332 |
+
}
|
| 333 |
+
|
| 334 |
+
$layer = Mage::getSingleton ( 'catalogsearch/layer' );
|
| 335 |
+
$collection = $layer->getProductCollection ()->setCurPage ( $pageNo )->setPageSize ( $pageSize )->setOrder ( $order, $direction );
|
| 336 |
+
|
| 337 |
+
$collection->load ();
|
| 338 |
+
$size = $collection->getSize ();
|
| 339 |
+
$productList = $collection->getItems ();
|
| 340 |
+
$items = array ();
|
| 341 |
+
foreach ( $productList as $key => $product ) {
|
| 342 |
+
if ($product->getId ()) {
|
| 343 |
+
$items [$key] = $this->_getItemBaseInfo ( $product );
|
| 344 |
+
}
|
| 345 |
+
}
|
| 346 |
+
|
| 347 |
+
$products ['items'] = $items;
|
| 348 |
+
$products ['total_results'] = $size;
|
| 349 |
+
}
|
| 350 |
+
|
| 351 |
+
return $products;
|
| 352 |
+
}
|
| 353 |
+
private function getProductsByCategory($cid = false, $pageNo = 1, $pageSize = 20, $order = 'entity_id', $direction = 'asc') {
|
| 354 |
+
$layer = Mage::getSingleton ( 'catalog/layer' )->setCurrentCategory ( $cid );
|
| 355 |
+
$filter = $this->getRequest ()->getParam ( 'filter', array () );
|
| 356 |
+
if ($filter && is_array ( $filter )) {
|
| 357 |
+
foreach ( $filter as $key => $value ) {
|
| 358 |
+
$this->getRequest ()->setParam ( $key, $value );
|
| 359 |
+
}
|
| 360 |
+
Mage::getBlockSingleton ( 'catalog/layer_view' );
|
| 361 |
+
}
|
| 362 |
+
|
| 363 |
+
|
| 364 |
+
$collection = $layer->getProductCollection ()->setCurPage ( $pageNo )->setPageSize ( $pageSize )->setOrder ( $order, $direction );
|
| 365 |
+
|
| 366 |
+
$collection->load ();
|
| 367 |
+
$size = $collection->getSize ();
|
| 368 |
+
$productList = $collection->getItems ();
|
| 369 |
+
|
| 370 |
+
$items = array ();
|
| 371 |
+
foreach ( $productList as $key => $product ) {
|
| 372 |
+
if ($product->getId ()) {
|
| 373 |
+
$items [$key] = $this->_getItemBaseInfo ( $product );
|
| 374 |
+
}
|
| 375 |
+
}
|
| 376 |
+
$products = array ();
|
| 377 |
+
$products ['items'] = $items;
|
| 378 |
+
$products ['total_results'] = $size;
|
| 379 |
+
return $products;
|
| 380 |
+
}
|
| 381 |
+
public function setCollection($collection) {
|
| 382 |
+
$this->_collection = $collection;
|
| 383 |
+
$this->_collection->setCurPage ( $this->getCurrentPage () );
|
| 384 |
+
// we need to set pagination only if passed value integer and more that 0
|
| 385 |
+
$limit = ( int ) $this->getLimit ();
|
| 386 |
+
if ($limit) {
|
| 387 |
+
$this->_collection->setPageSize ( $limit );
|
| 388 |
+
}
|
| 389 |
+
if ($this->getCurrentOrder () == 'review') {
|
| 390 |
+
$this->_collection->sortByReview ( $this->getCurrentDirection () );
|
| 391 |
+
} else if ($this->getCurrentOrder ()) {
|
| 392 |
+
$this->_collection->setOrder ( $this->getCurrentOrder (), $this->getCurrentDirection () );
|
| 393 |
+
}
|
| 394 |
+
return $this;
|
| 395 |
+
}
|
| 396 |
+
}
|
| 397 |
+
|
| 398 |
+
?>
|
app/code/local/Mss/Connector/controllers/MenuController.php
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class Mss_Connector_MenuController extends Mage_Core_Controller_Front_Action {
|
| 4 |
+
public function _construct(){
|
| 5 |
+
|
| 6 |
+
header('content-type: application/json; charset=utf-8');
|
| 7 |
+
header("access-control-allow-origin: *");
|
| 8 |
+
Mage::helper('connector')->loadParent(Mage::app()->getFrontController()->getRequest()->getHeader('token'));
|
| 9 |
+
parent::_construct();
|
| 10 |
+
|
| 11 |
+
}
|
| 12 |
+
|
| 13 |
+
public function suggestAction() {
|
| 14 |
+
|
| 15 |
+
|
| 16 |
+
}
|
| 17 |
+
|
| 18 |
+
public function getproductinfoAction() {
|
| 19 |
+
|
| 20 |
+
$productid=$this->getRequest ()->getParam ( 'productid' );
|
| 21 |
+
|
| 22 |
+
//$productid = '1'; // test sentence
|
| 23 |
+
|
| 24 |
+
$product = Mage::getModel ( 'catalog/product' )->load ( $productid );
|
| 25 |
+
|
| 26 |
+
|
| 27 |
+
|
| 28 |
+
foreach ( $product->getAttributes () as $att ) {
|
| 29 |
+
|
| 30 |
+
$group_id = $att->getData ( 'attribute_group_id' );
|
| 31 |
+
|
| 32 |
+
$group = Mage::getModel ( 'eav/entity_attribute_group' )->load ( $group_id );
|
| 33 |
+
|
| 34 |
+
var_dump ( $group );
|
| 35 |
+
|
| 36 |
+
}
|
| 37 |
+
|
| 38 |
+
$attrSetName = 'my_custom_attribute';
|
| 39 |
+
|
| 40 |
+
$attributeSetId = Mage::getModel ( 'eav/entity_attribute_set' )->load ( $attrSetName, 'attribute_set_name' )->getAttributeSetId ();
|
| 41 |
+
|
| 42 |
+
// get a drop down lists options for a mulit-select attribute
|
| 43 |
+
|
| 44 |
+
$attribute = Mage::getModel ( 'eav/config' )->getAttribute ( 'catalog_product', 'attribute_id' );
|
| 45 |
+
|
| 46 |
+
foreach ( $attribute->getSource ()->getAllOptions ( true, true ) as $option ) {
|
| 47 |
+
|
| 48 |
+
$attributeArray [$option ['value']] = $option ['label'];
|
| 49 |
+
|
| 50 |
+
}
|
| 51 |
+
|
| 52 |
+
var_dump ( $$attributeArray );
|
| 53 |
+
|
| 54 |
+
|
| 55 |
+
|
| 56 |
+
$sets = Mage::getResourceModel ( 'eav/entity_attribute_set_collection' )->setEntityTypeFilter ( Mage::getModel ( 'catalog/product' )->getResource ()->getTypeId () )->load ()->toOptionHash ();
|
| 57 |
+
|
| 58 |
+
}
|
| 59 |
+
|
| 60 |
+
public function getcustomeroptionAction(){
|
| 61 |
+
|
| 62 |
+
$productid=$this->getRequest ()->getParam ( 'productid' );
|
| 63 |
+
|
| 64 |
+
$product = Mage::getModel("catalog/product")->load($productid);
|
| 65 |
+
|
| 66 |
+
$i = 1;
|
| 67 |
+
|
| 68 |
+
echo "<pre>";
|
| 69 |
+
|
| 70 |
+
foreach ($product->getOptions() as $o) {
|
| 71 |
+
|
| 72 |
+
echo "<strong>Custom Option:" . $i . "</strong><br/>";
|
| 73 |
+
|
| 74 |
+
echo "Custom Option TYPE: " . $o->getType() . "<br/>";
|
| 75 |
+
|
| 76 |
+
echo "Custom Option TITLE: " . $o->getTitle() . "<br/>";
|
| 77 |
+
|
| 78 |
+
echo "Custom Option Values: <br/>";
|
| 79 |
+
|
| 80 |
+
// Getting Values if it has option values, case of select,dropdown,radio,multiselect
|
| 81 |
+
|
| 82 |
+
$values = $o->getValues();
|
| 83 |
+
|
| 84 |
+
foreach ($values as $v) {
|
| 85 |
+
|
| 86 |
+
print_r($v->getData());
|
| 87 |
+
|
| 88 |
+
}
|
| 89 |
+
|
| 90 |
+
$i++;
|
| 91 |
+
|
| 92 |
+
echo "----------------------------------<br/>";
|
| 93 |
+
|
| 94 |
+
}
|
| 95 |
+
|
| 96 |
+
}
|
| 97 |
+
|
| 98 |
+
}
|
app/code/local/Mss/Connector/controllers/ProductsController.php
ADDED
|
@@ -0,0 +1,594 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
class Mss_Connector_ProductsController extends Mage_Core_Controller_Front_Action {
|
| 3 |
+
|
| 4 |
+
public function _construct(){
|
| 5 |
+
|
| 6 |
+
header('content-type: application/json; charset=utf-8');
|
| 7 |
+
header("access-control-allow-origin: *");
|
| 8 |
+
Mage::helper('connector')->loadParent(Mage::app()->getFrontController()->getRequest()->getHeader('token'));
|
| 9 |
+
parent::_construct();
|
| 10 |
+
|
| 11 |
+
}
|
| 12 |
+
|
| 13 |
+
public function getcustomoptionAction() {
|
| 14 |
+
$baseCurrency = Mage::app ()->getStore ()->getBaseCurrency ()->getCode ();
|
| 15 |
+
$currentCurrency = Mage::app ()->getStore ()->getCurrentCurrencyCode ();
|
| 16 |
+
$productid = $this->getRequest ()->getParam ( 'productid' );
|
| 17 |
+
$product = Mage::getModel ( "catalog/product" )->load ( $productid );
|
| 18 |
+
$selectid = 1;
|
| 19 |
+
$select = array ();
|
| 20 |
+
foreach ( $product->getOptions () as $o ) {
|
| 21 |
+
if (($o->getType () == "field") || ($o->getType () == "file")) {
|
| 22 |
+
$select [$selectid] = array (
|
| 23 |
+
'option_id' => $o->getId (),
|
| 24 |
+
'custom_option_type' => $o->getType (),
|
| 25 |
+
'custom_option_title' => $o->getTitle (),
|
| 26 |
+
'is_require' => $o->getIsRequire (),
|
| 27 |
+
'price' => number_format ( Mage::helper ( 'directory' )->currencyConvert ( $o->getPrice (), $baseCurrency, $currentCurrency ), 2, '.', '' ),
|
| 28 |
+
'price_type' => $o->getPriceType (),
|
| 29 |
+
'sku' => $o->getSku (),
|
| 30 |
+
'max_characters' => $o->getMaxCharacters ()
|
| 31 |
+
);
|
| 32 |
+
} else {
|
| 33 |
+
$max_characters = $o->getMaxCharacters ();
|
| 34 |
+
$optionid = 1;
|
| 35 |
+
$options = array ();
|
| 36 |
+
$values = $o->getValues ();
|
| 37 |
+
foreach ( $values as $v ) {
|
| 38 |
+
$options [$optionid] = $v->getData ();
|
| 39 |
+
if(null!==$v->getData('price') && null!==$v->getData('default_price')){
|
| 40 |
+
$options [$optionid]['price']=number_format ( Mage::helper ( 'directory' )->currencyConvert ( $v->getPrice (), $baseCurrency, $currentCurrency ), 2, '.', '' );
|
| 41 |
+
$options [$optionid]['default_price']=number_format ( Mage::helper ( 'directory' )->currencyConvert ( $v->getDefaultPrice (), $baseCurrency, $currentCurrency ), 2, '.', '' );
|
| 42 |
+
}
|
| 43 |
+
|
| 44 |
+
|
| 45 |
+
$optionid ++;
|
| 46 |
+
}
|
| 47 |
+
$select [$selectid] = array (
|
| 48 |
+
'option_id' => $o->getId (),
|
| 49 |
+
'custom_option_type' => $o->getType (),
|
| 50 |
+
'custom_option_title' => $o->getTitle (),
|
| 51 |
+
'is_require' => $o->getIsRequire (),
|
| 52 |
+
'price' => number_format ( Mage::helper ( 'directory' )->currencyConvert ( $o->getFormatedPrice (), $baseCurrency, $currentCurrency ), 2, '.', '' ),
|
| 53 |
+
'max_characters' => $max_characters,
|
| 54 |
+
'custom_option_value' => $options
|
| 55 |
+
);
|
| 56 |
+
}
|
| 57 |
+
|
| 58 |
+
$selectid ++;
|
| 59 |
+
|
| 60 |
+
}
|
| 61 |
+
echo json_encode ( $select );
|
| 62 |
+
}
|
| 63 |
+
|
| 64 |
+
/***Convert Currency***/
|
| 65 |
+
public function convert_currency($price,$from,$to) {
|
| 66 |
+
return 1;
|
| 67 |
+
$newPrice = Mage::helper('directory')->currencyConvert($price, $from, $to);
|
| 68 |
+
return $newPrice;
|
| 69 |
+
}
|
| 70 |
+
|
| 71 |
+
public function getproductdetailAction() {
|
| 72 |
+
$productdetail = array ();
|
| 73 |
+
$baseCurrency = Mage::app ()->getStore ()->getBaseCurrency ()->getCode ();
|
| 74 |
+
$currentCurrency = Mage::app ()->getStore ()->getCurrentCurrencyCode ();
|
| 75 |
+
$productid = $this->getRequest ()->getParam ( 'productid' );
|
| 76 |
+
|
| 77 |
+
$model = Mage::getModel ( "catalog/product" );
|
| 78 |
+
$product = $model->load ( $productid );
|
| 79 |
+
|
| 80 |
+
/*get product rating*/
|
| 81 |
+
|
| 82 |
+
$reviews = Mage::getModel('review/review')
|
| 83 |
+
->getResourceCollection()
|
| 84 |
+
->addStoreFilter(Mage::app()->getStore()->getId())
|
| 85 |
+
->addEntityFilter('product', $productid)
|
| 86 |
+
->addStatusFilter(Mage_Review_Model_Review::STATUS_APPROVED)
|
| 87 |
+
->setDateOrder()
|
| 88 |
+
->addRateVotes();
|
| 89 |
+
$avg = 0;
|
| 90 |
+
$ratings = array();
|
| 91 |
+
$rdetails=array();
|
| 92 |
+
|
| 93 |
+
if (count($reviews) > 0) {
|
| 94 |
+
foreach ($reviews->getItems() as $review) {
|
| 95 |
+
|
| 96 |
+
$review_rating=0;
|
| 97 |
+
foreach( $review->getRatingVotes() as $vote ) {
|
| 98 |
+
$review_rating = $vote->getPercent();
|
| 99 |
+
$ratings[] = $vote->getPercent();
|
| 100 |
+
}
|
| 101 |
+
if($review_rating)
|
| 102 |
+
$rating_by = ($review_rating/20);
|
| 103 |
+
|
| 104 |
+
$rdetails[]= array(
|
| 105 |
+
'title'=>$review->getTitle(),
|
| 106 |
+
'description'=>$review->getDetail(),
|
| 107 |
+
'reviewby'=>$review->getNickname(),
|
| 108 |
+
'rating_by'=>$rating_by,
|
| 109 |
+
'rating_date'=>date("d-m-Y", strtotime($review->getCreatedAt())),
|
| 110 |
+
);
|
| 111 |
+
}
|
| 112 |
+
$avg = array_sum($ratings)/count($ratings);
|
| 113 |
+
}
|
| 114 |
+
$rating=ceil($avg/20);
|
| 115 |
+
$reviews=$rdetails;
|
| 116 |
+
|
| 117 |
+
/*get product rating*/
|
| 118 |
+
|
| 119 |
+
if($product->getTypeId() == "configurable"):
|
| 120 |
+
$productdetail = array();
|
| 121 |
+
$config = $product->getTypeInstance(true);
|
| 122 |
+
|
| 123 |
+
$conf = Mage::getModel('catalog/product_type_configurable')->setProduct($product);
|
| 124 |
+
$simple_collection = $conf->getUsedProductCollection()->addAttributeToSelect('*')->addFilterByRequiredOptions()->getData();
|
| 125 |
+
|
| 126 |
+
$storeUrl = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA);
|
| 127 |
+
$description = nl2br ( $product->getDescription () );
|
| 128 |
+
$description = str_replace("{{media url=\"",$storeUrl,$description);
|
| 129 |
+
$description = str_replace("\"}}","",$description);
|
| 130 |
+
|
| 131 |
+
$c_ops=array();
|
| 132 |
+
|
| 133 |
+
if ($product->getData('has_options'))
|
| 134 |
+
{
|
| 135 |
+
$has_custom_options = true;
|
| 136 |
+
// Start custom options
|
| 137 |
+
$all_custom_option_array = array();
|
| 138 |
+
$attVal = $product->getOptions();
|
| 139 |
+
$optStr = "";
|
| 140 |
+
$inc=0;
|
| 141 |
+
$has_custom_option = 0;
|
| 142 |
+
foreach($attVal as $optionKey => $optionVal)
|
| 143 |
+
{
|
| 144 |
+
|
| 145 |
+
$has_custom_option = 1;
|
| 146 |
+
$all_custom_option_array[$inc]['custom_option_name']=$optionVal->getTitle();
|
| 147 |
+
$all_custom_option_array[$inc]['custom_option_id']=$optionVal->getId();
|
| 148 |
+
$all_custom_option_array[$inc]['custom_option_is_required']=$optionVal->getIsRequire();
|
| 149 |
+
$all_custom_option_array[$inc]['custom_option_type']=$optionVal->getType();
|
| 150 |
+
$all_custom_option_array[$inc]['sort_order'] = $optionVal->getSortOrder();
|
| 151 |
+
$all_custom_option_array[$inc]['all'] = $optionVal->getData();
|
| 152 |
+
if($all_custom_option_array[$inc]['all']['default_price_type'] == "percent") {
|
| 153 |
+
$all_custom_option_array[$inc]['all']['price'] = number_format((($product->getFinalPrice()*round($all_custom_option_array[$inc]['all']['price']*10,2)/10)/100),2);
|
| 154 |
+
|
| 155 |
+
}
|
| 156 |
+
else {
|
| 157 |
+
$all_custom_option_array[$inc]['all']['price'] = number_format($all_custom_option_array[$inc]['all']['price'],2);
|
| 158 |
+
}
|
| 159 |
+
|
| 160 |
+
$all_custom_option_array[$inc]['all']['price'] = str_replace(",","",$all_custom_option_array[$inc]['all']['price']);
|
| 161 |
+
$all_custom_option_array[$inc]['all']['price'] = strval(round($this->convert_currency($all_custom_option_array[$inc]['all']['price'],$basecurrencycode,$currentcurrencycode),2));
|
| 162 |
+
|
| 163 |
+
$all_custom_option_array[$inc]['custom_option_value_array'];
|
| 164 |
+
$inner_inc =0;
|
| 165 |
+
|
| 166 |
+
foreach($optionVal->getValues() as $valuesKey => $valuesVal)
|
| 167 |
+
{
|
| 168 |
+
$all_custom_option_array[$inc]['custom_option_value_array'][$inner_inc]['id'] = $valuesVal->getId();
|
| 169 |
+
$all_custom_option_array[$inc]['custom_option_value_array'][$inner_inc]['title'] = $valuesVal->getTitle();
|
| 170 |
+
|
| 171 |
+
$defaultcustomprice = str_replace(",","",($valuesVal->getPrice()));
|
| 172 |
+
$all_custom_option_array[$inc]['custom_option_value_array'][$inner_inc]['price'] = strval(round($this->convert_currency($defaultcustomprice,$basecurrencycode,$currentcurrencycode),2));
|
| 173 |
+
|
| 174 |
+
//$all_custom_option_array[$inc]['custom_option_value_array'][$inner_inc]['price'] = number_format($valuesVal->getPrice(),2);
|
| 175 |
+
$all_custom_option_array[$inc]['custom_option_value_array'][$inner_inc]['price_type'] = $valuesVal->getPriceType();
|
| 176 |
+
$all_custom_option_array[$inc]['custom_option_value_array'][$inner_inc]['sku'] = $valuesVal->getSku();
|
| 177 |
+
$all_custom_option_array[$inc]['custom_option_value_array'][$inner_inc]['sort_order'] = $valuesVal->getSortOrder();
|
| 178 |
+
if($valuesVal->getPriceType() == "percent") {
|
| 179 |
+
|
| 180 |
+
$defaultcustomprice = str_replace(",","", ($product->getFinalPrice()));
|
| 181 |
+
$customproductprice = strval(round($this->convert_currency($defaultcustomprice,$basecurrencycode,$currentcurrencycode),2));
|
| 182 |
+
$all_custom_option_array[$inc]['custom_option_value_array'][$inner_inc]['price'] = str_replace(",","", round((floatval($customproductprice) * floatval(round($valuesVal->getPrice(),1))/100),2));
|
| 183 |
+
|
| 184 |
+
}
|
| 185 |
+
$inner_inc++;
|
| 186 |
+
}
|
| 187 |
+
$inc++;
|
| 188 |
+
}
|
| 189 |
+
|
| 190 |
+
}
|
| 191 |
+
else
|
| 192 |
+
{ $has_custom_options = false;}
|
| 193 |
+
|
| 194 |
+
|
| 195 |
+
$addtionatt=$this->_getAditional();
|
| 196 |
+
|
| 197 |
+
/*get confiogurable product attributes*/
|
| 198 |
+
Mage::register('product', $product);
|
| 199 |
+
Mage::helper('catalog/product')->setSkipSaleableCheck(true);
|
| 200 |
+
$config_attributes = new Mage_Catalog_Block_Product_View_Type_Configurable;
|
| 201 |
+
$condigurable_data = json_decode($config_attributes->getJsonConfig(),1);
|
| 202 |
+
$configurable = array();
|
| 203 |
+
foreach($condigurable_data['attributes'] as $key => $value)
|
| 204 |
+
$configurable[] = $value;
|
| 205 |
+
|
| 206 |
+
/*get confiogurable product attributes*/
|
| 207 |
+
|
| 208 |
+
$productdetail = array (
|
| 209 |
+
'entity_id' => $product->getId (),
|
| 210 |
+
'sku' => $product->getSku (),
|
| 211 |
+
'name' => $product->getName (),
|
| 212 |
+
'news_from_date' => $product->getNewsFromDate (),
|
| 213 |
+
'news_to_date' => $product->getNewsToDate (),
|
| 214 |
+
'special_from_date' => $product->getSpecialFromDate (),
|
| 215 |
+
'special_to_date' => $product->getSpecialToDate (),
|
| 216 |
+
'image_url' => Mage::helper('connector')-> Imageresize($product->getImage(),'product','500','500'),
|
| 217 |
+
'url_key' => $product->getProductUrl (),
|
| 218 |
+
'is_in_stock' => $product->isAvailable (),
|
| 219 |
+
'has_custom_options' => $has_custom_options,
|
| 220 |
+
'regular_price_with_tax' => number_format ( Mage::helper ( 'directory' )->currencyConvert ( $product->getPrice (), $baseCurrency, $currentCurrency ), 2, '.', '' ),
|
| 221 |
+
'final_price_with_tax' => number_format ( Mage::helper ( 'directory' )->currencyConvert ( $product->getSpecialPrice (), $baseCurrency, $currentCurrency ), 2, '.', '' ),
|
| 222 |
+
'storeUrl' => $storeUrl,
|
| 223 |
+
'description' => $description,
|
| 224 |
+
'short_description'=>nl2br ($product->getShortDescription()),
|
| 225 |
+
'symbol' => Mage::app ()->getLocale ()->currency ( Mage::app ()->getStore ()->getCurrentCurrencyCode () )->getSymbol () ,
|
| 226 |
+
'weight'=>$product->getWeight(),
|
| 227 |
+
'review'=>$reviews,
|
| 228 |
+
'rating'=>$rating,
|
| 229 |
+
'wishlist' => Mage::helper('connector')->check_wishlist($product->getId ()),
|
| 230 |
+
'additional'=>$addtionatt,
|
| 231 |
+
//'configurable'=>$config->getConfigurableAttributesAsArray($product)
|
| 232 |
+
//'configurable'=>$configurable
|
| 233 |
+
);
|
| 234 |
+
|
| 235 |
+
if(count($all_custom_option_array))
|
| 236 |
+
$productdetail["custom_option"] = $all_custom_option_array;
|
| 237 |
+
|
| 238 |
+
if(count($configurable))
|
| 239 |
+
$productdetail["configurable"] = $configurable;
|
| 240 |
+
|
| 241 |
+
|
| 242 |
+
|
| 243 |
+
echo json_encode ( $productdetail );
|
| 244 |
+
else:
|
| 245 |
+
$storeUrl = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA);
|
| 246 |
+
$description = nl2br ( $product->getDescription () );
|
| 247 |
+
$description = str_replace("{{media url=\"",$storeUrl,$description);
|
| 248 |
+
$description = str_replace("\"}}","",$description);
|
| 249 |
+
|
| 250 |
+
|
| 251 |
+
$c_ops=array();
|
| 252 |
+
|
| 253 |
+
if ($product->getData('has_options'))
|
| 254 |
+
{
|
| 255 |
+
$has_custom_options = true;
|
| 256 |
+
// Start custom options
|
| 257 |
+
$all_custom_option_array = array();
|
| 258 |
+
$attVal = $product->getOptions();
|
| 259 |
+
$optStr = "";
|
| 260 |
+
$inc=0;
|
| 261 |
+
$has_custom_option = 0;
|
| 262 |
+
foreach($attVal as $optionKey => $optionVal)
|
| 263 |
+
{
|
| 264 |
+
|
| 265 |
+
$has_custom_option = 1;
|
| 266 |
+
$all_custom_option_array[$inc]['custom_option_name']=$optionVal->getTitle();
|
| 267 |
+
$all_custom_option_array[$inc]['custom_option_id']=$optionVal->getId();
|
| 268 |
+
$all_custom_option_array[$inc]['custom_option_is_required']=$optionVal->getIsRequire();
|
| 269 |
+
$all_custom_option_array[$inc]['custom_option_type']=$optionVal->getType();
|
| 270 |
+
$all_custom_option_array[$inc]['sort_order'] = $optionVal->getSortOrder();
|
| 271 |
+
$all_custom_option_array[$inc]['all'] = $optionVal->getData();
|
| 272 |
+
if($all_custom_option_array[$inc]['all']['default_price_type'] == "percent") {
|
| 273 |
+
$all_custom_option_array[$inc]['all']['price'] = number_format((($product->getFinalPrice()*round($all_custom_option_array[$inc]['all']['price']*10,2)/10)/100),2);
|
| 274 |
+
|
| 275 |
+
}
|
| 276 |
+
else {
|
| 277 |
+
$all_custom_option_array[$inc]['all']['price'] = number_format($all_custom_option_array[$inc]['all']['price'],2);
|
| 278 |
+
}
|
| 279 |
+
|
| 280 |
+
$all_custom_option_array[$inc]['all']['price'] = str_replace(",","",$all_custom_option_array[$inc]['all']['price']);
|
| 281 |
+
$all_custom_option_array[$inc]['all']['price'] = strval(round($this->convert_currency($all_custom_option_array[$inc]['all']['price'],$basecurrencycode,$currentcurrencycode),2));
|
| 282 |
+
|
| 283 |
+
$all_custom_option_array[$inc]['custom_option_value_array'];
|
| 284 |
+
$inner_inc =0;
|
| 285 |
+
|
| 286 |
+
foreach($optionVal->getValues() as $valuesKey => $valuesVal)
|
| 287 |
+
{
|
| 288 |
+
$all_custom_option_array[$inc]['custom_option_value_array'][$inner_inc]['id'] = $valuesVal->getId();
|
| 289 |
+
$all_custom_option_array[$inc]['custom_option_value_array'][$inner_inc]['title'] = $valuesVal->getTitle();
|
| 290 |
+
|
| 291 |
+
$defaultcustomprice = str_replace(",","",($valuesVal->getPrice()));
|
| 292 |
+
$all_custom_option_array[$inc]['custom_option_value_array'][$inner_inc]['price'] = strval(round($this->convert_currency($defaultcustomprice,$basecurrencycode,$currentcurrencycode),2));
|
| 293 |
+
|
| 294 |
+
//$all_custom_option_array[$inc]['custom_option_value_array'][$inner_inc]['price'] = number_format($valuesVal->getPrice(),2);
|
| 295 |
+
$all_custom_option_array[$inc]['custom_option_value_array'][$inner_inc]['price_type'] = $valuesVal->getPriceType();
|
| 296 |
+
$all_custom_option_array[$inc]['custom_option_value_array'][$inner_inc]['sku'] = $valuesVal->getSku();
|
| 297 |
+
$all_custom_option_array[$inc]['custom_option_value_array'][$inner_inc]['sort_order'] = $valuesVal->getSortOrder();
|
| 298 |
+
if($valuesVal->getPriceType() == "percent") {
|
| 299 |
+
|
| 300 |
+
$defaultcustomprice = str_replace(",","", ($product->getFinalPrice()));
|
| 301 |
+
$customproductprice = strval(round($this->convert_currency($defaultcustomprice,$basecurrencycode,$currentcurrencycode),2));
|
| 302 |
+
$all_custom_option_array[$inc]['custom_option_value_array'][$inner_inc]['price'] = str_replace(",","", round((floatval($customproductprice) * floatval(round($valuesVal->getPrice(),1))/100),2));
|
| 303 |
+
|
| 304 |
+
}
|
| 305 |
+
$inner_inc++;
|
| 306 |
+
}
|
| 307 |
+
$inc++;
|
| 308 |
+
}
|
| 309 |
+
|
| 310 |
+
}
|
| 311 |
+
else
|
| 312 |
+
{ $has_custom_options = false;}
|
| 313 |
+
|
| 314 |
+
$addtionatt=$this->_getAditional();
|
| 315 |
+
$productdetail = array (
|
| 316 |
+
'entity_id' => $product->getId (),
|
| 317 |
+
'sku' => $product->getSku (),
|
| 318 |
+
'name' => $product->getName (),
|
| 319 |
+
'news_from_date' => $product->getNewsFromDate (),
|
| 320 |
+
'news_to_date' => $product->getNewsToDate (),
|
| 321 |
+
'special_from_date' => $product->getSpecialFromDate (),
|
| 322 |
+
'special_to_date' => $product->getSpecialToDate (),
|
| 323 |
+
'image_url' => Mage::helper('connector')-> Imageresize($product->getImage(),'product','500','500'),
|
| 324 |
+
'url_key' => $product->getProductUrl (),
|
| 325 |
+
'is_in_stock' => $product->isAvailable (),
|
| 326 |
+
'has_custom_options' => $has_custom_options,
|
| 327 |
+
'regular_price_with_tax' => number_format ( Mage::helper ( 'directory' )->currencyConvert ( $product->getPrice (), $baseCurrency, $currentCurrency ), 2, '.', '' ),
|
| 328 |
+
'final_price_with_tax' => number_format ( Mage::helper ( 'directory' )->currencyConvert ( $product->getSpecialPrice (), $baseCurrency, $currentCurrency ), 2, '.', '' ),
|
| 329 |
+
'storeUrl' => $storeUrl,
|
| 330 |
+
'description' => $description,
|
| 331 |
+
'short_description'=>nl2br ($product->getShortDescription()),
|
| 332 |
+
'symbol' => Mage::app ()->getLocale ()->currency ( Mage::app ()->getStore ()->getCurrentCurrencyCode () )->getSymbol () ,
|
| 333 |
+
'weight'=>$product->getWeight(),
|
| 334 |
+
'qty'=>(int)Mage::getModel('cataloginventory/stock_item')->loadByProduct($product->getId())->getQty(),
|
| 335 |
+
'review'=>$reviews,
|
| 336 |
+
'rating'=>$rating,
|
| 337 |
+
'wishlist' => Mage::helper('connector')->check_wishlist($product->getId ()),
|
| 338 |
+
'additional'=>$addtionatt
|
| 339 |
+
);
|
| 340 |
+
if(count($all_custom_option_array))
|
| 341 |
+
$productdetail["custom_option"] = $all_custom_option_array;
|
| 342 |
+
|
| 343 |
+
|
| 344 |
+
|
| 345 |
+
echo json_encode ( $productdetail );
|
| 346 |
+
|
| 347 |
+
endif;
|
| 348 |
+
}
|
| 349 |
+
public function getPicListsAction() {
|
| 350 |
+
$productId = ( int ) $this->getRequest ()->getParam ( 'product' );
|
| 351 |
+
|
| 352 |
+
$_images = Mage::getModel ( 'catalog/product' )->load ( $productId );
|
| 353 |
+
$media = $_images->getMediaGalleryImages();
|
| 354 |
+
|
| 355 |
+
$images = array ();
|
| 356 |
+
foreach ($media as $_image ) {
|
| 357 |
+
|
| 358 |
+
$images [] = array (
|
| 359 |
+
'url' => Mage::helper('connector')-> Imageresize($_image->getFile (),'product','500','500'),
|
| 360 |
+
'thumbnail' => Mage::helper('connector')-> Imageresize($_image->getFile (),'thumbnail','100','100'),
|
| 361 |
+
'position' => $_image->getPosition ()
|
| 362 |
+
);
|
| 363 |
+
|
| 364 |
+
}
|
| 365 |
+
if(!sizeof($images) && $_images->getImage()):
|
| 366 |
+
|
| 367 |
+
$images [] = array (
|
| 368 |
+
'url' => Mage::helper('connector')-> Imageresize($_images->getImage(),'product','500','500'),
|
| 369 |
+
'thumbnail' => Mage::helper('connector')-> Imageresize($_images->getImage(),'thumbnail','100','100'),
|
| 370 |
+
'position' => 1
|
| 371 |
+
);
|
| 372 |
+
endif;
|
| 373 |
+
echo json_encode ( $images );
|
| 374 |
+
}
|
| 375 |
+
|
| 376 |
+
|
| 377 |
+
###get Rating and review summary
|
| 378 |
+
public function getRatingAction() {
|
| 379 |
+
$productId = ( int ) $this->getRequest ()->getParam ( 'product' );
|
| 380 |
+
$reviews = Mage::getModel('review/review')
|
| 381 |
+
->getResourceCollection()
|
| 382 |
+
->addStoreFilter(Mage::app()->getStore()->getId())
|
| 383 |
+
->addEntityFilter('product', $productId)
|
| 384 |
+
->addStatusFilter(Mage_Review_Model_Review::STATUS_APPROVED)
|
| 385 |
+
->setDateOrder()
|
| 386 |
+
->addRateVotes();
|
| 387 |
+
$avg = 0;
|
| 388 |
+
$ratings = array();
|
| 389 |
+
$rdetails=array();
|
| 390 |
+
|
| 391 |
+
if (count($reviews) > 0) {
|
| 392 |
+
foreach ($reviews->getItems() as $review) {
|
| 393 |
+
$rdetails[]= array(
|
| 394 |
+
'title'=>$review->getTitle(),
|
| 395 |
+
'description'=>$review->getDetail(),
|
| 396 |
+
'reviewby'=>$review->getNickname(),
|
| 397 |
+
);
|
| 398 |
+
foreach( $review->getRatingVotes() as $vote ) {
|
| 399 |
+
$ratings[] = $vote->getPercent();
|
| 400 |
+
}
|
| 401 |
+
}
|
| 402 |
+
$avg = array_sum($ratings)/count($ratings);
|
| 403 |
+
}
|
| 404 |
+
$response['rating']=ceil($avg/20);
|
| 405 |
+
$response['reviews']=$rdetails;
|
| 406 |
+
|
| 407 |
+
echo json_encode ($response);
|
| 408 |
+
}
|
| 409 |
+
|
| 410 |
+
|
| 411 |
+
public function _getAditional(array $excludeAttr = array()) {
|
| 412 |
+
$data = array ();
|
| 413 |
+
$productId = ( int ) $this->getRequest ()->getParam ( 'productid' );
|
| 414 |
+
$product = Mage::getModel ( "catalog/product" )->load ( $productId );
|
| 415 |
+
$attributes = $product->getAttributes ();
|
| 416 |
+
foreach ( $attributes as $attribute ) {
|
| 417 |
+
if ($attribute->getIsVisibleOnFront () && ! in_array ( $attribute->getAttributeCode (), $excludeAttr )) {
|
| 418 |
+
$value = $attribute->getFrontend ()->getValue ( $product );
|
| 419 |
+
|
| 420 |
+
if (! $product->hasData ( $attribute->getAttributeCode () )) {
|
| 421 |
+
$value = Mage::helper ( 'catalog' )->__ ( 'N/A' );
|
| 422 |
+
} elseif (( string ) $value == '') {
|
| 423 |
+
$value = Mage::helper ( 'catalog' )->__ ( 'No' );
|
| 424 |
+
} elseif ($attribute->getFrontendInput () == 'price' && is_string ( $value )) {
|
| 425 |
+
$value = Mage::app ()->getStore ()->convertPrice ( $value, true );
|
| 426 |
+
}
|
| 427 |
+
|
| 428 |
+
if (is_string ( $value ) && strlen ( $value )) {
|
| 429 |
+
$data [] = array (
|
| 430 |
+
'label' => $attribute->getStoreLabel (),
|
| 431 |
+
'value' => $value,
|
| 432 |
+
'code' => $attribute->getAttributeCode ()
|
| 433 |
+
);
|
| 434 |
+
}
|
| 435 |
+
}
|
| 436 |
+
}
|
| 437 |
+
|
| 438 |
+
return $data;
|
| 439 |
+
}
|
| 440 |
+
|
| 441 |
+
###Getting price range
|
| 442 |
+
|
| 443 |
+
|
| 444 |
+
public function getpricerange()
|
| 445 |
+
{
|
| 446 |
+
|
| 447 |
+
|
| 448 |
+
$maincategoryId=2;
|
| 449 |
+
|
| 450 |
+
$pricerange =array();
|
| 451 |
+
$layer = Mage::getModel('catalog/layer');
|
| 452 |
+
$category = Mage::getModel('catalog/category')->load($maincategoryId);
|
| 453 |
+
if ($category->getId()) {
|
| 454 |
+
$origCategory = $layer->getCurrentCategory();
|
| 455 |
+
$layer->setCurrentCategory($category);
|
| 456 |
+
}
|
| 457 |
+
$r=Mage::getModel('catalog/layer_filter_price')
|
| 458 |
+
->setLayer($layer);
|
| 459 |
+
|
| 460 |
+
$range = $r->getPriceRange();
|
| 461 |
+
$dbRanges = $r->getRangeItemCounts($range);
|
| 462 |
+
$data = array();
|
| 463 |
+
|
| 464 |
+
foreach ($dbRanges as $index=>$count) {
|
| 465 |
+
$data[] = array(
|
| 466 |
+
'label' => $this->_renderItemLabel($range, $index),
|
| 467 |
+
'value' => $this->_renderItemValue($range, $index),
|
| 468 |
+
'count' => $count,
|
| 469 |
+
);
|
| 470 |
+
}
|
| 471 |
+
return $data;
|
| 472 |
+
}
|
| 473 |
+
|
| 474 |
+
|
| 475 |
+
public function _renderItemLabel($range, $value)
|
| 476 |
+
{
|
| 477 |
+
$storename='default';
|
| 478 |
+
$store = Mage::app()->getStore();
|
| 479 |
+
$fromPrice = ($value-1)*$range;
|
| 480 |
+
$toPrice = $value*$range;
|
| 481 |
+
|
| 482 |
+
return array($fromPrice, $toPrice);
|
| 483 |
+
}
|
| 484 |
+
|
| 485 |
+
public function _renderItemValue($range, $value)
|
| 486 |
+
{
|
| 487 |
+
$storename='default';
|
| 488 |
+
$store = Mage::app()->getStore();
|
| 489 |
+
$fromPrice = ($value-1)*$range;
|
| 490 |
+
$toPrice = $value*$range;
|
| 491 |
+
|
| 492 |
+
return $fromPrice.','. $toPrice;
|
| 493 |
+
}
|
| 494 |
+
|
| 495 |
+
|
| 496 |
+
/*search API*/
|
| 497 |
+
public function searchAction()
|
| 498 |
+
{
|
| 499 |
+
$searchstring = $this->getRequest ()->getParam ( 'search' );
|
| 500 |
+
$page = ($this->getRequest ()->getParam ( 'page' )) ? ($this->getRequest ()->getParam ( 'page' )) : 1;
|
| 501 |
+
$limit = ($this->getRequest ()->getParam ( 'limit' )) ? ($this->getRequest ()->getParam ( 'limit' )) : 10;
|
| 502 |
+
$order = ($this->getRequest ()->getParam ( 'order' )) ? ($this->getRequest ()->getParam ( 'order' )) : 'entity_id';
|
| 503 |
+
|
| 504 |
+
if($searchstring):
|
| 505 |
+
|
| 506 |
+
$products = Mage::getModel('catalog/product')->getCollection();
|
| 507 |
+
$products->addAttributeToSelect(array('name','entity_id','status','visibility'),'inner')
|
| 508 |
+
->setPageSize ($limit)
|
| 509 |
+
->addAttributeToFilter('name', array('like' => '%'.$searchstring.'%'))
|
| 510 |
+
->addAttributeToFilter ( 'status', 1 )
|
| 511 |
+
->addAttributeToFilter ( 'visibility', array ('neq' => 1 ) )
|
| 512 |
+
->setPage ( $page, $limit );
|
| 513 |
+
|
| 514 |
+
$productlist = array ();
|
| 515 |
+
$baseCurrency = Mage::app ()->getStore ()->getBaseCurrency ()->getCode ();
|
| 516 |
+
$currentCurrency = Mage::app ()->getStore ()->getCurrentCurrencyCode ();
|
| 517 |
+
foreach ( $products as $product ) {
|
| 518 |
+
$product = Mage::getModel ( 'catalog/product' )->load ( $product ['entity_id'] );
|
| 519 |
+
$rating = Mage::getModel('rating/rating')->getEntitySummary($product->getId());
|
| 520 |
+
$rating_final = ($rating->getSum()/$rating->getCount())/20;
|
| 521 |
+
|
| 522 |
+
|
| 523 |
+
$productlist [] = array (
|
| 524 |
+
'entity_id' => $product->getId (),
|
| 525 |
+
'sku' => $product->getSku (),
|
| 526 |
+
'name' => $product->getName (),
|
| 527 |
+
'news_from_date' => $product->getNewsFromDate (),
|
| 528 |
+
'news_to_date' => $product->getNewsToDate (),
|
| 529 |
+
'special_from_date' => $product->getSpecialFromDate (),
|
| 530 |
+
'special_to_date' => $product->getSpecialToDate (),
|
| 531 |
+
/*'image_url' => Mage::getModel('catalog/product_media_config')->getMediaUrl( $product->getImage() ),*/
|
| 532 |
+
'image_url' => Mage::helper('connector')-> Imageresize($product->getImage(),'product','300','300'),
|
| 533 |
+
'url_key' => $product->getProductUrl (),
|
| 534 |
+
'regular_price_with_tax' => number_format ( Mage::helper ( 'directory' )->currencyConvert ( $product->getPrice (), $baseCurrency, $currentCurrency ), 2, '.', '' ),
|
| 535 |
+
'final_price_with_tax' => number_format ( Mage::helper ( 'directory' )->currencyConvert ( $product->getSpecialPrice (), $baseCurrency, $currentCurrency ), 2, '.', '' ),
|
| 536 |
+
'symbol'=> Mage::app()->getLocale()->currency(Mage::app()->getStore()->getCurrentCurrencyCode())->getSymbol(),
|
| 537 |
+
'qty'=>(int)Mage::getModel('cataloginventory/stock_item')->loadByProduct($product->getId())->getQty(),//$product->getStockItem()->getData('qty')
|
| 538 |
+
'rating' => $rating_final,
|
| 539 |
+
'wishlist' => Mage::helper('connector')->check_wishlist($product->getId ()),
|
| 540 |
+
'categoryid' => end($product->getCategoryIds())
|
| 541 |
+
);
|
| 542 |
+
}
|
| 543 |
+
|
| 544 |
+
if(sizeof($productlist))
|
| 545 |
+
echo json_encode($productlist);
|
| 546 |
+
else
|
| 547 |
+
echo json_encode(array('status'=>'error','message'=>'There are no products matching the selection'));
|
| 548 |
+
else:
|
| 549 |
+
echo json_encode(array('status'=>'error','message'=>'Search string is required'));
|
| 550 |
+
endif;
|
| 551 |
+
}
|
| 552 |
+
|
| 553 |
+
|
| 554 |
+
/*getFilter API*/
|
| 555 |
+
/*
|
| 556 |
+
URL : baseurl/restapi/products/getFilters
|
| 557 |
+
Name : getFilters
|
| 558 |
+
Method : GET
|
| 559 |
+
Response : JSON
|
| 560 |
+
*/
|
| 561 |
+
public function getFiltersAction(){
|
| 562 |
+
|
| 563 |
+
try{
|
| 564 |
+
$collection = Mage::getResourceModel('catalog/product_attribute_collection');
|
| 565 |
+
$collection
|
| 566 |
+
->setItemObjectClass('catalog/resource_eav_attribute')
|
| 567 |
+
->setOrder('position', 'ASC');
|
| 568 |
+
$collection->addIsFilterableFilter();
|
| 569 |
+
$result = array();
|
| 570 |
+
foreach ($collection as $attribute) {
|
| 571 |
+
|
| 572 |
+
$name=$attribute->getData('attribute_code');
|
| 573 |
+
$attributeInfo = Mage::getResourceModel('eav/entity_attribute_collection')->setCodeFilter($name)->getFirstItem();
|
| 574 |
+
$attributeId = $attributeInfo->getAttributeId();
|
| 575 |
+
$attribute = Mage::getModel('catalog/resource_eav_attribute')->load($attributeId);
|
| 576 |
+
$attributeOptions = $attribute ->getSource()->getAllOptions(false);
|
| 577 |
+
|
| 578 |
+
if($attribute->getAttributeCode() == 'price')
|
| 579 |
+
$result[] = array('code' => $attribute->getAttributeCode(), 'label'=>$attribute->getFrontendLabel(),'value'=>$this->getpricerange());
|
| 580 |
+
else
|
| 581 |
+
$result[] = array('code' => $attribute->getAttributeCode(), 'label'=>$attribute->getFrontendLabel(),'value'=>$attributeOptions);
|
| 582 |
+
|
| 583 |
+
}
|
| 584 |
+
|
| 585 |
+
echo json_encode($result);
|
| 586 |
+
}
|
| 587 |
+
catch(exception $e){
|
| 588 |
+
|
| 589 |
+
echo json_encode(array('status'=>'error','message'=>'Server side error'.$e->getMessage()));
|
| 590 |
+
}
|
| 591 |
+
}
|
| 592 |
+
|
| 593 |
+
/*getFilter API*/
|
| 594 |
+
}
|
app/code/local/Mss/Connector/controllers/SearchController.php
ADDED
|
@@ -0,0 +1,200 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
/**
|
| 4 |
+
|
| 5 |
+
* Catalog Search Controller
|
| 6 |
+
|
| 7 |
+
*/
|
| 8 |
+
|
| 9 |
+
class Mss_Connector_SearchController extends Mage_Core_Controller_Front_Action {
|
| 10 |
+
public function _construct(){
|
| 11 |
+
|
| 12 |
+
header('content-type: application/json; charset=utf-8');
|
| 13 |
+
header("access-control-allow-origin: *");
|
| 14 |
+
Mage::helper('connector')->loadParent(Mage::app()->getFrontController()->getRequest()->getHeader('token'));
|
| 15 |
+
parent::_construct();
|
| 16 |
+
|
| 17 |
+
}
|
| 18 |
+
|
| 19 |
+
protected function _getSession() {
|
| 20 |
+
|
| 21 |
+
return Mage::getSingleton ( 'catalog/session' );
|
| 22 |
+
|
| 23 |
+
}
|
| 24 |
+
|
| 25 |
+
public function indexAction() {
|
| 26 |
+
|
| 27 |
+
$query = Mage::helper ( 'catalogsearch' )->getQuery ();
|
| 28 |
+
|
| 29 |
+
/* @var $query Mage_CatalogSearch_Model_Query */
|
| 30 |
+
|
| 31 |
+
$query->setStoreId ( Mage::app ()->getStore ()->getId () );
|
| 32 |
+
|
| 33 |
+
|
| 34 |
+
if ($query->getQueryText () != '') {
|
| 35 |
+
|
| 36 |
+
if (Mage::helper ( 'catalogsearch' )->isMinQueryLength ()) {
|
| 37 |
+
|
| 38 |
+
$query->setId ( 0 )->setIsActive ( 1 )->setIsProcessed ( 1 );
|
| 39 |
+
|
| 40 |
+
} else {
|
| 41 |
+
|
| 42 |
+
if ($query->getId ()) {
|
| 43 |
+
|
| 44 |
+
$query->setPopularity ( $query->getPopularity () + 1 );
|
| 45 |
+
|
| 46 |
+
} else {
|
| 47 |
+
|
| 48 |
+
$query->setPopularity ( 1 );
|
| 49 |
+
|
| 50 |
+
}
|
| 51 |
+
|
| 52 |
+
|
| 53 |
+
|
| 54 |
+
if ($query->getRedirect ()) {
|
| 55 |
+
|
| 56 |
+
$query->save ();
|
| 57 |
+
|
| 58 |
+
$this->getResponse ()->setRedirect ( $query->getRedirect () );
|
| 59 |
+
|
| 60 |
+
return;
|
| 61 |
+
|
| 62 |
+
} else {
|
| 63 |
+
|
| 64 |
+
$query->prepare ();
|
| 65 |
+
|
| 66 |
+
}
|
| 67 |
+
|
| 68 |
+
}
|
| 69 |
+
|
| 70 |
+
|
| 71 |
+
|
| 72 |
+
Mage::helper ( 'catalogsearch' )->checkNotes ();
|
| 73 |
+
|
| 74 |
+
|
| 75 |
+
|
| 76 |
+
$collection = $query->getResultCollection ();
|
| 77 |
+
|
| 78 |
+
$i = 1;
|
| 79 |
+
|
| 80 |
+
$baseCurrency = Mage::app ()->getStore ()->getBaseCurrency ()->getCode ();
|
| 81 |
+
|
| 82 |
+
$currentCurrency = Mage::app ()->getStore ()->getCurrentCurrencyCode ();
|
| 83 |
+
|
| 84 |
+
foreach($collection as $product){
|
| 85 |
+
|
| 86 |
+
$product = Mage::getModel ( 'catalog/product' )->load ( $product->getId () );
|
| 87 |
+
|
| 88 |
+
$productlist [] = array (
|
| 89 |
+
|
| 90 |
+
'entity_id' => $product->getId (),
|
| 91 |
+
|
| 92 |
+
'sku' => $product->getSku (),
|
| 93 |
+
|
| 94 |
+
'name' => $product->getName (),
|
| 95 |
+
|
| 96 |
+
'news_from_date' => $product->getNewsFromDate (),
|
| 97 |
+
|
| 98 |
+
'news_to_date' => $product->getNewsToDate (),
|
| 99 |
+
|
| 100 |
+
'special_from_date' => $product->getSpecialFromDate (),
|
| 101 |
+
|
| 102 |
+
'special_to_date' => $product->getSpecialToDate (),
|
| 103 |
+
|
| 104 |
+
'image_url' => $product->getImageUrl (),
|
| 105 |
+
|
| 106 |
+
'url_key' => $product->getProductUrl (),
|
| 107 |
+
|
| 108 |
+
'regular_price_with_tax' => number_format ( Mage::helper ( 'directory' )->currencyConvert ( $product->getPrice (), $baseCurrency, $currentCurrency ), 2, '.', '' ),
|
| 109 |
+
|
| 110 |
+
'final_price_with_tax' => number_format ( Mage::helper ( 'directory' )->currencyConvert ( $product->getSpecialPrice (), $baseCurrency, $currentCurrency ), 2, '.', '' ),
|
| 111 |
+
|
| 112 |
+
'symbol' => Mage::app ()->getLocale ()->currency ( Mage::app ()->getStore ()->getCurrentCurrencyCode () )->getSymbol ()
|
| 113 |
+
|
| 114 |
+
);
|
| 115 |
+
|
| 116 |
+
$i ++;
|
| 117 |
+
|
| 118 |
+
}
|
| 119 |
+
|
| 120 |
+
echo json_encode($productlist);
|
| 121 |
+
|
| 122 |
+
if (! Mage::helper ( 'catalogsearch' )->isMinQueryLength ()) {
|
| 123 |
+
|
| 124 |
+
$query->save ();
|
| 125 |
+
|
| 126 |
+
}
|
| 127 |
+
|
| 128 |
+
} else {
|
| 129 |
+
|
| 130 |
+
|
| 131 |
+
}
|
| 132 |
+
|
| 133 |
+
}
|
| 134 |
+
|
| 135 |
+
public function testAction() {
|
| 136 |
+
|
| 137 |
+
$query = Mage::helper ( 'catalogSearch' )->getQuery ();
|
| 138 |
+
|
| 139 |
+
$searcher = Mage::getSingleton ( 'catalogsearch/advanced' )->addFilters ( array (
|
| 140 |
+
|
| 141 |
+
'name' => $query->getQueryText (),
|
| 142 |
+
|
| 143 |
+
'description' => $query->getQueryText ()
|
| 144 |
+
|
| 145 |
+
) );
|
| 146 |
+
|
| 147 |
+
// $obj = new stdClass ();
|
| 148 |
+
|
| 149 |
+
// $obj->query = $query->getQueryText ();
|
| 150 |
+
|
| 151 |
+
// $obj->results = $searcher->getProductCollection (); // nothing returned
|
| 152 |
+
|
| 153 |
+
$result = $searcher->getProductCollection()->getData()/* ->getItems () */;
|
| 154 |
+
|
| 155 |
+
//$mod = Mage::getModel ( 'catalog/product' );
|
| 156 |
+
|
| 157 |
+
//echo $result;
|
| 158 |
+
|
| 159 |
+
foreach ( $result as $product ) {
|
| 160 |
+
|
| 161 |
+
//var_dump ( $product);
|
| 162 |
+
|
| 163 |
+
// $product = Mage::getModel ( 'catalog/product' )->load ( $product ['entity_id'] );
|
| 164 |
+
|
| 165 |
+
// $productlist [] = array (
|
| 166 |
+
|
| 167 |
+
// 'entity_id' => $product->getId (),
|
| 168 |
+
|
| 169 |
+
// 'sku' => $product->getSku (),
|
| 170 |
+
|
| 171 |
+
// 'name' => $product->getName (),
|
| 172 |
+
|
| 173 |
+
// 'news_from_date' => $product->getNewsFromDate (),
|
| 174 |
+
|
| 175 |
+
// 'news_to_date' => $product->getNewsToDate (),
|
| 176 |
+
|
| 177 |
+
// 'special_from_date' => $product->getSpecialFromDate (),
|
| 178 |
+
|
| 179 |
+
// 'special_to_date' => $product->getSpecialToDate (),
|
| 180 |
+
|
| 181 |
+
// 'image_url' => $product->getImageUrl (),
|
| 182 |
+
|
| 183 |
+
// 'url_key' => $product->getProductUrl (),
|
| 184 |
+
|
| 185 |
+
// 'regular_price_with_tax' => number_format ( Mage::helper ( 'directory' )->currencyConvert ( $product->getPrice (), $baseCurrency, $currentCurrency ), 2, '.', '' ),
|
| 186 |
+
|
| 187 |
+
// 'final_price_with_tax' => number_format ( Mage::helper ( 'directory' )->currencyConvert ( $product->getSpecialPrice (), $baseCurrency, $currentCurrency ), 2, '.', '' ),
|
| 188 |
+
|
| 189 |
+
// 'symbol' => Mage::app ()->getLocale ()->currency ( Mage::app ()->getStore ()->getCurrentCurrencyCode () )->getSymbol ()
|
| 190 |
+
|
| 191 |
+
// );
|
| 192 |
+
|
| 193 |
+
}
|
| 194 |
+
|
| 195 |
+
var_dump($result);
|
| 196 |
+
|
| 197 |
+
}
|
| 198 |
+
|
| 199 |
+
}
|
| 200 |
+
|
app/code/local/Mss/Connector/controllers/StaticpagesController.php
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
class Mss_Connector_StaticpagesController extends Mage_Core_Controller_Front_Action {
|
| 3 |
+
|
| 4 |
+
|
| 5 |
+
const MSS_ABOUT_US_PAGE = 'mss/mss_config_group/about_us_page';
|
| 6 |
+
const MSS_TERM_CONDITION_PAGE = 'mss/mss_config_group/term_condition_page';
|
| 7 |
+
const MSS_PRIVACY_POLICY_PAGE = 'mss/mss_config_group/privacy_policy_page';
|
| 8 |
+
const MSS_RETURN_PRIVACY_POLICY_PAGE = 'mss/mss_config_group/return_privacy_policy_page';
|
| 9 |
+
|
| 10 |
+
public function _construct(){
|
| 11 |
+
|
| 12 |
+
header('content-type: application/json; charset=utf-8');
|
| 13 |
+
header("access-control-allow-origin: *");
|
| 14 |
+
Mage::helper('connector')->loadParent(Mage::app()->getFrontController()->getRequest()->getHeader('token'));
|
| 15 |
+
parent::_construct();
|
| 16 |
+
|
| 17 |
+
}
|
| 18 |
+
|
| 19 |
+
|
| 20 |
+
/*
|
| 21 |
+
URL : baseurl/restapi/staticpages/getPages/
|
| 22 |
+
Name : getCmspages
|
| 23 |
+
Method : GET
|
| 24 |
+
Response : JSON
|
| 25 |
+
Return Response : {
|
| 26 |
+
"status": "success",
|
| 27 |
+
"data": [
|
| 28 |
+
{
|
| 29 |
+
"page_title": "About Us",
|
| 30 |
+
"page_content": "content"
|
| 31 |
+
},
|
| 32 |
+
]
|
| 33 |
+
}
|
| 34 |
+
*/
|
| 35 |
+
public function getPagesAction()
|
| 36 |
+
{
|
| 37 |
+
try{
|
| 38 |
+
$pages = array(
|
| 39 |
+
|
| 40 |
+
self::MSS_ABOUT_US_PAGE,
|
| 41 |
+
self::MSS_TERM_CONDITION_PAGE,
|
| 42 |
+
self::MSS_PRIVACY_POLICY_PAGE,
|
| 43 |
+
self::MSS_RETURN_PRIVACY_POLICY_PAGE
|
| 44 |
+
);
|
| 45 |
+
$data = array();
|
| 46 |
+
|
| 47 |
+
foreach($pages as $page):
|
| 48 |
+
|
| 49 |
+
if($page):
|
| 50 |
+
$identifier = Mage::getStoreConfig($page);
|
| 51 |
+
$page_model = Mage::getModel('cms/page')->load($identifier, 'identifier');
|
| 52 |
+
|
| 53 |
+
$data [] = array('page_title'=>$page_model->getTitle(),
|
| 54 |
+
'page_content'=>$page_model->getContent());
|
| 55 |
+
endif;
|
| 56 |
+
endforeach;
|
| 57 |
+
|
| 58 |
+
if(sizeof($data)):
|
| 59 |
+
echo json_encode(array('status'=>'success','data'=>$data));
|
| 60 |
+
exit;
|
| 61 |
+
else:
|
| 62 |
+
echo json_encode(array('status'=>'error','message'=>'No page configured, please configure page first'));
|
| 63 |
+
exit;
|
| 64 |
+
endif;
|
| 65 |
+
}
|
| 66 |
+
catch(exception $e){
|
| 67 |
+
|
| 68 |
+
echo json_encode(array('status'=>'error','message'=>'Problem in loading data.'));
|
| 69 |
+
exit;
|
| 70 |
+
|
| 71 |
+
}
|
| 72 |
+
|
| 73 |
+
|
| 74 |
+
}
|
| 75 |
+
|
| 76 |
+
}
|
app/code/local/Mss/Connector/controllers/StoreController.php
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
class Mss_Connector_StoreController extends Mage_Core_Controller_Front_Action {
|
| 3 |
+
public function _construct(){
|
| 4 |
+
|
| 5 |
+
header('content-type: application/json; charset=utf-8');
|
| 6 |
+
header("access-control-allow-origin: *");
|
| 7 |
+
Mage::helper('connector')->loadParent(Mage::app()->getFrontController()->getRequest()->getHeader('token'));
|
| 8 |
+
parent::_construct();
|
| 9 |
+
|
| 10 |
+
}
|
| 11 |
+
public function websiteInfoAction() {
|
| 12 |
+
|
| 13 |
+
$basicinfo = array ();
|
| 14 |
+
foreach ( Mage::app ()->getWebsites () as $sk=> $website ) {
|
| 15 |
+
$basicinfo[$sk]['webside']['name']=$website->getName();
|
| 16 |
+
$basicinfo[$sk]['webside']['id']=$website->getId();
|
| 17 |
+
foreach ( $website->getGroups () as $key=> $group ) {
|
| 18 |
+
$basicinfo [$sk]['webside'][$key]['store']=$group->getName();
|
| 19 |
+
$basicinfo [$sk]['webside'][$key]['store_id']=$group->getGroupId ();
|
| 20 |
+
$basicinfo [$sk]['webside'][$key]['root_category_id']=$group->getRootCategoryId ();
|
| 21 |
+
$stores = $group->getStores ();
|
| 22 |
+
foreach ( $stores as $oo =>$_store ) {
|
| 23 |
+
$basicinfo [$sk]['webside'][$key]['view'][$oo] = array (
|
| 24 |
+
'name' => $_store->getName (),
|
| 25 |
+
'store_id' => $_store->getStoreId (),
|
| 26 |
+
'store_url' => $_store->getUrl (),
|
| 27 |
+
'store_code'=>$_store->getCode(),
|
| 28 |
+
'sort_order' => $_store->getSortOrder(),
|
| 29 |
+
'is_active' =>$_store->getIsActive()
|
| 30 |
+
);
|
| 31 |
+
}
|
| 32 |
+
}
|
| 33 |
+
|
| 34 |
+
}
|
| 35 |
+
echo json_encode($basicinfo);
|
| 36 |
+
|
| 37 |
+
}
|
| 38 |
+
public function storeInfoAction(){
|
| 39 |
+
$website_id = Mage::app()->getStore()->getWebsiteId();
|
| 40 |
+
$website_name = Mage::app ()->getWebsite($website_id) -> getName();
|
| 41 |
+
$group_id = Mage::app()->getStore()->getGroupId();
|
| 42 |
+
$group_name = Mage::app ()->getGroup($group_id) -> getName();
|
| 43 |
+
|
| 44 |
+
|
| 45 |
+
echo json_encode(array('store_id'=>Mage::app()->getStore()->getStoreId(),
|
| 46 |
+
'store_code'=>Mage::app()->getStore()->getCode(),
|
| 47 |
+
'website_id'=>$website_id,
|
| 48 |
+
'website_name'=>$website_name,
|
| 49 |
+
'group_id'=>$group_id,
|
| 50 |
+
'group_name'=>$group_name,
|
| 51 |
+
'name'=>Mage::app()->getStore()->getName(),
|
| 52 |
+
'sort_order' => Mage::app()->getStore()->getSortOrder(),
|
| 53 |
+
'is_active'=>Mage::app()->getStore()->getIsActive(),
|
| 54 |
+
'root_category_id' => Mage::app()->getStore()->getRootCategoryId(),
|
| 55 |
+
|
| 56 |
+
'url'=> Mage::helper('core/url')->getHomeUrl()
|
| 57 |
+
|
| 58 |
+
));
|
| 59 |
+
}
|
| 60 |
+
|
| 61 |
+
}
|
app/code/local/Mss/Connector/controllers/StoreinfoController.php
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
class Mss_Connector_StoreinfoController extends Mage_Core_Controller_Front_Action {
|
| 3 |
+
|
| 4 |
+
const MSS_STORE_EMAIL = 'mss/mss_info_group/store_email';
|
| 5 |
+
const MSS_STORE_PHONENO = 'mss/mss_info_group/store_phoneno';
|
| 6 |
+
|
| 7 |
+
|
| 8 |
+
public function _construct(){
|
| 9 |
+
|
| 10 |
+
header('content-type: application/json; charset=utf-8');
|
| 11 |
+
header("access-control-allow-origin: *");
|
| 12 |
+
Mage::helper('connector')->loadParent(Mage::app()->getFrontController()->getRequest()->getHeader('token'));
|
| 13 |
+
parent::_construct();
|
| 14 |
+
|
| 15 |
+
}
|
| 16 |
+
|
| 17 |
+
/*
|
| 18 |
+
|
| 19 |
+
|
| 20 |
+
Working url : baseURL/restapi/storeinfo/getstoreinfo/
|
| 21 |
+
URL : baseurl/restapi/storeinfo/getstoreinfo/
|
| 22 |
+
Name : getstoreinfo
|
| 23 |
+
Method : GET
|
| 24 |
+
Response : JSON
|
| 25 |
+
Return Response :
|
| 26 |
+
{
|
| 27 |
+
"status": "success",
|
| 28 |
+
"data": {
|
| 29 |
+
"store_phoneno": "dummy text",
|
| 30 |
+
"store_email": "dummy text",
|
| 31 |
+
"store_weburl": "dummy text"
|
| 32 |
+
}
|
| 33 |
+
}
|
| 34 |
+
*/
|
| 35 |
+
|
| 36 |
+
public function getstoreinfoAction(){
|
| 37 |
+
try{
|
| 38 |
+
$recipient_email = Mage::getStoreConfig('contacts/email/recipient_email');
|
| 39 |
+
$store_name = Mage::getBaseUrl();
|
| 40 |
+
$store_phone = Mage::getStoreConfig('general/store_information/phone');
|
| 41 |
+
|
| 42 |
+
|
| 43 |
+
$storeinfo = array();
|
| 44 |
+
if(Mage::getStoreConfig(self::MSS_STORE_PHONENO)):
|
| 45 |
+
$result['store_phoneno'] = Mage::getStoreConfig(self::MSS_STORE_PHONENO);
|
| 46 |
+
else:
|
| 47 |
+
$result['store_phoneno'] = $store_phone;
|
| 48 |
+
endif;
|
| 49 |
+
|
| 50 |
+
if(Mage::getStoreConfig(self::MSS_STORE_EMAIL)):
|
| 51 |
+
$result['store_email'] = Mage::getStoreConfig(self::MSS_STORE_EMAIL);
|
| 52 |
+
else:
|
| 53 |
+
$result['store_email'] = $recipient_email;
|
| 54 |
+
endif;
|
| 55 |
+
|
| 56 |
+
$result['store_weburl'] = $store_name;
|
| 57 |
+
|
| 58 |
+
$storeinfo = $result;
|
| 59 |
+
|
| 60 |
+
echo json_encode(array('status'=>'success','data'=>$storeinfo));
|
| 61 |
+
}
|
| 62 |
+
catch(exception $e){
|
| 63 |
+
|
| 64 |
+
echo json_encode(array('status'=>'error','message'=>'Problem in loading data.'));
|
| 65 |
+
exit;
|
| 66 |
+
}
|
| 67 |
+
|
| 68 |
+
}
|
| 69 |
+
}
|
app/code/local/Mss/Connector/controllers/TokenController.php
ADDED
|
@@ -0,0 +1,189 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
class Mss_Connector_TokenController extends Mage_Core_Controller_Front_Action {
|
| 3 |
+
|
| 4 |
+
const XML_SECURE_KEY_STATUS = 'magentomobileshop/key/status';
|
| 5 |
+
const XML_SECURE_KEY = 'magentomobileshop/secure/key';
|
| 6 |
+
const XML_SECURE_TOKEN = 'magentomobileshop/secure/token';
|
| 7 |
+
const XML_SECURE_TOKEN_EXP = 'secure/token/exp';
|
| 8 |
+
|
| 9 |
+
|
| 10 |
+
public function _construct(){
|
| 11 |
+
|
| 12 |
+
header('content-type: application/json; charset=utf-8');
|
| 13 |
+
header("access-control-allow-origin: *");
|
| 14 |
+
parent::_construct();
|
| 15 |
+
|
| 16 |
+
}
|
| 17 |
+
|
| 18 |
+
/*
|
| 19 |
+
|
| 20 |
+
URL : baseurl/restapi/token/setToken/
|
| 21 |
+
Name : setToken
|
| 22 |
+
Method : GET
|
| 23 |
+
Parameters : secure_key*,status*
|
| 24 |
+
Response : JSON
|
| 25 |
+
Return Response :
|
| 26 |
+
{
|
| 27 |
+
"status": "success",
|
| 28 |
+
"message": "return message"
|
| 29 |
+
}
|
| 30 |
+
*/
|
| 31 |
+
|
| 32 |
+
public function setTokenAction(){
|
| 33 |
+
|
| 34 |
+
try{
|
| 35 |
+
$params = $this->getRequest ()->getParams ();
|
| 36 |
+
//$params = apache_request_headers();
|
| 37 |
+
|
| 38 |
+
|
| 39 |
+
if(isset($params['secure_key']) && isset($params['status'])):
|
| 40 |
+
|
| 41 |
+
$configuration = array(
|
| 42 |
+
self::XML_SECURE_KEY_STATUS=>$params['status'],
|
| 43 |
+
self::XML_SECURE_KEY =>$params['secure_key']
|
| 44 |
+
);
|
| 45 |
+
|
| 46 |
+
foreach($configuration as $path => $value){
|
| 47 |
+
$this->saveConfig($path,$value);
|
| 48 |
+
}
|
| 49 |
+
|
| 50 |
+
$tags = array("CONFIG");
|
| 51 |
+
Mage::app ()->cleanCache($tags);
|
| 52 |
+
|
| 53 |
+
echo json_encode(array('status'=>'success','message'=>'Data updated.'));
|
| 54 |
+
else:
|
| 55 |
+
|
| 56 |
+
echo json_encode(array('status'=>'error','message'=>'Required parameters are missing.'));
|
| 57 |
+
|
| 58 |
+
endif;
|
| 59 |
+
|
| 60 |
+
}
|
| 61 |
+
catch(exception $e){
|
| 62 |
+
|
| 63 |
+
echo json_encode(array('status'=>'error','message'=>$e->getMessage()));
|
| 64 |
+
|
| 65 |
+
}
|
| 66 |
+
}
|
| 67 |
+
|
| 68 |
+
/*
|
| 69 |
+
|
| 70 |
+
URL : baseurl/restapi/token/getToken/
|
| 71 |
+
Name : getToken
|
| 72 |
+
Method : Header
|
| 73 |
+
Parameters : secure_key*,status*
|
| 74 |
+
Response : JSON
|
| 75 |
+
Return Response :
|
| 76 |
+
{
|
| 77 |
+
"status": "error"/"success",
|
| 78 |
+
"message"/"token": "return message"
|
| 79 |
+
}
|
| 80 |
+
*/
|
| 81 |
+
|
| 82 |
+
public function getTokenAction(){
|
| 83 |
+
|
| 84 |
+
try{
|
| 85 |
+
if(Mage::getStoreConfig(self::XML_SECURE_KEY_STATUS)):
|
| 86 |
+
|
| 87 |
+
|
| 88 |
+
$params = Mage::app()->getFrontController()->getRequest()->getHeader('token');
|
| 89 |
+
|
| 90 |
+
if(isset($params)):
|
| 91 |
+
|
| 92 |
+
|
| 93 |
+
|
| 94 |
+
if($params == Mage::getStoreConfig(self::XML_SECURE_KEY)):
|
| 95 |
+
|
| 96 |
+
if(Mage::getStoreConfig(self::XML_SECURE_TOKEN_EXP) &&
|
| 97 |
+
Mage::helper('connector')->compareExp() < 24):
|
| 98 |
+
|
| 99 |
+
echo json_encode(array('status'=>'success','token'=> Mage::getStoreConfig(self::XML_SECURE_TOKEN)));
|
| 100 |
+
exit;
|
| 101 |
+
endif;
|
| 102 |
+
|
| 103 |
+
$token = $this->radToken();
|
| 104 |
+
$current_session = Mage::getModel('core/date')->date('Y-m-d H:i:s');
|
| 105 |
+
|
| 106 |
+
$configuration = array(
|
| 107 |
+
self::XML_SECURE_TOKEN=>$token,
|
| 108 |
+
self::XML_SECURE_TOKEN_EXP =>$current_session
|
| 109 |
+
);
|
| 110 |
+
foreach($configuration as $path => $value){
|
| 111 |
+
$this->saveConfig($path,$value);
|
| 112 |
+
}
|
| 113 |
+
|
| 114 |
+
//clearing cache
|
| 115 |
+
$tags = array("CONFIG");
|
| 116 |
+
Mage::app ()->cleanCache($tags);
|
| 117 |
+
|
| 118 |
+
$this->getSession();
|
| 119 |
+
|
| 120 |
+
if(Mage::app()->getFrontController()->getRequest()->getHeader('username') && Mage::app()->getFrontController()->getRequest()->getHeader('password')):
|
| 121 |
+
echo json_encode(array('status'=>'success','token'=>$token,'user'=>$this->usersession(Mage::app()->getFrontController()->getRequest()->getHeader('username'),Mage::app()->getFrontController()->getRequest()->getHeader('username'))));
|
| 122 |
+
exit;
|
| 123 |
+
else:
|
| 124 |
+
echo json_encode(array('status'=>'success','token'=>$token));
|
| 125 |
+
exit;
|
| 126 |
+
endif;
|
| 127 |
+
else:
|
| 128 |
+
echo json_encode(array('status'=>'error','message'=> 'Invalid secure key.'));
|
| 129 |
+
endif;
|
| 130 |
+
else:
|
| 131 |
+
|
| 132 |
+
echo json_encode(array('status'=>'error','message'=>'Secure key is required.'));
|
| 133 |
+
|
| 134 |
+
endif;
|
| 135 |
+
|
| 136 |
+
else:
|
| 137 |
+
echo json_encode(array('status'=>'error','message'=>'App is disabled by magentomobileshop admin.'));
|
| 138 |
+
endif;
|
| 139 |
+
|
| 140 |
+
}
|
| 141 |
+
catch(exception $e){
|
| 142 |
+
|
| 143 |
+
echo json_encode(array('status'=>'error','message'=>$e->getMessage()));
|
| 144 |
+
|
| 145 |
+
}
|
| 146 |
+
}
|
| 147 |
+
|
| 148 |
+
|
| 149 |
+
|
| 150 |
+
private function radToken()
|
| 151 |
+
{
|
| 152 |
+
return substr(str_shuffle(str_repeat('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', mt_rand(1,25))),1,25);
|
| 153 |
+
}
|
| 154 |
+
|
| 155 |
+
private function saveConfig($path,$value){
|
| 156 |
+
|
| 157 |
+
Mage::getModel('core/config')->saveConfig($path,$value);
|
| 158 |
+
return true;
|
| 159 |
+
}
|
| 160 |
+
|
| 161 |
+
public function getSession(){
|
| 162 |
+
|
| 163 |
+
$adminSessionLifetime = (int)Mage::getStoreConfig('admin/security/session_cookie_lifetime');
|
| 164 |
+
if($adminSessionLifetime < 86400)
|
| 165 |
+
$this->saveConfig('admin/security/session_cookie_lifetime','86400');
|
| 166 |
+
|
| 167 |
+
return true;
|
| 168 |
+
}
|
| 169 |
+
|
| 170 |
+
private function usersession($username,$password){
|
| 171 |
+
$session = Mage::getSingleton ( 'customer/session' );
|
| 172 |
+
|
| 173 |
+
if (Mage::getSingleton ( 'customer/session' )->isLoggedIn ())
|
| 174 |
+
return true;
|
| 175 |
+
|
| 176 |
+
try
|
| 177 |
+
{
|
| 178 |
+
if (!$session->login ( $username, $password ))
|
| 179 |
+
return false;
|
| 180 |
+
else
|
| 181 |
+
return true;
|
| 182 |
+
}
|
| 183 |
+
catch ( Mage_Core_Exception $e )
|
| 184 |
+
{
|
| 185 |
+
return false;
|
| 186 |
+
}
|
| 187 |
+
|
| 188 |
+
}
|
| 189 |
+
}
|
app/code/local/Mss/Connector/controllers/WishlistController.php
ADDED
|
@@ -0,0 +1,182 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
class Mss_Connector_WishlistController extends Mage_Core_Controller_Front_Action {
|
| 3 |
+
|
| 4 |
+
|
| 5 |
+
public function _construct(){
|
| 6 |
+
|
| 7 |
+
header('content-type: application/json; charset=utf-8');
|
| 8 |
+
header("access-control-allow-origin: *");
|
| 9 |
+
Mage::helper('connector')->loadParent(Mage::app()->getFrontController()->getRequest()->getHeader('token'));
|
| 10 |
+
parent::_construct();
|
| 11 |
+
|
| 12 |
+
}
|
| 13 |
+
|
| 14 |
+
public function addToWishlistAction() {
|
| 15 |
+
$response = array ();
|
| 16 |
+
if (! Mage::getStoreConfigFlag ( 'wishlist/general/active' )) {
|
| 17 |
+
$response ['status'] = 'error';
|
| 18 |
+
$response ['message'] = $this->__ ( 'Wishlist Has Been Disabled By Admin' );
|
| 19 |
+
}
|
| 20 |
+
if (! Mage::getSingleton ( 'customer/session' )->isLoggedIn ()) {
|
| 21 |
+
$response ['status'] = 'error';
|
| 22 |
+
$response ['message'] = $this->__ ( 'Please Login First' );
|
| 23 |
+
}
|
| 24 |
+
|
| 25 |
+
if (empty ( $response )) {
|
| 26 |
+
|
| 27 |
+
|
| 28 |
+
$session = Mage::getSingleton ( 'customer/session' );
|
| 29 |
+
$customer=Mage::getModel("customer/customer")->load($session->getCustomer()->getId());
|
| 30 |
+
$wishlist=Mage::getModel("wishlist/wishlist")->loadByCustomer($customer,true);
|
| 31 |
+
|
| 32 |
+
if (! $wishlist) {
|
| 33 |
+
$response ['status'] = 'error';
|
| 34 |
+
$response ['message'] = $this->__ ( 'Unable to Create Wishlist' );
|
| 35 |
+
} else {
|
| 36 |
+
|
| 37 |
+
$productId = ( int ) $this->getRequest ()->getParam ( 'product' );
|
| 38 |
+
if (! $productId) {
|
| 39 |
+
$response ['status'] = 'error';
|
| 40 |
+
$response ['message'] = $this->__ ( 'Product Not Found' );
|
| 41 |
+
} else {
|
| 42 |
+
|
| 43 |
+
$product = Mage::getModel ( 'catalog/product' )->load ( $productId );
|
| 44 |
+
if (! $product->getId () || ! $product->isVisibleInCatalog ()) {
|
| 45 |
+
$response ['status'] = 'error';
|
| 46 |
+
$response ['message'] = $this->__ ( 'Cannot specify product.' );
|
| 47 |
+
} else {
|
| 48 |
+
|
| 49 |
+
try {
|
| 50 |
+
//$requestParams = $this->getRequest ()->getParams ();
|
| 51 |
+
$requestParams = array();
|
| 52 |
+
$buyRequest = new Varien_Object ( $requestParams );
|
| 53 |
+
|
| 54 |
+
$result = $wishlist->addNewItem ( $product, $buyRequest );
|
| 55 |
+
if (is_string ( $result )) {
|
| 56 |
+
Mage::throwException ( $result );
|
| 57 |
+
}
|
| 58 |
+
$wishlist->save ();
|
| 59 |
+
|
| 60 |
+
Mage::dispatchEvent ( 'wishlist_add_product', array (
|
| 61 |
+
'wishlist' => $wishlist,
|
| 62 |
+
'product' => $product,
|
| 63 |
+
'item' => $result
|
| 64 |
+
) );
|
| 65 |
+
|
| 66 |
+
Mage::helper ( 'wishlist' )->calculate ();
|
| 67 |
+
|
| 68 |
+
$message = $this->__ ( '%1$s has been added to your wishlist.', $product->getName (), $referer );
|
| 69 |
+
$response ['status'] = 'success';
|
| 70 |
+
$response ['message'] = $message;
|
| 71 |
+
|
| 72 |
+
Mage::unregister ( 'wishlist' );
|
| 73 |
+
} catch ( Mage_Core_Exception $e ) {
|
| 74 |
+
$response ['status'] = 'error';
|
| 75 |
+
$response ['message'] = $this->__ ( 'An error occurred while adding item to wishlist: %s', $e->getMessage () );
|
| 76 |
+
} catch ( Exception $e ) {
|
| 77 |
+
|
| 78 |
+
$response ['status'] = 'error';
|
| 79 |
+
$response ['message'] = $this->__ ( 'An error occurred while adding item to wishlist.' );
|
| 80 |
+
}
|
| 81 |
+
}
|
| 82 |
+
}
|
| 83 |
+
}
|
| 84 |
+
}
|
| 85 |
+
|
| 86 |
+
echo json_encode ( $response );
|
| 87 |
+
return;
|
| 88 |
+
}
|
| 89 |
+
|
| 90 |
+
public function getWishlistAction() {
|
| 91 |
+
echo json_encode ( $this->_getWishlist () );
|
| 92 |
+
}
|
| 93 |
+
|
| 94 |
+
|
| 95 |
+
protected function _getWishlist() {
|
| 96 |
+
$wishlist = Mage::registry ( 'wishlist' );
|
| 97 |
+
$baseCurrency = Mage::app ()->getStore ()->getBaseCurrency ()->getCode ();
|
| 98 |
+
$currentCurrency = Mage::app ()->getStore ()->getCurrentCurrencyCode ();
|
| 99 |
+
if ($wishlist) {
|
| 100 |
+
return $wishlist;
|
| 101 |
+
}
|
| 102 |
+
|
| 103 |
+
try {
|
| 104 |
+
$wishlist = Mage::getModel ( 'wishlist/wishlist' )->loadByCustomer ( Mage::getSingleton ( 'customer/session' )->getCustomer (), true );
|
| 105 |
+
Mage::register ( 'wishlist', $wishlist );
|
| 106 |
+
} catch ( Mage_Core_Exception $e ) {
|
| 107 |
+
Mage::getSingleton ( 'wishlist/session' )->addError ( $e->getMessage () );
|
| 108 |
+
} catch ( Exception $e ) {
|
| 109 |
+
Mage::getSingleton ( 'wishlist/session' )->addException ( $e, Mage::helper ( 'wishlist' )->__ ( 'Cannot create wishlist.' ) );
|
| 110 |
+
return false;
|
| 111 |
+
}
|
| 112 |
+
$items = array ();
|
| 113 |
+
foreach ( $wishlist->getItemCollection () as $item ) {
|
| 114 |
+
$item = Mage::getModel ( 'catalog/product' )->setStoreId ( $item->getStoreId () )->load ( $item->getProductId () );
|
| 115 |
+
if ($item->getId ()) {
|
| 116 |
+
$items [] = array (
|
| 117 |
+
'name' => $item->getName (),
|
| 118 |
+
'entity_id' => $item->getId (),
|
| 119 |
+
'regular_price_with_tax' => number_format ( Mage::helper ( 'directory' )->currencyConvert ( $item->getPrice (), $baseCurrency, $currentCurrency ), 2, '.', '' ),
|
| 120 |
+
'final_price_with_tax' => number_format ( Mage::helper ( 'directory' )->currencyConvert ( $item->getSpecialPrice (), $baseCurrency, $currentCurrency ), 2, '.', '' ),
|
| 121 |
+
'sku' => $item->getSku () ,
|
| 122 |
+
'symbol' => Mage::app ()->getLocale ()->currency ( Mage::app ()->getStore ()->getCurrentCurrencyCode () )->getSymbol (),
|
| 123 |
+
'image_url' => Mage::helper('connector')-> Imageresize($item->getImage(),'product','100','100')
|
| 124 |
+
|
| 125 |
+
);
|
| 126 |
+
}
|
| 127 |
+
}
|
| 128 |
+
return array (
|
| 129 |
+
'wishlist' => $wishlist->getData (),
|
| 130 |
+
'items' => $items
|
| 131 |
+
);
|
| 132 |
+
}
|
| 133 |
+
|
| 134 |
+
|
| 135 |
+
/*
|
| 136 |
+
|
| 137 |
+
URL : baseurl/restapi/Wishlist/getWishlist
|
| 138 |
+
Name : removeWishlist
|
| 139 |
+
Method : GET
|
| 140 |
+
Parameters : product_id*
|
| 141 |
+
Response : JSON
|
| 142 |
+
Return Response :
|
| 143 |
+
{
|
| 144 |
+
"status": "success"/"error",
|
| 145 |
+
"message": "return message"
|
| 146 |
+
}
|
| 147 |
+
*/
|
| 148 |
+
public function removeWishlistAction(){
|
| 149 |
+
|
| 150 |
+
$params = $this->getRequest()->getParam('product_id');
|
| 151 |
+
|
| 152 |
+
if(!$params){
|
| 153 |
+
echo json_encode(array('status'=>'error','message'=>'Product Id is missing.'));
|
| 154 |
+
exit;
|
| 155 |
+
}
|
| 156 |
+
$session = Mage::getSingleton ( 'customer/session' );
|
| 157 |
+
|
| 158 |
+
if($session->getCustomer()->getId()):
|
| 159 |
+
$itemCollection = Mage::getModel('wishlist/item')->getCollection()
|
| 160 |
+
->addCustomerIdFilter($session->getCustomer()->getId());
|
| 161 |
+
|
| 162 |
+
foreach($itemCollection as $item):
|
| 163 |
+
if($item->getProduct()->getId() == $params):
|
| 164 |
+
try{
|
| 165 |
+
$item->delete();
|
| 166 |
+
$response['status'] = 'success';
|
| 167 |
+
$response['message'] = 'item removed from wishlist.';
|
| 168 |
+
}
|
| 169 |
+
catch(exception $e){
|
| 170 |
+
$response['status'] = 'error';
|
| 171 |
+
$response['message'] = $e->getMessage();
|
| 172 |
+
}
|
| 173 |
+
endif;
|
| 174 |
+
endforeach;
|
| 175 |
+
else:
|
| 176 |
+
$response['status'] = 'error';
|
| 177 |
+
$response['message'] = $this->__ ( 'Unable to Create Wishlist' );
|
| 178 |
+
endif;
|
| 179 |
+
|
| 180 |
+
echo json_encode($response);
|
| 181 |
+
}
|
| 182 |
+
}
|
app/code/local/Mss/Connector/controllers/_new_ProductsController.php
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
| 1 |
+
<?phpclass Mss_Connector_ProductsController extends Mage_Core_Controller_Front_Action { public function getcustomoptionAction() { $baseCurrency = Mage::app ()->getStore ()->getBaseCurrency ()->getCode (); $currentCurrency = Mage::app ()->getStore ()->getCurrentCurrencyCode (); $productid = $this->getRequest ()->getParam ( 'productid' ); $product = Mage::getModel ( "catalog/product" )->load ( $productid ); $selectid = 1; $select = array (); foreach ( $product->getOptions () as $o ) { if (($o->getType () == "field") || ($o->getType () =="file")) { $select [$selectid] = array ( 'option_id' => $o->getId (), 'custom_option_type' => $o->getType (), 'custom_option_title' => $o->getTitle (), 'is_require' => $o->getIsRequire (), 'price' => number_format ( Mage::helper ( 'directory' )->currencyConvert ( $o->getPrice (), $baseCurrency, $currentCurrency ), 2, '.', '' ), 'price_type'=>$o->getPriceType(), 'sku'=>$o->getSku(), 'max_characters' => $o->getMaxCharacters (), ); } else { $max_characters = $o->getMaxCharacters (); $optionid = 1; $options = array (); $values = $o->getValues (); foreach ( $values as $v ) { $options [$optionid] = $v->getData (); $optionid ++; } $select [$selectid] = array ( 'option_id' => $o->getId (), 'custom_option_type' => $o->getType (), 'custom_option_title' => $o->getTitle (), 'is_require' => $o->getIsRequire (), 'price' => number_format ( Mage::helper ( 'directory' )->currencyConvert ( $o->getFormatedPrice (), $baseCurrency, $currentCurrency ), 2, '.', '' ), 'max_characters' => $max_characters, 'custom_option_value' => $options ); } $selectid ++; } echo json_encode ( $select ); } public function getproductdetailAction() { $productdetail = array (); $baseCurrency = Mage::app ()->getStore ()->getBaseCurrency ()->getCode (); $currentCurrency = Mage::app ()->getStore ()->getCurrentCurrencyCode (); $productid = $this->getRequest ()->getParam ( 'productid' ); $product = Mage::getModel ( "catalog/product" )->load ( $productid ); $productdetail = array ( 'entity_id' => $product->getId (), 'sku' => $product->getSku (), 'name' => $product->getName (), 'news_from_date' => $product->getNewsFromDate (), 'news_to_date' => $product->getNewsToDate (), 'special_from_date' => $product->getSpecialFromDate (), 'special_to_date' => $product->getSpecialToDate (), 'image_url' => $product->getImageUrl (), 'url_key' => $product->getProductUrl (), 'regular_price_with_tax' => number_format ( Mage::helper ( 'directory' )->currencyConvert ( $product->getPrice (), $baseCurrency, $currentCurrency ), 2, '.', '' ), 'final_price_with_tax' => number_format ( Mage::helper ( 'directory' )->currencyConvert ( $product->getSpecialPrice (), $baseCurrency, $currentCurrency ), 2, '.', '' ), 'description' => nl2br ( $product->getDescription () ), 'symbol' => Mage::app ()->getLocale ()->currency ( Mage::app ()->getStore ()->getCurrentCurrencyCode () )->getSymbol () ); echo json_encode ( $productdetail ); } public function getPicListsAction(){ $productId = ( int ) $this->getRequest ()->getParam ( 'product' ); $_product=Mage::getModel ( "catalog/product" )->load ( $productid ); $_images = Mage::getModel('catalog/product')->load($productId)->getMediaGalleryImages(); $images=array(); foreach ($_images as $_image){ $images[]=array('url'=>$_image->getUrl(), 'position'=>$_image->getPosition() ); } echo json_encode($images); } public function gettest(){ $attributes = Mage::getSingleton('eav/config')->getEntityType(Mage_Catalog_Model_Product::ENTITY)->getAttributeCollection(); // Localize attribute label (if you need it) $attributes->addStoreLabel(Mage::app()->getStore()->getId()); // Loop over all attributes foreach ($attributes as $attr) { /* @var $attr Mage_Eav_Model_Entity_Attribute */ // get the store label value $label = $attr->getStoreLabel() ? $attr->getStoreLabel() : $attr->getFrontendLabel(); echo "Attribute: {$label}\n<br>"; // If it is an attribute with predefined values if ($attr->usesSource()) { // Get all option values ans labels $options = $attr->getSource()->getAllOptions(); // Output all option labels and values foreach ($options as $option) { echo " {$option['label']} =========> (Value {$option['value']})\n<br>"; } } else { // Just for clarification of the debug code echo " No select or multiselect attribute\n<br>"; } } }}
|
app/code/local/Mss/Connector/etc/adminhtml.xml
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<config>
|
| 3 |
+
<acl>
|
| 4 |
+
<resources>
|
| 5 |
+
<admin>
|
| 6 |
+
<children>
|
| 7 |
+
<system>
|
| 8 |
+
<children>
|
| 9 |
+
<config>
|
| 10 |
+
<children>
|
| 11 |
+
<mss translate="title" module="connector">
|
| 12 |
+
<title>Magentomobileshop Connector</title>
|
| 13 |
+
<sort_order>1000</sort_order>
|
| 14 |
+
</mss>
|
| 15 |
+
<magentomobileshop_payment translate="title" module="connector">
|
| 16 |
+
<title>Magentomobileshop Payment</title>
|
| 17 |
+
<sort_order>1001</sort_order>
|
| 18 |
+
</magentomobileshop_payment>
|
| 19 |
+
</children>
|
| 20 |
+
</config>
|
| 21 |
+
</children>
|
| 22 |
+
</system>
|
| 23 |
+
</children>
|
| 24 |
+
</admin>
|
| 25 |
+
</resources>
|
| 26 |
+
</acl>
|
| 27 |
+
<menu>
|
| 28 |
+
<connector module="connector" translate="title">
|
| 29 |
+
<title> MagentoMobileShop</title>
|
| 30 |
+
<sort_order>100</sort_order>
|
| 31 |
+
<children>
|
| 32 |
+
|
| 33 |
+
<configuration module="connector" translate="title">
|
| 34 |
+
<title>Configuration</title>
|
| 35 |
+
<sort_order>1</sort_order>
|
| 36 |
+
<action>adminhtml/system_config/edit/section/mss/</action>
|
| 37 |
+
</configuration>
|
| 38 |
+
|
| 39 |
+
|
| 40 |
+
</children>
|
| 41 |
+
</connector>
|
| 42 |
+
</menu>
|
| 43 |
+
</config>
|
app/code/local/Mss/Connector/etc/config.xml
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<config>
|
| 3 |
+
<modules>
|
| 4 |
+
<Mss_Connector>
|
| 5 |
+
<version>1.4.5</version>
|
| 6 |
+
</Mss_Connector>
|
| 7 |
+
</modules>
|
| 8 |
+
<frontend>
|
| 9 |
+
|
| 10 |
+
<routers>
|
| 11 |
+
<connector>
|
| 12 |
+
<use>standard</use>
|
| 13 |
+
<args>
|
| 14 |
+
<module>Mss_Connector</module>
|
| 15 |
+
<frontName>restapi</frontName>
|
| 16 |
+
</args>
|
| 17 |
+
</connector>
|
| 18 |
+
</routers>
|
| 19 |
+
</frontend>
|
| 20 |
+
<global>
|
| 21 |
+
<models>
|
| 22 |
+
<connector>
|
| 23 |
+
<class>Mss_Connector_Model</class>
|
| 24 |
+
<resourceModel>connector_mysql4</resourceModel>
|
| 25 |
+
</connector>
|
| 26 |
+
<connector_mysql4>
|
| 27 |
+
<class>Mss_Connector_Model_Mysql4</class>
|
| 28 |
+
<entities>
|
| 29 |
+
<connector>
|
| 30 |
+
<table>magentomobilecc</table>
|
| 31 |
+
</connector>
|
| 32 |
+
</entities>
|
| 33 |
+
</connector_mysql4>
|
| 34 |
+
</models>
|
| 35 |
+
<resources>
|
| 36 |
+
<connector_setup>
|
| 37 |
+
<setup>
|
| 38 |
+
<module>Mss_Connector</module>
|
| 39 |
+
|
| 40 |
+
</setup>
|
| 41 |
+
<connection>
|
| 42 |
+
<use>core_setup</use>
|
| 43 |
+
</connection>
|
| 44 |
+
</connector_setup>
|
| 45 |
+
<connector_write>
|
| 46 |
+
<connection>
|
| 47 |
+
<use>core_write</use>
|
| 48 |
+
</connection>
|
| 49 |
+
</connector_write>
|
| 50 |
+
<connector_read>
|
| 51 |
+
<connection>
|
| 52 |
+
<use>core_read</use>
|
| 53 |
+
</connection>
|
| 54 |
+
</connector_read>
|
| 55 |
+
</resources>
|
| 56 |
+
|
| 57 |
+
<helpers>
|
| 58 |
+
<connector>
|
| 59 |
+
<class>Mss_Connector_Helper</class>
|
| 60 |
+
</connector>
|
| 61 |
+
</helpers>
|
| 62 |
+
<blocks>
|
| 63 |
+
<connector>
|
| 64 |
+
<class>Mss_Connector_Block</class>
|
| 65 |
+
</connector>
|
| 66 |
+
</blocks>
|
| 67 |
+
|
| 68 |
+
</global>
|
| 69 |
+
|
| 70 |
+
<adminhtml>
|
| 71 |
+
|
| 72 |
+
<events>
|
| 73 |
+
<controller_action_predispatch>
|
| 74 |
+
<observers>
|
| 75 |
+
<activation_notification>
|
| 76 |
+
<type>singleton</type>
|
| 77 |
+
<class>Mss_Connector_Model_Observer</class>
|
| 78 |
+
<method>notificationMessage</method>
|
| 79 |
+
</activation_notification>
|
| 80 |
+
</observers>
|
| 81 |
+
</controller_action_predispatch>
|
| 82 |
+
</events>
|
| 83 |
+
|
| 84 |
+
|
| 85 |
+
<layout>
|
| 86 |
+
<updates>
|
| 87 |
+
<mss_connector>
|
| 88 |
+
<file>connector.xml</file>
|
| 89 |
+
</mss_connector>
|
| 90 |
+
</updates>
|
| 91 |
+
</layout>
|
| 92 |
+
</adminhtml>
|
| 93 |
+
</config>
|
app/code/local/Mss/Connector/etc/system.xml
ADDED
|
@@ -0,0 +1,427 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
| 2 |
+
<config>
|
| 3 |
+
<tabs>
|
| 4 |
+
<connector translate="label" module="connector">
|
| 5 |
+
<label><![CDATA[<div style="position: fix;"><img id="magentomobileshop_block" src="" alt="" border="0" /></div> <script>$('magentomobileshop_block').src = "http://magentomobileshop.com/wp-content/magentomobiledata/logo.png";</script>]]></label>
|
| 6 |
+
<sort_order>1</sort_order>
|
| 7 |
+
|
| 8 |
+
</connector>
|
| 9 |
+
</tabs>
|
| 10 |
+
<sections>
|
| 11 |
+
<mss translate="label" module="connector">
|
| 12 |
+
<label>General</label>
|
| 13 |
+
<tab>connector</tab>
|
| 14 |
+
<sort_order>1</sort_order>
|
| 15 |
+
<show_in_default>1</show_in_default>
|
| 16 |
+
<show_in_website>1</show_in_website>
|
| 17 |
+
<show_in_store>1</show_in_store>
|
| 18 |
+
<groups>
|
| 19 |
+
<my_aboutus translate="label" module="connector">
|
| 20 |
+
<label>About Magento Mobile</label>
|
| 21 |
+
<frontend_type>text</frontend_type>
|
| 22 |
+
<sort_order>0</sort_order>
|
| 23 |
+
<show_in_default>1</show_in_default>
|
| 24 |
+
<show_in_website>1</show_in_website>
|
| 25 |
+
<show_in_store>1</show_in_store>
|
| 26 |
+
<fields>
|
| 27 |
+
<about>
|
| 28 |
+
|
| 29 |
+
<frontend_model>connector/system_config_about</frontend_model>
|
| 30 |
+
<sort_order>0</sort_order>
|
| 31 |
+
<show_in_default>1</show_in_default>
|
| 32 |
+
<show_in_website>1</show_in_website>
|
| 33 |
+
<show_in_store>1</show_in_store>
|
| 34 |
+
</about>
|
| 35 |
+
</fields>
|
| 36 |
+
</my_aboutus>
|
| 37 |
+
<mss_info_group translate="label" module="connector">
|
| 38 |
+
<label>Contact Information</label>
|
| 39 |
+
<frontend_type>text</frontend_type>
|
| 40 |
+
<sort_order>3</sort_order>
|
| 41 |
+
<show_in_default>1</show_in_default>
|
| 42 |
+
<show_in_website>1</show_in_website>
|
| 43 |
+
<show_in_store>1</show_in_store>
|
| 44 |
+
<fields>
|
| 45 |
+
<store_email translate="label">
|
| 46 |
+
<label>Contact email address </label>
|
| 47 |
+
<frontend_type>text</frontend_type>
|
| 48 |
+
<sort_order>2</sort_order>
|
| 49 |
+
<show_in_default>1</show_in_default>
|
| 50 |
+
<show_in_website>1</show_in_website>
|
| 51 |
+
<show_in_store>1</show_in_store>
|
| 52 |
+
|
| 53 |
+
</store_email>
|
| 54 |
+
<store_phoneno translate="label">
|
| 55 |
+
<label>Phone number: </label>
|
| 56 |
+
<frontend_type>text</frontend_type>
|
| 57 |
+
<sort_order>1</sort_order>
|
| 58 |
+
<show_in_default>1</show_in_default>
|
| 59 |
+
<show_in_website>1</show_in_website>
|
| 60 |
+
<show_in_store>1</show_in_store>
|
| 61 |
+
|
| 62 |
+
</store_phoneno>
|
| 63 |
+
<!-- <store_weburl translate="label">
|
| 64 |
+
<label>Store Website URL: </label>
|
| 65 |
+
<frontend_type>text</frontend_type>
|
| 66 |
+
<sort_order>3</sort_order>
|
| 67 |
+
<show_in_default>1</show_in_default>
|
| 68 |
+
<show_in_website>1</show_in_website>
|
| 69 |
+
<show_in_store>1</show_in_store>
|
| 70 |
+
|
| 71 |
+
</store_weburl> -->
|
| 72 |
+
</fields>
|
| 73 |
+
</mss_info_group>
|
| 74 |
+
<mss_config_group translate="label" module="connector">
|
| 75 |
+
<label>CMS Pages</label>
|
| 76 |
+
<frontend_type>text</frontend_type>
|
| 77 |
+
<sort_order>4</sort_order>
|
| 78 |
+
<show_in_default>1</show_in_default>
|
| 79 |
+
<show_in_website>1</show_in_website>
|
| 80 |
+
<show_in_store>1</show_in_store>
|
| 81 |
+
<fields>
|
| 82 |
+
|
| 83 |
+
<about_us_page translate="label">
|
| 84 |
+
<label>About Us</label>
|
| 85 |
+
<frontend_type>select</frontend_type>
|
| 86 |
+
<sort_order>2</sort_order>
|
| 87 |
+
<show_in_default>1</show_in_default>
|
| 88 |
+
<show_in_website>1</show_in_website>
|
| 89 |
+
<show_in_store>1</show_in_store>
|
| 90 |
+
<source_model>adminhtml/system_config_source_cms_page</source_model>
|
| 91 |
+
</about_us_page>
|
| 92 |
+
<term_condition_page translate="label">
|
| 93 |
+
<label>Term And Condition </label>
|
| 94 |
+
<frontend_type>select</frontend_type>
|
| 95 |
+
<sort_order>3</sort_order>
|
| 96 |
+
<show_in_default>1</show_in_default>
|
| 97 |
+
<show_in_website>1</show_in_website>
|
| 98 |
+
<show_in_store>1</show_in_store>
|
| 99 |
+
<source_model>adminhtml/system_config_source_cms_page</source_model>
|
| 100 |
+
</term_condition_page>
|
| 101 |
+
<privacy_policy_page translate="label">
|
| 102 |
+
<label>Privacy Policy </label>
|
| 103 |
+
<frontend_type>select</frontend_type>
|
| 104 |
+
<sort_order>4</sort_order>
|
| 105 |
+
<show_in_default>1</show_in_default>
|
| 106 |
+
<show_in_website>1</show_in_website>
|
| 107 |
+
<show_in_store>1</show_in_store>
|
| 108 |
+
<source_model>adminhtml/system_config_source_cms_page</source_model>
|
| 109 |
+
</privacy_policy_page>
|
| 110 |
+
<return_privacy_policy_page translate="label">
|
| 111 |
+
<label>Return Policy </label>
|
| 112 |
+
<frontend_type>select</frontend_type>
|
| 113 |
+
<sort_order>5</sort_order>
|
| 114 |
+
<show_in_default>1</show_in_default>
|
| 115 |
+
<show_in_website>1</show_in_website>
|
| 116 |
+
<show_in_store>1</show_in_store>
|
| 117 |
+
<source_model>adminhtml/system_config_source_cms_page</source_model>
|
| 118 |
+
</return_privacy_policy_page>
|
| 119 |
+
</fields>
|
| 120 |
+
</mss_config_group>
|
| 121 |
+
|
| 122 |
+
|
| 123 |
+
|
| 124 |
+
</groups>
|
| 125 |
+
|
| 126 |
+
</mss>
|
| 127 |
+
<magentomobileshop_payment translate="label" module="connector">
|
| 128 |
+
<label>Payment Methods</label>
|
| 129 |
+
<tab>connector</tab>
|
| 130 |
+
<sort_order>1</sort_order>
|
| 131 |
+
<show_in_default>1</show_in_default>
|
| 132 |
+
<show_in_website>1</show_in_website>
|
| 133 |
+
<show_in_store>1</show_in_store>
|
| 134 |
+
<groups>
|
| 135 |
+
<about_us translate="label" module="connector">
|
| 136 |
+
<label>About Us</label>
|
| 137 |
+
<frontend_type>text</frontend_type>
|
| 138 |
+
<sort_order>1</sort_order>
|
| 139 |
+
<show_in_default>1</show_in_default>
|
| 140 |
+
<show_in_website>1</show_in_website>
|
| 141 |
+
<show_in_store>1</show_in_store>
|
| 142 |
+
<fields>
|
| 143 |
+
<about>
|
| 144 |
+
|
| 145 |
+
<frontend_model>connector/system_config_about</frontend_model>
|
| 146 |
+
<sort_order>0</sort_order>
|
| 147 |
+
<show_in_default>1</show_in_default>
|
| 148 |
+
<show_in_website>1</show_in_website>
|
| 149 |
+
<show_in_store>1</show_in_store>
|
| 150 |
+
</about>
|
| 151 |
+
</fields>
|
| 152 |
+
</about_us>
|
| 153 |
+
</groups>
|
| 154 |
+
<!-- <groups>
|
| 155 |
+
<ccsave translate="label" module="connector">
|
| 156 |
+
<label>Saved CC</label>
|
| 157 |
+
<frontend_type>text</frontend_type>
|
| 158 |
+
<sort_order>2</sort_order>
|
| 159 |
+
<show_in_default>1</show_in_default>
|
| 160 |
+
<show_in_website>1</show_in_website>
|
| 161 |
+
<show_in_store>1</show_in_store>
|
| 162 |
+
<fields>
|
| 163 |
+
<ccsave_status>
|
| 164 |
+
|
| 165 |
+
<label>Enable/Disable</label>
|
| 166 |
+
<frontend_type>select</frontend_type>
|
| 167 |
+
<source_model>adminhtml/system_config_source_enabledisable</source_model>
|
| 168 |
+
<sort_order>1</sort_order>
|
| 169 |
+
<show_in_default>1</show_in_default>
|
| 170 |
+
<show_in_website>1</show_in_website>
|
| 171 |
+
<show_in_store>1</show_in_store>
|
| 172 |
+
<comment>(Enable/Disable payment method for App Only.)</comment>
|
| 173 |
+
</ccsave_status>
|
| 174 |
+
</fields>
|
| 175 |
+
</ccsave>
|
| 176 |
+
</groups> -->
|
| 177 |
+
<groups>
|
| 178 |
+
<banktransfer translate="label" module="connector">
|
| 179 |
+
<label>Bank Transfer Payment</label>
|
| 180 |
+
<frontend_type>text</frontend_type>
|
| 181 |
+
<sort_order>3</sort_order>
|
| 182 |
+
<show_in_default>1</show_in_default>
|
| 183 |
+
<show_in_website>1</show_in_website>
|
| 184 |
+
<show_in_store>1</show_in_store>
|
| 185 |
+
<fields>
|
| 186 |
+
<banktransfer_message>
|
| 187 |
+
|
| 188 |
+
<frontend_model>connector/system_config_banktransfer</frontend_model>
|
| 189 |
+
<sort_order>0</sort_order>
|
| 190 |
+
<show_in_default>1</show_in_default>
|
| 191 |
+
<show_in_website>1</show_in_website>
|
| 192 |
+
<show_in_store>1</show_in_store>
|
| 193 |
+
</banktransfer_message>
|
| 194 |
+
<banktransfer_status>
|
| 195 |
+
|
| 196 |
+
<label>Enable/Disable</label>
|
| 197 |
+
<frontend_type>select</frontend_type>
|
| 198 |
+
<source_model>adminhtml/system_config_source_enabledisable</source_model>
|
| 199 |
+
<sort_order>1</sort_order>
|
| 200 |
+
<show_in_default>1</show_in_default>
|
| 201 |
+
<show_in_website>1</show_in_website>
|
| 202 |
+
<show_in_store>1</show_in_store>
|
| 203 |
+
<comment>(Enable/Disable payment method for App Only.)</comment>
|
| 204 |
+
</banktransfer_status>
|
| 205 |
+
</fields>
|
| 206 |
+
</banktransfer>
|
| 207 |
+
</groups>
|
| 208 |
+
<groups>
|
| 209 |
+
<checkmo translate="label" module="connector">
|
| 210 |
+
<label>Check / Money Order</label>
|
| 211 |
+
<frontend_type>text</frontend_type>
|
| 212 |
+
<sort_order>4</sort_order>
|
| 213 |
+
<show_in_default>1</show_in_default>
|
| 214 |
+
<show_in_website>1</show_in_website>
|
| 215 |
+
<show_in_store>1</show_in_store>
|
| 216 |
+
<fields>
|
| 217 |
+
<checkmo_message>
|
| 218 |
+
|
| 219 |
+
<frontend_model>connector/system_config_checkmo</frontend_model>
|
| 220 |
+
<sort_order>0</sort_order>
|
| 221 |
+
<show_in_default>1</show_in_default>
|
| 222 |
+
<show_in_website>1</show_in_website>
|
| 223 |
+
<show_in_store>1</show_in_store>
|
| 224 |
+
</checkmo_message>
|
| 225 |
+
<checkmo_status>
|
| 226 |
+
|
| 227 |
+
<label>Enable/Disable</label>
|
| 228 |
+
<frontend_type>select</frontend_type>
|
| 229 |
+
<source_model>adminhtml/system_config_source_enabledisable</source_model>
|
| 230 |
+
<sort_order>1</sort_order>
|
| 231 |
+
<show_in_default>1</show_in_default>
|
| 232 |
+
<show_in_website>1</show_in_website>
|
| 233 |
+
<show_in_store>1</show_in_store>
|
| 234 |
+
<comment>(Enable/Disable payment method for App Only.)</comment>
|
| 235 |
+
</checkmo_status>
|
| 236 |
+
</fields>
|
| 237 |
+
</checkmo>
|
| 238 |
+
</groups>
|
| 239 |
+
<groups>
|
| 240 |
+
<authorizenet translate="label" module="connector">
|
| 241 |
+
<label>Authorize.net</label>
|
| 242 |
+
<frontend_type>text</frontend_type>
|
| 243 |
+
<sort_order>5</sort_order>
|
| 244 |
+
<show_in_default>1</show_in_default>
|
| 245 |
+
<show_in_website>1</show_in_website>
|
| 246 |
+
<show_in_store>1</show_in_store>
|
| 247 |
+
<fields>
|
| 248 |
+
<authorizenet_message>
|
| 249 |
+
|
| 250 |
+
<frontend_model>connector/system_config_authorizenet</frontend_model>
|
| 251 |
+
<sort_order>0</sort_order>
|
| 252 |
+
<show_in_default>1</show_in_default>
|
| 253 |
+
<show_in_website>1</show_in_website>
|
| 254 |
+
<show_in_store>1</show_in_store>
|
| 255 |
+
</authorizenet_message>
|
| 256 |
+
<authorizenet_status>
|
| 257 |
+
|
| 258 |
+
<label>Enable/Disable</label>
|
| 259 |
+
<frontend_type>select</frontend_type>
|
| 260 |
+
<source_model>adminhtml/system_config_source_enabledisable</source_model>
|
| 261 |
+
<sort_order>1</sort_order>
|
| 262 |
+
<show_in_default>1</show_in_default>
|
| 263 |
+
<show_in_website>1</show_in_website>
|
| 264 |
+
<show_in_store>1</show_in_store>
|
| 265 |
+
<comment>(Enable/Disable payment method for App Only.)</comment>
|
| 266 |
+
</authorizenet_status>
|
| 267 |
+
</fields>
|
| 268 |
+
</authorizenet>
|
| 269 |
+
</groups>
|
| 270 |
+
<groups>
|
| 271 |
+
<cashondelivery translate="label" module="connector">
|
| 272 |
+
<label>Cash On Delivery Payment</label>
|
| 273 |
+
<frontend_type>text</frontend_type>
|
| 274 |
+
<sort_order>6</sort_order>
|
| 275 |
+
<show_in_default>1</show_in_default>
|
| 276 |
+
<show_in_website>1</show_in_website>
|
| 277 |
+
<show_in_store>1</show_in_store>
|
| 278 |
+
<fields>
|
| 279 |
+
<cashondelivery_message>
|
| 280 |
+
|
| 281 |
+
<frontend_model>connector/system_config_cod</frontend_model>
|
| 282 |
+
<sort_order>0</sort_order>
|
| 283 |
+
<show_in_default>1</show_in_default>
|
| 284 |
+
<show_in_website>1</show_in_website>
|
| 285 |
+
<show_in_store>1</show_in_store>
|
| 286 |
+
</cashondelivery_message>
|
| 287 |
+
<cashondelivery_status>
|
| 288 |
+
|
| 289 |
+
<label>Enable/Disable</label>
|
| 290 |
+
<frontend_type>select</frontend_type>
|
| 291 |
+
<source_model>adminhtml/system_config_source_enabledisable</source_model>
|
| 292 |
+
<sort_order>1</sort_order>
|
| 293 |
+
<show_in_default>1</show_in_default>
|
| 294 |
+
<show_in_website>1</show_in_website>
|
| 295 |
+
<show_in_store>1</show_in_store>
|
| 296 |
+
<comment>(Enable/Disable payment method for App Only.)</comment>
|
| 297 |
+
</cashondelivery_status>
|
| 298 |
+
</fields>
|
| 299 |
+
</cashondelivery>
|
| 300 |
+
</groups>
|
| 301 |
+
<groups>
|
| 302 |
+
<payucheckout_shared translate="label" module="connector">
|
| 303 |
+
<label>Payu</label>
|
| 304 |
+
<frontend_type>text</frontend_type>
|
| 305 |
+
<sort_order>7</sort_order>
|
| 306 |
+
<show_in_default>1</show_in_default>
|
| 307 |
+
<show_in_website>1</show_in_website>
|
| 308 |
+
<show_in_store>1</show_in_store>
|
| 309 |
+
<fields>
|
| 310 |
+
<payu_message>
|
| 311 |
+
|
| 312 |
+
<frontend_model>connector/system_config_payu</frontend_model>
|
| 313 |
+
<sort_order>0</sort_order>
|
| 314 |
+
<show_in_default>1</show_in_default>
|
| 315 |
+
<show_in_website>1</show_in_website>
|
| 316 |
+
<show_in_store>1</show_in_store>
|
| 317 |
+
</payu_message>
|
| 318 |
+
<payucheckout_shared_status>
|
| 319 |
+
|
| 320 |
+
<label>Enable/Disable</label>
|
| 321 |
+
<frontend_type>select</frontend_type>
|
| 322 |
+
<source_model>adminhtml/system_config_source_enabledisable</source_model>
|
| 323 |
+
<sort_order>1</sort_order>
|
| 324 |
+
<show_in_default>1</show_in_default>
|
| 325 |
+
<show_in_website>1</show_in_website>
|
| 326 |
+
<show_in_store>1</show_in_store>
|
| 327 |
+
<comment>(Enable/Disable payment method for App Only.)</comment>
|
| 328 |
+
</payucheckout_shared_status>
|
| 329 |
+
<!-- <payu_title>
|
| 330 |
+
|
| 331 |
+
<label>Title</label>
|
| 332 |
+
<frontend_type>text</frontend_type>
|
| 333 |
+
<sort_order>2</sort_order>
|
| 334 |
+
<show_in_default>1</show_in_default>
|
| 335 |
+
<show_in_website>1</show_in_website>
|
| 336 |
+
<show_in_store>1</show_in_store>
|
| 337 |
+
<comment> This is what the customers will see as the name of the payment option</comment>
|
| 338 |
+
</payu_title> -->
|
| 339 |
+
<payu_key>
|
| 340 |
+
|
| 341 |
+
<label>Merchant Id</label>
|
| 342 |
+
<frontend_type>text</frontend_type>
|
| 343 |
+
<sort_order>3</sort_order>
|
| 344 |
+
<show_in_default>1</show_in_default>
|
| 345 |
+
<show_in_website>1</show_in_website>
|
| 346 |
+
<show_in_store>1</show_in_store>
|
| 347 |
+
<comment>Enter the merchant key provided by PayUMoney here.</comment>
|
| 348 |
+
</payu_key>
|
| 349 |
+
<payu_salt>
|
| 350 |
+
<label>Salt</label>
|
| 351 |
+
<frontend_type>text</frontend_type>
|
| 352 |
+
<sort_order>4</sort_order>
|
| 353 |
+
<show_in_default>1</show_in_default>
|
| 354 |
+
<show_in_website>1</show_in_website>
|
| 355 |
+
<show_in_store>1</show_in_store>
|
| 356 |
+
<comment>Enter the salt provided by PayUMoney here.</comment>
|
| 357 |
+
</payu_salt>
|
| 358 |
+
<payu_mode>
|
| 359 |
+
<label>Transaction Mode Production</label>
|
| 360 |
+
<frontend_type>select</frontend_type>
|
| 361 |
+
<source_model>adminhtml/system_config_source_enabledisable</source_model>
|
| 362 |
+
<sort_order>5</sort_order>
|
| 363 |
+
<show_in_default>1</show_in_default>
|
| 364 |
+
<show_in_website>1</show_in_website>
|
| 365 |
+
<show_in_store>1</show_in_store>
|
| 366 |
+
|
| 367 |
+
</payu_mode>
|
| 368 |
+
</fields>
|
| 369 |
+
</payucheckout_shared>
|
| 370 |
+
</groups>
|
| 371 |
+
<groups>
|
| 372 |
+
<mpaypal translate="label" module="connector">
|
| 373 |
+
<label>PayPal (app)</label>
|
| 374 |
+
<frontend_type>text</frontend_type>
|
| 375 |
+
<sort_order>8</sort_order>
|
| 376 |
+
<show_in_default>1</show_in_default>
|
| 377 |
+
<show_in_website>1</show_in_website>
|
| 378 |
+
<show_in_store>1</show_in_store>
|
| 379 |
+
<fields>
|
| 380 |
+
<mpaypal_message>
|
| 381 |
+
|
| 382 |
+
<frontend_model>connector/system_config_mpaypal</frontend_model>
|
| 383 |
+
<sort_order>0</sort_order>
|
| 384 |
+
<show_in_default>1</show_in_default>
|
| 385 |
+
<show_in_website>1</show_in_website>
|
| 386 |
+
<show_in_store>1</show_in_store>
|
| 387 |
+
</mpaypal_message>
|
| 388 |
+
<mpaypal_status>
|
| 389 |
+
|
| 390 |
+
<label>Enable/Disable</label>
|
| 391 |
+
<frontend_type>select</frontend_type>
|
| 392 |
+
<source_model>adminhtml/system_config_source_enabledisable</source_model>
|
| 393 |
+
<sort_order>1</sort_order>
|
| 394 |
+
<show_in_default>1</show_in_default>
|
| 395 |
+
<show_in_website>1</show_in_website>
|
| 396 |
+
<show_in_store>1</show_in_store>
|
| 397 |
+
<comment>(Enable/Disable payment method for App Only.)</comment>
|
| 398 |
+
</mpaypal_status>
|
| 399 |
+
|
| 400 |
+
<mpaypal_email>
|
| 401 |
+
|
| 402 |
+
<label>Merchant Email</label>
|
| 403 |
+
<frontend_type>text</frontend_type>
|
| 404 |
+
<sort_order>3</sort_order>
|
| 405 |
+
<show_in_default>1</show_in_default>
|
| 406 |
+
<show_in_website>1</show_in_website>
|
| 407 |
+
<show_in_store>1</show_in_store>
|
| 408 |
+
<comment>Merchant Email Id.</comment>
|
| 409 |
+
</mpaypal_email>
|
| 410 |
+
|
| 411 |
+
<mpaypal_mode>
|
| 412 |
+
<label>Transaction Mode Production</label>
|
| 413 |
+
<frontend_type>select</frontend_type>
|
| 414 |
+
<source_model>adminhtml/system_config_source_enabledisable</source_model>
|
| 415 |
+
<sort_order>5</sort_order>
|
| 416 |
+
<show_in_default>1</show_in_default>
|
| 417 |
+
<show_in_website>1</show_in_website>
|
| 418 |
+
<show_in_store>1</show_in_store>
|
| 419 |
+
|
| 420 |
+
</mpaypal_mode>
|
| 421 |
+
</fields>
|
| 422 |
+
</mpaypal>
|
| 423 |
+
</groups>
|
| 424 |
+
</magentomobileshop_payment>
|
| 425 |
+
</sections>
|
| 426 |
+
|
| 427 |
+
</config>
|
app/code/local/Mss/Connector/sql/connector_setup/mysql4-install-0.1.0.php
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
$installer = $this;
|
| 3 |
+
|
| 4 |
+
$installer->startSetup();
|
| 5 |
+
|
| 6 |
+
/*Create table script*/
|
| 7 |
+
|
| 8 |
+
$installer->run("DROP TABLE IF EXISTS {$this->getTable('magentomobilecc')};
|
| 9 |
+
CREATE TABLE {$this->getTable('magentomobilecc')} (
|
| 10 |
+
`id` int(11) unsigned NOT NULL auto_increment,
|
| 11 |
+
`user_id` int(11),
|
| 12 |
+
`cc_number` varchar(50),
|
| 13 |
+
`cc_last4` varchar(50),
|
| 14 |
+
`cc_type` varchar(10),
|
| 15 |
+
`cc_exp_month` varchar(10),
|
| 16 |
+
`cc_exp_year` varchar(10),
|
| 17 |
+
PRIMARY KEY (`id`)
|
| 18 |
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
| 19 |
+
");
|
| 20 |
+
$installer->endSetup();
|
| 21 |
+
|
app/code/local/Mss/Connector/sql/connector_setup/mysql4-upgrade-0.1.0-0.1.1.php
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
$installer = Mage::getResourceModel('sales/setup', 'sales_setup');
|
| 4 |
+
|
| 5 |
+
$installer->startSetup();
|
| 6 |
+
|
| 7 |
+
|
| 8 |
+
$attribute = array(
|
| 9 |
+
'type' => 'text',
|
| 10 |
+
'backend_type' => 'text',
|
| 11 |
+
'frontend_input' => 'text',
|
| 12 |
+
'is_user_defined' => true,
|
| 13 |
+
'label' => 'mms_order_type',
|
| 14 |
+
'visible' => true,
|
| 15 |
+
'required' => false,
|
| 16 |
+
'user_defined' => false,
|
| 17 |
+
'searchable' => false,
|
| 18 |
+
'filterable' => false,
|
| 19 |
+
'comparable' => false,
|
| 20 |
+
'default' => ''
|
| 21 |
+
);
|
| 22 |
+
$installer->addAttribute("order", "mms_order_type",$attribute);
|
| 23 |
+
$installer->addAttribute("quote", "mms_order_type",$attribute);
|
| 24 |
+
|
| 25 |
+
$installer->endSetup();
|
| 26 |
+
|
app/code/local/Mss/Mpaypal/Helper/Data.php
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
class Mss_Mpaypal_Helper_Data extends Mage_Core_Helper_Abstract
|
| 3 |
+
{
|
| 4 |
+
}
|
| 5 |
+
|
app/code/local/Mss/Mpaypal/Model/Mpaypal.php
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class Mss_Mpaypal_Model_Mpaypal extends Mage_Payment_Model_Method_Abstract
|
| 4 |
+
{
|
| 5 |
+
|
| 6 |
+
protected $_code = 'mpaypal';
|
| 7 |
+
|
| 8 |
+
}
|
app/code/local/Mss/Mpaypal/Model/Observer.php
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class Mss_Mpaypal_Model_Observer {
|
| 4 |
+
|
| 5 |
+
public function paymentMethodIsActive(Varien_Event_Observer $observer) {
|
| 6 |
+
$event = $observer->getEvent();
|
| 7 |
+
$method = $event->getMethodInstance();
|
| 8 |
+
$result = $event->getResult();
|
| 9 |
+
|
| 10 |
+
$quote=Mage::getSingleton ( 'checkout/session' )->getQuote();
|
| 11 |
+
if($method->getCode() == 'mpaypal'):
|
| 12 |
+
if($quote->getMms_order_type() == 'app')
|
| 13 |
+
$result->isAvailable = true;
|
| 14 |
+
else
|
| 15 |
+
$result->isAvailable = false;
|
| 16 |
+
|
| 17 |
+
endif;
|
| 18 |
+
return true;
|
| 19 |
+
}
|
| 20 |
+
|
| 21 |
+
}
|
app/code/local/Mss/Mpaypal/controllers/IndexController.php
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
class Mss_Mpaypal_IndexController extends Mage_Core_Controller_Front_Action{
|
| 3 |
+
|
| 4 |
+
public function _construct(){
|
| 5 |
+
|
| 6 |
+
|
| 7 |
+
parent::_construct();
|
| 8 |
+
|
| 9 |
+
}
|
| 10 |
+
/*
|
| 11 |
+
public function IndexAction() {
|
| 12 |
+
|
| 13 |
+
$this->loadLayout();
|
| 14 |
+
$this->renderLayout();
|
| 15 |
+
|
| 16 |
+
}
|
| 17 |
+
*/
|
| 18 |
+
public function PaypalAction() {
|
| 19 |
+
|
| 20 |
+
echo $block = $this->getLayout()->createBlock('core/template')->setTemplate('mpaypal/index.phtml')->toHtml();
|
| 21 |
+
|
| 22 |
+
}
|
| 23 |
+
|
| 24 |
+
public function successAction(){
|
| 25 |
+
|
| 26 |
+
$result = $this->getRequest()->getParams();
|
| 27 |
+
|
| 28 |
+
if($result):
|
| 29 |
+
$orderIncrementId = $result['item_name'];
|
| 30 |
+
|
| 31 |
+
$order = Mage::getModel('sales/order')->loadByIncrementId($orderIncrementId);
|
| 32 |
+
$order->addStatusToHistory(Mage_Sales_Model_Order::STATE_COMPLETE);
|
| 33 |
+
|
| 34 |
+
|
| 35 |
+
if($order->getId()):
|
| 36 |
+
$payment = $order->getPayment();
|
| 37 |
+
$payment->setTransactionId($result['txn_id'])
|
| 38 |
+
->setCurrencyCode()
|
| 39 |
+
->setPreparedMessage("Payment Done")
|
| 40 |
+
->setShouldCloseParentTransaction(true)
|
| 41 |
+
->setIsTransactionClosed(1)
|
| 42 |
+
->registerCaptureNotification();
|
| 43 |
+
|
| 44 |
+
endif;
|
| 45 |
+
|
| 46 |
+
$order->save();
|
| 47 |
+
|
| 48 |
+
|
| 49 |
+
echo "Thank You !";
|
| 50 |
+
else:
|
| 51 |
+
echo "No data found";
|
| 52 |
+
endif;
|
| 53 |
+
|
| 54 |
+
}
|
| 55 |
+
public function failureAction(){
|
| 56 |
+
|
| 57 |
+
$result = $this->getRequest()->getParams();
|
| 58 |
+
|
| 59 |
+
if($result):
|
| 60 |
+
$orderIncrementId = $result['productinfo'];
|
| 61 |
+
$order = Mage::getModel('sales/order')->loadByIncrementId($orderIncrementId);
|
| 62 |
+
$order->addStatusToHistory(Mage_Sales_Model_Order::STATE_CANCELED);
|
| 63 |
+
if($order->getId()):
|
| 64 |
+
$payment = $order->getPayment();
|
| 65 |
+
$payment->setTransactionId($result['txnid'])
|
| 66 |
+
->setCurrencyCode()
|
| 67 |
+
->setPreparedMessage("Payment Error")
|
| 68 |
+
->setShouldCloseParentTransaction(true)
|
| 69 |
+
->setIsTransactionClosed(1)
|
| 70 |
+
->registerCaptureNotification();
|
| 71 |
+
|
| 72 |
+
endif;
|
| 73 |
+
|
| 74 |
+
$order->save();
|
| 75 |
+
|
| 76 |
+
echo "Found Some Problem! Try Again";
|
| 77 |
+
else:
|
| 78 |
+
echo "Found Some Problem! Try Again";
|
| 79 |
+
endif;
|
| 80 |
+
|
| 81 |
+
|
| 82 |
+
}
|
| 83 |
+
|
| 84 |
+
/* public function validate_ipn($paypal_url, $postdata)
|
| 85 |
+
{
|
| 86 |
+
$ipn_response;
|
| 87 |
+
$log_ipn_results;
|
| 88 |
+
// parse the paypal URL
|
| 89 |
+
$url_parsed=parse_url($paypal_url);
|
| 90 |
+
$post_string = '';
|
| 91 |
+
|
| 92 |
+
foreach ($postdata as $field=>$value):
|
| 93 |
+
$ipn_data["$field"] = $value;
|
| 94 |
+
$post_string .= $field.'='.urlencode(stripslashes($value)).'&';
|
| 95 |
+
endforeach;
|
| 96 |
+
|
| 97 |
+
$post_string.="cmd=_notify-validate"; // append ipn command
|
| 98 |
+
$fp = fsockopen("ssl://" . $url_parsed['host'],"443",$err_num,$err_str,30);
|
| 99 |
+
if(!$fp) {
|
| 100 |
+
$last_error = "fsockopen error no. $errnum: $errstr";
|
| 101 |
+
return false;
|
| 102 |
+
}
|
| 103 |
+
else {
|
| 104 |
+
fputs($fp, "POST $url_parsed[path] HTTP/1.1\r\n");
|
| 105 |
+
fputs($fp, "Host: $url_parsed[host]\r\n");
|
| 106 |
+
fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
|
| 107 |
+
fputs($fp, "Content-length: ".strlen($post_string)."\r\n");
|
| 108 |
+
fputs($fp, "Connection: close\r\n\r\n");
|
| 109 |
+
fputs($fp, $post_string . "\r\n\r\n");
|
| 110 |
+
while(!feof($fp)) {
|
| 111 |
+
$ipn_response .= fgets($fp, 1024);
|
| 112 |
+
}
|
| 113 |
+
fclose($fp); // close connection
|
| 114 |
+
}
|
| 115 |
+
|
| 116 |
+
if (eregi("VERIFIED",$ipn_response)):
|
| 117 |
+
return true;
|
| 118 |
+
|
| 119 |
+
else
|
| 120 |
+
return false;
|
| 121 |
+
|
| 122 |
+
|
| 123 |
+
}*/
|
| 124 |
+
|
| 125 |
+
|
| 126 |
+
}
|
app/code/local/Mss/Mpaypal/etc/config.xml
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<config>
|
| 3 |
+
<modules>
|
| 4 |
+
<Mss_Mpaypal>
|
| 5 |
+
<version>0.1.0</version>
|
| 6 |
+
</Mss_Mpaypal>
|
| 7 |
+
</modules>
|
| 8 |
+
<frontend>
|
| 9 |
+
<routers>
|
| 10 |
+
<mpaypal>
|
| 11 |
+
<use>standard</use>
|
| 12 |
+
<args>
|
| 13 |
+
<module>Mss_Mpaypal</module>
|
| 14 |
+
<frontName>mpaypal</frontName>
|
| 15 |
+
</args>
|
| 16 |
+
</mpaypal>
|
| 17 |
+
</routers>
|
| 18 |
+
<layout>
|
| 19 |
+
<updates>
|
| 20 |
+
<mpaypal>
|
| 21 |
+
<file>mpaypal.xml</file>
|
| 22 |
+
</mpaypal>
|
| 23 |
+
</updates>
|
| 24 |
+
</layout>
|
| 25 |
+
|
| 26 |
+
<events>
|
| 27 |
+
<payment_method_is_active>
|
| 28 |
+
<observers>
|
| 29 |
+
<mpaypal_payment_method_is_active>
|
| 30 |
+
<type>singleton</type>
|
| 31 |
+
<class>mpaypal/observer</class>
|
| 32 |
+
<method>paymentMethodIsActive</method>
|
| 33 |
+
</mpaypal_payment_method_is_active>
|
| 34 |
+
</observers>
|
| 35 |
+
</payment_method_is_active>
|
| 36 |
+
</events>
|
| 37 |
+
|
| 38 |
+
</frontend>
|
| 39 |
+
<global>
|
| 40 |
+
<models>
|
| 41 |
+
<mpaypal>
|
| 42 |
+
<class>Mss_Mpaypal_Model</class>
|
| 43 |
+
</mpaypal>
|
| 44 |
+
</models>
|
| 45 |
+
<helpers>
|
| 46 |
+
<mpaypal>
|
| 47 |
+
<class>Mss_Mpaypal_Helper</class>
|
| 48 |
+
</mpaypal>
|
| 49 |
+
</helpers>
|
| 50 |
+
<blocks>
|
| 51 |
+
<mpaypal>
|
| 52 |
+
<class>Mss_Mpaypal_Block</class>
|
| 53 |
+
</mpaypal>
|
| 54 |
+
</blocks>
|
| 55 |
+
</global>
|
| 56 |
+
|
| 57 |
+
<default>
|
| 58 |
+
<payment>
|
| 59 |
+
<mpaypal>
|
| 60 |
+
|
| 61 |
+
<active>1</active>
|
| 62 |
+
<order_status>pending</order_status>
|
| 63 |
+
<title>Paypal (app)</title>
|
| 64 |
+
|
| 65 |
+
<model>mpaypal/mpaypal</model>
|
| 66 |
+
|
| 67 |
+
</mpaypal>
|
| 68 |
+
</payment>
|
| 69 |
+
</default>
|
| 70 |
+
</config>
|
app/code/local/Mss/Mpaypal/etc/system.xml
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<config>
|
| 3 |
+
<sections>
|
| 4 |
+
<payment>
|
| 5 |
+
<groups>
|
| 6 |
+
<mpaypal translate="label comment" module="mpaypal">
|
| 7 |
+
<label>Paypal Payment for Mobile App</label>
|
| 8 |
+
<frontend_type>text</frontend_type>
|
| 9 |
+
<sort_order>10</sort_order>
|
| 10 |
+
<show_in_default>1</show_in_default>
|
| 11 |
+
<show_in_website>1</show_in_website>
|
| 12 |
+
<show_in_store>1</show_in_store>
|
| 13 |
+
<fields>
|
| 14 |
+
<active translate="label">
|
| 15 |
+
<label>Enabled</label>
|
| 16 |
+
<frontend_type>select</frontend_type>
|
| 17 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
| 18 |
+
<sort_order>10</sort_order>
|
| 19 |
+
<show_in_default>1</show_in_default>
|
| 20 |
+
<show_in_website>1</show_in_website>
|
| 21 |
+
<show_in_store>0</show_in_store>
|
| 22 |
+
</active>
|
| 23 |
+
<title translate="label">
|
| 24 |
+
<label>Title</label>
|
| 25 |
+
<frontend_type>text</frontend_type>
|
| 26 |
+
<sort_order>20</sort_order>
|
| 27 |
+
<show_in_default>1</show_in_default>
|
| 28 |
+
<show_in_website>1</show_in_website>
|
| 29 |
+
<show_in_store>1</show_in_store>
|
| 30 |
+
</title>
|
| 31 |
+
<order_status translate="label">
|
| 32 |
+
<label>New Order Status</label>
|
| 33 |
+
<frontend_type>select</frontend_type>
|
| 34 |
+
<source_model>adminhtml/system_config_source_order_status</source_model>
|
| 35 |
+
<sort_order>50</sort_order>
|
| 36 |
+
<show_in_default>1</show_in_default>
|
| 37 |
+
<show_in_website>1</show_in_website>
|
| 38 |
+
<show_in_store>0</show_in_store>
|
| 39 |
+
</order_status>
|
| 40 |
+
|
| 41 |
+
</fields>
|
| 42 |
+
</mpaypal>
|
| 43 |
+
</groups>
|
| 44 |
+
</payment>
|
| 45 |
+
</sections>
|
| 46 |
+
</config>
|
app/code/local/Mss/Payu/Block/Index.php
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
class Mss_Payu_Block_Index extends Mage_Core_Block_Template{
|
| 3 |
+
|
| 4 |
+
function getdata(){
|
| 5 |
+
return "hello";
|
| 6 |
+
}
|
| 7 |
+
|
| 8 |
+
|
| 9 |
+
|
| 10 |
+
}
|
app/code/local/Mss/Payu/Helper/Data.php
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
class Mss_Payu_Helper_Data extends Mage_Core_Helper_Abstract
|
| 3 |
+
{
|
| 4 |
+
}
|
| 5 |
+
|
app/code/local/Mss/Payu/controllers/IndexController.php
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
class Mss_Payu_IndexController extends Mage_Core_Controller_Front_Action{
|
| 3 |
+
|
| 4 |
+
public function _construct(){
|
| 5 |
+
|
| 6 |
+
|
| 7 |
+
parent::_construct();
|
| 8 |
+
|
| 9 |
+
}
|
| 10 |
+
|
| 11 |
+
public function IndexAction() {
|
| 12 |
+
|
| 13 |
+
$this->loadLayout();
|
| 14 |
+
$this->renderLayout();
|
| 15 |
+
|
| 16 |
+
}
|
| 17 |
+
|
| 18 |
+
public function payuAction() {
|
| 19 |
+
|
| 20 |
+
echo $block = $this->getLayout()->createBlock('core/template')->setTemplate('payu/index.phtml')->toHtml();
|
| 21 |
+
|
| 22 |
+
}
|
| 23 |
+
|
| 24 |
+
public function successAction(){
|
| 25 |
+
|
| 26 |
+
$result = $this->getRequest()->getParams();
|
| 27 |
+
|
| 28 |
+
if($result):
|
| 29 |
+
$orderIncrementId = $result['productinfo'];
|
| 30 |
+
|
| 31 |
+
$order = Mage::getModel('sales/order')->loadByIncrementId($orderIncrementId);
|
| 32 |
+
$order->addStatusToHistory(Mage_Sales_Model_Order::STATE_COMPLETE);
|
| 33 |
+
|
| 34 |
+
|
| 35 |
+
if($order->getId()):
|
| 36 |
+
$payment = $order->getPayment();
|
| 37 |
+
$payment->setTransactionId($result['txnid'])
|
| 38 |
+
->setCurrencyCode()
|
| 39 |
+
->setPreparedMessage("Payment Done")
|
| 40 |
+
->setShouldCloseParentTransaction(true)
|
| 41 |
+
->setIsTransactionClosed(1)
|
| 42 |
+
->registerCaptureNotification();
|
| 43 |
+
|
| 44 |
+
endif;
|
| 45 |
+
|
| 46 |
+
$order->save();
|
| 47 |
+
|
| 48 |
+
|
| 49 |
+
echo "Thank You !";
|
| 50 |
+
else:
|
| 51 |
+
echo "No data found";
|
| 52 |
+
endif;
|
| 53 |
+
|
| 54 |
+
}
|
| 55 |
+
public function failureAction(){
|
| 56 |
+
|
| 57 |
+
$result = $this->getRequest()->getParams();
|
| 58 |
+
|
| 59 |
+
if($result):
|
| 60 |
+
$orderIncrementId = $result['productinfo'];
|
| 61 |
+
$order = Mage::getModel('sales/order')->loadByIncrementId($orderIncrementId);
|
| 62 |
+
$order->addStatusToHistory(Mage_Sales_Model_Order::STATE_CANCELED);
|
| 63 |
+
if($order->getId()):
|
| 64 |
+
$payment = $order->getPayment();
|
| 65 |
+
$payment->setTransactionId($result['txnid'])
|
| 66 |
+
->setCurrencyCode()
|
| 67 |
+
->setPreparedMessage("Payment Error")
|
| 68 |
+
->setShouldCloseParentTransaction(true)
|
| 69 |
+
->setIsTransactionClosed(1)
|
| 70 |
+
->registerCaptureNotification();
|
| 71 |
+
|
| 72 |
+
endif;
|
| 73 |
+
|
| 74 |
+
$order->save();
|
| 75 |
+
|
| 76 |
+
echo "Found Some Problem! Try Again";
|
| 77 |
+
else:
|
| 78 |
+
echo "Found Some Problem! Try Again";
|
| 79 |
+
endif;
|
| 80 |
+
|
| 81 |
+
|
| 82 |
+
}
|
| 83 |
+
public function testAction(){
|
| 84 |
+
echo $block = $this->getLayout()->createBlock('core/template')->setTemplate('payu/test.phtml')->toHtml();
|
| 85 |
+
|
| 86 |
+
}
|
| 87 |
+
|
| 88 |
+
|
| 89 |
+
}
|
app/code/local/Mss/Payu/etc/config.xml
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<config>
|
| 3 |
+
<modules>
|
| 4 |
+
<Mss_Payu>
|
| 5 |
+
<version>0.1.0</version>
|
| 6 |
+
</Mss_Payu>
|
| 7 |
+
</modules>
|
| 8 |
+
<frontend>
|
| 9 |
+
<routers>
|
| 10 |
+
<payu>
|
| 11 |
+
<use>standard</use>
|
| 12 |
+
<args>
|
| 13 |
+
<module>Mss_Payu</module>
|
| 14 |
+
<frontName>payu</frontName>
|
| 15 |
+
</args>
|
| 16 |
+
</payu>
|
| 17 |
+
</routers>
|
| 18 |
+
<layout>
|
| 19 |
+
<updates>
|
| 20 |
+
<payu>
|
| 21 |
+
<file>payu.xml</file>
|
| 22 |
+
</payu>
|
| 23 |
+
</updates>
|
| 24 |
+
</layout>
|
| 25 |
+
</frontend>
|
| 26 |
+
<global>
|
| 27 |
+
<helpers>
|
| 28 |
+
<payu>
|
| 29 |
+
<class>Mss_Payu_Helper</class>
|
| 30 |
+
</payu>
|
| 31 |
+
</helpers>
|
| 32 |
+
<blocks>
|
| 33 |
+
<payu>
|
| 34 |
+
<class>Mss_Payu_Block</class>
|
| 35 |
+
</payu>
|
| 36 |
+
</blocks>
|
| 37 |
+
</global>
|
| 38 |
+
</config>
|
app/code/local/Mss/Pushnotification/Block/Adminhtml/Pushnotificationbackend.php
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class Mss_Pushnotification_Block_Adminhtml_Pushnotificationbackend extends Mage_Adminhtml_Block_Template {
|
| 4 |
+
|
| 5 |
+
}
|
app/code/local/Mss/Pushnotification/Helper/Data.php
ADDED
|
@@ -0,0 +1,182 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
class Mss_Pushnotification_Helper_Data extends Mage_Core_Helper_Abstract
|
| 3 |
+
{
|
| 4 |
+
const SEND_IOS_PASSWORD = 'mss_pushnotification/setting/passphrase';
|
| 5 |
+
const GOOGLE_API_KEY ='mss_pushnotification/setting_and/googlekey';
|
| 6 |
+
|
| 7 |
+
const IOS_PEM = 'mss_pushnotification/setting/pem';
|
| 8 |
+
const IOS_MODE='mss_pushnotification/setting/ios_mode';
|
| 9 |
+
const large_icon='mss_pushnotification/setting_and/notificationimage';
|
| 10 |
+
const small_icon='mss_pushnotification/setting_and/notificationthumbnail';
|
| 11 |
+
|
| 12 |
+
public $total_notification=0;
|
| 13 |
+
public $ios_notification=0;
|
| 14 |
+
public $android_notification=0;
|
| 15 |
+
public $total_android_success=0;
|
| 16 |
+
public $total_ios_success=0;
|
| 17 |
+
public $total_ios_error=0;
|
| 18 |
+
public $total_android_error=0;
|
| 19 |
+
|
| 20 |
+
public function sendnotification($message,$notification_type)
|
| 21 |
+
{
|
| 22 |
+
/*get user to send notification*/
|
| 23 |
+
|
| 24 |
+
$activeuser_collection = Mage::getModel('pushnotification/pushnotification')->getCollection();
|
| 25 |
+
|
| 26 |
+
/*notification message*/
|
| 27 |
+
if($notification_type)
|
| 28 |
+
$activeuser_collection ->addFieldToFilter('device_type',array('eq'=>($notification_type-1)));
|
| 29 |
+
|
| 30 |
+
//$message_android = array("message" => $message,'largeIcon'=> 'large_icon', 'smallIcon'=> 'small_icon');
|
| 31 |
+
$message_android = array("message" => $message);
|
| 32 |
+
foreach($activeuser_collection->getData() as $collection)
|
| 33 |
+
{
|
| 34 |
+
($collection['device_type'])? $this->sendPushIOS($collection['registration_id'],$message) : $this->sendPushAndroid(array($collection['registration_id']),$message_android);
|
| 35 |
+
|
| 36 |
+
$this->total_notification++;
|
| 37 |
+
|
| 38 |
+
}
|
| 39 |
+
$html='';
|
| 40 |
+
$html.= 'Total Notification sent : '.$this->total_notification.'</br>';
|
| 41 |
+
if($notification_type == 0 || $notification_type == 2)
|
| 42 |
+
{
|
| 43 |
+
$html.='Total IOS Device : '.$this->ios_notification.'</br>Total Notification success in IOS : '. $this->total_ios_success.'</br>Total IOS Notification error : '.$this->total_ios_error;
|
| 44 |
+
}
|
| 45 |
+
if($notification_type == 0 || $notification_type == 1)
|
| 46 |
+
{
|
| 47 |
+
$html.='</br> Total Android Devices : '.$this->android_notification.'</br> Total Notification success in Android : '.$this->total_android_success.'</br> Total Android Notification Error : '.$this->total_android_error;
|
| 48 |
+
}
|
| 49 |
+
return $html;
|
| 50 |
+
}
|
| 51 |
+
/**
|
| 52 |
+
* Sending Push Notification IOS
|
| 53 |
+
*/
|
| 54 |
+
|
| 55 |
+
public function sendPushIOS($registration_id,$message)
|
| 56 |
+
{
|
| 57 |
+
|
| 58 |
+
$this->ios_notification++;
|
| 59 |
+
|
| 60 |
+
$passphrase = Mage::getStoreConfig(self::SEND_IOS_PASSWORD);
|
| 61 |
+
|
| 62 |
+
$ctx = stream_context_create();
|
| 63 |
+
stream_context_set_option($ctx, 'ssl', 'local_cert', Mage::getBaseUrl('media') . Mage::getStoreConfig(self::IOS_PEM));
|
| 64 |
+
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
|
| 65 |
+
|
| 66 |
+
$ios_mode=(!Mage::getStoreConfig(self::IOS_MODE))?'ssl://gateway.sandbox.push.apple.com:2195':'ssl://gateway.push.apple.com:2195';
|
| 67 |
+
// Open a connection to the APNS server
|
| 68 |
+
$fp = stream_socket_client(
|
| 69 |
+
$ios_mode, $err,
|
| 70 |
+
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
|
| 71 |
+
|
| 72 |
+
if (!$fp)
|
| 73 |
+
exit("The detail entered for IOS is not correct: $err $errstr" . PHP_EOL);
|
| 74 |
+
|
| 75 |
+
echo 'Connected to APNS' . PHP_EOL;
|
| 76 |
+
|
| 77 |
+
// Create the payload body
|
| 78 |
+
$body['aps'] = array(
|
| 79 |
+
'alert' => $message,
|
| 80 |
+
'sound' => 'default'
|
| 81 |
+
);
|
| 82 |
+
|
| 83 |
+
// Encode the payload as JSON
|
| 84 |
+
$payload = json_encode($body);
|
| 85 |
+
|
| 86 |
+
// Build the binary notification
|
| 87 |
+
$msg = chr(0) . pack('n', 32) . pack('H*', $registration_id) . pack('n', strlen($payload)) . $payload;
|
| 88 |
+
|
| 89 |
+
// Send it to the server
|
| 90 |
+
$result = fwrite($fp, $msg, strlen($msg));
|
| 91 |
+
|
| 92 |
+
if (!$result):
|
| 93 |
+
$this->total_ios_error++;
|
| 94 |
+
echo 'Message not delivered' . PHP_EOL;
|
| 95 |
+
else:
|
| 96 |
+
$this->total_ios_success++;
|
| 97 |
+
echo 'Message successfully delivered' . PHP_EOL;
|
| 98 |
+
endif;
|
| 99 |
+
// Close the connection to the server
|
| 100 |
+
fclose($fp);
|
| 101 |
+
return;
|
| 102 |
+
|
| 103 |
+
|
| 104 |
+
}
|
| 105 |
+
|
| 106 |
+
/**
|
| 107 |
+
* Sending Push Notification Android
|
| 108 |
+
*/
|
| 109 |
+
|
| 110 |
+
public function sendPushAndroid($registration_id,$message)
|
| 111 |
+
{
|
| 112 |
+
|
| 113 |
+
$this->android_notification++;
|
| 114 |
+
// Set POST variables
|
| 115 |
+
$url = 'https://android.googleapis.com/gcm/send';
|
| 116 |
+
|
| 117 |
+
$fields = array(
|
| 118 |
+
'registration_ids' => $registration_id,
|
| 119 |
+
'data' => $message
|
| 120 |
+
|
| 121 |
+
);
|
| 122 |
+
|
| 123 |
+
$headers = array(
|
| 124 |
+
'Authorization: key=' . Mage::getStoreConfig(self::GOOGLE_API_KEY),
|
| 125 |
+
'Content-Type: application/json'
|
| 126 |
+
);
|
| 127 |
+
|
| 128 |
+
// Open connection
|
| 129 |
+
$ch = curl_init();
|
| 130 |
+
|
| 131 |
+
// Set the url, number of POST vars, POST data
|
| 132 |
+
curl_setopt($ch, CURLOPT_URL, $url);
|
| 133 |
+
|
| 134 |
+
curl_setopt($ch, CURLOPT_POST, true);
|
| 135 |
+
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
| 136 |
+
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
| 137 |
+
|
| 138 |
+
// Disabling SSL Certificate support temporarly
|
| 139 |
+
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
| 140 |
+
|
| 141 |
+
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
|
| 142 |
+
|
| 143 |
+
// Execute post
|
| 144 |
+
$result = curl_exec($ch);
|
| 145 |
+
|
| 146 |
+
if ($result === FALSE):
|
| 147 |
+
$this->total_android_error++;
|
| 148 |
+
//echo 'Curl failed: ' . curl_error($ch);
|
| 149 |
+
else:
|
| 150 |
+
$this->total_android_success++;
|
| 151 |
+
//echo 'Success';
|
| 152 |
+
endif;
|
| 153 |
+
|
| 154 |
+
// Close connection
|
| 155 |
+
curl_close($ch);
|
| 156 |
+
return;
|
| 157 |
+
}
|
| 158 |
+
|
| 159 |
+
|
| 160 |
+
|
| 161 |
+
/* Register device
|
| 162 |
+
use below code to register device .
|
| 163 |
+
Mage::helper('pushnotification')->registerdevice($data);
|
| 164 |
+
where $data = array('registration_id'=>'xyz','user_id'=>'1','device_type'=>0);
|
| 165 |
+
Device type 0 for android and 1 for IOS
|
| 166 |
+
*/
|
| 167 |
+
|
| 168 |
+
public function registerdevice($notification)
|
| 169 |
+
{
|
| 170 |
+
|
| 171 |
+
$collection = Mage::getModel('pushnotification/pushnotification');
|
| 172 |
+
$filter=$collection->getCollection()->addFieldToFilter('user_id',array(eq=>$notification['user_id']))
|
| 173 |
+
->addFieldToFilter('registration_id',array(eq=>$notification['registration_id']));
|
| 174 |
+
|
| 175 |
+
if(!$filter->count()):
|
| 176 |
+
$collection->setData($notification)->save();
|
| 177 |
+
endif;
|
| 178 |
+
|
| 179 |
+
}
|
| 180 |
+
|
| 181 |
+
}
|
| 182 |
+
|
app/code/local/Mss/Pushnotification/Model/Entity/Resource.php
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class Mss_Pushnotification_Model_Entity_Resource extends Mage_Eav_Model_Entity_Attribute_Source_Abstract
|
| 4 |
+
|
| 5 |
+
{
|
| 6 |
+
public function getAllOptions()
|
| 7 |
+
{
|
| 8 |
+
if ($this->_options === null) {
|
| 9 |
+
$this->_options = array(
|
| 10 |
+
|
| 11 |
+
array(
|
| 12 |
+
'value' => '1',
|
| 13 |
+
'label' => 'yes',
|
| 14 |
+
),
|
| 15 |
+
array(
|
| 16 |
+
'value' => '0',
|
| 17 |
+
'label' => 'no',
|
| 18 |
+
),
|
| 19 |
+
|
| 20 |
+
);
|
| 21 |
+
}
|
| 22 |
+
return $this->_options;
|
| 23 |
+
}
|
| 24 |
+
}
|
app/code/local/Mss/Pushnotification/Model/Mysql4/Pushnotification.php
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class Mss_Pushnotification_Model_Mysql4_Pushnotification extends Mage_Core_Model_Mysql4_Abstract
|
| 4 |
+
{
|
| 5 |
+
public function _construct()
|
| 6 |
+
{
|
| 7 |
+
// Note that the web_id refers to the key field in your database table.
|
| 8 |
+
$this->_init('pushnotification/pushnotification','id');
|
| 9 |
+
}
|
| 10 |
+
}
|
app/code/local/Mss/Pushnotification/Model/Mysql4/Pushnotification/Collection.php
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class Mss_Pushnotification_Model_Mysql4_Pushnotification_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
|
| 4 |
+
{
|
| 5 |
+
public function _construct()
|
| 6 |
+
{
|
| 7 |
+
parent::_construct();
|
| 8 |
+
$this->_init('pushnotification/pushnotification');
|
| 9 |
+
}
|
| 10 |
+
}
|
app/code/local/Mss/Pushnotification/Model/Pushnotification.php
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
class Mss_Pushnotification_Model_Pushnotification extends Mage_Core_Model_Abstract
|
| 3 |
+
{
|
| 4 |
+
protected function _construct(){
|
| 5 |
+
|
| 6 |
+
$this->_init("pushnotification/pushnotification");
|
| 7 |
+
|
| 8 |
+
}
|
| 9 |
+
}
|
| 10 |
+
?>
|
app/code/local/Mss/Pushnotification/Model/System/Config/Backend/File.php
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
class Mss_Pushnotification_Model_System_Config_Backend_File extends Mage_Adminhtml_Model_System_Config_Backend_File
|
| 3 |
+
{
|
| 4 |
+
/**
|
| 5 |
+
* Getter for allowed extensions of uploaded files
|
| 6 |
+
*
|
| 7 |
+
* @return array
|
| 8 |
+
*/
|
| 9 |
+
protected function _getAllowedExtensions()
|
| 10 |
+
{
|
| 11 |
+
return array('pem');
|
| 12 |
+
}
|
| 13 |
+
}
|
app/code/local/Mss/Pushnotification/Model/System/Config/Backend/Image.php
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
class Mss_Pushnotification_Model_System_Config_Backend_Image extends Mage_Adminhtml_Model_System_Config_Backend_File
|
| 3 |
+
{
|
| 4 |
+
protected function _getAllowedExtensions()
|
| 5 |
+
{
|
| 6 |
+
$extension=array('png','jpeg','gif');
|
| 7 |
+
return $extension;
|
| 8 |
+
}
|
| 9 |
+
}
|
| 10 |
+
?>
|
app/code/local/Mss/Pushnotification/Model/System/Config/Backend/Iosmode.php
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Magento
|
| 4 |
+
*
|
| 5 |
+
* NOTICE OF LICENSE
|
| 6 |
+
*
|
| 7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
| 8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
| 9 |
+
* It is also available through the world-wide-web at this URL:
|
| 10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
| 11 |
+
* If you did not receive a copy of the license and are unable to
|
| 12 |
+
* obtain it through the world-wide-web, please send an email
|
| 13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
| 14 |
+
*
|
| 15 |
+
* DISCLAIMER
|
| 16 |
+
*
|
| 17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
| 18 |
+
* versions in the future. If you wish to customize Magento for your
|
| 19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
| 20 |
+
*
|
| 21 |
+
* @category Mage
|
| 22 |
+
* @package Mage_Adminhtml
|
| 23 |
+
* @copyright Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
|
| 24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 25 |
+
*/
|
| 26 |
+
|
| 27 |
+
/**
|
| 28 |
+
* Used in creating options for Yes|No config value selection
|
| 29 |
+
*
|
| 30 |
+
*/
|
| 31 |
+
class Mss_Pushnotification_Model_System_Config_Backend_Iosmode
|
| 32 |
+
{
|
| 33 |
+
|
| 34 |
+
/**
|
| 35 |
+
* Options getter
|
| 36 |
+
*
|
| 37 |
+
* @return array
|
| 38 |
+
*/
|
| 39 |
+
public function toOptionArray()
|
| 40 |
+
{
|
| 41 |
+
return array(
|
| 42 |
+
array('value' => 1, 'label'=>Mage::helper('adminhtml')->__('Production')),
|
| 43 |
+
array('value' => 0, 'label'=>Mage::helper('adminhtml')->__('Sandbox')),
|
| 44 |
+
);
|
| 45 |
+
}
|
| 46 |
+
|
| 47 |
+
/**
|
| 48 |
+
* Get options in "key-value" format
|
| 49 |
+
*
|
| 50 |
+
* @return array
|
| 51 |
+
*/
|
| 52 |
+
public function toArray()
|
| 53 |
+
{
|
| 54 |
+
return array(
|
| 55 |
+
0 => Mage::helper('adminhtml')->__('Sandbox'),
|
| 56 |
+
1 => Mage::helper('adminhtml')->__('Production'),
|
| 57 |
+
);
|
| 58 |
+
}
|
| 59 |
+
|
| 60 |
+
}
|
app/code/local/Mss/Pushnotification/controllers/Adminhtml/PushnotificationbackendController.php
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
class Mss_Pushnotification_Adminhtml_PushnotificationbackendController extends Mage_Adminhtml_Controller_Action
|
| 3 |
+
{
|
| 4 |
+
public function indexAction()
|
| 5 |
+
{
|
| 6 |
+
$this->loadLayout();
|
| 7 |
+
$this->_title($this->__("pushnotification"));
|
| 8 |
+
$this->renderLayout();
|
| 9 |
+
}
|
| 10 |
+
public function notificationsendAction()
|
| 11 |
+
{
|
| 12 |
+
$params= $this->getRequest()->getParams();
|
| 13 |
+
$result=Mage::helper('pushnotification')->sendnotification($params['message'],$params['notification_type']);
|
| 14 |
+
$this->getResponse()->setHeader('Content-type', 'application/json');
|
| 15 |
+
$this->getResponse()->setBody($result);
|
| 16 |
+
return;
|
| 17 |
+
}
|
| 18 |
+
}
|
app/code/local/Mss/Pushnotification/etc/config.xml
ADDED
|
@@ -0,0 +1,133 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<config>
|
| 3 |
+
<modules>
|
| 4 |
+
<Mss_Pushnotification>
|
| 5 |
+
<version>0.1.6</version>
|
| 6 |
+
</Mss_Pushnotification>
|
| 7 |
+
</modules>
|
| 8 |
+
<adminhtml>
|
| 9 |
+
<acl>
|
| 10 |
+
<resources>
|
| 11 |
+
<admin>
|
| 12 |
+
<children>
|
| 13 |
+
<system>
|
| 14 |
+
<children>
|
| 15 |
+
<config>
|
| 16 |
+
<children>
|
| 17 |
+
<mss_pushnotification>
|
| 18 |
+
<title>MSS Extensions</title>
|
| 19 |
+
</mss_pushnotification>
|
| 20 |
+
|
| 21 |
+
</children>
|
| 22 |
+
</config>
|
| 23 |
+
</children>
|
| 24 |
+
</system>
|
| 25 |
+
</children>
|
| 26 |
+
</admin>
|
| 27 |
+
</resources>
|
| 28 |
+
</acl>
|
| 29 |
+
</adminhtml>
|
| 30 |
+
<global>
|
| 31 |
+
<helpers>
|
| 32 |
+
<pushnotification>
|
| 33 |
+
<class>Mss_Pushnotification_Helper</class>
|
| 34 |
+
</pushnotification>
|
| 35 |
+
</helpers>
|
| 36 |
+
<blocks>
|
| 37 |
+
<pushnotification>
|
| 38 |
+
<class>Mss_Pushnotification_Block</class>
|
| 39 |
+
</pushnotification>
|
| 40 |
+
</blocks>
|
| 41 |
+
<models>
|
| 42 |
+
<pushnotification>
|
| 43 |
+
<class>Mss_Pushnotification_Model</class>
|
| 44 |
+
<resourceModel>pushnotification_mysql4</resourceModel>
|
| 45 |
+
</pushnotification>
|
| 46 |
+
<pushnotification_mysql4>
|
| 47 |
+
<class>Mss_Pushnotification_Model_Mysql4</class>
|
| 48 |
+
<entities>
|
| 49 |
+
<pushnotification>
|
| 50 |
+
<table>notification</table>
|
| 51 |
+
</pushnotification>
|
| 52 |
+
</entities>
|
| 53 |
+
</pushnotification_mysql4>
|
| 54 |
+
</models>
|
| 55 |
+
|
| 56 |
+
<resources>
|
| 57 |
+
<pushnotification_setup>
|
| 58 |
+
<setup>
|
| 59 |
+
<module>Mss_Pushnotification</module>
|
| 60 |
+
<class>Mage_Customer_Model_Entity_Setup</class>
|
| 61 |
+
</setup>
|
| 62 |
+
<connection>
|
| 63 |
+
<use>core_setup</use>
|
| 64 |
+
</connection>
|
| 65 |
+
</pushnotification_setup>
|
| 66 |
+
<pushnotification_write>
|
| 67 |
+
<connection>
|
| 68 |
+
<use>core_write</use>
|
| 69 |
+
</connection>
|
| 70 |
+
</pushnotification_write>
|
| 71 |
+
<pushnotification_read>
|
| 72 |
+
<connection>
|
| 73 |
+
<use>core_read</use>
|
| 74 |
+
</connection>
|
| 75 |
+
</pushnotification_read>
|
| 76 |
+
</resources>
|
| 77 |
+
|
| 78 |
+
</global>
|
| 79 |
+
|
| 80 |
+
|
| 81 |
+
<admin>
|
| 82 |
+
<routers>
|
| 83 |
+
<pushnotification>
|
| 84 |
+
<use>admin</use>
|
| 85 |
+
<args>
|
| 86 |
+
<module>Mss_Pushnotification</module>
|
| 87 |
+
<frontName>admin_pushnotification</frontName>
|
| 88 |
+
</args>
|
| 89 |
+
</pushnotification>
|
| 90 |
+
</routers>
|
| 91 |
+
</admin>
|
| 92 |
+
<adminhtml>
|
| 93 |
+
<menu>
|
| 94 |
+
<connector>
|
| 95 |
+
<children>
|
| 96 |
+
<pushnotificationbackend module="pushnotification">
|
| 97 |
+
<title>Push Notification</title>
|
| 98 |
+
<sort_order>2</sort_order>
|
| 99 |
+
<action>admin_pushnotification/adminhtml_pushnotificationbackend</action>
|
| 100 |
+
</pushnotificationbackend>
|
| 101 |
+
</children>
|
| 102 |
+
</connector>
|
| 103 |
+
</menu>
|
| 104 |
+
<acl>
|
| 105 |
+
<resources>
|
| 106 |
+
<all>
|
| 107 |
+
<title>Allow Everything</title>
|
| 108 |
+
</all>
|
| 109 |
+
<!-- <admin>
|
| 110 |
+
<children>
|
| 111 |
+
<pushnotification translate="title" module="pushnotification">
|
| 112 |
+
<title>Pushnotification</title>
|
| 113 |
+
<sort_order>1000</sort_order>
|
| 114 |
+
<children>
|
| 115 |
+
<pushnotificationbackend translate="title">
|
| 116 |
+
<title>pushnotification</title>
|
| 117 |
+
</pushnotificationbackend>
|
| 118 |
+
</children>
|
| 119 |
+
</pushnotification>
|
| 120 |
+
</children>
|
| 121 |
+
</admin> -->
|
| 122 |
+
</resources>
|
| 123 |
+
</acl>
|
| 124 |
+
<layout>
|
| 125 |
+
<updates>
|
| 126 |
+
<pushnotification>
|
| 127 |
+
<file>pushnotification.xml</file>
|
| 128 |
+
</pushnotification>
|
| 129 |
+
</updates>
|
| 130 |
+
</layout>
|
| 131 |
+
|
| 132 |
+
</adminhtml>
|
| 133 |
+
</config>
|
app/code/local/Mss/Pushnotification/etc/system.xml
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<config>
|
| 3 |
+
|
| 4 |
+
<sections>
|
| 5 |
+
<mss_pushnotification module="pushnotification">
|
| 6 |
+
<label>Pushnotification</label>
|
| 7 |
+
<tab>connector</tab>
|
| 8 |
+
<frontend_type>text</frontend_type>
|
| 9 |
+
<sort_order>3</sort_order>
|
| 10 |
+
<show_in_default>1</show_in_default>
|
| 11 |
+
<show_in_website>1</show_in_website>
|
| 12 |
+
<show_in_store>1</show_in_store>
|
| 13 |
+
|
| 14 |
+
<groups>
|
| 15 |
+
<mss_aboutus translate="label" module="connector">
|
| 16 |
+
<label>About Magento Mobile</label>
|
| 17 |
+
<frontend_type>text</frontend_type>
|
| 18 |
+
<sort_order>0</sort_order>
|
| 19 |
+
<show_in_default>1</show_in_default>
|
| 20 |
+
<show_in_website>1</show_in_website>
|
| 21 |
+
<show_in_store>1</show_in_store>
|
| 22 |
+
<fields>
|
| 23 |
+
<about>
|
| 24 |
+
<frontend_model>connector/system_config_about</frontend_model>
|
| 25 |
+
<sort_order>0</sort_order>
|
| 26 |
+
<show_in_default>1</show_in_default>
|
| 27 |
+
<show_in_website>1</show_in_website>
|
| 28 |
+
<show_in_store>1</show_in_store>
|
| 29 |
+
</about>
|
| 30 |
+
</fields>
|
| 31 |
+
</mss_aboutus>
|
| 32 |
+
|
| 33 |
+
<setting translate="label">
|
| 34 |
+
<label>IOS Notification Configuration</label>
|
| 35 |
+
<frontend_type>text</frontend_type>
|
| 36 |
+
<sort_order>11</sort_order>
|
| 37 |
+
<show_in_default>1</show_in_default>
|
| 38 |
+
<show_in_website>1</show_in_website>
|
| 39 |
+
<show_in_store>1</show_in_store>
|
| 40 |
+
<fields>
|
| 41 |
+
<!-- <active translate="label">
|
| 42 |
+
<label>Enabled Pushnotification</label>
|
| 43 |
+
<frontend_type>select</frontend_type>
|
| 44 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
| 45 |
+
<sort_order>9</sort_order>
|
| 46 |
+
<show_in_default>1</show_in_default>
|
| 47 |
+
<show_in_website>1</show_in_website>
|
| 48 |
+
<show_in_store>1</show_in_store>
|
| 49 |
+
</active> -->
|
| 50 |
+
|
| 51 |
+
<ios_mode translate="label">
|
| 52 |
+
<label>IOS mode</label>
|
| 53 |
+
<frontend_type>select</frontend_type>
|
| 54 |
+
<source_model>pushnotification/system_config_backend_iosmode</source_model>
|
| 55 |
+
<sort_order>12</sort_order>
|
| 56 |
+
<show_in_default>1</show_in_default>
|
| 57 |
+
<show_in_website>1</show_in_website>
|
| 58 |
+
<show_in_store>1</show_in_store>
|
| 59 |
+
</ios_mode>
|
| 60 |
+
<passphrase translate="label">
|
| 61 |
+
<label>IOS Passphrase</label>
|
| 62 |
+
<frontend_type>text</frontend_type>
|
| 63 |
+
<sort_order>13</sort_order>
|
| 64 |
+
<show_in_default>1</show_in_default>
|
| 65 |
+
<show_in_website>1</show_in_website>
|
| 66 |
+
<show_in_store>1</show_in_store>
|
| 67 |
+
</passphrase>
|
| 68 |
+
<!--googlekey translate="label">
|
| 69 |
+
<label>Google API Key</label>
|
| 70 |
+
<frontend_type>text</frontend_type>
|
| 71 |
+
<sort_order>14</sort_order>
|
| 72 |
+
<show_in_default>1</show_in_default>
|
| 73 |
+
<show_in_website>1</show_in_website>
|
| 74 |
+
<show_in_store>1</show_in_store>
|
| 75 |
+
</googlekey-->
|
| 76 |
+
|
| 77 |
+
<pem translate="label comment">
|
| 78 |
+
<label>pem file for IOS : </label>
|
| 79 |
+
<comment>Allowed file types: .pem.</comment>
|
| 80 |
+
<frontend_type>image</frontend_type>
|
| 81 |
+
<backend_model>pushnotification/system_config_backend_file</backend_model>
|
| 82 |
+
<upload_dir config="system/filesystem/media" scope_info="1">pem</upload_dir>
|
| 83 |
+
<base_url type="media" scope_info="1">pem</base_url>
|
| 84 |
+
<sort_order>1</sort_order>
|
| 85 |
+
<show_in_default>1</show_in_default>
|
| 86 |
+
<show_in_website>1</show_in_website>
|
| 87 |
+
<show_in_store>1</show_in_store>
|
| 88 |
+
</pem>
|
| 89 |
+
<!--notificationimage translate="label comment">
|
| 90 |
+
<label>Notification Icon : </label>
|
| 91 |
+
<comment>Allowed file types: .jpeg,.png,.gif.(only for android)</comment>
|
| 92 |
+
<frontend_type>image</frontend_type>
|
| 93 |
+
<backend_model>pushnotification/system_config_backend_image</backend_model>
|
| 94 |
+
<upload_dir config="system/filesystem/media" scope_info="1">notification</upload_dir>
|
| 95 |
+
<base_url type="media" scope_info="1">notification</base_url>
|
| 96 |
+
<sort_order>2</sort_order>
|
| 97 |
+
<show_in_default>1</show_in_default>
|
| 98 |
+
<show_in_website>1</show_in_website>
|
| 99 |
+
<show_in_store>1</show_in_store>
|
| 100 |
+
</notificationimage>
|
| 101 |
+
<notificationthumbnail translate="label comment">
|
| 102 |
+
<label>Notification Thumbnail Icon : </label>
|
| 103 |
+
<comment>Allowed file types: .jpeg,.png,.gif.(only for android)</comment>
|
| 104 |
+
<frontend_type>image</frontend_type>
|
| 105 |
+
<backend_model>pushnotification/system_config_backend_image</backend_model>
|
| 106 |
+
<upload_dir config="system/filesystem/media" scope_info="1">notification</upload_dir>
|
| 107 |
+
<base_url type="media" scope_info="1">notification</base_url>
|
| 108 |
+
<sort_order>5</sort_order>
|
| 109 |
+
<show_in_default>1</show_in_default>
|
| 110 |
+
<show_in_website>1</show_in_website>
|
| 111 |
+
<show_in_store>1</show_in_store>
|
| 112 |
+
</notificationthumbnail-->
|
| 113 |
+
</fields>
|
| 114 |
+
</setting>
|
| 115 |
+
|
| 116 |
+
<setting_and translate="label">
|
| 117 |
+
<label>Android Notification Configuration</label>
|
| 118 |
+
<frontend_type>text</frontend_type>
|
| 119 |
+
<sort_order>3</sort_order>
|
| 120 |
+
<show_in_default>1</show_in_default>
|
| 121 |
+
<show_in_website>1</show_in_website>
|
| 122 |
+
<show_in_store>1</show_in_store>
|
| 123 |
+
<fields>
|
| 124 |
+
<active translate="label">
|
| 125 |
+
<label>Enabled Pushnotification</label>
|
| 126 |
+
<frontend_type>select</frontend_type>
|
| 127 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
| 128 |
+
<sort_order>1</sort_order>
|
| 129 |
+
<show_in_default>1</show_in_default>
|
| 130 |
+
<show_in_website>1</show_in_website>
|
| 131 |
+
<show_in_store>1</show_in_store>
|
| 132 |
+
</active>
|
| 133 |
+
<googlekey translate="label">
|
| 134 |
+
<label>Google API Key</label>
|
| 135 |
+
<frontend_type>text</frontend_type>
|
| 136 |
+
<sort_order>2</sort_order>
|
| 137 |
+
<show_in_default>1</show_in_default>
|
| 138 |
+
<show_in_website>1</show_in_website>
|
| 139 |
+
<show_in_store>1</show_in_store>
|
| 140 |
+
</googlekey>
|
| 141 |
+
<notificationimage translate="label comment">
|
| 142 |
+
<label>Notification Icon : </label>
|
| 143 |
+
<comment>Allowed file types: .jpeg,.png,.gif.(only for android)</comment>
|
| 144 |
+
<frontend_type>image</frontend_type>
|
| 145 |
+
<backend_model>pushnotification/system_config_backend_image</backend_model>
|
| 146 |
+
<upload_dir config="system/filesystem/media" scope_info="1">notification</upload_dir>
|
| 147 |
+
<base_url type="media" scope_info="1">notification</base_url>
|
| 148 |
+
<sort_order>3</sort_order>
|
| 149 |
+
<show_in_default>1</show_in_default>
|
| 150 |
+
<show_in_website>1</show_in_website>
|
| 151 |
+
<show_in_store>1</show_in_store>
|
| 152 |
+
</notificationimage>
|
| 153 |
+
<notificationthumbnail translate="label comment">
|
| 154 |
+
<label>Notification Thumbnail Icon : </label>
|
| 155 |
+
<comment>Allowed file types: .jpeg,.png,.gif.(only for android)</comment>
|
| 156 |
+
<frontend_type>image</frontend_type>
|
| 157 |
+
<backend_model>pushnotification/system_config_backend_image</backend_model>
|
| 158 |
+
<upload_dir config="system/filesystem/media" scope_info="1">notification</upload_dir>
|
| 159 |
+
<base_url type="media" scope_info="1">notification</base_url>
|
| 160 |
+
<sort_order>5</sort_order>
|
| 161 |
+
<show_in_default>1</show_in_default>
|
| 162 |
+
<show_in_website>1</show_in_website>
|
| 163 |
+
<show_in_store>1</show_in_store>
|
| 164 |
+
</notificationthumbnail>
|
| 165 |
+
|
| 166 |
+
|
| 167 |
+
</fields>
|
| 168 |
+
</setting_and>
|
| 169 |
+
|
| 170 |
+
</groups>
|
| 171 |
+
</mss_pushnotification>
|
| 172 |
+
</sections>
|
| 173 |
+
</config>
|
app/code/local/Mss/Pushnotification/sql/pushnotification_setup/mysql4-upgrade-0.1.5-0.1.6.php
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
$installer = $this;
|
| 3 |
+
|
| 4 |
+
$installer->startSetup();
|
| 5 |
+
|
| 6 |
+
|
| 7 |
+
/*create user Attribute*/
|
| 8 |
+
|
| 9 |
+
$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
|
| 10 |
+
|
| 11 |
+
$entityTypeId = $setup->getEntityTypeId('customer');
|
| 12 |
+
$attributeSetId = $setup->getDefaultAttributeSetId($entityTypeId);
|
| 13 |
+
$attributeGroupId = $setup->getDefaultAttributeGroupId($entityTypeId, $attributeSetId);
|
| 14 |
+
|
| 15 |
+
$installer->addAttribute("customer", "pushnotification", array(
|
| 16 |
+
"type" => "int",
|
| 17 |
+
"backend" => "",
|
| 18 |
+
"label" => "Push Notification",
|
| 19 |
+
"input" => "select",
|
| 20 |
+
"source" => "pushnotification/entity_resource",
|
| 21 |
+
"visible" => true,
|
| 22 |
+
"required" => false,
|
| 23 |
+
"default" => "",
|
| 24 |
+
"frontend" => "",
|
| 25 |
+
"unique" => false,
|
| 26 |
+
"note" => "Push Notification"
|
| 27 |
+
|
| 28 |
+
));
|
| 29 |
+
|
| 30 |
+
$attribute = Mage::getSingleton("eav/config")->getAttribute("customer", "pushnotification");
|
| 31 |
+
|
| 32 |
+
|
| 33 |
+
$setup->addAttributeToGroup(
|
| 34 |
+
$entityTypeId,
|
| 35 |
+
$attributeSetId,
|
| 36 |
+
$attributeGroupId,
|
| 37 |
+
'module',
|
| 38 |
+
'999' //sort_order
|
| 39 |
+
);
|
| 40 |
+
|
| 41 |
+
$used_in_forms=array();
|
| 42 |
+
|
| 43 |
+
$used_in_forms[]="adminhtml_customer";
|
| 44 |
+
|
| 45 |
+
$attribute->setData("used_in_forms", $used_in_forms)
|
| 46 |
+
->setData("is_used_for_customer_segment", true)
|
| 47 |
+
->setData("is_system", 0)
|
| 48 |
+
->setData("is_user_defined", 1)
|
| 49 |
+
->setData("is_visible", 1)
|
| 50 |
+
->setData("sort_order", 100)
|
| 51 |
+
;
|
| 52 |
+
$attribute->save();
|
| 53 |
+
|
| 54 |
+
/*Create table script*/
|
| 55 |
+
|
| 56 |
+
|
| 57 |
+
$installer->run("DROP TABLE IF EXISTS {$this->getTable('notification')};
|
| 58 |
+
CREATE TABLE {$this->getTable('notification')} (
|
| 59 |
+
`id` int(11) unsigned NOT NULL auto_increment,
|
| 60 |
+
`user_id` int(11),
|
| 61 |
+
`registration_id` varchar(250),
|
| 62 |
+
`device_type` int(11),
|
| 63 |
+
PRIMARY KEY (`id`)
|
| 64 |
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
| 65 |
+
");
|
| 66 |
+
$installer->endSetup();
|
| 67 |
+
|
app/code/local/Mss/Sociallogin/Helper/Data.php
ADDED
|
@@ -0,0 +1,140 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
class Mss_Sociallogin_Helper_Data extends Mage_Core_Helper_Abstract
|
| 3 |
+
{
|
| 4 |
+
|
| 5 |
+
private $sociallogin_support = array('facebook','google');
|
| 6 |
+
private $f_url = 'https://graph.facebook.com/me?fields=first_name,last_name,gender,email&format=json&access_token=';
|
| 7 |
+
private $g_url = 'https://www.googleapis.com/oauth2/v1/userinfo?alt=json&alt=json&access_token=';
|
| 8 |
+
private $sociallogin_type;
|
| 9 |
+
|
| 10 |
+
public function socialloginRequest($token,$sociallogintype){
|
| 11 |
+
|
| 12 |
+
if($token && $sociallogintype):
|
| 13 |
+
|
| 14 |
+
$this->sociallogin_type = $sociallogintype;
|
| 15 |
+
|
| 16 |
+
$this->sociallogin_support($sociallogintype);
|
| 17 |
+
$this->getSocialdetails($token,$sociallogintype);
|
| 18 |
+
|
| 19 |
+
else:
|
| 20 |
+
return true;
|
| 21 |
+
endif;
|
| 22 |
+
|
| 23 |
+
|
| 24 |
+
}
|
| 25 |
+
|
| 26 |
+
private function sociallogin_support($sociallogintype)
|
| 27 |
+
{
|
| 28 |
+
if(!in_array($sociallogintype, $this->sociallogin_support)):
|
| 29 |
+
echo json_encode(array('status'=>'error','message'=>'Social Login is not supported by Magentomobileshop.'));
|
| 30 |
+
exit;
|
| 31 |
+
else:
|
| 32 |
+
return true;
|
| 33 |
+
endif;
|
| 34 |
+
return true;
|
| 35 |
+
}
|
| 36 |
+
|
| 37 |
+
private function getSocialdetails($token,$sociallogintype){
|
| 38 |
+
switch($sociallogintype)
|
| 39 |
+
{
|
| 40 |
+
case 'facebook':
|
| 41 |
+
$this->getfacebookdetails($token);
|
| 42 |
+
break;
|
| 43 |
+
case 'google':
|
| 44 |
+
$this->getgoogledetails($token);
|
| 45 |
+
break;
|
| 46 |
+
default:
|
| 47 |
+
echo json_encode(array('status'=>'error','message'=>'Social Login is not supported by Magentomobileshop.'));
|
| 48 |
+
exit;
|
| 49 |
+
}
|
| 50 |
+
}
|
| 51 |
+
|
| 52 |
+
private function getFacebookdetails($token){
|
| 53 |
+
|
| 54 |
+
$user_details = $this->f_url.$token;
|
| 55 |
+
$response = file_get_contents($user_details);
|
| 56 |
+
$response = json_decode($response);
|
| 57 |
+
if($response->email):
|
| 58 |
+
$this->checkuser($response);
|
| 59 |
+
else:
|
| 60 |
+
echo json_encode(array('status'=>'error','message'=>'Token is invalid.'));
|
| 61 |
+
exit;
|
| 62 |
+
endif;
|
| 63 |
+
}
|
| 64 |
+
|
| 65 |
+
private function getgoogledetails($token){
|
| 66 |
+
|
| 67 |
+
$user_details = $this->g_url.$token;
|
| 68 |
+
$response = file_get_contents($user_details);
|
| 69 |
+
$response = json_decode($response);
|
| 70 |
+
|
| 71 |
+
if($response->email):
|
| 72 |
+
$this->checkuser($response);
|
| 73 |
+
else:
|
| 74 |
+
echo json_encode(array('status'=>'error','message'=>'Token is invalid.'));
|
| 75 |
+
exit;
|
| 76 |
+
endif;
|
| 77 |
+
|
| 78 |
+
}
|
| 79 |
+
|
| 80 |
+
private function checkuser($response){
|
| 81 |
+
try{
|
| 82 |
+
$customer = Mage::getModel("customer/customer")->setWebsiteId(1)->loadByEmail($response->email);
|
| 83 |
+
|
| 84 |
+
if($customer->getId()):
|
| 85 |
+
Mage::getSingleton('customer/session')->loginById($customer->getId());
|
| 86 |
+
echo json_encode(array('status'=>'success','message'=>Mss_Connector_CustomerController::statusAction()));
|
| 87 |
+
exit;
|
| 88 |
+
|
| 89 |
+
else:
|
| 90 |
+
$this->registerUser($response);
|
| 91 |
+
endif;
|
| 92 |
+
}
|
| 93 |
+
catch(exception $e){
|
| 94 |
+
echo json_encode(array('status'=>'error','message'=>$e->getMessage()));
|
| 95 |
+
exit;
|
| 96 |
+
}
|
| 97 |
+
|
| 98 |
+
}
|
| 99 |
+
|
| 100 |
+
private function registerUser($response){
|
| 101 |
+
$session = Mage::getSingleton ( 'customer/session' );
|
| 102 |
+
$customer = Mage::getModel ( 'customer/customer' )->setId(null);
|
| 103 |
+
|
| 104 |
+
$customer->setData('email',$response->email);
|
| 105 |
+
$customer->setData('firstname',$response->first_name);
|
| 106 |
+
$customer->setData('lastname',$response->last_name);
|
| 107 |
+
$customer->setData('gender',$response->gender);
|
| 108 |
+
$customer->setData('sociallogin_type',$this->sociallogin_type);
|
| 109 |
+
$customer->setData('password',$this->radPassoword());
|
| 110 |
+
|
| 111 |
+
try{
|
| 112 |
+
$customer->setConfirmation(null);
|
| 113 |
+
$customer->save();
|
| 114 |
+
if ($customer->isConfirmationRequired ()):
|
| 115 |
+
$customer->sendNewAccountEmail ( 'confirmation', $session->getBeforeAuthUrl (), Mage::app ()->getStore ()->getId () );
|
| 116 |
+
echo json_encode(array('status'=>'error','message'=>'Account confirmation required.'));
|
| 117 |
+
exit;
|
| 118 |
+
else:
|
| 119 |
+
$session->setCustomerAsLoggedIn($customer);
|
| 120 |
+
$customer->sendNewAccountEmail ('registered','', Mage::app ()->getStore ()->getId ());
|
| 121 |
+
endif;
|
| 122 |
+
|
| 123 |
+
echo json_encode(array('status'=>'success','message'=>Mss_Connector_CustomerController::statusAction()));
|
| 124 |
+
exit;
|
| 125 |
+
|
| 126 |
+
}
|
| 127 |
+
catch(Exception $ex){
|
| 128 |
+
echo json_encode(array('status'=>'error','message'=>'Error in creating user account.'));
|
| 129 |
+
exit;
|
| 130 |
+
}
|
| 131 |
+
|
| 132 |
+
|
| 133 |
+
}
|
| 134 |
+
|
| 135 |
+
private function radPassoword()
|
| 136 |
+
{
|
| 137 |
+
return substr(str_shuffle(str_repeat('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', mt_rand(1,6))),1,6);
|
| 138 |
+
}
|
| 139 |
+
|
| 140 |
+
}
|
app/code/local/Mss/Sociallogin/Model/Mysql4/Sociallogin.php
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class Mss_Sociallogin_Model_Mysql4_Sociallogin extends Mage_Core_Model_Mysql4_Abstract
|
| 4 |
+
{
|
| 5 |
+
public function _construct()
|
| 6 |
+
{
|
| 7 |
+
// Note that the web_id refers to the key field in your database table.
|
| 8 |
+
$this->_init('sociallogin/sociallogin');
|
| 9 |
+
}
|
| 10 |
+
}
|
app/code/local/Mss/Sociallogin/Model/Sociallogin.php
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
class Mss_Sociallogin_Model_Sociallogin extends Mage_Core_Model_Abstract
|
| 3 |
+
{
|
| 4 |
+
protected function _construct(){
|
| 5 |
+
|
| 6 |
+
$this->_init("sociallogin/sociallogin");
|
| 7 |
+
|
| 8 |
+
}
|
| 9 |
+
}
|
| 10 |
+
?>
|
app/code/local/Mss/Sociallogin/etc/config.xml
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<config>
|
| 3 |
+
<modules>
|
| 4 |
+
<Mss_Sociallogin>
|
| 5 |
+
<version>0.1.0</version>
|
| 6 |
+
</Mss_Sociallogin>
|
| 7 |
+
</modules>
|
| 8 |
+
<global>
|
| 9 |
+
|
| 10 |
+
<helpers>
|
| 11 |
+
<sociallogin>
|
| 12 |
+
<class>Mss_Sociallogin_Helper</class>
|
| 13 |
+
</sociallogin>
|
| 14 |
+
</helpers>
|
| 15 |
+
|
| 16 |
+
<models>
|
| 17 |
+
<sociallogin>
|
| 18 |
+
<class>Mss_Sociallogin_Model</class>
|
| 19 |
+
<resourceModel>sociallogin_mysql4</resourceModel>
|
| 20 |
+
</sociallogin>
|
| 21 |
+
</models>
|
| 22 |
+
|
| 23 |
+
<resources>
|
| 24 |
+
<sociallogin_setup>
|
| 25 |
+
<setup>
|
| 26 |
+
<module>Mss_Sociallogin</module>
|
| 27 |
+
<class>Mage_Customer_Model_Entity_Setup</class>
|
| 28 |
+
</setup>
|
| 29 |
+
<connection>
|
| 30 |
+
<use>core_setup</use>
|
| 31 |
+
</connection>
|
| 32 |
+
</sociallogin_setup>
|
| 33 |
+
<sociallogin_write>
|
| 34 |
+
<connection>
|
| 35 |
+
<use>core_write</use>
|
| 36 |
+
</connection>
|
| 37 |
+
</sociallogin_write>
|
| 38 |
+
<sociallogin_read>
|
| 39 |
+
<connection>
|
| 40 |
+
<use>core_read</use>
|
| 41 |
+
</connection>
|
| 42 |
+
</sociallogin_read>
|
| 43 |
+
</resources>
|
| 44 |
+
|
| 45 |
+
</global>
|
| 46 |
+
|
| 47 |
+
</config>
|
app/code/local/Mss/Sociallogin/sql/sociallogin_setup/mysql4-install-0.1.0.php
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
$installer = $this;
|
| 3 |
+
|
| 4 |
+
$installer->startSetup();
|
| 5 |
+
|
| 6 |
+
|
| 7 |
+
/*create user Attribute*/
|
| 8 |
+
|
| 9 |
+
$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
|
| 10 |
+
|
| 11 |
+
$entityTypeId = $setup->getEntityTypeId('customer');
|
| 12 |
+
$attributeSetId = $setup->getDefaultAttributeSetId($entityTypeId);
|
| 13 |
+
$attributeGroupId = $setup->getDefaultAttributeGroupId($entityTypeId, $attributeSetId);
|
| 14 |
+
|
| 15 |
+
$installer->addAttribute("customer", "sociallogin_type", array(
|
| 16 |
+
"type" => "varchar",
|
| 17 |
+
"backend" => "",
|
| 18 |
+
"label" => "Social Login Type",
|
| 19 |
+
"input" => "text",
|
| 20 |
+
"visible" => true,
|
| 21 |
+
"required" => false,
|
| 22 |
+
"default" => "",
|
| 23 |
+
"frontend" => "",
|
| 24 |
+
"unique" => false,
|
| 25 |
+
"note" => "Social Login Type"
|
| 26 |
+
|
| 27 |
+
));
|
| 28 |
+
|
| 29 |
+
$attribute = Mage::getSingleton("eav/config")->getAttribute("customer", "sociallogin_type");
|
| 30 |
+
|
| 31 |
+
|
| 32 |
+
$setup->addAttributeToGroup(
|
| 33 |
+
$entityTypeId,
|
| 34 |
+
$attributeSetId,
|
| 35 |
+
$attributeGroupId,
|
| 36 |
+
'module',
|
| 37 |
+
'999' //sort_order
|
| 38 |
+
);
|
| 39 |
+
|
| 40 |
+
$used_in_forms=array();
|
| 41 |
+
|
| 42 |
+
$used_in_forms[]="adminhtml_customer";
|
| 43 |
+
|
| 44 |
+
$attribute->setData("used_in_forms", $used_in_forms)
|
| 45 |
+
->setData("is_used_for_customer_segment", true)
|
| 46 |
+
->setData("is_system", 0)
|
| 47 |
+
->setData("is_user_defined", 1)
|
| 48 |
+
->setData("is_visible", 1)
|
| 49 |
+
->setData("sort_order", 100)
|
| 50 |
+
;
|
| 51 |
+
$attribute->save();
|
app/design/adminhtml/default/default/layout/bannerslider.xml
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<layout version="0.1.0">
|
| 3 |
+
<bannerslider_adminhtml_bannerslider_index>
|
| 4 |
+
<reference name="content">
|
| 5 |
+
<block type="bannerslider/adminhtml_grid" name="bannerslider" />
|
| 6 |
+
</reference>
|
| 7 |
+
</bannerslider_adminhtml_bannerslider_index>
|
| 8 |
+
</layout>
|
app/design/adminhtml/default/default/layout/connector.xml
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<layout>
|
| 3 |
+
<default>
|
| 4 |
+
<reference name="notifications">
|
| 5 |
+
<block type="connector/adminhtml_notifications" name="connector_notifications" template="connector/notification.phtml"/>
|
| 6 |
+
</reference>
|
| 7 |
+
</default>
|
| 8 |
+
</layout>
|
app/design/adminhtml/default/default/layout/pushnotification.xml
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<layout version="0.1.0">
|
| 3 |
+
<pushnotification_adminhtml_pushnotificationbackend_index>
|
| 4 |
+
<reference name="content">
|
| 5 |
+
<block type="pushnotification/adminhtml_pushnotificationbackend" name="pushnotificationbackend" template="pushnotification/pushnotificationbackend.phtml"/>
|
| 6 |
+
</reference>
|
| 7 |
+
</pushnotification_adminhtml_pushnotificationbackend_index>
|
| 8 |
+
</layout>
|
app/design/adminhtml/default/default/template/connector/notification.phtml
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php if ($message = $this->getMessage()) : ?>
|
| 2 |
+
<div class="notification-global"><?php echo $message ?></div>
|
| 3 |
+
<?php endif; ?>
|
app/design/adminhtml/default/default/template/pushnotification/pushnotificationbackend.phtml
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<div class="container" align="center" >
|
| 2 |
+
<div class="row" style="background-color:#DCDCDC; width:50%" >
|
| 3 |
+
<h1>PUSH NOTIFICATION</h1>
|
| 4 |
+
<form id='notification-form' role="form">
|
| 5 |
+
<div class="form-group">
|
| 6 |
+
<label class="type" id="label"><h4>Notification Type :</h4></label>
|
| 7 |
+
<select id="notification_type">
|
| 8 |
+
<option value="0">Send Notification to Both IOS/Android</option>
|
| 9 |
+
<option value="1">Send Notification to Android Only</option>
|
| 10 |
+
<option value="2">Send Notification to IOS only</option>
|
| 11 |
+
</select>
|
| 12 |
+
|
| 13 |
+
</div>
|
| 14 |
+
<div class="form-group" style="margin-top:23px;">
|
| 15 |
+
<div><label id="label"><h4>Pushnotification Message:</h4></label></div>
|
| 16 |
+
<div><textarea rows="10" cols="50" id="message"></textarea></div>
|
| 17 |
+
|
| 18 |
+
</div>
|
| 19 |
+
<div style="margin-top:23px; padding:18px;">
|
| 20 |
+
<button style="width:140px;height:35px" type="button" id="butt" class="btn btn-default" onclick="pushnotification()">Send Notification</button>
|
| 21 |
+
</div>
|
| 22 |
+
<div id="information">
|
| 23 |
+
</div>
|
| 24 |
+
</form>
|
| 25 |
+
</div>
|
| 26 |
+
</div>
|
| 27 |
+
<script>
|
| 28 |
+
function pushnotification()
|
| 29 |
+
{
|
| 30 |
+
|
| 31 |
+
var url='<?php echo Mage::helper("adminhtml")->getUrl("admin_pushnotification/adminhtml_pushnotificationbackend/notificationsend");?>';
|
| 32 |
+
var message = document.getElementById("message").value;
|
| 33 |
+
if(!message){
|
| 34 |
+
alert('Pushnotification Message field is required.');
|
| 35 |
+
return;
|
| 36 |
+
}
|
| 37 |
+
|
| 38 |
+
new Ajax.Request(url, {
|
| 39 |
+
method:'get',
|
| 40 |
+
parameters: {'message':message,'notification_type':document.getElementById("notification_type").options[document.getElementById("notification_type").selectedIndex].value},
|
| 41 |
+
onSuccess: function(transport) {
|
| 42 |
+
var response = transport.responseText;
|
| 43 |
+
document.getElementById("information").innerHTML = response;
|
| 44 |
+
},
|
| 45 |
+
onFailure: function() {
|
| 46 |
+
document.getElementById("information").innerHTML = 'There is error in sending notification.';
|
| 47 |
+
|
| 48 |
+
}
|
| 49 |
+
});
|
| 50 |
+
}
|
| 51 |
+
|
| 52 |
+
|
| 53 |
+
</script>
|
| 54 |
+
<style>
|
| 55 |
+
.type {
|
| 56 |
+
margin-left: -51px;
|
| 57 |
+
}
|
| 58 |
+
</style>
|
app/design/frontend/base/default/layout/mpaypal.xml
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<layout version="0.1.0">
|
| 3 |
+
<mpaypal_index_mpaypal>
|
| 4 |
+
<action method="setCacheLifetime" />
|
| 5 |
+
<reference name="root">
|
| 6 |
+
<action method="setTemplate"><template>page/1column.phtml</template></action>
|
| 7 |
+
</reference>
|
| 8 |
+
<reference name="content">
|
| 9 |
+
<block type="mpaypal/index" name="mpaypal_index" template="mpaypal/index.phtml"/>
|
| 10 |
+
</reference>
|
| 11 |
+
</mpaypal_index_mpaypal>
|
| 12 |
+
</layout>
|
| 13 |
+
|
app/design/frontend/base/default/layout/payu.xml
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<layout version="0.1.0">
|
| 3 |
+
<payu_index_index>
|
| 4 |
+
<action method="setCacheLifetime" />
|
| 5 |
+
<reference name="root">
|
| 6 |
+
<action method="setTemplate"><template>page/1column.phtml</template></action>
|
| 7 |
+
</reference>
|
| 8 |
+
<reference name="content">
|
| 9 |
+
<block type="payu/index" name="payu_index" template="payu/index.phtml"/>
|
| 10 |
+
</reference>
|
| 11 |
+
</payu_index_index>
|
| 12 |
+
</layout>
|
| 13 |
+
|
app/design/frontend/base/default/template/mpaypal/index.phtml
ADDED
|
@@ -0,0 +1,117 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<html>
|
| 2 |
+
<head>
|
| 3 |
+
<SCRIPT LANGUAGE="JavaScript">
|
| 4 |
+
function fnSubmit() {
|
| 5 |
+
|
| 6 |
+
window.document.paypalForm.submit();
|
| 7 |
+
return;
|
| 8 |
+
}
|
| 9 |
+
</SCRIPT>
|
| 10 |
+
<style>
|
| 11 |
+
#loader::after {
|
| 12 |
+
bottom: 0;
|
| 13 |
+
content: "Please Wait...";
|
| 14 |
+
height: 40px;
|
| 15 |
+
left: 0px;
|
| 16 |
+
position: absolute;
|
| 17 |
+
right: 0;
|
| 18 |
+
text-align: center;
|
| 19 |
+
top: 58%;
|
| 20 |
+
}
|
| 21 |
+
#loader {
|
| 22 |
+
height: 100%;
|
| 23 |
+
position: fixed;
|
| 24 |
+
text-align: center;
|
| 25 |
+
width: 100%;
|
| 26 |
+
}
|
| 27 |
+
#loader img {
|
| 28 |
+
position: absolute;
|
| 29 |
+
text-align: center;
|
| 30 |
+
top: 50%;
|
| 31 |
+
}
|
| 32 |
+
#loader img {
|
| 33 |
+
left: 50%;
|
| 34 |
+
position: absolute;
|
| 35 |
+
text-align: center;
|
| 36 |
+
top: 50%;
|
| 37 |
+
transform: translate(-50%, -50%);
|
| 38 |
+
}
|
| 39 |
+
</style>
|
| 40 |
+
</head>
|
| 41 |
+
|
| 42 |
+
|
| 43 |
+
<body LANGUAGE="javascript" onload="return fnSubmit()" >
|
| 44 |
+
|
| 45 |
+
<div id="loader">
|
| 46 |
+
<img src="<?php echo $this->getSkinUrl('images/magentomobileshop/magentomobileshop_loader.gif') ?>"/>
|
| 47 |
+
</div>
|
| 48 |
+
<?php
|
| 49 |
+
|
| 50 |
+
$order_id = Mage::app()->getRequest()->getParam('orderid');
|
| 51 |
+
|
| 52 |
+
if(isset($order_id)):
|
| 53 |
+
|
| 54 |
+
$order = Mage::getModel('sales/order')->loadByIncrementId($order_id);
|
| 55 |
+
if (!$order->getId()):
|
| 56 |
+
echo "<script type='text/javascript'>location.href ='".
|
| 57 |
+
Mage::getBaseUrl()."mpaypal/index/failure'</script>";
|
| 58 |
+
|
| 59 |
+
exit;
|
| 60 |
+
endif;
|
| 61 |
+
|
| 62 |
+
|
| 63 |
+
$MERCHANT_EMAIL = Mage::getStoreConfig('magentomobileshop_payment/mpaypal/mpaypal_email');
|
| 64 |
+
|
| 65 |
+
|
| 66 |
+
if(!$MERCHANT_EMAIL):
|
| 67 |
+
echo "<script type='text/javascript'>location.href ='".
|
| 68 |
+
Mage::getBaseUrl()."mpaypal/index/failure'</script>";
|
| 69 |
+
exit;
|
| 70 |
+
endif;
|
| 71 |
+
|
| 72 |
+
if(Mage::getStoreConfig('magentomobileshop_payment/mpaypal/mpaypal_mode')):
|
| 73 |
+
$PAYPAL_BASE_URL = "https://www.paypal.com/cgi-bin/webscr";
|
| 74 |
+
else:
|
| 75 |
+
$PAYPAL_BASE_URL = "https://www.sandbox.paypal.com/cgi-bin/webscr";
|
| 76 |
+
endif;
|
| 77 |
+
|
| 78 |
+
|
| 79 |
+
?>
|
| 80 |
+
|
| 81 |
+
|
| 82 |
+
<div id="container" style="display: none;" >
|
| 83 |
+
<h2>Mpaypal Form</h2>
|
| 84 |
+
|
| 85 |
+
<form name="paypalForm" action="<?php echo $PAYPAL_BASE_URL; ?>" method='post'>
|
| 86 |
+
<input type="hidden" name="business" value="<?php echo $MERCHANT_EMAIL?>" />
|
| 87 |
+
<input type="hidden" name="notify_url" value="<?php echo Mage::getBaseUrl()?>mpaypal/index/ipn" />
|
| 88 |
+
<input type="hidden" name="cancel_return" value="<?php echo Mage::getBaseUrl()?>mpaypal/index/failure" />
|
| 89 |
+
<input type="hidden" name="return" value="<?php echo Mage::getBaseUrl()?>mpaypal/index/success" />
|
| 90 |
+
<input type="hidden" name="return_url" value="<?php echo Mage::getBaseUrl()?>mpaypal/index/success" />
|
| 91 |
+
<input type="hidden" name="rm" value="2" />
|
| 92 |
+
|
| 93 |
+
<input type="hidden" name="lc" value="" />
|
| 94 |
+
<input type="hidden" name="no_shipping" value="1" />
|
| 95 |
+
<input type="hidden" name="no_note" value="1" />
|
| 96 |
+
|
| 97 |
+
<input type="hidden" name="currency_code" value="<?php echo $order->getOrderCurrencyCode()?>" />
|
| 98 |
+
<input type="hidden" name="page_style" value="paypal" />
|
| 99 |
+
<input type="hidden" name="charset" value="utf-8" />
|
| 100 |
+
<input type="hidden" name="item_name" value="<?php echo $order->getIncrementId() ?>" />
|
| 101 |
+
|
| 102 |
+
<input type="hidden" value="_xclick" name="cmd"/>
|
| 103 |
+
<input type="hidden" name="amount" value="<?php echo sprintf('%0.2f',$order->getGrandTotal())?>" />
|
| 104 |
+
<input type='submit' name='pay_now' id='pay_now' value='Pay' />
|
| 105 |
+
</form>
|
| 106 |
+
|
| 107 |
+
|
| 108 |
+
</div>
|
| 109 |
+
</body>
|
| 110 |
+
</html>
|
| 111 |
+
<?php
|
| 112 |
+
else:
|
| 113 |
+
echo "<script type='text/javascript'>location.href ='".
|
| 114 |
+
Mage::getBaseUrl()."mpaypal/index/failure'</script>";
|
| 115 |
+
exit;
|
| 116 |
+
endif;
|
| 117 |
+
?>
|
app/design/frontend/base/default/template/payu/index.phtml
ADDED
|
@@ -0,0 +1,265 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<html>
|
| 2 |
+
<head>
|
| 3 |
+
<SCRIPT LANGUAGE="JavaScript">
|
| 4 |
+
function fnSubmit() {
|
| 5 |
+
|
| 6 |
+
window.document.payuForm.submit();
|
| 7 |
+
return;
|
| 8 |
+
}
|
| 9 |
+
</SCRIPT>
|
| 10 |
+
<style>
|
| 11 |
+
#loader::after {
|
| 12 |
+
bottom: 0;
|
| 13 |
+
content: "Please Wait...";
|
| 14 |
+
height: 40px;
|
| 15 |
+
left: 0px;
|
| 16 |
+
position: absolute;
|
| 17 |
+
right: 0;
|
| 18 |
+
text-align: center;
|
| 19 |
+
top: 58%;
|
| 20 |
+
}
|
| 21 |
+
#loader {
|
| 22 |
+
height: 100%;
|
| 23 |
+
position: fixed;
|
| 24 |
+
text-align: center;
|
| 25 |
+
width: 100%;
|
| 26 |
+
}
|
| 27 |
+
#loader img {
|
| 28 |
+
position: absolute;
|
| 29 |
+
text-align: center;
|
| 30 |
+
top: 50%;
|
| 31 |
+
}
|
| 32 |
+
#loader img {
|
| 33 |
+
left: 50%;
|
| 34 |
+
position: absolute;
|
| 35 |
+
text-align: center;
|
| 36 |
+
top: 50%;
|
| 37 |
+
transform: translate(-50%, -50%);
|
| 38 |
+
}
|
| 39 |
+
</style>
|
| 40 |
+
</head>
|
| 41 |
+
|
| 42 |
+
|
| 43 |
+
<body LANGUAGE="javascript" onload="return fnSubmit()" >
|
| 44 |
+
|
| 45 |
+
<div id="loader">
|
| 46 |
+
<img src="<?php echo $this->getSkinUrl('images/magentomobileshop/magentomobileshop_loader.gif') ?>"/>
|
| 47 |
+
</div>
|
| 48 |
+
<?php
|
| 49 |
+
|
| 50 |
+
$order_id = Mage::app()->getRequest()->getParam('orderid');
|
| 51 |
+
|
| 52 |
+
if(isset($order_id)):
|
| 53 |
+
|
| 54 |
+
$order = Mage::getModel('sales/order')->loadByIncrementId($order_id);
|
| 55 |
+
if (!$order->getId()):
|
| 56 |
+
echo "<script type='text/javascript'>location.href ='".
|
| 57 |
+
Mage::getBaseUrl()."payu/index/failure'</script>";
|
| 58 |
+
|
| 59 |
+
exit;
|
| 60 |
+
endif;
|
| 61 |
+
|
| 62 |
+
$street = implode($order->getShippingAddress()->getStreet(),',');
|
| 63 |
+
$contact = $order->getShippingAddress()->getTelephone();
|
| 64 |
+
$city = $order->getShippingAddress()->getCity();
|
| 65 |
+
$pincode = $order->getShippingAddress()->getPostcode();
|
| 66 |
+
$lastname = $order->getShippingAddress()->getLastname();
|
| 67 |
+
$Country = $order->getShippingAddress()->getCountry_id();
|
| 68 |
+
$State = $order->getShippingAddress()->getRegion();
|
| 69 |
+
|
| 70 |
+
$productinfo= $order->getShippingAddress()->getAddress_type();
|
| 71 |
+
|
| 72 |
+
$MERCHANT_KEY = Mage::getStoreConfig('magentomobileshop_payment/payucheckout_shared/payu_key');
|
| 73 |
+
$SALT = Mage::getStoreConfig('magentomobileshop_payment/payucheckout_shared/payu_salt');
|
| 74 |
+
|
| 75 |
+
|
| 76 |
+
if(Mage::getStoreConfig('magentomobileshop_payment/payucheckout_shared/payu_mode')):
|
| 77 |
+
$PAYU_BASE_URL = "https://secure.payu.in";
|
| 78 |
+
else:
|
| 79 |
+
$PAYU_BASE_URL = "https://test.payu.in";
|
| 80 |
+
endif;
|
| 81 |
+
|
| 82 |
+
$action = '';
|
| 83 |
+
$posted = array();
|
| 84 |
+
|
| 85 |
+
|
| 86 |
+
$posted['amount'] = $order->getBase_grand_total();
|
| 87 |
+
$posted['firstname'] = $order->getCustomer_firstname()?$order->getCustomer_firstname():$order->getBillingAddress()->getName();
|
| 88 |
+
$posted['email'] = $order->getCustomer_email();
|
| 89 |
+
$posted['phone'] = $order->getShippingAddress()->getTelephone();
|
| 90 |
+
$posted['productinfo'] = $order_id;
|
| 91 |
+
$posted['surl'] = $this->getUrl('payu/index/success');
|
| 92 |
+
$posted['furl'] = $this->getUrl('payu/index/failure');
|
| 93 |
+
$posted['service_provider'] = 'payu_paisa';
|
| 94 |
+
$posted['txnid'] = $order_id;
|
| 95 |
+
$posted['website'] = Mage::getBaseUrl();
|
| 96 |
+
$posted['lastname']= $order->getShippingAddress()->getLastname();
|
| 97 |
+
$posted['address1'] = $street;
|
| 98 |
+
$posted['address2'] = $street;
|
| 99 |
+
$posted['city'] = $order->getShippingAddress()->getCity();
|
| 100 |
+
$posted['state'] = $order->getShippingAddress()->getRegion();
|
| 101 |
+
$posted['country'] = $order->getShippingAddress()->getCountry_id();
|
| 102 |
+
$posted['zipcode'] = $order->getShippingAddress()->getPostcode();
|
| 103 |
+
|
| 104 |
+
|
| 105 |
+
if(!empty($_POST)):
|
| 106 |
+
|
| 107 |
+
foreach($_POST as $key => $value):
|
| 108 |
+
$posted[$key] = $value;
|
| 109 |
+
endforeach;
|
| 110 |
+
endif;
|
| 111 |
+
|
| 112 |
+
$formError = 0;
|
| 113 |
+
if(empty($posted['txnid'])):
|
| 114 |
+
$txnid = substr(hash('sha256', mt_rand() . microtime()), 0, 20);
|
| 115 |
+
else:
|
| 116 |
+
$txnid = $posted['txnid'];
|
| 117 |
+
endif;
|
| 118 |
+
$hash = '';
|
| 119 |
+
|
| 120 |
+
$hashSequence = "key|txnid|amount|productinfo|firstname|email|udf1|udf2|udf3|udf4|udf5|udf6|udf7|udf8|udf9|udf10";
|
| 121 |
+
if(empty($posted['hash']) && sizeof($posted) > 0):
|
| 122 |
+
|
| 123 |
+
if( empty($posted['key'])
|
| 124 |
+
|| empty($posted['txnid'])
|
| 125 |
+
|| empty($posted['amount'])
|
| 126 |
+
|| empty($posted['firstname'])
|
| 127 |
+
|| empty($posted['email'])
|
| 128 |
+
|| empty($posted['phone'])
|
| 129 |
+
|| empty($posted['productinfo'])
|
| 130 |
+
|| empty($posted['surl'])
|
| 131 |
+
|| empty($posted['furl'])
|
| 132 |
+
|| empty($posted['service_provider'])
|
| 133 |
+
):
|
| 134 |
+
$formError = 1;
|
| 135 |
+
else:
|
| 136 |
+
|
| 137 |
+
$hashVarsSeq = explode('|', $hashSequence);
|
| 138 |
+
$hash_string = '';
|
| 139 |
+
foreach($hashVarsSeq as $hash_var):
|
| 140 |
+
$hash_string .= isset($posted[$hash_var]) ? $posted[$hash_var] : '';
|
| 141 |
+
$hash_string .= '|';
|
| 142 |
+
endforeach;
|
| 143 |
+
|
| 144 |
+
$hash_string .= $SALT;
|
| 145 |
+
$hash = strtolower(hash('sha512', $hash_string));
|
| 146 |
+
$action = $PAYU_BASE_URL . '/_payment.php';
|
| 147 |
+
endif;
|
| 148 |
+
elseif(!empty($posted['hash'])):
|
| 149 |
+
$hash = $posted['hash'];
|
| 150 |
+
$action = $PAYU_BASE_URL . '/_payment.php';
|
| 151 |
+
endif;
|
| 152 |
+
|
| 153 |
+
|
| 154 |
+
?>
|
| 155 |
+
|
| 156 |
+
|
| 157 |
+
<div id="container" style="display: none;" >
|
| 158 |
+
<h2>PayU Form</h2>
|
| 159 |
+
|
| 160 |
+
<form action="<?php echo $action; ?>" method="post" name="payuForm">
|
| 161 |
+
<input type="text" name="key" value="<?php echo $MERCHANT_KEY ?>" />
|
| 162 |
+
<input type="text" name="hash" value="<?php echo $hash ?>"/>
|
| 163 |
+
<input type="text" name="txnid" value="<?php echo $txnid ?>" />
|
| 164 |
+
<table>
|
| 165 |
+
<tr>
|
| 166 |
+
<td><b>Mandatory Parameters</b></td>
|
| 167 |
+
</tr>
|
| 168 |
+
<tr>
|
| 169 |
+
<td>Amount: </td>
|
| 170 |
+
<td><input name="amount" value="<?php echo (empty($posted['amount'])) ? '' : $posted['amount']; ?>" /></td>
|
| 171 |
+
<td>First Name: </td>
|
| 172 |
+
<td><input name="firstname" id="firstname" value="<?php echo (empty($posted['firstname'])) ? '' : $posted['firstname']; ?>" /></td>
|
| 173 |
+
</tr>
|
| 174 |
+
<tr>
|
| 175 |
+
<td>Email: </td>
|
| 176 |
+
<td><input name="email" id="email" value="<?php echo (empty($posted['email'])) ? '' : $posted['email']; ?>" /></td>
|
| 177 |
+
<td>Phone: </td>
|
| 178 |
+
<td><input name="phone" value="<?php echo (empty($posted['phone'])) ? '' : $posted['phone']; ?>" /></td>
|
| 179 |
+
</tr>
|
| 180 |
+
<tr>
|
| 181 |
+
<td>Product Info: </td>
|
| 182 |
+
<td colspan="3"><textarea name="productinfo"><?php echo (empty($posted['productinfo'])) ? '' : $posted['productinfo'] ?></textarea></td>
|
| 183 |
+
</tr>
|
| 184 |
+
<tr>
|
| 185 |
+
<td>Success URI: </td>
|
| 186 |
+
<td colspan="3"><input name="surl" value="<?php echo (empty($posted['surl'])) ? '' : $posted['surl'] ?>" size="64" /></td>
|
| 187 |
+
</tr>
|
| 188 |
+
<tr>
|
| 189 |
+
<td>Failure URI: </td>
|
| 190 |
+
<td colspan="3"><input name="furl" value="<?php echo (empty($posted['furl'])) ? '' : $posted['furl'] ?>" size="64" /></td>
|
| 191 |
+
</tr>
|
| 192 |
+
|
| 193 |
+
<tr>
|
| 194 |
+
<td>Service Provider: </td>
|
| 195 |
+
<td colspan="3"><input name="service_provider" value="<?php echo (empty($posted['service_provider'])) ? '' : $posted['service_provider'] ?>" size="64" /></td>
|
| 196 |
+
</tr>
|
| 197 |
+
|
| 198 |
+
|
| 199 |
+
<input name="service_provider" value="<?php echo (empty($posted['txnid'])) ? '' : $posted['txnid'] ?>" size="64" />
|
| 200 |
+
<input name="service_provider" value="<?php echo (empty($posted['website'])) ? '' : $posted['website'] ?>" size="64" />
|
| 201 |
+
|
| 202 |
+
|
| 203 |
+
|
| 204 |
+
<tr>
|
| 205 |
+
<td><b>Optional Parameters</b></td>
|
| 206 |
+
</tr>
|
| 207 |
+
<tr>
|
| 208 |
+
<td>Last Name: </td>
|
| 209 |
+
<td><input name="lastname" id="lastname" value="<?php echo (empty($posted['lastname'])) ? '' : $posted['lastname']; ?>" /></td>
|
| 210 |
+
<td>Cancel URI: </td>
|
| 211 |
+
<td><input name="curl" value="" /></td>
|
| 212 |
+
</tr>
|
| 213 |
+
<tr>
|
| 214 |
+
<td>Address1: </td>
|
| 215 |
+
<td><input name="address1" value="<?php echo (empty($posted['address1'])) ? '' : $posted['address1']; ?>" /></td>
|
| 216 |
+
<td>Address2: </td>
|
| 217 |
+
<td><input name="address2" value="<?php echo (empty($posted['address2'])) ? '' : $posted['address1']; ?>" /></td>
|
| 218 |
+
</tr>
|
| 219 |
+
<tr>
|
| 220 |
+
<td>City: </td>
|
| 221 |
+
<td><input name="city" value="<?php echo (empty($posted['city'])) ? '' : $posted['city']; ?>" /></td>
|
| 222 |
+
<td>State: </td>
|
| 223 |
+
<td><input name="state" value="<?php echo (empty($posted['state'])) ? '' : $posted['state']; ?>" /></td>
|
| 224 |
+
</tr>
|
| 225 |
+
<tr>
|
| 226 |
+
<td>Country: </td>
|
| 227 |
+
<td><input name="country" value="<?php echo (empty($posted['country'])) ? '' : $posted['country']; ?>" /></td>
|
| 228 |
+
<td>Zipcode: </td>
|
| 229 |
+
<td><input name="zipcode" value="<?php echo (empty($posted['zipcode'])) ? '' : $posted['zipcode']; ?>" /></td>
|
| 230 |
+
</tr>
|
| 231 |
+
<tr>
|
| 232 |
+
<td>UDF1: </td>
|
| 233 |
+
<td><input name="udf1" value="<?php echo (empty($posted['udf1'])) ? '' : $posted['udf1']; ?>" /></td>
|
| 234 |
+
<td>UDF2: </td>
|
| 235 |
+
<td><input name="udf2" value="<?php echo (empty($posted['udf2'])) ? '' : $posted['udf2']; ?>" /></td>
|
| 236 |
+
</tr>
|
| 237 |
+
<tr>
|
| 238 |
+
<td>UDF3: </td>
|
| 239 |
+
<td><input name="udf3" value="<?php echo (empty($posted['udf3'])) ? '' : $posted['udf3']; ?>" /></td>
|
| 240 |
+
<td>UDF4: </td>
|
| 241 |
+
<td><input name="udf4" value="<?php echo (empty($posted['udf4'])) ? '' : $posted['udf4']; ?>" /></td>
|
| 242 |
+
</tr>
|
| 243 |
+
<tr>
|
| 244 |
+
<td>UDF5: </td>
|
| 245 |
+
<td><input name="udf5" value="<?php echo (empty($posted['udf5'])) ? '' : $posted['udf5']; ?>" /></td>
|
| 246 |
+
<td>PG: </td>
|
| 247 |
+
<td><input name="pg" value="<?php echo (empty($posted['pg'])) ? '' : $posted['pg']; ?>" /></td>
|
| 248 |
+
</tr>
|
| 249 |
+
<tr>
|
| 250 |
+
|
| 251 |
+
<td colspan="4"><input type="submit" value="Submit" /></td>
|
| 252 |
+
|
| 253 |
+
</tr>
|
| 254 |
+
</table>
|
| 255 |
+
</form>
|
| 256 |
+
</div>
|
| 257 |
+
</body>
|
| 258 |
+
</html>
|
| 259 |
+
<?php
|
| 260 |
+
else:
|
| 261 |
+
echo "<script type='text/javascript'>location.href ='".
|
| 262 |
+
Mage::getBaseUrl()."payu/index/failure'</script>";
|
| 263 |
+
exit;
|
| 264 |
+
endif;
|
| 265 |
+
?>
|
app/design/frontend/base/default/template/payu/test.phtml
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<SCRIPT LANGUAGE="JavaScript">
|
| 2 |
+
function fnSubmit() {
|
| 3 |
+
window.document.payuForm.submit();
|
| 4 |
+
return;
|
| 5 |
+
}
|
| 6 |
+
</SCRIPT>
|
| 7 |
+
<body LANGUAGE="javascript" onload="return fnSubmit()" style="display: none;">
|
| 8 |
+
<form action="<?php echo $this->getUrl('payu/index/success') ?>" method="post" name="payuForm">
|
| 9 |
+
</form>
|
| 10 |
+
</body>
|
app/etc/modules/Mss_Bannerslider.xml
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<!--
|
| 3 |
+
/**
|
| 4 |
+
* Mss
|
| 5 |
+
*
|
| 6 |
+
* NOTICE OF LICENSE
|
| 7 |
+
*
|
| 8 |
+
* This source file is subject to the Mss.com license that is
|
| 9 |
+
* available through the world-wide-web at this URL:
|
| 10 |
+
* http://www.mss.com/license-agreement.html
|
| 11 |
+
*
|
| 12 |
+
* DISCLAIMER
|
| 13 |
+
*
|
| 14 |
+
* Do not edit or add to this file if you wish to upgrade this extension to newer
|
| 15 |
+
* version in the future.
|
| 16 |
+
*
|
| 17 |
+
* @category Mss
|
| 18 |
+
* @package Mss_Bannerslider
|
| 19 |
+
* @copyright Copyright (c) 2012 Mss (http://www.mss.com/)
|
| 20 |
+
* @license http://www.mss.com/license-agreement.html
|
| 21 |
+
*/
|
| 22 |
+
-->
|
| 23 |
+
<config>
|
| 24 |
+
<modules>
|
| 25 |
+
<Mss_Bannerslider>
|
| 26 |
+
<active>true</active>
|
| 27 |
+
<codePool>local</codePool>
|
| 28 |
+
</Mss_Bannerslider>
|
| 29 |
+
</modules>
|
| 30 |
+
</config>
|
app/etc/modules/Mss_Connector.xml
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version = "1.0"?>
|
| 2 |
+
<config>
|
| 3 |
+
<modules>
|
| 4 |
+
<Mss_Connector>
|
| 5 |
+
<active>true</active>
|
| 6 |
+
<codePool>local</codePool>
|
| 7 |
+
</Mss_Connector>
|
| 8 |
+
</modules>
|
| 9 |
+
</config>
|
app/etc/modules/Mss_Mpaypal.xml
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<config>
|
| 3 |
+
<modules>
|
| 4 |
+
<Mss_Mpaypal>
|
| 5 |
+
<active>true</active>
|
| 6 |
+
<codePool>local</codePool>
|
| 7 |
+
|
| 8 |
+
<depends>
|
| 9 |
+
<Mage_Payment />
|
| 10 |
+
</depends>
|
| 11 |
+
</Mss_Mpaypal>
|
| 12 |
+
</modules>
|
| 13 |
+
</config>
|
app/etc/modules/Mss_Payu.xml
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<config>
|
| 3 |
+
<modules>
|
| 4 |
+
<Mss_Payu>
|
| 5 |
+
<active>true</active>
|
| 6 |
+
<codePool>local</codePool>
|
| 7 |
+
<version>0.1.0</version>
|
| 8 |
+
</Mss_Payu>
|
| 9 |
+
</modules>
|
| 10 |
+
</config>
|
app/etc/modules/Mss_Pushnotification.xml
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<config>
|
| 3 |
+
<modules>
|
| 4 |
+
<Mss_Pushnotification>
|
| 5 |
+
<active>true</active>
|
| 6 |
+
<codePool>local</codePool>
|
| 7 |
+
<version>0.1.0</version>
|
| 8 |
+
</Mss_Pushnotification>
|
| 9 |
+
</modules>
|
| 10 |
+
</config>
|
app/etc/modules/Mss_Sociallogin.xml
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<config>
|
| 3 |
+
<modules>
|
| 4 |
+
<Mss_Sociallogin>
|
| 5 |
+
<active>true</active>
|
| 6 |
+
<codePool>local</codePool>
|
| 7 |
+
<version>0.1.0</version>
|
| 8 |
+
</Mss_Sociallogin>
|
| 9 |
+
</modules>
|
| 10 |
+
</config>
|
package.xml
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<package>
|
| 3 |
+
<name>Mss_Connector</name>
|
| 4 |
+
<version>1.4.5</version>
|
| 5 |
+
<stability>stable</stability>
|
| 6 |
+
<license>OSL v1.0</license>
|
| 7 |
+
<channel>community</channel>
|
| 8 |
+
<extends/>
|
| 9 |
+
<summary>Mobile app for Android and Iphone</summary>
|
| 10 |
+
<description>Mobile app for Android and Iphone</description>
|
| 11 |
+
<notes>Product caching added to load product more faster.</notes>
|
| 12 |
+
<authors><author><name>mss</name><user>mss</user><email>mss.yogendra@gmail.com</email></author></authors>
|
| 13 |
+
<date>2016-03-16</date>
|
| 14 |
+
<time>13:51:11</time>
|
| 15 |
+
<contents><target name="magelocal"><dir name="Mss"><dir name="Bannerslider"><dir name="Block"><dir name="Adminhtml"><dir name="Bannerslider"><dir name="Edit"><file name="Form.php" hash="e3aac16542691916765e57238b3679a5"/><dir name="Tab"><file name="Form.php" hash="2aa3ba5ce44ad1ce15393b208008a4f4"/></dir><file name="Tabs.php" hash="d9421ac78bfe2f678b7514e6eea19ade"/></dir><file name="Edit.php" hash="9bca5bea62d4cedb8e458022fa683f92"/><file name="Grid.php" hash="8243e69694f860a3be9b4b2447b04843"/><dir name="Helper"><file name="Image.php" hash="f468b25e5344015483e0519da10bdd43"/></dir></dir><file name="Grid.php" hash="fbf2ede9f191ff040fa7b21e98ac440d"/><dir name="Renderer"><file name="Image.php" hash="451a2fc188826a8cbaee1ea6fc692435"/></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="5c691c3ae014305937e38418706c1c66"/></dir><dir name="Model"><file name="Bannerslider.php" hash="cd768d1bc28ed0a4c1d65d148252227d"/><dir name="Mysql4"><dir name="Bannerslider"><file name="Collection.php" hash="564694cc9b21e2e0a3c5202a6cc2eb99"/></dir><file name="Bannerslider.php" hash="46fc65447f3e41dbbe6194ddf9395e45"/></dir><file name="Observer.php" hash="b3bfac53fe96e0b10ddfeb8eed5bafd0"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="BannersliderController.php" hash="d06ad8e6fd2c82a6c483e0a7246f985e"/></dir><file name="BannerController.php" hash="c3f2cc84c3199eeb47b647b0f4e453d7"/></dir><dir name="etc"><file name="adminhtml.xml" hash="31787cf6a7b306a7fbc8522d8933473c"/><file name="config.xml" hash="34154e2434504e7c0769776199a2cc82"/></dir><dir name="sql"><dir name="bannerslider_setup"><file name="mysql4-install-0.1.0.php" hash="d668f47b50c8910ad91e802afc718ba7"/></dir></dir></dir><dir name="Connector"><dir name="Block"><dir name="Adminhtml"><file name="Notifications.php" hash="6f24014b5a24a4f56410e9754b8aa2d5"/></dir><dir name="System"><dir name="Config"><file name="About.php" hash="2e9dc040ee2d42a57d5c9411f0b999e4"/><file name="Authorizenet.php" hash="ed644e9814fef74147bdddf24cfd75c1"/><file name="Banktransfer.php" hash="77f6ebf2074462cdadf4bccbe2f0d19a"/><file name="Checkmo.php" hash="edfc0fc0b233cd349392e563eeac57ed"/><file name="Cod.php" hash="37d1757764340fd02b8be7ac32434967"/><file name="Mpaypal.php" hash="e69d6a2d58618cf741d4cf503ede70ca"/><file name="Payu.php" hash="d0307013bdf58700a29aa7838ee94e51"/></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="141759dea4d79d818c52231fe75f0686"/></dir><dir name="Model"><file name="Connector.php" hash="e9a927bc0a5974d092ab3af257ee7607"/><dir name="Mysql4"><dir name="Connector"><file name="Collection.php" hash="1f3bb37f160abdf974859f7419a19b65"/></dir><file name="Connector.php" hash="185189264d3275af813349e721ee46fb"/></dir><file name="Observer.php" hash="ae15112ec2d336596fdcce34932805b0"/></dir><dir name="controllers"><file name="CartController.php" hash="7a71fab75c3822c158090a8f44c54e95"/><file name="CreditController.php" hash="fb099f5c645b2008bf058b8e22f7b1ec"/><file name="CustomerController.php" hash="46351cd896aa3c983b681ba58312c7d8"/><file name="FeedbackController.php" hash="89517e40acba9d69cd15ff5ea304da79"/><file name="IndexController.php" hash="176b20d09b3001d26072369b7508a768"/><file name="ItemController.php" hash="698151aa101aec7e80e3f050ce51dc85"/><file name="ItemsController.php" hash="88e5703407cc970c98698419915393f2"/><file name="MenuController.php" hash="63a3ae898fa75e4755d06bd2ddb592e1"/><file name="ProductsController.php" hash="f693df70aa9071bd46ada0af96c61f48"/><file name="SearchController.php" hash="5d1d8975f7a3351d5833c6ad08ecf52b"/><file name="StaticpagesController.php" hash="2c593c6e2328512e2ee966119e18ba44"/><file name="StoreController.php" hash="86b038731080c68ae1e567958b36895c"/><file name="StoreinfoController.php" hash="f37535c137f93dbb8d2eaab9f2f67865"/><file name="TokenController.php" hash="5df87c80c3a9a4832d0ce3580d65dff8"/><file name="WishlistController.php" hash="9a72d73131b3ff380b53ca54fc8361f8"/><file name="_new_ProductsController.php" hash="08523bd31a97f2018cb08f31dfce005d"/></dir><dir name="etc"><file name="adminhtml.xml" hash="77dc75e2c5e73755764a79e08cc7c668"/><file name="config.xml" hash="4b0f127cd01463a6962ef751dd41c86b"/><file name="system.xml" hash="40b6555fa986d797ad206d674204e477"/></dir><dir name="sql"><dir name="connector_setup"><file name="mysql4-install-0.1.0.php" hash="4325ba30b21f9680b11d4b124b9e8181"/><file name="mysql4-upgrade-0.1.0-0.1.1.php" hash="eaa00e880b38ba41580b67785b33ed10"/></dir></dir></dir><dir name="Mpaypal"><dir name="Helper"><file name="Data.php" hash="c3ba57e7cc86210346b1b3f279083c0f"/></dir><dir name="Model"><file name="Mpaypal.php" hash="f49b32aad7d7bed49333534139fd07b7"/><file name="Observer.php" hash="4b92aaf547f0b080d8495cf064574d10"/></dir><dir name="controllers"><file name="IndexController.php" hash="4db5576f750fdf7b1b8b441ddaad9c8b"/></dir><dir name="etc"><file name="config.xml" hash="9ed76ff53b5e0232b4ea442a7e046b14"/><file name="system.xml" hash="2f51ad686858a69e07e8c21baf5d690e"/></dir></dir><dir name="Payu"><dir name="Block"><file name="Index.php" hash="db5ffd63f6cbb9f3320fde4829fcad35"/></dir><dir name="Helper"><file name="Data.php" hash="7800e0e58258b78d0f23a7fec482d120"/></dir><dir name="controllers"><file name="IndexController.php" hash="639ed0868e2a6b1bdbf6444f87565565"/></dir><dir name="etc"><file name="config.xml" hash="c6867fb0cc7efdde39c32a3ecbf62433"/></dir></dir><dir name="Pushnotification"><dir name="Block"><dir name="Adminhtml"><file name="Pushnotificationbackend.php" hash="6b9e143ee7b5fe4fc2642eee977b44bf"/></dir></dir><dir name="Helper"><file name="Data.php" hash="cad971167c1b59a1fdbd967132c61899"/></dir><dir name="Model"><dir name="Entity"><file name="Resource.php" hash="93b6a261762541433fa601aefb60d0a7"/></dir><dir name="Mysql4"><dir name="Pushnotification"><file name="Collection.php" hash="392612adedcb14ec5dcaaa4ea9858091"/></dir><file name="Pushnotification.php" hash="77f6cadb7682377a1de6b275310c1cf6"/></dir><file name="Pushnotification.php" hash="ad5fe0f74049c61402ff99fc32d8164a"/><dir name="System"><dir name="Config"><dir name="Backend"><file name="File.php" hash="d7c74e49b78bb9da3453bd5f414a445f"/><file name="Image.php" hash="e1d98dbf511fe16581b37a8b7b43f5b4"/><file name="Iosmode.php" hash="ff1794ef4844019b7af64192fbd4e122"/></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="PushnotificationbackendController.php" hash="ec4ebd0ad1cfee78d2e67a69698a14e5"/></dir></dir><dir name="etc"><file name="config.xml" hash="f62215f94167b81c5f73aea794a334c4"/><file name="system.xml" hash="a1c7c7ff8ba587ddafc61cd0fd798c7c"/></dir><dir name="sql"><dir name="pushnotification_setup"><file name="mysql4-upgrade-0.1.5-0.1.6.php" hash="418e997bb72afa725389593d4ca2f111"/></dir></dir></dir><dir name="Sociallogin"><dir name="Helper"><file name="Data.php" hash="c5da50448c589d47251ff4e731c7be26"/></dir><dir name="Model"><dir name="Mysql4"><file name="Sociallogin.php" hash="b881bc47c5ee70b1c4c02b59501ffbc5"/></dir><file name="Sociallogin.php" hash="0ba90dadb0f34528c2296704c5cea233"/></dir><dir name="etc"><file name="config.xml" hash="eac1dc2364bc283a9cd5326eb7e852a9"/></dir><dir name="sql"><dir name="sociallogin_setup"><file name="mysql4-install-0.1.0.php" hash="163332cb130dae297af332cbefde58f3"/></dir></dir></dir></dir></target><target name="magedesign"><dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="pushnotification"><file name="pushnotificationbackend.phtml" hash="138add7171fdd7fb326abc4a4f9dbe5a"/></dir><dir name="connector"><file name="notification.phtml" hash="164e5f9e7dcfc5c2d2451f0e77776d77"/></dir></dir><dir name="layout"><file name="bannerslider.xml" hash="a5a76f30bbedca5804646d53e783cdac"/><file name="pushnotification.xml" hash="f7fd974e63c4c7eb5ffac7b059470946"/><file name="connector.xml" hash="97cea6186b75948e6ed0d71da7b48710"/></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="payu.xml" hash="473595488f536cb588c5588a744915a3"/><file name="mpaypal.xml" hash="7b75c5bed6f3142c8bc9e4c1233bf1e9"/></dir><dir name="template"><dir name="payu"><file name="index.phtml" hash="5f54a8eb245364534e7695b1a8fcbf30"/><file name="test.phtml" hash="da4701ff5b2c64444a49f77571e8a00c"/></dir><dir name="mpaypal"><file name="index.phtml" hash="df077c063b2006b9321c96cd6744b19f"/></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir><dir name="modules"><file name="Mss_Bannerslider.xml" hash="7d03ee71d8e860c51478aff5200b0deb"/><file name="Mss_Connector.xml" hash="ba8a5609c9c8c3636f183c5bfe04d664"/><file name="Mss_Payu.xml" hash="5feac03d698b481473223fbe6a8814b1"/><file name="Mss_Pushnotification.xml" hash="2e8e9bc56a5f0ff8bb42f43fb5a3a3db"/><file name="Mss_Sociallogin.xml" hash="8671199bdad3bdecbfe0c47ce9ff05e6"/><file name="Mss_Mpaypal.xml" hash="4d6a7f8d862de8c449b1366727ef0a6d"/></dir></dir></target><target name="mageskin"><dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="images"><dir name="magentomobileshop"><file name="magentomobileshop_loader.gif" hash="453272c9cacd32efe6465961ea8a61dd"/></dir></dir></dir></dir></dir></dir></target></contents>
|
| 16 |
+
<compatible/>
|
| 17 |
+
<dependencies><required><php><min>5.3.0</min><max>7.0.5</max></php></required></dependencies>
|
| 18 |
+
</package>
|
skin/frontend/base/default/images/magentomobileshop/magentomobileshop_loader.gif
ADDED
|
Binary file
|
