Version Notes
Dropping number of subscribers.
Download this release
Release Info
Developer | Calin Diacon |
Extension | dotmailermagento |
Version | 2.0.4 |
Comparing to | |
See all releases |
Code changes from version 1.5.1 to 2.0.4
- app/code/community/Dotdigitalgroup/Email/Block/Adminhtml/Advanced/Admin/Contactsimported.php +20 -0
- app/code/{local/Dotdigitalgroup/Email/Block/Debug/Deletecontacts.php → community/Dotdigitalgroup/Email/Block/Adminhtml/Advanced/Admin/Deletecontactids.php} +2 -3
- app/code/community/Dotdigitalgroup/Email/Block/Adminhtml/Sales/Order/Creditmemo/View.php +198 -0
- app/code/{local/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Password.php → community/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Form/Ajaxvalidate.php} +1 -1
- app/code/community/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Form/Bestsellers.php +20 -0
- app/code/{local/Dotdigitalgroup/Email/Block/Adminhtml/System → community/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Form}/Couponinfo.php +4 -3
- app/code/community/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Form/Creditmemonew.php +21 -0
- app/code/{local/Dotdigitalgroup/Email/Block/Adminhtml/System → community/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Form}/Crosssell.php +3 -4
- app/code/community/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Form/Customernew.php +21 -0
- app/code/community/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Form/Invoicenew.php +20 -0
- app/code/{local/Dotdigitalgroup/Email/Block/Adminhtml/System → community/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Form}/Lostbasket.php +4 -4
- app/code/{local/Dotdigitalgroup/Email/Block/Adminhtml/System → community/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Form}/Mostviewed.php +5 -5
- app/code/community/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Form/Ordernew.php +20 -0
- app/code/community/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Form/Orderupdate.php +20 -0
- app/code/{local/Dotdigitalgroup/Email/Block/Adminhtml/System → community/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Form}/Productpush.php +5 -5
- app/code/{local/Dotdigitalgroup/Email/Block/Adminhtml/System → community/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Form}/Related.php +4 -3
- app/code/{local/Dotdigitalgroup/Email/Block/Adminhtml/System → community/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Form}/Upsell.php +1 -1
- app/code/{local → community}/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Gridlist.php +0 -0
- app/code/{local → community}/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Smsmessagefour.php +0 -0
- app/code/{local → community}/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Smsmessageone.php +0 -0
- app/code/{local → community}/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Smsmessagethree.php +0 -0
- app/code/{local → community}/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Smsmessagetwo.php +4 -7
- app/code/community/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Synccustomerdata.php +31 -0
- app/code/{local → community}/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Validator.php +0 -0
- app/code/{local → community}/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Waitingfield.php +14 -1
- app/code/{local → community}/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Wrapper.php +5 -3
- app/code/{local → community}/Dotdigitalgroup/Email/Block/Adminhtml/System/Recentlyviewed.php +3 -3
- app/code/{local/Dotdigitalgroup/Email/Block/Debug/Countcontacts.php → community/Dotdigitalgroup/Email/Block/Adminhtml/Widget/Button/Reimportorders.php} +3 -4
- app/code/{local/Dotdigitalgroup/Email/Block/Debug/Initialsync.php → community/Dotdigitalgroup/Email/Block/Adminhtml/Widget/Button/Setupdatafields.php} +5 -4
- app/code/{local/Dotdigitalgroup/Email/Block/Debug/Transactionalsync.php → community/Dotdigitalgroup/Email/Block/Adminhtml/Widget/Button/Suppressedcontacts.php} +4 -3
- app/code/{local → community}/Dotdigitalgroup/Email/Block/Basket.php +1 -1
- app/code/{local → community}/Dotdigitalgroup/Email/Block/Coupon.php +0 -0
- app/code/community/Dotdigitalgroup/Email/Block/Customer.php +24 -0
- app/code/community/Dotdigitalgroup/Email/Block/Order.php +27 -0
- app/code/community/Dotdigitalgroup/Email/Block/Order/Creditmemo.php +85 -0
- app/code/community/Dotdigitalgroup/Email/Block/Order/Creditmemo/Items.php +58 -0
- app/code/community/Dotdigitalgroup/Email/Block/Order/Info.php +95 -0
- app/code/community/Dotdigitalgroup/Email/Block/Order/Invoice.php +84 -0
- app/code/community/Dotdigitalgroup/Email/Block/Order/Invoice/Items.php +58 -0
- app/code/{local → community}/Dotdigitalgroup/Email/Block/Products.php +0 -0
- app/code/community/Dotdigitalgroup/Email/Helper/Data.php +492 -0
- app/code/{local → community}/Dotdigitalgroup/Email/Helper/File.php +23 -3
- app/code/{local → community}/Dotdigitalgroup/Email/Helper/Recommended.php +1 -1
- app/code/{local/Dotdigitalgroup/Email/Helper/Api/Restrequest.php → community/Dotdigitalgroup/Email/Model/Abstract/Rest.php} +46 -42
- app/code/{local → community}/Dotdigitalgroup/Email/Model/Connector/Account.php +10 -7
- app/code/community/Dotdigitalgroup/Email/Model/Connector/Api/Client.php +592 -0
- app/code/community/Dotdigitalgroup/Email/Model/Connector/Campaign.php +84 -0
- app/code/{local → community}/Dotdigitalgroup/Email/Model/Connector/Customer.php +59 -112
- app/code/{local → community}/Dotdigitalgroup/Email/Model/Connector/Order.php +26 -27
- app/code/community/Dotdigitalgroup/Email/Model/Connector/Test.php +65 -0
- app/code/community/Dotdigitalgroup/Email/Model/Cron.php +84 -0
- app/code/community/Dotdigitalgroup/Email/Model/Customer/Contact.php +204 -0
- app/code/community/Dotdigitalgroup/Email/Model/Customer/Guest.php +74 -0
- app/code/{local/Dotdigitalgroup/Email/Model/Connector → community/Dotdigitalgroup/Email/Model/Customer}/Wishlist.php +10 -10
- app/code/{local → community}/Dotdigitalgroup/Email/Model/Customer/Wishlist/Item.php +13 -8
- app/code/{local → community}/Dotdigitalgroup/Email/Model/Dynamic/Product/Mapper.php +0 -0
- app/code/{local → community}/Dotdigitalgroup/Email/Model/Dynamic/Recommended.php +0 -1
- app/code/community/Dotdigitalgroup/Email/Model/Email/Contact.php +130 -0
- app/code/community/Dotdigitalgroup/Email/Model/Email/Order.php +62 -0
- app/code/community/Dotdigitalgroup/Email/Model/Email/Send.php +488 -0
- app/code/community/Dotdigitalgroup/Email/Model/Newsletter/Subscriber.php +139 -0
- app/code/community/Dotdigitalgroup/Email/Model/Observer.php +248 -0
- app/code/community/Dotdigitalgroup/Email/Model/Resource/Email/Contact.php +12 -0
- app/code/community/Dotdigitalgroup/Email/Model/Resource/Email/Contact/Collection.php +19 -0
- app/code/community/Dotdigitalgroup/Email/Model/Resource/Email/Order.php +9 -0
- app/code/community/Dotdigitalgroup/Email/Model/Resource/Email/Order/Collection.php +15 -0
- app/code/community/Dotdigitalgroup/Email/Model/Resource/Email/Send.php +10 -0
- app/code/community/Dotdigitalgroup/Email/Model/Resource/Email/Send/Collection.php +10 -0
- app/code/community/Dotdigitalgroup/Email/Model/Resource/Setup.php +6 -0
- app/code/community/Dotdigitalgroup/Email/Model/Sales/Order.php +137 -0
- app/code/{local/Dotdigitalgroup/Email/Model/Order.php → community/Dotdigitalgroup/Email/Model/Sales/Order/State.php} +1 -1
- app/code/{local → community}/Dotdigitalgroup/Email/Model/Sales/Quote.php +54 -91
- app/code/{local → community}/Dotdigitalgroup/Email/Model/Sales/Sms.php +7 -12
- app/code/{local → community}/Dotdigitalgroup/Email/Model/System/Config/Backend/Syncschedule/Customer.php +10 -11
- app/code/{local → community}/Dotdigitalgroup/Email/Model/System/Config/Source/Activebasket.php +0 -0
- app/code/community/Dotdigitalgroup/Email/Model/System/Config/Source/Addressbooks.php +37 -0
- app/code/community/Dotdigitalgroup/Email/Model/System/Config/Source/Campaigns.php +34 -0
- app/code/community/Dotdigitalgroup/Email/Model/System/Config/Source/Datafields.php +37 -0
- app/code/{local → community}/Dotdigitalgroup/Email/Model/System/Config/Source/Displaytype.php +0 -0
- app/code/{local → community}/Dotdigitalgroup/Email/Model/System/Config/Source/Gridview.php +0 -0
- app/code/{local → community}/Dotdigitalgroup/Email/Model/System/Config/Source/Lostbasket.php +0 -0
- app/code/{local → community}/Dotdigitalgroup/Email/Model/System/Config/Source/Orderlimit.php +0 -0
- app/code/{local → community}/Dotdigitalgroup/Email/Model/System/Config/Source/Orderstatus.php +0 -0
- app/code/community/Dotdigitalgroup/Email/Model/System/Config/Source/Sendcampaignafter.php +32 -0
- app/code/{local → community}/Dotdigitalgroup/Email/Model/System/Config/Source/Timeperiod.php +0 -0
- app/code/community/Dotdigitalgroup/Email/controllers/Adminhtml/ConnectorController.php +135 -0
- app/code/community/Dotdigitalgroup/Email/controllers/Adminhtml/DebugController.php +48 -0
- app/code/community/Dotdigitalgroup/Email/controllers/CustomerController.php +11 -0
- app/code/community/Dotdigitalgroup/Email/controllers/EmailController.php +70 -0
- app/code/community/Dotdigitalgroup/Email/controllers/OrderController.php +65 -0
- app/code/{local → community}/Dotdigitalgroup/Email/etc/adminhtml.xml +9 -6
- app/code/community/Dotdigitalgroup/Email/etc/config.xml +464 -0
- app/code/{local → community}/Dotdigitalgroup/Email/etc/system.xml +688 -434
- app/code/community/Dotdigitalgroup/Email/sql/.DS_Store +0 -0
- app/code/{local → community}/Dotdigitalgroup/Email/sql/connector_setup/mysql4-install-0.1.0.php +4 -11
- app/code/{local → community}/Dotdigitalgroup/Email/sql/connector_setup/mysql4-upgrade-1.1.1-1.1.2.php +0 -0
- app/code/community/Dotdigitalgroup/Email/sql/connector_setup/mysql4-upgrade-1.1.2-1.5.0.php +8 -0
- app/code/community/Dotdigitalgroup/Email/sql/connector_setup/mysql4-upgrade-1.5.0-2.0.0.php +75 -0
- app/code/community/Dotdigitalgroup/Email/sql/connector_setup/mysql4-upgrade-2.0.0-2.0.1.php +9 -0
- app/code/community/Dotdigitalgroup/Email/sql/connector_setup/mysql4-upgrade-2.0.1-2.0.2.php +52 -0
- app/code/community/Dotdigitalgroup/Email/sql/connector_setup/mysql4-upgrade-2.0.3-2.0.4.php +34 -0
- app/code/community/Dotdigitalgroup/Email/sql/connector_setup/mysql4-upgrade-2.0.4-2.1.0.php +33 -0
- app/code/local/Dotdigitalgroup/Email/Block/Adminhtml/System/Bestsellers.php +0 -18
- app/code/local/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Insertvariable.php +0 -13
- app/code/local/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Messagedefault.php +0 -46
- app/code/local/Dotdigitalgroup/Email/Block/Debug/Forcecustomersync.php +0 -21
- app/code/local/Dotdigitalgroup/Email/Block/Debug/Forcelostbasketsync.php +0 -21
- app/code/local/Dotdigitalgroup/Email/Block/Debug/Forcesuppressedsync.php +0 -21
- app/code/local/Dotdigitalgroup/Email/Block/Debug/Rescuenow.php +0 -21
- app/code/local/Dotdigitalgroup/Email/Block/Debug/Testcredentials.php +0 -21
- app/code/local/Dotdigitalgroup/Email/Helper/Api/DotNetExample.php +0 -182
- app/code/local/Dotdigitalgroup/Email/Helper/Data.php +0 -96
- app/code/local/Dotdigitalgroup/Email/Model/Account/Test.php +0 -40
- app/code/local/Dotdigitalgroup/Email/Model/Api/Rest.php +0 -729
- app/code/local/Dotdigitalgroup/Email/Model/Connector/Quote.php +0 -75
- app/code/local/Dotdigitalgroup/Email/Model/Cron.php +0 -58
- app/code/local/Dotdigitalgroup/Email/Model/Customer/Customer.php +0 -480
- app/code/local/Dotdigitalgroup/Email/Model/Customer/Suppressed.php +0 -85
- app/code/local/Dotdigitalgroup/Email/Model/Newsletter/Subscriber.php +0 -19
- app/code/local/Dotdigitalgroup/Email/Model/Observer.php +0 -189
- app/code/local/Dotdigitalgroup/Email/Model/Sales/Order.php +0 -96
- app/code/local/Dotdigitalgroup/Email/Model/System/Config/Backend/Syncschedule/Suppressed.php +0 -54
- app/code/local/Dotdigitalgroup/Email/Model/System/Config/Source/Addressbooks.php +0 -30
- app/code/local/Dotdigitalgroup/Email/Model/System/Config/Source/Campaigns.php +0 -30
- app/code/local/Dotdigitalgroup/Email/Model/System/Config/Source/Datafields.php +0 -35
- app/code/local/Dotdigitalgroup/Email/Model/System/Config/Source/Displayifnot.php +0 -12
- app/code/local/Dotdigitalgroup/Email/Model/System/Config/Source/Sendcampain.php +0 -30
- app/code/local/Dotdigitalgroup/Email/Model/System/Config/Source/Syncfrequency.php +0 -40
- app/code/local/Dotdigitalgroup/Email/Test/Model/Product.php +0 -18
- app/code/local/Dotdigitalgroup/Email/controllers/Adminhtml/DebugController.php +0 -125
- app/code/local/Dotdigitalgroup/Email/controllers/EmailController.php +0 -133
- app/code/local/Dotdigitalgroup/Email/etc/config.xml +0 -289
- app/code/local/Varien/Data/Collection.php +0 -818
- app/design/frontend/base/default/layout/connector.xml +68 -1
- app/design/frontend/base/default/template/connector/customer/new.phtml +47 -0
- app/design/frontend/base/default/template/connector/customer/system/config/synccustomerdata.phtml +34 -0
- app/design/frontend/base/default/template/{page/connector → connector}/products.phtml +4 -7
- app/design/frontend/base/default/template/connector/roi_code.phtml +10 -16
- app/design/frontend/base/default/template/connector/sales/order/creditmemo.phtml +1 -0
- app/design/frontend/base/default/template/connector/sales/order/creditmemo/items.phtml +64 -0
- app/design/frontend/base/default/template/connector/sales/order/info.phtml +58 -0
- app/design/frontend/base/default/template/connector/sales/order/invoice.phtml +1 -0
- app/design/frontend/base/default/template/connector/sales/order/invoice/items.phtml +61 -0
- app/design/frontend/base/default/template/connector/sales/order/invoice/renderer/default.phtml +273 -0
- app/design/frontend/base/default/template/connector/sales/order/new.phtml +211 -0
- app/design/frontend/base/default/template/connector/sales/order/totals.phtml +22 -0
- app/design/frontend/base/default/template/connector/tracking_code.phtml +10 -2
- app/design/frontend/base/default/template/page/blank.phtml +1 -1
- app/etc/modules/Dotdigitalgroup_Email.xml +1 -1
- app/locale/en_US/Dotdigitalgroup_Email.csv +146 -0
- package.xml +5 -5
app/code/community/Dotdigitalgroup/Email/Block/Adminhtml/Advanced/Admin/Contactsimported.php
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Dotdigitalgroup_Email_Block_Adminhtml_Advanced_Admin_Contactsimported extends Mage_Adminhtml_Block_System_Config_Form_Field
|
4 |
+
{
|
5 |
+
|
6 |
+
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element) {
|
7 |
+
return $this->_getAddRowButtonHtml($this->__('Count Imported Contacts Now'));
|
8 |
+
}
|
9 |
+
|
10 |
+
protected function _getAddRowButtonHtml($title) {
|
11 |
+
$url = $this->getUrl("*/debug/countcontacts");
|
12 |
+
|
13 |
+
return $this->getLayout()->createBlock('adminhtml/widget_button')
|
14 |
+
->setType('button')
|
15 |
+
->setLabel($this->__($title))
|
16 |
+
->setOnClick("window.location.href='" . $url . "'")
|
17 |
+
->toHtml();
|
18 |
+
}
|
19 |
+
|
20 |
+
}
|
app/code/{local/Dotdigitalgroup/Email/Block/Debug/Deletecontacts.php → community/Dotdigitalgroup/Email/Block/Adminhtml/Advanced/Admin/Deletecontactids.php}
RENAMED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
class
|
4 |
{
|
5 |
|
6 |
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element) {
|
@@ -9,7 +9,7 @@ class Dotdigitalgroup_Email_Block_Debug_Deletecontacts extends Mage_Adminhtml_Bl
|
|
9 |
}
|
10 |
|
11 |
protected function _getAddRowButtonHtml($title) {
|
12 |
-
$url = Mage::helper('adminhtml')->getUrl("
|
13 |
|
14 |
return $this->getLayout()->createBlock('adminhtml/widget_button')
|
15 |
->setType('button')
|
@@ -17,5 +17,4 @@ class Dotdigitalgroup_Email_Block_Debug_Deletecontacts extends Mage_Adminhtml_Bl
|
|
17 |
->setOnClick("window.location.href='" . $url . "'")
|
18 |
->toHtml();
|
19 |
}
|
20 |
-
|
21 |
}
|
1 |
<?php
|
2 |
|
3 |
+
class Dotdigitalgroup_Email_Block_Adminhtml_Advanced_Admin_Deletecontactids extends Mage_Adminhtml_Block_System_Config_Form_Field
|
4 |
{
|
5 |
|
6 |
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element) {
|
9 |
}
|
10 |
|
11 |
protected function _getAddRowButtonHtml($title) {
|
12 |
+
$url = Mage::helper('adminhtml')->getUrl("*/debug/deletecontactids");
|
13 |
|
14 |
return $this->getLayout()->createBlock('adminhtml/widget_button')
|
15 |
->setType('button')
|
17 |
->setOnClick("window.location.href='" . $url . "'")
|
18 |
->toHtml();
|
19 |
}
|
|
|
20 |
}
|
app/code/community/Dotdigitalgroup/Email/Block/Adminhtml/Sales/Order/Creditmemo/View.php
ADDED
@@ -0,0 +1,198 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Dotdigitalgroup_Email_Block_Adminhtml_Sales_Order_Creditmemo_View extends Mage_Adminhtml_Block_Widget_Form_Container
|
3 |
+
{
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Add & remove control buttons
|
7 |
+
*
|
8 |
+
*/
|
9 |
+
public function __construct()
|
10 |
+
{
|
11 |
+
$this->_objectId = 'creditmemo_id';
|
12 |
+
$this->_controller = 'sales_order_creditmemo';
|
13 |
+
$this->_mode = 'view';
|
14 |
+
|
15 |
+
parent::__construct();
|
16 |
+
|
17 |
+
$this->_removeButton('save');
|
18 |
+
$this->_removeButton('reset');
|
19 |
+
$this->_removeButton('delete');
|
20 |
+
|
21 |
+
if ($this->getCreditmemo()->canCancel()) {
|
22 |
+
$this->_addButton('cancel', array(
|
23 |
+
'label' => Mage::helper('sales')->__('Cancel'),
|
24 |
+
'class' => 'delete',
|
25 |
+
'onclick' => 'setLocation(\''.$this->getCancelUrl().'\')'
|
26 |
+
)
|
27 |
+
);
|
28 |
+
}
|
29 |
+
|
30 |
+
if ($this->_isAllowedAction('emails')) {
|
31 |
+
$this->addButton('send_notification', array(
|
32 |
+
'label' => Mage::helper('sales')->__('Send Email'),
|
33 |
+
'onclick' => 'confirmSetLocation(\''
|
34 |
+
. Mage::helper('sales')->__('Are you sure you want to send Creditmemo email to customer?')
|
35 |
+
. '\', \'' . $this->getEmailUrl() . '\')'
|
36 |
+
));
|
37 |
+
}
|
38 |
+
|
39 |
+
if ($this->getCreditmemo()->canRefund()) {
|
40 |
+
$this->_addButton('refund', array(
|
41 |
+
'label' => Mage::helper('sales')->__('Refund'),
|
42 |
+
'class' => 'save',
|
43 |
+
'onclick' => 'setLocation(\''.$this->getRefundUrl().'\')'
|
44 |
+
)
|
45 |
+
);
|
46 |
+
}
|
47 |
+
|
48 |
+
if ($this->getCreditmemo()->canVoid()) {
|
49 |
+
$this->_addButton('void', array(
|
50 |
+
'label' => Mage::helper('sales')->__('Void'),
|
51 |
+
'class' => 'save',
|
52 |
+
'onclick' => 'setLocation(\''.$this->getVoidUrl().'\')'
|
53 |
+
)
|
54 |
+
);
|
55 |
+
}
|
56 |
+
|
57 |
+
if ($this->getCreditmemo()->getId()) {
|
58 |
+
$this->_addButton('print', array(
|
59 |
+
'label' => Mage::helper('sales')->__('Print'),
|
60 |
+
'class' => 'save',
|
61 |
+
'onclick' => 'setLocation(\''.$this->getPrintUrl().'\')'
|
62 |
+
)
|
63 |
+
);
|
64 |
+
}
|
65 |
+
}
|
66 |
+
|
67 |
+
/**
|
68 |
+
* Retrieve creditmemo model instance
|
69 |
+
*
|
70 |
+
* @return Mage_Sales_Model_Order_Creditmemo
|
71 |
+
*/
|
72 |
+
public function getCreditmemo()
|
73 |
+
{
|
74 |
+
return Mage::registry('current_creditmemo');
|
75 |
+
}
|
76 |
+
|
77 |
+
/**
|
78 |
+
* Retrieve text for header
|
79 |
+
*
|
80 |
+
* @return string
|
81 |
+
*/
|
82 |
+
public function getHeaderText()
|
83 |
+
{
|
84 |
+
if ($this->getCreditmemo()->getEmailSent()) {
|
85 |
+
$emailSent = Mage::helper('sales')->__('the credit memo email was sent');
|
86 |
+
}
|
87 |
+
else {
|
88 |
+
$emailSent = Mage::helper('sales')->__('the credit memo email is not sent');
|
89 |
+
}
|
90 |
+
return Mage::helper('sales')->__('Credit Memo #%1$s | %3$s | %2$s (%4$s)', $this->getCreditmemo()->getIncrementId(), $this->formatDate($this->getCreditmemo()->getCreatedAtDate(), 'medium', true), $this->getCreditmemo()->getStateName(), $emailSent);
|
91 |
+
}
|
92 |
+
|
93 |
+
/**
|
94 |
+
* Retrieve back url
|
95 |
+
*
|
96 |
+
* @return string
|
97 |
+
*/
|
98 |
+
public function getBackUrl()
|
99 |
+
{
|
100 |
+
return $this->getUrl(
|
101 |
+
'*/sales_order/view',
|
102 |
+
array(
|
103 |
+
'order_id' => $this->getCreditmemo()->getOrderId(),
|
104 |
+
'active_tab'=> 'order_creditmemos'
|
105 |
+
));
|
106 |
+
}
|
107 |
+
|
108 |
+
/**
|
109 |
+
* Retrieve capture url
|
110 |
+
*
|
111 |
+
* @return string
|
112 |
+
*/
|
113 |
+
public function getCaptureUrl()
|
114 |
+
{
|
115 |
+
return $this->getUrl('*/*/capture', array('creditmemo_id'=>$this->getCreditmemo()->getId()));
|
116 |
+
}
|
117 |
+
|
118 |
+
/**
|
119 |
+
* Retrieve void url
|
120 |
+
*
|
121 |
+
* @return string
|
122 |
+
*/
|
123 |
+
public function getVoidUrl()
|
124 |
+
{
|
125 |
+
return $this->getUrl('*/*/void', array('creditmemo_id'=>$this->getCreditmemo()->getId()));
|
126 |
+
}
|
127 |
+
|
128 |
+
/**
|
129 |
+
* Retrieve cancel url
|
130 |
+
*
|
131 |
+
* @return string
|
132 |
+
*/
|
133 |
+
public function getCancelUrl()
|
134 |
+
{
|
135 |
+
return $this->getUrl('*/*/cancel', array('creditmemo_id'=>$this->getCreditmemo()->getId()));
|
136 |
+
}
|
137 |
+
|
138 |
+
/**
|
139 |
+
* Retrieve email url
|
140 |
+
*
|
141 |
+
* @return string
|
142 |
+
*/
|
143 |
+
public function getEmailUrl()
|
144 |
+
{
|
145 |
+
return $this->getUrl('*/*/email', array(
|
146 |
+
'creditmemo_id' => $this->getCreditmemo()->getId(),
|
147 |
+
'order_id' => $this->getCreditmemo()->getOrderId()
|
148 |
+
));
|
149 |
+
}
|
150 |
+
|
151 |
+
/**
|
152 |
+
* Retrieve print url
|
153 |
+
*
|
154 |
+
* @return string
|
155 |
+
*/
|
156 |
+
public function getPrintUrl()
|
157 |
+
{
|
158 |
+
return $this->getUrl('*/*/print', array(
|
159 |
+
'creditmemo_id' => $this->getCreditmemo()->getId()
|
160 |
+
));
|
161 |
+
}
|
162 |
+
|
163 |
+
/**
|
164 |
+
* Update 'back' button url
|
165 |
+
*
|
166 |
+
* @return Mage_Adminhtml_Block_Widget_Container | Mage_Adminhtml_Block_Sales_Order_Creditmemo_View
|
167 |
+
*/
|
168 |
+
public function updateBackButtonUrl($flag)
|
169 |
+
{
|
170 |
+
if ($flag) {
|
171 |
+
if ($this->getCreditmemo()->getBackUrl()) {
|
172 |
+
return $this->_updateButton(
|
173 |
+
'back',
|
174 |
+
'onclick',
|
175 |
+
'setLocation(\'' . $this->getCreditmemo()->getBackUrl() . '\')'
|
176 |
+
);
|
177 |
+
}
|
178 |
+
|
179 |
+
return $this->_updateButton(
|
180 |
+
'back',
|
181 |
+
'onclick',
|
182 |
+
'setLocation(\'' . $this->getUrl('*/sales_creditmemo/') . '\')'
|
183 |
+
);
|
184 |
+
}
|
185 |
+
return $this;
|
186 |
+
}
|
187 |
+
|
188 |
+
/**
|
189 |
+
* Check whether action is allowed
|
190 |
+
*
|
191 |
+
* @param string $action
|
192 |
+
* @return bool
|
193 |
+
*/
|
194 |
+
public function _isAllowedAction($action)
|
195 |
+
{
|
196 |
+
return Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/' . $action);
|
197 |
+
}
|
198 |
+
}
|
app/code/{local/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Password.php → community/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Form/Ajaxvalidate.php}
RENAMED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
class
|
4 |
{
|
5 |
public function _getElementHtml(Varien_Data_Form_Element_Abstract$element){
|
6 |
|
1 |
<?php
|
2 |
|
3 |
+
class Dotdigitalgroup_Email_Block_Adminhtml_System_Config_Form_Ajaxvalidate extends Mage_Adminhtml_Block_System_Config_Form_Field
|
4 |
{
|
5 |
public function _getElementHtml(Varien_Data_Form_Element_Abstract$element){
|
6 |
|
app/code/community/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Form/Bestsellers.php
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Dotdigitalgroup_Email_Block_Adminhtml_System_Config_Form_Bestsellers extends Mage_Adminhtml_Block_System_Config_Form_Field
|
4 |
+
{
|
5 |
+
/** label */
|
6 |
+
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
|
7 |
+
{
|
8 |
+
$baseUrl = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
|
9 |
+
$helper = Mage::helper('connector');
|
10 |
+
$code = $helper->getPasscode();
|
11 |
+
$order = $helper->getLastOrderNo();
|
12 |
+
if(!strlen($code)) $code = '[PLEASE SET UP A PASSCODE]';
|
13 |
+
if(!$order) $order = '[PLEASE MAP THE LAST ORDER NO]';
|
14 |
+
$text = $baseUrl . 'connector/email/products/order/@' . $order . '@/code/' . $code . '/mode/bestsellers';
|
15 |
+
$element->setData('value', $text);
|
16 |
+
$element->setData('disabled', 'disabled');
|
17 |
+
return parent::_getElementHtml($element);
|
18 |
+
|
19 |
+
}
|
20 |
+
}
|
app/code/{local/Dotdigitalgroup/Email/Block/Adminhtml/System → community/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Form}/Couponinfo.php
RENAMED
@@ -1,14 +1,15 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
class
|
4 |
{
|
|
|
5 |
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
|
6 |
{
|
7 |
-
$
|
8 |
$code = Mage::helper('connector')->getPasscode();
|
9 |
if(!strlen($code))
|
10 |
$code = '[PLEASE SET UP A PASSCODE]';
|
11 |
-
$text = $
|
12 |
|
13 |
$element->setData('value', $text);
|
14 |
$element->setData('disabled', 'disabled');
|
1 |
<?php
|
2 |
|
3 |
+
class Dotdigitalgroup_Email_Block_Adminhtml_System_Config_Form_Couponinfo extends Mage_Adminhtml_Block_System_Config_Form_Field
|
4 |
{
|
5 |
+
/** label */
|
6 |
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
|
7 |
{
|
8 |
+
$baseUrl = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
|
9 |
$code = Mage::helper('connector')->getPasscode();
|
10 |
if(!strlen($code))
|
11 |
$code = '[PLEASE SET UP A PASSCODE]';
|
12 |
+
$text = $baseUrl . 'connector/email/coupon/id/[INSERT ID HERE]/code/'. $code;
|
13 |
|
14 |
$element->setData('value', $text);
|
15 |
$element->setData('disabled', 'disabled');
|
app/code/community/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Form/Creditmemonew.php
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Dotdigitalgroup_Email_Block_Adminhtml_System_Config_Form_Creditmemonew extends Mage_Adminhtml_Block_System_Config_Form_Field
|
4 |
+
{
|
5 |
+
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element){
|
6 |
+
|
7 |
+
$baseUrl = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
|
8 |
+
$helper = Mage::helper('connector');
|
9 |
+
$code = $helper->getPasscode();
|
10 |
+
$orderId = $helper->getMappedOrderId();
|
11 |
+
|
12 |
+
if(!strlen($code))
|
13 |
+
$code = '[PLEASE SET UP A PASSCODE]';
|
14 |
+
$text = $baseUrl . 'connector/order/creditmemo/id/@' . $orderId . '@/code/'. $code;
|
15 |
+
|
16 |
+
$element->setData('value', $text);
|
17 |
+
|
18 |
+
return parent::_getElementHtml($element);
|
19 |
+
}
|
20 |
+
|
21 |
+
}
|
app/code/{local/Dotdigitalgroup/Email/Block/Adminhtml/System → community/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Form}/Crosssell.php
RENAMED
@@ -1,10 +1,10 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
class
|
4 |
{
|
5 |
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
|
6 |
{
|
7 |
-
$
|
8 |
$helper = Mage::helper('connector');
|
9 |
$code = $helper->getPasscode();
|
10 |
$order = $helper->getLastOrderNo();
|
@@ -12,9 +12,8 @@ class Dotdigitalgroup_Email_Block_Adminhtml_System_Crosssell extends Mage_Adminh
|
|
12 |
if(!strlen($code) && !strlen($order)) $code = '[PLEASE SET UP A PASSCODE]';
|
13 |
if(!$order) $order = '[PLEASE MAP THE LAST ORDER NO]';
|
14 |
|
15 |
-
$text = $
|
16 |
$element->setData('value', $text);
|
17 |
-
$element->setData('disabled', 'disabled');
|
18 |
return parent::_getElementHtml($element);
|
19 |
}
|
20 |
}
|
1 |
<?php
|
2 |
|
3 |
+
class Dotdigitalgroup_Email_Block_Adminhtml_System_Config_Form_Crosssell extends Mage_Adminhtml_Block_System_Config_Form_Field
|
4 |
{
|
5 |
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
|
6 |
{
|
7 |
+
$baseUrl = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
|
8 |
$helper = Mage::helper('connector');
|
9 |
$code = $helper->getPasscode();
|
10 |
$order = $helper->getLastOrderNo();
|
12 |
if(!strlen($code) && !strlen($order)) $code = '[PLEASE SET UP A PASSCODE]';
|
13 |
if(!$order) $order = '[PLEASE MAP THE LAST ORDER NO]';
|
14 |
|
15 |
+
$text = $baseUrl . 'connector/email/products/order/@' . $order . '@/code/' . $code . '/mode/crosssell';
|
16 |
$element->setData('value', $text);
|
|
|
17 |
return parent::_getElementHtml($element);
|
18 |
}
|
19 |
}
|
app/code/community/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Form/Customernew.php
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Dotdigitalgroup_Email_Block_Adminhtml_System_Config_Form_Customernew extends Mage_Adminhtml_Block_System_Config_Form_Field
|
4 |
+
{
|
5 |
+
/** label */
|
6 |
+
public function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
|
7 |
+
{
|
8 |
+
$baseUrl = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
|
9 |
+
$helper = Mage::helper('connector');
|
10 |
+
$code = $helper->getPasscode();
|
11 |
+
|
12 |
+
$customerId = $helper->getMappedCustomerId();
|
13 |
+
if(!strlen($code)) $code = '[PLEASE SET UP A PASSCODE]';
|
14 |
+
|
15 |
+
$text = $baseUrl . 'connector/customer/new/id/@' . $customerId . '@' . '/code/' . $code;
|
16 |
+
$element->setData('value', $text);
|
17 |
+
|
18 |
+
return parent::_getElementHtml($element);
|
19 |
+
}
|
20 |
+
|
21 |
+
}
|
app/code/community/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Form/Invoicenew.php
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Dotdigitalgroup_Email_Block_Adminhtml_System_Config_Form_Invoicenew extends Mage_Adminhtml_Block_System_Config_Form_Field
|
4 |
+
{
|
5 |
+
/** label */
|
6 |
+
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
|
7 |
+
{
|
8 |
+
$baseUrl = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
|
9 |
+
$helper = Mage::helper('connector');
|
10 |
+
$code = $helper->getPasscode();
|
11 |
+
$orderId = $helper->getMappedOrderId();
|
12 |
+
|
13 |
+
if(!strlen($code)) $code = '[PLEASE SET UP A PASSCODE]';
|
14 |
+
|
15 |
+
$text = $baseUrl . 'connector/order/invoice/id/@' . $orderId . '@/code/' . $code;
|
16 |
+
$element->setData('value', $text);
|
17 |
+
|
18 |
+
return parent::_getElementHtml($element);
|
19 |
+
}
|
20 |
+
}
|
app/code/{local/Dotdigitalgroup/Email/Block/Adminhtml/System → community/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Form}/Lostbasket.php
RENAMED
@@ -1,18 +1,18 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
class
|
4 |
{
|
5 |
|
|
|
6 |
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
|
7 |
{
|
8 |
-
$
|
9 |
$code = Mage::helper('connector')->getPasscode();
|
10 |
if(!strlen($code))
|
11 |
$code = '[PLEASE SET UP A PASSCODE]';
|
12 |
-
$text = $
|
13 |
|
14 |
$element->setData('value', $text);
|
15 |
-
$element->setData('disabled', 'disabled');
|
16 |
return parent::_getElementHtml($element);
|
17 |
}
|
18 |
|
1 |
<?php
|
2 |
|
3 |
+
class Dotdigitalgroup_Email_Block_Adminhtml_System_Config_Form_Lostbasket extends Mage_Adminhtml_Block_System_Config_Form_Field
|
4 |
{
|
5 |
|
6 |
+
/** label */
|
7 |
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
|
8 |
{
|
9 |
+
$baseUrl = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
|
10 |
$code = Mage::helper('connector')->getPasscode();
|
11 |
if(!strlen($code))
|
12 |
$code = '[PLEASE SET UP A PASSCODE]';
|
13 |
+
$text = $baseUrl . 'connector/email/basket/email/@EMAIL@/code/'. $code;
|
14 |
|
15 |
$element->setData('value', $text);
|
|
|
16 |
return parent::_getElementHtml($element);
|
17 |
}
|
18 |
|
app/code/{local/Dotdigitalgroup/Email/Block/Adminhtml/System → community/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Form}/Mostviewed.php
RENAMED
@@ -1,18 +1,18 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
class
|
4 |
{
|
|
|
5 |
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
|
6 |
{
|
7 |
-
$
|
8 |
$code = Mage::helper('connector')->getPasscode();
|
9 |
$order = Mage::helper('connector')->getLastOrderNo();
|
10 |
if(!strlen($code)) $code = '[PLEASE SET UP A PASSCODE]';
|
11 |
if(!$order) $order = '[PLEASE MAP THE LAST ORDER NO]';
|
12 |
-
$text = $
|
13 |
$element->setData('value', $text);
|
14 |
-
$element->setData('disabled', 'disabled');
|
15 |
-
return parent::_getElementHtml($element);
|
16 |
|
|
|
17 |
}
|
18 |
}
|
1 |
<?php
|
2 |
|
3 |
+
class Dotdigitalgroup_Email_Block_Adminhtml_System_Config_Form_Mostviewed extends Mage_Adminhtml_Block_System_Config_Form_Field
|
4 |
{
|
5 |
+
/** label */
|
6 |
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
|
7 |
{
|
8 |
+
$baseUrl = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
|
9 |
$code = Mage::helper('connector')->getPasscode();
|
10 |
$order = Mage::helper('connector')->getLastOrderNo();
|
11 |
if(!strlen($code)) $code = '[PLEASE SET UP A PASSCODE]';
|
12 |
if(!$order) $order = '[PLEASE MAP THE LAST ORDER NO]';
|
13 |
+
$text = $baseUrl . 'connector/email/products/order/@' . $order . '@/code/' . $code . '/mode/mostviewed';
|
14 |
$element->setData('value', $text);
|
|
|
|
|
15 |
|
16 |
+
return parent::_getElementHtml($element);
|
17 |
}
|
18 |
}
|
app/code/community/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Form/Ordernew.php
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Dotdigitalgroup_Email_Block_Adminhtml_System_Config_Form_Ordernew extends Mage_Adminhtml_Block_System_Config_Form_Field
|
3 |
+
{
|
4 |
+
/** label */
|
5 |
+
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
|
6 |
+
{
|
7 |
+
|
8 |
+
$baseUrl = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
|
9 |
+
$helper = Mage::helper('connector');
|
10 |
+
$code = $helper->getPasscode();
|
11 |
+
$orderId = $helper->getMappedOrderId();
|
12 |
+
|
13 |
+
if(!strlen($code)) $code = '[PLEASE SET UP A PASSCODE]';
|
14 |
+
|
15 |
+
$text = $baseUrl . 'connector/order/new/id/@' . $orderId . '@/code/' . $code;
|
16 |
+
$element->setData('value', $text);
|
17 |
+
|
18 |
+
return parent::_getElementHtml($element);
|
19 |
+
}
|
20 |
+
}
|
app/code/community/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Form/Orderupdate.php
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Dotdigitalgroup_Email_Block_Adminhtml_System_Config_Form_Orderupdate extends Mage_Adminhtml_Block_System_Config_Form_Field
|
3 |
+
{
|
4 |
+
/** label */
|
5 |
+
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
|
6 |
+
{
|
7 |
+
|
8 |
+
$baseUrl = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
|
9 |
+
$helper = Mage::helper('connector');
|
10 |
+
$code = $helper->getPasscode();
|
11 |
+
$orderId = $helper->getMappedOrderId();
|
12 |
+
|
13 |
+
if(!strlen($code)) $code = '[PLEASE SET UP A PASSCODE]';
|
14 |
+
|
15 |
+
$text = $baseUrl . 'connector/order/udpate/id/@' . $orderId . '@/code/' . $code;
|
16 |
+
$element->setData('value', $text);
|
17 |
+
|
18 |
+
return parent::_getElementHtml($element);
|
19 |
+
}
|
20 |
+
}
|
app/code/{local/Dotdigitalgroup/Email/Block/Adminhtml/System → community/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Form}/Productpush.php
RENAMED
@@ -1,19 +1,19 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
class
|
4 |
{
|
|
|
5 |
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
|
6 |
{
|
7 |
-
$
|
8 |
$helper = Mage::helper('connector');
|
9 |
$code = $helper->getPasscode();
|
10 |
$order = $helper->getLastOrderNo();
|
11 |
if(!strlen($code)) $code = '[PLEASE SET UP A PASSCODE]';
|
12 |
if(!$order) $order = '[PLEASE MAP THE LAST ORDER NO]';
|
13 |
-
$text = $
|
14 |
$element->setData('value', $text);
|
15 |
-
$element->setData('disabled', 'disabled');
|
16 |
-
return parent::_getElementHtml($element);
|
17 |
|
|
|
18 |
}
|
19 |
}
|
1 |
<?php
|
2 |
|
3 |
+
class Dotdigitalgroup_Email_Block_Adminhtml_System_Config_Form_Productpush extends Mage_Adminhtml_Block_System_Config_Form_Field
|
4 |
{
|
5 |
+
/** label */
|
6 |
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
|
7 |
{
|
8 |
+
$baseUrl = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
|
9 |
$helper = Mage::helper('connector');
|
10 |
$code = $helper->getPasscode();
|
11 |
$order = $helper->getLastOrderNo();
|
12 |
if(!strlen($code)) $code = '[PLEASE SET UP A PASSCODE]';
|
13 |
if(!$order) $order = '[PLEASE MAP THE LAST ORDER NO]';
|
14 |
+
$text = $baseUrl . 'connector/email/products/order/@' . $order . '@/code/' . $code . '/mode/productpush';
|
15 |
$element->setData('value', $text);
|
|
|
|
|
16 |
|
17 |
+
return parent::_getElementHtml($element);
|
18 |
}
|
19 |
}
|
app/code/{local/Dotdigitalgroup/Email/Block/Adminhtml/System → community/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Form}/Related.php
RENAMED
@@ -1,16 +1,17 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
class
|
4 |
{
|
5 |
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
|
6 |
{
|
7 |
-
$
|
8 |
$helper = Mage::helper('connector');
|
9 |
$code = $helper->getPasscode();
|
|
|
10 |
$order = $helper->getLastOrderNo();
|
11 |
if(!strlen($code)) $code = '[PLEASE SET UP A PASSCODE]';
|
12 |
if(!$order) $order = '[PLEASE MAP THE LAST ORDER NO]';
|
13 |
-
$text = $
|
14 |
$element->setData('value', $text);
|
15 |
|
16 |
return parent::_getElementHtml($element);
|
1 |
<?php
|
2 |
|
3 |
+
class Dotdigitalgroup_Email_Block_Adminhtml_System_Config_Form_Related extends Mage_Adminhtml_Block_System_Config_Form_Field
|
4 |
{
|
5 |
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
|
6 |
{
|
7 |
+
$baseUrl = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
|
8 |
$helper = Mage::helper('connector');
|
9 |
$code = $helper->getPasscode();
|
10 |
+
|
11 |
$order = $helper->getLastOrderNo();
|
12 |
if(!strlen($code)) $code = '[PLEASE SET UP A PASSCODE]';
|
13 |
if(!$order) $order = '[PLEASE MAP THE LAST ORDER NO]';
|
14 |
+
$text = $baseUrl . 'connector/email/products/order/@' . $order . '@/code/' . $code . '/mode/related';
|
15 |
$element->setData('value', $text);
|
16 |
|
17 |
return parent::_getElementHtml($element);
|
app/code/{local/Dotdigitalgroup/Email/Block/Adminhtml/System → community/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Form}/Upsell.php
RENAMED
@@ -1,5 +1,5 @@
|
|
1 |
<?php
|
2 |
-
class
|
3 |
{
|
4 |
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
|
5 |
{
|
1 |
<?php
|
2 |
+
class Dotdigitalgroup_Email_Block_Adminhtml_System_Config_Form_Upsell extends Mage_Adminhtml_Block_System_Config_Form_Field
|
3 |
{
|
4 |
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
|
5 |
{
|
app/code/{local → community}/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Gridlist.php
RENAMED
File without changes
|
app/code/{local → community}/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Smsmessagefour.php
RENAMED
File without changes
|
app/code/{local → community}/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Smsmessageone.php
RENAMED
File without changes
|
app/code/{local → community}/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Smsmessagethree.php
RENAMED
File without changes
|
app/code/{local → community}/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Smsmessagetwo.php
RENAMED
@@ -9,13 +9,10 @@ class Dotdigitalgroup_Email_Block_Adminhtml_System_Config_Smsmessagetwo extends
|
|
9 |
|
10 |
$element->setData('placeholder', self::DEFAULT_TEXT);
|
11 |
|
12 |
-
$element->setData('after_element_html',
|
13 |
-
|
14 |
-
<a href='#' onclick=\"injectText('sms_section_sms_message_two_message', '{{var
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
");
|
19 |
return parent::_getElementHtml($element);
|
20 |
}
|
21 |
|
9 |
|
10 |
$element->setData('placeholder', self::DEFAULT_TEXT);
|
11 |
|
12 |
+
$element->setData('after_element_html',
|
13 |
+
"<a href='#' onclick=\"injectText('sms_section_sms_message_two_message', '{{var order_number}}');return false;\">Insert Order Number</a>
|
14 |
+
<a href='#' onclick=\"injectText('sms_section_sms_message_two_message', '{{var customer_name}}');return false;\">Insert Customer Name</a>"
|
15 |
+
);
|
|
|
|
|
|
|
16 |
return parent::_getElementHtml($element);
|
17 |
}
|
18 |
|
app/code/community/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Synccustomerdata.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Dotdigitalgroup_Email_Block_Adminhtml_System_Config_Synccustomerdata extends Mage_Adminhtml_Block_System_Config_Form_Field
|
4 |
+
{
|
5 |
+
public function render(Varien_Data_Form_Element_Abstract $element)
|
6 |
+
{
|
7 |
+
|
8 |
+
$element->unsScope()->unsCanUseWebsiteValue()->unsCanUseDefaultValue();
|
9 |
+
return parent::render($element);
|
10 |
+
|
11 |
+
}
|
12 |
+
|
13 |
+
protected function _getAddRowButtonHtml($label) {
|
14 |
+
$params = Mage::app()->getRequest()->getParams();
|
15 |
+
|
16 |
+
$url = Mage::helper('adminhtml')->getUrl("*/connector/forcecustomersync", $params);
|
17 |
+
|
18 |
+
return $this->getLayout()->createBlock('adminhtml/widget_button')
|
19 |
+
->setType('button')
|
20 |
+
->setLabel($label)
|
21 |
+
->setOnClick("window.location.href='" . $url . "'")
|
22 |
+
->toHtml();
|
23 |
+
}
|
24 |
+
|
25 |
+
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
|
26 |
+
{
|
27 |
+
$originalData = $element->getOriginalData();
|
28 |
+
return $this->_getAddRowButtonHtml($originalData['button_label']);
|
29 |
+
}
|
30 |
+
|
31 |
+
}
|
app/code/{local → community}/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Validator.php
RENAMED
File without changes
|
app/code/{local → community}/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Waitingfield.php
RENAMED
@@ -2,12 +2,20 @@
|
|
2 |
|
3 |
class Dotdigitalgroup_Email_Block_Adminhtml_System_Config_Waitingfield extends Mage_Adminhtml_Block_System_Config_Form_Field
|
4 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
|
6 |
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
|
7 |
{
|
8 |
// Get the default HTML for this option
|
9 |
$html = parent::_getElementHtml($element);
|
10 |
|
|
|
11 |
$html .= sprintf('<div id="loadingmask" style="position: fixed;">
|
12 |
<div class="loader" id="loading-mask-loader">
|
13 |
<img src="%sskin/adminhtml/default/default/images/ajax-loader-tr.gif" alt="%s"/>%s', preg_replace('/index.php\//', '', $this->getBaseUrl()), $this->__('Loading...'), $this->__('Loading...'))
|
@@ -20,7 +28,10 @@ class Dotdigitalgroup_Email_Block_Adminhtml_System_Config_Waitingfield extends M
|
|
20 |
jQuery.noConflict();
|
21 |
jQuery(document).ready(function() {
|
22 |
//hide the load image field
|
23 |
-
jQuery("#row_connector_api_settings_api_credentials_validator
|
|
|
|
|
|
|
24 |
var loadingmask = jQuery("#loadingmask");
|
25 |
loadingmask.hide();
|
26 |
loadingmask.css({top : "50\%", left: "50\%"})
|
@@ -28,6 +39,8 @@ class Dotdigitalgroup_Email_Block_Adminhtml_System_Config_Waitingfield extends M
|
|
28 |
jQuery("button").click(function(){
|
29 |
|
30 |
jQuery("body").css({"background-color": "black", "opacity": "0.4"});
|
|
|
|
|
31 |
|
32 |
loadingmask.show();
|
33 |
loadingmask.css({"display": "block", "opacity" : "1"});
|
2 |
|
3 |
class Dotdigitalgroup_Email_Block_Adminhtml_System_Config_Waitingfield extends Mage_Adminhtml_Block_System_Config_Form_Field
|
4 |
{
|
5 |
+
public function render(Varien_Data_Form_Element_Abstract $element)
|
6 |
+
{
|
7 |
+
|
8 |
+
$element->unsScope()->unsCanUseWebsiteValue()->unsCanUseDefaultValue();
|
9 |
+
return parent::render($element);
|
10 |
+
|
11 |
+
}
|
12 |
|
13 |
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
|
14 |
{
|
15 |
// Get the default HTML for this option
|
16 |
$html = parent::_getElementHtml($element);
|
17 |
|
18 |
+
|
19 |
$html .= sprintf('<div id="loadingmask" style="position: fixed;">
|
20 |
<div class="loader" id="loading-mask-loader">
|
21 |
<img src="%sskin/adminhtml/default/default/images/ajax-loader-tr.gif" alt="%s"/>%s', preg_replace('/index.php\//', '', $this->getBaseUrl()), $this->__('Loading...'), $this->__('Loading...'))
|
28 |
jQuery.noConflict();
|
29 |
jQuery(document).ready(function() {
|
30 |
//hide the load image field
|
31 |
+
jQuery("#row_connector_api_settings_api_credentials_validator").hide();
|
32 |
+
jQuery("#row_connector_sync_settings_sync_customer_schedule_validator").hide();
|
33 |
+
|
34 |
+
|
35 |
var loadingmask = jQuery("#loadingmask");
|
36 |
loadingmask.hide();
|
37 |
loadingmask.css({top : "50\%", left: "50\%"})
|
39 |
jQuery("button").click(function(){
|
40 |
|
41 |
jQuery("body").css({"background-color": "black", "opacity": "0.4"});
|
42 |
+
jQuery("#row_connector_api_settings_api_credentials_validator").show();
|
43 |
+
jQuery("#row_connector_sync_settings_sync_customer_schedule_validator").show();
|
44 |
|
45 |
loadingmask.show();
|
46 |
loadingmask.css({"display": "block", "opacity" : "1"});
|
app/code/{local → community}/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Wrapper.php
RENAMED
@@ -7,6 +7,8 @@ class Dotdigitalgroup_Email_Block_Adminhtml_System_Config_Wrapper extends Mage_A
|
|
7 |
{
|
8 |
$element->setData('onchange', "apiValidation(this.form, this);");
|
9 |
|
|
|
|
|
10 |
$element->setData('after_element_html', "
|
11 |
<script>
|
12 |
document.observe('dom:loaded', function(){
|
@@ -17,14 +19,14 @@ class Dotdigitalgroup_Email_Block_Adminhtml_System_Config_Wrapper extends Mage_A
|
|
17 |
var api_user = $('connector_api_settings_api_credentials_username');
|
18 |
var api_password = $('connector_api_settings_api_credentials_password');
|
19 |
|
20 |
-
var reloadurl = '{$
|
21 |
|
22 |
new Ajax.Request(reloadurl, {
|
23 |
method: 'post',
|
24 |
-
parameters: {'
|
25 |
onComplete: function(transport) {
|
26 |
Element.hide('loadingmask');
|
27 |
-
if(transport.responseText == '\"Valid
|
28 |
api_user.setStyle({
|
29 |
fontWeight: 'bold',
|
30 |
color: 'green' ,
|
7 |
{
|
8 |
$element->setData('onchange', "apiValidation(this.form, this);");
|
9 |
|
10 |
+
$url = Mage::helper('adminhtml')->getUrl('*/debug/ajaxvalidation');
|
11 |
+
|
12 |
$element->setData('after_element_html', "
|
13 |
<script>
|
14 |
document.observe('dom:loaded', function(){
|
19 |
var api_user = $('connector_api_settings_api_credentials_username');
|
20 |
var api_password = $('connector_api_settings_api_credentials_password');
|
21 |
|
22 |
+
var reloadurl = '{$url}';
|
23 |
|
24 |
new Ajax.Request(reloadurl, {
|
25 |
method: 'post',
|
26 |
+
parameters: {'api_username' : api_user.value, 'api_password' : api_password.value},
|
27 |
onComplete: function(transport) {
|
28 |
Element.hide('loadingmask');
|
29 |
+
if(transport.responseText == '\"Credentials Valid.\"'){
|
30 |
api_user.setStyle({
|
31 |
fontWeight: 'bold',
|
32 |
color: 'green' ,
|
app/code/{local → community}/Dotdigitalgroup/Email/Block/Adminhtml/System/Recentlyviewed.php
RENAMED
@@ -3,15 +3,15 @@ class Dotdigitalgroup_Email_Block_Adminhtml_System_Recentlyviewed extends Mage_A
|
|
3 |
{
|
4 |
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
|
5 |
{
|
6 |
-
$
|
|
|
7 |
$helper = Mage::helper('connector');
|
8 |
$code = $helper->getPasscode();
|
9 |
-
|
10 |
$customerId = $helper->getMappedCustomerId();
|
11 |
|
12 |
if(!strlen($code)) $code = '[PLEASE SET UP A PASSCODE]';
|
13 |
if(!$customerId) $customerId = '[PLEASE MAP THE CUSTOMER ID]';
|
14 |
-
$text = $
|
15 |
$element->setData('value', $text);
|
16 |
$element->setData('disabled', 'disabled');
|
17 |
return parent::_getElementHtml($element);
|
3 |
{
|
4 |
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
|
5 |
{
|
6 |
+
$baseUrl = $this->getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
|
7 |
+
|
8 |
$helper = Mage::helper('connector');
|
9 |
$code = $helper->getPasscode();
|
|
|
10 |
$customerId = $helper->getMappedCustomerId();
|
11 |
|
12 |
if(!strlen($code)) $code = '[PLEASE SET UP A PASSCODE]';
|
13 |
if(!$customerId) $customerId = '[PLEASE MAP THE CUSTOMER ID]';
|
14 |
+
$text = $baseUrl . 'connector/email/products/customer/@' . $customerId . '@/code/' . $code . '/mode/recentlyviewed';
|
15 |
$element->setData('value', $text);
|
16 |
$element->setData('disabled', 'disabled');
|
17 |
return parent::_getElementHtml($element);
|
app/code/{local/Dotdigitalgroup/Email/Block/Debug/Countcontacts.php → community/Dotdigitalgroup/Email/Block/Adminhtml/Widget/Button/Reimportorders.php}
RENAMED
@@ -1,15 +1,14 @@
|
|
1 |
<?php
|
2 |
-
|
3 |
-
class Dotdigitalgroup_Email_Block_Debug_Countcontacts extends Mage_Adminhtml_Block_System_Config_Form_Field
|
4 |
{
|
5 |
|
6 |
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element) {
|
7 |
$this->setElement($element);
|
8 |
-
return $this->_getAddRowButtonHtml($this->__('
|
9 |
}
|
10 |
|
11 |
protected function _getAddRowButtonHtml($title) {
|
12 |
-
$url =
|
13 |
|
14 |
return $this->getLayout()->createBlock('adminhtml/widget_button')
|
15 |
->setType('button')
|
1 |
<?php
|
2 |
+
class Dotdigitalgroup_Email_Block_Adminhtml_Widget_Button_Reimportorders extends Mage_Adminhtml_Block_System_Config_Form_Field
|
|
|
3 |
{
|
4 |
|
5 |
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element) {
|
6 |
$this->setElement($element);
|
7 |
+
return $this->_getAddRowButtonHtml($this->__('Reset Orders'));
|
8 |
}
|
9 |
|
10 |
protected function _getAddRowButtonHtml($title) {
|
11 |
+
$url = $this->getUrl("*/connector/resetorders");
|
12 |
|
13 |
return $this->getLayout()->createBlock('adminhtml/widget_button')
|
14 |
->setType('button')
|
app/code/{local/Dotdigitalgroup/Email/Block/Debug/Initialsync.php → community/Dotdigitalgroup/Email/Block/Adminhtml/Widget/Button/Setupdatafields.php}
RENAMED
@@ -1,14 +1,15 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
class
|
4 |
{
|
|
|
5 |
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element) {
|
6 |
$this->setElement($element);
|
7 |
-
return $this->_getAddRowButtonHtml($this->__('
|
8 |
}
|
9 |
|
10 |
protected function _getAddRowButtonHtml($title) {
|
11 |
-
$url =
|
12 |
|
13 |
return $this->getLayout()->createBlock('adminhtml/widget_button')
|
14 |
->setType('button')
|
@@ -17,4 +18,4 @@ class Dotdigitalgroup_Email_Block_Debug_Initialsync extends Mage_Adminhtml_Block
|
|
17 |
->toHtml();
|
18 |
}
|
19 |
|
20 |
-
}
|
1 |
<?php
|
2 |
|
3 |
+
class Dotdigitalgroup_Email_Block_Adminhtml_Widget_Button_Setupdatafields extends Mage_Adminhtml_Block_System_Config_Form_Field
|
4 |
{
|
5 |
+
|
6 |
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element) {
|
7 |
$this->setElement($element);
|
8 |
+
return $this->_getAddRowButtonHtml($this->__('Setup And Map Datafields'));
|
9 |
}
|
10 |
|
11 |
protected function _getAddRowButtonHtml($title) {
|
12 |
+
$url = $this->getUrl("*/connector/setupdatafields");
|
13 |
|
14 |
return $this->getLayout()->createBlock('adminhtml/widget_button')
|
15 |
->setType('button')
|
18 |
->toHtml();
|
19 |
}
|
20 |
|
21 |
+
}
|
app/code/{local/Dotdigitalgroup/Email/Block/Debug/Transactionalsync.php → community/Dotdigitalgroup/Email/Block/Adminhtml/Widget/Button/Suppressedcontacts.php}
RENAMED
@@ -1,14 +1,15 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
class
|
4 |
{
|
|
|
5 |
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element) {
|
6 |
$this->setElement($element);
|
7 |
-
return $this->_getAddRowButtonHtml($this->__('
|
8 |
}
|
9 |
|
10 |
protected function _getAddRowButtonHtml($title) {
|
11 |
-
$url =
|
12 |
|
13 |
return $this->getLayout()->createBlock('adminhtml/widget_button')
|
14 |
->setType('button')
|
1 |
<?php
|
2 |
|
3 |
+
class Dotdigitalgroup_Email_Block_Adminhtml_Widget_Button_Suppressedcontacts extends Mage_Adminhtml_Block_System_Config_Form_Field
|
4 |
{
|
5 |
+
|
6 |
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element) {
|
7 |
$this->setElement($element);
|
8 |
+
return $this->_getAddRowButtonHtml($this->__('Update Now'));
|
9 |
}
|
10 |
|
11 |
protected function _getAddRowButtonHtml($title) {
|
12 |
+
$url = $this->getUrl("*/connector/suppresscontacts");
|
13 |
|
14 |
return $this->getLayout()->createBlock('adminhtml/widget_button')
|
15 |
->setType('button')
|
app/code/{local → community}/Dotdigitalgroup/Email/Block/Basket.php
RENAMED
@@ -19,7 +19,7 @@ class Dotdigitalgroup_Email_Block_Basket extends Mage_Core_Block_Template
|
|
19 |
|
20 |
//last active guest basket
|
21 |
$quoteModel = Mage::getResourceModel('sales/quote_collection')
|
22 |
-
->addFieldToFilter('is_active',1)
|
23 |
->addFieldToFilter('items_count', array('gt' => 0))
|
24 |
->addFieldToFilter('customer_email', $email)
|
25 |
->setOrder('updated_at' , 'DESC')
|
19 |
|
20 |
//last active guest basket
|
21 |
$quoteModel = Mage::getResourceModel('sales/quote_collection')
|
22 |
+
->addFieldToFilter('is_active', 1)
|
23 |
->addFieldToFilter('items_count', array('gt' => 0))
|
24 |
->addFieldToFilter('customer_email', $email)
|
25 |
->setOrder('updated_at' , 'DESC')
|
app/code/{local → community}/Dotdigitalgroup/Email/Block/Coupon.php
RENAMED
File without changes
|
app/code/community/Dotdigitalgroup/Email/Block/Customer.php
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Dotdigitalgroup_Email_Block_Customer extends Mage_Core_Block_Template
|
4 |
+
{
|
5 |
+
|
6 |
+
public function getNewCustomer()
|
7 |
+
{
|
8 |
+
$params = Mage::app()->getRequest()->getParams();
|
9 |
+
if(isset($params['id'])){
|
10 |
+
|
11 |
+
$customerModel = Mage::getModel('customer/customer')->load($params['id']);
|
12 |
+
|
13 |
+
if(! $customerModel->getEntityId()){
|
14 |
+
Mage::helper('connector')->log('Transactional email, no customer found :' . $params['id'], null, 'email');
|
15 |
+
exit;
|
16 |
+
}
|
17 |
+
return $customerModel;
|
18 |
+
|
19 |
+
}else{
|
20 |
+
exit;
|
21 |
+
}
|
22 |
+
}
|
23 |
+
|
24 |
+
}
|
app/code/community/Dotdigitalgroup/Email/Block/Order.php
ADDED
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Dotdigitalgroup_Email_Block_Order extends Mage_Core_Block_Template
|
4 |
+
{
|
5 |
+
public function getNewOrder()
|
6 |
+
{
|
7 |
+
$params = Mage::app()->getRequest()->getParams();
|
8 |
+
|
9 |
+
if(isset($params['id'])){
|
10 |
+
|
11 |
+
$orderModel = Mage::getModel('sales/order')->load($params['id']);
|
12 |
+
|
13 |
+
if(! $orderModel->getEntityId()){
|
14 |
+
Mage::helper('connector')->log('Transactional email, no customer found :' . $params['id'], null, 'email');
|
15 |
+
exit;
|
16 |
+
}
|
17 |
+
Mage::register('order_id', $params['id']);
|
18 |
+
Mage::register('current_order', $orderModel);
|
19 |
+
return $orderModel;
|
20 |
+
|
21 |
+
}else{
|
22 |
+
exit;
|
23 |
+
}
|
24 |
+
|
25 |
+
|
26 |
+
}
|
27 |
+
}
|
app/code/community/Dotdigitalgroup/Email/Block/Order/Creditmemo.php
ADDED
@@ -0,0 +1,85 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Dotdigitalgroup_Email_Block_Order_Creditmemo extends Mage_Sales_Block_Order_Creditmemo_Items
|
3 |
+
{
|
4 |
+
protected function _construct()
|
5 |
+
{
|
6 |
+
parent::_construct();
|
7 |
+
$this->setTemplate('connector/sales/order/creditmemo.phtml');
|
8 |
+
}
|
9 |
+
|
10 |
+
protected function _prepareLayout()
|
11 |
+
{
|
12 |
+
|
13 |
+
if ($headBlock = $this->getLayout()->getBlock('head')) {
|
14 |
+
$headBlock->setTitle($this->__('Order # %s', $this->getOrder()->getRealOrderId()));
|
15 |
+
}
|
16 |
+
$this->setChild(
|
17 |
+
'payment_info',
|
18 |
+
$this->helper('payment')->getInfoBlock($this->getOrder()->getPayment())
|
19 |
+
);
|
20 |
+
}
|
21 |
+
|
22 |
+
public function getPaymentInfoHtml()
|
23 |
+
{
|
24 |
+
return $this->getChildHtml('payment_info');
|
25 |
+
}
|
26 |
+
|
27 |
+
/**
|
28 |
+
* Retrieve current order model instance
|
29 |
+
*
|
30 |
+
* @return Mage_Sales_Model_Order
|
31 |
+
*/
|
32 |
+
public function getOrder()
|
33 |
+
{
|
34 |
+
return Mage::registry('current_order');
|
35 |
+
}
|
36 |
+
|
37 |
+
/**
|
38 |
+
* Return back url for logged in and guest users
|
39 |
+
*
|
40 |
+
* @return string
|
41 |
+
*/
|
42 |
+
public function getBackUrl()
|
43 |
+
{
|
44 |
+
if (Mage::getSingleton('customer/session')->isLoggedIn()) {
|
45 |
+
return Mage::getUrl('*/*/history');
|
46 |
+
}
|
47 |
+
return Mage::getUrl('*/*/form');
|
48 |
+
}
|
49 |
+
|
50 |
+
/**
|
51 |
+
* Return back title for logged in and guest users
|
52 |
+
*
|
53 |
+
* @return string
|
54 |
+
*/
|
55 |
+
public function getBackTitle()
|
56 |
+
{
|
57 |
+
if (Mage::getSingleton('customer/session')->isLoggedIn()) {
|
58 |
+
return Mage::helper('sales')->__('Back to My Orders');
|
59 |
+
}
|
60 |
+
return Mage::helper('sales')->__('View Another Order');
|
61 |
+
}
|
62 |
+
|
63 |
+
public function getInvoiceUrl($order)
|
64 |
+
{
|
65 |
+
return Mage::getUrl('*/*/invoice', array('order_id' => $order->getId()));
|
66 |
+
}
|
67 |
+
|
68 |
+
public function getShipmentUrl($order)
|
69 |
+
{
|
70 |
+
return Mage::getUrl('*/*/shipment', array('order_id' => $order->getId()));
|
71 |
+
}
|
72 |
+
|
73 |
+
public function getViewUrl($order)
|
74 |
+
{
|
75 |
+
return Mage::getUrl('*/*/view', array('order_id' => $order->getId()));
|
76 |
+
}
|
77 |
+
|
78 |
+
public function getPrintCreditmemoUrl($creditmemo){
|
79 |
+
return Mage::getUrl('*/*/printCreditmemo', array('creditmemo_id' => $creditmemo->getId()));
|
80 |
+
}
|
81 |
+
|
82 |
+
public function getPrintAllCreditmemosUrl($order){
|
83 |
+
return Mage::getUrl('*/*/printCreditmemo', array('order_id' => $order->getId()));
|
84 |
+
}
|
85 |
+
}
|
app/code/community/Dotdigitalgroup/Email/Block/Order/Creditmemo/Items.php
ADDED
@@ -0,0 +1,58 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Dotdigitalgroup_Email_Block_Order_Creditmemo_Items extends Mage_Sales_Block_Items_Abstract
|
3 |
+
{
|
4 |
+
/**
|
5 |
+
* Retrieve current order model instance
|
6 |
+
*
|
7 |
+
* @return Mage_Sales_Model_Order
|
8 |
+
*/
|
9 |
+
public function getOrder()
|
10 |
+
{
|
11 |
+
return Mage::registry('current_order');
|
12 |
+
}
|
13 |
+
|
14 |
+
public function getPrintCreditmemoUrl($creditmemo)
|
15 |
+
{
|
16 |
+
return Mage::getUrl('*/*/printCreditmemo', array('creditmemo_id' => $creditmemo->getId()));
|
17 |
+
}
|
18 |
+
|
19 |
+
public function getPrintAllCreditmemosUrl($order)
|
20 |
+
{
|
21 |
+
return Mage::getUrl('*/*/printCreditmemo', array('order_id' => $order->getId()));
|
22 |
+
}
|
23 |
+
|
24 |
+
/**
|
25 |
+
* Get creditmemo totals block html
|
26 |
+
*
|
27 |
+
* @param Mage_Sales_Model_Order_Creditmemo $creditmemo
|
28 |
+
* @return string
|
29 |
+
*/
|
30 |
+
public function getTotalsHtml($creditmemo)
|
31 |
+
{
|
32 |
+
$totals = $this->getChild('creditmemo_totals');
|
33 |
+
$html = '';
|
34 |
+
if ($totals) {
|
35 |
+
$totals->setCreditmemo($creditmemo);
|
36 |
+
$html = $totals->toHtml();
|
37 |
+
}
|
38 |
+
return $html;
|
39 |
+
}
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Get html of creditmemo comments block
|
43 |
+
*
|
44 |
+
* @param Mage_Sales_Model_Order_Creditmemo $creditmemo
|
45 |
+
* @return string
|
46 |
+
*/
|
47 |
+
public function getCommentsHtml($creditmemo)
|
48 |
+
{
|
49 |
+
$html = '';
|
50 |
+
$comments = $this->getChild('creditmemo_comments');
|
51 |
+
if ($comments) {
|
52 |
+
$comments->setEntity($creditmemo)
|
53 |
+
->setTitle(Mage::helper('sales')->__('About Your Refund'));
|
54 |
+
$html = $comments->toHtml();
|
55 |
+
}
|
56 |
+
return $html;
|
57 |
+
}
|
58 |
+
}
|
app/code/community/Dotdigitalgroup/Email/Block/Order/Info.php
ADDED
@@ -0,0 +1,95 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Dotdigitalgroup_Email_Block_Order_Info extends Mage_Core_Block_Template
|
3 |
+
{
|
4 |
+
protected $_links = array();
|
5 |
+
|
6 |
+
protected function _construct()
|
7 |
+
{
|
8 |
+
parent::_construct();
|
9 |
+
$this->setTemplate('connector/sales/order/info.phtml');
|
10 |
+
}
|
11 |
+
|
12 |
+
protected function _prepareLayout()
|
13 |
+
{
|
14 |
+
$this->setChild(
|
15 |
+
'payment_info',
|
16 |
+
$this->helper('payment')->getInfoBlock($this->getOrder()->getPayment())
|
17 |
+
);
|
18 |
+
}
|
19 |
+
|
20 |
+
public function getPaymentInfoHtml()
|
21 |
+
{
|
22 |
+
return $this->getChildHtml('payment_info');
|
23 |
+
}
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Retrieve current order model instance
|
27 |
+
*
|
28 |
+
* @return Mage_Sales_Model_Order
|
29 |
+
*/
|
30 |
+
public function getOrder()
|
31 |
+
{
|
32 |
+
return Mage::registry('current_order');
|
33 |
+
}
|
34 |
+
|
35 |
+
public function addLink($name, $path, $label)
|
36 |
+
{
|
37 |
+
$this->_links[$name] = new Varien_Object(array(
|
38 |
+
'name' => $name,
|
39 |
+
'label' => $label,
|
40 |
+
'url' => empty($path) ? '' : Mage::getUrl($path, array('order_id' => $this->getOrder()->getId()))
|
41 |
+
));
|
42 |
+
return $this;
|
43 |
+
}
|
44 |
+
|
45 |
+
public function getLinks()
|
46 |
+
{
|
47 |
+
$this->checkLinks();
|
48 |
+
return $this->_links;
|
49 |
+
}
|
50 |
+
|
51 |
+
private function checkLinks()
|
52 |
+
{
|
53 |
+
$order = $this->getOrder();
|
54 |
+
if (!$order->hasInvoices()) {
|
55 |
+
unset($this->_links['invoice']);
|
56 |
+
}
|
57 |
+
if (!$order->hasShipments()) {
|
58 |
+
unset($this->_links['shipment']);
|
59 |
+
}
|
60 |
+
if (!$order->hasCreditmemos()) {
|
61 |
+
unset($this->_links['creditmemo']);
|
62 |
+
}
|
63 |
+
}
|
64 |
+
|
65 |
+
/**
|
66 |
+
* Get url for reorder action
|
67 |
+
*
|
68 |
+
* @deprecated after 1.6.0.0, logic moved to new block
|
69 |
+
* @param Mage_Sales_Order $order
|
70 |
+
* @return string
|
71 |
+
*/
|
72 |
+
public function getReorderUrl($order)
|
73 |
+
{
|
74 |
+
if (!Mage::getSingleton('customer/session')->isLoggedIn()) {
|
75 |
+
return $this->getUrl('sales/guest/reorder', array('order_id' => $order->getId()));
|
76 |
+
}
|
77 |
+
return $this->getUrl('sales/order/reorder', array('order_id' => $order->getId()));
|
78 |
+
}
|
79 |
+
|
80 |
+
/**
|
81 |
+
* Get url for printing order
|
82 |
+
*
|
83 |
+
* @deprecated after 1.6.0.0, logic moved to new block
|
84 |
+
* @param Mage_Sales_Order $order
|
85 |
+
* @return string
|
86 |
+
*/
|
87 |
+
public function getPrintUrl($order)
|
88 |
+
{
|
89 |
+
if (!Mage::getSingleton('customer/session')->isLoggedIn()) {
|
90 |
+
return $this->getUrl('sales/guest/print', array('order_id' => $order->getId()));
|
91 |
+
}
|
92 |
+
return $this->getUrl('sales/order/print', array('order_id' => $order->getId()));
|
93 |
+
}
|
94 |
+
|
95 |
+
}
|
app/code/community/Dotdigitalgroup/Email/Block/Order/Invoice.php
ADDED
@@ -0,0 +1,84 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Dotdigitalgroup_Email_Block_Order_Invoice extends Mage_Sales_Block_Order_Invoice_Items
|
3 |
+
{
|
4 |
+
protected function _construct()
|
5 |
+
{
|
6 |
+
parent::_construct();
|
7 |
+
$this->setTemplate('connector/sales/order/invoice.phtml');
|
8 |
+
}
|
9 |
+
|
10 |
+
protected function _prepareLayout()
|
11 |
+
{
|
12 |
+
if ($headBlock = $this->getLayout()->getBlock('head')) {
|
13 |
+
$headBlock->setTitle($this->__('Order # %s', $this->getOrder()->getRealOrderId()));
|
14 |
+
}
|
15 |
+
$this->setChild(
|
16 |
+
'payment_info',
|
17 |
+
$this->helper('payment')->getInfoBlock($this->getOrder()->getPayment())
|
18 |
+
);
|
19 |
+
}
|
20 |
+
|
21 |
+
public function getPaymentInfoHtml()
|
22 |
+
{
|
23 |
+
return $this->getChildHtml('payment_info');
|
24 |
+
}
|
25 |
+
|
26 |
+
/**
|
27 |
+
* Retrieve current order model instance
|
28 |
+
*
|
29 |
+
* @return Mage_Sales_Model_Order
|
30 |
+
*/
|
31 |
+
public function getOrder()
|
32 |
+
{
|
33 |
+
return Mage::registry('current_order');
|
34 |
+
}
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Return back url for logged in and guest users
|
38 |
+
*
|
39 |
+
* @return string
|
40 |
+
*/
|
41 |
+
public function getBackUrl()
|
42 |
+
{
|
43 |
+
if (Mage::getSingleton('customer/session')->isLoggedIn()) {
|
44 |
+
return Mage::getUrl('*/*/history');
|
45 |
+
}
|
46 |
+
return Mage::getUrl('*/*/form');
|
47 |
+
}
|
48 |
+
|
49 |
+
/**
|
50 |
+
* Return back title for logged in and guest users
|
51 |
+
*
|
52 |
+
* @return string
|
53 |
+
*/
|
54 |
+
public function getBackTitle()
|
55 |
+
{
|
56 |
+
if (Mage::getSingleton('customer/session')->isLoggedIn()) {
|
57 |
+
return Mage::helper('sales')->__('Back to My Orders');
|
58 |
+
}
|
59 |
+
return Mage::helper('sales')->__('View Another Order');
|
60 |
+
}
|
61 |
+
|
62 |
+
public function getViewUrl($order)
|
63 |
+
{
|
64 |
+
return Mage::getUrl('*/*/view', array('order_id' => $order->getId()));
|
65 |
+
}
|
66 |
+
|
67 |
+
public function getShipmentUrl($order)
|
68 |
+
{
|
69 |
+
return Mage::getUrl('*/*/shipment', array('order_id' => $order->getId()));
|
70 |
+
}
|
71 |
+
|
72 |
+
public function getCreditmemoUrl($order)
|
73 |
+
{
|
74 |
+
return Mage::getUrl('*/*/creditmemo', array('order_id' => $order->getId()));
|
75 |
+
}
|
76 |
+
|
77 |
+
public function getPrintInvoiceUrl($invoice){
|
78 |
+
return Mage::getUrl('*/*/printInvoice', array('invoice_id' => $invoice->getId()));
|
79 |
+
}
|
80 |
+
|
81 |
+
public function getPrintAllInvoicesUrl($order){
|
82 |
+
return Mage::getUrl('*/*/printInvoice', array('order_id' => $order->getId()));
|
83 |
+
}
|
84 |
+
}
|
app/code/community/Dotdigitalgroup/Email/Block/Order/Invoice/Items.php
ADDED
@@ -0,0 +1,58 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Dotdigitalgroup_Email_Block_Order_Invoice_Items extends Mage_Sales_Block_Items_Abstract
|
3 |
+
{
|
4 |
+
/**
|
5 |
+
* Retrieve current order model instance
|
6 |
+
*
|
7 |
+
* @return Mage_Sales_Model_Order
|
8 |
+
*/
|
9 |
+
public function getOrder()
|
10 |
+
{
|
11 |
+
return Mage::registry('current_order');
|
12 |
+
}
|
13 |
+
|
14 |
+
public function getPrintInvoiceUrl($invoice)
|
15 |
+
{
|
16 |
+
return Mage::getUrl('*/*/printInvoice', array('invoice_id' => $invoice->getId()));
|
17 |
+
}
|
18 |
+
|
19 |
+
public function getPrintAllInvoicesUrl($order)
|
20 |
+
{
|
21 |
+
return Mage::getUrl('*/*/printInvoice', array('order_id' => $order->getId()));
|
22 |
+
}
|
23 |
+
|
24 |
+
/**
|
25 |
+
* Get html of invoice totals block
|
26 |
+
*
|
27 |
+
* @param Mage_Sales_Model_Order_Invoice $invoice
|
28 |
+
* @return string
|
29 |
+
*/
|
30 |
+
public function getInvoiceTotalsHtml($invoice)
|
31 |
+
{
|
32 |
+
$html = '';
|
33 |
+
$totals = $this->getChild('invoice_totals');
|
34 |
+
if ($totals) {
|
35 |
+
$totals->setInvoice($invoice);
|
36 |
+
$html = $totals->toHtml();
|
37 |
+
}
|
38 |
+
return $html;
|
39 |
+
}
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Get html of invoice comments block
|
43 |
+
*
|
44 |
+
* @param Mage_Sales_Model_Order_Invoice $invoice
|
45 |
+
* @return string
|
46 |
+
*/
|
47 |
+
public function getInvoiceCommentsHtml($invoice)
|
48 |
+
{
|
49 |
+
$html = '';
|
50 |
+
$comments = $this->getChild('invoice_comments');
|
51 |
+
if ($comments) {
|
52 |
+
$comments->setEntity($invoice)
|
53 |
+
->setTitle(Mage::helper('sales')->__('About Your Invoice'));
|
54 |
+
$html = $comments->toHtml();
|
55 |
+
}
|
56 |
+
return $html;
|
57 |
+
}
|
58 |
+
}
|
app/code/{local → community}/Dotdigitalgroup/Email/Block/Products.php
RENAMED
File without changes
|
app/code/community/Dotdigitalgroup/Email/Helper/Data.php
ADDED
@@ -0,0 +1,492 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Dotdigitalgroup_Email_Helper_Data extends Mage_Core_Helper_Abstract
|
4 |
+
{
|
5 |
+
const XML_PATH_ENABLED = 'connector_api_settings/api_credentials/enabled';
|
6 |
+
const XML_PATH_PASSCODE = 'connector_advanced_settings/external/passcode';
|
7 |
+
const XML_PATH_LAST_ORDER_ID = 'connector_data_field_settings/customer_data/last_order_id';
|
8 |
+
const XML_PATH_MAPPING_CUSTOMER_ID = 'connector_data_field_settings/customer_data/customer_id';
|
9 |
+
const XML_PATH_MAPPING_ORDER_ID = 'connector_data_field_settings/customer_data/last_order_no';
|
10 |
+
const XML_PATH_API_USERNAME = 'connector_api_settings/api_credentials/username';
|
11 |
+
const XML_PATH_API_PASSWORD = 'connector_api_settings/api_credentials/password';
|
12 |
+
const XML_PATH_PAGE_TRACKING_ENABLED = 'connector_roi_page_tracking_settings/page_tracking/enabled';
|
13 |
+
const XML_PATH_ROI_TRACKING_ENABLED = 'connector_roi_page_tracking_settings/roi_tracking/enabled';
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Sync settings page
|
17 |
+
*/
|
18 |
+
const XML_PATH_CUSTOMERS_ADDRESS_BOOK_ID = 'connector_sync_settings/address_book/customers';
|
19 |
+
const XML_PATH_SUBSCRIBERS_ADDRESS_BOOK_ID = 'connector_sync_settings/address_book/subscribers';
|
20 |
+
const XML_PATH_GUEST_ADDRESS_BOOK_ID = 'connector_sync_settings/address_book/guests';
|
21 |
+
|
22 |
+
const XML_PATH_SYNC_CONTACT_ENABLED = 'connector_sync_settings/sync/contact_enabled';
|
23 |
+
const XML_PATH_SYNC_SUBSCRIBER_ENABLED = 'connector_sync_settings/sync/subscriber_enabled';
|
24 |
+
const XML_PATH_SYNC_ORDER_ENABLED = 'connector_sync_settings/sync/order_enabled';
|
25 |
+
const XML_PATH_SYNC_WISHLIST_ENABLED = 'connector_sync_settings/sync/wishlist_enabled';
|
26 |
+
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Advanced settings
|
30 |
+
*/
|
31 |
+
const XML_PATH_ADVANCED_DEBUG_ENABLED = 'connector_advanced_settings/admin/debug_enabled';
|
32 |
+
|
33 |
+
const XML_PATH_SYNC_LIMIT = 'connector_advanced_settings/admin/batch_size';
|
34 |
+
|
35 |
+
const XML_PATH_TRANSACTIONAL_DATA_SYNC_LIMIT = 'connector_advanced_settings/sync_limits/orders';
|
36 |
+
|
37 |
+
const XML_PATH_RESOURCE_ALLOCATION = 'connector_advanced_settings/admin/memory_limit';
|
38 |
+
|
39 |
+
|
40 |
+
|
41 |
+
public function isEnabled()
|
42 |
+
{
|
43 |
+
return (bool)Mage::getStoreConfig(self::XML_PATH_ENABLED);
|
44 |
+
}
|
45 |
+
|
46 |
+
/**
|
47 |
+
* @param int/object $website
|
48 |
+
* @return mixed
|
49 |
+
*/
|
50 |
+
public function getApiUsername($website = 0)
|
51 |
+
{
|
52 |
+
$website = Mage::app()->getWebsite($website);
|
53 |
+
|
54 |
+
return $website->getConfig(self::XML_PATH_API_USERNAME);
|
55 |
+
}
|
56 |
+
|
57 |
+
public function getApiPassword($website = 0)
|
58 |
+
{
|
59 |
+
$website = Mage::app()->getWebsite($website);
|
60 |
+
|
61 |
+
return $website->getConfig(self::XML_PATH_API_PASSWORD);
|
62 |
+
}
|
63 |
+
|
64 |
+
public function auth($authRequest)
|
65 |
+
{
|
66 |
+
if($authRequest == Mage::getStoreConfig(self::XML_PATH_PASSCODE)){
|
67 |
+
return true;
|
68 |
+
}
|
69 |
+
|
70 |
+
// if($this->isEnabledLogs())
|
71 |
+
$this->log('Authenication failed : ' . $authRequest);
|
72 |
+
exit();
|
73 |
+
}
|
74 |
+
|
75 |
+
public function getSubscriberSyncEnabled()
|
76 |
+
{
|
77 |
+
return Mage::getStoreConfig(self::XML_PATH_SYNC_SUBSCRIBER_ENABLED);
|
78 |
+
}
|
79 |
+
|
80 |
+
public function getMappedCustomerId()
|
81 |
+
{
|
82 |
+
return Mage::getStoreConfig(self::XML_PATH_MAPPING_CUSTOMER_ID);
|
83 |
+
}
|
84 |
+
|
85 |
+
public function getMappedOrderId()
|
86 |
+
{
|
87 |
+
return Mage::getStoreConfig(self::XML_PATH_MAPPING_ORDER_ID);
|
88 |
+
}
|
89 |
+
|
90 |
+
public function getPasscode()
|
91 |
+
{
|
92 |
+
return Mage::getStoreConfig(self::XML_PATH_PASSCODE);
|
93 |
+
}
|
94 |
+
|
95 |
+
public function getLastOrderNo()
|
96 |
+
{
|
97 |
+
return Mage::getStoreConfig(self::XML_PATH_LAST_ORDER_ID);
|
98 |
+
|
99 |
+
}
|
100 |
+
|
101 |
+
public function log($data, $level = Zend_Log::DEBUG, $filename = 'api.log')
|
102 |
+
{
|
103 |
+
if($this->getDebugEnabled()){
|
104 |
+
$filename = 'connector_' . $filename;
|
105 |
+
|
106 |
+
Mage::log($data, $level, $filename, $force = true);
|
107 |
+
}
|
108 |
+
}
|
109 |
+
|
110 |
+
public function getDebugEnabled()
|
111 |
+
{
|
112 |
+
return (bool) Mage::getStoreConfig(self::XML_PATH_ADVANCED_DEBUG_ENABLED);
|
113 |
+
}
|
114 |
+
|
115 |
+
public function getContactSyncEnabled()
|
116 |
+
{
|
117 |
+
return (bool) Mage::getStoreConfig(self::XML_PATH_SYNC_CONTACT_ENABLED);
|
118 |
+
}
|
119 |
+
|
120 |
+
public function getConnectorVersion()
|
121 |
+
{
|
122 |
+
|
123 |
+
$modules = (array) Mage::getConfig()->getNode('modules')->children();
|
124 |
+
|
125 |
+
if(isset($modules['Dotdigitalgroup_Email'])){
|
126 |
+
|
127 |
+
$moduleName = $modules['Dotdigitalgroup_Email'];
|
128 |
+
return $moduleName->version;
|
129 |
+
}
|
130 |
+
return '';
|
131 |
+
}
|
132 |
+
|
133 |
+
|
134 |
+
public function getPageTrackingEnabled()
|
135 |
+
{
|
136 |
+
return (bool)Mage::getStoreConfig(self::XML_PATH_PAGE_TRACKING_ENABLED);
|
137 |
+
}
|
138 |
+
|
139 |
+
public function getRoiTrackingEnabled()
|
140 |
+
{
|
141 |
+
return (bool)Mage::getStoreConfig(self::XML_PATH_ROI_TRACKING_ENABLED);
|
142 |
+
|
143 |
+
}
|
144 |
+
|
145 |
+
public function getOrderSyncEnabled()
|
146 |
+
{
|
147 |
+
return Mage::getStoreConfig(self::XML_PATH_SYNC_ORDER_ENABLED);
|
148 |
+
}
|
149 |
+
|
150 |
+
public function getTransactionalSyncLimit()
|
151 |
+
{
|
152 |
+
return Mage::getStoreConfig(self::XML_PATH_TRANSACTIONAL_DATA_SYNC_LIMIT);
|
153 |
+
}
|
154 |
+
|
155 |
+
public function getResourceAllocationEnabled()
|
156 |
+
{
|
157 |
+
return (bool)Mage::getStoreConfig(self::XML_PATH_RESOURCE_ALLOCATION);
|
158 |
+
}
|
159 |
+
|
160 |
+
public function getMappedStoreName($website)
|
161 |
+
{
|
162 |
+
return $website->getConfig('connector_data_field_settings/customer_data/store_name');
|
163 |
+
}
|
164 |
+
|
165 |
+
|
166 |
+
public function getContactId($email, $websiteId)
|
167 |
+
{
|
168 |
+
$client = Mage::getModel('connector/connector_api_client');
|
169 |
+
$client->setApiUsername($this->getApiUsername($websiteId))
|
170 |
+
->setApiPassword($this->getApiPassword($websiteId));
|
171 |
+
$contactModel = Mage::getModel('connector/email_contact');
|
172 |
+
|
173 |
+
$contact = $contactModel->loadByCustomerEmail($email, $websiteId);
|
174 |
+
|
175 |
+
if($contactId = $contact->getContactId()){
|
176 |
+
return $contactId;
|
177 |
+
}else{
|
178 |
+
|
179 |
+
$response = $client->postContacts($email);
|
180 |
+
if(isset($response->id)){
|
181 |
+
$contactId = $response->id;
|
182 |
+
$contactModel->setContactId($contactId)->save();
|
183 |
+
}
|
184 |
+
return $contactId;
|
185 |
+
}
|
186 |
+
|
187 |
+
}
|
188 |
+
public function getDatafields()
|
189 |
+
{
|
190 |
+
$dataFields = array(
|
191 |
+
'customer_id' => array(
|
192 |
+
'name' => 'Customer_ID',
|
193 |
+
'type' => 'numeric',
|
194 |
+
'visibility' => 'private',
|
195 |
+
),
|
196 |
+
'dob' => array(
|
197 |
+
'name' => 'DOB',
|
198 |
+
'type' => 'string',
|
199 |
+
'visibility' => 'private',
|
200 |
+
'defaultValue' => ''
|
201 |
+
),
|
202 |
+
'title' => array(
|
203 |
+
'name' => 'Title',
|
204 |
+
'type' => 'string',
|
205 |
+
'visibility' => 'private',
|
206 |
+
'defaultValue' => ''
|
207 |
+
),
|
208 |
+
'website_name' => array(
|
209 |
+
'name' => 'Website_Name',
|
210 |
+
'type' => 'string',
|
211 |
+
'visibility' => 'private',
|
212 |
+
'defaultValue' => ''
|
213 |
+
),
|
214 |
+
'store_name' => array(
|
215 |
+
'name' => 'Store_Name',
|
216 |
+
'type' => 'string',
|
217 |
+
'visibility' => 'private',
|
218 |
+
'defaultValue' => ''
|
219 |
+
),
|
220 |
+
'created_at' => array(
|
221 |
+
'name' => 'Account_Created_Date',
|
222 |
+
'type' => 'date',
|
223 |
+
'visibility' => 'private'
|
224 |
+
),
|
225 |
+
'last_logged_date' => array(
|
226 |
+
'name' => 'Last_Loggedin_Date',
|
227 |
+
'type' => 'date',
|
228 |
+
'visibility' => 'private'
|
229 |
+
),
|
230 |
+
'customer_group' => array(
|
231 |
+
'name' => 'Customer_Group',
|
232 |
+
'type' => 'string',
|
233 |
+
'visibility' => 'private',
|
234 |
+
'defaultValue' => ''
|
235 |
+
),
|
236 |
+
'billing_address_1' => array(
|
237 |
+
'name' => 'Billing_Address_1',
|
238 |
+
'type' => 'string',
|
239 |
+
'visibility' => 'private',
|
240 |
+
'defaultValue' => ''
|
241 |
+
),
|
242 |
+
'billing_address_2' => array(
|
243 |
+
'name' => 'Billing_Address_2',
|
244 |
+
'type' => 'string',
|
245 |
+
'visibility' => 'private',
|
246 |
+
'defaultValue' => ''
|
247 |
+
),
|
248 |
+
'billing_state' => array(
|
249 |
+
'name' => 'Billing_State',
|
250 |
+
'type' => 'string',
|
251 |
+
'visibility' => 'private'
|
252 |
+
),
|
253 |
+
'billing_city' => array(
|
254 |
+
'name' => 'Billing_City',
|
255 |
+
'type' => 'string',
|
256 |
+
'visibility' => 'private',
|
257 |
+
'defaultValue' => ''
|
258 |
+
),
|
259 |
+
'billing_country' => array(
|
260 |
+
'name' => 'Billing_Country',
|
261 |
+
'type' => 'string',
|
262 |
+
'visibility' => 'private',
|
263 |
+
'defaultValue' => ''
|
264 |
+
),
|
265 |
+
'billing_postcode' => array(
|
266 |
+
'name' => 'Billing_Postcode',
|
267 |
+
'type' => 'string',
|
268 |
+
'visibility' => 'private',
|
269 |
+
'defaultValue' => ''
|
270 |
+
),
|
271 |
+
'billing_telephone' => array(
|
272 |
+
'name' => 'Billing_Telephone',
|
273 |
+
'type' => 'string',
|
274 |
+
'visibility' => 'private',
|
275 |
+
'defaultValue' => ''
|
276 |
+
),
|
277 |
+
'delivery_address_1' => array(
|
278 |
+
'name' => 'Delivery_Address_1',
|
279 |
+
'type' => 'string',
|
280 |
+
'visibility' => 'private',
|
281 |
+
'defaultValue' => ''
|
282 |
+
),
|
283 |
+
'delivery_address_2' => array(
|
284 |
+
'name' => 'Delivery_Address_2',
|
285 |
+
'type' => 'string',
|
286 |
+
'visibility' => 'private',
|
287 |
+
'defaultValue' => ''
|
288 |
+
),
|
289 |
+
'delivery_state' => array(
|
290 |
+
'name' => 'Delivery_State',
|
291 |
+
'type' => 'string',
|
292 |
+
'visibility' => 'private'
|
293 |
+
),
|
294 |
+
'delivery_city' => array(
|
295 |
+
'name' => 'Delivery_City',
|
296 |
+
'type' => 'string',
|
297 |
+
'visibility' => 'private',
|
298 |
+
'defaultValue' => ''
|
299 |
+
),
|
300 |
+
'delivery_country' => array(
|
301 |
+
'name' => 'Delivery_Country',
|
302 |
+
'type' => 'string',
|
303 |
+
'visibility' => 'private',
|
304 |
+
'defaultValue' => ''
|
305 |
+
),
|
306 |
+
'delivery_postcode' => array(
|
307 |
+
'name' => 'Delivery_Postcode',
|
308 |
+
'type' => 'string',
|
309 |
+
'visibility' => 'private',
|
310 |
+
'defaultValue' => ''
|
311 |
+
),
|
312 |
+
'delivery_telephone' => array(
|
313 |
+
'name' => 'Delivery_Telephone',
|
314 |
+
'type' => 'string',
|
315 |
+
'visibility' => 'private',
|
316 |
+
'defaultValue' => ''
|
317 |
+
),
|
318 |
+
'number_of_orders' => array(
|
319 |
+
'name' => 'Number_Of_Orders',
|
320 |
+
'type' => 'numeric',
|
321 |
+
'visibility' => 'private',
|
322 |
+
),
|
323 |
+
'total_spend' => array(
|
324 |
+
'name' => 'Total_Spend',
|
325 |
+
'type' => 'numeric',
|
326 |
+
'visibility' => 'private',
|
327 |
+
),
|
328 |
+
'average_order_value' => array(
|
329 |
+
'name' => 'Average_Order_Value',
|
330 |
+
'type' => 'numeric',
|
331 |
+
'visibility' => 'private',
|
332 |
+
),
|
333 |
+
'last_order_date' => array(
|
334 |
+
'name' => 'Last_Order_Date',
|
335 |
+
'type' => 'date',
|
336 |
+
'visibility' => 'private',
|
337 |
+
),
|
338 |
+
'last_order_id' => array(
|
339 |
+
'name' => 'Last_Order_ID',
|
340 |
+
'type' => 'numeric',
|
341 |
+
'visibility' => 'private',
|
342 |
+
)
|
343 |
+
);
|
344 |
+
return $dataFields;
|
345 |
+
}
|
346 |
+
|
347 |
+
/**
|
348 |
+
* Default datafields
|
349 |
+
* @return array
|
350 |
+
*/
|
351 |
+
public function getDefaultDataFields()
|
352 |
+
{
|
353 |
+
$dataFields = array(
|
354 |
+
array(
|
355 |
+
'name' => 'Customer_ID',
|
356 |
+
'type' => 'string',
|
357 |
+
'visibility' => 'public',
|
358 |
+
),array(
|
359 |
+
'name' => 'Order_ID',
|
360 |
+
'type' => 'numeric',
|
361 |
+
'visibility' => 'public',
|
362 |
+
),array(
|
363 |
+
'name' => 'Order_Increment_ID',
|
364 |
+
'type' => 'numeric',
|
365 |
+
'visibility' => 'public',
|
366 |
+
)
|
367 |
+
);
|
368 |
+
|
369 |
+
return $dataFields;
|
370 |
+
}
|
371 |
+
|
372 |
+
|
373 |
+
public function getCustomerAddressBook($website)
|
374 |
+
{
|
375 |
+
$website = Mage::app()->getWebsite($website);
|
376 |
+
return $website->getConfig(self::XML_PATH_CUSTOMERS_ADDRESS_BOOK_ID);
|
377 |
+
}
|
378 |
+
|
379 |
+
public function getSubscriberAddressBook($website)
|
380 |
+
{
|
381 |
+
$website = Mage::app()->getWebsite($website);
|
382 |
+
return $website->getConfig(self::XML_PATH_SUBSCRIBERS_ADDRESS_BOOK_ID);
|
383 |
+
}
|
384 |
+
|
385 |
+
public function getGuestAddressBook($website)
|
386 |
+
{
|
387 |
+
$website = Mage::app()->getWebsite($website);
|
388 |
+
return $website->getConfig(self::XML_PATH_GUEST_ADDRESS_BOOK_ID);
|
389 |
+
}
|
390 |
+
|
391 |
+
|
392 |
+
/**
|
393 |
+
* Sync limit for contacts
|
394 |
+
* @return mixed
|
395 |
+
*/
|
396 |
+
public function getSyncLimit()
|
397 |
+
{
|
398 |
+
return Mage::getStoreConfig(self::XML_PATH_SYNC_LIMIT);
|
399 |
+
}
|
400 |
+
|
401 |
+
|
402 |
+
/**
|
403 |
+
* Gets the datafield mapping hash from the system config.
|
404 |
+
* @param $website
|
405 |
+
* @return array
|
406 |
+
*/
|
407 |
+
public function getMappingHash($website){
|
408 |
+
|
409 |
+
|
410 |
+
$website = Mage::app()->getWebsite($website);
|
411 |
+
$result = array();
|
412 |
+
|
413 |
+
$customerFields = $this->_getCustomerDataFields();
|
414 |
+
|
415 |
+
|
416 |
+
foreach ($customerFields as $field) {
|
417 |
+
|
418 |
+
$configPath = 'connector_data_field_settings/customer_data/' . $field;
|
419 |
+
|
420 |
+
$result[] = $website->getConfig($configPath);
|
421 |
+
}
|
422 |
+
|
423 |
+
return $result;
|
424 |
+
}
|
425 |
+
|
426 |
+
private function _getCustomerDataFields(){
|
427 |
+
|
428 |
+
return array(
|
429 |
+
'title',
|
430 |
+
'firstname',
|
431 |
+
'lastname',
|
432 |
+
'dob',
|
433 |
+
'gender',
|
434 |
+
'website_name',
|
435 |
+
'store_name',
|
436 |
+
'created_at',
|
437 |
+
'last_logged_date',
|
438 |
+
'customer_group',
|
439 |
+
'billing_address_1',
|
440 |
+
'billing_address_2',
|
441 |
+
'billing_city',
|
442 |
+
'billing_country',
|
443 |
+
'billing_postcode',
|
444 |
+
'billing_telephone',
|
445 |
+
'delivery_address_1',
|
446 |
+
'delivery_address_2',
|
447 |
+
'delivery_city',
|
448 |
+
'delivery_country',
|
449 |
+
'delivery_postcode',
|
450 |
+
'delivery_telephone',
|
451 |
+
'number_of_orders',
|
452 |
+
'average_order_value',
|
453 |
+
'total_spend',
|
454 |
+
'last_order_date',
|
455 |
+
'last_order_id',
|
456 |
+
'customer_id',
|
457 |
+
);
|
458 |
+
}
|
459 |
+
|
460 |
+
public function getWishlistEnabled()
|
461 |
+
{
|
462 |
+
return (bool)Mage::getStoreConfig(self::XML_PATH_SYNC_WISHLIST_ENABLED);
|
463 |
+
}
|
464 |
+
|
465 |
+
public function allowResourceFullExecution() {
|
466 |
+
|
467 |
+
if($this->getResourceAllocationEnabled()){
|
468 |
+
|
469 |
+
/* it may be needed to set maximum execution time of the script to longer,
|
470 |
+
* like 60 minutes than usual */
|
471 |
+
set_time_limit(7200);
|
472 |
+
|
473 |
+
/* and memory to 512 megabytes */
|
474 |
+
ini_set('memory_limit', '512M');
|
475 |
+
}
|
476 |
+
return $this;
|
477 |
+
}
|
478 |
+
public function convert($size)
|
479 |
+
{
|
480 |
+
$unit=array('b','kb','mb','gb','tb','pb');
|
481 |
+
return @round($size/pow(1024,($i=floor(log($size,1024)))),2).' '.$unit[$i];
|
482 |
+
}
|
483 |
+
|
484 |
+
public function countCustomersWithContactId()
|
485 |
+
{
|
486 |
+
$contactsCollection = Mage::getModel('connector/email_contact')->getCollection()
|
487 |
+
->addFieldToFilter('customer_id', array('notnull' => true))
|
488 |
+
->addFieldToFilter('contact_id', array('notnull' => true));
|
489 |
+
|
490 |
+
return $contactsCollection->getSize();
|
491 |
+
}
|
492 |
+
}
|
app/code/{local → community}/Dotdigitalgroup/Email/Helper/File.php
RENAMED
@@ -47,9 +47,9 @@ class Dotdigitalgroup_Email_Helper_File extends Dotdigitalgroup_Email_Helper_Dat
|
|
47 |
|
48 |
/**
|
49 |
* Moves the output file from one folder to the next
|
50 |
-
*
|
51 |
-
* @param
|
52 |
-
* @param
|
53 |
*/
|
54 |
public function moveFile($source_folder, $dest_folder, $filename ){
|
55 |
|
@@ -155,5 +155,25 @@ class Dotdigitalgroup_Email_Helper_File extends Dotdigitalgroup_Email_Helper_Dat
|
|
155 |
array_map($class_func, glob($path.'/*')) == @rmdir($path);
|
156 |
}
|
157 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
158 |
|
159 |
}
|
47 |
|
48 |
/**
|
49 |
* Moves the output file from one folder to the next
|
50 |
+
* @param $source_folder
|
51 |
+
* @param $dest_folder
|
52 |
+
* @param $filename
|
53 |
*/
|
54 |
public function moveFile($source_folder, $dest_folder, $filename ){
|
55 |
|
155 |
array_map($class_func, glob($path.'/*')) == @rmdir($path);
|
156 |
}
|
157 |
|
158 |
+
/**
|
159 |
+
* Create an array of columns we have chosen to map in our System->Config
|
160 |
+
* @param $website
|
161 |
+
* @return array
|
162 |
+
*/
|
163 |
+
public function getCsvHeaderArray($website) {
|
164 |
+
|
165 |
+
|
166 |
+
$website = Mage::app()->getWebsite($website);
|
167 |
+
$result = array();
|
168 |
+
$result[] = 'Email';
|
169 |
+
|
170 |
+
foreach (Mage::helper('connector')->getMappingHash($website) as $header) {
|
171 |
+
if($header != "0") $result[] = $header;
|
172 |
+
}
|
173 |
+
$result[] = 'emailType';
|
174 |
+
|
175 |
+
return $result;
|
176 |
+
}
|
177 |
+
|
178 |
|
179 |
}
|
app/code/{local → community}/Dotdigitalgroup/Email/Helper/Recommended.php
RENAMED
@@ -17,7 +17,7 @@ class Dotdigitalgroup_Email_Helper_Recommended extends Mage_Core_Helper_Abstract
|
|
17 |
const XML_PATH_BESTSELLER_PRODUCT_ITEMS = 'dynamic_content/products/best_items_to_display';
|
18 |
const XML_PATH_MOSTVIEWED_PRODUCT_ITEMS = 'dynamic_content/products/most_viewed_items_to_display';
|
19 |
const XML_PATH_RECENTLYVIEWED_PRODUCT_ITEMS = 'dynamic_content/products/recently_viewed_items_to_display';
|
20 |
-
const XML_PATH_PRODUCTPUSH_DISPLAY_ITEMS =
|
21 |
|
22 |
|
23 |
const XML_PATH_BESTSELLER_TIME_PERIOD = 'dynamic_content/products/best_time_period';
|
17 |
const XML_PATH_BESTSELLER_PRODUCT_ITEMS = 'dynamic_content/products/best_items_to_display';
|
18 |
const XML_PATH_MOSTVIEWED_PRODUCT_ITEMS = 'dynamic_content/products/most_viewed_items_to_display';
|
19 |
const XML_PATH_RECENTLYVIEWED_PRODUCT_ITEMS = 'dynamic_content/products/recently_viewed_items_to_display';
|
20 |
+
const XML_PATH_PRODUCTPUSH_DISPLAY_ITEMS = 'dynamic_content/manual_product_search/items_to_display';
|
21 |
|
22 |
|
23 |
const XML_PATH_BESTSELLER_TIME_PERIOD = 'dynamic_content/products/best_time_period';
|
app/code/{local/Dotdigitalgroup/Email/Helper/Api/Restrequest.php → community/Dotdigitalgroup/Email/Model/Abstract/Rest.php}
RENAMED
@@ -1,13 +1,13 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
class
|
4 |
{
|
5 |
protected $url;
|
6 |
protected $verb;
|
7 |
protected $requestBody;
|
8 |
protected $requestLength;
|
9 |
-
protected $
|
10 |
-
protected $
|
11 |
protected $acceptType;
|
12 |
protected $responseBody;
|
13 |
protected $responseInfo;
|
@@ -15,11 +15,11 @@ class Dotdigitalgroup_Email_Helper_Api_Restrequest extends Dotdigitalgroup_Email
|
|
15 |
public function __construct() // ($url = null, $verb = 'GET', $requestBody = null)
|
16 |
{
|
17 |
$this->url = null; //$url;
|
18 |
-
$this->verb =
|
19 |
$this->requestBody = null; //$requestBody;
|
20 |
$this->requestLength = 0;
|
21 |
-
$this->
|
22 |
-
$this->
|
23 |
$this->acceptType = 'application/json';
|
24 |
$this->responseBody = null;
|
25 |
$this->responseInfo = null;
|
@@ -28,11 +28,9 @@ class Dotdigitalgroup_Email_Helper_Api_Restrequest extends Dotdigitalgroup_Email
|
|
28 |
{
|
29 |
$this->buildPostBody();
|
30 |
}
|
31 |
-
|
32 |
-
//parent::__construct();
|
33 |
}
|
34 |
|
35 |
-
private function prettyPrint(
|
36 |
{
|
37 |
$result = '';
|
38 |
$level = 0;
|
@@ -114,11 +112,10 @@ class Dotdigitalgroup_Email_Helper_Api_Restrequest extends Dotdigitalgroup_Email
|
|
114 |
$this->responseInfo = null;
|
115 |
}
|
116 |
|
117 |
-
public function execute
|
118 |
{
|
119 |
$ch = curl_init();
|
120 |
$this->setAuth($ch);
|
121 |
-
|
122 |
try
|
123 |
{
|
124 |
switch (strtoupper($this->verb))
|
@@ -150,26 +147,22 @@ class Dotdigitalgroup_Email_Helper_Api_Restrequest extends Dotdigitalgroup_Email
|
|
150 |
throw $e;
|
151 |
}
|
152 |
|
|
|
153 |
}
|
154 |
|
155 |
public function buildPostBody($data = null)
|
156 |
{
|
157 |
-
$data = ($data !== null)? $data : $this->requestBody;
|
158 |
-
|
159 |
-
if (!is_array($data)){
|
160 |
-
throw new InvalidArgumentException('Invalid data input for postBody. Array expected');
|
161 |
-
}
|
162 |
|
163 |
-
$
|
164 |
-
$this
|
165 |
}
|
166 |
|
167 |
-
protected function executeGet
|
168 |
{
|
169 |
$this->doExecute($ch);
|
170 |
}
|
171 |
|
172 |
-
protected function executePost
|
173 |
{
|
174 |
if (!is_string($this->requestBody))
|
175 |
{
|
@@ -177,10 +170,17 @@ class Dotdigitalgroup_Email_Helper_Api_Restrequest extends Dotdigitalgroup_Email
|
|
177 |
}
|
178 |
|
179 |
curl_setopt($ch, CURLOPT_POSTFIELDS, $this->requestBody);
|
180 |
-
curl_setopt($ch, CURLOPT_POST,
|
181 |
|
182 |
$this->doExecute($ch);
|
183 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
184 |
|
185 |
protected function executePut($ch)
|
186 |
{
|
@@ -203,23 +203,23 @@ class Dotdigitalgroup_Email_Helper_Api_Restrequest extends Dotdigitalgroup_Email
|
|
203 |
fclose($fh);
|
204 |
}
|
205 |
|
206 |
-
protected function executeDelete
|
207 |
{
|
208 |
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
|
209 |
|
210 |
$this->doExecute($ch);
|
211 |
}
|
212 |
|
213 |
-
protected function doExecute
|
214 |
{
|
215 |
$this->setCurlOpts($curlHandle);
|
216 |
-
$this->responseBody = curl_exec($curlHandle);
|
217 |
$this->responseInfo = curl_getinfo($curlHandle);
|
218 |
|
219 |
curl_close($curlHandle);
|
220 |
}
|
221 |
|
222 |
-
protected function setCurlOpts
|
223 |
{
|
224 |
curl_setopt($curlHandle, CURLOPT_TIMEOUT, 10);
|
225 |
curl_setopt($curlHandle, CURLOPT_URL, $this->url);
|
@@ -227,63 +227,66 @@ class Dotdigitalgroup_Email_Helper_Api_Restrequest extends Dotdigitalgroup_Email
|
|
227 |
curl_setopt($curlHandle, CURLOPT_HTTPHEADER, array ('Accept: ' . $this->acceptType ,'Content-Type: application/json'));
|
228 |
}
|
229 |
|
230 |
-
protected function setAuth
|
231 |
{
|
232 |
-
if ($this->
|
233 |
{
|
234 |
curl_setopt($curlHandle, CURLAUTH_BASIC, CURLAUTH_DIGEST);
|
235 |
-
curl_setopt($curlHandle, CURLOPT_USERPWD, $this->
|
236 |
}
|
237 |
}
|
238 |
|
239 |
-
public function getAcceptType
|
240 |
{
|
241 |
return $this->acceptType;
|
242 |
}
|
243 |
|
244 |
-
public function setAcceptType
|
245 |
{
|
246 |
$this->acceptType = $acceptType;
|
247 |
}
|
248 |
|
249 |
-
public function
|
250 |
{
|
251 |
-
return $this->
|
252 |
}
|
253 |
|
254 |
-
public function
|
255 |
{
|
256 |
-
$this->
|
|
|
257 |
}
|
258 |
|
259 |
-
public function getResponseBody
|
260 |
{
|
261 |
return $this->responseBody;
|
262 |
}
|
263 |
|
264 |
-
public function getResponseInfo
|
265 |
{
|
266 |
return $this->responseInfo;
|
267 |
}
|
268 |
|
269 |
-
public function getUrl
|
270 |
{
|
271 |
return $this->url;
|
272 |
}
|
273 |
|
274 |
-
public function setUrl
|
275 |
{
|
276 |
$this->url = $url;
|
|
|
277 |
}
|
278 |
|
279 |
-
public function
|
280 |
{
|
281 |
-
return $this->
|
282 |
}
|
283 |
|
284 |
-
public function
|
285 |
{
|
286 |
-
$this->
|
|
|
287 |
}
|
288 |
|
289 |
public function getVerb ()
|
@@ -294,5 +297,6 @@ class Dotdigitalgroup_Email_Helper_Api_Restrequest extends Dotdigitalgroup_Email
|
|
294 |
public function setVerb ($verb)
|
295 |
{
|
296 |
$this->verb = $verb;
|
|
|
297 |
}
|
298 |
}
|
1 |
<?php
|
2 |
|
3 |
+
abstract class Dotdigitalgroup_Email_Model_Abstract_Rest
|
4 |
{
|
5 |
protected $url;
|
6 |
protected $verb;
|
7 |
protected $requestBody;
|
8 |
protected $requestLength;
|
9 |
+
protected $api_username;
|
10 |
+
protected $api_password;
|
11 |
protected $acceptType;
|
12 |
protected $responseBody;
|
13 |
protected $responseInfo;
|
15 |
public function __construct() // ($url = null, $verb = 'GET', $requestBody = null)
|
16 |
{
|
17 |
$this->url = null; //$url;
|
18 |
+
$this->verb = 'GET'; //$verb;
|
19 |
$this->requestBody = null; //$requestBody;
|
20 |
$this->requestLength = 0;
|
21 |
+
$this->api_username = (string)Mage::helper('connector')->getApiUsername(Mage::app()->getWebsite()->getId());
|
22 |
+
$this->api_password = (string)Mage::helper('connector')->getApiPassword(Mage::app()->getWebsite()->getId());
|
23 |
$this->acceptType = 'application/json';
|
24 |
$this->responseBody = null;
|
25 |
$this->responseInfo = null;
|
28 |
{
|
29 |
$this->buildPostBody();
|
30 |
}
|
|
|
|
|
31 |
}
|
32 |
|
33 |
+
private function prettyPrint($json)
|
34 |
{
|
35 |
$result = '';
|
36 |
$level = 0;
|
112 |
$this->responseInfo = null;
|
113 |
}
|
114 |
|
115 |
+
public function execute()
|
116 |
{
|
117 |
$ch = curl_init();
|
118 |
$this->setAuth($ch);
|
|
|
119 |
try
|
120 |
{
|
121 |
switch (strtoupper($this->verb))
|
147 |
throw $e;
|
148 |
}
|
149 |
|
150 |
+
return $this->responseBody;
|
151 |
}
|
152 |
|
153 |
public function buildPostBody($data = null)
|
154 |
{
|
|
|
|
|
|
|
|
|
|
|
155 |
|
156 |
+
$this->requestBody = json_encode($data);
|
157 |
+
return $this;
|
158 |
}
|
159 |
|
160 |
+
protected function executeGet($ch)
|
161 |
{
|
162 |
$this->doExecute($ch);
|
163 |
}
|
164 |
|
165 |
+
protected function executePost($ch)
|
166 |
{
|
167 |
if (!is_string($this->requestBody))
|
168 |
{
|
170 |
}
|
171 |
|
172 |
curl_setopt($ch, CURLOPT_POSTFIELDS, $this->requestBody);
|
173 |
+
curl_setopt($ch, CURLOPT_POST, true);
|
174 |
|
175 |
$this->doExecute($ch);
|
176 |
}
|
177 |
+
protected function buildPostBodyFromFile($filename){
|
178 |
+
|
179 |
+
$this->requestBody = array (
|
180 |
+
'file' => '@'.$filename
|
181 |
+
);
|
182 |
+
|
183 |
+
}
|
184 |
|
185 |
protected function executePut($ch)
|
186 |
{
|
203 |
fclose($fh);
|
204 |
}
|
205 |
|
206 |
+
protected function executeDelete($ch)
|
207 |
{
|
208 |
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
|
209 |
|
210 |
$this->doExecute($ch);
|
211 |
}
|
212 |
|
213 |
+
protected function doExecute(&$curlHandle)
|
214 |
{
|
215 |
$this->setCurlOpts($curlHandle);
|
216 |
+
$this->responseBody = json_decode(curl_exec($curlHandle));
|
217 |
$this->responseInfo = curl_getinfo($curlHandle);
|
218 |
|
219 |
curl_close($curlHandle);
|
220 |
}
|
221 |
|
222 |
+
protected function setCurlOpts(&$curlHandle)
|
223 |
{
|
224 |
curl_setopt($curlHandle, CURLOPT_TIMEOUT, 10);
|
225 |
curl_setopt($curlHandle, CURLOPT_URL, $this->url);
|
227 |
curl_setopt($curlHandle, CURLOPT_HTTPHEADER, array ('Accept: ' . $this->acceptType ,'Content-Type: application/json'));
|
228 |
}
|
229 |
|
230 |
+
protected function setAuth(&$curlHandle)
|
231 |
{
|
232 |
+
if ($this->api_username !== null && $this->api_password !== null)
|
233 |
{
|
234 |
curl_setopt($curlHandle, CURLAUTH_BASIC, CURLAUTH_DIGEST);
|
235 |
+
curl_setopt($curlHandle, CURLOPT_USERPWD, $this->api_username . ':' . $this->api_password);
|
236 |
}
|
237 |
}
|
238 |
|
239 |
+
public function getAcceptType()
|
240 |
{
|
241 |
return $this->acceptType;
|
242 |
}
|
243 |
|
244 |
+
public function setAcceptType($acceptType)
|
245 |
{
|
246 |
$this->acceptType = $acceptType;
|
247 |
}
|
248 |
|
249 |
+
public function getApiPassword()
|
250 |
{
|
251 |
+
return $this->api_password;
|
252 |
}
|
253 |
|
254 |
+
public function setApiPassword($apiPassword)
|
255 |
{
|
256 |
+
$this->api_password = $apiPassword;
|
257 |
+
return $this;
|
258 |
}
|
259 |
|
260 |
+
public function getResponseBody()
|
261 |
{
|
262 |
return $this->responseBody;
|
263 |
}
|
264 |
|
265 |
+
public function getResponseInfo()
|
266 |
{
|
267 |
return $this->responseInfo;
|
268 |
}
|
269 |
|
270 |
+
public function getUrl()
|
271 |
{
|
272 |
return $this->url;
|
273 |
}
|
274 |
|
275 |
+
public function setUrl($url)
|
276 |
{
|
277 |
$this->url = $url;
|
278 |
+
return $this;
|
279 |
}
|
280 |
|
281 |
+
public function getApiUsername()
|
282 |
{
|
283 |
+
return $this->api_username;
|
284 |
}
|
285 |
|
286 |
+
public function setApiUsername($apiUsername)
|
287 |
{
|
288 |
+
$this->api_username = $apiUsername;
|
289 |
+
return $this;
|
290 |
}
|
291 |
|
292 |
public function getVerb ()
|
297 |
public function setVerb ($verb)
|
298 |
{
|
299 |
$this->verb = $verb;
|
300 |
+
return $this;
|
301 |
}
|
302 |
}
|
app/code/{local → community}/Dotdigitalgroup/Email/Model/Connector/Account.php
RENAMED
@@ -16,11 +16,13 @@ class Dotdigitalgroup_Email_Model_Connector_Account
|
|
16 |
private $_orders = array();
|
17 |
|
18 |
/**
|
19 |
-
* @param
|
|
|
20 |
*/
|
21 |
public function setApiPassword($api_password)
|
22 |
{
|
23 |
$this->_api_password = $api_password;
|
|
|
24 |
}
|
25 |
|
26 |
/**
|
@@ -32,11 +34,13 @@ class Dotdigitalgroup_Email_Model_Connector_Account
|
|
32 |
}
|
33 |
|
34 |
/**
|
35 |
-
* @param
|
|
|
36 |
*/
|
37 |
public function setApiUsername($api_username)
|
38 |
{
|
39 |
$this->_api_username = $api_username;
|
|
|
40 |
}
|
41 |
|
42 |
/**
|
@@ -68,12 +72,11 @@ class Dotdigitalgroup_Email_Model_Connector_Account
|
|
68 |
*/
|
69 |
public function setContacts($contacts)
|
70 |
{
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
$this->_contacts[] = $contacts;
|
76 |
-
|
77 |
}
|
78 |
|
79 |
/**
|
16 |
private $_orders = array();
|
17 |
|
18 |
/**
|
19 |
+
* @param $api_password
|
20 |
+
* @return $this
|
21 |
*/
|
22 |
public function setApiPassword($api_password)
|
23 |
{
|
24 |
$this->_api_password = $api_password;
|
25 |
+
return $this;
|
26 |
}
|
27 |
|
28 |
/**
|
34 |
}
|
35 |
|
36 |
/**
|
37 |
+
* @param $api_username
|
38 |
+
* @return $this
|
39 |
*/
|
40 |
public function setApiUsername($api_username)
|
41 |
{
|
42 |
$this->_api_username = $api_username;
|
43 |
+
return $this;
|
44 |
}
|
45 |
|
46 |
/**
|
72 |
*/
|
73 |
public function setContacts($contacts)
|
74 |
{
|
75 |
+
if(!empty($this->_contacts)){
|
76 |
+
$this->_contacts += $contacts;
|
77 |
+
}else{
|
|
|
78 |
$this->_contacts[] = $contacts;
|
79 |
+
}
|
80 |
}
|
81 |
|
82 |
/**
|
app/code/community/Dotdigitalgroup/Email/Model/Connector/Api/Client.php
ADDED
@@ -0,0 +1,592 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Dotdigitalgroup_Email_Model_Connector_Api_Client extends Dotdigitalgroup_Email_Model_Abstract_Rest
|
4 |
+
{
|
5 |
+
const APICONNECTOR_VERSION = 'V2';
|
6 |
+
|
7 |
+
const REST_WAIT_UPLOAD_TIME = 5;
|
8 |
+
//rest api data
|
9 |
+
const REST_ACCOUNT_INFO = 'https://apiconnector.com/v2/account-info';
|
10 |
+
const REST_CONTACTS = 'https://apiconnector.com/v2/contacts/';
|
11 |
+
const REST_CONTACTS_IMPORT = 'https://apiconnector.com/v2/contacts/import/';
|
12 |
+
const REST_ADDRESS_BOOKS = 'https://apiconnector.com/v2/address-books';
|
13 |
+
const REST_DATA_FILEDS = 'https://apiconnector.com/v2/data-fields';
|
14 |
+
const REST_TRANSACTIONAL_DATA_IMPORT = 'https://apiconnector.com/v2/contacts/transactional-data/import/';
|
15 |
+
const REST_TRANSACTIONAL_DATA = 'https://apiconnector.com/v2/contacts/transactional-data/';
|
16 |
+
const REST_CAMPAIGN_SEND = 'https://apiconnector.com/v2/campaigns/send';
|
17 |
+
const REST_CONTACTS_SUPPRESSED_SINCE = 'https://apiconnector.com/v2/contacts/suppressed-since/';
|
18 |
+
const REST_DATA_FIELDS_CAMPAIGNS = 'https://apiconnector.com/v2/campaigns';
|
19 |
+
const REST_SMS_MESSAGE_SEND_TO = 'https://apiconnector.com/v2/sms-messages/send-to/';
|
20 |
+
//rest error responces
|
21 |
+
const REST_CONTACT_NOT_FOUND = 'Error: ERROR_CONTACT_NOT_FOUND';
|
22 |
+
const REST_SEND_MULTI_TRANSACTIONAL_DATA = 'Error: ERROR_FEATURENOTACTIVE';
|
23 |
+
const REST_STATUS_IMPORT_REPORT_NOT_FOUND = 'Import is not processed yet or completed with error. ERROR_IMPORT_REPORT_NOT_FOUND';
|
24 |
+
const REST_STATUS_REPORT_NOTFINISHED = 'NotFinished';
|
25 |
+
const REST_TRANSACTIONAL_DATA_NOT_EXISTS = 'Error: ERROR_TRANSACTIONAL_DATA_DOES_NOT_EXIST';
|
26 |
+
const REST_API_USAGE_EXCEEDED = 'Your account has generated excess API activity and is being temporarily capped. Please contact support. ERROR_APIUSAGE_EXCEEDED';
|
27 |
+
const REST_API_EMAIL_NOT_VALID = 'Email is not a valid email address. ERROR_PARAMETER_INVALID';
|
28 |
+
|
29 |
+
protected $_customers_file_slug = 'customer_sync';
|
30 |
+
protected $_subscribers_file_slug = 'subscriber_sync';
|
31 |
+
protected $_api_helper;
|
32 |
+
protected $_subscribers_address_book_id;
|
33 |
+
protected $_customers_address_book_id;
|
34 |
+
protected $_filename;
|
35 |
+
protected $_subscribers_filename;
|
36 |
+
protected $_customers_filename;
|
37 |
+
protected $_limit = 10;
|
38 |
+
protected $_address_book_id;
|
39 |
+
public $fileHelper; /** @var Dotdigitalgroup_Email_Helper_File */
|
40 |
+
public $result = array('error' => false, 'message' => '');
|
41 |
+
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Gets a contact by ID. Unsubscribed or suppressed contacts will not be retrieved.
|
45 |
+
* @param $id
|
46 |
+
* @return null
|
47 |
+
*/
|
48 |
+
public function getContactById($id)
|
49 |
+
{
|
50 |
+
$url = self::REST_CONTACTS . $id;
|
51 |
+
|
52 |
+
$this->setUrl($url)
|
53 |
+
->setVerb('GET');
|
54 |
+
$response = $this->execute();
|
55 |
+
if(isset($response->message))
|
56 |
+
Mage::helper('connector')->log('GET CONTACT INFO ID ' . $response->message);
|
57 |
+
|
58 |
+
return $response;
|
59 |
+
}
|
60 |
+
|
61 |
+
/**
|
62 |
+
* * Bulk creates, or bulk updates, contacts. Import format can either be CSV or Excel.
|
63 |
+
* Must include one column called "Email". Any other columns will attempt to map to your custom data fields.
|
64 |
+
* The ID of returned object can be used to query import progress.
|
65 |
+
* @param $filename
|
66 |
+
* @param $addressBookId
|
67 |
+
* @return mixed
|
68 |
+
*/
|
69 |
+
public function postAddressBookContactsImport($filename, $addressBookId)
|
70 |
+
{
|
71 |
+
// ...the API request
|
72 |
+
$url = "https://apiconnector.com/v2/address-books/{$addressBookId}/contacts/import";
|
73 |
+
$helper = Mage::helper('connector');
|
74 |
+
|
75 |
+
$ch = curl_init($url);
|
76 |
+
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
|
77 |
+
curl_setopt($ch, CURLOPT_USERPWD, $this->getApiUsername() . ':' . $this->getApiPassword());
|
78 |
+
curl_setopt($ch, CURLOPT_POSTFIELDS, array (
|
79 |
+
'file' => '@'.Mage::helper('connector/file')->getFilePath($filename)
|
80 |
+
));
|
81 |
+
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
82 |
+
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
83 |
+
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
84 |
+
'Content-Type: multipart/form-data')
|
85 |
+
);
|
86 |
+
|
87 |
+
|
88 |
+
// send contacts to address book
|
89 |
+
$result = curl_exec($ch);
|
90 |
+
$result = json_decode($result);
|
91 |
+
|
92 |
+
if(isset($result->message)){
|
93 |
+
$helper->log('POST ADDRESS BOOK CONTACT IMPORT ; ' . $result->message);
|
94 |
+
}
|
95 |
+
|
96 |
+
return $result;
|
97 |
+
}
|
98 |
+
|
99 |
+
/**
|
100 |
+
* Adds a contact to a given address book.
|
101 |
+
* @param $addressBookId
|
102 |
+
* @param $apiContact
|
103 |
+
* @return mixed|null
|
104 |
+
*/
|
105 |
+
public function postAddressBookContacts($addressBookId, $apiContact)
|
106 |
+
{
|
107 |
+
$url = self::REST_ADDRESS_BOOKS . '/' . $addressBookId . '/contacts';
|
108 |
+
$this->setUrl($url)
|
109 |
+
->setVerb("POST")
|
110 |
+
->buildPostBody($apiContact);
|
111 |
+
|
112 |
+
$response = $this->execute();
|
113 |
+
if(isset($response->message))
|
114 |
+
Mage::helper('connector')->log('POST ADDRESS BOOK CONTACTS ' . $response->message);
|
115 |
+
|
116 |
+
return $response;
|
117 |
+
}
|
118 |
+
|
119 |
+
/**
|
120 |
+
* Deletes all contacts from a given address book.
|
121 |
+
* @param $addressBookId
|
122 |
+
* @param $contactId
|
123 |
+
* @return null
|
124 |
+
*/
|
125 |
+
public function deleteAddressBookContact($addressBookId, $contactId)
|
126 |
+
{
|
127 |
+
$url = self::REST_ADDRESS_BOOKS . '/' . $addressBookId . '/contacts/' . $contactId;
|
128 |
+
$this->setUrl($url)
|
129 |
+
->setVerb('DELETE');
|
130 |
+
|
131 |
+
$response = $this->execute();
|
132 |
+
if(isset($response->message))
|
133 |
+
Mage::helper('connector')->log('DELETE ADDRESS BOOK CONTACT ' . $response->message);
|
134 |
+
|
135 |
+
return $response;
|
136 |
+
}
|
137 |
+
|
138 |
+
/**
|
139 |
+
* Gets a report with statistics about what was successfully imported, and what was unable to be imported.
|
140 |
+
* @param $importId
|
141 |
+
* @return mixed
|
142 |
+
*/
|
143 |
+
public function getContactsImportReport($importId)
|
144 |
+
{
|
145 |
+
$url = self::REST_CONTACTS_IMPORT . $importId . "/report";
|
146 |
+
|
147 |
+
$this->setUrl($url)
|
148 |
+
->setVerb('GET');
|
149 |
+
|
150 |
+
$response = $this->execute();
|
151 |
+
if(isset($response->message))
|
152 |
+
Mage::helper('connector')->log('GET CONTACTS IMPORT REPORT . ' . $url . ' message : ' . $response->message);
|
153 |
+
return $response;
|
154 |
+
}
|
155 |
+
|
156 |
+
/**
|
157 |
+
* Gets a contact by email address.
|
158 |
+
* @param $email
|
159 |
+
* @return mixed
|
160 |
+
*/
|
161 |
+
public function getContactByEmail($email)
|
162 |
+
{
|
163 |
+
$url = self::REST_CONTACTS . $email;
|
164 |
+
$this->setUrl($url)
|
165 |
+
->setVerb('GET');
|
166 |
+
|
167 |
+
$response = $this->execute();
|
168 |
+
if(isset($response->message))
|
169 |
+
Mage::helper('connector')->log('GET CONTACT BY EMAIL : ' . $email . ' ' . $response->message);
|
170 |
+
|
171 |
+
return $response;
|
172 |
+
}
|
173 |
+
|
174 |
+
/**
|
175 |
+
* Get all address books
|
176 |
+
* @return null
|
177 |
+
*/
|
178 |
+
public function getAddressBooks()
|
179 |
+
{
|
180 |
+
$url = self::REST_ADDRESS_BOOKS;
|
181 |
+
$this->setUrl($url)
|
182 |
+
->setVerb("GET");
|
183 |
+
|
184 |
+
$response = $this->execute();
|
185 |
+
if(isset($response->message))
|
186 |
+
Mage::helper('connector')->log('GET ALL ADDRESS BOOKS..' . $response->message);
|
187 |
+
return $response;
|
188 |
+
}
|
189 |
+
|
190 |
+
/**
|
191 |
+
* Get list of all campaigns
|
192 |
+
* @return mixed
|
193 |
+
*/
|
194 |
+
public function getCampaigns()
|
195 |
+
{
|
196 |
+
$url = self::REST_DATA_FIELDS_CAMPAIGNS;
|
197 |
+
$this->setUrl($url)
|
198 |
+
->setVerb('GET');
|
199 |
+
|
200 |
+
$response = $this->execute();
|
201 |
+
if(isset($response->message))
|
202 |
+
Mage::helper('connector')->log('GET CAMPAINGS ' . $response->message);
|
203 |
+
|
204 |
+
return $response;
|
205 |
+
}
|
206 |
+
|
207 |
+
/**
|
208 |
+
* Creates a data field within the account.
|
209 |
+
* @param $data string/array
|
210 |
+
* @param string $type string, numeric, date, boolean
|
211 |
+
* @param string $visibility public, private
|
212 |
+
* @param bool $defaultValue
|
213 |
+
* @return mixed
|
214 |
+
*/
|
215 |
+
public function postDataFields($data, $type = 'string', $visibility = 'public', $defaultValue = false)
|
216 |
+
{
|
217 |
+
$url = self::REST_DATA_FILEDS;
|
218 |
+
$helper = Mage::helper('connector');
|
219 |
+
if($type == 'numeric' && !$defaultValue)
|
220 |
+
$defaultValue = 0;
|
221 |
+
|
222 |
+
if(is_string($data)){
|
223 |
+
$data = array(
|
224 |
+
'name' => $data,
|
225 |
+
'type' => $type,
|
226 |
+
'visibility' => $visibility,
|
227 |
+
'defaultValue' => $defaultValue
|
228 |
+
);
|
229 |
+
}
|
230 |
+
$this->flush();
|
231 |
+
$this->setUrl($url)
|
232 |
+
->buildPostBody($data)
|
233 |
+
->setVerb('POST');
|
234 |
+
|
235 |
+
$response = $this->execute();
|
236 |
+
if(isset($response->message)){
|
237 |
+
$helper->log('POST CREATE DATAFIELDS ' . $response->message);
|
238 |
+
$helper->log($response);
|
239 |
+
}
|
240 |
+
|
241 |
+
return $response;
|
242 |
+
}
|
243 |
+
|
244 |
+
public function deleteDataField($name)
|
245 |
+
{
|
246 |
+
$url = self::REST_DATA_FILEDS . '/' . $name;
|
247 |
+
$request = Mage::helper('connector/api_restrequest');
|
248 |
+
$request->setUrl($url)
|
249 |
+
->setVerb('DELETE');
|
250 |
+
|
251 |
+
$response = $request->execute();
|
252 |
+
if(isset($response->message))
|
253 |
+
Mage::helper('connector')->log('DELETE DATA FIELD :' . $name . ' ' . $response->message);
|
254 |
+
return $request->execute();
|
255 |
+
}
|
256 |
+
|
257 |
+
/**
|
258 |
+
* Lists the data fields within the account.
|
259 |
+
* @return mixed
|
260 |
+
*/
|
261 |
+
public function getDataFields()
|
262 |
+
{
|
263 |
+
$url = self::REST_DATA_FILEDS;
|
264 |
+
$this->setUrl($url)
|
265 |
+
->setVerb('GET');
|
266 |
+
|
267 |
+
$response = $this->execute();
|
268 |
+
if(isset($response->message))
|
269 |
+
Mage::helper('connector')->log('GET ALL DATAFIELDS ' . $response->message);
|
270 |
+
|
271 |
+
return $response;
|
272 |
+
}
|
273 |
+
|
274 |
+
/**
|
275 |
+
* Updates a contact.
|
276 |
+
* @param $contactId
|
277 |
+
* @param $data
|
278 |
+
* @return object
|
279 |
+
*/
|
280 |
+
public function updateContact($contactId, $data)
|
281 |
+
{
|
282 |
+
$url = self::REST_CONTACTS . $contactId;
|
283 |
+
$this->flush();
|
284 |
+
$this->setUrl($url)
|
285 |
+
->setVerb('PUT')
|
286 |
+
->buildPostBody($data);
|
287 |
+
|
288 |
+
$response = $this->execute();
|
289 |
+
if(isset($response->message)){
|
290 |
+
Mage::helper('connector')->log('UPDATE CONTACT ' . $contactId);
|
291 |
+
Mage::helper('connector')->log($data);
|
292 |
+
}
|
293 |
+
|
294 |
+
return $response;
|
295 |
+
}
|
296 |
+
|
297 |
+
/**
|
298 |
+
* Sends a specified campaign to one or more address books, segments or contacts at a specified time.
|
299 |
+
* Leave the address book array empty to send to All Contacts.
|
300 |
+
* @param $campaignId
|
301 |
+
* @param $contacts
|
302 |
+
* @return mixed
|
303 |
+
*/
|
304 |
+
public function postCampaignsSend($campaignId, $contacts)
|
305 |
+
{
|
306 |
+
$helper = Mage::helper('connector');
|
307 |
+
$data = array(
|
308 |
+
'username' => $this->api_username,
|
309 |
+
'password' => $this->api_password,
|
310 |
+
"campaignId" => $campaignId,
|
311 |
+
"ContactIds" => $contacts
|
312 |
+
);
|
313 |
+
$this->setUrl(self::REST_CAMPAIGN_SEND)
|
314 |
+
->setVerb('POST')
|
315 |
+
->buildPostBody($data);
|
316 |
+
|
317 |
+
$response = $this->execute();
|
318 |
+
if(isset($response->message))
|
319 |
+
$helper->log(' SENDING CAMPAIGN ' . $response->message);
|
320 |
+
|
321 |
+
return $response;
|
322 |
+
}
|
323 |
+
|
324 |
+
/**
|
325 |
+
* Creates a contact.
|
326 |
+
* @param $email
|
327 |
+
* @return mixed
|
328 |
+
*/
|
329 |
+
public function postContacts($email)
|
330 |
+
{
|
331 |
+
$url = self::REST_CONTACTS;
|
332 |
+
$data = array(
|
333 |
+
'Email' => $email,
|
334 |
+
'EmailType' => 'Html',
|
335 |
+
|
336 |
+
);
|
337 |
+
$this->setUrl($url)
|
338 |
+
->setVerb('POST')
|
339 |
+
->buildPostBody($data);
|
340 |
+
|
341 |
+
$response = $this->execute();
|
342 |
+
if(isset($response->message))
|
343 |
+
Mage::helper('connector')->log('CREATE A NEW CONTACT : ' . $email . ' ' . $response->message);
|
344 |
+
|
345 |
+
return $response;
|
346 |
+
}
|
347 |
+
|
348 |
+
/**
|
349 |
+
* @param $testEmail
|
350 |
+
* @param $contactId
|
351 |
+
* @param $campaignId
|
352 |
+
*/
|
353 |
+
public function sendIntallInfo($testEmail, $contactId, $campaignId)
|
354 |
+
{
|
355 |
+
$helper = Mage::helper('connector');
|
356 |
+
$productSize= Mage::getModel('catalog/product')->getCollection()->getSize();
|
357 |
+
$customerSize = Mage::getModel('customer/customer')->getCollection()->getSize();
|
358 |
+
|
359 |
+
$data = array(
|
360 |
+
'Email' => $testEmail,
|
361 |
+
'EmailType' => 'Html',
|
362 |
+
'DataFields' => array(
|
363 |
+
array(
|
364 |
+
'Key' => 'INSTALLCUSTOMERS',
|
365 |
+
'Value' => (string)$customerSize),
|
366 |
+
array(
|
367 |
+
'Key' => 'INSTALLPRODUCTS',
|
368 |
+
'Value' => (string)$productSize),
|
369 |
+
array(
|
370 |
+
'Key' => 'INSTALLURL',
|
371 |
+
'Value' => Mage::getBaseUrl()),
|
372 |
+
array(
|
373 |
+
'Key' => 'INSTALLAPI',
|
374 |
+
'Value' => implode(',' , $this->getWebsiteAccounts())),
|
375 |
+
array(
|
376 |
+
'Key' => 'PHPMEMORY',
|
377 |
+
'Value' => ini_get('memory_limit') . ', Version = ' . $helper->getConnectorVersion()
|
378 |
+
)
|
379 |
+
)
|
380 |
+
);
|
381 |
+
$helper->log('SEND INSTALL INFO DATA...', Zend_Log::INFO, 'api.log');
|
382 |
+
/**
|
383 |
+
* Update data fields for a contact
|
384 |
+
*/
|
385 |
+
$this->updateContact($contactId, $data);
|
386 |
+
/**
|
387 |
+
* Send Install info campaign
|
388 |
+
*/
|
389 |
+
$this->postCampaignsSend($campaignId, array($contactId));
|
390 |
+
|
391 |
+
return;
|
392 |
+
}
|
393 |
+
private function getWebsiteAccounts()
|
394 |
+
{
|
395 |
+
$accounts = array();
|
396 |
+
$websites = Mage::app()->getWebsites();
|
397 |
+
foreach ($websites as $website) {
|
398 |
+
$websiteId = $website->getWebsiteId();
|
399 |
+
$websiteModel = Mage::app()->getWebsite($websiteId);
|
400 |
+
$apiUsername = $websiteModel->getConfig('connector_api_settings/api_credentials/username');
|
401 |
+
if(! in_array($apiUsername, $accounts))
|
402 |
+
$accounts[] = $apiUsername;
|
403 |
+
}
|
404 |
+
return $accounts;
|
405 |
+
}
|
406 |
+
|
407 |
+
/**
|
408 |
+
* Gets a list of suppressed contacts after a given date along with the reason for suppression.
|
409 |
+
* @param $dateString
|
410 |
+
* @return mixed
|
411 |
+
*/
|
412 |
+
public function getContactsSuppressedSinceDate($dateString)
|
413 |
+
{
|
414 |
+
$url = self::REST_CONTACTS_SUPPRESSED_SINCE . $dateString;
|
415 |
+
$this->setUrl($url)
|
416 |
+
->setVerb("GET");
|
417 |
+
|
418 |
+
$response = $this->execute();
|
419 |
+
if(isset($response->message))
|
420 |
+
Mage::helper('connector')->log('GET CONTACTS SUPPRESSED SINSE : ' . $dateString . ' ' . $response->message);
|
421 |
+
|
422 |
+
return $response;
|
423 |
+
}
|
424 |
+
|
425 |
+
/**
|
426 |
+
* Adds multiple pieces of transactional data to contacts asynchronously, returning an identifier that can be used to check for import progress.
|
427 |
+
* @param $collectionName
|
428 |
+
* @param $transactionalData
|
429 |
+
* @return object
|
430 |
+
*/
|
431 |
+
public function postContactsTransactionalDataImport($transactionalData, $collectionName = 'Orders')
|
432 |
+
{
|
433 |
+
$orders = array();
|
434 |
+
|
435 |
+
foreach($transactionalData as $one){
|
436 |
+
if(isset($one->connector_id)){
|
437 |
+
$orders[] = array(
|
438 |
+
'Key' => $one->id,
|
439 |
+
'ContactIdentifier' => $one->connector_id,
|
440 |
+
'Json' => json_encode($one->expose())
|
441 |
+
);
|
442 |
+
}
|
443 |
+
}
|
444 |
+
$url = self::REST_TRANSACTIONAL_DATA_IMPORT . $collectionName;
|
445 |
+
$this->setURl($url)
|
446 |
+
->setVerb('POST')
|
447 |
+
->buildPostBody($orders);
|
448 |
+
|
449 |
+
$result = $this->execute();
|
450 |
+
if(isset($result->message)){
|
451 |
+
Mage::helper('connector')->log(' SEND MULTI TRANSACTIONAL DATA ' . $result->message);
|
452 |
+
Mage::helper('connector')->log($orders);
|
453 |
+
}
|
454 |
+
|
455 |
+
return $result;
|
456 |
+
}
|
457 |
+
|
458 |
+
/**
|
459 |
+
* Adds a single piece of transactional data to a contact.
|
460 |
+
* @param $data
|
461 |
+
* @param string $name
|
462 |
+
* @return null
|
463 |
+
*/
|
464 |
+
public function postContactsTransactionalData($data, $name = 'Orders')
|
465 |
+
{
|
466 |
+
|
467 |
+
$getData = $this->getContactsTransactionalDataByKey($name, $data->id);
|
468 |
+
if(isset($getData->message) && $getData->message == self::REST_TRANSACTIONAL_DATA_NOT_EXISTS){
|
469 |
+
$url = self::REST_TRANSACTIONAL_DATA . $name;
|
470 |
+
}else{
|
471 |
+
$url = self::REST_TRANSACTIONAL_DATA . $name . '/' . $getData->key ;
|
472 |
+
}
|
473 |
+
$apiData = array(
|
474 |
+
'Key' => $data->id,
|
475 |
+
'ContactIdentifier' => $data->connector_id,
|
476 |
+
'Json' => json_encode($data->expose())
|
477 |
+
);
|
478 |
+
|
479 |
+
$this->setUrl($url)
|
480 |
+
->setVerb('POST')
|
481 |
+
->buildPostBody($apiData);
|
482 |
+
$response = $this->execute();
|
483 |
+
if(isset($response->message)){
|
484 |
+
Mage::helper('connector')->log('POST CONTACTS TRANSACTIONAL DATA ' . $response->message);
|
485 |
+
Mage::helper('connector')->log($apiData);
|
486 |
+
}
|
487 |
+
|
488 |
+
return $response;
|
489 |
+
}
|
490 |
+
|
491 |
+
/**
|
492 |
+
* Gets a piece of transactional data by key.
|
493 |
+
* @param $name
|
494 |
+
* @param $key
|
495 |
+
* @return null
|
496 |
+
*/
|
497 |
+
public function getContactsTransactionalDataByKey($name, $key)
|
498 |
+
{
|
499 |
+
$url = self::REST_TRANSACTIONAL_DATA . $name . '/' . $key;
|
500 |
+
$this->setUrl($url)
|
501 |
+
->setVerb('GET');
|
502 |
+
|
503 |
+
$response = $this->execute();
|
504 |
+
if(isset($response->message))
|
505 |
+
Mage::helper('connector')->log('GET CONTACTS TRANSACTIONAL DATA name: ' . $name . ' key: ' . $key . ' ' . $response->message);
|
506 |
+
|
507 |
+
return $response;
|
508 |
+
}
|
509 |
+
|
510 |
+
/**
|
511 |
+
* Deletes all transactional data for a contact.
|
512 |
+
* @param $email
|
513 |
+
* @param string $collectionName
|
514 |
+
* @return object
|
515 |
+
*/
|
516 |
+
public function deleteContactTransactionalData($email, $collectionName = 'Orders')
|
517 |
+
{
|
518 |
+
$url = 'https://apiconnector.com/v2/contacts/' . $email . '/transactional-data/' . $collectionName ;
|
519 |
+
$this->setUrl($url)
|
520 |
+
->setVerb('DELETE');
|
521 |
+
|
522 |
+
$response = $this->execute();
|
523 |
+
if(isset($response->message))
|
524 |
+
Mage::helper('connector')->log('DELETE CONTACT TRANSACTIONAL DATA : ' . $email . ' ' . $response->message);
|
525 |
+
|
526 |
+
return $response;
|
527 |
+
}
|
528 |
+
|
529 |
+
/**
|
530 |
+
* Gets a summary of information about the current status of the account.
|
531 |
+
* @return mixed
|
532 |
+
*/
|
533 |
+
public function getAccountInfo()
|
534 |
+
{
|
535 |
+
$url = self::REST_ACCOUNT_INFO;
|
536 |
+
$helper = Mage::helper('connector');
|
537 |
+
$this->setUrl($url)
|
538 |
+
->setVerb('GET');
|
539 |
+
$response = $this->execute();
|
540 |
+
|
541 |
+
$message = isset($response->message)? $response->message : '';
|
542 |
+
$helper->log('GET ACCOUNT INFO for api user : ' . $this->getApiUsername() . ' ' . $message);
|
543 |
+
|
544 |
+
return $response;
|
545 |
+
}
|
546 |
+
|
547 |
+
/**
|
548 |
+
* Send a single SMS message.
|
549 |
+
* @param $telephoneNumber
|
550 |
+
* @param $message
|
551 |
+
* @return object
|
552 |
+
*/
|
553 |
+
public function postSmsMessagesSendTo($telephoneNumber, $message)
|
554 |
+
{
|
555 |
+
$data = array('Message' => $message);
|
556 |
+
$url = self::REST_SMS_MESSAGE_SEND_TO . $telephoneNumber;
|
557 |
+
$this->setUrl($url)
|
558 |
+
->setVerb('POST')
|
559 |
+
->buildPostBody($data);
|
560 |
+
|
561 |
+
$response = $this->execute();
|
562 |
+
if(isset($response->message))
|
563 |
+
Mage::helper('connector')->log('POST SMS MESSAGE SEND to ' . $telephoneNumber . ' message: ' . $message . ' error: ' . $response->message);
|
564 |
+
|
565 |
+
return $response;
|
566 |
+
}
|
567 |
+
|
568 |
+
|
569 |
+
/**
|
570 |
+
* Deletes multiple contacts from an address book
|
571 |
+
* @param $addressBookId
|
572 |
+
* @param $contactIds
|
573 |
+
* @return object
|
574 |
+
*/
|
575 |
+
public function deleteAddressBookContactsInbulk($addressBookId, $contactIds)
|
576 |
+
{
|
577 |
+
$url = 'https://apiconnector.com/v2/address-books/' . $addressBookId . '/contacts/inbulk';
|
578 |
+
|
579 |
+
$data = array('ContactIds' => array($contactIds[0]));
|
580 |
+
|
581 |
+
$this->setUrl($url)
|
582 |
+
->setVerb('DELETE')
|
583 |
+
->buildPostBody($data);
|
584 |
+
|
585 |
+
$result = $this->execute();
|
586 |
+
if(isset($result->message)){
|
587 |
+
Mage::helper('connector')->log('DELETE BULK ADDRESS BOOK CONTACTS ' . $result->message . ' address book ' . $addressBookId);
|
588 |
+
|
589 |
+
}
|
590 |
+
return $result;
|
591 |
+
}
|
592 |
+
}
|
app/code/community/Dotdigitalgroup/Email/Model/Connector/Campaign.php
ADDED
@@ -0,0 +1,84 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Dotdigitalgroup_Email_Model_Connector_Campaign
|
4 |
+
{
|
5 |
+
|
6 |
+
public $id;
|
7 |
+
public $contacts = array();
|
8 |
+
public $emails = array();
|
9 |
+
public $email_send_id = array();
|
10 |
+
|
11 |
+
/**
|
12 |
+
* @param $email_send_id
|
13 |
+
* @return $this
|
14 |
+
*/
|
15 |
+
public function setEmailSendId($email_send_id)
|
16 |
+
{
|
17 |
+
$this->email_send_id[] = $email_send_id;
|
18 |
+
return $this;
|
19 |
+
}
|
20 |
+
|
21 |
+
/**
|
22 |
+
* @return array
|
23 |
+
*/
|
24 |
+
public function getEmailSendId()
|
25 |
+
{
|
26 |
+
return $this->email_send_id;
|
27 |
+
}
|
28 |
+
|
29 |
+
/**
|
30 |
+
* @param $contacts
|
31 |
+
* @return $this
|
32 |
+
*/
|
33 |
+
public function setContacts($contacts)
|
34 |
+
{
|
35 |
+
$this->contacts[] = $contacts;
|
36 |
+
return $this;
|
37 |
+
}
|
38 |
+
|
39 |
+
/**
|
40 |
+
* @return array
|
41 |
+
*/
|
42 |
+
public function getContacts()
|
43 |
+
{
|
44 |
+
return $this->contacts;
|
45 |
+
}
|
46 |
+
|
47 |
+
/**
|
48 |
+
* @param $emails
|
49 |
+
* @return $this
|
50 |
+
*/
|
51 |
+
public function setEmails($emails)
|
52 |
+
{
|
53 |
+
$this->emails = $emails;
|
54 |
+
return $this;
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* @return array
|
59 |
+
*/
|
60 |
+
public function getEmails()
|
61 |
+
{
|
62 |
+
return $this->emails;
|
63 |
+
}
|
64 |
+
|
65 |
+
/**
|
66 |
+
* @param mixed $id
|
67 |
+
*/
|
68 |
+
public function setId($id)
|
69 |
+
{
|
70 |
+
$this->id = $id;
|
71 |
+
}
|
72 |
+
|
73 |
+
/**
|
74 |
+
* @return mixed
|
75 |
+
*/
|
76 |
+
public function getId()
|
77 |
+
{
|
78 |
+
return $this->id;
|
79 |
+
}
|
80 |
+
|
81 |
+
|
82 |
+
|
83 |
+
|
84 |
+
}
|
app/code/{local → community}/Dotdigitalgroup/Email/Model/Connector/Customer.php
RENAMED
@@ -11,11 +11,11 @@ class Dotdigitalgroup_Email_Model_Connector_Customer{
|
|
11 |
private $_dob;
|
12 |
private $_gender;
|
13 |
private $_title;
|
14 |
-
private $
|
15 |
-
private $
|
16 |
-
private $
|
17 |
-
private $_last_logged_in;
|
18 |
private $_customer_group;
|
|
|
19 |
// Customer Address Data
|
20 |
private $_billing_address_1;
|
21 |
private $_billing_address_2;
|
@@ -30,118 +30,65 @@ class Dotdigitalgroup_Email_Model_Connector_Customer{
|
|
30 |
private $_delivery_postcode;
|
31 |
private $_delivery_telephone;
|
32 |
// Customer Sales Data
|
33 |
-
private $
|
34 |
private $_average_order_value;
|
35 |
private $_total_spend;
|
36 |
-
private $
|
37 |
-
private $
|
38 |
-
|
39 |
-
private $_is_subscribed_to_newsletter;
|
40 |
-
private $_dotmailer_contact_id;
|
41 |
private $_customer_id;
|
42 |
|
43 |
-
|
44 |
-
'firstname',
|
45 |
-
'lastname',
|
46 |
-
'dob',
|
47 |
-
'gender',
|
48 |
-
'title',
|
49 |
-
'website_created_on',
|
50 |
-
'store_created_on',
|
51 |
-
'account_created',
|
52 |
-
'last_logged_in',
|
53 |
-
'customer_group',
|
54 |
-
'billing_address_1',
|
55 |
-
'billing_address_2',
|
56 |
-
'billing_city',
|
57 |
-
'billing_country',
|
58 |
-
'billing_postcode',
|
59 |
-
'billing_telephone',
|
60 |
-
'delivery_address_1',
|
61 |
-
'delivery_address_2',
|
62 |
-
'delivery_city',
|
63 |
-
'delivery_country',
|
64 |
-
'delivery_postcode',
|
65 |
-
'delivery_telephone',
|
66 |
-
'total_orders',
|
67 |
-
'average_order_value',
|
68 |
-
'total_spend',
|
69 |
-
'last_order',
|
70 |
-
'last_order_no'
|
71 |
-
*
|
72 |
-
*/
|
73 |
|
74 |
public function getEmail()
|
75 |
{
|
76 |
return $this->_email;
|
77 |
}
|
78 |
|
79 |
-
|
80 |
-
public function setDotmailerContactId($dotmailer_contact_id)
|
81 |
-
{
|
82 |
-
$this->_dotmailer_contact_id = $dotmailer_contact_id;
|
83 |
-
}
|
84 |
-
|
85 |
-
public function getDotmailerContactId()
|
86 |
-
{
|
87 |
-
return $this->_dotmailer_contact_id;
|
88 |
-
}
|
89 |
-
|
90 |
-
public function isSubscribed()
|
91 |
-
{
|
92 |
-
return $this->_is_subscribed_to_newsletter;
|
93 |
-
}
|
94 |
-
|
95 |
private $_mapping_hash;
|
96 |
|
97 |
|
98 |
// class constructor - takes
|
99 |
-
public function __construct(
|
100 |
-
|
101 |
-
$this->_mapping_hash = $mapping_hash;
|
102 |
|
|
|
103 |
// map each attribute from the $customer parameter (collection item) to the corresponding scoped variable in this class
|
104 |
-
$this->
|
105 |
-
$this->
|
106 |
-
$this->
|
107 |
-
$this->
|
108 |
-
$this->
|
109 |
-
$this->
|
110 |
-
|
111 |
-
|
112 |
-
$this->
|
113 |
-
$this->
|
114 |
-
$this->
|
115 |
-
$this->
|
116 |
-
$this->
|
117 |
-
$this->
|
118 |
-
|
119 |
-
|
120 |
-
$this->
|
121 |
-
$this->
|
122 |
-
$this->
|
123 |
-
|
124 |
-
|
125 |
-
$this->
|
126 |
-
|
127 |
-
|
128 |
-
$this->
|
129 |
-
$this->
|
130 |
-
$this->
|
131 |
-
|
132 |
-
|
133 |
-
$this->
|
134 |
-
$this->
|
135 |
-
|
136 |
-
|
137 |
-
$
|
138 |
-
|
139 |
-
$this->
|
140 |
-
$this->_last_order_no = $customer->getLastOrderNo();
|
141 |
-
|
142 |
-
$this->_is_subscribed_to_newsletter = ($customer->getSubscriberStatus() == Mage_Newsletter_Model_Subscriber::STATUS_SUBSCRIBED)? true : false;
|
143 |
-
$this->_dotmailer_contact_id = $customer->getDotmailerContactId();
|
144 |
-
$this->_customer_id = $customer->getId();
|
145 |
}
|
146 |
|
147 |
public function toCSVArray() {
|
@@ -153,16 +100,16 @@ class Dotdigitalgroup_Email_Model_Connector_Customer{
|
|
153 |
// Email is the only required field in the CSV upload
|
154 |
$result[] = $this->_email;
|
155 |
|
156 |
-
if ($this->_mapping_hash[0]!="0") $result[] = $this->
|
157 |
-
if ($this->_mapping_hash[1]!="0") $result[] = $this->
|
158 |
-
if ($this->_mapping_hash[2]!="0") $result[] = $this->
|
159 |
-
if ($this->_mapping_hash[3]!="0") $result[] = $this->
|
160 |
-
if ($this->_mapping_hash[4]!="0") $result[] = $this->
|
161 |
|
162 |
-
if ($this->_mapping_hash[5]!="0") $result[] = $this->
|
163 |
-
if ($this->_mapping_hash[6]!="0") $result[] = $this->
|
164 |
-
if ($this->_mapping_hash[7]!="0") $result[] = $this->
|
165 |
-
if ($this->_mapping_hash[8]!="0") $result[] = $this->
|
166 |
if ($this->_mapping_hash[9]!="0") $result[] = $this->_customer_group;
|
167 |
|
168 |
if ($this->_mapping_hash[10]!="0") $result[] = $this->_billing_address_1;
|
@@ -179,11 +126,11 @@ class Dotdigitalgroup_Email_Model_Connector_Customer{
|
|
179 |
if ($this->_mapping_hash[20]!="0") $result[] = $this->_delivery_postcode;
|
180 |
if ($this->_mapping_hash[21]!="0") $result[] = $this->_delivery_telephone;
|
181 |
|
182 |
-
if ($this->_mapping_hash[22]!="0") $result[] = $this->
|
183 |
if ($this->_mapping_hash[23]!="0") $result[] = $this->_average_order_value;
|
184 |
if ($this->_mapping_hash[24]!="0") $result[] = $this->_total_spend;
|
185 |
-
if ($this->_mapping_hash[25]!="0") $result[] = $this->
|
186 |
-
if ($this->_mapping_hash[26]!="0") $result[] = $this->
|
187 |
if ($this->_mapping_hash[27]!="0") $result[] = $this->_customer_id;
|
188 |
|
189 |
$result[] = 'Html';
|
11 |
private $_dob;
|
12 |
private $_gender;
|
13 |
private $_title;
|
14 |
+
private $_website_name;
|
15 |
+
private $_store_name;
|
16 |
+
private $_created_at;
|
|
|
17 |
private $_customer_group;
|
18 |
+
|
19 |
// Customer Address Data
|
20 |
private $_billing_address_1;
|
21 |
private $_billing_address_2;
|
30 |
private $_delivery_postcode;
|
31 |
private $_delivery_telephone;
|
32 |
// Customer Sales Data
|
33 |
+
private $_number_of_orders;
|
34 |
private $_average_order_value;
|
35 |
private $_total_spend;
|
36 |
+
private $_last_order_date;
|
37 |
+
private $_last_order_id;
|
38 |
+
|
|
|
|
|
39 |
private $_customer_id;
|
40 |
|
41 |
+
private $_last_logged_date;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
42 |
|
43 |
public function getEmail()
|
44 |
{
|
45 |
return $this->_email;
|
46 |
}
|
47 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
private $_mapping_hash;
|
49 |
|
50 |
|
51 |
// class constructor - takes
|
52 |
+
public function __construct( $customer){
|
|
|
|
|
53 |
|
54 |
+
$this->_mapping_hash = Mage::helper('connector')->getMappingHash($customer->getWebsiteId());
|
55 |
// map each attribute from the $customer parameter (collection item) to the corresponding scoped variable in this class
|
56 |
+
$this->_email = $customer->getEmail();
|
57 |
+
$this->_firstname = $customer->getFirstname();
|
58 |
+
$this->_lastname = $customer->getLastname();
|
59 |
+
$this->_dob = $customer->getDob();
|
60 |
+
$this->_gender = $this->getCustomerGender($customer->getGender());
|
61 |
+
$this->_title = $customer->getPrefix();
|
62 |
+
|
63 |
+
$this->_website_name = $this->getWebsiteName($customer->getWebsiteId());
|
64 |
+
$this->_store_name = $this->getStoreName($customer->getStoreId());
|
65 |
+
$this->_created_at = $customer->getCreatedAt();
|
66 |
+
$this->_last_logged_date = $customer->getLastLoggedDate();
|
67 |
+
$this->_customer_group = $this->getCustomerGroup($customer->getGroupId());
|
68 |
+
$this->_billing_address_1 = $this->getStreet($customer->getBillingStreet(), 1);
|
69 |
+
$this->_billing_address_2 = $this->getStreet($customer->getBillingStreet(), 2);
|
70 |
+
|
71 |
+
$this->_billing_city = $customer->getBillingCity();
|
72 |
+
$this->_billing_country = $customer->getBillingCountryCode();
|
73 |
+
$this->_billing_postcode = $customer->getBillingPostcode();
|
74 |
+
$this->_billing_telephone = $customer->getBillingTelephone();
|
75 |
+
|
76 |
+
$this->_delivery_address_1 = $this->getStreet($customer->getShippingStreet(), 1);
|
77 |
+
$this->_delivery_address_2 = $this->getStreet($customer->getShippingStreet(), 2);
|
78 |
+
|
79 |
+
$this->_delivery_city = $customer->getShippingCity();
|
80 |
+
$this->_delivery_country = $customer->getShippingCountryCode();
|
81 |
+
$this->_delivery_postcode = $customer->getShippingPostcode();
|
82 |
+
$this->_delivery_telephone = $customer->getShippingTelephone();
|
83 |
+
|
84 |
+
$this->_number_of_orders = $customer->getNumberOfOrders();
|
85 |
+
$this->_average_order_value = $customer->getAverageOrderValue();
|
86 |
+
$this->_total_spend = $customer->getTotalSpend();
|
87 |
+
|
88 |
+
$this->_last_order_date = $customer->getLastOrderDate();
|
89 |
+
$this->_last_order_id = $customer->getLastOrderId();
|
90 |
+
|
91 |
+
$this->_customer_id = $customer->getId();
|
|
|
|
|
|
|
|
|
|
|
92 |
}
|
93 |
|
94 |
public function toCSVArray() {
|
100 |
// Email is the only required field in the CSV upload
|
101 |
$result[] = $this->_email;
|
102 |
|
103 |
+
if ($this->_mapping_hash[0]!="0") $result[] = $this->_title;
|
104 |
+
if ($this->_mapping_hash[1]!="0") $result[] = $this->_firstname;
|
105 |
+
if ($this->_mapping_hash[2]!="0") $result[] = $this->_lastname;
|
106 |
+
if ($this->_mapping_hash[3]!="0") $result[] = $this->_dob;
|
107 |
+
if ($this->_mapping_hash[4]!="0") $result[] = $this->_gender;
|
108 |
|
109 |
+
if ($this->_mapping_hash[5]!="0") $result[] = $this->_website_name;
|
110 |
+
if ($this->_mapping_hash[6]!="0") $result[] = $this->_store_name;
|
111 |
+
if ($this->_mapping_hash[7]!="0") $result[] = $this->_created_at;
|
112 |
+
if ($this->_mapping_hash[8]!="0") $result[] = $this->_last_logged_date;
|
113 |
if ($this->_mapping_hash[9]!="0") $result[] = $this->_customer_group;
|
114 |
|
115 |
if ($this->_mapping_hash[10]!="0") $result[] = $this->_billing_address_1;
|
126 |
if ($this->_mapping_hash[20]!="0") $result[] = $this->_delivery_postcode;
|
127 |
if ($this->_mapping_hash[21]!="0") $result[] = $this->_delivery_telephone;
|
128 |
|
129 |
+
if ($this->_mapping_hash[22]!="0") $result[] = $this->_number_of_orders;
|
130 |
if ($this->_mapping_hash[23]!="0") $result[] = $this->_average_order_value;
|
131 |
if ($this->_mapping_hash[24]!="0") $result[] = $this->_total_spend;
|
132 |
+
if ($this->_mapping_hash[25]!="0") $result[] = $this->_last_order_date;
|
133 |
+
if ($this->_mapping_hash[26]!="0") $result[] = $this->_last_order_id;
|
134 |
if ($this->_mapping_hash[27]!="0") $result[] = $this->_customer_id;
|
135 |
|
136 |
$result[] = 'Html';
|
app/code/{local → community}/Dotdigitalgroup/Email/Model/Connector/Order.php
RENAMED
@@ -2,9 +2,9 @@
|
|
2 |
|
3 |
class Dotdigitalgroup_Email_Model_Connector_Order
|
4 |
{
|
5 |
-
public
|
6 |
public $connector_id;
|
7 |
-
public $
|
8 |
protected $store_name;
|
9 |
protected $purchase_date;
|
10 |
protected $delivery_address;
|
@@ -13,7 +13,8 @@ class Dotdigitalgroup_Email_Model_Connector_Order
|
|
13 |
protected $order_subtotal;
|
14 |
protected $discount_ammount;
|
15 |
protected $order_total;
|
16 |
-
|
|
|
17 |
|
18 |
/**
|
19 |
* set the order information
|
@@ -26,42 +27,39 @@ class Dotdigitalgroup_Email_Model_Connector_Order
|
|
26 |
|
27 |
$created_at = new Zend_Date($orderData->getCreatedAt(), Zend_Date::ISO_8601);
|
28 |
$this->purchase_date = $created_at->toString(Zend_Date::ISO_8601);
|
29 |
-
$this->customer_id = $orderData->getCustomerId();
|
30 |
-
|
31 |
-
$customerModel = Mage::getModel('customer/customer')->load($this->customer_id);
|
32 |
-
if(!$customerModel->getDotmailerContactId()){
|
33 |
-
Mage::helper('connector')->log('dotmailer id not found : ' . $customerModel->getDotmailerContactId() . ' ' . $this->customer_id . ' ' . $this->id);
|
34 |
-
}
|
35 |
|
36 |
-
|
37 |
-
|
38 |
-
$this->connector_id = $customerModel->getDotmailerContactId();
|
39 |
$this->quote_id = $orderData->getQuoteId();
|
40 |
|
41 |
/**
|
42 |
* billing and shipping address
|
43 |
*/
|
44 |
-
|
45 |
-
$
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
|
|
|
|
|
|
|
|
|
|
52 |
$billingData = $orderData->getBillingAddress()->getData();
|
53 |
$this->billing_address = array(
|
54 |
'billing_address_1' => $this->getStreet($billingData['street'], 1),
|
55 |
'billing_address_2' => $this->getStreet($billingData['street'], 2),
|
56 |
'billing_city' => $billingData['city'],
|
|
|
57 |
'billing_country' => $billingData['country_id'],
|
58 |
'billing_postcode' => $billingData['postcode'],
|
59 |
);
|
60 |
-
|
61 |
-
|
62 |
-
$
|
63 |
-
foreach ($products as $productItem) {
|
64 |
-
// product model
|
65 |
$product = $productItem->getProduct();
|
66 |
if($product){
|
67 |
// category names
|
@@ -69,19 +67,20 @@ class Dotdigitalgroup_Email_Model_Connector_Order
|
|
69 |
->addAttributeToSelect('name');
|
70 |
|
71 |
foreach ($categoryCollection as $cat) {
|
|
|
72 |
$categories[] = $cat->getName();
|
|
|
73 |
}
|
74 |
-
$categoryNames = implode(',', $categories);
|
75 |
}
|
76 |
|
77 |
$this->products[] = array(
|
78 |
'name' => $productItem->getName(),
|
79 |
'sku' => $productItem->getSku(),
|
80 |
-
'category' => $categoryNames,
|
81 |
'qty' => (int)number_format($productItem->getData('qty_ordered'), 2),
|
82 |
'price' => (float)number_format($productItem->getPrice(), 2),
|
83 |
);
|
84 |
}
|
|
|
85 |
$this->order_subtotal = (float)number_format($orderData->getData('subtotal'), 2);
|
86 |
$this->discount_ammount = (float)number_format($orderData->getData('discount_amount'), 2);
|
87 |
$orderTotal = abs($orderData->getData('grand_total') - $orderData->getTotalRefunded());
|
2 |
|
3 |
class Dotdigitalgroup_Email_Model_Connector_Order
|
4 |
{
|
5 |
+
public $id;
|
6 |
public $connector_id;
|
7 |
+
public $quote_id;
|
8 |
protected $store_name;
|
9 |
protected $purchase_date;
|
10 |
protected $delivery_address;
|
13 |
protected $order_subtotal;
|
14 |
protected $discount_ammount;
|
15 |
protected $order_total;
|
16 |
+
protected $categories;
|
17 |
+
|
18 |
|
19 |
/**
|
20 |
* set the order information
|
27 |
|
28 |
$created_at = new Zend_Date($orderData->getCreatedAt(), Zend_Date::ISO_8601);
|
29 |
$this->purchase_date = $created_at->toString(Zend_Date::ISO_8601);
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
|
31 |
+
$customerModel = Mage::getModel('customer/customer');
|
32 |
+
$customerModel->load($orderData->getCustomerId());
|
|
|
33 |
$this->quote_id = $orderData->getQuoteId();
|
34 |
|
35 |
/**
|
36 |
* billing and shipping address
|
37 |
*/
|
38 |
+
//check if order has shipping data virtual/downloadable
|
39 |
+
if($orderData->getShippingAddress()){
|
40 |
+
$deliveryData = $orderData->getShippingAddress()->getData();
|
41 |
+
$this->delivery_address = array(
|
42 |
+
'delivery_address_1' => $this->getStreet($deliveryData['street'], 1),
|
43 |
+
'delivery_address_2' => $this->getStreet($deliveryData['street'], 2),
|
44 |
+
'delivery_city' => $deliveryData['city'],
|
45 |
+
'delivery_region' => $deliveryData['region'],
|
46 |
+
'delivery_country' => $deliveryData['country_id'],
|
47 |
+
'delivery_postcode' => $deliveryData['postcode']
|
48 |
+
);
|
49 |
+
}
|
50 |
+
|
51 |
$billingData = $orderData->getBillingAddress()->getData();
|
52 |
$this->billing_address = array(
|
53 |
'billing_address_1' => $this->getStreet($billingData['street'], 1),
|
54 |
'billing_address_2' => $this->getStreet($billingData['street'], 2),
|
55 |
'billing_city' => $billingData['city'],
|
56 |
+
'billing_region' => $billingData['region'],
|
57 |
'billing_country' => $billingData['country_id'],
|
58 |
'billing_postcode' => $billingData['postcode'],
|
59 |
);
|
60 |
+
|
61 |
+
//Order items
|
62 |
+
foreach ($orderData->getAllItems() as $productItem) {
|
|
|
|
|
63 |
$product = $productItem->getProduct();
|
64 |
if($product){
|
65 |
// category names
|
67 |
->addAttributeToSelect('name');
|
68 |
|
69 |
foreach ($categoryCollection as $cat) {
|
70 |
+
$categories = array();
|
71 |
$categories[] = $cat->getName();
|
72 |
+
$this->categories[]['Name'] = substr(implode(', ', $categories), 0, 244);
|
73 |
}
|
|
|
74 |
}
|
75 |
|
76 |
$this->products[] = array(
|
77 |
'name' => $productItem->getName(),
|
78 |
'sku' => $productItem->getSku(),
|
|
|
79 |
'qty' => (int)number_format($productItem->getData('qty_ordered'), 2),
|
80 |
'price' => (float)number_format($productItem->getPrice(), 2),
|
81 |
);
|
82 |
}
|
83 |
+
|
84 |
$this->order_subtotal = (float)number_format($orderData->getData('subtotal'), 2);
|
85 |
$this->discount_ammount = (float)number_format($orderData->getData('discount_amount'), 2);
|
86 |
$orderTotal = abs($orderData->getData('grand_total') - $orderData->getTotalRefunded());
|
app/code/community/Dotdigitalgroup/Email/Model/Connector/Test.php
ADDED
@@ -0,0 +1,65 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Dotdigitalgroup_Email_Model_Connector_Test extends Dotdigitalgroup_Email_Model_Connector_Api_Client
|
4 |
+
{
|
5 |
+
const TEST_API_USERNAME = 'apiuser-8e3b8f244ec9@apiconnector.com';
|
6 |
+
const TEST_API_PASSWORD = 'Magento2013';
|
7 |
+
const TEST_API_CAMPAIGN = '2643928';
|
8 |
+
const TEST_CONTACT_ID = '13';
|
9 |
+
const TEST_CONTACT_EMAIL = 'ben.staveley@dotmailer.co.uk';
|
10 |
+
|
11 |
+
public function validate($apiUsername, $apiPassword)
|
12 |
+
{
|
13 |
+
$this->setApiUsername($apiUsername);
|
14 |
+
$this->setApiPassword($apiPassword);
|
15 |
+
/**
|
16 |
+
* Get Account Information
|
17 |
+
*/
|
18 |
+
$accountInfo = $this->getAccountInfo();
|
19 |
+
$this->_sendInstallConfirmation();
|
20 |
+
|
21 |
+
return $accountInfo;
|
22 |
+
}
|
23 |
+
|
24 |
+
public function ajaxvalidate($apiUsername, $apiPassword)
|
25 |
+
{
|
26 |
+
$message = 'Credentials Valid.';
|
27 |
+
$this->setApiUsername($apiUsername);
|
28 |
+
$this->setApiPassword($apiPassword);
|
29 |
+
$response = $this->getAccountInfo();
|
30 |
+
|
31 |
+
if(isset($response->message)){
|
32 |
+
$message = 'API Username And API Password Do Not Match!';
|
33 |
+
}
|
34 |
+
return $message;
|
35 |
+
}
|
36 |
+
|
37 |
+
private function _sendInstallConfirmation()
|
38 |
+
{
|
39 |
+
// set test credentials
|
40 |
+
$this->setApiUsername(self::TEST_API_USERNAME);
|
41 |
+
$this->setApiPassword(self::TEST_API_PASSWORD);
|
42 |
+
|
43 |
+
$testEmail = self::TEST_CONTACT_EMAIL;
|
44 |
+
$contactId = self::TEST_CONTACT_ID;
|
45 |
+
$campaignId = self::TEST_API_CAMPAIGN;
|
46 |
+
|
47 |
+
/**
|
48 |
+
* send initial info
|
49 |
+
*/
|
50 |
+
$this->sendIntallInfo($testEmail, $contactId, $campaignId);
|
51 |
+
}
|
52 |
+
|
53 |
+
public function createDefaultDataFields(){
|
54 |
+
|
55 |
+
|
56 |
+
$helper = Mage::helper('connector');
|
57 |
+
|
58 |
+
foreach ($helper->getDefaultDataFields() as $datafield){
|
59 |
+
|
60 |
+
$this->postDataFields($datafield);
|
61 |
+
}
|
62 |
+
return ;
|
63 |
+
|
64 |
+
}
|
65 |
+
}
|
app/code/community/Dotdigitalgroup/Email/Model/Cron.php
ADDED
@@ -0,0 +1,84 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Dotdigitalgroup_Email_Model_Cron
|
3 |
+
{
|
4 |
+
/**
|
5 |
+
* CRON FOR CONTACTS SYNC
|
6 |
+
*/
|
7 |
+
public function contactSync()
|
8 |
+
{
|
9 |
+
if(Mage::helper('connector')->getContactSyncEnabled()){
|
10 |
+
|
11 |
+
// send customers
|
12 |
+
Mage::getModel('connector/customer_contact')->sync();
|
13 |
+
}
|
14 |
+
return;
|
15 |
+
}
|
16 |
+
|
17 |
+
|
18 |
+
/**
|
19 |
+
* CRON FOR LOST BASKET
|
20 |
+
*/
|
21 |
+
public function lostBaskets()
|
22 |
+
{
|
23 |
+
// send lost basket
|
24 |
+
//Mage::getModel('connector/email_send')->sendLostBasketsEmail();
|
25 |
+
|
26 |
+
Mage::getModel('connector/sales_quote')->proccessCampaigns();
|
27 |
+
|
28 |
+
|
29 |
+
}
|
30 |
+
|
31 |
+
/**
|
32 |
+
* CRON FOR ORDER TRANSACTIONAL DATA
|
33 |
+
*/
|
34 |
+
public function orderSync()
|
35 |
+
{
|
36 |
+
if(Mage::helper('connector')->getOrderSyncEnabled()){
|
37 |
+
|
38 |
+
// send order
|
39 |
+
Mage::getModel('connector/sales_order')->sync();
|
40 |
+
}
|
41 |
+
}
|
42 |
+
|
43 |
+
/**
|
44 |
+
* CRON FOR SUBSCRIBERS AND SUPRESSED CONTACTS
|
45 |
+
*/
|
46 |
+
public function subscribersAndSuppressedSync()
|
47 |
+
{
|
48 |
+
$helper = Mage::helper('connector');
|
49 |
+
if($helper->getSubscriberSyncEnabled()){
|
50 |
+
$helper->log('start subscribers and suppresssed sync..');
|
51 |
+
//sync subscribers
|
52 |
+
Mage::getModel('connector/newsletter_subscriber')
|
53 |
+
->sync()
|
54 |
+
->unsubscribe();
|
55 |
+
//sync guests
|
56 |
+
Mage::getModel('connector/customer_guest')->sync();
|
57 |
+
$helper->log('end subscribers and suppresssed sync.');
|
58 |
+
}
|
59 |
+
}
|
60 |
+
|
61 |
+
public function sendMail()
|
62 |
+
{
|
63 |
+
$helper = Mage::helper('connector');
|
64 |
+
$helper->log('Sending mail cron..');
|
65 |
+
$emailModel = Mage::getModel('connector/email_send')->send();
|
66 |
+
|
67 |
+
|
68 |
+
$helper->log('email send end');
|
69 |
+
}
|
70 |
+
|
71 |
+
/**
|
72 |
+
* CLEAN ARHIVED FOLDERS
|
73 |
+
*/
|
74 |
+
|
75 |
+
public function cleaning()
|
76 |
+
{
|
77 |
+
$helper = Mage::helper('connector/file');
|
78 |
+
$archivedFolder = $helper->getArchiveFolder();
|
79 |
+
$result = $helper->deleteDir($archivedFolder);
|
80 |
+
$helper->log('Cleaning cronjob result : ' . $result);
|
81 |
+
return $result;
|
82 |
+
}
|
83 |
+
|
84 |
+
}
|
app/code/community/Dotdigitalgroup/Email/Model/Customer/Contact.php
ADDED
@@ -0,0 +1,204 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Dotdigitalgroup_Email_Model_Customer_Contact
|
4 |
+
{
|
5 |
+
private $_start;
|
6 |
+
private $_countCustomers;
|
7 |
+
protected $wishlists;
|
8 |
+
|
9 |
+
public function sync()
|
10 |
+
{
|
11 |
+
/** @var Dotdigitalgroup_Email_Helper_Data $helper */
|
12 |
+
$helper = Mage::helper('connector');
|
13 |
+
$helper->log('Start customer sync..');
|
14 |
+
$this->_start = microtime(true);
|
15 |
+
|
16 |
+
//resourse allocation
|
17 |
+
$helper->allowResourceFullExecution();
|
18 |
+
|
19 |
+
$result = array('error' => false, 'message' => "Done.");
|
20 |
+
|
21 |
+
foreach(Mage::app()->getWebsites(true) as $website){
|
22 |
+
|
23 |
+
$this->_exportCustomersForWebsite($website);
|
24 |
+
}
|
25 |
+
|
26 |
+
$helper->log('Total time for sync : ' . gmdate("H:i:s", microtime(true) - $this->_start));
|
27 |
+
return $result;
|
28 |
+
}
|
29 |
+
|
30 |
+
|
31 |
+
|
32 |
+
private function _exportCustomersForWebsite(Mage_Core_Model_Website $website){
|
33 |
+
|
34 |
+
$helper = Mage::helper('connector');
|
35 |
+
$updated = 0;
|
36 |
+
$customers = array();
|
37 |
+
//skip if the mapping field is missing
|
38 |
+
if(!$helper->getCustomerAddressBook($website))
|
39 |
+
return;
|
40 |
+
//reset wishlists
|
41 |
+
$this->wishlists = array();
|
42 |
+
$fileHelper = Mage::helper('connector/file');
|
43 |
+
$contactModel = Mage::getModel('connector/email_contact');
|
44 |
+
$client = Mage::getModel('connector/connector_api_client');
|
45 |
+
$client->setApiUsername($helper->getApiUsername($website));
|
46 |
+
$client->setApiPassword($helper->getApiPassword($website));
|
47 |
+
|
48 |
+
// Contacts to import for website
|
49 |
+
$pageSize = $helper->getSyncLimit();
|
50 |
+
$contacts = $contactModel->getContactsToImportForWebsite($website->getId(), $pageSize);
|
51 |
+
|
52 |
+
// no contacts for this webiste
|
53 |
+
if(!count($contacts))
|
54 |
+
return;
|
55 |
+
|
56 |
+
//create customer filename
|
57 |
+
$customersFile = strtolower($website->getCode() . '_customers_' . date('d_m_Y_Hi') . '.csv');
|
58 |
+
$helper->log('Customers file : ' . $customersFile);
|
59 |
+
|
60 |
+
//get customer ids
|
61 |
+
$customerIds = array();
|
62 |
+
foreach($contacts as $contact){
|
63 |
+
$customerIds[] = $contact->getCustomerId();
|
64 |
+
}
|
65 |
+
|
66 |
+
//customer collection
|
67 |
+
$customerCollection = Mage::getResourceModel('customer/customer_collection')
|
68 |
+
->addNameToSelect()
|
69 |
+
->addAttributeToSelect('email')
|
70 |
+
->addAttributeToSelect('dob')
|
71 |
+
->addAttributeToSelect('gender')
|
72 |
+
->addAttributeToSelect('created_at')
|
73 |
+
->addAttributeToSelect('last_logged_in')
|
74 |
+
->addAttributeToSelect('group_id')
|
75 |
+
->addAttributeToSelect('dob')
|
76 |
+
->joinAttribute('billing_street', 'customer_address/street', 'default_billing', null, 'left')
|
77 |
+
->joinAttribute('billing_city', 'customer_address/city', 'default_billing', null, 'left')
|
78 |
+
->joinAttribute('billing_country_code', 'customer_address/country_id', 'default_billing', null, 'left')
|
79 |
+
->joinAttribute('billing_postcode', 'customer_address/postcode', 'default_billing', null, 'left')
|
80 |
+
->joinAttribute('billing_telephone', 'customer_address/telephone', 'default_billing', null, 'left')
|
81 |
+
->joinAttribute('billing_region', 'customer_address/region', 'default_billing', null, 'left')
|
82 |
+
->joinAttribute('shipping_street', 'customer_address/street', 'default_shipping', null, 'left')
|
83 |
+
->joinAttribute('shipping_city', 'customer_address/city', 'default_shipping', null, 'left')
|
84 |
+
->joinAttribute('shipping_country_code','customer_address/country_id', 'default_shipping', null, 'left')
|
85 |
+
->joinAttribute('shipping_postcode', 'customer_address/postcode', 'default_shipping', null, 'left')
|
86 |
+
->joinAttribute('shipping_telephone', 'customer_address/telephone', 'default_shipping', null, 'left')
|
87 |
+
->joinAttribute('shipping_region', 'customer_address/region', 'default_shipping', null, 'left')
|
88 |
+
->addAttributeToFilter('entity_id', array('in' => $customerIds))
|
89 |
+
;
|
90 |
+
|
91 |
+
$customer_log = Mage::getSingleton('core/resource')->getTableName('log_customer');
|
92 |
+
$sales_flat_order_grid = Mage::getSingleton('core/resource')->getTableName('sales_flat_order_grid');
|
93 |
+
|
94 |
+
// get the last login date from the log_customer table
|
95 |
+
$customerCollection->getSelect()->columns(
|
96 |
+
array('last_logged_date' => new Zend_Db_Expr ("(SELECT login_at
|
97 |
+
FROM $customer_log WHERE customer_id =e.entity_id ORDER BY log_id DESC LIMIT 1)")));
|
98 |
+
|
99 |
+
// customer order information
|
100 |
+
$alias = 'subselect';
|
101 |
+
$subselect = Mage::getModel('Varien_Db_Select', Mage::getSingleton('core/resource')->getConnection('core_read'))
|
102 |
+
->from($sales_flat_order_grid, array(
|
103 |
+
'customer_id as s_customer_id',
|
104 |
+
'sum(grand_total) as total_spend',
|
105 |
+
'count(*) as number_of_orders',
|
106 |
+
'avg(grand_total) as average_order_value',
|
107 |
+
)
|
108 |
+
)->group('customer_id')
|
109 |
+
;
|
110 |
+
$customerCollection->getSelect()->columns(array(
|
111 |
+
'last_order_date' => new Zend_Db_Expr("(SELECT created_at
|
112 |
+
FROM $sales_flat_order_grid
|
113 |
+
WHERE customer_id =e.entity_id
|
114 |
+
ORDER BY created_at DESC
|
115 |
+
LIMIT 1)"),
|
116 |
+
'last_order_id' => new Zend_Db_Expr("(SELECT entity_id
|
117 |
+
FROM $sales_flat_order_grid
|
118 |
+
WHERE customer_id =e.entity_id
|
119 |
+
ORDER BY created_at DESC
|
120 |
+
LIMIT 1)")
|
121 |
+
)
|
122 |
+
);
|
123 |
+
$customerCollection->getSelect()
|
124 |
+
->joinLeft(array($alias => $subselect),
|
125 |
+
"{$alias}.s_customer_id = e.entity_id");
|
126 |
+
|
127 |
+
//write the csv headers
|
128 |
+
$fileHelper->outputCSV($fileHelper->getFilePath($customersFile), $fileHelper->getCsvHeaderArray($website));
|
129 |
+
|
130 |
+
foreach($customerCollection as $customer){
|
131 |
+
$connectorCustomer = Mage::getModel('connector/connector_customer', $customer);
|
132 |
+
$contactModel = Mage::getModel('connector/email_contact')->loadByCustomerId($customer->getId());
|
133 |
+
|
134 |
+
//skip contacts without customer id
|
135 |
+
if(!$contactModel->getId())
|
136 |
+
continue;
|
137 |
+
$customers[] = $connectorCustomer;
|
138 |
+
|
139 |
+
//mark the contact as imported
|
140 |
+
$contactModel->setEmailImported(Dotdigitalgroup_Email_Model_Email_Contact::EMAIL_CONTACT_IMPORTED)->save();
|
141 |
+
|
142 |
+
//Send wishlist as transactional data
|
143 |
+
if($helper->getWishlistEnabled() && $contactId = $contactModel->getContactId()){
|
144 |
+
$this->setCustomerWishList($customer, $contactId, $website);
|
145 |
+
}
|
146 |
+
|
147 |
+
// save csv file data for customers
|
148 |
+
$fileHelper->outputCSV($fileHelper->getFilePath($customersFile), $connectorCustomer->toCSVArray());
|
149 |
+
$updated++;
|
150 |
+
}
|
151 |
+
//send wishlist as transactional data
|
152 |
+
if(isset($this->wishlists[$website->getId()])){
|
153 |
+
//send wishlists as transactional data
|
154 |
+
$wishlists = $this->wishlists[$website->getId()];
|
155 |
+
$client->deleteContactTransactionalData($contactId, 'Wishlist');
|
156 |
+
$client->postContactsTransactionalDataImport($wishlists, $collectionName = 'Wishlist');
|
157 |
+
}
|
158 |
+
|
159 |
+
$helper->log('Website : ' . $website->getName() . ', customers = ' . count($customers));
|
160 |
+
$helper->log('-----------------------------------------------execution time :' . gmdate("H:i:s", microtime(true) - $this->_start));
|
161 |
+
|
162 |
+
if(file_exists($fileHelper->getFilePath($customersFile))){
|
163 |
+
//import contacts
|
164 |
+
if($updated > 0)
|
165 |
+
$client->postAddressBookContactsImport($customersFile, $helper->getCustomerAddressBook($website));
|
166 |
+
//archive file on success
|
167 |
+
$fileHelper->archiveCSV($customersFile);
|
168 |
+
}
|
169 |
+
$this->_countCustomers = $updated;
|
170 |
+
return;
|
171 |
+
}
|
172 |
+
|
173 |
+
/**
|
174 |
+
* @param $customer
|
175 |
+
* @param $contactId
|
176 |
+
* @param $website
|
177 |
+
*/
|
178 |
+
public function setCustomerWishList($customer, $contactId, $website)
|
179 |
+
{
|
180 |
+
$website = Mage::app()->getWebsite($website);
|
181 |
+
$customerId = $customer->getId();
|
182 |
+
$wishlist = Mage::getModel('wishlist/wishlist')->loadByCustomer($customerId);
|
183 |
+
|
184 |
+
/** @var $connectorWishlist */
|
185 |
+
$connectorWishlist = Mage::getModel('connector/customer_wishlist', $customer);
|
186 |
+
$connectorWishlist->setId($wishlist->getId())
|
187 |
+
->setConnectorId($contactId);
|
188 |
+
$wishListItemCollection = $wishlist->getItemCollection();
|
189 |
+
|
190 |
+
if (count($wishListItemCollection)) {
|
191 |
+
foreach ($wishListItemCollection as $item) {
|
192 |
+
/* @var $product Mage_Catalog_Model_Product */
|
193 |
+
$product = $item->getProduct();
|
194 |
+
$wishlistItem = Mage::getModel('connector/customer_wishlist_item', $product)
|
195 |
+
->setQty($item->getQty());
|
196 |
+
$wishlistItem->setPrice($product);
|
197 |
+
|
198 |
+
$connectorWishlist->setItem($wishlistItem);//store for wishlists
|
199 |
+
}
|
200 |
+
//set wishlists for later use
|
201 |
+
$this->wishlists[$website->getId()][] = $connectorWishlist;
|
202 |
+
}
|
203 |
+
}
|
204 |
+
}
|
app/code/community/Dotdigitalgroup/Email/Model/Customer/Guest.php
ADDED
@@ -0,0 +1,74 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Dotdigitalgroup_Email_Model_Customer_Guest
|
4 |
+
{
|
5 |
+
protected $_countGuests = 0;
|
6 |
+
public function sync()
|
7 |
+
{
|
8 |
+
/** @var Dotdigitalgroup_Email_Helper_Data $helper */
|
9 |
+
$helper = Mage::helper('connector');
|
10 |
+
$helper->log('Start guest sync..');
|
11 |
+
$this->_start = microtime(true);
|
12 |
+
|
13 |
+
foreach(Mage::app()->getWebsites() as $website){
|
14 |
+
|
15 |
+
$this->_exportGuestPerWebsite($website);
|
16 |
+
}
|
17 |
+
$helper->log('Total time for guest sync : ' . gmdate("H:i:s", microtime(true) - $this->_start));
|
18 |
+
|
19 |
+
return;
|
20 |
+
}
|
21 |
+
|
22 |
+
public function _exportGuestPerWebsite($website)
|
23 |
+
{
|
24 |
+
$helper = Mage::helper('connector');
|
25 |
+
$fileHelper = Mage::helper('connector/file');
|
26 |
+
$client = Mage::getModel('connector/connector_api_client')
|
27 |
+
->setApiUsername($helper->getApiUsername($website))
|
28 |
+
->setApiPassword($helper->getApiPassword($website));
|
29 |
+
|
30 |
+
$guestFilename = strtolower($website->getCode() . '_guest_' . date('d_m_Y_Hi') . '.csv');
|
31 |
+
$helper->log('Guest file: ' . $guestFilename);
|
32 |
+
|
33 |
+
//get store name mapped
|
34 |
+
$storeName = $helper->getMappedStoreName($website);
|
35 |
+
//guest file headers
|
36 |
+
$fileHelper->outputCSV($fileHelper->getFilePath($guestFilename), array('Email', 'emailType', $storeName));
|
37 |
+
|
38 |
+
$guests = Mage::getModel('connector/email_contact')->getCollection()
|
39 |
+
->addFieldToFilter('is_guest', array('notnull' => true))
|
40 |
+
->addFieldToFilter('is_subscriber', array('null' => true))
|
41 |
+
->addFieldToFilter('website_id', $website->getId())
|
42 |
+
->addFieldToFilter('email_imported', Dotdigitalgroup_Email_Model_Email_Contact::EMAIL_CONTACT_NOT_IMPORTED)
|
43 |
+
;
|
44 |
+
|
45 |
+
foreach ($guests as $guest) {
|
46 |
+
|
47 |
+
|
48 |
+
$email = $guest->getEmail();
|
49 |
+
|
50 |
+
$helper->log('guest email : '. $email . ' website ' . $website->getId());
|
51 |
+
try{
|
52 |
+
|
53 |
+
$guest->setEmailImported(Dotdigitalgroup_Email_Model_Email_Contact::EMAIL_CONTACT_IMPORTED)
|
54 |
+
->save();
|
55 |
+
|
56 |
+
}catch (Exception $e){
|
57 |
+
$helper->log($e->getMessage());
|
58 |
+
}
|
59 |
+
|
60 |
+
$storeName = $website->getName();
|
61 |
+
// save data for guests
|
62 |
+
$fileHelper->outputCSV($fileHelper->getFilePath($guestFilename), array($email, 'Html', $storeName));
|
63 |
+
$this->_countGuests++;
|
64 |
+
}
|
65 |
+
if($this->_countGuests){
|
66 |
+
//Add to guest address book
|
67 |
+
$client->postAddressBookContactsImport($guestFilename, $helper->getGuestAddressBook($website));
|
68 |
+
}
|
69 |
+
|
70 |
+
//arhive guest file
|
71 |
+
$fileHelper->archiveCSV($guestFilename);
|
72 |
+
}
|
73 |
+
|
74 |
+
}
|
app/code/{local/Dotdigitalgroup/Email/Model/Connector → community/Dotdigitalgroup/Email/Model/Customer}/Wishlist.php
RENAMED
@@ -1,21 +1,18 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
class
|
4 |
{
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
public $name;
|
10 |
|
11 |
public $items = array();
|
12 |
|
13 |
protected $total_wishlist_value;
|
14 |
|
15 |
-
public function __construct($customer){
|
16 |
|
17 |
-
$this->
|
18 |
-
$this->setCustomerId($customer->id);
|
19 |
}
|
20 |
|
21 |
/**
|
@@ -53,11 +50,13 @@ class Dotdigitalgroup_Email_Model_Connector_Wishlist
|
|
53 |
}
|
54 |
|
55 |
/**
|
56 |
-
* @param
|
|
|
57 |
*/
|
58 |
public function setId($id)
|
59 |
{
|
60 |
$this->id = $id;
|
|
|
61 |
}
|
62 |
|
63 |
/**
|
@@ -70,6 +69,7 @@ class Dotdigitalgroup_Email_Model_Connector_Wishlist
|
|
70 |
|
71 |
public function setItem($item)
|
72 |
{
|
|
|
73 |
$this->items[] = $item->expose();
|
74 |
|
75 |
$this->total_wishlist_value += $item->getTotalValueOfProduct();
|
1 |
<?php
|
2 |
|
3 |
+
class Dotdigitalgroup_Email_Model_Customer_Wishlist
|
4 |
{
|
5 |
+
public $id;
|
6 |
+
public $customer_id;
|
7 |
+
public $connector_id;
|
|
|
|
|
8 |
|
9 |
public $items = array();
|
10 |
|
11 |
protected $total_wishlist_value;
|
12 |
|
13 |
+
public function __construct(Mage_Customer_Model_Customer $customer){
|
14 |
|
15 |
+
$this->setCustomerId($customer->getId());
|
|
|
16 |
}
|
17 |
|
18 |
/**
|
50 |
}
|
51 |
|
52 |
/**
|
53 |
+
* @param $id
|
54 |
+
* @return $this
|
55 |
*/
|
56 |
public function setId($id)
|
57 |
{
|
58 |
$this->id = $id;
|
59 |
+
return $this;
|
60 |
}
|
61 |
|
62 |
/**
|
69 |
|
70 |
public function setItem($item)
|
71 |
{
|
72 |
+
|
73 |
$this->items[] = $item->expose();
|
74 |
|
75 |
$this->total_wishlist_value += $item->getTotalValueOfProduct();
|
app/code/{local → community}/Dotdigitalgroup/Email/Model/Customer/Wishlist/Item.php
RENAMED
@@ -8,6 +8,7 @@ class Dotdigitalgroup_Email_Model_Customer_Wishlist_Item
|
|
8 |
protected $qty;
|
9 |
protected $total_value_of_product;
|
10 |
|
|
|
11 |
public function __construct($product)
|
12 |
{
|
13 |
$this->setSku($product->getSku());
|
@@ -15,11 +16,13 @@ class Dotdigitalgroup_Email_Model_Customer_Wishlist_Item
|
|
15 |
}
|
16 |
|
17 |
/**
|
18 |
-
* @param
|
|
|
19 |
*/
|
20 |
public function setName($name)
|
21 |
{
|
22 |
$this->name = $name;
|
|
|
23 |
}
|
24 |
|
25 |
/**
|
@@ -31,11 +34,13 @@ class Dotdigitalgroup_Email_Model_Customer_Wishlist_Item
|
|
31 |
}
|
32 |
|
33 |
/**
|
34 |
-
* @param
|
|
|
35 |
*/
|
36 |
public function setQty($qty)
|
37 |
{
|
38 |
$this->qty = (int)$qty;
|
|
|
39 |
}
|
40 |
|
41 |
/**
|
@@ -55,7 +60,7 @@ class Dotdigitalgroup_Email_Model_Customer_Wishlist_Item
|
|
55 |
}
|
56 |
|
57 |
/**
|
58 |
-
* @param
|
59 |
*/
|
60 |
public function setPrice($product)
|
61 |
{
|
@@ -74,13 +79,17 @@ class Dotdigitalgroup_Email_Model_Customer_Wishlist_Item
|
|
74 |
}
|
75 |
|
76 |
/**
|
77 |
-
* @param
|
|
|
78 |
*/
|
79 |
public function setSku($sku)
|
80 |
{
|
81 |
$this->sku = $sku;
|
|
|
82 |
}
|
83 |
|
|
|
|
|
84 |
/**
|
85 |
* @return mixed
|
86 |
*/
|
@@ -93,8 +102,4 @@ class Dotdigitalgroup_Email_Model_Customer_Wishlist_Item
|
|
93 |
return get_object_vars($this);
|
94 |
|
95 |
}
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
}
|
8 |
protected $qty;
|
9 |
protected $total_value_of_product;
|
10 |
|
11 |
+
|
12 |
public function __construct($product)
|
13 |
{
|
14 |
$this->setSku($product->getSku());
|
16 |
}
|
17 |
|
18 |
/**
|
19 |
+
* @param $name
|
20 |
+
* @return $this
|
21 |
*/
|
22 |
public function setName($name)
|
23 |
{
|
24 |
$this->name = $name;
|
25 |
+
return $this;
|
26 |
}
|
27 |
|
28 |
/**
|
34 |
}
|
35 |
|
36 |
/**
|
37 |
+
* @param $qty
|
38 |
+
* @return $this
|
39 |
*/
|
40 |
public function setQty($qty)
|
41 |
{
|
42 |
$this->qty = (int)$qty;
|
43 |
+
return $this;
|
44 |
}
|
45 |
|
46 |
/**
|
60 |
}
|
61 |
|
62 |
/**
|
63 |
+
* @param $product
|
64 |
*/
|
65 |
public function setPrice($product)
|
66 |
{
|
79 |
}
|
80 |
|
81 |
/**
|
82 |
+
* @param $sku
|
83 |
+
* @return $this
|
84 |
*/
|
85 |
public function setSku($sku)
|
86 |
{
|
87 |
$this->sku = $sku;
|
88 |
+
return $this;
|
89 |
}
|
90 |
|
91 |
+
|
92 |
+
|
93 |
/**
|
94 |
* @return mixed
|
95 |
*/
|
102 |
return get_object_vars($this);
|
103 |
|
104 |
}
|
|
|
|
|
|
|
|
|
105 |
}
|
app/code/{local → community}/Dotdigitalgroup/Email/Model/Dynamic/Product/Mapper.php
RENAMED
File without changes
|
app/code/{local → community}/Dotdigitalgroup/Email/Model/Dynamic/Recommended.php
RENAMED
@@ -210,7 +210,6 @@ class Dotdigitalgroup_Email_Model_Dynamic_Recommended extends Dotdigitalgroup_Em
|
|
210 |
|
211 |
Mage::helper('connector')->log('proudcts push ids : ' . implode(',', $productIds), null, $this->filename);
|
212 |
|
213 |
-
|
214 |
$productCollection = Mage::getModel('catalog/product')->getCollection()
|
215 |
->addAttributeToFilter('entity_id', array('in' => $productIds))
|
216 |
->setPageSize(Mage::helper('connector/recommended')->getLimit())
|
210 |
|
211 |
Mage::helper('connector')->log('proudcts push ids : ' . implode(',', $productIds), null, $this->filename);
|
212 |
|
|
|
213 |
$productCollection = Mage::getModel('catalog/product')->getCollection()
|
214 |
->addAttributeToFilter('entity_id', array('in' => $productIds))
|
215 |
->setPageSize(Mage::helper('connector/recommended')->getLimit())
|
app/code/community/Dotdigitalgroup/Email/Model/Email/Contact.php
ADDED
@@ -0,0 +1,130 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
|
4 |
+
/**
|
5 |
+
* Contact model.
|
6 |
+
*/
|
7 |
+
class Dotdigitalgroup_Email_Model_Email_Contact extends Mage_Core_Model_Abstract
|
8 |
+
{
|
9 |
+
|
10 |
+
const EMAIL_CONTACT_IMPORTED = 1;
|
11 |
+
const EMAIL_CONTACT_NOT_IMPORTED = null;
|
12 |
+
|
13 |
+
/**
|
14 |
+
* constructor
|
15 |
+
*/
|
16 |
+
public function _construct(){
|
17 |
+
parent::_construct();
|
18 |
+
$this->_init('connector/email_contact');
|
19 |
+
}
|
20 |
+
|
21 |
+
|
22 |
+
/**
|
23 |
+
* Reset the imported data
|
24 |
+
* @return int
|
25 |
+
*/
|
26 |
+
public function resetCustomerContacts()
|
27 |
+
{
|
28 |
+
$collection = $this->getCollection()
|
29 |
+
->addFieldToFilter('is_guest', array('null' => true))
|
30 |
+
->addFieldToFilter('customer_id', array('notnull' => true))
|
31 |
+
->addFieldToFilter('email_imported', array('notnull' => true))
|
32 |
+
;
|
33 |
+
|
34 |
+
$reset = 0;
|
35 |
+
foreach($collection as $_contact){
|
36 |
+
|
37 |
+
try{
|
38 |
+
|
39 |
+
if($_contact->getEmailImported()){
|
40 |
+
$_contact->setEmailImported(Dotdigitalgroup_Email_Model_Email_Contact::EMAIL_CONTACT_NOT_IMPORTED)->save();
|
41 |
+
$reset++;
|
42 |
+
}
|
43 |
+
}catch(Exception $e){
|
44 |
+
Mage::helper('connector')->log($e->getMessage());
|
45 |
+
|
46 |
+
}
|
47 |
+
|
48 |
+
}
|
49 |
+
return $reset;
|
50 |
+
}
|
51 |
+
|
52 |
+
/**
|
53 |
+
* Load contact by customer id
|
54 |
+
* @param $customerId
|
55 |
+
* @return mixed
|
56 |
+
*/
|
57 |
+
public function loadByCustomerId($customerId)
|
58 |
+
{
|
59 |
+
$collection = $this->getCollection()
|
60 |
+
->addFieldToFilter('customer_id', $customerId);
|
61 |
+
if($collection->count())
|
62 |
+
return $collection->getFirstItem();
|
63 |
+
return $this;
|
64 |
+
|
65 |
+
}
|
66 |
+
|
67 |
+
public function getContactsToImportForWebsite($websiteId, $pageSize = 100)
|
68 |
+
{
|
69 |
+
$collection = $this->getCollection()
|
70 |
+
->addFieldToFilter('website_id', $websiteId)
|
71 |
+
->addFieldToFilter('email_imported', array('null' => true))
|
72 |
+
->addFieldToFilter('customer_id', array('notnull' => true))
|
73 |
+
;
|
74 |
+
|
75 |
+
$collection->getSelect()->limit($pageSize);
|
76 |
+
|
77 |
+
return $collection;
|
78 |
+
}
|
79 |
+
|
80 |
+
/**
|
81 |
+
* Get missing contacts.
|
82 |
+
* @param $websiteId
|
83 |
+
* @param int $pageSize
|
84 |
+
* @return mixed
|
85 |
+
*/
|
86 |
+
public function getMissingContacts($websiteId, $pageSize = 100)
|
87 |
+
{
|
88 |
+
$collection = $this->getCollection()
|
89 |
+
->addFieldToFilter('contact_id', array('null' => true))
|
90 |
+
->addFieldToFilter('suppressed', null)
|
91 |
+
->addFieldToFilter('website_id', $websiteId);
|
92 |
+
|
93 |
+
$collection->getSelect()->limit($pageSize);
|
94 |
+
|
95 |
+
return $collection->load();
|
96 |
+
}
|
97 |
+
|
98 |
+
/**
|
99 |
+
* Load Contact by Email.
|
100 |
+
* @param $email
|
101 |
+
* @param $websiteId
|
102 |
+
* @return $this
|
103 |
+
*/
|
104 |
+
public function loadByCustomerEmail($email, $websiteId)
|
105 |
+
{
|
106 |
+
$collection = $this->getCollection()
|
107 |
+
->addFieldToFilter('email', $email)
|
108 |
+
->addFieldToFilter('website_id', $websiteId)
|
109 |
+
;
|
110 |
+
if($collection->count()){
|
111 |
+
return $collection->getFirstItem();
|
112 |
+
}else{
|
113 |
+
$this->setEmail($email)
|
114 |
+
->setWebsiteId($websiteId);
|
115 |
+
}
|
116 |
+
return $this;
|
117 |
+
}
|
118 |
+
|
119 |
+
public function getSubscribersToImport($limit)
|
120 |
+
{
|
121 |
+
$collection = $this->getCollection()
|
122 |
+
->addFieldToFilter('is_subscriber', array('notnull' => true))
|
123 |
+
->addFieldToFilter('subscriber_imported', array('null' => true));
|
124 |
+
|
125 |
+
$collection->getSelect()->limit($limit);
|
126 |
+
|
127 |
+
return $collection;
|
128 |
+
}
|
129 |
+
|
130 |
+
}
|
app/code/community/Dotdigitalgroup/Email/Model/Email/Order.php
ADDED
@@ -0,0 +1,62 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Dotdigitalgroup_Email_Model_Email_Order extends Mage_Core_Model_Abstract
|
4 |
+
{
|
5 |
+
/**
|
6 |
+
* constructor
|
7 |
+
*/
|
8 |
+
public function _construct(){
|
9 |
+
parent::_construct();
|
10 |
+
$this->_init('connector/email_order');
|
11 |
+
}
|
12 |
+
|
13 |
+
|
14 |
+
public function loadByOrderId($orderId, $quoteId, $storeId)
|
15 |
+
{
|
16 |
+
$collection = $this->getCollection()
|
17 |
+
->addFieldToFilter('order_id', $orderId)
|
18 |
+
->addFieldToFilter('quote_id', $quoteId)
|
19 |
+
->addFieldToFilter('store_id', $storeId);
|
20 |
+
if($collection->count()){
|
21 |
+
return $collection->getFirstItem();
|
22 |
+
}else{
|
23 |
+
$this->setOrderId($orderId)
|
24 |
+
->setQuoteId($quoteId)
|
25 |
+
->setStoreId($storeId);
|
26 |
+
}
|
27 |
+
return $this;
|
28 |
+
}
|
29 |
+
|
30 |
+
|
31 |
+
public function getEmailOrderRow($orderId, $quoteId, $storeId)
|
32 |
+
{
|
33 |
+
|
34 |
+
$collection = $this->getCollection()
|
35 |
+
->addFieldToFilter('order_id', $orderId)
|
36 |
+
->addFieldToFilter('quote_id', $quoteId)
|
37 |
+
->addFieldToFilter('store_id', $storeId);
|
38 |
+
|
39 |
+
if($collection->count()){
|
40 |
+
return $collection->getFirstItem();
|
41 |
+
}else{
|
42 |
+
$now = Mage::getSingleton('core/date')->gmtDate();
|
43 |
+
|
44 |
+
$this->setOrderId($orderId)
|
45 |
+
->setQuoteId($quoteId)
|
46 |
+
->setStoreId($storeId)
|
47 |
+
->setCreatedAt($now)
|
48 |
+
;
|
49 |
+
}
|
50 |
+
return $this;
|
51 |
+
|
52 |
+
}
|
53 |
+
public function getOrdersToImport($limit)
|
54 |
+
{
|
55 |
+
$collection = $this->getCollection()
|
56 |
+
->addFieldToFilter('email_imported', array('null' => true));
|
57 |
+
|
58 |
+
$collection->getSelect()->limit($limit);
|
59 |
+
return $collection->load();
|
60 |
+
}
|
61 |
+
|
62 |
+
}
|
app/code/community/Dotdigitalgroup/Email/Model/Email/Send.php
ADDED
@@ -0,0 +1,488 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Dotdigitalgroup_Email_Model_Email_Send extends Mage_Core_Model_Abstract
|
4 |
+
{
|
5 |
+
|
6 |
+
|
7 |
+
//xml path configuration
|
8 |
+
const XML_PATH_LOSTBASKET_1_ENABLED = 'lostbaskets/customers/enabled_1';
|
9 |
+
const XML_PATH_LOSTBASKET_2_ENABLED = 'lostbaskets/customers/enabled_2';
|
10 |
+
const XML_PATH_LOSTBASKET_3_ENABLED = 'lostbaskets/customers/enabled_3';
|
11 |
+
|
12 |
+
const XML_PATH_LOSTBASKET_1_INTERVAL = 'lost_basket_settings/customers/send_after_1';
|
13 |
+
const XML_PATH_LOSTBASKET_2_INTERVAL = 'lost_basket_settings/customers/send_after_2';
|
14 |
+
const XML_PATH_LOSTBASKET_3_INTERVAL = 'lost_basket_settings/customers/send_after_3';
|
15 |
+
|
16 |
+
const XML_PATH_TRIGGER_1_CAMPAIGN = 'lost_basket_settings/customers/campaign_1';
|
17 |
+
const XML_PATH_TRIGGER_2_CAMPAIGN = 'lost_basket_settings/customers/campaign_2';
|
18 |
+
const XML_PATH_TRIGGER_3_CAMPAIGN = 'lost_basket_settings/customers/campaign_3';
|
19 |
+
|
20 |
+
const XML_PATH_GUEST_LOSTBASKET_1_ENABLED = 'lostbaskets/guests/enabled_1';
|
21 |
+
const XML_PATH_GUEST_LOSTBASKET_2_ENABLED = 'lostbaskets/guests/enabled_2';
|
22 |
+
const XML_PATH_GUEST_LOSTBASKET_3_ENABLED = 'lostbaskets/guests/enabled_3';
|
23 |
+
|
24 |
+
const XML_PATH_GUEST_LOSTBASKET_1_INTERVAL = 'lost_basket_settings/guests/send_after_1';
|
25 |
+
const XML_PATH_GUEST_LOSTBASKET_2_INTERVAL = 'lost_basket_settings/guests/send_after_2';
|
26 |
+
const XML_PATH_GUEST_LOSTBASKET_3_INTERVAL = 'lost_basket_settings/guests/send_after_3';
|
27 |
+
|
28 |
+
const XML_PATH_GUEST_LOSTBASKET_1_CAMPAIGN = 'lost_basket_settings/guests/campaign_1';
|
29 |
+
const XML_PATH_GUEST_LOSTBASKET_2_CAMPAIGN = 'lost_basket_settings/guests/campaign_2';
|
30 |
+
const XML_PATH_GUEST_LOSTBASKET_3_CAMPAIGN = 'lost_basket_settings/guests/campaign_3';
|
31 |
+
|
32 |
+
const XML_PATH_TEST_LOSTBASKET_EMAIL = 'lost_basket_settings/test/email';
|
33 |
+
|
34 |
+
|
35 |
+
|
36 |
+
/**
|
37 |
+
* constructor
|
38 |
+
*/
|
39 |
+
public function _construct(){
|
40 |
+
parent::_construct();
|
41 |
+
$this->_init('connector/email_send');
|
42 |
+
}
|
43 |
+
|
44 |
+
|
45 |
+
/**
|
46 |
+
* @param $quoteId
|
47 |
+
* @param $storeId
|
48 |
+
* @return mixed
|
49 |
+
*/
|
50 |
+
public function loadByQuoteId($quoteId, $storeId)
|
51 |
+
{
|
52 |
+
$collection = $this->getCollection()
|
53 |
+
->addFieldToFilter('quote_id', $quoteId)
|
54 |
+
->addFieldToFilter('store_id', $storeId);
|
55 |
+
|
56 |
+
if($collection->count())
|
57 |
+
return $collection->getFirstItem();
|
58 |
+
else
|
59 |
+
$this->setQuoteId($quoteId)
|
60 |
+
->setStoreId($storeId);
|
61 |
+
|
62 |
+
return $this;
|
63 |
+
}
|
64 |
+
|
65 |
+
|
66 |
+
|
67 |
+
|
68 |
+
/**
|
69 |
+
* send the lost baskets to campains
|
70 |
+
* @return array
|
71 |
+
*/
|
72 |
+
public function sendLostBasketsEmail()
|
73 |
+
{
|
74 |
+
$helper = Mage::helper('connector');
|
75 |
+
$client = Mage::getModel('connector/connector_api_client');
|
76 |
+
$salesQuote = Mage::getModel('connector/sales_quote');
|
77 |
+
|
78 |
+
foreach (Mage::app()->getStores() as $store){
|
79 |
+
|
80 |
+
//skip any action if all lost basket campaings are disabled
|
81 |
+
if(!$store->getConfig(self::XML_PATH_LOSTBASKET_1_ENABLED) && !$store->getConfig(self::XML_PATH_LOSTBASKET_2_ENABLED) &&
|
82 |
+
!$store->getConfig(self::XML_PATH_LOSTBASKET_3_ENABLED) && !$store->getConfig(self::XML_PATH_GUEST_LOSTBASKET_1_ENABLED) &&
|
83 |
+
!$store->getconfig(self::XML_PATH_GUEST_LOSTBASKET_2_ENABLED) && !$store->getConfig(self::XML_PATH_GUEST_LOSTBASKET_3_ENABLED)
|
84 |
+
)continue;
|
85 |
+
// set credentials for every store
|
86 |
+
$storeId = $store->getId();
|
87 |
+
$websiteId = $store->getWebsite()->getId();
|
88 |
+
$client->setApiUsername($helper->getApiUsername($websiteId));
|
89 |
+
$client->setApiPassword($helper->getApiPassword($websiteId));
|
90 |
+
|
91 |
+
/**
|
92 |
+
* Customers campaings
|
93 |
+
*/
|
94 |
+
|
95 |
+
//first campign
|
96 |
+
if(!$store->getConfig(self::XML_PATH_LOSTBASKET_1_ENABLED)){
|
97 |
+
|
98 |
+
$contacts = array();
|
99 |
+
$from = Zend_Date::now()->subMinute($store->getConfig(self::XML_PATH_LOSTBASKET_1_INTERVAL));
|
100 |
+
$to = clone($from);
|
101 |
+
$from->sub('5', Zend_Date::MINUTE);
|
102 |
+
|
103 |
+
// sales quotes for guests
|
104 |
+
$quoteCollection = $salesQuote->getGuestStoreQuotes($storeId, $from->toString('YYYY-MM-dd HH:mm:ss'), $to->toString('YYYY-MM-dd HH:mm:ss'));
|
105 |
+
|
106 |
+
foreach($quoteCollection as $one) {
|
107 |
+
|
108 |
+
$email = $one->getEmail();
|
109 |
+
if(isset($email)){
|
110 |
+
$campaignId = $store->getConfig(self::XML_PATH_TRIGGER_1_CAMPAIGN);
|
111 |
+
$contactModel = Mage::getModel('connector/email_contact')->loadByCustomerEmail($email, $websiteId);
|
112 |
+
|
113 |
+
if($contactId = $contactModel->getContactId()){
|
114 |
+
$contacts[] = $contactId;
|
115 |
+
}else{
|
116 |
+
|
117 |
+
$result = $client->getContactByEmail($email);
|
118 |
+
if(isset($result->id)){
|
119 |
+
$contactModel->setContactId($result->id)->save();
|
120 |
+
$contacts[] = $result->id;
|
121 |
+
}
|
122 |
+
}
|
123 |
+
}
|
124 |
+
}
|
125 |
+
// if(count($contacts)){
|
126 |
+
// $result = $client->postCampaignsSend($campaignId, $contacts);
|
127 |
+
// if(isset($result->message)){
|
128 |
+
//
|
129 |
+
// foreach ($emailsToSent as $one){
|
130 |
+
// $one->setCapmaignId($campaignId)
|
131 |
+
// ->setMessage($result->message)->save();
|
132 |
+
// }
|
133 |
+
// }else{
|
134 |
+
// foreach ($emailsToSent as $one) {
|
135 |
+
//
|
136 |
+
// $one->setCampaignId($campaignId)
|
137 |
+
// ->setIsSent(1)
|
138 |
+
// ->setSentAt(Varien_Date::now())
|
139 |
+
// ->save();
|
140 |
+
// }
|
141 |
+
// }
|
142 |
+
// }
|
143 |
+
}
|
144 |
+
|
145 |
+
//second campaign
|
146 |
+
if(!$store->getConfig(self::XML_PATH_LOSTBASKET_2_ENABLED)){
|
147 |
+
$contacts = array();
|
148 |
+
$from = Zend_Date::now()->subHour($store->getConfig(self::XML_PATH_LOSTBASKET_2_INTERVAL));
|
149 |
+
$to = clone($from);
|
150 |
+
$from->sub('5', Zend_Date::MINUTE);
|
151 |
+
// lost baskets
|
152 |
+
$emailsToSent = $this->_getEmailToSent($storeId, $from->toString('YYYY-MM-dd HH:mm:ss'), $to->toString('YYYY-MM-dd HH:mm:ss'));
|
153 |
+
|
154 |
+
foreach($emailsToSent as $one) {
|
155 |
+
|
156 |
+
$email = $one->getEmail();
|
157 |
+
if(isset($email)){
|
158 |
+
$campaignId = $store->getConfig(self::XML_PATH_TRIGGER_2_CAMPAIGN);
|
159 |
+
|
160 |
+
$contactModel = Mage::getModel('connector/email_contact')->loadByCustomerEmail($email, $websiteId);
|
161 |
+
|
162 |
+
if($contactId = $contactModel->getContactId()){
|
163 |
+
$contacts[] = $contactId;
|
164 |
+
}else{
|
165 |
+
|
166 |
+
$result = $client->getContactByEmail($email);
|
167 |
+
if(isset($result->id)){
|
168 |
+
$contactModel->setContactId($result->id)->save();
|
169 |
+
$contacts[] = $result->id;
|
170 |
+
}
|
171 |
+
}
|
172 |
+
}
|
173 |
+
}
|
174 |
+
if(count($contacts)){
|
175 |
+
$result = $client->postCampaignsSend($campaignId, $contacts);
|
176 |
+
if(isset($result->message)){
|
177 |
+
|
178 |
+
foreach ($emailsToSent as $one){
|
179 |
+
$one->setCapmaignId($campaignId)
|
180 |
+
->setMessage($result->message)->save();
|
181 |
+
}
|
182 |
+
}else{
|
183 |
+
foreach ($emailsToSent as $one) {
|
184 |
+
|
185 |
+
$one->setCampaignId($campaignId)
|
186 |
+
->setIsSent(1)
|
187 |
+
->setSentAt(Varien_Date::now())
|
188 |
+
->save();
|
189 |
+
}
|
190 |
+
|
191 |
+
}
|
192 |
+
}
|
193 |
+
}
|
194 |
+
|
195 |
+
//third campign
|
196 |
+
if(!$store->getConfig(self::XML_PATH_LOSTBASKET_3_ENABLED)){
|
197 |
+
$contacts = array();
|
198 |
+
$from = Zend_Date::now()->subHour($store->getConfig(self::XML_PATH_LOSTBASKET_3_INTERVAL));
|
199 |
+
$to = clone($from);
|
200 |
+
$from->sub('5', Zend_Date::MINUTE);
|
201 |
+
// lost baskets
|
202 |
+
$emailsToSent = $this->_getEmailToSent($storeId, $from->toString('YYYY-MM-dd HH:mm:ss'), $to->toString('YYYY-MM-dd HH:mm:ss'));
|
203 |
+
|
204 |
+
foreach($emailsToSent as $one) {
|
205 |
+
|
206 |
+
$email = $one->getEmail();
|
207 |
+
if(isset($email)){
|
208 |
+
$campaignId = $store->getConfig(self::XML_PATH_TRIGGER_3_CAMPAIGN);
|
209 |
+
$contactModel = Mage::getModel('connector/email_contact')->loadByCustomerEmail($email, $websiteId);
|
210 |
+
if($contactId = $contactModel->getContactId()){
|
211 |
+
$contacts[] = $contactId;
|
212 |
+
}else{
|
213 |
+
|
214 |
+
$result = $client->getContactByEmail($email);
|
215 |
+
if(isset($result->id)){
|
216 |
+
$contactModel->setContactId($result->id)->save();
|
217 |
+
$contacts[] = $result->id;
|
218 |
+
}
|
219 |
+
}
|
220 |
+
}
|
221 |
+
}
|
222 |
+
if(count($contacts)){
|
223 |
+
$result = $client->postCampaignsSend($campaignId, $contacts);
|
224 |
+
if(isset($result->message)){
|
225 |
+
|
226 |
+
foreach ($emailsToSent as $one){
|
227 |
+
$one->setCapmaignId($campaignId)
|
228 |
+
->setMessage($result->message)->save();
|
229 |
+
}
|
230 |
+
}else{
|
231 |
+
foreach ($emailsToSent as $one) {
|
232 |
+
$one->setCampaignId($campaignId)
|
233 |
+
->setIsSent(1)
|
234 |
+
->setSentAt(Varien_Date::now())
|
235 |
+
->save();
|
236 |
+
}
|
237 |
+
}
|
238 |
+
}
|
239 |
+
}
|
240 |
+
/**
|
241 |
+
* Guests campaings
|
242 |
+
*/
|
243 |
+
//first guest campaign
|
244 |
+
if(!$store->getConfig(self::XML_PATH_GUEST_LOSTBASKET_1_ENABLED))
|
245 |
+
{
|
246 |
+
$contacts = array();
|
247 |
+
$from = Zend_Date::now()->subMinute($store->getConfig(self::XML_PATH_GUEST_LOSTBASKET_1_INTERVAL));
|
248 |
+
$to = clone($from);
|
249 |
+
$from->sub('5', Zend_Date::MINUTE);
|
250 |
+
|
251 |
+
// sales quotes for guests
|
252 |
+
$quoteCollection = $salesQuote->getGuestStoreQuotes($storeId, $from->toString('YYYY-MM-dd HH:mm:ss'), $to->toString('YYYY-MM-dd HH:mm:ss'));
|
253 |
+
|
254 |
+
foreach($quoteCollection as $quote) {
|
255 |
+
$email = $quote->getCustomerEmail();
|
256 |
+
$campaignId = $store->getConfig(self::XML_PATH_GUEST_LOSTBASKET_1_CAMPAIGN);
|
257 |
+
|
258 |
+
$result = $client->postContacts($email);
|
259 |
+
if(isset($result->id)){
|
260 |
+
$contacts[] = $result->id;
|
261 |
+
}
|
262 |
+
|
263 |
+
}
|
264 |
+
if(count($contacts)){
|
265 |
+
/**
|
266 |
+
* Send Lost Basket Campaign For Guests
|
267 |
+
*/
|
268 |
+
$result = $client->postCampaignsSend($campaignId, $contacts);
|
269 |
+
|
270 |
+
if(isset($result->message)){
|
271 |
+
//save report message for this contact
|
272 |
+
foreach ($quoteCollection as $quote){
|
273 |
+
|
274 |
+
$quoteId = $quote->getId();
|
275 |
+
$emailModel = $this->loadByQuoteId($quoteId, $storeId);
|
276 |
+
$emailModel->setEmail($email)
|
277 |
+
->setQuoteId($quote->getId())
|
278 |
+
->setCreatedAt($quote->getCreatedAt())
|
279 |
+
->setUpdatedAt($quote->getUpdatedAt())
|
280 |
+
;
|
281 |
+
|
282 |
+
$emailModel->setCampaignId($campaignId)
|
283 |
+
->setMessage($result->message)->save();
|
284 |
+
}
|
285 |
+
}else{
|
286 |
+
//mark contacts as sent
|
287 |
+
foreach ($quoteCollection as $quote) {
|
288 |
+
$email = $quote->getCustomerEmail();
|
289 |
+
$storeId = $quote->getStoreId();
|
290 |
+
|
291 |
+
$collection = $this->getCollection()
|
292 |
+
->addFieldToFilter('email', $email);
|
293 |
+
if($collection->count()){
|
294 |
+
$send = $collection->getFirstItem();
|
295 |
+
}else{
|
296 |
+
$send = $this;
|
297 |
+
$send->setEmail($email);
|
298 |
+
}
|
299 |
+
$send->setSentAt(Varien_Date::now())
|
300 |
+
->setIsSent(1)
|
301 |
+
->setCampaignId($campaignId)->save();
|
302 |
+
}
|
303 |
+
|
304 |
+
}
|
305 |
+
}
|
306 |
+
}
|
307 |
+
// second guest campaign
|
308 |
+
if(!$store->getConfig(self::XML_PATH_GUEST_LOSTBASKET_2_ENABLED))
|
309 |
+
{
|
310 |
+
$contacts = array();
|
311 |
+
$from = Zend_Date::now()->subHour($store->getConfig(self::XML_PATH_GUEST_LOSTBASKET_2_INTERVAL));
|
312 |
+
$to = clone($from);
|
313 |
+
$from->sub('5', Zend_Date::MINUTE);
|
314 |
+
$quoteCollection = $salesQuote->getGuestStoreQuotes($storeId, $from->toString('YYYY-MM-dd HH:mm:ss'), $to->toString('YYYY-MM-dd HH:mm:ss'));
|
315 |
+
foreach($quoteCollection as $quote) {
|
316 |
+
$email = $quote->getCustomerEmail();
|
317 |
+
$campaignId = $store->getConfig(self::XML_PATH_GUEST_LOSTBASKET_2_CAMPAIGN);
|
318 |
+
|
319 |
+
$result = $client->postContacts($email);
|
320 |
+
if(isset($result->id)){
|
321 |
+
$contacts[] = $result->id;
|
322 |
+
}
|
323 |
+
|
324 |
+
}
|
325 |
+
if(count($contacts)){
|
326 |
+
/**
|
327 |
+
* Send Lost Basket Campaign For Guests
|
328 |
+
*/
|
329 |
+
$result = $client->postCampaignsSend($campaignId, $contacts);
|
330 |
+
|
331 |
+
if(isset($result->message)){
|
332 |
+
//save report message for this contact
|
333 |
+
foreach ($quoteCollection as $quote){
|
334 |
+
|
335 |
+
$quoteId = $quote->getId();
|
336 |
+
$emailModel = $this->loadByQuoteId($quoteId, $storeId);
|
337 |
+
$emailModel->setEmail($email)
|
338 |
+
->setQuoteId($quote->getId())
|
339 |
+
->setCreatedAt($quote->getCreatedAt())
|
340 |
+
->setUpdatedAt($quote->getUpdatedAt())
|
341 |
+
;
|
342 |
+
$emailModel->setCampaignId($campaignId)
|
343 |
+
->setMessage($result->message)->save();
|
344 |
+
}
|
345 |
+
}else{
|
346 |
+
//mark contacts as sent
|
347 |
+
foreach ($quoteCollection as $quote) {
|
348 |
+
$email = $quote->getCustomerEmail();
|
349 |
+
$storeId = $quote->getStoreId();
|
350 |
+
$collection = $this->getCollection()
|
351 |
+
->addFieldToFilter('email', $email);
|
352 |
+
if($collection->count()){
|
353 |
+
$send = $collection->getFirstItem();
|
354 |
+
}else{
|
355 |
+
$send = $this;
|
356 |
+
$send->setEmail($email);
|
357 |
+
}
|
358 |
+
$send->setSentAt(Varien_Date::now())
|
359 |
+
->setIsSent(1)
|
360 |
+
->setCampaignId($campaignId)->save();
|
361 |
+
}
|
362 |
+
}
|
363 |
+
}
|
364 |
+
}
|
365 |
+
//third guest campaign
|
366 |
+
if(!$store->getConfig(self::XML_PATH_GUEST_LOSTBASKET_3_ENABLED)){
|
367 |
+
$contacts = array();
|
368 |
+
$from = Zend_Date::now()->subHour($store->getConfig(self::XML_PATH_GUEST_LOSTBASKET_3_INTERVAL));
|
369 |
+
$to = clone($from);
|
370 |
+
$from->sub('5', Zend_Date::MINUTE);
|
371 |
+
$quoteCollection = $salesQuote->getGuestStoreQuotes($storeId, $from->toString('YYYY-MM-dd HH:mm:ss'), $to->toString('YYYY-MM-dd HH:mm:ss'));
|
372 |
+
foreach($quoteCollection as $quote) {
|
373 |
+
$email = $quote->getCustomerEmail();
|
374 |
+
$campaignId = $store->getConfig(self::XML_PATH_GUEST_LOSTBASKET_3_CAMPAIGN);
|
375 |
+
|
376 |
+
$result = $client->postContacts($email);
|
377 |
+
if(isset($result->id)){
|
378 |
+
$contacts[] = $result->id;
|
379 |
+
}
|
380 |
+
|
381 |
+
}
|
382 |
+
if(count($contacts)){
|
383 |
+
/**
|
384 |
+
* Send Lost Basket Campaign For Guests
|
385 |
+
*/
|
386 |
+
$result = $client->postCampaignsSend($campaignId, $contacts);
|
387 |
+
|
388 |
+
if(isset($result->message)){
|
389 |
+
//save report message for this contact
|
390 |
+
foreach ($quoteCollection as $quote){
|
391 |
+
|
392 |
+
$quoteId = $quote->getId();
|
393 |
+
$emailModel = $this->loadByQuoteId($quoteId, $storeId);
|
394 |
+
$emailModel->setEmail($email)
|
395 |
+
->setQuoteId($quote->getId())
|
396 |
+
->setCreatedAt($quote->getCreatedAt())
|
397 |
+
->setUpdatedAt($quote->getUpdatedAt())
|
398 |
+
;
|
399 |
+
$emailModel->setCampaignId($campaignId)
|
400 |
+
->setMessage($result->message)->save();
|
401 |
+
}
|
402 |
+
}else{
|
403 |
+
//mark contacts as sent
|
404 |
+
foreach ($quoteCollection as $quote) {
|
405 |
+
$email = $quote->getCustomerEmail();
|
406 |
+
$quoteId = $quote->getId();
|
407 |
+
$storeId = $quote->getStoreId();
|
408 |
+
$collection = $this->getCollection()
|
409 |
+
->addFieldToFilter('email', $email);
|
410 |
+
if($collection->count()){
|
411 |
+
$send = $collection->getFirstItem();
|
412 |
+
}else{
|
413 |
+
$send = $this;
|
414 |
+
$send->setEmail($email);
|
415 |
+
}
|
416 |
+
$send->setSentAt(Varien_Date::now())
|
417 |
+
->setIsSent(1)
|
418 |
+
->setCampaignId($campaignId)->save();
|
419 |
+
}
|
420 |
+
}
|
421 |
+
}
|
422 |
+
}
|
423 |
+
}
|
424 |
+
return;
|
425 |
+
}
|
426 |
+
|
427 |
+
public function send()
|
428 |
+
{
|
429 |
+
$helper = Mage::helper('connector');
|
430 |
+
$contactModel = Mage::getModel('connector/email_contact');
|
431 |
+
$campaigns = array();
|
432 |
+
$emailsSend = $this->_getEmailToSent();
|
433 |
+
|
434 |
+
foreach ($emailsSend as $emailSend) {
|
435 |
+
$storeId = $emailSend->getStoreId();
|
436 |
+
$campaignId = $emailSend->getCampaignId();
|
437 |
+
$websiteId = Mage::app()->getStore($storeId)->getWebsiteId();
|
438 |
+
$contactId = $helper->getContactId($emailSend->getEmail(), $websiteId);
|
439 |
+
|
440 |
+
$campaignModel = Mage::getModel('connector/connector_campaign');
|
441 |
+
$campaignModel->setId($campaignId)
|
442 |
+
->setContact($contactId)
|
443 |
+
->setEmailSendId($emailSend->getEmailSendId());
|
444 |
+
|
445 |
+
if($contactId)
|
446 |
+
$campaigns[$emailSend->getCampaignId()][] = $contactId;
|
447 |
+
|
448 |
+
}
|
449 |
+
|
450 |
+
foreach ($campaigns as $campaignId => $contacts) {
|
451 |
+
|
452 |
+
$client = Mage::getModel('connector/connector_api_client');
|
453 |
+
$client->setApiUsername($helper->getApiUsername($websiteId))
|
454 |
+
->setApiPassword($helper->getApiPassword($websiteId));
|
455 |
+
|
456 |
+
$result = $client->postCampaignsSend($campaignId, $contacts);
|
457 |
+
|
458 |
+
if(isset($result->message)){
|
459 |
+
$errorEmails = $this->getCollection()
|
460 |
+
->addFieldToFilter('emails_send_ids', $campaign);
|
461 |
+
|
462 |
+
foreach ($contacts as $contact) {
|
463 |
+
|
464 |
+
|
465 |
+
}
|
466 |
+
}
|
467 |
+
}
|
468 |
+
}
|
469 |
+
|
470 |
+
/**
|
471 |
+
* @return mixed
|
472 |
+
*/
|
473 |
+
private function _getEmailToSent(){
|
474 |
+
|
475 |
+
$collection = $this->getCollection();
|
476 |
+
$collection->addFieldToFilter('is_sent', array('null' => true));
|
477 |
+
|
478 |
+
$collection->getSelect()->order('campaign_id');
|
479 |
+
|
480 |
+
return $collection->load();
|
481 |
+
}
|
482 |
+
|
483 |
+
public function sendEmails($websiteId)
|
484 |
+
{
|
485 |
+
|
486 |
+
}
|
487 |
+
|
488 |
+
}
|
app/code/community/Dotdigitalgroup/Email/Model/Newsletter/Subscriber.php
ADDED
@@ -0,0 +1,139 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Dotdigitalgroup_Email_Model_Newsletter_Subscriber
|
4 |
+
{
|
5 |
+
|
6 |
+
const STATUS_SUBSCRIBED = 1;
|
7 |
+
const STATUS_NOT_ACTIVE = 2;
|
8 |
+
const STATUS_UNSUBSCRIBED = 3;
|
9 |
+
const STATUS_UNCONFIRMED = 4;
|
10 |
+
|
11 |
+
private $suppressedContacts = array();
|
12 |
+
|
13 |
+
protected $_countSubscribers = 0;
|
14 |
+
|
15 |
+
|
16 |
+
protected $_start;
|
17 |
+
|
18 |
+
|
19 |
+
|
20 |
+
public function sync()
|
21 |
+
{
|
22 |
+
/** @var Dotdigitalgroup_Email_Helper_Data $helper */
|
23 |
+
$helper = Mage::helper('connector');
|
24 |
+
$helper->log('Start subscriber sync..');
|
25 |
+
$this->_start = microtime(true);
|
26 |
+
|
27 |
+
foreach(Mage::app()->getWebsites() as $website){
|
28 |
+
$this->_exportSubscribersPerWebsite($website);
|
29 |
+
}
|
30 |
+
$helper->log('Total time for sync : ' . gmdate("H:i:s", microtime(true) - $this->_start));
|
31 |
+
|
32 |
+
return $this;
|
33 |
+
}
|
34 |
+
|
35 |
+
public function _exportSubscribersPerWebsite($website)
|
36 |
+
{
|
37 |
+
$helper = Mage::helper('connector');
|
38 |
+
$updated = 0;
|
39 |
+
$fileHelper = Mage::helper('connector/file');
|
40 |
+
$client = Mage::getModel('connector/connector_api_client')
|
41 |
+
->setApiUsername($helper->getApiUsername($website))
|
42 |
+
->setApiPassword($helper->getApiPassword($website));
|
43 |
+
|
44 |
+
$subscribersFilename = strtolower($website->getCode() . '_subscribers_' . date('d_m_Y_Hi') . '.csv');
|
45 |
+
$helper->log('Subscribers file: ' . $subscribersFilename);
|
46 |
+
|
47 |
+
//get mapped storename
|
48 |
+
$subscriberStorename = $helper->getMappedStoreName($website);
|
49 |
+
//subscriber file headers
|
50 |
+
$fileHelper->outputCSV($fileHelper->getFilePath($subscribersFilename), array('Email', 'emailType', $subscriberStorename));
|
51 |
+
|
52 |
+
$subscribers = Mage::getModel('connector/email_contact')->getSubscribersToImport($helper->getSyncLimit());
|
53 |
+
|
54 |
+
foreach ($subscribers as $contact) {
|
55 |
+
|
56 |
+
try{
|
57 |
+
$email = $contact->getEmail();
|
58 |
+
$contact->setSubscriberImported(Dotdigitalgroup_Email_Model_Email_Contact::EMAIL_CONTACT_IMPORTED)->save();
|
59 |
+
}catch (Exception $e){
|
60 |
+
$helper->log($e->getMessage());
|
61 |
+
}
|
62 |
+
$subscriber = Mage::getModel('newsletter/subscriber')->loadByEmail($email);
|
63 |
+
$storeId = $subscriber->getStoreId();
|
64 |
+
$storeName = Mage::app()->getStore($storeId)->getName();
|
65 |
+
// save data for subscribers
|
66 |
+
$fileHelper->outputCSV($fileHelper->getFilePath($subscribersFilename), array($email, 'Html', $storeName));
|
67 |
+
$updated++;
|
68 |
+
|
69 |
+
}
|
70 |
+
if($updated){
|
71 |
+
//Add to subscriber address book
|
72 |
+
$client->postAddressBookContactsImport($subscribersFilename, $helper->getSubscriberAddressBook($website));
|
73 |
+
}
|
74 |
+
$this->_countSubscribers += $updated;
|
75 |
+
$fileHelper->archiveCSV($subscribersFilename);
|
76 |
+
}
|
77 |
+
|
78 |
+
public function unsubscribe($force = false)
|
79 |
+
{
|
80 |
+
$result['customers'] = 0;
|
81 |
+
$date = new Zend_Date();
|
82 |
+
$date = $date->subHour(1);
|
83 |
+
$client = Mage::getModel('connector/connector_api_client');
|
84 |
+
$helper = Mage::helper('connector');
|
85 |
+
|
86 |
+
// force sync all customers
|
87 |
+
if($force)
|
88 |
+
$date = $date->subYear(10);
|
89 |
+
|
90 |
+
|
91 |
+
// datetime format string
|
92 |
+
$dateString = $date->toString(Zend_Date::W3C);
|
93 |
+
/**
|
94 |
+
* 1. Sync all suppressed for each store
|
95 |
+
*/
|
96 |
+
foreach (Mage::app()->getWebsites(true) as $website) {
|
97 |
+
|
98 |
+
$client->setApiUsername($helper->getApiUsername($website));
|
99 |
+
$client->setApiPassword($helper->getApiPassword($website));
|
100 |
+
$subscriberBookId = $helper->getSubscriberAddressBook($website);
|
101 |
+
$contacts = $client->getContactsSuppressedSinceDate($dateString);
|
102 |
+
|
103 |
+
if(! empty($contacts)){
|
104 |
+
foreach ($contacts as $suppressed){
|
105 |
+
if(isset($suppressed->suppressedContact)){
|
106 |
+
|
107 |
+
$email = $suppressed->suppressedContact->email;
|
108 |
+
$contactId = $suppressed->suppressedContact->id;
|
109 |
+
|
110 |
+
try{
|
111 |
+
/**
|
112 |
+
* 2. Unsubscribe customer
|
113 |
+
*/
|
114 |
+
$newsletterModel = Mage::getModel('newsletter/subscriber')->loadByEmail($email);
|
115 |
+
if($newsletterModel->getStatus() == Mage_Newsletter_Model_Subscriber::STATUS_SUBSCRIBED){
|
116 |
+
$unsubscribe = $newsletterModel->setStatus(Mage_Newsletter_Model_Subscriber::STATUS_UNSUBSCRIBED);
|
117 |
+
$unsubscribe->save();
|
118 |
+
// remove from subscriber address-book
|
119 |
+
$client->deleteAddressBookContact($website->getConfig(), $contactId);
|
120 |
+
$this->suppressedContacts[$newsletterModel->getSubscriberEmail($subscriberBookId)] = $newsletterModel->getSubscriberEmail();
|
121 |
+
}
|
122 |
+
//mark contact as suppressed and unsubscribe
|
123 |
+
$contactCollection = Mage::getModel('connector/email_contact')->getCollection()
|
124 |
+
->addFieldToFilter('email', $email);
|
125 |
+
|
126 |
+
foreach ($contactCollection as $contact) {
|
127 |
+
$contact->setIsSubscriber(null)
|
128 |
+
->setSuppressed(1)->save();
|
129 |
+
}
|
130 |
+
}catch (Exception $e){
|
131 |
+
Mage::helper('connector')->log($e->getMessage());
|
132 |
+
}
|
133 |
+
}
|
134 |
+
}
|
135 |
+
}
|
136 |
+
}
|
137 |
+
return $result;
|
138 |
+
}
|
139 |
+
}
|
app/code/community/Dotdigitalgroup/Email/Model/Observer.php
ADDED
@@ -0,0 +1,248 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Dotdigitalgroup_Email_Model_Observer
|
4 |
+
{
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Admin Sync Settings Section
|
8 |
+
* @param Varien_Event_Observer $observer
|
9 |
+
* @return $this
|
10 |
+
*/
|
11 |
+
public function actionConfigResetContacts(Varien_Event_Observer $observer)
|
12 |
+
{
|
13 |
+
$helper = Mage::helper('connector');
|
14 |
+
$contactModel = Mage::getModel('connector/email_contact');
|
15 |
+
$updated = $contactModel->resetCustomerContacts();
|
16 |
+
$helper->log('Reset customer contacts for reimport : ' . $updated);
|
17 |
+
|
18 |
+
return $this;
|
19 |
+
}
|
20 |
+
|
21 |
+
/**
|
22 |
+
* Admin API Credentials Section
|
23 |
+
* @param Varien_Event_Observer $observer
|
24 |
+
* @return $this
|
25 |
+
*/
|
26 |
+
public function actionConfigSaveAfter(Varien_Event_Observer $observer)
|
27 |
+
{
|
28 |
+
$helper = Mage::helper('connector');
|
29 |
+
$groups = Mage::app()->getRequest()->getPost('groups');
|
30 |
+
|
31 |
+
//skip if the inherit option is selected
|
32 |
+
if(isset($groups['api_credentials']['fields']['username']['value'])
|
33 |
+
&& isset($groups['api_credentials']['fields']['password']['value'])){
|
34 |
+
/** @var Dotdigitalgroup_Email_Model_Connector_Test $testModel */
|
35 |
+
$testModel = Mage::getModel('connector/connector_test');
|
36 |
+
|
37 |
+
/**
|
38 |
+
* Validate
|
39 |
+
*/
|
40 |
+
$helper->log('VALIDATE ACCOUNT');
|
41 |
+
$apiUsername = $groups['api_credentials']['fields']['username']['value'];
|
42 |
+
$apiPassword = $groups['api_credentials']['fields']['password']['value'];
|
43 |
+
$response = $testModel->validate($apiUsername, $apiPassword );
|
44 |
+
|
45 |
+
if(isset($response->message)){
|
46 |
+
Mage::getSingleton('adminhtml/session')->addError($response->message);
|
47 |
+
}else{
|
48 |
+
/**
|
49 |
+
* Create default data fields
|
50 |
+
*/
|
51 |
+
$testModel->createDefaultDataFields();
|
52 |
+
Mage::getSingleton('adminhtml/session')->addSuccess($helper->__('API Credentials Valid.'));
|
53 |
+
}
|
54 |
+
|
55 |
+
}
|
56 |
+
return $this;
|
57 |
+
}
|
58 |
+
/**
|
59 |
+
* Create new contact or update info, also check for email change
|
60 |
+
* event: customer_save_before
|
61 |
+
* @param Varien_Event_Observer $observer
|
62 |
+
* @return $this
|
63 |
+
*/
|
64 |
+
public function handleCustomerSaveBefore(Varien_Event_Observer $observer)
|
65 |
+
{
|
66 |
+
$customer = $observer->getEvent()->getCustomer();
|
67 |
+
$email = $customer->getEmail();
|
68 |
+
$websiteId = $customer->getWebsiteId();
|
69 |
+
$customerId = $customer->getEntityId();
|
70 |
+
try{
|
71 |
+
|
72 |
+
$contactModel = Mage::getModel('connector/email_contact')->loadByCustomerEmail($email, $websiteId);
|
73 |
+
$contactModel->setEmailImported(Dotdigitalgroup_Email_Model_Email_Contact::EMAIL_CONTACT_NOT_IMPORTED)
|
74 |
+
->setCustomerId($customerId)
|
75 |
+
->save();
|
76 |
+
|
77 |
+
}catch(Exception $e){
|
78 |
+
Mage::logException($e);
|
79 |
+
}
|
80 |
+
|
81 |
+
return $this;
|
82 |
+
}
|
83 |
+
/**
|
84 |
+
* event: sales_order_save_after
|
85 |
+
* @param Varien_Event_Observer $observer
|
86 |
+
* @return $this
|
87 |
+
*/
|
88 |
+
public function handleSalesOrderSaveAfter(Varien_Event_Observer $observer)
|
89 |
+
{
|
90 |
+
$order = $observer->getEvent()->getOrder();
|
91 |
+
$orderId = $order->getEntityId();
|
92 |
+
$quoteId = $order->getQuoteId();
|
93 |
+
$storeId = $order->getStoreId();
|
94 |
+
|
95 |
+
try{
|
96 |
+
$emailOrder = Mage::getModel('connector/email_order')->loadByOrderId($orderId, $quoteId, $storeId);
|
97 |
+
//register the order
|
98 |
+
$emailOrder->setUpdatedAt($order->getUpdatedAt())
|
99 |
+
->setEmailImported(Dotdigitalgroup_Email_Model_Email_Contact::EMAIL_CONTACT_NOT_IMPORTED)
|
100 |
+
->save();
|
101 |
+
|
102 |
+
}catch(Exception $e){
|
103 |
+
Mage::logException($e);
|
104 |
+
}
|
105 |
+
return $this;
|
106 |
+
}
|
107 |
+
|
108 |
+
public function newsletterSubscriberSave(Varien_Event_Observer $observer)
|
109 |
+
{
|
110 |
+
$subscriber = $observer->getEvent()->getSubscriber();
|
111 |
+
$email = $subscriber->getEmail();
|
112 |
+
$storeId = $subscriber->getStoreId();
|
113 |
+
$subscriberStatus = $subscriber->getSubscriberStatus();
|
114 |
+
|
115 |
+
$helper = Mage::helper('connector');
|
116 |
+
$websiteId = Mage::app()->getStore($storeId)->getWebsiteId();
|
117 |
+
$contactEmail = Mage::getModel('connector/email_contact')->loadByCustomerEmail($email, $websiteId);
|
118 |
+
|
119 |
+
try{
|
120 |
+
/**
|
121 |
+
* Subscribe a contact
|
122 |
+
*/
|
123 |
+
if($subscriberStatus == Mage_Newsletter_Model_Subscriber::STATUS_SUBSCRIBED){
|
124 |
+
$contactEmail->setSubscriberStatus($subscriberStatus)
|
125 |
+
->setIsSubscriber(1);
|
126 |
+
|
127 |
+
}else{
|
128 |
+
/**
|
129 |
+
* Unsubscribe contact
|
130 |
+
*/
|
131 |
+
$client = Mage::getModel('connector/connector_api_client')
|
132 |
+
->setApiUsername($helper->getApiUsername($websiteId))
|
133 |
+
->setApiPassword($helper->getApiPassword($websiteId));
|
134 |
+
|
135 |
+
if(!$contactEmail->getContactId()){
|
136 |
+
//if contact id is not set get the di
|
137 |
+
$result = $client->postContacts($email);
|
138 |
+
$contactId = $result->id;
|
139 |
+
}else{
|
140 |
+
$contactId = $contactEmail->getContactId();
|
141 |
+
}
|
142 |
+
if($contactId){
|
143 |
+
$client->deleteAddressBookContact($helper->getSubscriberAddressBook($websiteId), $contactId);
|
144 |
+
}else{
|
145 |
+
Mage::helper('connector')->log('CONTACT ID EMPTY : ' . $contactId . ' email : ' . $email);
|
146 |
+
}
|
147 |
+
$contactEmail->setIsSubscriber(null);
|
148 |
+
}
|
149 |
+
$contactEmail->save();
|
150 |
+
|
151 |
+
}catch(Exception $e){
|
152 |
+
Mage::helper('connector')->log($e->getMessage());
|
153 |
+
}
|
154 |
+
return $this;
|
155 |
+
}
|
156 |
+
|
157 |
+
|
158 |
+
public function handleSalesOrderStatusChange(Varien_Event_Observer $observer)
|
159 |
+
{
|
160 |
+
$order = $observer->getEvent()->getOrder();
|
161 |
+
$status = $order->getStatus();
|
162 |
+
|
163 |
+
/**
|
164 |
+
* SMS functinality
|
165 |
+
*/
|
166 |
+
$smsStatusOne = Mage::getStoreConfig(Dotdigitalgroup_Email_Model_Sales_Sms::XML_PATH_SMS_MESSAGE_ONE_STATUS);
|
167 |
+
$smsStatusTwo = Mage::getStoreConfig(Dotdigitalgroup_Email_Model_Sales_Sms::XML_PATH_SMS_MESSAGE_TWO_STATUS);
|
168 |
+
$smsStatusThree = Mage::getStoreConfig(Dotdigitalgroup_Email_Model_Sales_Sms::XML_PATH_SMS_MESSAGE_THREE_STATUS);
|
169 |
+
$smsStatusFour = Mage::getStoreConfig(Dotdigitalgroup_Email_Model_Sales_Sms::XML_PATH_SMS_MESSAGE_FOUR_STATUS);
|
170 |
+
$smsModel = Mage::getModel('connector/sales_sms');
|
171 |
+
|
172 |
+
switch($status){
|
173 |
+
case $smsStatusOne:
|
174 |
+
$smsModel->sendMessage($order, 'ONE');
|
175 |
+
break;
|
176 |
+
case $smsStatusTwo:
|
177 |
+
$smsModel->sendMessage($order, 'TWO');
|
178 |
+
break;
|
179 |
+
case $smsStatusThree:
|
180 |
+
$smsModel->sendMessage($order, 'THREE');
|
181 |
+
break;
|
182 |
+
case $smsStatusFour:
|
183 |
+
$smsModel->sendMessage($order, 'FOUR');
|
184 |
+
break;
|
185 |
+
}
|
186 |
+
|
187 |
+
return $this;
|
188 |
+
}
|
189 |
+
|
190 |
+
public function handleSalesOrderRefund(Varien_Event_Observer $observer)
|
191 |
+
{
|
192 |
+
$creditmemo = $observer->getEvent()->getCreditmemo();
|
193 |
+
$storeId = $creditmemo->getStoreId();
|
194 |
+
$order = $creditmemo->getOrder();
|
195 |
+
$orderId = $order->getEntityId();
|
196 |
+
$quoteId = $order->getQuoteId();
|
197 |
+
$helper = Mage::helper('connector');
|
198 |
+
$emailOrder = Mage::getModel('connector/email_order')->loadByOrderId($orderId, $quoteId, $storeId);
|
199 |
+
|
200 |
+
try{
|
201 |
+
$emailOrder->setEmailImported(Dotdigitalgroup_Email_Model_Email_Contact::EMAIL_CONTACT_NOT_IMPORTED)->save();
|
202 |
+
}catch (Exception $e){
|
203 |
+
$helper->log($e->getMessage());
|
204 |
+
}
|
205 |
+
|
206 |
+
return $this;
|
207 |
+
}
|
208 |
+
public function hangleSalesOrderCancel(Varien_Event_Observer $observer)
|
209 |
+
{
|
210 |
+
$order = $observer->getEvent()->getOrder();
|
211 |
+
$storeId = $order->getStoreId();
|
212 |
+
$websiteId = Mage::app()->getStore($storeId)->getWebsiteId();
|
213 |
+
$customerEmail = $order->getCustomerEmail();
|
214 |
+
$helper = Mage::helper('connector');
|
215 |
+
if($helper->isEnabled($storeId)){
|
216 |
+
|
217 |
+
$client = Mage::getModel('connector/connector_api_client');
|
218 |
+
$client->setApiUsername($helper->getApiUsername($websiteId));
|
219 |
+
$client->setApiPassword($helper->getApiPassword($websiteId));
|
220 |
+
|
221 |
+
// delete the order transactional data
|
222 |
+
$client->deleteContactTransactionalData($customerEmail, 'Orders');
|
223 |
+
}
|
224 |
+
|
225 |
+
return $this;
|
226 |
+
}
|
227 |
+
|
228 |
+
// public function handleSalesQuoteSaveAfter(Varien_Event_Observer $observer)
|
229 |
+
// {
|
230 |
+
// $quote = $observer->getEvent()->getQuote();
|
231 |
+
// $quoteId = $quote->getId();
|
232 |
+
// try{
|
233 |
+
//
|
234 |
+
// $sendModel = Mage::getModel('connector/email_send')->loadByQuoteId($quoteId, $quote->getStoreId());
|
235 |
+
//
|
236 |
+
//
|
237 |
+
// $sendModel->setEmail($quote->getCustomerEmail())
|
238 |
+
// ->setCreatedAt($quote->getCreatedAt())
|
239 |
+
// ->setUpdatedAt($quote->getUpdatedAt())->save();
|
240 |
+
//
|
241 |
+
// }catch(Exception $e){
|
242 |
+
// Mage::logException($e);
|
243 |
+
// }
|
244 |
+
//
|
245 |
+
//
|
246 |
+
// return $this;
|
247 |
+
// }
|
248 |
+
}
|
app/code/community/Dotdigitalgroup/Email/Model/Resource/Email/Contact.php
ADDED
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Dotdigitalgroup_Email_Model_Resource_Email_Contact extends Mage_Core_Model_Mysql4_Abstract
|
4 |
+
{
|
5 |
+
protected function _construct()
|
6 |
+
{
|
7 |
+
$this->_init('connector/email_contact', 'email_contact_id');
|
8 |
+
|
9 |
+
}
|
10 |
+
|
11 |
+
|
12 |
+
}
|
app/code/community/Dotdigitalgroup/Email/Model/Resource/Email/Contact/Collection.php
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Dotdigitalgroup_Email_Model_Resource_Email_Contact_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
|
4 |
+
{
|
5 |
+
protected function _construct(){
|
6 |
+
parent::_construct();
|
7 |
+
$this->_init('connector/email_contact');
|
8 |
+
}
|
9 |
+
|
10 |
+
|
11 |
+
public function addWebsiteFilter($website)
|
12 |
+
{
|
13 |
+
$this->addFilter('website_id', $website);
|
14 |
+
return $this;
|
15 |
+
}
|
16 |
+
|
17 |
+
|
18 |
+
|
19 |
+
}
|
app/code/community/Dotdigitalgroup/Email/Model/Resource/Email/Order.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Dotdigitalgroup_Email_Model_Resource_Email_Order extends Mage_Core_Model_Mysql4_Abstract
|
4 |
+
{
|
5 |
+
protected function _construct()
|
6 |
+
{
|
7 |
+
$this->_init('connector/email_order', 'email_order_id');
|
8 |
+
}
|
9 |
+
}
|
app/code/community/Dotdigitalgroup/Email/Model/Resource/Email/Order/Collection.php
ADDED
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Dotdigitalgroup_Email_Model_Resource_Email_Order_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
|
4 |
+
{
|
5 |
+
|
6 |
+
public function _construct()
|
7 |
+
{
|
8 |
+
parent::_construct();
|
9 |
+
$this->_init('connector/email_order');
|
10 |
+
}
|
11 |
+
|
12 |
+
|
13 |
+
|
14 |
+
|
15 |
+
}
|
app/code/community/Dotdigitalgroup/Email/Model/Resource/Email/Send.php
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Dotdigitalgroup_Email_Model_Resource_Email_Send extends Mage_Core_Model_Mysql4_Abstract
|
4 |
+
{
|
5 |
+
protected function _construct()
|
6 |
+
{
|
7 |
+
$this->_init('connector/email_send', 'email_send_id');
|
8 |
+
|
9 |
+
}
|
10 |
+
}
|
app/code/community/Dotdigitalgroup/Email/Model/Resource/Email/Send/Collection.php
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Dotdigitalgroup_Email_Model_Resource_Email_Send_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
|
4 |
+
{
|
5 |
+
public function _construct()
|
6 |
+
{
|
7 |
+
parent::_construct();
|
8 |
+
$this->_init('connector/email_send');
|
9 |
+
}
|
10 |
+
}
|
app/code/community/Dotdigitalgroup/Email/Model/Resource/Setup.php
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Dotdigitalgroup_Email_Model_Resource_Setup extends Mage_Core_Model_Resource_Setup
|
4 |
+
{
|
5 |
+
|
6 |
+
}
|
app/code/community/Dotdigitalgroup/Email/Model/Sales/Order.php
ADDED
@@ -0,0 +1,137 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Dotdigitalgroup_Email_Model_Sales_Order
|
4 |
+
{
|
5 |
+
const XML_PATH_TRANSACTIONAL_DATA_SYNC_LIMIT = 'connector_advanced_settings/sync_limits/orders';
|
6 |
+
|
7 |
+
protected $accounts = array();
|
8 |
+
private $_api_username;
|
9 |
+
private $_api_password;
|
10 |
+
|
11 |
+
/**
|
12 |
+
* initial sync the transactional data
|
13 |
+
* @return array
|
14 |
+
*/
|
15 |
+
public function sync()
|
16 |
+
{
|
17 |
+
Mage::helper('connector')->log('start order sync..');
|
18 |
+
$client = Mage::getModel('connector/connector_api_client');
|
19 |
+
// Initialise a return hash containing results of our sync attempt
|
20 |
+
$this->_searchAccounts();
|
21 |
+
|
22 |
+
foreach($this->accounts as $account){
|
23 |
+
if(count($account->getOrders())){
|
24 |
+
$client->postContactsTransactionalDataImport($account->getOrders(), 'Orders');
|
25 |
+
}
|
26 |
+
|
27 |
+
unset($this->accounts[$account->getApiUsername()]);
|
28 |
+
}
|
29 |
+
Mage::helper('connector')->log('end order sync.');
|
30 |
+
return $this;
|
31 |
+
}
|
32 |
+
|
33 |
+
/**
|
34 |
+
*Search the configuration data per website
|
35 |
+
*/
|
36 |
+
private function _searchAccounts()
|
37 |
+
{
|
38 |
+
$helper = Mage::helper('connector');
|
39 |
+
foreach (Mage::app()->getWebsites() as $website){
|
40 |
+
|
41 |
+
$this->_api_username = $helper->getApiUsername($website);
|
42 |
+
$this->_api_password = $helper->getApiPassword($website);
|
43 |
+
|
44 |
+
// limit for orders included to sync
|
45 |
+
$limit = Mage::helper('connector')->getTransactionalSyncLimit();
|
46 |
+
|
47 |
+
if(!isset($this->accounts[$this->_api_username])){
|
48 |
+
$account = Mage::getModel('connector/connector_account')
|
49 |
+
->setApiUsername($this->_api_username)
|
50 |
+
->setApiPassword($this->_api_password);
|
51 |
+
|
52 |
+
$this->accounts[$this->_api_username] = $account;
|
53 |
+
}
|
54 |
+
$this->accounts[$this->_api_username]->setOrders($this->getConnectorOrders($limit));
|
55 |
+
|
56 |
+
}
|
57 |
+
}
|
58 |
+
|
59 |
+
/**
|
60 |
+
* get all order to import
|
61 |
+
* @param $limit
|
62 |
+
* @return array
|
63 |
+
*/
|
64 |
+
public function getConnectorOrders($limit = 100)
|
65 |
+
{
|
66 |
+
$orders = $customers = array();
|
67 |
+
$orderModel = Mage::getModel('connector/email_order');
|
68 |
+
$orderCollection = $orderModel->getOrdersToImport($limit);
|
69 |
+
|
70 |
+
|
71 |
+
foreach ($orderCollection as $order) {
|
72 |
+
try {
|
73 |
+
$salesOrder = Mage::getModel('sales/order')->load($order->getOrderId());
|
74 |
+
|
75 |
+
$websiteId = Mage::getModel('core/store')->load($order->getStoreId())->getWebsiteId();
|
76 |
+
|
77 |
+
/**
|
78 |
+
* Get guest and add to contacts
|
79 |
+
*/
|
80 |
+
if($salesOrder->getCustomerIsGuest()){
|
81 |
+
|
82 |
+
$this->_createGuestContact($salesOrder->getCustomerEmail(), $websiteId);
|
83 |
+
}
|
84 |
+
|
85 |
+
//@todo report the deleted orders in log table
|
86 |
+
if($salesOrder->getId()){
|
87 |
+
$connectorOrder = Mage::getModel('connector/connector_order', $salesOrder);
|
88 |
+
$connectorOrder->connector_id = $salesOrder->getCustomerEmail();
|
89 |
+
$orders[] = $connectorOrder;
|
90 |
+
}
|
91 |
+
//mark order as imported
|
92 |
+
$order->setEmailImported(Dotdigitalgroup_Email_Model_Email_Contact::EMAIL_CONTACT_IMPORTED)->save();
|
93 |
+
|
94 |
+
|
95 |
+
}catch(Exception $e){
|
96 |
+
Mage::helper('connector')->log($e->getMessage());
|
97 |
+
}
|
98 |
+
}
|
99 |
+
return $orders;
|
100 |
+
}
|
101 |
+
private function _createGuestContact($email, $websiteId){
|
102 |
+
try{
|
103 |
+
$client = Mage::getModel('connector/connector_api_client');
|
104 |
+
$client->setApiUsername(Mage::helper('connector')->getApiUsername($websiteId))
|
105 |
+
->setApiPassword(Mage::helper('connector')->getApiPassword($websiteId));
|
106 |
+
|
107 |
+
$contactApi = $client->getContactByEmail($email);
|
108 |
+
if(isset($contactApi->message) && $contactApi->message == Dotdigitalgroup_Email_Model_Connector_Api_Client::REST_CONTACT_NOT_FOUND){
|
109 |
+
$contactApi = $client->postContacts($email);
|
110 |
+
|
111 |
+
|
112 |
+
}elseif(isset($contactApi->message)){
|
113 |
+
return false;
|
114 |
+
}
|
115 |
+
// Add guest to address book
|
116 |
+
$client->postAddressBookContacts(Mage::helper('connector')->getGuestAddressBook($websiteId), $contactApi);
|
117 |
+
|
118 |
+
/**
|
119 |
+
* Create new contact
|
120 |
+
*/
|
121 |
+
$contactModel = Mage::getModel('connector/email_contact')->loadByCustomerEmail($email, $websiteId);
|
122 |
+
|
123 |
+
$contactModel->setIsGuest(1)
|
124 |
+
->setContactId($contactApi->id)
|
125 |
+
->setEmailImported(Dotdigitalgroup_Email_Model_Email_Contact::EMAIL_CONTACT_NOT_IMPORTED)
|
126 |
+
->save();
|
127 |
+
|
128 |
+
|
129 |
+
Mage::helper('connector')->log('found guest : ' . $email . ' website ' . $websiteId);
|
130 |
+
}catch(Exception $e){
|
131 |
+
Mage::helper('connector')->log($e->getMessage());
|
132 |
+
}
|
133 |
+
|
134 |
+
return true;
|
135 |
+
|
136 |
+
}
|
137 |
+
}
|
app/code/{local/Dotdigitalgroup/Email/Model/Order.php → community/Dotdigitalgroup/Email/Model/Sales/Order/State.php}
RENAMED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
class
|
4 |
{
|
5 |
protected function _setState($state, $status = false, $comment = '', $isCustomerNotified = null, $shouldProtectState = false)
|
6 |
{
|
1 |
<?php
|
2 |
|
3 |
+
class Dotdigitalgroup_Email_Model_Sales_Order_State extends Mage_Sales_Model_Order
|
4 |
{
|
5 |
protected function _setState($state, $status = false, $comment = '', $isCustomerNotified = null, $shouldProtectState = false)
|
6 |
{
|
app/code/{local → community}/Dotdigitalgroup/Email/Model/Sales/Quote.php
RENAMED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
class Dotdigitalgroup_Email_Model_Sales_Quote
|
4 |
{
|
5 |
//xml path configuration
|
6 |
const XML_PATH_LOSTBASKET_1_ENABLED = 'lostbaskets/customers/enabled_1';
|
@@ -36,18 +36,23 @@ class Dotdigitalgroup_Email_Model_Sales_Quote extends Dotdigitalgroup_Email_Mode
|
|
36 |
*/
|
37 |
public function proccessCampaigns()
|
38 |
{
|
39 |
-
|
|
|
|
|
|
|
|
|
40 |
|
41 |
//skip any action if all lost basket campaings are disabled
|
42 |
if(!$store->getConfig(self::XML_PATH_LOSTBASKET_1_ENABLED) && !$store->getConfig(self::XML_PATH_LOSTBASKET_2_ENABLED) &&
|
43 |
!$store->getConfig(self::XML_PATH_LOSTBASKET_3_ENABLED) && !$store->getConfig(self::XML_PATH_GUEST_LOSTBASKET_1_ENABLED) &&
|
44 |
!$store->getconfig(self::XML_PATH_GUEST_LOSTBASKET_2_ENABLED) && !$store->getConfig(self::XML_PATH_GUEST_LOSTBASKET_3_ENABLED)
|
45 |
)continue;
|
46 |
-
|
47 |
// set credentials for every store
|
48 |
$storeId = $store->getId();
|
49 |
-
$
|
50 |
-
|
|
|
|
|
51 |
|
52 |
/**
|
53 |
* Customers campaings
|
@@ -62,19 +67,20 @@ class Dotdigitalgroup_Email_Model_Sales_Quote extends Dotdigitalgroup_Email_Mode
|
|
62 |
$from->sub('5', Zend_Date::MINUTE);
|
63 |
// lost baskets
|
64 |
$quoteCollection = $this->_getStoreQuotes($storeId, $from->toString('YYYY-MM-dd HH:mm:ss'), $to->toString('YYYY-MM-dd HH:mm:ss'));
|
65 |
-
if(count($quoteCollection)){
|
66 |
|
|
|
67 |
// get collection contacts id
|
68 |
foreach ($quoteCollection as $quote) {
|
69 |
-
$customerId = $quote->getCustomerId();
|
70 |
-
$dotmailerContactId = $this->_getContactIdByCustomerId($customerId);
|
71 |
|
72 |
-
|
73 |
-
|
|
|
|
|
|
|
74 |
}
|
75 |
-
|
76 |
if(!empty($contacts))
|
77 |
-
$
|
78 |
}
|
79 |
}
|
80 |
|
@@ -86,16 +92,20 @@ class Dotdigitalgroup_Email_Model_Sales_Quote extends Dotdigitalgroup_Email_Mode
|
|
86 |
$from->sub('5', Zend_Date::MINUTE);
|
87 |
// lost baskets
|
88 |
$quoteCollection = $this->_getStoreQuotes($storeId, $from->toString('YYYY-MM-dd HH:mm:ss'), $to->toString('YYYY-MM-dd HH:mm:ss'));
|
|
|
89 |
if(count($quoteCollection)){
|
90 |
// get collection contacts id
|
91 |
foreach ($quoteCollection as $quote) {
|
92 |
-
|
93 |
-
$
|
94 |
-
|
95 |
-
|
|
|
|
|
96 |
}
|
|
|
97 |
if(!empty($contacts))
|
98 |
-
$
|
99 |
}
|
100 |
}
|
101 |
|
@@ -110,14 +120,18 @@ class Dotdigitalgroup_Email_Model_Sales_Quote extends Dotdigitalgroup_Email_Mode
|
|
110 |
if(count($quoteCollection)){
|
111 |
// get collection contacts id
|
112 |
foreach ($quoteCollection as $quote) {
|
113 |
-
|
114 |
-
$
|
115 |
-
|
116 |
-
|
|
|
|
|
117 |
}
|
|
|
118 |
if(!empty($contacts))
|
119 |
-
$
|
120 |
}
|
|
|
121 |
}
|
122 |
/**
|
123 |
* Guests campaings
|
@@ -130,23 +144,24 @@ class Dotdigitalgroup_Email_Model_Sales_Quote extends Dotdigitalgroup_Email_Mode
|
|
130 |
$to = clone($from);
|
131 |
$from->sub('5', Zend_Date::MINUTE);
|
132 |
$quoteCollection = $this->_getStoreQuotes($storeId, $from->toString('YYYY-MM-dd HH:mm:ss'), $to->toString('YYYY-MM-dd HH:mm:ss'), true);
|
|
|
133 |
if(count($quoteCollection)){
|
134 |
// get collection contacts id
|
135 |
foreach ($quoteCollection as $quote) {
|
136 |
$email = $quote->getCustomerEmail();
|
137 |
//check if the customer exists
|
138 |
-
$response = $
|
139 |
|
140 |
-
if(isset($response->message) && $response->message ==
|
141 |
//create new contact before sending campaign
|
142 |
-
$contactAPI = $
|
143 |
if(!isset($contactAPI->message))
|
144 |
-
$response = $
|
145 |
}
|
146 |
$contacts[] = $response->id;
|
147 |
}
|
148 |
if(!empty($contacts))
|
149 |
-
$
|
150 |
}
|
151 |
}
|
152 |
// second guest campaign
|
@@ -163,17 +178,18 @@ class Dotdigitalgroup_Email_Model_Sales_Quote extends Dotdigitalgroup_Email_Mode
|
|
163 |
foreach ($quoteCollection as $quote) {
|
164 |
$email = $quote->getCustomerEmail();
|
165 |
//check if the customer exists
|
166 |
-
$response = $
|
167 |
-
|
|
|
168 |
//create new contact before sending campaign
|
169 |
-
$contactAPI = $
|
170 |
if(!isset($contactAPI->message))
|
171 |
-
$
|
172 |
}
|
173 |
$contacts[] = $response->id;
|
174 |
}
|
175 |
if(!empty($contacts))
|
176 |
-
$
|
177 |
}
|
178 |
}
|
179 |
//third guest campaign
|
@@ -182,7 +198,6 @@ class Dotdigitalgroup_Email_Model_Sales_Quote extends Dotdigitalgroup_Email_Mode
|
|
182 |
$from = Zend_Date::now()->subHour($store->getConfig(self::XML_PATH_GUEST_LOSTBASKET_3_INTERVAL));
|
183 |
$to = clone($from);
|
184 |
$from->sub('5', Zend_Date::MINUTE);
|
185 |
-
|
186 |
// lost baskets
|
187 |
$quoteCollection = $this->_getStoreQuotes($storeId, $from->toString('YYYY-MM-dd HH:mm:ss'), $to->toString('YYYY-MM-dd HH:mm:ss'), true);
|
188 |
if(count($quoteCollection)){
|
@@ -190,18 +205,18 @@ class Dotdigitalgroup_Email_Model_Sales_Quote extends Dotdigitalgroup_Email_Mode
|
|
190 |
foreach ($quoteCollection as $quote) {
|
191 |
$email = $quote->getCustomerEmail();
|
192 |
//check if the customer exists
|
193 |
-
$response = $
|
194 |
|
195 |
-
if(isset($response->message) && $response->message ==
|
196 |
//create new contact before sending campaign
|
197 |
-
$contactAPI = $
|
198 |
if(!isset($contactAPI->message))
|
199 |
-
$
|
200 |
}
|
201 |
$contacts[] = $response->id;
|
202 |
}
|
203 |
if(!empty($contacts))
|
204 |
-
$
|
205 |
}
|
206 |
}
|
207 |
}
|
@@ -227,63 +242,11 @@ class Dotdigitalgroup_Email_Model_Sales_Quote extends Dotdigitalgroup_Email_Mode
|
|
227 |
'to' => $to,
|
228 |
'date' => true)
|
229 |
);
|
|
|
230 |
if($guest)
|
231 |
$salesCollection->addFieldToFilter('checkout_method' , Mage_Checkout_Model_Type_Onepage::METHOD_GUEST);
|
232 |
|
233 |
return $salesCollection->load();
|
234 |
}
|
235 |
|
236 |
-
private function _getContactIdByCustomerId($customerId)
|
237 |
-
{
|
238 |
-
$customerModel = Mage::getModel('customer/customer')->load($customerId);
|
239 |
-
|
240 |
-
if($customerModel){
|
241 |
-
return $customerModel->getData('dotmailer_contact_id');
|
242 |
-
}
|
243 |
-
return false;
|
244 |
-
|
245 |
-
}
|
246 |
-
public function forceProccess()
|
247 |
-
{
|
248 |
-
$result = array('errors' => false, 'message' => '');
|
249 |
-
$contacts = array();
|
250 |
-
$customerEmail = Mage::getStoreConfig(self::XML_PATH_TEST_LOSTBASKET_EMAIL);
|
251 |
-
|
252 |
-
|
253 |
-
$salesCollection = Mage::getResourceModel('sales/quote_collection')
|
254 |
-
->addFieldToFilter('is_active',1)
|
255 |
-
->addFieldToFilter('items_count', array('gt' => 0))
|
256 |
-
->addFieldToFilter('customer_id', array('neq' => ''))
|
257 |
-
->addFieldToFilter('customer_email', $customerEmail)
|
258 |
-
|
259 |
-
//->addFieldToFilter('store_id', $storeId)
|
260 |
-
;
|
261 |
-
$salesCollection->getSelect()->order("updated_at desc");
|
262 |
-
|
263 |
-
|
264 |
-
$quote = $salesCollection->getFirstItem();
|
265 |
-
|
266 |
-
if($quote){
|
267 |
-
|
268 |
-
$contactId = $this->_getContactIdByCustomerId($quote->getCustomerId());
|
269 |
-
|
270 |
-
if($contactId)
|
271 |
-
$contacts[] = $contactId;
|
272 |
-
|
273 |
-
if(!empty($contacts)){
|
274 |
-
|
275 |
-
$responce = $this->sendCampaign(Mage::getStoreConfig(self::XML_PATH_TRIGGER_1_CAMPAIGN), $contacts);
|
276 |
-
if(isset($responce->message)){
|
277 |
-
$result['errors'] = true;
|
278 |
-
$result['message'] = $responce->message;
|
279 |
-
}else{
|
280 |
-
|
281 |
-
$result['message'] = 'First Test Campaign Sent ';
|
282 |
-
}
|
283 |
-
}
|
284 |
-
}
|
285 |
-
return $result;
|
286 |
-
|
287 |
-
}
|
288 |
-
|
289 |
}
|
1 |
<?php
|
2 |
|
3 |
+
class Dotdigitalgroup_Email_Model_Sales_Quote
|
4 |
{
|
5 |
//xml path configuration
|
6 |
const XML_PATH_LOSTBASKET_1_ENABLED = 'lostbaskets/customers/enabled_1';
|
36 |
*/
|
37 |
public function proccessCampaigns()
|
38 |
{
|
39 |
+
$helper = Mage::helper('connector');
|
40 |
+
|
41 |
+
$client = Mage::getModel('connector/connector_api_client');
|
42 |
+
|
43 |
+
foreach (Mage::app()->getStores() as $store){
|
44 |
|
45 |
//skip any action if all lost basket campaings are disabled
|
46 |
if(!$store->getConfig(self::XML_PATH_LOSTBASKET_1_ENABLED) && !$store->getConfig(self::XML_PATH_LOSTBASKET_2_ENABLED) &&
|
47 |
!$store->getConfig(self::XML_PATH_LOSTBASKET_3_ENABLED) && !$store->getConfig(self::XML_PATH_GUEST_LOSTBASKET_1_ENABLED) &&
|
48 |
!$store->getconfig(self::XML_PATH_GUEST_LOSTBASKET_2_ENABLED) && !$store->getConfig(self::XML_PATH_GUEST_LOSTBASKET_3_ENABLED)
|
49 |
)continue;
|
|
|
50 |
// set credentials for every store
|
51 |
$storeId = $store->getId();
|
52 |
+
$websiteId = $store->getWebsite()->getId();
|
53 |
+
|
54 |
+
$client->setApiUsername($helper->getApiUsername($websiteId));
|
55 |
+
$client->setApiPassword($helper->getApiPassword($websiteId));
|
56 |
|
57 |
/**
|
58 |
* Customers campaings
|
67 |
$from->sub('5', Zend_Date::MINUTE);
|
68 |
// lost baskets
|
69 |
$quoteCollection = $this->_getStoreQuotes($storeId, $from->toString('YYYY-MM-dd HH:mm:ss'), $to->toString('YYYY-MM-dd HH:mm:ss'));
|
|
|
70 |
|
71 |
+
if(count($quoteCollection)){
|
72 |
// get collection contacts id
|
73 |
foreach ($quoteCollection as $quote) {
|
|
|
|
|
74 |
|
75 |
+
$email = $quote->getCustomerEmail();
|
76 |
+
$contactId = $helper->getContactId($email, $websiteId);
|
77 |
+
|
78 |
+
if($contactId)
|
79 |
+
$contacts[] = $contactId;
|
80 |
}
|
81 |
+
|
82 |
if(!empty($contacts))
|
83 |
+
$client->postCampaignsSend($store->getConfig(self::XML_PATH_TRIGGER_1_CAMPAIGN), $contacts);
|
84 |
}
|
85 |
}
|
86 |
|
92 |
$from->sub('5', Zend_Date::MINUTE);
|
93 |
// lost baskets
|
94 |
$quoteCollection = $this->_getStoreQuotes($storeId, $from->toString('YYYY-MM-dd HH:mm:ss'), $to->toString('YYYY-MM-dd HH:mm:ss'));
|
95 |
+
|
96 |
if(count($quoteCollection)){
|
97 |
// get collection contacts id
|
98 |
foreach ($quoteCollection as $quote) {
|
99 |
+
|
100 |
+
$email = $quote->getCustomerEmail();
|
101 |
+
$contactId = $helper->getContactId($email, $websiteId);
|
102 |
+
|
103 |
+
if($contactId)
|
104 |
+
$contacts[] = $contactId;
|
105 |
}
|
106 |
+
|
107 |
if(!empty($contacts))
|
108 |
+
$client->postCampaignsSend($store->getConfig(self::XML_PATH_TRIGGER_2_CAMPAIGN), $contacts);
|
109 |
}
|
110 |
}
|
111 |
|
120 |
if(count($quoteCollection)){
|
121 |
// get collection contacts id
|
122 |
foreach ($quoteCollection as $quote) {
|
123 |
+
|
124 |
+
$email = $quote->getCustomerEmail();
|
125 |
+
$contactId = $helper->getContactId($email, $websiteId);
|
126 |
+
|
127 |
+
if($contactId)
|
128 |
+
$contacts[] = $contactId;
|
129 |
}
|
130 |
+
|
131 |
if(!empty($contacts))
|
132 |
+
$client->postCampaignsSend($store->getConfig(self::XML_PATH_TRIGGER_3_CAMPAIGN), $contacts);
|
133 |
}
|
134 |
+
|
135 |
}
|
136 |
/**
|
137 |
* Guests campaings
|
144 |
$to = clone($from);
|
145 |
$from->sub('5', Zend_Date::MINUTE);
|
146 |
$quoteCollection = $this->_getStoreQuotes($storeId, $from->toString('YYYY-MM-dd HH:mm:ss'), $to->toString('YYYY-MM-dd HH:mm:ss'), true);
|
147 |
+
|
148 |
if(count($quoteCollection)){
|
149 |
// get collection contacts id
|
150 |
foreach ($quoteCollection as $quote) {
|
151 |
$email = $quote->getCustomerEmail();
|
152 |
//check if the customer exists
|
153 |
+
$response = $client->getContactByEmail($email);
|
154 |
|
155 |
+
if(isset($response->message) && $response->message == Dotdigitalgroup_Email_Model_Connector_Api_Client::REST_CONTACT_NOT_FOUND){
|
156 |
//create new contact before sending campaign
|
157 |
+
$contactAPI = $client->postContacts($email);
|
158 |
if(!isset($contactAPI->message))
|
159 |
+
$response = $client->postAddressBookContacts($helper->getGuestAddressBook($websiteId), $contactAPI);
|
160 |
}
|
161 |
$contacts[] = $response->id;
|
162 |
}
|
163 |
if(!empty($contacts))
|
164 |
+
$client->postCampaignsSend($store->getConfig(self::XML_PATH_GUEST_LOSTBASKET_1_CAMPAIGN), $contacts);
|
165 |
}
|
166 |
}
|
167 |
// second guest campaign
|
178 |
foreach ($quoteCollection as $quote) {
|
179 |
$email = $quote->getCustomerEmail();
|
180 |
//check if the customer exists
|
181 |
+
$response = $client->getContactByEmail($email);
|
182 |
+
|
183 |
+
if(isset($response->message) && $response->message == Dotdigitalgroup_Email_Model_Connector_Api_Client::REST_CONTACT_NOT_FOUND){
|
184 |
//create new contact before sending campaign
|
185 |
+
$contactAPI = $client->postContacts($email);
|
186 |
if(!isset($contactAPI->message))
|
187 |
+
$response = $client->postAddressBookContacts($helper->getGuestAddressBook($websiteId), $contactAPI);
|
188 |
}
|
189 |
$contacts[] = $response->id;
|
190 |
}
|
191 |
if(!empty($contacts))
|
192 |
+
$client->postCampaignsSend($store->getConfig(self::XML_PATH_GUEST_LOSTBASKET_2_CAMPAIGN), $contacts);
|
193 |
}
|
194 |
}
|
195 |
//third guest campaign
|
198 |
$from = Zend_Date::now()->subHour($store->getConfig(self::XML_PATH_GUEST_LOSTBASKET_3_INTERVAL));
|
199 |
$to = clone($from);
|
200 |
$from->sub('5', Zend_Date::MINUTE);
|
|
|
201 |
// lost baskets
|
202 |
$quoteCollection = $this->_getStoreQuotes($storeId, $from->toString('YYYY-MM-dd HH:mm:ss'), $to->toString('YYYY-MM-dd HH:mm:ss'), true);
|
203 |
if(count($quoteCollection)){
|
205 |
foreach ($quoteCollection as $quote) {
|
206 |
$email = $quote->getCustomerEmail();
|
207 |
//check if the customer exists
|
208 |
+
$response = $client->getContactByEmail($email);
|
209 |
|
210 |
+
if(isset($response->message) && $response->message == Dotdigitalgroup_Email_Model_Connector_Api_Client::REST_CONTACT_NOT_FOUND){
|
211 |
//create new contact before sending campaign
|
212 |
+
$contactAPI = $client->postContacts($email);
|
213 |
if(!isset($contactAPI->message))
|
214 |
+
$response = $client->postAddressBookContacts($helper->getGuestAddressBook($websiteId), $contactAPI);
|
215 |
}
|
216 |
$contacts[] = $response->id;
|
217 |
}
|
218 |
if(!empty($contacts))
|
219 |
+
$client->postCampaignsSend($store->getConfig(self::XML_PATH_GUEST_LOSTBASKET_3_CAMPAIGN), $contacts);
|
220 |
}
|
221 |
}
|
222 |
}
|
242 |
'to' => $to,
|
243 |
'date' => true)
|
244 |
);
|
245 |
+
|
246 |
if($guest)
|
247 |
$salesCollection->addFieldToFilter('checkout_method' , Mage_Checkout_Model_Type_Onepage::METHOD_GUEST);
|
248 |
|
249 |
return $salesCollection->load();
|
250 |
}
|
251 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
252 |
}
|
app/code/{local → community}/Dotdigitalgroup/Email/Model/Sales/Sms.php
RENAMED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
class Dotdigitalgroup_Email_Model_Sales_Sms
|
4 |
{
|
5 |
const XML_PATH_SMS_MESSAGE_ONE_STATUS = 'sms_section/sms_message_one/order_status';
|
6 |
const XML_PATH_SMS_MESSAGE_TWO_STATUS = 'sms_section/sms_message_two/order_status';
|
@@ -19,24 +19,21 @@ class Dotdigitalgroup_Email_Model_Sales_Sms extends Dotdigitalgroup_Email_Model_
|
|
19 |
$storeId = $order->getStoreId();
|
20 |
$billing = $order->getBillingAddress();
|
21 |
$customerTelephone = $billing->getTelephone();
|
|
|
|
|
22 |
|
23 |
$message = Mage::getStoreConfig(constant('self::XML_PATH_SMS_MESSAGE_' . $number), $storeId);
|
24 |
|
25 |
$message = $this->_processVariables($order, $message);
|
26 |
-
|
27 |
-
|
28 |
$pattern = "/^(\+44\s?7\d{3}|\(?07\d{3}\)?)\s?\d{3}\s?\d{3}$/";
|
29 |
|
30 |
$match = preg_match($pattern, $customerTelephone);
|
31 |
-
$this->_helper->log('sms number to send : ' . $customerTelephone, null, $this->_log_filename);
|
32 |
|
33 |
if ($match != false) {
|
34 |
$telephoneNumber = preg_replace('/\A(0){1}+/', '+44', $customerTelephone);
|
35 |
-
|
36 |
-
$
|
37 |
-
|
38 |
-
|
39 |
-
$this->_helper->log('telephone number not valid ' . $customerTelephone, null, $this->_log_filename);
|
40 |
}
|
41 |
}
|
42 |
|
@@ -59,9 +56,7 @@ class Dotdigitalgroup_Email_Model_Sales_Sms extends Dotdigitalgroup_Email_Model_
|
|
59 |
$replacemant[] = '';
|
60 |
|
61 |
$message = preg_replace($this->_available, $replacemant, $message);
|
62 |
-
|
63 |
-
$helper->log($message, null, $this->_log_filename);
|
64 |
-
|
65 |
}
|
66 |
|
67 |
return $message;
|
1 |
<?php
|
2 |
|
3 |
+
class Dotdigitalgroup_Email_Model_Sales_Sms
|
4 |
{
|
5 |
const XML_PATH_SMS_MESSAGE_ONE_STATUS = 'sms_section/sms_message_one/order_status';
|
6 |
const XML_PATH_SMS_MESSAGE_TWO_STATUS = 'sms_section/sms_message_two/order_status';
|
19 |
$storeId = $order->getStoreId();
|
20 |
$billing = $order->getBillingAddress();
|
21 |
$customerTelephone = $billing->getTelephone();
|
22 |
+
$client = Mage::getModel('connector/connector_api_client');
|
23 |
+
$helper = Mage::helper('connector');
|
24 |
|
25 |
$message = Mage::getStoreConfig(constant('self::XML_PATH_SMS_MESSAGE_' . $number), $storeId);
|
26 |
|
27 |
$message = $this->_processVariables($order, $message);
|
|
|
|
|
28 |
$pattern = "/^(\+44\s?7\d{3}|\(?07\d{3}\)?)\s?\d{3}\s?\d{3}$/";
|
29 |
|
30 |
$match = preg_match($pattern, $customerTelephone);
|
|
|
31 |
|
32 |
if ($match != false) {
|
33 |
$telephoneNumber = preg_replace('/\A(0){1}+/', '+44', $customerTelephone);
|
34 |
+
$client->setApiUsername($helper->getApiUsername($storeId));
|
35 |
+
$client->setApiPassword($helper->getApiPassword($storeId));
|
36 |
+
$client->postSmsMessagesSendTo($telephoneNumber, $message);
|
|
|
|
|
37 |
}
|
38 |
}
|
39 |
|
56 |
$replacemant[] = '';
|
57 |
|
58 |
$message = preg_replace($this->_available, $replacemant, $message);
|
59 |
+
$helper->log($message);
|
|
|
|
|
60 |
}
|
61 |
|
62 |
return $message;
|
app/code/{local → community}/Dotdigitalgroup/Email/Model/System/Config/Backend/Syncschedule/Customer.php
RENAMED
@@ -2,19 +2,17 @@
|
|
2 |
|
3 |
class Dotdigitalgroup_Email_Model_System_Config_Backend_Syncschedule_Customer extends Mage_Core_Model_Config_Data
|
4 |
{
|
5 |
-
const CRON_STRING_PATH = 'connector_sync_settings/
|
6 |
|
7 |
/**
|
8 |
* Cron settings after save
|
9 |
-
*
|
10 |
-
*
|
11 |
*/
|
12 |
protected function _afterSave()
|
13 |
{
|
14 |
|
15 |
-
$enabled = $this->getData('groups/
|
16 |
-
$time = $this->getData('groups/
|
17 |
-
$frequency = $this->getData('groups/
|
18 |
|
19 |
$frequencyHourly = Dotdigitalgroup_Email_Model_System_Config_Source_Syncfrequency::CRON_HOURLY;
|
20 |
$frequencyDaily = Dotdigitalgroup_Email_Model_System_Config_Source_Syncfrequency::CRON_DAILY;
|
@@ -24,12 +22,13 @@ class Dotdigitalgroup_Email_Model_System_Config_Backend_Syncschedule_Customer ex
|
|
24 |
if ($enabled) {
|
25 |
$cronDayOfWeek = date('N');
|
26 |
$cronExprArray = array(
|
27 |
-
($frequency == $frequencyHourly)
|
28 |
-
($frequency == $frequencyDaily)
|
29 |
-
($frequency == $frequencyMonthly)
|
30 |
-
'*',
|
31 |
-
($frequency == $frequencyWeekly) ? $cronDayOfWeek : '*',
|
32 |
);
|
|
|
33 |
$cronExprString = join(' ', $cronExprArray);
|
34 |
}
|
35 |
else {
|
2 |
|
3 |
class Dotdigitalgroup_Email_Model_System_Config_Backend_Syncschedule_Customer extends Mage_Core_Model_Config_Data
|
4 |
{
|
5 |
+
const CRON_STRING_PATH = 'connector_sync_settings/sync/contact_frequency';
|
6 |
|
7 |
/**
|
8 |
* Cron settings after save
|
|
|
|
|
9 |
*/
|
10 |
protected function _afterSave()
|
11 |
{
|
12 |
|
13 |
+
$enabled = $this->getData('groups/sync/fields/contact_enabled/value');
|
14 |
+
$time = $this->getData('groups/sync/fields/contact_time/value');
|
15 |
+
$frequency = $this->getData('groups/sync/fields/contact_frequency/value');
|
16 |
|
17 |
$frequencyHourly = Dotdigitalgroup_Email_Model_System_Config_Source_Syncfrequency::CRON_HOURLY;
|
18 |
$frequencyDaily = Dotdigitalgroup_Email_Model_System_Config_Source_Syncfrequency::CRON_DAILY;
|
22 |
if ($enabled) {
|
23 |
$cronDayOfWeek = date('N');
|
24 |
$cronExprArray = array(
|
25 |
+
($frequency == $frequencyHourly)? $time[1] : '*', # Minute
|
26 |
+
($frequency == $frequencyDaily)? intval($time[0]) : '*', # Hour
|
27 |
+
($frequency == $frequencyMonthly)? '1' : '*', # Day of the Month
|
28 |
+
'*', # Month of the Year
|
29 |
+
($frequency == $frequencyWeekly) ? $cronDayOfWeek : '*', # Day of the Week
|
30 |
);
|
31 |
+
|
32 |
$cronExprString = join(' ', $cronExprArray);
|
33 |
}
|
34 |
else {
|
app/code/{local → community}/Dotdigitalgroup/Email/Model/System/Config/Source/Activebasket.php
RENAMED
File without changes
|
app/code/community/Dotdigitalgroup/Email/Model/System/Config/Source/Addressbooks.php
ADDED
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Dotdigitalgroup_Email_Model_System_Config_Source_Addressbooks
|
4 |
+
{
|
5 |
+
// Returns the account's datafields
|
6 |
+
public function toOptionArray()
|
7 |
+
{
|
8 |
+
$fields = array();
|
9 |
+
|
10 |
+
$website = Mage::app()->getRequest()->getParam('website');
|
11 |
+
$helper = Mage::helper('connector');
|
12 |
+
$client = Mage::getModel('connector/connector_api_client');
|
13 |
+
|
14 |
+
|
15 |
+
$client->setApiUsername($helper->getApiUsername($website));
|
16 |
+
$client->setApiPassword($helper->getApiPassword($website));
|
17 |
+
|
18 |
+
// Add a "Do Not Map" Option
|
19 |
+
$fields[] = array('value' => 0, 'label' => 'Do Not Map');
|
20 |
+
|
21 |
+
// api all address books
|
22 |
+
$addressBooks = $client->getAddressBooks();
|
23 |
+
|
24 |
+
if(isset($addressBooks->message)){
|
25 |
+
$fields[] = array('value' => 0, 'label' => $addressBooks->message);
|
26 |
+
}
|
27 |
+
|
28 |
+
//set up fields with book id and label
|
29 |
+
foreach ($addressBooks as $book){
|
30 |
+
if(isset($book->id))
|
31 |
+
$fields[] = array('value' => $book->id, 'label' => $book->name);
|
32 |
+
}
|
33 |
+
|
34 |
+
return $fields;
|
35 |
+
}
|
36 |
+
|
37 |
+
}
|
app/code/community/Dotdigitalgroup/Email/Model/System/Config/Source/Campaigns.php
ADDED
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Date: 15/04/2013
|
4 |
+
* Time: 13:46
|
5 |
+
*/
|
6 |
+
class Dotdigitalgroup_Email_Model_System_Config_Source_Campaigns
|
7 |
+
{
|
8 |
+
|
9 |
+
// Returns the account's datafields
|
10 |
+
public function toOptionArray()
|
11 |
+
{
|
12 |
+
$fields = array();
|
13 |
+
/** @var Dotdigitalgroup_Email_Model_Connector_Api_Client $client */
|
14 |
+
$client = Mage::getModel('connector/connector_api_client');
|
15 |
+
|
16 |
+
$websiteName = Mage::app()->getRequest()->getParam('website');
|
17 |
+
if(! empty($websiteName)){
|
18 |
+
$website = Mage::getModel('core/website')->getCollection()
|
19 |
+
->addFieldToFilter('code', $websiteName)->getFirstItem();
|
20 |
+
|
21 |
+
$client->setApiUsername(Mage::helper('connector')->getApiUsername($website));
|
22 |
+
$client->setApiPassword(Mage::helper('connector')->getApiPassword($website));
|
23 |
+
}
|
24 |
+
$campaigns = $client->getCampaigns();
|
25 |
+
|
26 |
+
foreach ($campaigns as $one){
|
27 |
+
if(isset($one->id))
|
28 |
+
$fields[] = array('value' => $one->id, 'label' => $one->name);
|
29 |
+
}
|
30 |
+
|
31 |
+
return $fields;
|
32 |
+
}
|
33 |
+
|
34 |
+
}
|
app/code/community/Dotdigitalgroup/Email/Model/System/Config/Source/Datafields.php
ADDED
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Dotdigitalgroup_Email_Model_System_Config_Source_Datafields
|
4 |
+
{
|
5 |
+
// Returns the account's datafields
|
6 |
+
public function toOptionArray()
|
7 |
+
{
|
8 |
+
$helper = Mage::helper('connector');
|
9 |
+
$fields = array();
|
10 |
+
|
11 |
+
$website = Mage::app()->getRequest()->getParam('website');
|
12 |
+
$client = Mage::getModel('connector/connector_api_client');
|
13 |
+
|
14 |
+
$client->setApiUsername($helper->getApiUsername($website));
|
15 |
+
$client->setApiPassword($helper->getApiPassword($website));
|
16 |
+
|
17 |
+
|
18 |
+
/**
|
19 |
+
* api get all datafields
|
20 |
+
*/
|
21 |
+
$datafields = $client->getDataFields();
|
22 |
+
// Add a "Do Not Map" Option
|
23 |
+
$fields[] = array('value' => 0, 'label' => 'Do Not Map');
|
24 |
+
|
25 |
+
if(isset($datafields->message)){
|
26 |
+
$fields[] = array('value' => 0, 'label' => $datafields->message);
|
27 |
+
}
|
28 |
+
|
29 |
+
|
30 |
+
foreach ($datafields as $datafield) {
|
31 |
+
if(isset($datafield->name))
|
32 |
+
$fields[] = array('value' => $datafield->name, 'label' => $datafield->name);
|
33 |
+
}
|
34 |
+
|
35 |
+
return $fields;
|
36 |
+
}
|
37 |
+
}
|
app/code/{local → community}/Dotdigitalgroup/Email/Model/System/Config/Source/Displaytype.php
RENAMED
File without changes
|
app/code/{local → community}/Dotdigitalgroup/Email/Model/System/Config/Source/Gridview.php
RENAMED
File without changes
|
app/code/{local → community}/Dotdigitalgroup/Email/Model/System/Config/Source/Lostbasket.php
RENAMED
File without changes
|
app/code/{local → community}/Dotdigitalgroup/Email/Model/System/Config/Source/Orderlimit.php
RENAMED
File without changes
|
app/code/{local → community}/Dotdigitalgroup/Email/Model/System/Config/Source/Orderstatus.php
RENAMED
File without changes
|
app/code/community/Dotdigitalgroup/Email/Model/System/Config/Source/Sendcampaignafter.php
ADDED
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Dotdigitalgroup_Email_Model_System_Config_Source_Sendcampaignafter
|
4 |
+
{
|
5 |
+
|
6 |
+
protected $times = array(1,2,3,4,5,6,12,36,48,60,72,84,96,108,120);
|
7 |
+
/**
|
8 |
+
* send to campain options hours
|
9 |
+
* @return array
|
10 |
+
*/
|
11 |
+
public function toOptionArray()
|
12 |
+
{
|
13 |
+
$result = $row = array();
|
14 |
+
$i = 0;
|
15 |
+
foreach($this->times as $one){
|
16 |
+
|
17 |
+
if($i == 0)
|
18 |
+
$row = array(
|
19 |
+
'value' => $one,
|
20 |
+
'label' => Mage::helper('connector')->__($one . ' Hour')
|
21 |
+
);
|
22 |
+
else
|
23 |
+
$row = array(
|
24 |
+
'value' => $one,
|
25 |
+
'label' => Mage::helper('connector')->__($one . ' Hours')
|
26 |
+
);
|
27 |
+
$result[] = $row;
|
28 |
+
}
|
29 |
+
|
30 |
+
return $result;
|
31 |
+
}
|
32 |
+
}
|
app/code/{local → community}/Dotdigitalgroup/Email/Model/System/Config/Source/Timeperiod.php
RENAMED
File without changes
|
app/code/community/Dotdigitalgroup/Email/controllers/Adminhtml/ConnectorController.php
ADDED
@@ -0,0 +1,135 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Dotdigitalgroup_Email_Adminhtml_ConnectorController extends Mage_Adminhtml_Controller_Action
|
4 |
+
{
|
5 |
+
/**
|
6 |
+
* Create and map datafields
|
7 |
+
*/
|
8 |
+
public function setupdatafieldsAction()
|
9 |
+
{
|
10 |
+
$result = array('errors' => false, 'message' => '');
|
11 |
+
$apiModel = Mage::getModel('connector/connector_api_client');
|
12 |
+
$redirectUrl = Mage::helper('adminhtml')->getUrl('adminhtml/system_config/edit', array('section' => 'connector_data_field_settings'));
|
13 |
+
|
14 |
+
// get all possible datatifileds
|
15 |
+
$datafields = Mage::helper('connector')->getDatafields();
|
16 |
+
foreach ($datafields as $key => $datafield){
|
17 |
+
$responce = $apiModel->postDataFields($datafield);
|
18 |
+
|
19 |
+
if(isset($responce->message)){
|
20 |
+
$result['errors'] = true;
|
21 |
+
$result['message'] .= 'Datafield ' . $datafield['name'] . ' - '. $responce->message . '</br>';
|
22 |
+
}else{
|
23 |
+
//map the succesful created datafield
|
24 |
+
$config = new Mage_Core_Model_Config();
|
25 |
+
//@todo check scope
|
26 |
+
$config->saveConfig('connector_data_field_settings/customer_data/' . $key, strtoupper($datafield['name']));
|
27 |
+
|
28 |
+
// clean config cache
|
29 |
+
Mage::getConfig()->cleanCache();
|
30 |
+
|
31 |
+
Mage::helper('connector')->log('successfully connected : ' . $datafield['name']);
|
32 |
+
}
|
33 |
+
}
|
34 |
+
if($result['errors'])
|
35 |
+
Mage::getSingleton('adminhtml/session')->addNotice($result['message']);
|
36 |
+
else{
|
37 |
+
Mage::getSingleton('adminhtml/session')->addSuccess('All Datafields Created And Mapped.');
|
38 |
+
}
|
39 |
+
|
40 |
+
$this->_redirectUrl($redirectUrl);
|
41 |
+
}
|
42 |
+
|
43 |
+
public function connectAction()
|
44 |
+
{
|
45 |
+
$params = $this->getRequest()->getParams();
|
46 |
+
$apiModel = Mage::getModel('connector/api');
|
47 |
+
$helper = Mage::helper('connector');
|
48 |
+
$testModel = Mage::getModel('connector/connector_test');
|
49 |
+
|
50 |
+
if(isset($params['store'])){
|
51 |
+
|
52 |
+
//store level
|
53 |
+
$store = $params['store'];
|
54 |
+
$apiUsername = $helper->getApiUsername($store);
|
55 |
+
$apiPassword = $helper->getApiPassword($store);
|
56 |
+
$store = Mage::getModel('core/store')->load($store);
|
57 |
+
|
58 |
+
|
59 |
+
$apiModel->setStoreId($store->getId());
|
60 |
+
}elseif(isset($params['website'])){
|
61 |
+
//website level
|
62 |
+
$website = $params['website'];
|
63 |
+
$apiUsername = $helper->getApiUsername($website, 'website');
|
64 |
+
$apiPassword = $helper->getApiPassword($website, 'website');
|
65 |
+
$website = Mage::getModel('core/website')->load($website);
|
66 |
+
$apiModel->setWebsiteId($website->getId());
|
67 |
+
$helper->log('connect website account');
|
68 |
+
}else{
|
69 |
+
//admin level
|
70 |
+
$apiUsername = $helper->getApiUsername();
|
71 |
+
$apiPassword = $helper->getApiPassword();
|
72 |
+
$helper->log('connect default account');
|
73 |
+
}
|
74 |
+
|
75 |
+
$testResult = $testModel->validate($apiUsername, $apiPassword);
|
76 |
+
if(isset($testResult->message)){
|
77 |
+
$helper->log("VALIDATE " . $testResult->message);
|
78 |
+
}else{
|
79 |
+
|
80 |
+
// save api data
|
81 |
+
$apiModel->setApiUsername($apiUsername)
|
82 |
+
->setModifiedAt(Varien_Date::now())
|
83 |
+
->setData('api_password', $apiPassword);
|
84 |
+
|
85 |
+
$apiModel->save();
|
86 |
+
}
|
87 |
+
|
88 |
+
$this->_redirectReferer();
|
89 |
+
}
|
90 |
+
|
91 |
+
|
92 |
+
public function forcecustomersyncAction()
|
93 |
+
{
|
94 |
+
$website = $this->getRequest()->getParam('website');
|
95 |
+
$store = $this->getRequest()->getParam('store');
|
96 |
+
|
97 |
+
$result = Mage::getModel('connector/customer_customer')->forceSync($store, $website);
|
98 |
+
|
99 |
+
|
100 |
+
Mage::getSingleton('adminhtml/session')->addSuccess('Number of Customers : ' . $result['customers'] . ', Subscribers : ' . $result['subscribers']);
|
101 |
+
|
102 |
+
$this->_redirectReferer();
|
103 |
+
}
|
104 |
+
|
105 |
+
public function resetordersAction()
|
106 |
+
{
|
107 |
+
$emailOrders = Mage::getModel('connector/email_order')->getCollection()
|
108 |
+
->addFieldToFilter('email_imported', array('notnull' => true));
|
109 |
+
|
110 |
+
try{
|
111 |
+
foreach ($emailOrders as $order) {
|
112 |
+
$order->setEmailImported(null)->save();
|
113 |
+
}
|
114 |
+
|
115 |
+
}catch(Exception $e){
|
116 |
+
Mage::helper('connector')->log($e->getMessage());
|
117 |
+
}
|
118 |
+
Mage::getSingleton('adminhtml/session')->addSuccess('Done.');
|
119 |
+
|
120 |
+
$this->_redirectReferer();
|
121 |
+
}
|
122 |
+
|
123 |
+
public function suppresscontactsAction()
|
124 |
+
{
|
125 |
+
Mage::helper('connector')->log('start force suppress');
|
126 |
+
//forcesync subscribers
|
127 |
+
Mage::getModel('connector/newsletter_subscriber')
|
128 |
+
->unsubscribe(true);
|
129 |
+
Mage::helper('connector')->log('end force suppresssed sync.');
|
130 |
+
Mage::getSingleton('adminhtml/session')->addSuccess('Done.');
|
131 |
+
$this->_redirectReferer();
|
132 |
+
|
133 |
+
}
|
134 |
+
|
135 |
+
}
|
app/code/community/Dotdigitalgroup/Email/controllers/Adminhtml/DebugController.php
ADDED
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Dotdigitalgroup_Email_Adminhtml_DebugController extends Mage_Adminhtml_Controller_Action
|
4 |
+
{
|
5 |
+
public function deletecontactidsAction()
|
6 |
+
{
|
7 |
+
$contactCollection = Mage::getModel('connector/email_contact')->getCollection()
|
8 |
+
->addFieldToFilter('contact_id', array('neq' => null))
|
9 |
+
;
|
10 |
+
$numUpdated = 0;
|
11 |
+
|
12 |
+
foreach($contactCollection as $contact){
|
13 |
+
|
14 |
+
try{
|
15 |
+
|
16 |
+
$contact->setContactId(Dotdigitalgroup_Email_Model_Email_Contact::EMAIL_CONTACT_NOT_IMPORTED)->save();
|
17 |
+
}catch (Exception $e){
|
18 |
+
Mage::helper('connector')->log($e->getMessage());
|
19 |
+
}
|
20 |
+
$numUpdated++;
|
21 |
+
}
|
22 |
+
|
23 |
+
if($numUpdated)
|
24 |
+
Mage::getModel('adminhtml/session')->addSuccess('Number Of Contacts Id Removed: '. $numUpdated);
|
25 |
+
$this->_redirectReferer();
|
26 |
+
}
|
27 |
+
|
28 |
+
public function countcontactsAction()
|
29 |
+
{
|
30 |
+
$total = Mage::getModel('customer/customer')->getCollection()->getSize();
|
31 |
+
|
32 |
+
$contactsSize = Mage::helper('connector')->countCustomersWithContactId();
|
33 |
+
|
34 |
+
Mage::getModel('adminhtml/session')->addSuccess('Customers Total No: ' . $total . '</br> Customers With Contact Id No: ' . $contactsSize);
|
35 |
+
$this->_redirectReferer();
|
36 |
+
}
|
37 |
+
|
38 |
+
public function ajaxvalidationAction()
|
39 |
+
{
|
40 |
+
$params = $this->getRequest()->getParams();
|
41 |
+
|
42 |
+
$apiUsername = $params['api_username'];
|
43 |
+
$apiPassword = $params['api_password'];
|
44 |
+
$message = Mage::getModel('connector/connector_test')->ajaxvalidate($apiUsername, $apiPassword);
|
45 |
+
|
46 |
+
$this->getResponse()->setBody(Mage::helper('core')->jsonEncode($message));
|
47 |
+
}
|
48 |
+
}
|
app/code/community/Dotdigitalgroup/Email/controllers/CustomerController.php
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Dotdigitalgroup_Email_CustomerController extends Mage_Core_Controller_Front_Action
|
4 |
+
{
|
5 |
+
public function newAction()
|
6 |
+
{
|
7 |
+
Mage::helper('connector')->auth($this->getRequest()->getParam('code'));
|
8 |
+
$this->loadLayout();
|
9 |
+
$this->renderLayout();
|
10 |
+
}
|
11 |
+
}
|
app/code/community/Dotdigitalgroup/Email/controllers/EmailController.php
ADDED
@@ -0,0 +1,70 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Dotdigitalgroup_Email_EmailController extends Mage_Core_Controller_Front_Action
|
4 |
+
{
|
5 |
+
public function indexAction()
|
6 |
+
{
|
7 |
+
//Get current layout state
|
8 |
+
$this->loadLayout();
|
9 |
+
$this->renderLayout();
|
10 |
+
}
|
11 |
+
|
12 |
+
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Params
|
16 |
+
* code - security check
|
17 |
+
* order - order id
|
18 |
+
* products type :
|
19 |
+
* 1.related
|
20 |
+
* 2.upsell
|
21 |
+
* 3.cross sell
|
22 |
+
* 4.best sellers
|
23 |
+
* 5.most viewed
|
24 |
+
* 6.recently viewed
|
25 |
+
*
|
26 |
+
*/
|
27 |
+
public function productsAction()
|
28 |
+
{
|
29 |
+
//get all params
|
30 |
+
$params = $this->getRequest()->getParams();
|
31 |
+
|
32 |
+
if(!isset($params['code']) || !isset($params['mode'])){
|
33 |
+
|
34 |
+
exit();
|
35 |
+
}
|
36 |
+
//authenticate before proceed
|
37 |
+
Mage::helper('connector')->auth($params['code']);
|
38 |
+
Mage::register('mode', $params['mode']);
|
39 |
+
if(isset($params['customer']))
|
40 |
+
Mage::register('customer', $params['customer']);
|
41 |
+
$this->loadLayout();
|
42 |
+
$this->renderLayout();
|
43 |
+
|
44 |
+
}
|
45 |
+
|
46 |
+
public function couponAction()
|
47 |
+
{
|
48 |
+
$this->loadLayout();
|
49 |
+
$this->renderLayout();
|
50 |
+
}
|
51 |
+
public function basketAction()
|
52 |
+
{
|
53 |
+
$this->loadLayout();
|
54 |
+
$this->renderLayout();
|
55 |
+
}
|
56 |
+
|
57 |
+
public function logAction()
|
58 |
+
{
|
59 |
+
//file name param
|
60 |
+
$file = $this->getRequest()->getParam('file');
|
61 |
+
$fileName = $file . '.log';
|
62 |
+
$filePath = Mage::getBaseDir('log') . DIRECTORY_SEPARATOR . $fileName;
|
63 |
+
|
64 |
+
$this->_prepareDownloadResponse($fileName, array(
|
65 |
+
'type' => 'filename',
|
66 |
+
'value' => $filePath
|
67 |
+
));
|
68 |
+
exit();
|
69 |
+
}
|
70 |
+
}
|
app/code/community/Dotdigitalgroup/Email/controllers/OrderController.php
ADDED
@@ -0,0 +1,65 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Dotdigitalgroup_Email_OrderController extends Mage_Core_Controller_Front_Action
|
4 |
+
{
|
5 |
+
public function newAction()
|
6 |
+
{
|
7 |
+
|
8 |
+
Mage::helper('connector')->auth($this->getRequest()->getParam('code'));
|
9 |
+
$this->loadLayout();
|
10 |
+
$this->renderLayout();
|
11 |
+
|
12 |
+
}
|
13 |
+
|
14 |
+
public function customerRegAction()
|
15 |
+
{
|
16 |
+
Mage::helper('connector')->auth($this->getRequest()->getParam('code'));
|
17 |
+
$this->loadLayout();
|
18 |
+
$this->renderLayout();
|
19 |
+
}
|
20 |
+
|
21 |
+
public function registrationAction()
|
22 |
+
{
|
23 |
+
$this->loadLayout();
|
24 |
+
$this->renderLayout();
|
25 |
+
}
|
26 |
+
|
27 |
+
public function creditmemoAction()
|
28 |
+
{
|
29 |
+
Mage::helper('connector')->auth($this->getRequest()->getParam('code'));
|
30 |
+
$orderId = $this->getRequest()->getParam('id');
|
31 |
+
$order = Mage::getModel('sales/order')->load($orderId);
|
32 |
+
|
33 |
+
//look for refund order
|
34 |
+
if(! $order->hasCreditmemos())
|
35 |
+
exit();
|
36 |
+
|
37 |
+
Mage::register('current_order', $order);
|
38 |
+
|
39 |
+
$this->loadLayout();
|
40 |
+
$this->renderLayout();
|
41 |
+
}
|
42 |
+
|
43 |
+
public function invoiceAction()
|
44 |
+
{
|
45 |
+
//Mage::helper('connector')->auth($this->getRequest()->getParam('code'));
|
46 |
+
$orderId = $this->getRequest()->getParam('id');
|
47 |
+
$orderModel = Mage::getModel('sales/order')->load($orderId);
|
48 |
+
|
49 |
+
if(! $orderModel->hasInvoices())
|
50 |
+
exit();
|
51 |
+
Mage::register('current_order', $orderModel);
|
52 |
+
|
53 |
+
$this->loadLayout();
|
54 |
+
$this->renderLayout();
|
55 |
+
}
|
56 |
+
|
57 |
+
public function updateAction()
|
58 |
+
{
|
59 |
+
Mage::helper('connector')->auth($this->getRequest()->getParam('code'));
|
60 |
+
$this->loadLayout();
|
61 |
+
$this->renderLayout();
|
62 |
+
|
63 |
+
}
|
64 |
+
|
65 |
+
}
|
app/code/{local → community}/Dotdigitalgroup/Email/etc/adminhtml.xml
RENAMED
@@ -7,10 +7,10 @@
|
|
7 |
<system>
|
8 |
<children>
|
9 |
<config>
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
<connector_sync_settings translate="title">
|
15 |
<title><![CDATA[Sync Settings]]></title>
|
16 |
</connector_sync_settings>
|
@@ -26,13 +26,16 @@
|
|
26 |
<sms_section translate="title">
|
27 |
<title><![CDATA[SMS Section]]></title>
|
28 |
</sms_section>
|
29 |
-
<dynamic_content translate="
|
30 |
<title><![CDATA[Dynamic Content]]></title>
|
31 |
</dynamic_content>
|
|
|
|
|
|
|
32 |
<connector_advanced_settings translate="title">
|
33 |
<title><![CDATA[Advanced Settings]]></title>
|
34 |
</connector_advanced_settings>
|
35 |
-
|
36 |
</config>
|
37 |
</children>
|
38 |
</system>
|
7 |
<system>
|
8 |
<children>
|
9 |
<config>
|
10 |
+
<children>
|
11 |
+
<connector_api_settings translate="title">
|
12 |
+
<title><![CDATA[API Credentials]]></title>
|
13 |
+
</connector_api_settings>
|
14 |
<connector_sync_settings translate="title">
|
15 |
<title><![CDATA[Sync Settings]]></title>
|
16 |
</connector_sync_settings>
|
26 |
<sms_section translate="title">
|
27 |
<title><![CDATA[SMS Section]]></title>
|
28 |
</sms_section>
|
29 |
+
<dynamic_content translate="title">
|
30 |
<title><![CDATA[Dynamic Content]]></title>
|
31 |
</dynamic_content>
|
32 |
+
<transactional_emails translate="title">
|
33 |
+
<title><![CDATA[Transactional Email]]></title>
|
34 |
+
</transactional_emails>
|
35 |
<connector_advanced_settings translate="title">
|
36 |
<title><![CDATA[Advanced Settings]]></title>
|
37 |
</connector_advanced_settings>
|
38 |
+
</children>
|
39 |
</config>
|
40 |
</children>
|
41 |
</system>
|
app/code/community/Dotdigitalgroup/Email/etc/config.xml
ADDED
@@ -0,0 +1,464 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<Dotdigitalgroup_Email>
|
5 |
+
<version>2.0.4</version>
|
6 |
+
</Dotdigitalgroup_Email>
|
7 |
+
</modules>
|
8 |
+
<frontend>
|
9 |
+
<routers>
|
10 |
+
<connector>
|
11 |
+
<use>standard</use>
|
12 |
+
<args>
|
13 |
+
<module>Dotdigitalgroup_Email</module>
|
14 |
+
<frontName>connector</frontName>
|
15 |
+
</args>
|
16 |
+
</connector>
|
17 |
+
</routers>
|
18 |
+
<layout>
|
19 |
+
<updates>
|
20 |
+
<connector>
|
21 |
+
<file>connector.xml</file>
|
22 |
+
</connector>
|
23 |
+
</updates>
|
24 |
+
</layout>
|
25 |
+
</frontend>
|
26 |
+
<global>
|
27 |
+
<models>
|
28 |
+
<connector>
|
29 |
+
<class>Dotdigitalgroup_Email_Model</class>
|
30 |
+
<resourceModel>connector_resource</resourceModel>
|
31 |
+
</connector>
|
32 |
+
<connector_resource>
|
33 |
+
<class>Dotdigitalgroup_Email_Model_Resource</class>
|
34 |
+
<entities>
|
35 |
+
<email_order>
|
36 |
+
<table>email_order</table>
|
37 |
+
</email_order>
|
38 |
+
<email_contact>
|
39 |
+
<table>email_contact</table>
|
40 |
+
</email_contact>
|
41 |
+
<email_send>
|
42 |
+
<table>email_send</table>
|
43 |
+
</email_send>
|
44 |
+
</entities>
|
45 |
+
</connector_resource>
|
46 |
+
<resources>
|
47 |
+
<connector_setup>
|
48 |
+
<setup>
|
49 |
+
<module>Dotdigitalgroup_Email</module>
|
50 |
+
<class>Dotdigitalgroup_Email_Model_Resource_Setup</class>
|
51 |
+
</setup>
|
52 |
+
<connection>
|
53 |
+
<use>core_setup</use>
|
54 |
+
</connection>
|
55 |
+
</connector_setup>
|
56 |
+
<connector_api_write>
|
57 |
+
<connection>
|
58 |
+
<use>core_write</use>
|
59 |
+
</connection>
|
60 |
+
</connector_api_write>
|
61 |
+
<connector_api_read>
|
62 |
+
<connection>
|
63 |
+
<use>core_read</use>
|
64 |
+
</connection>
|
65 |
+
</connector_api_read>
|
66 |
+
</resources>
|
67 |
+
<sales>
|
68 |
+
<rewrite>
|
69 |
+
<order>Dotdigitalgroup_Email_Model_Sales_Order_State</order>
|
70 |
+
</rewrite>
|
71 |
+
</sales>
|
72 |
+
</models>
|
73 |
+
<helpers>
|
74 |
+
<connector>
|
75 |
+
<class>Dotdigitalgroup_Email_Helper</class>
|
76 |
+
</connector>
|
77 |
+
</helpers>
|
78 |
+
<blocks>
|
79 |
+
<connector>
|
80 |
+
<class>Dotdigitalgroup_Email_Block</class>
|
81 |
+
</connector>
|
82 |
+
</blocks>
|
83 |
+
<resources>
|
84 |
+
<connector_setup>
|
85 |
+
<setup>
|
86 |
+
<module>Dotdigitalgroup_Email</module>
|
87 |
+
<class>Mage_Sales_Model_Mysql4_Setup</class>
|
88 |
+
</setup>
|
89 |
+
<connection>
|
90 |
+
<use>core_setup</use>
|
91 |
+
</connection>
|
92 |
+
</connector_setup>
|
93 |
+
<customer_write>
|
94 |
+
<connection>
|
95 |
+
<use>core_write</use>
|
96 |
+
</connection>
|
97 |
+
</customer_write>
|
98 |
+
<customer_read>
|
99 |
+
<connection>
|
100 |
+
<use>core_read</use>
|
101 |
+
</connection>
|
102 |
+
</customer_read>
|
103 |
+
</resources>
|
104 |
+
<events>
|
105 |
+
<admin_system_config_changed_section_connector_api_settings>
|
106 |
+
<observers>
|
107 |
+
<check_timezone_config>
|
108 |
+
<class>Dotdigitalgroup_Email_Model_Observer</class>
|
109 |
+
<method>actionConfigSaveAfter</method>
|
110 |
+
</check_timezone_config>
|
111 |
+
</observers>
|
112 |
+
</admin_system_config_changed_section_connector_api_settings>
|
113 |
+
<admin_system_config_changed_section_connector_sync_settings>
|
114 |
+
<observers>
|
115 |
+
<reset_contacts>
|
116 |
+
<class>Dotdigitalgroup_Email_Model_Observer</class>
|
117 |
+
<method>actionConfigResetContacts</method>
|
118 |
+
</reset_contacts>
|
119 |
+
</observers>
|
120 |
+
</admin_system_config_changed_section_connector_sync_settings>
|
121 |
+
<admin_system_config_changed_section_connector_data_field_settings>
|
122 |
+
<observers>
|
123 |
+
<reset_contacts_on_datamapping>
|
124 |
+
<class>Dotdigitalgroup_Email_Model_Observer</class>
|
125 |
+
<method>actionConfigResetContacts</method>
|
126 |
+
</reset_contacts_on_datamapping>
|
127 |
+
</observers>
|
128 |
+
</admin_system_config_changed_section_connector_data_field_settings>
|
129 |
+
<customer_save_after>
|
130 |
+
<observers>
|
131 |
+
<contactid>
|
132 |
+
<class>Dotdigitalgroup_Email_Model_Observer</class>
|
133 |
+
<method>handleCustomerSaveBefore</method>
|
134 |
+
</contactid>
|
135 |
+
</observers>
|
136 |
+
</customer_save_after>
|
137 |
+
<newsletter_subscriber_save_before>
|
138 |
+
<observers>
|
139 |
+
<connector_newsletter_subscriber_save_after>
|
140 |
+
<class>Dotdigitalgroup_Email_Model_Observer</class>
|
141 |
+
<method>newsletterSubscriberSave</method>
|
142 |
+
</connector_newsletter_subscriber_save_after>
|
143 |
+
</observers>
|
144 |
+
</newsletter_subscriber_save_before>
|
145 |
+
<sales_order_save_after>
|
146 |
+
<observers>
|
147 |
+
<connector_checkout_type_onepage_save_order_after>
|
148 |
+
<class>Dotdigitalgroup_Email_Model_Observer</class>
|
149 |
+
<method>handleSalesOrderSaveAfter</method>
|
150 |
+
</connector_checkout_type_onepage_save_order_after>
|
151 |
+
</observers>
|
152 |
+
</sales_order_save_after>
|
153 |
+
<!--<sales_quote_save_after>-->
|
154 |
+
<!--<observers>-->
|
155 |
+
<!--<connector_sales_quote_save_after>-->
|
156 |
+
<!--<class>Dotdigitalgroup_Email_Model_Observer</class>-->
|
157 |
+
<!--<method>handleSalesQuoteSaveAfter</method>-->
|
158 |
+
<!--</connector_sales_quote_save_after>-->
|
159 |
+
<!--</observers>-->
|
160 |
+
<!--</sales_quote_save_after>-->
|
161 |
+
<sales_order_creditmemo_save_after>
|
162 |
+
<observers>
|
163 |
+
<connector_sales_order_payment_refund>
|
164 |
+
<class>Dotdigitalgroup_Email_Model_Observer</class>
|
165 |
+
<method>handleSalesOrderRefund</method>
|
166 |
+
</connector_sales_order_payment_refund>
|
167 |
+
</observers>
|
168 |
+
</sales_order_creditmemo_save_after>
|
169 |
+
<order_cancel_after>
|
170 |
+
<observers>
|
171 |
+
<connector_sales_order_cancel>
|
172 |
+
<class>Dotdigitalgroup_Email_Model_Observer</class>
|
173 |
+
<method>hangleSalesOrderCancel</method>
|
174 |
+
</connector_sales_order_cancel>
|
175 |
+
</observers>
|
176 |
+
</order_cancel_after>
|
177 |
+
<sales_order_status_after>
|
178 |
+
<observers>
|
179 |
+
<connector_sales_order_status_change>
|
180 |
+
<class>Dotdigitalgroup_Email_Model_Observer</class>
|
181 |
+
<method>handleSalesOrderStatusChange</method>
|
182 |
+
</connector_sales_order_status_change>
|
183 |
+
</observers>
|
184 |
+
</sales_order_status_after>
|
185 |
+
</events>
|
186 |
+
</global>
|
187 |
+
<adminhtml>
|
188 |
+
<translate>
|
189 |
+
<modules>
|
190 |
+
<Dotdigitalgroup_Email>
|
191 |
+
<files>
|
192 |
+
<default>Dotdigitalgroup_Email.csv</default>
|
193 |
+
</files>
|
194 |
+
</Dotdigitalgroup_Email>
|
195 |
+
</modules>
|
196 |
+
</translate>
|
197 |
+
</adminhtml>
|
198 |
+
<admin>
|
199 |
+
<routers>
|
200 |
+
<adminhtml>
|
201 |
+
<args>
|
202 |
+
<modules>
|
203 |
+
<Dotdigitalgroup_Email before="Mage_Adminhtml">Dotdigitalgroup_Email_Adminhtml</Dotdigitalgroup_Email>
|
204 |
+
</modules>
|
205 |
+
</args>
|
206 |
+
</adminhtml>
|
207 |
+
</routers>
|
208 |
+
</admin>
|
209 |
+
<crontab>
|
210 |
+
<jobs>
|
211 |
+
<connector_email_customer_sync>
|
212 |
+
<run><model>connector/cron::contactSync</model></run>
|
213 |
+
<schedule>
|
214 |
+
<cron_expr>*/15 * * * *</cron_expr>
|
215 |
+
</schedule>
|
216 |
+
</connector_email_customer_sync>
|
217 |
+
<connector_email_subscriber_and_suppressed_sync>
|
218 |
+
<run><model>connector/cron::subscribersAndSuppressedSync</model></run>
|
219 |
+
<schedule>
|
220 |
+
<cron_expr>*/15 * * * *</cron_expr>
|
221 |
+
</schedule>
|
222 |
+
</connector_email_subscriber_and_suppressed_sync>
|
223 |
+
<connector_email_lostbaskets>
|
224 |
+
<run><model>connector/cron::lostBaskets</model></run>
|
225 |
+
<schedule>
|
226 |
+
<cron_expr>*/5 * * * *</cron_expr>
|
227 |
+
</schedule>
|
228 |
+
</connector_email_lostbaskets>
|
229 |
+
<!--<connector_email_sender>-->
|
230 |
+
<!--<run>-->
|
231 |
+
<!--<model>connector/cron::sendMail</model>-->
|
232 |
+
<!--</run>-->
|
233 |
+
<!--<schedule>-->
|
234 |
+
<!--<cron_expr>02,07,12,17,22,27,32,37,42,47,52,57 * * * *</cron_expr>-->
|
235 |
+
<!--</schedule>-->
|
236 |
+
<!--</connector_email_sender>-->
|
237 |
+
<connector_email_order_sync>
|
238 |
+
<run><model>connector/cron::orderSync</model></run>
|
239 |
+
<schedule>
|
240 |
+
<cron_expr>*/15 * * * *</cron_expr>
|
241 |
+
</schedule>
|
242 |
+
</connector_email_order_sync>
|
243 |
+
<connector_email_cleaner>
|
244 |
+
<run><model>connector/cron::cleaning</model></run>
|
245 |
+
<schedule>
|
246 |
+
<cron_expr>* * 1 * * </cron_expr>
|
247 |
+
</schedule>
|
248 |
+
</connector_email_cleaner>
|
249 |
+
</jobs>
|
250 |
+
</crontab>
|
251 |
+
<default>
|
252 |
+
<connector_api_settings>
|
253 |
+
<api_credentials>
|
254 |
+
<username></username>
|
255 |
+
<password></password>
|
256 |
+
</api_credentials>
|
257 |
+
</connector_api_settings>
|
258 |
+
<connector_sync_settings>
|
259 |
+
<sync_customer_schedule>
|
260 |
+
<enabled>0</enabled>
|
261 |
+
<time></time>
|
262 |
+
<frequency></frequency>
|
263 |
+
<cronschedule></cronschedule>
|
264 |
+
</sync_customer_schedule>
|
265 |
+
<sync_suppressed_schedule>
|
266 |
+
<enabled>0</enabled>
|
267 |
+
<time></time>
|
268 |
+
<frequency></frequency>
|
269 |
+
<cronschedulesupp></cronschedulesupp>
|
270 |
+
</sync_suppressed_schedule>
|
271 |
+
<transactional_data>
|
272 |
+
<order_enabled>0</order_enabled>
|
273 |
+
<wishlist_enabled>0</wishlist_enabled>
|
274 |
+
</transactional_data>
|
275 |
+
</connector_sync_settings>
|
276 |
+
<connector_data_field_settings>
|
277 |
+
<customer_data>
|
278 |
+
<customer_id></customer_id>
|
279 |
+
<title></title>
|
280 |
+
<firstname></firstname>
|
281 |
+
<lastname></lastname>
|
282 |
+
<dob></dob>
|
283 |
+
<gender></gender>
|
284 |
+
<website_name></website_name>
|
285 |
+
<store_name></store_name>
|
286 |
+
<customer_created_date></customer_created_date>
|
287 |
+
<last_logged_in></last_logged_in>
|
288 |
+
<customer_group></customer_group>
|
289 |
+
<address_title></address_title>
|
290 |
+
<billing_address_1></billing_address_1>
|
291 |
+
<billing_address_2></billing_address_2>
|
292 |
+
<billing_city></billing_city>
|
293 |
+
<billing_state></billing_state>
|
294 |
+
<billing_country></billing_country>
|
295 |
+
<billing_postcode></billing_postcode>
|
296 |
+
<billing_telephone></billing_telephone>
|
297 |
+
<delivery_address_1></delivery_address_1>
|
298 |
+
<delivery_address_2></delivery_address_2>
|
299 |
+
<delivery_city></delivery_city>
|
300 |
+
<delivery_state></delivery_state>
|
301 |
+
<delivery_country></delivery_country>
|
302 |
+
<delivery_postcode></delivery_postcode>
|
303 |
+
<delivery_telephone></delivery_telephone>
|
304 |
+
<total_orders></total_orders>
|
305 |
+
<average_order_value></average_order_value>
|
306 |
+
<total_spend></total_spend>
|
307 |
+
<last_order></last_order>
|
308 |
+
<last_order_no></last_order_no>
|
309 |
+
</customer_data>
|
310 |
+
<address_book>
|
311 |
+
<customers></customers>
|
312 |
+
<subscribers></subscribers>
|
313 |
+
<guest></guest>
|
314 |
+
</address_book>
|
315 |
+
</connector_data_field_settings>
|
316 |
+
<connector_roi_page_tracking_settings>
|
317 |
+
<page_tracking>
|
318 |
+
<enabled>0</enabled>
|
319 |
+
</page_tracking>
|
320 |
+
<roi_tracking>
|
321 |
+
<enabled>0</enabled>
|
322 |
+
</roi_tracking>
|
323 |
+
</connector_roi_page_tracking_settings>
|
324 |
+
<connector_newsletter_subscription_settings>
|
325 |
+
<customers_subscription_management>
|
326 |
+
<default></default>
|
327 |
+
</customers_subscription_management>
|
328 |
+
<subscribers_subscription_management>
|
329 |
+
<default></default>
|
330 |
+
</subscribers_subscription_management>
|
331 |
+
</connector_newsletter_subscription_settings>
|
332 |
+
<lost_basket_settings>
|
333 |
+
<active><active></active></active>
|
334 |
+
<customers>
|
335 |
+
<enabled_1>0</enabled_1>
|
336 |
+
<send_after_1></send_after_1>
|
337 |
+
<campaign_1></campaign_1>
|
338 |
+
<enabled_2>0</enabled_2>
|
339 |
+
<send_after_2></send_after_2>
|
340 |
+
<campaign_2></campaign_2>
|
341 |
+
<enabled_3>0</enabled_3>
|
342 |
+
<send_after_3></send_after_3>
|
343 |
+
<campaign_3></campaign_3>
|
344 |
+
</customers>
|
345 |
+
<guests>
|
346 |
+
<enabled_1>0</enabled_1>
|
347 |
+
<send_after_1></send_after_1>
|
348 |
+
<campaign_1></campaign_1>
|
349 |
+
<enabled_2>0</enabled_2>
|
350 |
+
<send_after_2></send_after_2>
|
351 |
+
<campaign_2></campaign_2>
|
352 |
+
<enabled_3>0</enabled_3>
|
353 |
+
<send_after_3></send_after_3>
|
354 |
+
<campaign_3></campaign_3>
|
355 |
+
</guests>
|
356 |
+
<test>
|
357 |
+
<email></email>
|
358 |
+
</test>
|
359 |
+
</lost_basket_settings>
|
360 |
+
<sms_section>
|
361 |
+
<sms_message_one>
|
362 |
+
<enabled>0</enabled>
|
363 |
+
<order_status></order_status>
|
364 |
+
<message></message>
|
365 |
+
</sms_message_one>
|
366 |
+
<sms_message_two>
|
367 |
+
<enabled>0</enabled>
|
368 |
+
<order_status></order_status>
|
369 |
+
<message></message>
|
370 |
+
</sms_message_two>
|
371 |
+
<sms_message_three>
|
372 |
+
<enabled>0</enabled>
|
373 |
+
<order_status></order_status>
|
374 |
+
<message></message>
|
375 |
+
</sms_message_three>
|
376 |
+
<sms_message_four>
|
377 |
+
<enabled>0</enabled>
|
378 |
+
<order_status></order_status>
|
379 |
+
<message></message>
|
380 |
+
</sms_message_four>
|
381 |
+
</sms_section>
|
382 |
+
<dynamic_content>
|
383 |
+
<products>
|
384 |
+
<related_display_type>list</related_display_type>
|
385 |
+
<related_items_to_display>2</related_items_to_display>
|
386 |
+
<upsell_display_type>list</upsell_display_type>
|
387 |
+
<upsell_items_to_display>2</upsell_items_to_display>
|
388 |
+
<crosssell_display_type>list</crosssell_display_type>
|
389 |
+
<crosssell_items_to_display>2</crosssell_items_to_display>
|
390 |
+
<best_display_type>list</best_display_type>
|
391 |
+
<best_items_to_display>2</best_items_to_display>
|
392 |
+
<most_viewed_display_type>list</most_viewed_display_type>
|
393 |
+
<most_viewed_items_to_display>2</most_viewed_items_to_display>
|
394 |
+
<recently_viewed_display_type>list</recently_viewed_display_type>
|
395 |
+
<recently_viewed_items_to_display>2</recently_viewed_items_to_display>
|
396 |
+
</products>
|
397 |
+
<manual_product_search>
|
398 |
+
<display_type>list</display_type>
|
399 |
+
<items_to_display>2</items_to_display>
|
400 |
+
<products_push_items></products_push_items>
|
401 |
+
</manual_product_search>
|
402 |
+
<fallback_products>
|
403 |
+
<product_list></product_list>
|
404 |
+
</fallback_products>
|
405 |
+
</dynamic_content>
|
406 |
+
<transactional_emails>
|
407 |
+
<transactional_email>
|
408 |
+
<api_username></api_username>
|
409 |
+
<api_password></api_password>
|
410 |
+
</transactional_email>
|
411 |
+
<email_mapping>
|
412 |
+
<new_creditmemo></new_creditmemo>
|
413 |
+
<new_creditmemo_guest></new_creditmemo_guest>
|
414 |
+
<creditmemo></creditmemo>
|
415 |
+
<new_invoice></new_invoice>
|
416 |
+
<invoice_update></invoice_update>
|
417 |
+
<new_order></new_order>
|
418 |
+
<order_update></order_update>
|
419 |
+
<new_shipment></new_shipment>
|
420 |
+
<shipment_update></shipment_update>
|
421 |
+
<customer_emails_heading></customer_emails_heading>
|
422 |
+
<password_remind></password_remind>
|
423 |
+
<forgot_password></forgot_password>
|
424 |
+
<new_account></new_account>
|
425 |
+
</email_mapping>
|
426 |
+
</transactional_emails>
|
427 |
+
<connector_advanced_settings>
|
428 |
+
<sync_limits>
|
429 |
+
<orders>500</orders>
|
430 |
+
</sync_limits>
|
431 |
+
<external>
|
432 |
+
<passcode>secret</passcode>
|
433 |
+
<lost_basket_url></lost_basket_url>
|
434 |
+
<coupon_code_title></coupon_code_title>
|
435 |
+
<coupon_code_url></coupon_code_url>
|
436 |
+
<dynamic_content_url></dynamic_content_url>
|
437 |
+
<related_products_url></related_products_url>
|
438 |
+
<upsell_products_url></upsell_products_url>
|
439 |
+
<crosssell_products_url></crosssell_products_url>
|
440 |
+
<best_sellers_url></best_sellers_url>
|
441 |
+
<most_viewed_url></most_viewed_url>
|
442 |
+
<product_push_url></product_push_url>
|
443 |
+
<recently_viewed_url></recently_viewed_url>
|
444 |
+
<transactional_customer_new></transactional_customer_new>
|
445 |
+
<transactional_order_new></transactional_order_new>
|
446 |
+
<transactional_order_creditmemo_new></transactional_order_creditmemo_new>
|
447 |
+
<transactional_order_update></transactional_order_update>
|
448 |
+
<transactional_invoice_new></transactional_invoice_new>
|
449 |
+
</external>
|
450 |
+
<admin>
|
451 |
+
<memory_limit>0</memory_limit>
|
452 |
+
<batch_size>10000</batch_size>
|
453 |
+
<debug>0</debug>
|
454 |
+
</admin>
|
455 |
+
</connector_advanced_settings>
|
456 |
+
</default>
|
457 |
+
<phpunit>
|
458 |
+
<suite>
|
459 |
+
<modules>
|
460 |
+
<Dotdigitalgroup_Email />
|
461 |
+
</modules>
|
462 |
+
</suite>
|
463 |
+
</phpunit>
|
464 |
+
</config>
|
app/code/{local → community}/Dotdigitalgroup/Email/etc/system.xml
RENAMED
@@ -1,13 +1,13 @@
|
|
1 |
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
<config>
|
3 |
<tabs>
|
4 |
-
<connector translate="label">
|
5 |
<label>EMAIL</label>
|
6 |
<sort_order>1000</sort_order>
|
7 |
</connector>
|
8 |
</tabs>
|
9 |
<sections>
|
10 |
-
<connector_api_settings translate="label">
|
11 |
<label><![CDATA[API Credentials]]></label>
|
12 |
<tab>connector</tab>
|
13 |
<frontend_type>text</frontend_type>
|
@@ -16,7 +16,7 @@
|
|
16 |
<show_in_website>1</show_in_website>
|
17 |
<show_in_store>0</show_in_store>
|
18 |
<groups>
|
19 |
-
<api_credentials>
|
20 |
<label>API Settings</label>
|
21 |
<frontend_type>text</frontend_type>
|
22 |
<sort_order>10</sort_order>
|
@@ -25,36 +25,37 @@
|
|
25 |
<show_in_store>0</show_in_store>
|
26 |
<expanded>1</expanded>
|
27 |
<fields>
|
28 |
-
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
<label>API Username</label>
|
30 |
<frontend_type>text</frontend_type>
|
31 |
<frontend_model>connector/adminhtml_system_config_wrapper</frontend_model>
|
32 |
-
<sort_order>
|
33 |
<show_in_default>1</show_in_default>
|
34 |
<show_in_website>1</show_in_website>
|
35 |
<show_in_store>0</show_in_store>
|
|
|
36 |
<validate>validate-length minimum-length-36</validate>
|
37 |
</username>
|
38 |
-
<password>
|
39 |
<label>API Password</label>
|
40 |
<frontend_type>password</frontend_type>
|
41 |
-
<frontend_model>connector/
|
42 |
-
<sort_order>20</sort_order>
|
43 |
-
<show_in_default>1</show_in_default>
|
44 |
-
<show_in_website>1</show_in_website>
|
45 |
-
<show_in_store>0</show_in_store>
|
46 |
-
</password>
|
47 |
-
<initialsync translate="label">
|
48 |
-
<label>Test API Credentials</label>
|
49 |
-
<frontend_model>connector/debug_testcredentials</frontend_model>
|
50 |
<sort_order>30</sort_order>
|
51 |
<show_in_default>1</show_in_default>
|
52 |
<show_in_website>1</show_in_website>
|
53 |
<show_in_store>0</show_in_store>
|
54 |
-
<
|
55 |
-
</
|
56 |
<validator>
|
57 |
-
<label></label>
|
58 |
<frontend_type>hidden</frontend_type>
|
59 |
<frontend_model>connector/adminhtml_system_config_waitingfield</frontend_model>
|
60 |
<sort_order>50</sort_order>
|
@@ -67,10 +68,8 @@
|
|
67 |
</api_credentials>
|
68 |
</groups>
|
69 |
</connector_api_settings>
|
70 |
-
<connector_sync_settings translate="label">
|
71 |
-
<!-- you can put anything inbetween the CDATA tags (including image tags) -->
|
72 |
<label><![CDATA[Sync Settings]]></label>
|
73 |
-
<!-- this relates to the value in tab -->
|
74 |
<tab>connector</tab>
|
75 |
<frontend_type>text</frontend_type>
|
76 |
<sort_order>3000</sort_order>
|
@@ -78,69 +77,45 @@
|
|
78 |
<show_in_website>1</show_in_website>
|
79 |
<show_in_store>0</show_in_store>
|
80 |
<groups>
|
81 |
-
<
|
82 |
-
<label>
|
83 |
-
<frontend_type>text</frontend_type>
|
84 |
<sort_order>10</sort_order>
|
85 |
<show_in_default>1</show_in_default>
|
86 |
<show_in_website>1</show_in_website>
|
87 |
<show_in_store>0</show_in_store>
|
88 |
<expanded>1</expanded>
|
89 |
<fields>
|
90 |
-
<
|
91 |
-
<label>
|
92 |
<frontend_type>select</frontend_type>
|
93 |
-
<source_model>
|
94 |
<sort_order>10</sort_order>
|
95 |
<show_in_default>1</show_in_default>
|
96 |
<show_in_website>1</show_in_website>
|
97 |
<show_in_store>0</show_in_store>
|
98 |
-
</
|
99 |
-
<
|
100 |
-
<label>
|
101 |
-
<frontend_type>
|
102 |
-
<
|
103 |
<sort_order>20</sort_order>
|
104 |
<show_in_default>1</show_in_default>
|
105 |
-
<show_in_website>
|
106 |
<show_in_store>0</show_in_store>
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
<label>Frequency</label>
|
111 |
<frontend_type>select</frontend_type>
|
112 |
-
<source_model>connector/
|
113 |
-
<backend_model>connector/system_config_backend_syncschedule_customer</backend_model>
|
114 |
<sort_order>30</sort_order>
|
115 |
<show_in_default>1</show_in_default>
|
116 |
-
<show_in_website>
|
117 |
-
<show_in_store>0</show_in_store>
|
118 |
-
<comment>Note: For Weekly and Monthly frequency, the day of the week/month will be today</comment>
|
119 |
-
<depends><enabled>1</enabled></depends>
|
120 |
-
</frequency>
|
121 |
-
<force_sync translate="label">
|
122 |
-
<label></label>
|
123 |
-
<frontend_model>connector/debug_forcecustomersync</frontend_model>
|
124 |
-
<sort_order>50</sort_order>
|
125 |
-
<show_in_default>1</show_in_default>
|
126 |
-
<show_in_website>0</show_in_website>
|
127 |
-
<show_in_store>0</show_in_store>
|
128 |
-
<comment>Use this button force the data synchronization to run now</comment>
|
129 |
-
</force_sync>
|
130 |
-
<validator>
|
131 |
-
<label></label>
|
132 |
-
<frontend_type>hidden</frontend_type>
|
133 |
-
<frontend_model>connector/adminhtml_system_config_waitingfield</frontend_model>
|
134 |
-
<sort_order>60</sort_order>
|
135 |
-
<show_in_default>1</show_in_default>
|
136 |
-
<show_in_website>0</show_in_website>
|
137 |
<show_in_store>0</show_in_store>
|
138 |
-
|
139 |
-
</validator>
|
140 |
</fields>
|
141 |
-
</
|
142 |
-
<
|
143 |
-
<label>
|
144 |
<frontend_type>text</frontend_type>
|
145 |
<sort_order>20</sort_order>
|
146 |
<show_in_default>1</show_in_default>
|
@@ -148,95 +123,88 @@
|
|
148 |
<show_in_store>0</show_in_store>
|
149 |
<expanded>1</expanded>
|
150 |
<fields>
|
151 |
-
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
152 |
<label>Enabled</label>
|
153 |
<frontend_type>select</frontend_type>
|
154 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
155 |
-
<sort_order>
|
156 |
<show_in_default>1</show_in_default>
|
157 |
<show_in_website>1</show_in_website>
|
158 |
<show_in_store>0</show_in_store>
|
159 |
-
</
|
160 |
-
<
|
161 |
-
<label>
|
162 |
-
<
|
163 |
-
<
|
164 |
-
<sort_order>3</sort_order>
|
165 |
<show_in_default>1</show_in_default>
|
166 |
-
<show_in_website>
|
167 |
<show_in_store>0</show_in_store>
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
<label>Frequency</label>
|
172 |
<frontend_type>select</frontend_type>
|
173 |
-
<source_model>
|
174 |
-
<
|
175 |
-
<sort_order>4</sort_order>
|
176 |
-
<show_in_default>1</show_in_default>
|
177 |
-
<show_in_website>0</show_in_website>
|
178 |
-
<show_in_store>0</show_in_store>
|
179 |
-
<comment>Note: For Weekly and Monthly frequency, the day of the week/month will be today</comment>
|
180 |
-
<depends><enabled>1</enabled></depends>
|
181 |
-
</frequency>
|
182 |
-
<force_sync translate="label">
|
183 |
-
<label></label>
|
184 |
-
<frontend_model>connector/debug_forcesuppressedsync</frontend_model>
|
185 |
-
<sort_order>20</sort_order>
|
186 |
<show_in_default>1</show_in_default>
|
187 |
-
<show_in_website>
|
188 |
<show_in_store>0</show_in_store>
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
</sync_suppressed_schedule>
|
193 |
-
<transactional_data translate="label">
|
194 |
-
<label><![CDATA[ Transactional data settings]]></label>
|
195 |
-
<frontend_type>text</frontend_type>
|
196 |
-
<sort_order>30</sort_order>
|
197 |
-
<show_in_default>1</show_in_default>
|
198 |
-
<show_in_website>1</show_in_website>
|
199 |
-
<show_in_store>0</show_in_store>
|
200 |
-
<fields>
|
201 |
-
<order_info_title translate="label">
|
202 |
-
<label>Order/Basket Information</label>
|
203 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
204 |
-
<sort_order>
|
205 |
<show_in_default>1</show_in_default>
|
206 |
<show_in_website>1</show_in_website>
|
207 |
<show_in_store>0</show_in_store>
|
208 |
-
</
|
209 |
-
<order_enabled translate="label">
|
210 |
<label>Enabled</label>
|
211 |
<frontend_type>select</frontend_type>
|
212 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
213 |
-
<sort_order>
|
214 |
<show_in_default>1</show_in_default>
|
215 |
<show_in_website>1</show_in_website>
|
216 |
<show_in_store>0</show_in_store>
|
217 |
</order_enabled>
|
218 |
-
<
|
219 |
-
<label>
|
220 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
221 |
-
<sort_order>
|
222 |
<show_in_default>1</show_in_default>
|
223 |
<show_in_website>1</show_in_website>
|
224 |
<show_in_store>0</show_in_store>
|
225 |
-
</
|
226 |
-
<wishlist_enabled translate="label">
|
227 |
<label>Enabled</label>
|
228 |
<frontend_type>select</frontend_type>
|
229 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
230 |
-
<sort_order>
|
231 |
<show_in_default>1</show_in_default>
|
232 |
<show_in_website>1</show_in_website>
|
233 |
<show_in_store>0</show_in_store>
|
234 |
</wishlist_enabled>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
235 |
</fields>
|
236 |
-
</
|
237 |
</groups>
|
238 |
</connector_sync_settings>
|
239 |
-
<connector_data_field_settings translate="label">
|
240 |
<label><![CDATA[Data Mapping]]></label>
|
241 |
<tab>connector</tab>
|
242 |
<frontend_type>text</frontend_type>
|
@@ -245,8 +213,8 @@
|
|
245 |
<show_in_website>1</show_in_website>
|
246 |
<show_in_store>0</show_in_store>
|
247 |
<groups>
|
248 |
-
<customer_data>
|
249 |
-
<label>Data
|
250 |
<frontend_type>text</frontend_type>
|
251 |
<sort_order>20</sort_order>
|
252 |
<show_in_default>1</show_in_default>
|
@@ -254,7 +222,7 @@
|
|
254 |
<show_in_store>0</show_in_store>
|
255 |
<expanded>1</expanded>
|
256 |
<fields>
|
257 |
-
<customer_title translate="label">
|
258 |
<label>Customer Information</label>
|
259 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
260 |
<sort_order>10</sort_order>
|
@@ -262,28 +230,25 @@
|
|
262 |
<show_in_website>1</show_in_website>
|
263 |
<show_in_store>0</show_in_store>
|
264 |
</customer_title>
|
265 |
-
|
266 |
-
|
267 |
-
<label>Customer ID</label>
|
268 |
<frontend_type>select</frontend_type>
|
269 |
<source_model>connector/system_config_source_datafields</source_model>
|
270 |
<sort_order>20</sort_order>
|
271 |
<show_in_default>1</show_in_default>
|
272 |
<show_in_website>1</show_in_website>
|
273 |
<show_in_store>0</show_in_store>
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
<label>Title</label>
|
278 |
<frontend_type>select</frontend_type>
|
279 |
<source_model>connector/system_config_source_datafields</source_model>
|
280 |
<sort_order>30</sort_order>
|
281 |
-
<show_in_default>
|
282 |
-
<show_in_website>
|
283 |
<show_in_store>0</show_in_store>
|
284 |
-
</
|
285 |
-
|
286 |
-
<firstname>
|
287 |
<label>First Name</label>
|
288 |
<frontend_type>select</frontend_type>
|
289 |
<source_model>connector/system_config_source_datafields</source_model>
|
@@ -292,7 +257,7 @@
|
|
292 |
<show_in_website>1</show_in_website>
|
293 |
<show_in_store>0</show_in_store>
|
294 |
</firstname>
|
295 |
-
<lastname>
|
296 |
<label>Last Name</label>
|
297 |
<frontend_type>select</frontend_type>
|
298 |
<source_model>connector/system_config_source_datafields</source_model>
|
@@ -301,7 +266,7 @@
|
|
301 |
<show_in_website>1</show_in_website>
|
302 |
<show_in_store>0</show_in_store>
|
303 |
</lastname>
|
304 |
-
<dob>
|
305 |
<label>D.O.B.</label>
|
306 |
<frontend_type>select</frontend_type>
|
307 |
<source_model>connector/system_config_source_datafields</source_model>
|
@@ -310,7 +275,7 @@
|
|
310 |
<show_in_website>1</show_in_website>
|
311 |
<show_in_store>0</show_in_store>
|
312 |
</dob>
|
313 |
-
<gender>
|
314 |
<label>Gender</label>
|
315 |
<frontend_type>select</frontend_type>
|
316 |
<source_model>connector/system_config_source_datafields</source_model>
|
@@ -319,7 +284,7 @@
|
|
319 |
<show_in_website>1</show_in_website>
|
320 |
<show_in_store>0</show_in_store>
|
321 |
</gender>
|
322 |
-
<
|
323 |
<label>Website Created On</label>
|
324 |
<frontend_type>select</frontend_type>
|
325 |
<source_model>connector/system_config_source_datafields</source_model>
|
@@ -327,8 +292,8 @@
|
|
327 |
<show_in_default>1</show_in_default>
|
328 |
<show_in_website>1</show_in_website>
|
329 |
<show_in_store>0</show_in_store>
|
330 |
-
</
|
331 |
-
<
|
332 |
<label>Store Created On</label>
|
333 |
<frontend_type>select</frontend_type>
|
334 |
<source_model>connector/system_config_source_datafields</source_model>
|
@@ -336,8 +301,8 @@
|
|
336 |
<show_in_default>1</show_in_default>
|
337 |
<show_in_website>1</show_in_website>
|
338 |
<show_in_store>0</show_in_store>
|
339 |
-
</
|
340 |
-
<
|
341 |
<label>Account Created Date</label>
|
342 |
<frontend_type>select</frontend_type>
|
343 |
<source_model>connector/system_config_source_datafields</source_model>
|
@@ -345,8 +310,8 @@
|
|
345 |
<show_in_default>1</show_in_default>
|
346 |
<show_in_website>1</show_in_website>
|
347 |
<show_in_store>0</show_in_store>
|
348 |
-
</
|
349 |
-
<
|
350 |
<label>Last Logged In Date</label>
|
351 |
<frontend_type>select</frontend_type>
|
352 |
<source_model>connector/system_config_source_datafields</source_model>
|
@@ -354,8 +319,8 @@
|
|
354 |
<show_in_default>1</show_in_default>
|
355 |
<show_in_website>1</show_in_website>
|
356 |
<show_in_store>0</show_in_store>
|
357 |
-
</
|
358 |
-
<customer_group>
|
359 |
<label>Customer Group</label>
|
360 |
<frontend_type>select</frontend_type>
|
361 |
<source_model>connector/system_config_source_datafields</source_model>
|
@@ -364,7 +329,7 @@
|
|
364 |
<show_in_website>1</show_in_website>
|
365 |
<show_in_store>0</show_in_store>
|
366 |
</customer_group>
|
367 |
-
<address_title translate="label">
|
368 |
<label>Address Information</label>
|
369 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
370 |
<sort_order>130</sort_order>
|
@@ -372,7 +337,7 @@
|
|
372 |
<show_in_website>1</show_in_website>
|
373 |
<show_in_store>0</show_in_store>
|
374 |
</address_title>
|
375 |
-
<billing_address_1>
|
376 |
<label>Billing Address Line 1</label>
|
377 |
<frontend_type>select</frontend_type>
|
378 |
<source_model>connector/system_config_source_datafields</source_model>
|
@@ -381,7 +346,7 @@
|
|
381 |
<show_in_website>1</show_in_website>
|
382 |
<show_in_store>0</show_in_store>
|
383 |
</billing_address_1>
|
384 |
-
<billing_address_2>
|
385 |
<label>Billing Address Line 2</label>
|
386 |
<frontend_type>select</frontend_type>
|
387 |
<source_model>connector/system_config_source_datafields</source_model>
|
@@ -390,7 +355,7 @@
|
|
390 |
<show_in_website>1</show_in_website>
|
391 |
<show_in_store>0</show_in_store>
|
392 |
</billing_address_2>
|
393 |
-
<billing_city>
|
394 |
<label>Billing City</label>
|
395 |
<frontend_type>select</frontend_type>
|
396 |
<source_model>connector/system_config_source_datafields</source_model>
|
@@ -399,7 +364,16 @@
|
|
399 |
<show_in_website>1</show_in_website>
|
400 |
<show_in_store>0</show_in_store>
|
401 |
</billing_city>
|
402 |
-
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
403 |
<label>Billing Country</label>
|
404 |
<frontend_type>select</frontend_type>
|
405 |
<source_model>connector/system_config_source_datafields</source_model>
|
@@ -408,7 +382,7 @@
|
|
408 |
<show_in_website>1</show_in_website>
|
409 |
<show_in_store>0</show_in_store>
|
410 |
</billing_country>
|
411 |
-
<billing_postcode>
|
412 |
<label>Billing Zip/Postcode</label>
|
413 |
<frontend_type>select</frontend_type>
|
414 |
<source_model>connector/system_config_source_datafields</source_model>
|
@@ -417,7 +391,7 @@
|
|
417 |
<show_in_website>1</show_in_website>
|
418 |
<show_in_store>0</show_in_store>
|
419 |
</billing_postcode>
|
420 |
-
<billing_telephone>
|
421 |
<label>Billing Telephone</label>
|
422 |
<frontend_type>select</frontend_type>
|
423 |
<source_model>connector/system_config_source_datafields</source_model>
|
@@ -426,7 +400,7 @@
|
|
426 |
<show_in_website>1</show_in_website>
|
427 |
<show_in_store>0</show_in_store>
|
428 |
</billing_telephone>
|
429 |
-
<delivery_address_1>
|
430 |
<label>Delivery Address Line 1</label>
|
431 |
<frontend_type>select</frontend_type>
|
432 |
<source_model>connector/system_config_source_datafields</source_model>
|
@@ -435,7 +409,7 @@
|
|
435 |
<show_in_website>1</show_in_website>
|
436 |
<show_in_store>0</show_in_store>
|
437 |
</delivery_address_1>
|
438 |
-
<delivery_address_2>
|
439 |
<label>Delivery Address Line 2</label>
|
440 |
<frontend_type>select</frontend_type>
|
441 |
<source_model>connector/system_config_source_datafields</source_model>
|
@@ -444,7 +418,7 @@
|
|
444 |
<show_in_website>1</show_in_website>
|
445 |
<show_in_store>0</show_in_store>
|
446 |
</delivery_address_2>
|
447 |
-
<delivery_city>
|
448 |
<label>Delivery City</label>
|
449 |
<frontend_type>select</frontend_type>
|
450 |
<source_model>connector/system_config_source_datafields</source_model>
|
@@ -453,7 +427,16 @@
|
|
453 |
<show_in_website>1</show_in_website>
|
454 |
<show_in_store>0</show_in_store>
|
455 |
</delivery_city>
|
456 |
-
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
457 |
<label>Delivery Country</label>
|
458 |
<frontend_type>select</frontend_type>
|
459 |
<source_model>connector/system_config_source_datafields</source_model>
|
@@ -462,7 +445,7 @@
|
|
462 |
<show_in_website>1</show_in_website>
|
463 |
<show_in_store>0</show_in_store>
|
464 |
</delivery_country>
|
465 |
-
<delivery_postcode>
|
466 |
<label>Delivery Zip/Postcode</label>
|
467 |
<frontend_type>select</frontend_type>
|
468 |
<source_model>connector/system_config_source_datafields</source_model>
|
@@ -471,7 +454,7 @@
|
|
471 |
<show_in_website>1</show_in_website>
|
472 |
<show_in_store>0</show_in_store>
|
473 |
</delivery_postcode>
|
474 |
-
<delivery_telephone>
|
475 |
<label>Delivery Telephone</label>
|
476 |
<frontend_type>select</frontend_type>
|
477 |
<source_model>connector/system_config_source_datafields</source_model>
|
@@ -480,7 +463,7 @@
|
|
480 |
<show_in_website>1</show_in_website>
|
481 |
<show_in_store>0</show_in_store>
|
482 |
</delivery_telephone>
|
483 |
-
<sales_title translate="label">
|
484 |
<label>Sales Information</label>
|
485 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
486 |
<sort_order>260</sort_order>
|
@@ -488,7 +471,7 @@
|
|
488 |
<show_in_website>1</show_in_website>
|
489 |
<show_in_store>0</show_in_store>
|
490 |
</sales_title>
|
491 |
-
<
|
492 |
<label>Total Number of Orders</label>
|
493 |
<frontend_type>select</frontend_type>
|
494 |
<source_model>connector/system_config_source_datafields</source_model>
|
@@ -496,8 +479,8 @@
|
|
496 |
<show_in_default>1</show_in_default>
|
497 |
<show_in_website>1</show_in_website>
|
498 |
<show_in_store>0</show_in_store>
|
499 |
-
</
|
500 |
-
<average_order_value>
|
501 |
<label>Average Order Value</label>
|
502 |
<frontend_type>select</frontend_type>
|
503 |
<source_model>connector/system_config_source_datafields</source_model>
|
@@ -506,7 +489,7 @@
|
|
506 |
<show_in_website>1</show_in_website>
|
507 |
<show_in_store>0</show_in_store>
|
508 |
</average_order_value>
|
509 |
-
<total_spend>
|
510 |
<label>Total Spend</label>
|
511 |
<frontend_type>select</frontend_type>
|
512 |
<source_model>connector/system_config_source_datafields</source_model>
|
@@ -515,7 +498,7 @@
|
|
515 |
<show_in_website>1</show_in_website>
|
516 |
<show_in_store>0</show_in_store>
|
517 |
</total_spend>
|
518 |
-
<
|
519 |
<label>Last Purchase Date</label>
|
520 |
<frontend_type>select</frontend_type>
|
521 |
<source_model>connector/system_config_source_datafields</source_model>
|
@@ -523,17 +506,17 @@
|
|
523 |
<show_in_default>1</show_in_default>
|
524 |
<show_in_website>1</show_in_website>
|
525 |
<show_in_store>0</show_in_store>
|
526 |
-
</
|
527 |
-
<
|
528 |
-
<label>Last Order
|
529 |
<frontend_type>select</frontend_type>
|
530 |
<source_model>connector/system_config_source_datafields</source_model>
|
531 |
<sort_order>310</sort_order>
|
532 |
<show_in_default>1</show_in_default>
|
533 |
<show_in_website>1</show_in_website>
|
534 |
<show_in_store>0</show_in_store>
|
535 |
-
</
|
536 |
-
<validator>
|
537 |
<label>Validation Block</label>
|
538 |
<frontend_type>select</frontend_type>
|
539 |
<source_model>connector/system_config_source_datafields</source_model>
|
@@ -547,46 +530,9 @@
|
|
547 |
</validator>
|
548 |
</fields>
|
549 |
</customer_data>
|
550 |
-
<address_book translate="label">
|
551 |
-
<label>Address Book Mapping</label>
|
552 |
-
<sort_order>10</sort_order>
|
553 |
-
<show_in_default>1</show_in_default>
|
554 |
-
<show_in_website>1</show_in_website>
|
555 |
-
<show_in_store>0</show_in_store>
|
556 |
-
<expanded>1</expanded>
|
557 |
-
<fields>
|
558 |
-
<customers>
|
559 |
-
<label>Add Customers to</label>
|
560 |
-
<frontend_type>select</frontend_type>
|
561 |
-
<source_model>connector/system_config_source_addressbooks</source_model>
|
562 |
-
<sort_order>10</sort_order>
|
563 |
-
<show_in_default>1</show_in_default>
|
564 |
-
<show_in_website>1</show_in_website>
|
565 |
-
<show_in_store>0</show_in_store>
|
566 |
-
</customers>
|
567 |
-
<subscribers>
|
568 |
-
<label>Add Subscribers to</label>
|
569 |
-
<frontend_type>select</frontend_type>
|
570 |
-
<source_model>connector/system_config_source_addressbooks</source_model>
|
571 |
-
<sort_order>20</sort_order>
|
572 |
-
<show_in_default>1</show_in_default>
|
573 |
-
<show_in_website>1</show_in_website>
|
574 |
-
<show_in_store>0</show_in_store>
|
575 |
-
</subscribers>
|
576 |
-
<guest>
|
577 |
-
<label>Add Guests to</label>
|
578 |
-
<frontend_type>select</frontend_type>
|
579 |
-
<source_model>connector/system_config_source_addressbooks</source_model>
|
580 |
-
<sort_order>30</sort_order>
|
581 |
-
<show_in_default>1</show_in_default>
|
582 |
-
<show_in_website>1</show_in_website>
|
583 |
-
<show_in_store>0</show_in_store>
|
584 |
-
</guest>
|
585 |
-
</fields>
|
586 |
-
</address_book>
|
587 |
</groups>
|
588 |
</connector_data_field_settings>
|
589 |
-
<connector_roi_page_tracking_settings translate="label">
|
590 |
<label><![CDATA[ROI & Tracking]]></label>
|
591 |
<tab>connector</tab>
|
592 |
<frontend_type>text</frontend_type>
|
@@ -595,7 +541,7 @@
|
|
595 |
<show_in_website>1</show_in_website>
|
596 |
<show_in_store>0</show_in_store>
|
597 |
<groups>
|
598 |
-
<page_tracking>
|
599 |
<label>Page Tracking</label>
|
600 |
<frontend_type>text</frontend_type>
|
601 |
<sort_order>10</sort_order>
|
@@ -604,7 +550,7 @@
|
|
604 |
<show_in_store>0</show_in_store>
|
605 |
<expanded>1</expanded>
|
606 |
<fields>
|
607 |
-
<enabled translate="label">
|
608 |
<label>Enabled</label>
|
609 |
<frontend_type>select</frontend_type>
|
610 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
@@ -615,7 +561,7 @@
|
|
615 |
</enabled>
|
616 |
</fields>
|
617 |
</page_tracking>
|
618 |
-
<roi_tracking>
|
619 |
<label>ROI Tracking</label>
|
620 |
<frontend_type>text</frontend_type>
|
621 |
<sort_order>20</sort_order>
|
@@ -624,7 +570,7 @@
|
|
624 |
<show_in_store>0</show_in_store>
|
625 |
<expanded>1</expanded>
|
626 |
<fields>
|
627 |
-
<enabled translate="label">
|
628 |
<label>Enabled</label>
|
629 |
<frontend_type>select</frontend_type>
|
630 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
@@ -637,16 +583,16 @@
|
|
637 |
</roi_tracking>
|
638 |
</groups>
|
639 |
</connector_roi_page_tracking_settings>
|
640 |
-
<lost_basket_settings translate="label">
|
641 |
<label><![CDATA[Lost Baskets]]></label>
|
642 |
<tab>connector</tab>
|
643 |
<frontend_type>text</frontend_type>
|
644 |
<sort_order>6000</sort_order>
|
645 |
<show_in_default>1</show_in_default>
|
646 |
<show_in_website>1</show_in_website>
|
647 |
-
<show_in_store>
|
648 |
<groups>
|
649 |
-
<active>
|
650 |
<label>Lost Baskets Settings</label>
|
651 |
<frontend_type>text</frontend_type>
|
652 |
<sort_order>100</sort_order>
|
@@ -654,8 +600,8 @@
|
|
654 |
<show_in_website>0</show_in_website>
|
655 |
<show_in_store>0</show_in_store>
|
656 |
<fields>
|
657 |
-
<active translate="label">
|
658 |
-
<label>Consider Order
|
659 |
<frontend_type>select</frontend_type>
|
660 |
<source_model>connector/system_config_source_activebasket</source_model>
|
661 |
<sort_order>10</sort_order>
|
@@ -665,7 +611,7 @@
|
|
665 |
</active>
|
666 |
</fields>
|
667 |
</active>
|
668 |
-
<customers>
|
669 |
<label>Customers</label>
|
670 |
<frontend_type>text</frontend_type>
|
671 |
<sort_order>10</sort_order>
|
@@ -674,15 +620,15 @@
|
|
674 |
<show_in_store>1</show_in_store>
|
675 |
<expanded>1</expanded>
|
676 |
<fields>
|
677 |
-
<heading_1 translate="label">
|
678 |
-
<label>Lost
|
679 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
680 |
<sort_order>10</sort_order>
|
681 |
<show_in_default>1</show_in_default>
|
682 |
<show_in_website>1</show_in_website>
|
683 |
<show_in_store>1</show_in_store>
|
684 |
</heading_1>
|
685 |
-
<enabled_1 translate="label">
|
686 |
<label>Enabled/Disabled</label>
|
687 |
<frontend_type>select</frontend_type>
|
688 |
<config_path>lostbaskets/customers/enabled_1</config_path>
|
@@ -692,8 +638,8 @@
|
|
692 |
<show_in_website>1</show_in_website>
|
693 |
<show_in_store>1</show_in_store>
|
694 |
</enabled_1>
|
695 |
-
<send_after_1>
|
696 |
-
<label>Send
|
697 |
<frontend_type>select</frontend_type>
|
698 |
<source_model>connector/system_config_source_lostbasket</source_model>
|
699 |
<sort_order>30</sort_order>
|
@@ -701,7 +647,7 @@
|
|
701 |
<show_in_website>1</show_in_website>
|
702 |
<show_in_store>1</show_in_store>
|
703 |
</send_after_1>
|
704 |
-
<campaign_1>
|
705 |
<label>Campaign To Send</label>
|
706 |
<frontend_type>select</frontend_type>
|
707 |
<source_model>connector/system_config_source_campaigns</source_model>
|
@@ -710,15 +656,15 @@
|
|
710 |
<show_in_website>1</show_in_website>
|
711 |
<show_in_store>1</show_in_store>
|
712 |
</campaign_1>
|
713 |
-
<heading_2 translate="label">
|
714 |
-
<label>Lost
|
715 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
716 |
<sort_order>50</sort_order>
|
717 |
<show_in_default>1</show_in_default>
|
718 |
<show_in_website>1</show_in_website>
|
719 |
<show_in_store>1</show_in_store>
|
720 |
</heading_2>
|
721 |
-
<enabled_2 translate="label">
|
722 |
<label>Enabled/Disabled</label>
|
723 |
<frontend_type>select</frontend_type>
|
724 |
<config_path>lostbaskets/customers/enabled_2</config_path>
|
@@ -728,17 +674,17 @@
|
|
728 |
<show_in_website>1</show_in_website>
|
729 |
<show_in_store>1</show_in_store>
|
730 |
</enabled_2>
|
731 |
-
<send_after_2>
|
732 |
-
<label>Send
|
733 |
<frontend_type>select</frontend_type>
|
734 |
-
<source_model>connector/
|
735 |
<sort_order>70</sort_order>
|
736 |
<show_in_default>1</show_in_default>
|
737 |
<show_in_website>1</show_in_website>
|
738 |
<show_in_store>1</show_in_store>
|
739 |
</send_after_2>
|
740 |
-
<campaign_2>
|
741 |
-
<label>Campaign
|
742 |
<frontend_type>select</frontend_type>
|
743 |
<source_model>connector/system_config_source_campaigns</source_model>
|
744 |
<sort_order>80</sort_order>
|
@@ -746,15 +692,15 @@
|
|
746 |
<show_in_website>1</show_in_website>
|
747 |
<show_in_store>1</show_in_store>
|
748 |
</campaign_2>
|
749 |
-
<heading_3 translate="label">
|
750 |
-
<label>Lost
|
751 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
752 |
<sort_order>90</sort_order>
|
753 |
<show_in_default>1</show_in_default>
|
754 |
<show_in_website>1</show_in_website>
|
755 |
<show_in_store>1</show_in_store>
|
756 |
</heading_3>
|
757 |
-
<enabled_3 translate="label">
|
758 |
<label>Enabled/Disabled</label>
|
759 |
<frontend_type>select</frontend_type>
|
760 |
<config_path>lostbaskets/customers/enabled_3</config_path>
|
@@ -764,17 +710,17 @@
|
|
764 |
<show_in_website>1</show_in_website>
|
765 |
<show_in_store>1</show_in_store>
|
766 |
</enabled_3>
|
767 |
-
<send_after_3>
|
768 |
-
<label>Send
|
769 |
<frontend_type>select</frontend_type>
|
770 |
-
<source_model>connector/
|
771 |
<sort_order>110</sort_order>
|
772 |
<show_in_default>1</show_in_default>
|
773 |
<show_in_website>1</show_in_website>
|
774 |
<show_in_store>1</show_in_store>
|
775 |
</send_after_3>
|
776 |
-
<campaign_3>
|
777 |
-
<label>Campaign
|
778 |
<frontend_type>select</frontend_type>
|
779 |
<source_model>connector/system_config_source_campaigns</source_model>
|
780 |
<sort_order>120</sort_order>
|
@@ -784,23 +730,23 @@
|
|
784 |
</campaign_3>
|
785 |
</fields>
|
786 |
</customers>
|
787 |
-
<guests>
|
788 |
<label>Guests</label>
|
789 |
<frontend_type>text</frontend_type>
|
790 |
<sort_order>20</sort_order>
|
791 |
<show_in_default>1</show_in_default>
|
792 |
<show_in_website>1</show_in_website>
|
793 |
-
<show_in_store>
|
794 |
<fields>
|
795 |
-
<heading_1 translate="label">
|
796 |
-
<label>Lost
|
797 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
798 |
<sort_order>10</sort_order>
|
799 |
<show_in_default>1</show_in_default>
|
800 |
<show_in_website>1</show_in_website>
|
801 |
-
<show_in_store>
|
802 |
</heading_1>
|
803 |
-
<enabled_1 translate="label">
|
804 |
<label>Enabled/Disabled</label>
|
805 |
<frontend_type>select</frontend_type>
|
806 |
<config_path>lostbaskets/guests/enabled_1</config_path>
|
@@ -808,36 +754,35 @@
|
|
808 |
<sort_order>20</sort_order>
|
809 |
<show_in_default>1</show_in_default>
|
810 |
<show_in_website>1</show_in_website>
|
811 |
-
<show_in_store>
|
812 |
</enabled_1>
|
813 |
-
<send_after_1>
|
814 |
-
<label>Send
|
815 |
<frontend_type>select</frontend_type>
|
816 |
<source_model>connector/system_config_source_lostbasket</source_model>
|
817 |
<sort_order>30</sort_order>
|
818 |
<show_in_default>1</show_in_default>
|
819 |
<show_in_website>1</show_in_website>
|
820 |
-
<show_in_store>
|
821 |
</send_after_1>
|
822 |
-
<campaign_1>
|
823 |
<label>Campaign To Send</label>
|
824 |
<frontend_type>select</frontend_type>
|
825 |
<source_model>connector/system_config_source_campaigns</source_model>
|
826 |
<sort_order>40</sort_order>
|
827 |
<show_in_default>1</show_in_default>
|
828 |
<show_in_website>1</show_in_website>
|
829 |
-
<show_in_store>
|
830 |
</campaign_1>
|
831 |
-
|
832 |
-
|
833 |
-
<label>Lost basket 2</label>
|
834 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
835 |
<sort_order>50</sort_order>
|
836 |
<show_in_default>1</show_in_default>
|
837 |
<show_in_website>1</show_in_website>
|
838 |
-
<show_in_store>
|
839 |
</heading_2>
|
840 |
-
<enabled_2 translate="label">
|
841 |
<label>Enabled/Disabled</label>
|
842 |
<frontend_type>select</frontend_type>
|
843 |
<config_path>lostbaskets/guests/enabled_2</config_path>
|
@@ -845,36 +790,35 @@
|
|
845 |
<sort_order>60</sort_order>
|
846 |
<show_in_default>1</show_in_default>
|
847 |
<show_in_website>1</show_in_website>
|
848 |
-
<show_in_store>
|
849 |
</enabled_2>
|
850 |
-
<send_after_2>
|
851 |
-
<label>Send
|
852 |
<frontend_type>select</frontend_type>
|
853 |
-
<source_model>connector/
|
854 |
<sort_order>70</sort_order>
|
855 |
<show_in_default>1</show_in_default>
|
856 |
<show_in_website>1</show_in_website>
|
857 |
-
<show_in_store>
|
858 |
</send_after_2>
|
859 |
-
<campaign_2>
|
860 |
-
<label>Campaign
|
861 |
<frontend_type>select</frontend_type>
|
862 |
<source_model>connector/system_config_source_campaigns</source_model>
|
863 |
<sort_order>80</sort_order>
|
864 |
<show_in_default>1</show_in_default>
|
865 |
<show_in_website>1</show_in_website>
|
866 |
-
<show_in_store>
|
867 |
</campaign_2>
|
868 |
-
|
869 |
-
|
870 |
-
<label>Lost basket 3 </label>
|
871 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
872 |
<sort_order>90</sort_order>
|
873 |
<show_in_default>1</show_in_default>
|
874 |
<show_in_website>1</show_in_website>
|
875 |
-
<show_in_store>
|
876 |
</heading_3>
|
877 |
-
<enabled_3 translate="label">
|
878 |
<label>Enabled/Disabled</label>
|
879 |
<frontend_type>select</frontend_type>
|
880 |
<config_path>lostbaskets/guests/enabled_3</config_path>
|
@@ -882,225 +826,194 @@
|
|
882 |
<sort_order>100</sort_order>
|
883 |
<show_in_default>1</show_in_default>
|
884 |
<show_in_website>1</show_in_website>
|
885 |
-
<show_in_store>
|
886 |
</enabled_3>
|
887 |
-
<send_after_3>
|
888 |
-
<label>Send
|
889 |
<frontend_type>select</frontend_type>
|
890 |
-
<source_model>connector/
|
891 |
<sort_order>110</sort_order>
|
892 |
<show_in_default>1</show_in_default>
|
893 |
<show_in_website>1</show_in_website>
|
894 |
-
<show_in_store>
|
895 |
</send_after_3>
|
896 |
-
<campaign_3>
|
897 |
-
<label>Campaign
|
898 |
<frontend_type>select</frontend_type>
|
899 |
<source_model>connector/system_config_source_campaigns</source_model>
|
900 |
<sort_order>120</sort_order>
|
901 |
<show_in_default>1</show_in_default>
|
902 |
<show_in_website>1</show_in_website>
|
903 |
-
<show_in_store>
|
904 |
</campaign_3>
|
905 |
</fields>
|
906 |
</guests>
|
907 |
-
<test>
|
908 |
-
<label>Test</label>
|
909 |
-
<frontend_type>text</frontend_type>
|
910 |
-
<sort_order>30</sort_order>
|
911 |
-
<show_in_default>1</show_in_default>
|
912 |
-
<show_in_website>1</show_in_website>
|
913 |
-
<show_in_store>1</show_in_store>
|
914 |
-
<fields>
|
915 |
-
<email translate="label">
|
916 |
-
<label>Test Email</label>
|
917 |
-
<frontend_type>text</frontend_type>
|
918 |
-
<sort_order>10</sort_order>
|
919 |
-
<show_in_default>1</show_in_default>
|
920 |
-
<show_in_website>1</show_in_website>
|
921 |
-
<show_in_store>0</show_in_store>
|
922 |
-
<comment>Enter the email for customer to test lost basket, with the first lost basket campaign.</comment>
|
923 |
-
</email>
|
924 |
-
<force_test translate="label">
|
925 |
-
<label></label>
|
926 |
-
<frontend_model>connector/debug_forcelostbasketsync</frontend_model>
|
927 |
-
<sort_order>50</sort_order>
|
928 |
-
<show_in_default>1</show_in_default>
|
929 |
-
<show_in_website>0</show_in_website>
|
930 |
-
<show_in_store>0</show_in_store>
|
931 |
-
<comment>Use this button force the data synchronization to run now</comment>
|
932 |
-
</force_test>
|
933 |
-
</fields>
|
934 |
-
</test>
|
935 |
</groups>
|
936 |
</lost_basket_settings>
|
937 |
-
<sms_section translate="label">
|
938 |
<label><![CDATA[SMS]]></label>
|
939 |
<tab>connector</tab>
|
940 |
<frontend_type>text</frontend_type>
|
941 |
<sort_order>7000</sort_order>
|
942 |
<show_in_default>1</show_in_default>
|
943 |
<show_in_website>1</show_in_website>
|
944 |
-
<show_in_store>
|
945 |
<groups>
|
946 |
-
<sms_message_one translate="label">
|
947 |
<label>SMS Message 1</label>
|
948 |
<frontend_type>text</frontend_type>
|
949 |
<sort_order>10</sort_order>
|
950 |
<show_in_default>1</show_in_default>
|
951 |
<show_in_website>1</show_in_website>
|
952 |
-
<show_in_store>
|
953 |
<fields>
|
954 |
-
<enabled translate="label">
|
955 |
<label>Enabled</label>
|
956 |
<frontend_type>select</frontend_type>
|
957 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
958 |
<sort_order>10</sort_order>
|
959 |
<show_in_default>1</show_in_default>
|
960 |
<show_in_website>1</show_in_website>
|
961 |
-
<show_in_store>
|
962 |
</enabled>
|
963 |
-
<order_status translate="label">
|
964 |
<label>Order Status</label>
|
965 |
<sort_order>20</sort_order>
|
966 |
<frontend_type>select</frontend_type>
|
967 |
<source_model>connector/system_config_source_orderstatus</source_model>
|
968 |
<show_in_default>1</show_in_default>
|
969 |
<show_in_website>1</show_in_website>
|
970 |
-
<show_in_store>
|
971 |
</order_status>
|
972 |
-
<message translate="label">
|
973 |
<label>Message</label>
|
974 |
<frontend_type>textarea</frontend_type>
|
975 |
<frontend_model>connector/adminhtml_system_config_smsmessageone</frontend_model>
|
976 |
<sort_order>30</sort_order>
|
977 |
<show_in_default>1</show_in_default>
|
978 |
<show_in_website>1</show_in_website>
|
979 |
-
<show_in_store>
|
980 |
<validate>validate-length maximum-length-110</validate>
|
981 |
</message>
|
982 |
</fields>
|
983 |
-
|
984 |
</sms_message_one>
|
985 |
-
<sms_message_two translate="label">
|
986 |
<label>SMS Message 2</label>
|
987 |
<frontend_type>text</frontend_type>
|
988 |
<sort_order>20</sort_order>
|
989 |
<show_in_default>1</show_in_default>
|
990 |
<show_in_website>1</show_in_website>
|
991 |
-
<show_in_store>
|
992 |
<fields>
|
993 |
-
<enabled translate="label">
|
994 |
<label>Enabled</label>
|
995 |
<frontend_type>select</frontend_type>
|
996 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
997 |
<sort_order>10</sort_order>
|
998 |
<show_in_default>1</show_in_default>
|
999 |
<show_in_website>1</show_in_website>
|
1000 |
-
<show_in_store>
|
1001 |
</enabled>
|
1002 |
-
<order_status translate="label">
|
1003 |
<label>Order Status</label>
|
1004 |
<sort_order>20</sort_order>
|
1005 |
<frontend_type>select</frontend_type>
|
1006 |
<source_model>connector/system_config_source_orderstatus</source_model>
|
1007 |
<show_in_default>1</show_in_default>
|
1008 |
<show_in_website>1</show_in_website>
|
1009 |
-
<show_in_store>
|
1010 |
</order_status>
|
1011 |
-
<message translate="label">
|
1012 |
<label>Message</label>
|
1013 |
<frontend_type>textarea</frontend_type>
|
1014 |
<frontend_model>connector/adminhtml_system_config_smsmessagetwo</frontend_model>
|
1015 |
<sort_order>30</sort_order>
|
1016 |
<show_in_default>1</show_in_default>
|
1017 |
<show_in_website>1</show_in_website>
|
1018 |
-
<show_in_store>
|
1019 |
<validate>validate-length maximum-length-110</validate>
|
1020 |
</message>
|
1021 |
</fields>
|
1022 |
-
|
1023 |
</sms_message_two>
|
1024 |
-
<sms_message_three translate="label">
|
1025 |
<label>SMS Message 3</label>
|
1026 |
<frontend_type>text</frontend_type>
|
1027 |
<sort_order>30</sort_order>
|
1028 |
<show_in_default>1</show_in_default>
|
1029 |
<show_in_website>1</show_in_website>
|
1030 |
-
<show_in_store>
|
1031 |
<fields>
|
1032 |
-
<enabled translate="label">
|
1033 |
<label>Enabled</label>
|
1034 |
<frontend_type>select</frontend_type>
|
1035 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
1036 |
<sort_order>10</sort_order>
|
1037 |
<show_in_default>1</show_in_default>
|
1038 |
<show_in_website>1</show_in_website>
|
1039 |
-
<show_in_store>
|
1040 |
</enabled>
|
1041 |
-
<order_status translate="label">
|
1042 |
<label>Order Status</label>
|
1043 |
<sort_order>20</sort_order>
|
1044 |
<frontend_type>select</frontend_type>
|
1045 |
<source_model>connector/system_config_source_orderstatus</source_model>
|
1046 |
<show_in_default>1</show_in_default>
|
1047 |
<show_in_website>1</show_in_website>
|
1048 |
-
<show_in_store>
|
1049 |
</order_status>
|
1050 |
-
<message translate="label">
|
1051 |
<label>Message</label>
|
1052 |
<frontend_type>textarea</frontend_type>
|
1053 |
<frontend_model>connector/adminhtml_system_config_smsmessagethree</frontend_model>
|
1054 |
<sort_order>30</sort_order>
|
1055 |
<show_in_default>1</show_in_default>
|
1056 |
<show_in_website>1</show_in_website>
|
1057 |
-
<show_in_store>
|
1058 |
<validate>validate-length maximum-length-110</validate>
|
1059 |
</message>
|
1060 |
</fields>
|
1061 |
</sms_message_three>
|
1062 |
-
<sms_message_four translate="label">
|
1063 |
<label>SMS Message 4</label>
|
1064 |
<frontend_type>text</frontend_type>
|
1065 |
<sort_order>40</sort_order>
|
1066 |
<show_in_default>1</show_in_default>
|
1067 |
<show_in_website>1</show_in_website>
|
1068 |
-
<show_in_store>
|
1069 |
<fields>
|
1070 |
-
<enabled translate="label">
|
1071 |
<label>Enabled</label>
|
1072 |
<frontend_type>select</frontend_type>
|
1073 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
1074 |
<sort_order>10</sort_order>
|
1075 |
<show_in_default>1</show_in_default>
|
1076 |
<show_in_website>1</show_in_website>
|
1077 |
-
<show_in_store>
|
1078 |
</enabled>
|
1079 |
-
<order_status translate="label">
|
1080 |
<label>Order Status</label>
|
1081 |
<sort_order>20</sort_order>
|
1082 |
<frontend_type>select</frontend_type>
|
1083 |
<source_model>connector/system_config_source_orderstatus</source_model>
|
1084 |
<show_in_default>1</show_in_default>
|
1085 |
<show_in_website>1</show_in_website>
|
1086 |
-
<show_in_store>
|
1087 |
</order_status>
|
1088 |
-
<message translate="label">
|
1089 |
<label>Message</label>
|
1090 |
<frontend_type>textarea</frontend_type>
|
1091 |
-
<frontend_model>connector/
|
1092 |
<sort_order>30</sort_order>
|
1093 |
<show_in_default>1</show_in_default>
|
1094 |
<show_in_website>1</show_in_website>
|
1095 |
-
<show_in_store>
|
1096 |
<validate>validate-length maximum-length-110</validate>
|
1097 |
</message>
|
1098 |
</fields>
|
1099 |
-
|
1100 |
</sms_message_four>
|
1101 |
</groups>
|
1102 |
</sms_section>
|
1103 |
-
<dynamic_content translate="label">
|
1104 |
<label><![CDATA[Dynamic Content]]></label>
|
1105 |
<tab>connector</tab>
|
1106 |
<frontend_type>text</frontend_type>
|
@@ -1109,7 +1022,7 @@
|
|
1109 |
<show_in_website>1</show_in_website>
|
1110 |
<show_in_store>0</show_in_store>
|
1111 |
<groups>
|
1112 |
-
<products translate="label">
|
1113 |
<label>Dynamic Products</label>
|
1114 |
<frontend_type>text</frontend_type>
|
1115 |
<sort_order>10</sort_order>
|
@@ -1118,7 +1031,7 @@
|
|
1118 |
<show_in_store>0</show_in_store>
|
1119 |
<expanded>1</expanded>
|
1120 |
<fields>
|
1121 |
-
<related translate="label">
|
1122 |
<label>Related Products</label>
|
1123 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
1124 |
<sort_order>10</sort_order>
|
@@ -1126,7 +1039,7 @@
|
|
1126 |
<show_in_website>1</show_in_website>
|
1127 |
<show_in_store>0</show_in_store>
|
1128 |
</related>
|
1129 |
-
<related_display_type translate="label">
|
1130 |
<label>Display Type</label>
|
1131 |
<frontend_type>select</frontend_type>
|
1132 |
<source_model>connector/system_config_source_displaytype</source_model>
|
@@ -1135,7 +1048,7 @@
|
|
1135 |
<show_in_website>1</show_in_website>
|
1136 |
<show_in_store>0</show_in_store>
|
1137 |
</related_display_type>
|
1138 |
-
<related_items_to_display translate="label">
|
1139 |
<label>Items To Display</label>
|
1140 |
<frontend_type>select</frontend_type>
|
1141 |
<source_model>connector/system_config_source_gridview</source_model>
|
@@ -1144,8 +1057,7 @@
|
|
1144 |
<show_in_default>1</show_in_default>
|
1145 |
<show_in_store>0</show_in_store>
|
1146 |
</related_items_to_display>
|
1147 |
-
|
1148 |
-
<upsell translate="label">
|
1149 |
<label>Up Sell Products</label>
|
1150 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
1151 |
<sort_order>40</sort_order>
|
@@ -1153,7 +1065,7 @@
|
|
1153 |
<show_in_website>1</show_in_website>
|
1154 |
<show_in_store>0</show_in_store>
|
1155 |
</upsell>
|
1156 |
-
<upsell_display_type translate="label">
|
1157 |
<label>Display Type</label>
|
1158 |
<frontend_type>select</frontend_type>
|
1159 |
<source_model>connector/system_config_source_displaytype</source_model>
|
@@ -1162,7 +1074,7 @@
|
|
1162 |
<show_in_website>1</show_in_website>
|
1163 |
<show_in_store>0</show_in_store>
|
1164 |
</upsell_display_type>
|
1165 |
-
<upsell_items_to_display translate="label">
|
1166 |
<label>Items To Display</label>
|
1167 |
<frontend_type>select</frontend_type>
|
1168 |
<source_model>connector/system_config_source_gridview</source_model>
|
@@ -1171,8 +1083,7 @@
|
|
1171 |
<show_in_default>1</show_in_default>
|
1172 |
<show_in_store>0</show_in_store>
|
1173 |
</upsell_items_to_display>
|
1174 |
-
|
1175 |
-
<crosssell translate="label">
|
1176 |
<label>Cross Sell Products</label>
|
1177 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
1178 |
<sort_order>70</sort_order>
|
@@ -1180,7 +1091,7 @@
|
|
1180 |
<show_in_website>1</show_in_website>
|
1181 |
<show_in_store>0</show_in_store>
|
1182 |
</crosssell>
|
1183 |
-
<crosssell_display_type translate="label">
|
1184 |
<label>Display Type</label>
|
1185 |
<frontend_type>select</frontend_type>
|
1186 |
<source_model>connector/system_config_source_displaytype</source_model>
|
@@ -1189,7 +1100,7 @@
|
|
1189 |
<show_in_website>1</show_in_website>
|
1190 |
<show_in_store>0</show_in_store>
|
1191 |
</crosssell_display_type>
|
1192 |
-
<crosssell_items_to_display translate="label">
|
1193 |
<label>Items To Display</label>
|
1194 |
<frontend_type>select</frontend_type>
|
1195 |
<source_model>connector/system_config_source_gridview</source_model>
|
@@ -1198,16 +1109,15 @@
|
|
1198 |
<show_in_default>1</show_in_default>
|
1199 |
<show_in_store>0</show_in_store>
|
1200 |
</crosssell_items_to_display>
|
1201 |
-
|
1202 |
-
<best translate="label">
|
1203 |
<label>Best Sellers</label>
|
1204 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
1205 |
<sort_order>100</sort_order>
|
1206 |
<show_in_default>1</show_in_default>
|
1207 |
<show_in_website>1</show_in_website>
|
1208 |
<show_in_store>0</show_in_store>
|
1209 |
-
</
|
1210 |
-
<
|
1211 |
<label>Display Type</label>
|
1212 |
<frontend_type>select</frontend_type>
|
1213 |
<source_model>connector/system_config_source_displaytype</source_model>
|
@@ -1215,8 +1125,8 @@
|
|
1215 |
<show_in_default>1</show_in_default>
|
1216 |
<show_in_website>1</show_in_website>
|
1217 |
<show_in_store>0</show_in_store>
|
1218 |
-
</
|
1219 |
-
<
|
1220 |
<label>Items To Display</label>
|
1221 |
<frontend_type>select</frontend_type>
|
1222 |
<source_model>connector/system_config_source_gridview</source_model>
|
@@ -1224,8 +1134,8 @@
|
|
1224 |
<show_in_website>1</show_in_website>
|
1225 |
<show_in_default>1</show_in_default>
|
1226 |
<show_in_store>0</show_in_store>
|
1227 |
-
</
|
1228 |
-
<
|
1229 |
<label>Time Period</label>
|
1230 |
<frontend_type>select</frontend_type>
|
1231 |
<source_model>connector/system_config_source_timeperiod</source_model>
|
@@ -1233,9 +1143,8 @@
|
|
1233 |
<show_in_default>1</show_in_default>
|
1234 |
<show_in_website>1</show_in_website>
|
1235 |
<show_in_store>0</show_in_store>
|
1236 |
-
</
|
1237 |
-
|
1238 |
-
<most_viewed translate="label">
|
1239 |
<label>Most Viewed</label>
|
1240 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
1241 |
<sort_order>140</sort_order>
|
@@ -1243,7 +1152,7 @@
|
|
1243 |
<show_in_website>1</show_in_website>
|
1244 |
<show_in_store>0</show_in_store>
|
1245 |
</most_viewed>
|
1246 |
-
<most_viewed_display_type translate="label">
|
1247 |
<label>Display Type</label>
|
1248 |
<frontend_type>select</frontend_type>
|
1249 |
<source_model>connector/system_config_source_displaytype</source_model>
|
@@ -1252,7 +1161,7 @@
|
|
1252 |
<show_in_website>1</show_in_website>
|
1253 |
<show_in_store>0</show_in_store>
|
1254 |
</most_viewed_display_type>
|
1255 |
-
<most_viewed_items_to_display translate="label">
|
1256 |
<label>Items To Display</label>
|
1257 |
<frontend_type>select</frontend_type>
|
1258 |
<source_model>connector/system_config_source_gridview</source_model>
|
@@ -1261,7 +1170,7 @@
|
|
1261 |
<show_in_default>1</show_in_default>
|
1262 |
<show_in_store>0</show_in_store>
|
1263 |
</most_viewed_items_to_display>
|
1264 |
-
<most_viewed_time_period translate="label">
|
1265 |
<label>Time Period</label>
|
1266 |
<frontend_type>select</frontend_type>
|
1267 |
<source_model>connector/system_config_source_timeperiod</source_model>
|
@@ -1270,8 +1179,7 @@
|
|
1270 |
<show_in_website>1</show_in_website>
|
1271 |
<show_in_store>0</show_in_store>
|
1272 |
</most_viewed_time_period>
|
1273 |
-
|
1274 |
-
<recently_viewed translate="label">
|
1275 |
<label>Recently Viewed</label>
|
1276 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
1277 |
<sort_order>180</sort_order>
|
@@ -1279,7 +1187,7 @@
|
|
1279 |
<show_in_website>1</show_in_website>
|
1280 |
<show_in_store>0</show_in_store>
|
1281 |
</recently_viewed>
|
1282 |
-
<recently_viewed_display_type translate="label">
|
1283 |
<label>Display Type</label>
|
1284 |
<frontend_type>select</frontend_type>
|
1285 |
<source_model>connector/system_config_source_displaytype</source_model>
|
@@ -1288,7 +1196,7 @@
|
|
1288 |
<show_in_website>1</show_in_website>
|
1289 |
<show_in_store>0</show_in_store>
|
1290 |
</recently_viewed_display_type>
|
1291 |
-
<recently_viewed_items_to_display translate="label">
|
1292 |
<label>items To Display</label>
|
1293 |
<frontend_type>select</frontend_type>
|
1294 |
<source_model>connector/system_config_source_gridview</source_model>
|
@@ -1297,9 +1205,7 @@
|
|
1297 |
<show_in_website>1</show_in_website>
|
1298 |
<show_in_store>0</show_in_store>
|
1299 |
</recently_viewed_items_to_display>
|
1300 |
-
|
1301 |
<validator>
|
1302 |
-
<label></label>
|
1303 |
<frontend_type>hidden</frontend_type>
|
1304 |
<frontend_model>connector/adminhtml_system_config_gridlist</frontend_model>
|
1305 |
<sort_order>210</sort_order>
|
@@ -1309,9 +1215,8 @@
|
|
1309 |
<can_be_empty>1</can_be_empty>
|
1310 |
</validator>
|
1311 |
</fields>
|
1312 |
-
|
1313 |
</products>
|
1314 |
-
<manual_product_search translate="label">
|
1315 |
<label>Manual Product Push</label>
|
1316 |
<frontend_type>text</frontend_type>
|
1317 |
<sort_order>20</sort_order>
|
@@ -1320,7 +1225,7 @@
|
|
1320 |
<show_in_store>0</show_in_store>
|
1321 |
<expanded>1</expanded>
|
1322 |
<fields>
|
1323 |
-
<settings tranlate="label">
|
1324 |
<label>Settings</label>
|
1325 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
1326 |
<sort_order>10</sort_order>
|
@@ -1328,7 +1233,7 @@
|
|
1328 |
<show_in_website>1</show_in_website>
|
1329 |
<show_in_store>0</show_in_store>
|
1330 |
</settings>
|
1331 |
-
<display_type translate="label">
|
1332 |
<label>Display Type</label>
|
1333 |
<frontend_type>select</frontend_type>
|
1334 |
<source_model>connector/system_config_source_displaytype</source_model>
|
@@ -1337,7 +1242,7 @@
|
|
1337 |
<show_in_website>1</show_in_website>
|
1338 |
<show_in_store>0</show_in_store>
|
1339 |
</display_type>
|
1340 |
-
<items_to_display translate="label">
|
1341 |
<label>Items To Display</label>
|
1342 |
<frontend_type>select</frontend_type>
|
1343 |
<source_model>connector/system_config_source_gridview</source_model>
|
@@ -1346,7 +1251,7 @@
|
|
1346 |
<show_in_default>1</show_in_default>
|
1347 |
<show_in_store>0</show_in_store>
|
1348 |
</items_to_display>
|
1349 |
-
<products_push translate="label">
|
1350 |
<label>Products</label>
|
1351 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
1352 |
<sort_order>80</sort_order>
|
@@ -1354,7 +1259,7 @@
|
|
1354 |
<show_in_website>1</show_in_website>
|
1355 |
<show_in_store>0</show_in_store>
|
1356 |
</products_push>
|
1357 |
-
<products_push_items translate="label">
|
1358 |
<label>Products</label>
|
1359 |
<frontend_type>text</frontend_type>
|
1360 |
<sort_order>90</sort_order>
|
@@ -1365,7 +1270,7 @@
|
|
1365 |
</products_push_items>
|
1366 |
</fields>
|
1367 |
</manual_product_search>
|
1368 |
-
<fallback_products translate="label">
|
1369 |
<label>Fallback Products</label>
|
1370 |
<frontend_type>text</frontend_type>
|
1371 |
<sort_order>30</sort_order>
|
@@ -1373,7 +1278,7 @@
|
|
1373 |
<show_in_website>1</show_in_website>
|
1374 |
<show_in_store>0</show_in_store>
|
1375 |
<fields>
|
1376 |
-
<product_list translate="label">
|
1377 |
<label>Products</label>
|
1378 |
<frontend_type>text</frontend_type>
|
1379 |
<sort_order>10</sort_order>
|
@@ -1386,16 +1291,280 @@
|
|
1386 |
</fallback_products>
|
1387 |
</groups>
|
1388 |
</dynamic_content>
|
1389 |
-
<
|
1390 |
-
<label
|
1391 |
<tab>connector</tab>
|
1392 |
<frontend_type>text</frontend_type>
|
|
|
|
|
|
|
1393 |
<sort_order>9000</sort_order>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1394 |
<show_in_default>1</show_in_default>
|
1395 |
<show_in_website>1</show_in_website>
|
1396 |
-
<show_in_store>
|
1397 |
<groups>
|
1398 |
-
<sync_limits>
|
1399 |
<label>Transactional Sync Limit</label>
|
1400 |
<frontend_type>text</frontend_type>
|
1401 |
<sort_order>10</sort_order>
|
@@ -1403,8 +1572,8 @@
|
|
1403 |
<show_in_website>1</show_in_website>
|
1404 |
<show_in_store>0</show_in_store>
|
1405 |
<fields>
|
1406 |
-
<orders translate="label">
|
1407 |
-
<label>Historical
|
1408 |
<frontend_type>select</frontend_type>
|
1409 |
<source_model>connector/system_config_source_orderlimit</source_model>
|
1410 |
<sort_order>40</sort_order>
|
@@ -1414,7 +1583,7 @@
|
|
1414 |
</orders>
|
1415 |
</fields>
|
1416 |
</sync_limits>
|
1417 |
-
<external translate="label">
|
1418 |
<label><![CDATA[External Dynamic Content]]></label>
|
1419 |
<frontend_type>text</frontend_type>
|
1420 |
<sort_order>20</sort_order>
|
@@ -1422,7 +1591,7 @@
|
|
1422 |
<show_in_website>1</show_in_website>
|
1423 |
<show_in_store>0</show_in_store>
|
1424 |
<fields>
|
1425 |
-
<passcode translate="label">
|
1426 |
<label>Passcode</label>
|
1427 |
<frontend_type>text</frontend_type>
|
1428 |
<sort_order>10</sort_order>
|
@@ -1431,7 +1600,7 @@
|
|
1431 |
<show_in_store>0</show_in_store>
|
1432 |
<comment><![CDATA[Recommended: Set a passcode so that basket contents and coupon codes can only be viewed if the following passcode is sent with the request.]]></comment>
|
1433 |
</passcode>
|
1434 |
-
<lost_basket_title translate="label">
|
1435 |
<label>Lost Baskets</label>
|
1436 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
1437 |
<sort_order>20</sort_order>
|
@@ -1439,17 +1608,16 @@
|
|
1439 |
<show_in_website>1</show_in_website>
|
1440 |
<show_in_store>0</show_in_store>
|
1441 |
</lost_basket_title>
|
1442 |
-
|
1443 |
-
<lost_basket_url translate="label">
|
1444 |
<label>Baskets Content URL</label>
|
1445 |
<frontend_type>label</frontend_type>
|
1446 |
-
<frontend_model>connector/
|
1447 |
<sort_order>30</sort_order>
|
1448 |
<show_in_default>1</show_in_default>
|
1449 |
<show_in_website>1</show_in_website>
|
1450 |
<show_in_store>0</show_in_store>
|
1451 |
</lost_basket_url>
|
1452 |
-
<coupon_code_title title="label">
|
1453 |
<label>Coupon Codes</label>
|
1454 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
1455 |
<sort_order>40</sort_order>
|
@@ -1457,17 +1625,16 @@
|
|
1457 |
<show_in_default>1</show_in_default>
|
1458 |
<show_in_store>0</show_in_store>
|
1459 |
</coupon_code_title>
|
1460 |
-
<coupon_code_url translate="label">
|
1461 |
<label>Coupon Codes URL</label>
|
1462 |
<frontend_type>label</frontend_type>
|
1463 |
-
<frontend_model>connector/
|
1464 |
<sort_order>50</sort_order>
|
1465 |
<show_in_default>1</show_in_default>
|
1466 |
<show_in_website>1</show_in_website>
|
1467 |
<show_in_store>0</show_in_store>
|
1468 |
</coupon_code_url>
|
1469 |
-
|
1470 |
-
<dynamic_content_url translate="label">
|
1471 |
<label>Dynamic Content</label>
|
1472 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
1473 |
<sort_order>60</sort_order>
|
@@ -1475,62 +1642,61 @@
|
|
1475 |
<show_in_website>1</show_in_website>
|
1476 |
<show_in_store>0</show_in_store>
|
1477 |
</dynamic_content_url>
|
1478 |
-
<related_products_url translate="label">
|
1479 |
<label>Related Products URL</label>
|
1480 |
<frontend_type>label</frontend_type>
|
1481 |
-
<frontend_model>connector/
|
1482 |
<sort_order>70</sort_order>
|
1483 |
<show_in_default>1</show_in_default>
|
1484 |
<show_in_website>1</show_in_website>
|
1485 |
<show_in_store>0</show_in_store>
|
1486 |
</related_products_url>
|
1487 |
-
<upsell_products_url translate="label">
|
1488 |
<label>Up Sell Products URL</label>
|
1489 |
<frontend_type>label</frontend_type>
|
1490 |
-
<frontend_model>connector/
|
1491 |
<sort_order>80</sort_order>
|
1492 |
<show_in_default>1</show_in_default>
|
1493 |
<show_in_website>1</show_in_website>
|
1494 |
<show_in_store>0</show_in_store>
|
1495 |
</upsell_products_url>
|
1496 |
-
<crosssell_products_url translate="label">
|
1497 |
<label>Cross Sell Products URL</label>
|
1498 |
<frontend_type>label</frontend_type>
|
1499 |
-
<frontend_model>connector/
|
1500 |
<sort_order>90</sort_order>
|
1501 |
<show_in_default>1</show_in_default>
|
1502 |
<show_in_website>1</show_in_website>
|
1503 |
<show_in_store>0</show_in_store>
|
1504 |
</crosssell_products_url>
|
1505 |
-
|
1506 |
-
<best_sellers_url translate="label">
|
1507 |
<label>Best Sellers URL</label>
|
1508 |
<frontend_type>label</frontend_type>
|
1509 |
-
<frontend_model>connector/
|
1510 |
<sort_order>100</sort_order>
|
1511 |
<show_in_default>1</show_in_default>
|
1512 |
<show_in_website>1</show_in_website>
|
1513 |
<show_in_store>0</show_in_store>
|
1514 |
</best_sellers_url>
|
1515 |
-
<most_viewed_url translate="label">
|
1516 |
<label>Most Viewed URL</label>
|
1517 |
<frontend_type>label</frontend_type>
|
1518 |
-
<frontend_model>connector/
|
1519 |
<sort_order>110</sort_order>
|
1520 |
<show_in_default>1</show_in_default>
|
1521 |
<show_in_website>1</show_in_website>
|
1522 |
<show_in_store>0</show_in_store>
|
1523 |
</most_viewed_url>
|
1524 |
-
<product_push_url translate="label">
|
1525 |
<label>Product Push URL</label>
|
1526 |
<frontend_type>label</frontend_type>
|
1527 |
-
<frontend_model>connector/
|
1528 |
<sort_order>120</sort_order>
|
1529 |
<show_in_default>1</show_in_default>
|
1530 |
<show_in_website>1</show_in_website>
|
1531 |
<show_in_store>0</show_in_store>
|
1532 |
</product_push_url>
|
1533 |
-
<recently_viewed_url translate="label">
|
1534 |
<label>Recently Viewed</label>
|
1535 |
<frontend_type>label</frontend_type>
|
1536 |
<frontend_model>connector/adminhtml_system_recentlyviewed</frontend_model>
|
@@ -1539,9 +1705,62 @@
|
|
1539 |
<show_in_website>1</show_in_website>
|
1540 |
<show_in_store>0</show_in_store>
|
1541 |
</recently_viewed_url>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1542 |
</fields>
|
1543 |
</external>
|
1544 |
-
<admin translate="label">
|
1545 |
<label>Admin</label>
|
1546 |
<frontend_type>text</frontend_type>
|
1547 |
<sort_order>30</sort_order>
|
@@ -1549,59 +1768,94 @@
|
|
1549 |
<show_in_default>1</show_in_default>
|
1550 |
<show_in_store>0</show_in_store>
|
1551 |
<fields>
|
1552 |
-
<admin_title translate="label">
|
1553 |
-
<label
|
1554 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
1555 |
<sort_order>10</sort_order>
|
1556 |
<show_in_default>1</show_in_default>
|
1557 |
<show_in_website>1</show_in_website>
|
1558 |
<show_in_store>0</show_in_store>
|
1559 |
</admin_title>
|
1560 |
-
<count_customers translate="label">
|
1561 |
-
<label>Count Customers
|
1562 |
-
<frontend_model>connector/
|
1563 |
<sort_order>20</sort_order>
|
1564 |
<show_in_default>1</show_in_default>
|
1565 |
<show_in_website>1</show_in_website>
|
1566 |
<show_in_store>0</show_in_store>
|
1567 |
</count_customers>
|
1568 |
-
<delete_contact translate="label">
|
1569 |
-
<label
|
1570 |
-
<frontend_model>connector/
|
1571 |
<sort_order>30</sort_order>
|
1572 |
<show_in_default>1</show_in_default>
|
1573 |
<show_in_website>1</show_in_website>
|
1574 |
<show_in_store>0</show_in_store>
|
1575 |
</delete_contact>
|
1576 |
-
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1577 |
<label>Memory Limit</label>
|
1578 |
<frontend_type>select</frontend_type>
|
1579 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
1580 |
<show_in_default>1</show_in_default>
|
1581 |
<show_in_website>0</show_in_website>
|
1582 |
<show_in_store>0</show_in_store>
|
1583 |
-
<sort_order>
|
1584 |
<comment>Set to NO to use system default memory.</comment>
|
1585 |
</memory_limit>
|
1586 |
-
<batch_size translate="label">
|
1587 |
<label>Customer Sync Batch Size</label>
|
1588 |
<frontend_type>text</frontend_type>
|
1589 |
<show_in_default>1</show_in_default>
|
1590 |
<show_in_website>1</show_in_website>
|
1591 |
<show_in_store>0</show_in_store>
|
1592 |
-
<sort_order>
|
1593 |
<comment>Set the limit size for customers loaded in memory.</comment>
|
1594 |
</batch_size>
|
1595 |
-
<
|
1596 |
<label>Debug Mode</label>
|
1597 |
<frontend_type>select</frontend_type>
|
1598 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
1599 |
-
<sort_order>
|
1600 |
<show_in_default>1</show_in_default>
|
1601 |
<show_in_website>1</show_in_website>
|
1602 |
-
<show_in_store>
|
1603 |
-
<comment>Set to YES to allow
|
1604 |
-
</
|
1605 |
</fields>
|
1606 |
</admin>
|
1607 |
</groups>
|
1 |
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
<config>
|
3 |
<tabs>
|
4 |
+
<connector translate="label" module="connector">
|
5 |
<label>EMAIL</label>
|
6 |
<sort_order>1000</sort_order>
|
7 |
</connector>
|
8 |
</tabs>
|
9 |
<sections>
|
10 |
+
<connector_api_settings translate="label" module="connector">
|
11 |
<label><![CDATA[API Credentials]]></label>
|
12 |
<tab>connector</tab>
|
13 |
<frontend_type>text</frontend_type>
|
16 |
<show_in_website>1</show_in_website>
|
17 |
<show_in_store>0</show_in_store>
|
18 |
<groups>
|
19 |
+
<api_credentials translate="label" module="connector">
|
20 |
<label>API Settings</label>
|
21 |
<frontend_type>text</frontend_type>
|
22 |
<sort_order>10</sort_order>
|
25 |
<show_in_store>0</show_in_store>
|
26 |
<expanded>1</expanded>
|
27 |
<fields>
|
28 |
+
<enabled translate="label" module="connector">
|
29 |
+
<label>Enabled</label>
|
30 |
+
<frontend_type>select</frontend_type>
|
31 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
32 |
+
<sort_order>10</sort_order>
|
33 |
+
<show_in_default>1</show_in_default>
|
34 |
+
<show_in_website>1</show_in_website>
|
35 |
+
<show_in_store>0</show_in_store>
|
36 |
+
</enabled>
|
37 |
+
<username translate="label" module="connector">
|
38 |
<label>API Username</label>
|
39 |
<frontend_type>text</frontend_type>
|
40 |
<frontend_model>connector/adminhtml_system_config_wrapper</frontend_model>
|
41 |
+
<sort_order>20</sort_order>
|
42 |
<show_in_default>1</show_in_default>
|
43 |
<show_in_website>1</show_in_website>
|
44 |
<show_in_store>0</show_in_store>
|
45 |
+
<depends><enabled>1</enabled></depends>
|
46 |
<validate>validate-length minimum-length-36</validate>
|
47 |
</username>
|
48 |
+
<password translate="label" module="connector">
|
49 |
<label>API Password</label>
|
50 |
<frontend_type>password</frontend_type>
|
51 |
+
<frontend_model>connector/adminhtml_system_config_form_ajaxvalidate</frontend_model>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
52 |
<sort_order>30</sort_order>
|
53 |
<show_in_default>1</show_in_default>
|
54 |
<show_in_website>1</show_in_website>
|
55 |
<show_in_store>0</show_in_store>
|
56 |
+
<depends><enabled>1</enabled></depends>
|
57 |
+
</password>
|
58 |
<validator>
|
|
|
59 |
<frontend_type>hidden</frontend_type>
|
60 |
<frontend_model>connector/adminhtml_system_config_waitingfield</frontend_model>
|
61 |
<sort_order>50</sort_order>
|
68 |
</api_credentials>
|
69 |
</groups>
|
70 |
</connector_api_settings>
|
71 |
+
<connector_sync_settings translate="label" module="connector">
|
|
|
72 |
<label><![CDATA[Sync Settings]]></label>
|
|
|
73 |
<tab>connector</tab>
|
74 |
<frontend_type>text</frontend_type>
|
75 |
<sort_order>3000</sort_order>
|
77 |
<show_in_website>1</show_in_website>
|
78 |
<show_in_store>0</show_in_store>
|
79 |
<groups>
|
80 |
+
<address_book translate="label" module="connector">
|
81 |
+
<label>Address Book Mapping</label>
|
|
|
82 |
<sort_order>10</sort_order>
|
83 |
<show_in_default>1</show_in_default>
|
84 |
<show_in_website>1</show_in_website>
|
85 |
<show_in_store>0</show_in_store>
|
86 |
<expanded>1</expanded>
|
87 |
<fields>
|
88 |
+
<customers translate="label" module="connector">
|
89 |
+
<label>Add Customers To</label>
|
90 |
<frontend_type>select</frontend_type>
|
91 |
+
<source_model>connector/system_config_source_addressbooks</source_model>
|
92 |
<sort_order>10</sort_order>
|
93 |
<show_in_default>1</show_in_default>
|
94 |
<show_in_website>1</show_in_website>
|
95 |
<show_in_store>0</show_in_store>
|
96 |
+
</customers>
|
97 |
+
<subscribers translate="label" module="connector">
|
98 |
+
<label>Add Subscribers To</label>
|
99 |
+
<frontend_type>select</frontend_type>
|
100 |
+
<source_model>connector/system_config_source_addressbooks</source_model>
|
101 |
<sort_order>20</sort_order>
|
102 |
<show_in_default>1</show_in_default>
|
103 |
+
<show_in_website>1</show_in_website>
|
104 |
<show_in_store>0</show_in_store>
|
105 |
+
</subscribers>
|
106 |
+
<guests translate="label" module="connector">
|
107 |
+
<label>Add Guests To</label>
|
|
|
108 |
<frontend_type>select</frontend_type>
|
109 |
+
<source_model>connector/system_config_source_addressbooks</source_model>
|
|
|
110 |
<sort_order>30</sort_order>
|
111 |
<show_in_default>1</show_in_default>
|
112 |
+
<show_in_website>1</show_in_website>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
113 |
<show_in_store>0</show_in_store>
|
114 |
+
</guests>
|
|
|
115 |
</fields>
|
116 |
+
</address_book>
|
117 |
+
<sync translate="label" module="connector">
|
118 |
+
<label>Sync</label>
|
119 |
<frontend_type>text</frontend_type>
|
120 |
<sort_order>20</sort_order>
|
121 |
<show_in_default>1</show_in_default>
|
123 |
<show_in_store>0</show_in_store>
|
124 |
<expanded>1</expanded>
|
125 |
<fields>
|
126 |
+
<contact_title translate="label" module="connector">
|
127 |
+
<label>Contact Sync</label>
|
128 |
+
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
129 |
+
<sort_order>10</sort_order>
|
130 |
+
<show_in_default>1</show_in_default>
|
131 |
+
<show_in_website>1</show_in_website>
|
132 |
+
<show_in_store>0</show_in_store>
|
133 |
+
</contact_title>
|
134 |
+
<contact_enabled translate="label" module="connector">
|
135 |
<label>Enabled</label>
|
136 |
<frontend_type>select</frontend_type>
|
137 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
138 |
+
<sort_order>20</sort_order>
|
139 |
<show_in_default>1</show_in_default>
|
140 |
<show_in_website>1</show_in_website>
|
141 |
<show_in_store>0</show_in_store>
|
142 |
+
</contact_enabled>
|
143 |
+
<subscriber_title translate="label" module="connector">
|
144 |
+
<label>Subscriber Sync</label>
|
145 |
+
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
146 |
+
<sort_order>50</sort_order>
|
|
|
147 |
<show_in_default>1</show_in_default>
|
148 |
+
<show_in_website>1</show_in_website>
|
149 |
<show_in_store>0</show_in_store>
|
150 |
+
</subscriber_title>
|
151 |
+
<subscriber_enabled translate="label" module="connector">
|
152 |
+
<label>Enabled</label>
|
|
|
153 |
<frontend_type>select</frontend_type>
|
154 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
155 |
+
<sort_order>60</sort_order>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
156 |
<show_in_default>1</show_in_default>
|
157 |
+
<show_in_website>1</show_in_website>
|
158 |
<show_in_store>0</show_in_store>
|
159 |
+
</subscriber_enabled>
|
160 |
+
<order_title translate="label" module="connector">
|
161 |
+
<label>Order Sync</label>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
162 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
163 |
+
<sort_order>70</sort_order>
|
164 |
<show_in_default>1</show_in_default>
|
165 |
<show_in_website>1</show_in_website>
|
166 |
<show_in_store>0</show_in_store>
|
167 |
+
</order_title>
|
168 |
+
<order_enabled translate="label" module="connector">
|
169 |
<label>Enabled</label>
|
170 |
<frontend_type>select</frontend_type>
|
171 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
172 |
+
<sort_order>80</sort_order>
|
173 |
<show_in_default>1</show_in_default>
|
174 |
<show_in_website>1</show_in_website>
|
175 |
<show_in_store>0</show_in_store>
|
176 |
</order_enabled>
|
177 |
+
<wishlist_title translate="label" module="connector">
|
178 |
+
<label>Wishlist Sync</label>
|
179 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
180 |
+
<sort_order>90</sort_order>
|
181 |
<show_in_default>1</show_in_default>
|
182 |
<show_in_website>1</show_in_website>
|
183 |
<show_in_store>0</show_in_store>
|
184 |
+
</wishlist_title>
|
185 |
+
<wishlist_enabled translate="label" module="connector">
|
186 |
<label>Enabled</label>
|
187 |
<frontend_type>select</frontend_type>
|
188 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
189 |
+
<sort_order>100</sort_order>
|
190 |
<show_in_default>1</show_in_default>
|
191 |
<show_in_website>1</show_in_website>
|
192 |
<show_in_store>0</show_in_store>
|
193 |
</wishlist_enabled>
|
194 |
+
<validator>
|
195 |
+
<frontend_type>hidden</frontend_type>
|
196 |
+
<frontend_model>connector/adminhtml_system_config_waitingfield</frontend_model>
|
197 |
+
<sort_order>110</sort_order>
|
198 |
+
<show_in_default>1</show_in_default>
|
199 |
+
<show_in_website>1</show_in_website>
|
200 |
+
<show_in_store>0</show_in_store>
|
201 |
+
<can_be_empty>1</can_be_empty>
|
202 |
+
</validator>
|
203 |
</fields>
|
204 |
+
</sync>
|
205 |
</groups>
|
206 |
</connector_sync_settings>
|
207 |
+
<connector_data_field_settings translate="label" module="connector">
|
208 |
<label><![CDATA[Data Mapping]]></label>
|
209 |
<tab>connector</tab>
|
210 |
<frontend_type>text</frontend_type>
|
213 |
<show_in_website>1</show_in_website>
|
214 |
<show_in_store>0</show_in_store>
|
215 |
<groups>
|
216 |
+
<customer_data translate="label" module="connector">
|
217 |
+
<label>Data Fields Mapping</label>
|
218 |
<frontend_type>text</frontend_type>
|
219 |
<sort_order>20</sort_order>
|
220 |
<show_in_default>1</show_in_default>
|
222 |
<show_in_store>0</show_in_store>
|
223 |
<expanded>1</expanded>
|
224 |
<fields>
|
225 |
+
<customer_title translate="label" module="connector">
|
226 |
<label>Customer Information</label>
|
227 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
228 |
<sort_order>10</sort_order>
|
230 |
<show_in_website>1</show_in_website>
|
231 |
<show_in_store>0</show_in_store>
|
232 |
</customer_title>
|
233 |
+
<title translate="label" module="connector">
|
234 |
+
<label>Title</label>
|
|
|
235 |
<frontend_type>select</frontend_type>
|
236 |
<source_model>connector/system_config_source_datafields</source_model>
|
237 |
<sort_order>20</sort_order>
|
238 |
<show_in_default>1</show_in_default>
|
239 |
<show_in_website>1</show_in_website>
|
240 |
<show_in_store>0</show_in_store>
|
241 |
+
</title>
|
242 |
+
<customer_id translate="label" module="connector">
|
243 |
+
<label>Customer ID</label>
|
|
|
244 |
<frontend_type>select</frontend_type>
|
245 |
<source_model>connector/system_config_source_datafields</source_model>
|
246 |
<sort_order>30</sort_order>
|
247 |
+
<show_in_default>0</show_in_default>
|
248 |
+
<show_in_website>0</show_in_website>
|
249 |
<show_in_store>0</show_in_store>
|
250 |
+
</customer_id>
|
251 |
+
<firstname translate="label" module="connector">
|
|
|
252 |
<label>First Name</label>
|
253 |
<frontend_type>select</frontend_type>
|
254 |
<source_model>connector/system_config_source_datafields</source_model>
|
257 |
<show_in_website>1</show_in_website>
|
258 |
<show_in_store>0</show_in_store>
|
259 |
</firstname>
|
260 |
+
<lastname translate="label" module="connector">
|
261 |
<label>Last Name</label>
|
262 |
<frontend_type>select</frontend_type>
|
263 |
<source_model>connector/system_config_source_datafields</source_model>
|
266 |
<show_in_website>1</show_in_website>
|
267 |
<show_in_store>0</show_in_store>
|
268 |
</lastname>
|
269 |
+
<dob translate="label" module="connector">
|
270 |
<label>D.O.B.</label>
|
271 |
<frontend_type>select</frontend_type>
|
272 |
<source_model>connector/system_config_source_datafields</source_model>
|
275 |
<show_in_website>1</show_in_website>
|
276 |
<show_in_store>0</show_in_store>
|
277 |
</dob>
|
278 |
+
<gender translate="label" module="connector">
|
279 |
<label>Gender</label>
|
280 |
<frontend_type>select</frontend_type>
|
281 |
<source_model>connector/system_config_source_datafields</source_model>
|
284 |
<show_in_website>1</show_in_website>
|
285 |
<show_in_store>0</show_in_store>
|
286 |
</gender>
|
287 |
+
<website_name translate="label" module="connector">
|
288 |
<label>Website Created On</label>
|
289 |
<frontend_type>select</frontend_type>
|
290 |
<source_model>connector/system_config_source_datafields</source_model>
|
292 |
<show_in_default>1</show_in_default>
|
293 |
<show_in_website>1</show_in_website>
|
294 |
<show_in_store>0</show_in_store>
|
295 |
+
</website_name>
|
296 |
+
<store_name translate="label" module="connector">
|
297 |
<label>Store Created On</label>
|
298 |
<frontend_type>select</frontend_type>
|
299 |
<source_model>connector/system_config_source_datafields</source_model>
|
301 |
<show_in_default>1</show_in_default>
|
302 |
<show_in_website>1</show_in_website>
|
303 |
<show_in_store>0</show_in_store>
|
304 |
+
</store_name>
|
305 |
+
<created_at translate="label" module="connector">
|
306 |
<label>Account Created Date</label>
|
307 |
<frontend_type>select</frontend_type>
|
308 |
<source_model>connector/system_config_source_datafields</source_model>
|
310 |
<show_in_default>1</show_in_default>
|
311 |
<show_in_website>1</show_in_website>
|
312 |
<show_in_store>0</show_in_store>
|
313 |
+
</created_at>
|
314 |
+
<last_logged_date translate="label" module="connector">
|
315 |
<label>Last Logged In Date</label>
|
316 |
<frontend_type>select</frontend_type>
|
317 |
<source_model>connector/system_config_source_datafields</source_model>
|
319 |
<show_in_default>1</show_in_default>
|
320 |
<show_in_website>1</show_in_website>
|
321 |
<show_in_store>0</show_in_store>
|
322 |
+
</last_logged_date>
|
323 |
+
<customer_group translate="label" module="connector">
|
324 |
<label>Customer Group</label>
|
325 |
<frontend_type>select</frontend_type>
|
326 |
<source_model>connector/system_config_source_datafields</source_model>
|
329 |
<show_in_website>1</show_in_website>
|
330 |
<show_in_store>0</show_in_store>
|
331 |
</customer_group>
|
332 |
+
<address_title translate="label" module="connector">
|
333 |
<label>Address Information</label>
|
334 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
335 |
<sort_order>130</sort_order>
|
337 |
<show_in_website>1</show_in_website>
|
338 |
<show_in_store>0</show_in_store>
|
339 |
</address_title>
|
340 |
+
<billing_address_1 translate="label" module="connector">
|
341 |
<label>Billing Address Line 1</label>
|
342 |
<frontend_type>select</frontend_type>
|
343 |
<source_model>connector/system_config_source_datafields</source_model>
|
346 |
<show_in_website>1</show_in_website>
|
347 |
<show_in_store>0</show_in_store>
|
348 |
</billing_address_1>
|
349 |
+
<billing_address_2 translate="label" module="connector">
|
350 |
<label>Billing Address Line 2</label>
|
351 |
<frontend_type>select</frontend_type>
|
352 |
<source_model>connector/system_config_source_datafields</source_model>
|
355 |
<show_in_website>1</show_in_website>
|
356 |
<show_in_store>0</show_in_store>
|
357 |
</billing_address_2>
|
358 |
+
<billing_city translate="label" module="connector">
|
359 |
<label>Billing City</label>
|
360 |
<frontend_type>select</frontend_type>
|
361 |
<source_model>connector/system_config_source_datafields</source_model>
|
364 |
<show_in_website>1</show_in_website>
|
365 |
<show_in_store>0</show_in_store>
|
366 |
</billing_city>
|
367 |
+
<billing_state translate="label" module="connector">
|
368 |
+
<label>Billing State/Region</label>
|
369 |
+
<frontend_type>select</frontend_type>
|
370 |
+
<source_model>connector/system_config_source_datafields</source_model>
|
371 |
+
<sort_order>155</sort_order>
|
372 |
+
<show_in_default>1</show_in_default>
|
373 |
+
<show_in_website>1</show_in_website>
|
374 |
+
<show_in_store>0</show_in_store>
|
375 |
+
</billing_state>
|
376 |
+
<billing_country translate="label" module="connector">
|
377 |
<label>Billing Country</label>
|
378 |
<frontend_type>select</frontend_type>
|
379 |
<source_model>connector/system_config_source_datafields</source_model>
|
382 |
<show_in_website>1</show_in_website>
|
383 |
<show_in_store>0</show_in_store>
|
384 |
</billing_country>
|
385 |
+
<billing_postcode translate="label" module="connector">
|
386 |
<label>Billing Zip/Postcode</label>
|
387 |
<frontend_type>select</frontend_type>
|
388 |
<source_model>connector/system_config_source_datafields</source_model>
|
391 |
<show_in_website>1</show_in_website>
|
392 |
<show_in_store>0</show_in_store>
|
393 |
</billing_postcode>
|
394 |
+
<billing_telephone translate="label" module="connector">
|
395 |
<label>Billing Telephone</label>
|
396 |
<frontend_type>select</frontend_type>
|
397 |
<source_model>connector/system_config_source_datafields</source_model>
|
400 |
<show_in_website>1</show_in_website>
|
401 |
<show_in_store>0</show_in_store>
|
402 |
</billing_telephone>
|
403 |
+
<delivery_address_1 translate="label" module="connector">
|
404 |
<label>Delivery Address Line 1</label>
|
405 |
<frontend_type>select</frontend_type>
|
406 |
<source_model>connector/system_config_source_datafields</source_model>
|
409 |
<show_in_website>1</show_in_website>
|
410 |
<show_in_store>0</show_in_store>
|
411 |
</delivery_address_1>
|
412 |
+
<delivery_address_2 translate="label" module="connector">
|
413 |
<label>Delivery Address Line 2</label>
|
414 |
<frontend_type>select</frontend_type>
|
415 |
<source_model>connector/system_config_source_datafields</source_model>
|
418 |
<show_in_website>1</show_in_website>
|
419 |
<show_in_store>0</show_in_store>
|
420 |
</delivery_address_2>
|
421 |
+
<delivery_city translate="label" module="connector">
|
422 |
<label>Delivery City</label>
|
423 |
<frontend_type>select</frontend_type>
|
424 |
<source_model>connector/system_config_source_datafields</source_model>
|
427 |
<show_in_website>1</show_in_website>
|
428 |
<show_in_store>0</show_in_store>
|
429 |
</delivery_city>
|
430 |
+
<delivery_state translate="label" module="connector">
|
431 |
+
<label>Delivery State/Region</label>
|
432 |
+
<frontend_type>select</frontend_type>
|
433 |
+
<source_model>connector/system_config_source_datafields</source_model>
|
434 |
+
<sort_order>215</sort_order>
|
435 |
+
<show_in_default>1</show_in_default>
|
436 |
+
<show_in_website>1</show_in_website>
|
437 |
+
<show_in_store>0</show_in_store>
|
438 |
+
</delivery_state>
|
439 |
+
<delivery_country translate="label" module="connector">
|
440 |
<label>Delivery Country</label>
|
441 |
<frontend_type>select</frontend_type>
|
442 |
<source_model>connector/system_config_source_datafields</source_model>
|
445 |
<show_in_website>1</show_in_website>
|
446 |
<show_in_store>0</show_in_store>
|
447 |
</delivery_country>
|
448 |
+
<delivery_postcode translate="label" module="connector">
|
449 |
<label>Delivery Zip/Postcode</label>
|
450 |
<frontend_type>select</frontend_type>
|
451 |
<source_model>connector/system_config_source_datafields</source_model>
|
454 |
<show_in_website>1</show_in_website>
|
455 |
<show_in_store>0</show_in_store>
|
456 |
</delivery_postcode>
|
457 |
+
<delivery_telephone translate="label" module="connector">
|
458 |
<label>Delivery Telephone</label>
|
459 |
<frontend_type>select</frontend_type>
|
460 |
<source_model>connector/system_config_source_datafields</source_model>
|
463 |
<show_in_website>1</show_in_website>
|
464 |
<show_in_store>0</show_in_store>
|
465 |
</delivery_telephone>
|
466 |
+
<sales_title translate="label" module="connector">
|
467 |
<label>Sales Information</label>
|
468 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
469 |
<sort_order>260</sort_order>
|
471 |
<show_in_website>1</show_in_website>
|
472 |
<show_in_store>0</show_in_store>
|
473 |
</sales_title>
|
474 |
+
<number_of_orders translate="label" module="connector">
|
475 |
<label>Total Number of Orders</label>
|
476 |
<frontend_type>select</frontend_type>
|
477 |
<source_model>connector/system_config_source_datafields</source_model>
|
479 |
<show_in_default>1</show_in_default>
|
480 |
<show_in_website>1</show_in_website>
|
481 |
<show_in_store>0</show_in_store>
|
482 |
+
</number_of_orders>
|
483 |
+
<average_order_value translate="label" module="connector">
|
484 |
<label>Average Order Value</label>
|
485 |
<frontend_type>select</frontend_type>
|
486 |
<source_model>connector/system_config_source_datafields</source_model>
|
489 |
<show_in_website>1</show_in_website>
|
490 |
<show_in_store>0</show_in_store>
|
491 |
</average_order_value>
|
492 |
+
<total_spend translate="label" module="connector">
|
493 |
<label>Total Spend</label>
|
494 |
<frontend_type>select</frontend_type>
|
495 |
<source_model>connector/system_config_source_datafields</source_model>
|
498 |
<show_in_website>1</show_in_website>
|
499 |
<show_in_store>0</show_in_store>
|
500 |
</total_spend>
|
501 |
+
<last_order_date translate="label" module="connector">
|
502 |
<label>Last Purchase Date</label>
|
503 |
<frontend_type>select</frontend_type>
|
504 |
<source_model>connector/system_config_source_datafields</source_model>
|
506 |
<show_in_default>1</show_in_default>
|
507 |
<show_in_website>1</show_in_website>
|
508 |
<show_in_store>0</show_in_store>
|
509 |
+
</last_order_date>
|
510 |
+
<last_order_id translate="label" module="connector">
|
511 |
+
<label>Last Order ID</label>
|
512 |
<frontend_type>select</frontend_type>
|
513 |
<source_model>connector/system_config_source_datafields</source_model>
|
514 |
<sort_order>310</sort_order>
|
515 |
<show_in_default>1</show_in_default>
|
516 |
<show_in_website>1</show_in_website>
|
517 |
<show_in_store>0</show_in_store>
|
518 |
+
</last_order_id>
|
519 |
+
<validator translate="label" module="connector">
|
520 |
<label>Validation Block</label>
|
521 |
<frontend_type>select</frontend_type>
|
522 |
<source_model>connector/system_config_source_datafields</source_model>
|
530 |
</validator>
|
531 |
</fields>
|
532 |
</customer_data>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
533 |
</groups>
|
534 |
</connector_data_field_settings>
|
535 |
+
<connector_roi_page_tracking_settings translate="label" module="connector">
|
536 |
<label><![CDATA[ROI & Tracking]]></label>
|
537 |
<tab>connector</tab>
|
538 |
<frontend_type>text</frontend_type>
|
541 |
<show_in_website>1</show_in_website>
|
542 |
<show_in_store>0</show_in_store>
|
543 |
<groups>
|
544 |
+
<page_tracking translate="label" module="connector">
|
545 |
<label>Page Tracking</label>
|
546 |
<frontend_type>text</frontend_type>
|
547 |
<sort_order>10</sort_order>
|
550 |
<show_in_store>0</show_in_store>
|
551 |
<expanded>1</expanded>
|
552 |
<fields>
|
553 |
+
<enabled translate="label" module="connector">
|
554 |
<label>Enabled</label>
|
555 |
<frontend_type>select</frontend_type>
|
556 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
561 |
</enabled>
|
562 |
</fields>
|
563 |
</page_tracking>
|
564 |
+
<roi_tracking translate="label" module="connector">
|
565 |
<label>ROI Tracking</label>
|
566 |
<frontend_type>text</frontend_type>
|
567 |
<sort_order>20</sort_order>
|
570 |
<show_in_store>0</show_in_store>
|
571 |
<expanded>1</expanded>
|
572 |
<fields>
|
573 |
+
<enabled translate="label" module="connector">
|
574 |
<label>Enabled</label>
|
575 |
<frontend_type>select</frontend_type>
|
576 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
583 |
</roi_tracking>
|
584 |
</groups>
|
585 |
</connector_roi_page_tracking_settings>
|
586 |
+
<lost_basket_settings translate="label" module="connector">
|
587 |
<label><![CDATA[Lost Baskets]]></label>
|
588 |
<tab>connector</tab>
|
589 |
<frontend_type>text</frontend_type>
|
590 |
<sort_order>6000</sort_order>
|
591 |
<show_in_default>1</show_in_default>
|
592 |
<show_in_website>1</show_in_website>
|
593 |
+
<show_in_store>0</show_in_store>
|
594 |
<groups>
|
595 |
+
<active translate="label" module="connector">
|
596 |
<label>Lost Baskets Settings</label>
|
597 |
<frontend_type>text</frontend_type>
|
598 |
<sort_order>100</sort_order>
|
600 |
<show_in_website>0</show_in_website>
|
601 |
<show_in_store>0</show_in_store>
|
602 |
<fields>
|
603 |
+
<active translate="label" module="connector">
|
604 |
+
<label>Consider Order Complete For Lost Baskets</label>
|
605 |
<frontend_type>select</frontend_type>
|
606 |
<source_model>connector/system_config_source_activebasket</source_model>
|
607 |
<sort_order>10</sort_order>
|
611 |
</active>
|
612 |
</fields>
|
613 |
</active>
|
614 |
+
<customers translate="label" module="connector">
|
615 |
<label>Customers</label>
|
616 |
<frontend_type>text</frontend_type>
|
617 |
<sort_order>10</sort_order>
|
620 |
<show_in_store>1</show_in_store>
|
621 |
<expanded>1</expanded>
|
622 |
<fields>
|
623 |
+
<heading_1 translate="label" module="connector">
|
624 |
+
<label>Lost Basket 1</label>
|
625 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
626 |
<sort_order>10</sort_order>
|
627 |
<show_in_default>1</show_in_default>
|
628 |
<show_in_website>1</show_in_website>
|
629 |
<show_in_store>1</show_in_store>
|
630 |
</heading_1>
|
631 |
+
<enabled_1 translate="label" module="connector">
|
632 |
<label>Enabled/Disabled</label>
|
633 |
<frontend_type>select</frontend_type>
|
634 |
<config_path>lostbaskets/customers/enabled_1</config_path>
|
638 |
<show_in_website>1</show_in_website>
|
639 |
<show_in_store>1</show_in_store>
|
640 |
</enabled_1>
|
641 |
+
<send_after_1 translate="label" module="connector">
|
642 |
+
<label>Send After (min)</label>
|
643 |
<frontend_type>select</frontend_type>
|
644 |
<source_model>connector/system_config_source_lostbasket</source_model>
|
645 |
<sort_order>30</sort_order>
|
647 |
<show_in_website>1</show_in_website>
|
648 |
<show_in_store>1</show_in_store>
|
649 |
</send_after_1>
|
650 |
+
<campaign_1 translate="label" module="connector">
|
651 |
<label>Campaign To Send</label>
|
652 |
<frontend_type>select</frontend_type>
|
653 |
<source_model>connector/system_config_source_campaigns</source_model>
|
656 |
<show_in_website>1</show_in_website>
|
657 |
<show_in_store>1</show_in_store>
|
658 |
</campaign_1>
|
659 |
+
<heading_2 translate="label" module="connector">
|
660 |
+
<label>Lost Basket 2</label>
|
661 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
662 |
<sort_order>50</sort_order>
|
663 |
<show_in_default>1</show_in_default>
|
664 |
<show_in_website>1</show_in_website>
|
665 |
<show_in_store>1</show_in_store>
|
666 |
</heading_2>
|
667 |
+
<enabled_2 translate="label" module="connector">
|
668 |
<label>Enabled/Disabled</label>
|
669 |
<frontend_type>select</frontend_type>
|
670 |
<config_path>lostbaskets/customers/enabled_2</config_path>
|
674 |
<show_in_website>1</show_in_website>
|
675 |
<show_in_store>1</show_in_store>
|
676 |
</enabled_2>
|
677 |
+
<send_after_2 translate="label" module="connector">
|
678 |
+
<label>Send After (hrs)</label>
|
679 |
<frontend_type>select</frontend_type>
|
680 |
+
<source_model>connector/system_config_source_sendcampaignafter</source_model>
|
681 |
<sort_order>70</sort_order>
|
682 |
<show_in_default>1</show_in_default>
|
683 |
<show_in_website>1</show_in_website>
|
684 |
<show_in_store>1</show_in_store>
|
685 |
</send_after_2>
|
686 |
+
<campaign_2 translate="label" module="connector">
|
687 |
+
<label>Campaign To Send</label>
|
688 |
<frontend_type>select</frontend_type>
|
689 |
<source_model>connector/system_config_source_campaigns</source_model>
|
690 |
<sort_order>80</sort_order>
|
692 |
<show_in_website>1</show_in_website>
|
693 |
<show_in_store>1</show_in_store>
|
694 |
</campaign_2>
|
695 |
+
<heading_3 translate="label" module="connector">
|
696 |
+
<label>Lost Basket 3</label>
|
697 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
698 |
<sort_order>90</sort_order>
|
699 |
<show_in_default>1</show_in_default>
|
700 |
<show_in_website>1</show_in_website>
|
701 |
<show_in_store>1</show_in_store>
|
702 |
</heading_3>
|
703 |
+
<enabled_3 translate="label" module="connector">
|
704 |
<label>Enabled/Disabled</label>
|
705 |
<frontend_type>select</frontend_type>
|
706 |
<config_path>lostbaskets/customers/enabled_3</config_path>
|
710 |
<show_in_website>1</show_in_website>
|
711 |
<show_in_store>1</show_in_store>
|
712 |
</enabled_3>
|
713 |
+
<send_after_3 translate="label" module="connector">
|
714 |
+
<label>Send After (hrs)</label>
|
715 |
<frontend_type>select</frontend_type>
|
716 |
+
<source_model>connector/system_config_source_sendcampaignafter</source_model>
|
717 |
<sort_order>110</sort_order>
|
718 |
<show_in_default>1</show_in_default>
|
719 |
<show_in_website>1</show_in_website>
|
720 |
<show_in_store>1</show_in_store>
|
721 |
</send_after_3>
|
722 |
+
<campaign_3 translate="label" module="connector">
|
723 |
+
<label>Campaign To Send</label>
|
724 |
<frontend_type>select</frontend_type>
|
725 |
<source_model>connector/system_config_source_campaigns</source_model>
|
726 |
<sort_order>120</sort_order>
|
730 |
</campaign_3>
|
731 |
</fields>
|
732 |
</customers>
|
733 |
+
<guests translate="label" module="connector">
|
734 |
<label>Guests</label>
|
735 |
<frontend_type>text</frontend_type>
|
736 |
<sort_order>20</sort_order>
|
737 |
<show_in_default>1</show_in_default>
|
738 |
<show_in_website>1</show_in_website>
|
739 |
+
<show_in_store>0</show_in_store>
|
740 |
<fields>
|
741 |
+
<heading_1 translate="label" module="connector">
|
742 |
+
<label>Lost Basket 1</label>
|
743 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
744 |
<sort_order>10</sort_order>
|
745 |
<show_in_default>1</show_in_default>
|
746 |
<show_in_website>1</show_in_website>
|
747 |
+
<show_in_store>0</show_in_store>
|
748 |
</heading_1>
|
749 |
+
<enabled_1 translate="label" module="connector">
|
750 |
<label>Enabled/Disabled</label>
|
751 |
<frontend_type>select</frontend_type>
|
752 |
<config_path>lostbaskets/guests/enabled_1</config_path>
|
754 |
<sort_order>20</sort_order>
|
755 |
<show_in_default>1</show_in_default>
|
756 |
<show_in_website>1</show_in_website>
|
757 |
+
<show_in_store>0</show_in_store>
|
758 |
</enabled_1>
|
759 |
+
<send_after_1 translate="label" module="connector">
|
760 |
+
<label>Send After (min)</label>
|
761 |
<frontend_type>select</frontend_type>
|
762 |
<source_model>connector/system_config_source_lostbasket</source_model>
|
763 |
<sort_order>30</sort_order>
|
764 |
<show_in_default>1</show_in_default>
|
765 |
<show_in_website>1</show_in_website>
|
766 |
+
<show_in_store>0</show_in_store>
|
767 |
</send_after_1>
|
768 |
+
<campaign_1 translate="label" module="connector">
|
769 |
<label>Campaign To Send</label>
|
770 |
<frontend_type>select</frontend_type>
|
771 |
<source_model>connector/system_config_source_campaigns</source_model>
|
772 |
<sort_order>40</sort_order>
|
773 |
<show_in_default>1</show_in_default>
|
774 |
<show_in_website>1</show_in_website>
|
775 |
+
<show_in_store>0</show_in_store>
|
776 |
</campaign_1>
|
777 |
+
<heading_2 translate="label" module="connector">
|
778 |
+
<label>Lost Basket 2</label>
|
|
|
779 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
780 |
<sort_order>50</sort_order>
|
781 |
<show_in_default>1</show_in_default>
|
782 |
<show_in_website>1</show_in_website>
|
783 |
+
<show_in_store>0</show_in_store>
|
784 |
</heading_2>
|
785 |
+
<enabled_2 translate="label" module="connector">
|
786 |
<label>Enabled/Disabled</label>
|
787 |
<frontend_type>select</frontend_type>
|
788 |
<config_path>lostbaskets/guests/enabled_2</config_path>
|
790 |
<sort_order>60</sort_order>
|
791 |
<show_in_default>1</show_in_default>
|
792 |
<show_in_website>1</show_in_website>
|
793 |
+
<show_in_store>0</show_in_store>
|
794 |
</enabled_2>
|
795 |
+
<send_after_2 translate="label" module="connector">
|
796 |
+
<label>Send After (hrs)</label>
|
797 |
<frontend_type>select</frontend_type>
|
798 |
+
<source_model>connector/system_config_source_sendcampaignafter</source_model>
|
799 |
<sort_order>70</sort_order>
|
800 |
<show_in_default>1</show_in_default>
|
801 |
<show_in_website>1</show_in_website>
|
802 |
+
<show_in_store>0</show_in_store>
|
803 |
</send_after_2>
|
804 |
+
<campaign_2 translate="label" module="connector">
|
805 |
+
<label>Campaign To Send</label>
|
806 |
<frontend_type>select</frontend_type>
|
807 |
<source_model>connector/system_config_source_campaigns</source_model>
|
808 |
<sort_order>80</sort_order>
|
809 |
<show_in_default>1</show_in_default>
|
810 |
<show_in_website>1</show_in_website>
|
811 |
+
<show_in_store>0</show_in_store>
|
812 |
</campaign_2>
|
813 |
+
<heading_3 translate="label" module="connector">
|
814 |
+
<label>Lost Basket 3</label>
|
|
|
815 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
816 |
<sort_order>90</sort_order>
|
817 |
<show_in_default>1</show_in_default>
|
818 |
<show_in_website>1</show_in_website>
|
819 |
+
<show_in_store>0</show_in_store>
|
820 |
</heading_3>
|
821 |
+
<enabled_3 translate="label" module="connector">
|
822 |
<label>Enabled/Disabled</label>
|
823 |
<frontend_type>select</frontend_type>
|
824 |
<config_path>lostbaskets/guests/enabled_3</config_path>
|
826 |
<sort_order>100</sort_order>
|
827 |
<show_in_default>1</show_in_default>
|
828 |
<show_in_website>1</show_in_website>
|
829 |
+
<show_in_store>0</show_in_store>
|
830 |
</enabled_3>
|
831 |
+
<send_after_3 translate="label" module="connector">
|
832 |
+
<label>Send After (hrs)</label>
|
833 |
<frontend_type>select</frontend_type>
|
834 |
+
<source_model>connector/system_config_source_sendcampaignafter</source_model>
|
835 |
<sort_order>110</sort_order>
|
836 |
<show_in_default>1</show_in_default>
|
837 |
<show_in_website>1</show_in_website>
|
838 |
+
<show_in_store>0</show_in_store>
|
839 |
</send_after_3>
|
840 |
+
<campaign_3 translate="label" module="connector">
|
841 |
+
<label>Campaign To Send</label>
|
842 |
<frontend_type>select</frontend_type>
|
843 |
<source_model>connector/system_config_source_campaigns</source_model>
|
844 |
<sort_order>120</sort_order>
|
845 |
<show_in_default>1</show_in_default>
|
846 |
<show_in_website>1</show_in_website>
|
847 |
+
<show_in_store>0</show_in_store>
|
848 |
</campaign_3>
|
849 |
</fields>
|
850 |
</guests>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
851 |
</groups>
|
852 |
</lost_basket_settings>
|
853 |
+
<sms_section translate="label" module="connector">
|
854 |
<label><![CDATA[SMS]]></label>
|
855 |
<tab>connector</tab>
|
856 |
<frontend_type>text</frontend_type>
|
857 |
<sort_order>7000</sort_order>
|
858 |
<show_in_default>1</show_in_default>
|
859 |
<show_in_website>1</show_in_website>
|
860 |
+
<show_in_store>0</show_in_store>
|
861 |
<groups>
|
862 |
+
<sms_message_one translate="label" module="connector">
|
863 |
<label>SMS Message 1</label>
|
864 |
<frontend_type>text</frontend_type>
|
865 |
<sort_order>10</sort_order>
|
866 |
<show_in_default>1</show_in_default>
|
867 |
<show_in_website>1</show_in_website>
|
868 |
+
<show_in_store>0</show_in_store>
|
869 |
<fields>
|
870 |
+
<enabled translate="label" module="connector">
|
871 |
<label>Enabled</label>
|
872 |
<frontend_type>select</frontend_type>
|
873 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
874 |
<sort_order>10</sort_order>
|
875 |
<show_in_default>1</show_in_default>
|
876 |
<show_in_website>1</show_in_website>
|
877 |
+
<show_in_store>0</show_in_store>
|
878 |
</enabled>
|
879 |
+
<order_status translate="label" module="connector">
|
880 |
<label>Order Status</label>
|
881 |
<sort_order>20</sort_order>
|
882 |
<frontend_type>select</frontend_type>
|
883 |
<source_model>connector/system_config_source_orderstatus</source_model>
|
884 |
<show_in_default>1</show_in_default>
|
885 |
<show_in_website>1</show_in_website>
|
886 |
+
<show_in_store>0</show_in_store>
|
887 |
</order_status>
|
888 |
+
<message translate="label" module="connector">
|
889 |
<label>Message</label>
|
890 |
<frontend_type>textarea</frontend_type>
|
891 |
<frontend_model>connector/adminhtml_system_config_smsmessageone</frontend_model>
|
892 |
<sort_order>30</sort_order>
|
893 |
<show_in_default>1</show_in_default>
|
894 |
<show_in_website>1</show_in_website>
|
895 |
+
<show_in_store>0</show_in_store>
|
896 |
<validate>validate-length maximum-length-110</validate>
|
897 |
</message>
|
898 |
</fields>
|
|
|
899 |
</sms_message_one>
|
900 |
+
<sms_message_two translate="label" module="connector">
|
901 |
<label>SMS Message 2</label>
|
902 |
<frontend_type>text</frontend_type>
|
903 |
<sort_order>20</sort_order>
|
904 |
<show_in_default>1</show_in_default>
|
905 |
<show_in_website>1</show_in_website>
|
906 |
+
<show_in_store>0</show_in_store>
|
907 |
<fields>
|
908 |
+
<enabled translate="label" module="connector">
|
909 |
<label>Enabled</label>
|
910 |
<frontend_type>select</frontend_type>
|
911 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
912 |
<sort_order>10</sort_order>
|
913 |
<show_in_default>1</show_in_default>
|
914 |
<show_in_website>1</show_in_website>
|
915 |
+
<show_in_store>0</show_in_store>
|
916 |
</enabled>
|
917 |
+
<order_status translate="label" module="connector">
|
918 |
<label>Order Status</label>
|
919 |
<sort_order>20</sort_order>
|
920 |
<frontend_type>select</frontend_type>
|
921 |
<source_model>connector/system_config_source_orderstatus</source_model>
|
922 |
<show_in_default>1</show_in_default>
|
923 |
<show_in_website>1</show_in_website>
|
924 |
+
<show_in_store>0</show_in_store>
|
925 |
</order_status>
|
926 |
+
<message translate="label" module="connector">
|
927 |
<label>Message</label>
|
928 |
<frontend_type>textarea</frontend_type>
|
929 |
<frontend_model>connector/adminhtml_system_config_smsmessagetwo</frontend_model>
|
930 |
<sort_order>30</sort_order>
|
931 |
<show_in_default>1</show_in_default>
|
932 |
<show_in_website>1</show_in_website>
|
933 |
+
<show_in_store>0</show_in_store>
|
934 |
<validate>validate-length maximum-length-110</validate>
|
935 |
</message>
|
936 |
</fields>
|
|
|
937 |
</sms_message_two>
|
938 |
+
<sms_message_three translate="label" module="connector">
|
939 |
<label>SMS Message 3</label>
|
940 |
<frontend_type>text</frontend_type>
|
941 |
<sort_order>30</sort_order>
|
942 |
<show_in_default>1</show_in_default>
|
943 |
<show_in_website>1</show_in_website>
|
944 |
+
<show_in_store>0</show_in_store>
|
945 |
<fields>
|
946 |
+
<enabled translate="label" module="connector">
|
947 |
<label>Enabled</label>
|
948 |
<frontend_type>select</frontend_type>
|
949 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
950 |
<sort_order>10</sort_order>
|
951 |
<show_in_default>1</show_in_default>
|
952 |
<show_in_website>1</show_in_website>
|
953 |
+
<show_in_store>0</show_in_store>
|
954 |
</enabled>
|
955 |
+
<order_status translate="label" module="connector">
|
956 |
<label>Order Status</label>
|
957 |
<sort_order>20</sort_order>
|
958 |
<frontend_type>select</frontend_type>
|
959 |
<source_model>connector/system_config_source_orderstatus</source_model>
|
960 |
<show_in_default>1</show_in_default>
|
961 |
<show_in_website>1</show_in_website>
|
962 |
+
<show_in_store>0</show_in_store>
|
963 |
</order_status>
|
964 |
+
<message translate="label" module="connector">
|
965 |
<label>Message</label>
|
966 |
<frontend_type>textarea</frontend_type>
|
967 |
<frontend_model>connector/adminhtml_system_config_smsmessagethree</frontend_model>
|
968 |
<sort_order>30</sort_order>
|
969 |
<show_in_default>1</show_in_default>
|
970 |
<show_in_website>1</show_in_website>
|
971 |
+
<show_in_store>0</show_in_store>
|
972 |
<validate>validate-length maximum-length-110</validate>
|
973 |
</message>
|
974 |
</fields>
|
975 |
</sms_message_three>
|
976 |
+
<sms_message_four translate="label" module="connector">
|
977 |
<label>SMS Message 4</label>
|
978 |
<frontend_type>text</frontend_type>
|
979 |
<sort_order>40</sort_order>
|
980 |
<show_in_default>1</show_in_default>
|
981 |
<show_in_website>1</show_in_website>
|
982 |
+
<show_in_store>0</show_in_store>
|
983 |
<fields>
|
984 |
+
<enabled translate="label" module="connector">
|
985 |
<label>Enabled</label>
|
986 |
<frontend_type>select</frontend_type>
|
987 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
988 |
<sort_order>10</sort_order>
|
989 |
<show_in_default>1</show_in_default>
|
990 |
<show_in_website>1</show_in_website>
|
991 |
+
<show_in_store>0</show_in_store>
|
992 |
</enabled>
|
993 |
+
<order_status translate="label" module="connector">
|
994 |
<label>Order Status</label>
|
995 |
<sort_order>20</sort_order>
|
996 |
<frontend_type>select</frontend_type>
|
997 |
<source_model>connector/system_config_source_orderstatus</source_model>
|
998 |
<show_in_default>1</show_in_default>
|
999 |
<show_in_website>1</show_in_website>
|
1000 |
+
<show_in_store>0</show_in_store>
|
1001 |
</order_status>
|
1002 |
+
<message translate="label" module="connector">
|
1003 |
<label>Message</label>
|
1004 |
<frontend_type>textarea</frontend_type>
|
1005 |
+
<frontend_model>connector/adminhtml_system_config_Smsmessagefour</frontend_model>
|
1006 |
<sort_order>30</sort_order>
|
1007 |
<show_in_default>1</show_in_default>
|
1008 |
<show_in_website>1</show_in_website>
|
1009 |
+
<show_in_store>0</show_in_store>
|
1010 |
<validate>validate-length maximum-length-110</validate>
|
1011 |
</message>
|
1012 |
</fields>
|
|
|
1013 |
</sms_message_four>
|
1014 |
</groups>
|
1015 |
</sms_section>
|
1016 |
+
<dynamic_content translate="label" module="connector">
|
1017 |
<label><![CDATA[Dynamic Content]]></label>
|
1018 |
<tab>connector</tab>
|
1019 |
<frontend_type>text</frontend_type>
|
1022 |
<show_in_website>1</show_in_website>
|
1023 |
<show_in_store>0</show_in_store>
|
1024 |
<groups>
|
1025 |
+
<products translate="label" module="connector">
|
1026 |
<label>Dynamic Products</label>
|
1027 |
<frontend_type>text</frontend_type>
|
1028 |
<sort_order>10</sort_order>
|
1031 |
<show_in_store>0</show_in_store>
|
1032 |
<expanded>1</expanded>
|
1033 |
<fields>
|
1034 |
+
<related translate="label" module="connector">
|
1035 |
<label>Related Products</label>
|
1036 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
1037 |
<sort_order>10</sort_order>
|
1039 |
<show_in_website>1</show_in_website>
|
1040 |
<show_in_store>0</show_in_store>
|
1041 |
</related>
|
1042 |
+
<related_display_type translate="label" module="connector">
|
1043 |
<label>Display Type</label>
|
1044 |
<frontend_type>select</frontend_type>
|
1045 |
<source_model>connector/system_config_source_displaytype</source_model>
|
1048 |
<show_in_website>1</show_in_website>
|
1049 |
<show_in_store>0</show_in_store>
|
1050 |
</related_display_type>
|
1051 |
+
<related_items_to_display translate="label" module="connector">
|
1052 |
<label>Items To Display</label>
|
1053 |
<frontend_type>select</frontend_type>
|
1054 |
<source_model>connector/system_config_source_gridview</source_model>
|
1057 |
<show_in_default>1</show_in_default>
|
1058 |
<show_in_store>0</show_in_store>
|
1059 |
</related_items_to_display>
|
1060 |
+
<upsell translate="label" module="connector">
|
|
|
1061 |
<label>Up Sell Products</label>
|
1062 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
1063 |
<sort_order>40</sort_order>
|
1065 |
<show_in_website>1</show_in_website>
|
1066 |
<show_in_store>0</show_in_store>
|
1067 |
</upsell>
|
1068 |
+
<upsell_display_type translate="label" module="connector">
|
1069 |
<label>Display Type</label>
|
1070 |
<frontend_type>select</frontend_type>
|
1071 |
<source_model>connector/system_config_source_displaytype</source_model>
|
1074 |
<show_in_website>1</show_in_website>
|
1075 |
<show_in_store>0</show_in_store>
|
1076 |
</upsell_display_type>
|
1077 |
+
<upsell_items_to_display translate="label" module="connector">
|
1078 |
<label>Items To Display</label>
|
1079 |
<frontend_type>select</frontend_type>
|
1080 |
<source_model>connector/system_config_source_gridview</source_model>
|
1083 |
<show_in_default>1</show_in_default>
|
1084 |
<show_in_store>0</show_in_store>
|
1085 |
</upsell_items_to_display>
|
1086 |
+
<crosssell translate="label" module="connector">
|
|
|
1087 |
<label>Cross Sell Products</label>
|
1088 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
1089 |
<sort_order>70</sort_order>
|
1091 |
<show_in_website>1</show_in_website>
|
1092 |
<show_in_store>0</show_in_store>
|
1093 |
</crosssell>
|
1094 |
+
<crosssell_display_type translate="label" module="connector">
|
1095 |
<label>Display Type</label>
|
1096 |
<frontend_type>select</frontend_type>
|
1097 |
<source_model>connector/system_config_source_displaytype</source_model>
|
1100 |
<show_in_website>1</show_in_website>
|
1101 |
<show_in_store>0</show_in_store>
|
1102 |
</crosssell_display_type>
|
1103 |
+
<crosssell_items_to_display translate="label" module="connector">
|
1104 |
<label>Items To Display</label>
|
1105 |
<frontend_type>select</frontend_type>
|
1106 |
<source_model>connector/system_config_source_gridview</source_model>
|
1109 |
<show_in_default>1</show_in_default>
|
1110 |
<show_in_store>0</show_in_store>
|
1111 |
</crosssell_items_to_display>
|
1112 |
+
<bestsellers translate="label" module="connector">
|
|
|
1113 |
<label>Best Sellers</label>
|
1114 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
1115 |
<sort_order>100</sort_order>
|
1116 |
<show_in_default>1</show_in_default>
|
1117 |
<show_in_website>1</show_in_website>
|
1118 |
<show_in_store>0</show_in_store>
|
1119 |
+
</bestsellers>
|
1120 |
+
<bestsellers_display_type translate="label" module="connector">
|
1121 |
<label>Display Type</label>
|
1122 |
<frontend_type>select</frontend_type>
|
1123 |
<source_model>connector/system_config_source_displaytype</source_model>
|
1125 |
<show_in_default>1</show_in_default>
|
1126 |
<show_in_website>1</show_in_website>
|
1127 |
<show_in_store>0</show_in_store>
|
1128 |
+
</bestsellers_display_type>
|
1129 |
+
<bestsellers_items_to_display translate="label" module="connector">
|
1130 |
<label>Items To Display</label>
|
1131 |
<frontend_type>select</frontend_type>
|
1132 |
<source_model>connector/system_config_source_gridview</source_model>
|
1134 |
<show_in_website>1</show_in_website>
|
1135 |
<show_in_default>1</show_in_default>
|
1136 |
<show_in_store>0</show_in_store>
|
1137 |
+
</bestsellers_items_to_display>
|
1138 |
+
<bestsellers_time_period translate="label" module="connector">
|
1139 |
<label>Time Period</label>
|
1140 |
<frontend_type>select</frontend_type>
|
1141 |
<source_model>connector/system_config_source_timeperiod</source_model>
|
1143 |
<show_in_default>1</show_in_default>
|
1144 |
<show_in_website>1</show_in_website>
|
1145 |
<show_in_store>0</show_in_store>
|
1146 |
+
</bestsellers_time_period>
|
1147 |
+
<most_viewed translate="label" module="connector">
|
|
|
1148 |
<label>Most Viewed</label>
|
1149 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
1150 |
<sort_order>140</sort_order>
|
1152 |
<show_in_website>1</show_in_website>
|
1153 |
<show_in_store>0</show_in_store>
|
1154 |
</most_viewed>
|
1155 |
+
<most_viewed_display_type translate="label" module="connector">
|
1156 |
<label>Display Type</label>
|
1157 |
<frontend_type>select</frontend_type>
|
1158 |
<source_model>connector/system_config_source_displaytype</source_model>
|
1161 |
<show_in_website>1</show_in_website>
|
1162 |
<show_in_store>0</show_in_store>
|
1163 |
</most_viewed_display_type>
|
1164 |
+
<most_viewed_items_to_display translate="label" module="connector">
|
1165 |
<label>Items To Display</label>
|
1166 |
<frontend_type>select</frontend_type>
|
1167 |
<source_model>connector/system_config_source_gridview</source_model>
|
1170 |
<show_in_default>1</show_in_default>
|
1171 |
<show_in_store>0</show_in_store>
|
1172 |
</most_viewed_items_to_display>
|
1173 |
+
<most_viewed_time_period translate="label" module="connector">
|
1174 |
<label>Time Period</label>
|
1175 |
<frontend_type>select</frontend_type>
|
1176 |
<source_model>connector/system_config_source_timeperiod</source_model>
|
1179 |
<show_in_website>1</show_in_website>
|
1180 |
<show_in_store>0</show_in_store>
|
1181 |
</most_viewed_time_period>
|
1182 |
+
<recently_viewed translate="label" module="connector">
|
|
|
1183 |
<label>Recently Viewed</label>
|
1184 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
1185 |
<sort_order>180</sort_order>
|
1187 |
<show_in_website>1</show_in_website>
|
1188 |
<show_in_store>0</show_in_store>
|
1189 |
</recently_viewed>
|
1190 |
+
<recently_viewed_display_type translate="label" module="connector">
|
1191 |
<label>Display Type</label>
|
1192 |
<frontend_type>select</frontend_type>
|
1193 |
<source_model>connector/system_config_source_displaytype</source_model>
|
1196 |
<show_in_website>1</show_in_website>
|
1197 |
<show_in_store>0</show_in_store>
|
1198 |
</recently_viewed_display_type>
|
1199 |
+
<recently_viewed_items_to_display translate="label" module="connector">
|
1200 |
<label>items To Display</label>
|
1201 |
<frontend_type>select</frontend_type>
|
1202 |
<source_model>connector/system_config_source_gridview</source_model>
|
1205 |
<show_in_website>1</show_in_website>
|
1206 |
<show_in_store>0</show_in_store>
|
1207 |
</recently_viewed_items_to_display>
|
|
|
1208 |
<validator>
|
|
|
1209 |
<frontend_type>hidden</frontend_type>
|
1210 |
<frontend_model>connector/adminhtml_system_config_gridlist</frontend_model>
|
1211 |
<sort_order>210</sort_order>
|
1215 |
<can_be_empty>1</can_be_empty>
|
1216 |
</validator>
|
1217 |
</fields>
|
|
|
1218 |
</products>
|
1219 |
+
<manual_product_search translate="label" module="connector">
|
1220 |
<label>Manual Product Push</label>
|
1221 |
<frontend_type>text</frontend_type>
|
1222 |
<sort_order>20</sort_order>
|
1225 |
<show_in_store>0</show_in_store>
|
1226 |
<expanded>1</expanded>
|
1227 |
<fields>
|
1228 |
+
<settings tranlate="label" module="connector">
|
1229 |
<label>Settings</label>
|
1230 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
1231 |
<sort_order>10</sort_order>
|
1233 |
<show_in_website>1</show_in_website>
|
1234 |
<show_in_store>0</show_in_store>
|
1235 |
</settings>
|
1236 |
+
<display_type translate="label" module="connector">
|
1237 |
<label>Display Type</label>
|
1238 |
<frontend_type>select</frontend_type>
|
1239 |
<source_model>connector/system_config_source_displaytype</source_model>
|
1242 |
<show_in_website>1</show_in_website>
|
1243 |
<show_in_store>0</show_in_store>
|
1244 |
</display_type>
|
1245 |
+
<items_to_display translate="label" module="connector">
|
1246 |
<label>Items To Display</label>
|
1247 |
<frontend_type>select</frontend_type>
|
1248 |
<source_model>connector/system_config_source_gridview</source_model>
|
1251 |
<show_in_default>1</show_in_default>
|
1252 |
<show_in_store>0</show_in_store>
|
1253 |
</items_to_display>
|
1254 |
+
<products_push translate="label" module="connector">
|
1255 |
<label>Products</label>
|
1256 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
1257 |
<sort_order>80</sort_order>
|
1259 |
<show_in_website>1</show_in_website>
|
1260 |
<show_in_store>0</show_in_store>
|
1261 |
</products_push>
|
1262 |
+
<products_push_items translate="label comment" module="connector">
|
1263 |
<label>Products</label>
|
1264 |
<frontend_type>text</frontend_type>
|
1265 |
<sort_order>90</sort_order>
|
1270 |
</products_push_items>
|
1271 |
</fields>
|
1272 |
</manual_product_search>
|
1273 |
+
<fallback_products translate="label" module="connector">
|
1274 |
<label>Fallback Products</label>
|
1275 |
<frontend_type>text</frontend_type>
|
1276 |
<sort_order>30</sort_order>
|
1278 |
<show_in_website>1</show_in_website>
|
1279 |
<show_in_store>0</show_in_store>
|
1280 |
<fields>
|
1281 |
+
<product_list translate="label comment" module="connector">
|
1282 |
<label>Products</label>
|
1283 |
<frontend_type>text</frontend_type>
|
1284 |
<sort_order>10</sort_order>
|
1291 |
</fallback_products>
|
1292 |
</groups>
|
1293 |
</dynamic_content>
|
1294 |
+
<transactional_emails translate="label" module="connector">
|
1295 |
+
<label>Transactional Emails</label>
|
1296 |
<tab>connector</tab>
|
1297 |
<frontend_type>text</frontend_type>
|
1298 |
+
<show_in_default>0</show_in_default>
|
1299 |
+
<show_in_website>0</show_in_website>
|
1300 |
+
<show_in_store>0</show_in_store>
|
1301 |
<sort_order>9000</sort_order>
|
1302 |
+
<groups>
|
1303 |
+
<transactional_email translate="label" module="connector">
|
1304 |
+
<label>Transactional Emails</label>
|
1305 |
+
<frontend_type>text</frontend_type>
|
1306 |
+
<sort_order>100</sort_order>
|
1307 |
+
<show_in_default>1</show_in_default>
|
1308 |
+
<show_in_website>1</show_in_website>
|
1309 |
+
<show_in_store>0</show_in_store>
|
1310 |
+
<expanded>1</expanded>
|
1311 |
+
<fields>
|
1312 |
+
<api_username translate="label" module="connector">
|
1313 |
+
<label>API Username</label>
|
1314 |
+
<frontend_type>text</frontend_type>
|
1315 |
+
<sort_order>10</sort_order>
|
1316 |
+
<show_in_default>1</show_in_default>
|
1317 |
+
<show_in_website>1</show_in_website>
|
1318 |
+
<show_in_store>0</show_in_store>
|
1319 |
+
</api_username>
|
1320 |
+
<api_password translate="label" module="connector">
|
1321 |
+
<label>API Password</label>
|
1322 |
+
<frontend_type>password</frontend_type>
|
1323 |
+
<!--<frontend_model>connector/adminhtml_system_config_testbutton</frontend_model>-->
|
1324 |
+
<sort_order>20</sort_order>
|
1325 |
+
<show_in_default>1</show_in_default>
|
1326 |
+
<show_in_website>1</show_in_website>
|
1327 |
+
<show_in_store>0</show_in_store>
|
1328 |
+
</api_password>
|
1329 |
+
<validator>
|
1330 |
+
<frontend_type>hidden</frontend_type>
|
1331 |
+
<frontend_model>connector/adminhtml_system_config_waitingfield</frontend_model>
|
1332 |
+
<sort_order>40</sort_order>
|
1333 |
+
<show_in_default>1</show_in_default>
|
1334 |
+
<show_in_website>1</show_in_website>
|
1335 |
+
<show_in_store>0</show_in_store>
|
1336 |
+
<can_be_empty>1</can_be_empty>
|
1337 |
+
</validator>
|
1338 |
+
</fields>
|
1339 |
+
</transactional_email>
|
1340 |
+
<email_mapping translate="label" module="connector">
|
1341 |
+
<label>Email Mapping</label>
|
1342 |
+
<frontend_type>text</frontend_type>
|
1343 |
+
<sort_order>200</sort_order>
|
1344 |
+
<show_in_default>1</show_in_default>
|
1345 |
+
<show_in_website>1</show_in_website>
|
1346 |
+
<show_in_store>0</show_in_store>
|
1347 |
+
<expanded>1</expanded>
|
1348 |
+
<fields>
|
1349 |
+
<order_title translate="label" module="connector">
|
1350 |
+
<label>Order Emails</label>
|
1351 |
+
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
1352 |
+
<sort_order>10</sort_order>
|
1353 |
+
<show_in_default>1</show_in_default>
|
1354 |
+
<show_in_website>1</show_in_website>
|
1355 |
+
<show_in_store>0</show_in_store>
|
1356 |
+
</order_title>
|
1357 |
+
<new_creditmemo translate="label" module="connector">
|
1358 |
+
<label>New Credit Memo</label>
|
1359 |
+
<frontend_type>select</frontend_type>
|
1360 |
+
<source_model>connector/system_config_source_campaigns</source_model>
|
1361 |
+
<sort_order>20</sort_order>
|
1362 |
+
<show_in_default>1</show_in_default>
|
1363 |
+
<show_in_website>1</show_in_website>
|
1364 |
+
<show_in_store>0</show_in_store>
|
1365 |
+
</new_creditmemo>
|
1366 |
+
<new_creditmemo_guest translate="label" module="connector">
|
1367 |
+
<label>New Credit Memo Guest</label>
|
1368 |
+
<frontend_type>select</frontend_type>
|
1369 |
+
<source_model>connector/system_config_source_campaigns</source_model>
|
1370 |
+
<sort_order>30</sort_order>
|
1371 |
+
<show_in_default>1</show_in_default>
|
1372 |
+
<show_in_website>1</show_in_website>
|
1373 |
+
<show_in_store>0</show_in_store>
|
1374 |
+
</new_creditmemo_guest>
|
1375 |
+
<creditmemo translate="label" module="connector">
|
1376 |
+
<label>Credit Memo Update</label>
|
1377 |
+
<frontend_type>select</frontend_type>
|
1378 |
+
<source_model>connector/system_config_source_campaigns</source_model>
|
1379 |
+
<sort_order>40</sort_order>
|
1380 |
+
<show_in_default>1</show_in_default>
|
1381 |
+
<show_in_website>1</show_in_website>
|
1382 |
+
<show_in_store>0</show_in_store>
|
1383 |
+
</creditmemo>
|
1384 |
+
<new_invoice translate="label" module="connector">
|
1385 |
+
<label>New Invoice</label>
|
1386 |
+
<frontend_type>select</frontend_type>
|
1387 |
+
<source_model>connector/system_config_source_campaigns</source_model>
|
1388 |
+
<sort_order>50</sort_order>
|
1389 |
+
<show_in_default>1</show_in_default>
|
1390 |
+
<show_in_website>1</show_in_website>
|
1391 |
+
<show_in_store>0</show_in_store>
|
1392 |
+
</new_invoice>
|
1393 |
+
<invoice_update translate="label" module="connector">
|
1394 |
+
<label>Invoice Update</label>
|
1395 |
+
<frontend_type>select</frontend_type>
|
1396 |
+
<source_model>connector/system_config_source_campaigns</source_model>
|
1397 |
+
<sort_order>60</sort_order>
|
1398 |
+
<show_in_default>1</show_in_default>
|
1399 |
+
<show_in_website>1</show_in_website>
|
1400 |
+
<show_in_store>0</show_in_store>
|
1401 |
+
</invoice_update>
|
1402 |
+
<new_order translate="label" module="connector">
|
1403 |
+
<label>New Order</label>
|
1404 |
+
<sort_order>70</sort_order>
|
1405 |
+
<frontend_type>select</frontend_type>
|
1406 |
+
<source_model>connector/system_config_source_campaigns</source_model>
|
1407 |
+
<show_in_default>1</show_in_default>
|
1408 |
+
<show_in_website>1</show_in_website>
|
1409 |
+
<show_in_store>0</show_in_store>
|
1410 |
+
</new_order>
|
1411 |
+
<order_update translate="label" module="connector">
|
1412 |
+
<label>Order Update</label>
|
1413 |
+
<sort_order>80</sort_order>
|
1414 |
+
<frontend_type>select</frontend_type>
|
1415 |
+
<source_model>connector/system_config_source_campaigns</source_model>
|
1416 |
+
<show_in_default>1</show_in_default>
|
1417 |
+
<show_in_website>1</show_in_website>
|
1418 |
+
<show_in_store>0</show_in_store>
|
1419 |
+
</order_update>
|
1420 |
+
<new_shipment translate="label" module="connector">
|
1421 |
+
<label>New Shipment</label>
|
1422 |
+
<sort_order>90</sort_order>
|
1423 |
+
<frontend_type>select</frontend_type>
|
1424 |
+
<source_model>connector/system_config_source_campaigns</source_model>
|
1425 |
+
<show_in_default>1</show_in_default>
|
1426 |
+
<show_in_website>1</show_in_website>
|
1427 |
+
<show_in_store>0</show_in_store>
|
1428 |
+
</new_shipment>
|
1429 |
+
<shipment_update translate="label" module="connector">
|
1430 |
+
<label>Shipment Update</label>
|
1431 |
+
<sort_order>100</sort_order>
|
1432 |
+
<frontend_type>select</frontend_type>
|
1433 |
+
<source_model>connector/system_config_source_campaigns</source_model>
|
1434 |
+
<show_in_default>1</show_in_default>
|
1435 |
+
<show_in_website>1</show_in_website>
|
1436 |
+
<show_in_store>0</show_in_store>
|
1437 |
+
</shipment_update>
|
1438 |
+
<customer_emails_heading translate="label" module="connector">
|
1439 |
+
<label>Customer Emails</label>
|
1440 |
+
<sort_order>110</sort_order>
|
1441 |
+
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
1442 |
+
<show_in_default>1</show_in_default>
|
1443 |
+
<show_in_website>1</show_in_website>
|
1444 |
+
<show_in_store>0</show_in_store>
|
1445 |
+
</customer_emails_heading>
|
1446 |
+
<password_remind translate="label" module="connector">
|
1447 |
+
<label>Password Remind</label>
|
1448 |
+
<sort_order>120</sort_order>
|
1449 |
+
<frontend_type>select</frontend_type>
|
1450 |
+
<source_model>connector/system_config_source_campaigns</source_model>
|
1451 |
+
<show_in_default>1</show_in_default>
|
1452 |
+
<show_in_website>1</show_in_website>
|
1453 |
+
<show_in_store>0</show_in_store>
|
1454 |
+
</password_remind>
|
1455 |
+
<forgot_password translate="label" module="connector">
|
1456 |
+
<label>Forgot Password</label>
|
1457 |
+
<sort_order>130</sort_order>
|
1458 |
+
<frontend_type>select</frontend_type>
|
1459 |
+
<source_model>connector/system_config_source_campaigns</source_model>
|
1460 |
+
<show_in_default>1</show_in_default>
|
1461 |
+
<show_in_website>1</show_in_website>
|
1462 |
+
<show_in_store>0</show_in_store>
|
1463 |
+
</forgot_password>
|
1464 |
+
<new_account translate="label" module="connector">
|
1465 |
+
<label>New Account</label>
|
1466 |
+
<sort_order>140</sort_order>
|
1467 |
+
<frontend_type>select</frontend_type>
|
1468 |
+
<source_model>connector/system_config_source_campaigns</source_model>
|
1469 |
+
<show_in_default>1</show_in_default>
|
1470 |
+
<show_in_website>1</show_in_website>
|
1471 |
+
<show_in_store>0</show_in_store>
|
1472 |
+
</new_account>
|
1473 |
+
<!--<new_account_key translate="label">-->
|
1474 |
+
<!--<label>New Account Key</label>-->
|
1475 |
+
<!--<sort_order>150</sort_order>-->
|
1476 |
+
<!--<frontend_type>select</frontend_type>-->
|
1477 |
+
<!--<source_model>connector/system_config_source_campaigns</source_model>-->
|
1478 |
+
<!--<show_in_default>1</show_in_default>-->
|
1479 |
+
<!--<show_in_website>1</show_in_website>-->
|
1480 |
+
<!--<show_in_store>0</show_in_store>-->
|
1481 |
+
<!--</new_account_key>-->
|
1482 |
+
<!--<new_account_confirm translate="label">-->
|
1483 |
+
<!--<label>New Account Confirmed</label>-->
|
1484 |
+
<!--<sort_order>160</sort_order>-->
|
1485 |
+
<!--<frontend_type>select</frontend_type>-->
|
1486 |
+
<!--<source_model>connector/system_config_source_campaigns</source_model>-->
|
1487 |
+
<!--<show_in_default>1</show_in_default>-->
|
1488 |
+
<!--<show_in_website>1</show_in_website>-->
|
1489 |
+
<!--<show_in_store>0</show_in_store>-->
|
1490 |
+
<!--</new_account_confirm>-->
|
1491 |
+
<!--<newsletter_subscribtion_confirmation tranlate="label">-->
|
1492 |
+
<!--<label>Newsletter Subscription Confirmation</label>-->
|
1493 |
+
<!--<sort_order>170</sort_order>-->
|
1494 |
+
<!--<frontend_type>select</frontend_type>-->
|
1495 |
+
<!--<source_model>connector/system_config_source_campaigns</source_model>-->
|
1496 |
+
<!--<show_in_default>1</show_in_default>-->
|
1497 |
+
<!--<show_in_website>1</show_in_website>-->
|
1498 |
+
<!--<show_in_store>0</show_in_store>-->
|
1499 |
+
<!--</newsletter_subscribtion_confirmation>-->
|
1500 |
+
<!--<newsletter_subscription_success translate="label">-->
|
1501 |
+
<!--<label>Newsletter Subscription Success</label>-->
|
1502 |
+
<!--<sort_order>180</sort_order>-->
|
1503 |
+
<!--<frontend_type>select</frontend_type>-->
|
1504 |
+
<!--<source_model>connector/system_config_source_campaigns</source_model>-->
|
1505 |
+
<!--<show_in_default>1</show_in_default>-->
|
1506 |
+
<!--<show_in_website>1</show_in_website>-->
|
1507 |
+
<!--<show_in_store>0</show_in_store>-->
|
1508 |
+
<!--</newsletter_subscription_success>-->
|
1509 |
+
|
1510 |
+
<!--<website_email_header translate="label">-->
|
1511 |
+
<!--<label>Website Email</label>-->
|
1512 |
+
<!--<sort_order>190</sort_order>-->
|
1513 |
+
<!--<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>-->
|
1514 |
+
<!--<show_in_default>1</show_in_default>-->
|
1515 |
+
<!--<show_in_website>1</show_in_website>-->
|
1516 |
+
<!--<show_in_store>0</show_in_store>-->
|
1517 |
+
<!--</website_email_header>-->
|
1518 |
+
<!--<product_price_alert translate="label">-->
|
1519 |
+
<!--<label>Product Price Alert</label>-->
|
1520 |
+
<!--<sort_order>200</sort_order>-->
|
1521 |
+
<!--<frontend_type>select</frontend_type>-->
|
1522 |
+
<!--<source_model>connector/system_config_source_campaigns</source_model>-->
|
1523 |
+
<!--<show_in_default>1</show_in_default>-->
|
1524 |
+
<!--<show_in_website>1</show_in_website>-->
|
1525 |
+
<!--<show_in_store>0</show_in_store>-->
|
1526 |
+
<!--</product_price_alert>-->
|
1527 |
+
<!--<product_stock_alert translate="label">-->
|
1528 |
+
<!--<label>Product Stock Alert</label>-->
|
1529 |
+
<!--<sort_order>210</sort_order>-->
|
1530 |
+
<!--<frontend_type>select</frontend_type>-->
|
1531 |
+
<!--<source_model>connector/system_config_source_campaigns</source_model>-->
|
1532 |
+
<!--<show_in_default>1</show_in_default>-->
|
1533 |
+
<!--<show_in_website>1</show_in_website>-->
|
1534 |
+
<!--<show_in_store>0</show_in_store>-->
|
1535 |
+
<!--</product_stock_alert>-->
|
1536 |
+
<!--<send_to_frend translate="label">-->
|
1537 |
+
<!--<label>Send To A Friend</label>-->
|
1538 |
+
<!--<sort_order>220</sort_order>-->
|
1539 |
+
<!--<frontend_type>select</frontend_type>-->
|
1540 |
+
<!--<source_model>connector/system_config_source_campaigns</source_model>-->
|
1541 |
+
<!--<show_in_default>1</show_in_default>-->
|
1542 |
+
<!--<show_in_website>1</show_in_website>-->
|
1543 |
+
<!--<show_in_store>0</show_in_store>-->
|
1544 |
+
<!--</send_to_frend>-->
|
1545 |
+
<!--<share_wishlist translate="label">-->
|
1546 |
+
<!--<label>Share Wishlist</label>-->
|
1547 |
+
<!--<sort_order>230</sort_order>-->
|
1548 |
+
<!--<frontend_type>select</frontend_type>-->
|
1549 |
+
<!--<source_model>connector/system_config_source_campaigns</source_model>-->
|
1550 |
+
<!--<show_in_default>1</show_in_default>-->
|
1551 |
+
<!--<show_in_website>1</show_in_website>-->
|
1552 |
+
<!--<show_in_store>0</show_in_store>-->
|
1553 |
+
<!--</share_wishlist>-->
|
1554 |
+
</fields>
|
1555 |
+
</email_mapping>
|
1556 |
+
</groups>
|
1557 |
+
</transactional_emails>
|
1558 |
+
<connector_advanced_settings translate="label" module="connector">
|
1559 |
+
<label><![CDATA[Advanced Settings]]></label>
|
1560 |
+
<tab>connector</tab>
|
1561 |
+
<frontend_type>text</frontend_type>
|
1562 |
+
<sort_order>10000</sort_order>
|
1563 |
<show_in_default>1</show_in_default>
|
1564 |
<show_in_website>1</show_in_website>
|
1565 |
+
<show_in_store>0</show_in_store>
|
1566 |
<groups>
|
1567 |
+
<sync_limits translate="label" module="connector">
|
1568 |
<label>Transactional Sync Limit</label>
|
1569 |
<frontend_type>text</frontend_type>
|
1570 |
<sort_order>10</sort_order>
|
1572 |
<show_in_website>1</show_in_website>
|
1573 |
<show_in_store>0</show_in_store>
|
1574 |
<fields>
|
1575 |
+
<orders translate="label" module="connector">
|
1576 |
+
<label>Historical Import Limit</label>
|
1577 |
<frontend_type>select</frontend_type>
|
1578 |
<source_model>connector/system_config_source_orderlimit</source_model>
|
1579 |
<sort_order>40</sort_order>
|
1583 |
</orders>
|
1584 |
</fields>
|
1585 |
</sync_limits>
|
1586 |
+
<external translate="label" module="connector">
|
1587 |
<label><![CDATA[External Dynamic Content]]></label>
|
1588 |
<frontend_type>text</frontend_type>
|
1589 |
<sort_order>20</sort_order>
|
1591 |
<show_in_website>1</show_in_website>
|
1592 |
<show_in_store>0</show_in_store>
|
1593 |
<fields>
|
1594 |
+
<passcode translate="label comment" module="connector">
|
1595 |
<label>Passcode</label>
|
1596 |
<frontend_type>text</frontend_type>
|
1597 |
<sort_order>10</sort_order>
|
1600 |
<show_in_store>0</show_in_store>
|
1601 |
<comment><![CDATA[Recommended: Set a passcode so that basket contents and coupon codes can only be viewed if the following passcode is sent with the request.]]></comment>
|
1602 |
</passcode>
|
1603 |
+
<lost_basket_title translate="label" module="connector">
|
1604 |
<label>Lost Baskets</label>
|
1605 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
1606 |
<sort_order>20</sort_order>
|
1608 |
<show_in_website>1</show_in_website>
|
1609 |
<show_in_store>0</show_in_store>
|
1610 |
</lost_basket_title>
|
1611 |
+
<lost_basket_url translate="label" module="connector">
|
|
|
1612 |
<label>Baskets Content URL</label>
|
1613 |
<frontend_type>label</frontend_type>
|
1614 |
+
<frontend_model>connector/adminhtml_system_config_form_lostbasket</frontend_model>
|
1615 |
<sort_order>30</sort_order>
|
1616 |
<show_in_default>1</show_in_default>
|
1617 |
<show_in_website>1</show_in_website>
|
1618 |
<show_in_store>0</show_in_store>
|
1619 |
</lost_basket_url>
|
1620 |
+
<coupon_code_title title="label" module="connector">
|
1621 |
<label>Coupon Codes</label>
|
1622 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
1623 |
<sort_order>40</sort_order>
|
1625 |
<show_in_default>1</show_in_default>
|
1626 |
<show_in_store>0</show_in_store>
|
1627 |
</coupon_code_title>
|
1628 |
+
<coupon_code_url translate="label" module="connector">
|
1629 |
<label>Coupon Codes URL</label>
|
1630 |
<frontend_type>label</frontend_type>
|
1631 |
+
<frontend_model>connector/adminhtml_system_config_form_couponinfo</frontend_model>
|
1632 |
<sort_order>50</sort_order>
|
1633 |
<show_in_default>1</show_in_default>
|
1634 |
<show_in_website>1</show_in_website>
|
1635 |
<show_in_store>0</show_in_store>
|
1636 |
</coupon_code_url>
|
1637 |
+
<dynamic_content_url translate="label" module="connector">
|
|
|
1638 |
<label>Dynamic Content</label>
|
1639 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
1640 |
<sort_order>60</sort_order>
|
1642 |
<show_in_website>1</show_in_website>
|
1643 |
<show_in_store>0</show_in_store>
|
1644 |
</dynamic_content_url>
|
1645 |
+
<related_products_url translate="label" module="connector">
|
1646 |
<label>Related Products URL</label>
|
1647 |
<frontend_type>label</frontend_type>
|
1648 |
+
<frontend_model>connector/adminhtml_system_config_form_related</frontend_model>
|
1649 |
<sort_order>70</sort_order>
|
1650 |
<show_in_default>1</show_in_default>
|
1651 |
<show_in_website>1</show_in_website>
|
1652 |
<show_in_store>0</show_in_store>
|
1653 |
</related_products_url>
|
1654 |
+
<upsell_products_url translate="label" module="connector">
|
1655 |
<label>Up Sell Products URL</label>
|
1656 |
<frontend_type>label</frontend_type>
|
1657 |
+
<frontend_model>connector/adminhtml_system_config_form_upsell</frontend_model>
|
1658 |
<sort_order>80</sort_order>
|
1659 |
<show_in_default>1</show_in_default>
|
1660 |
<show_in_website>1</show_in_website>
|
1661 |
<show_in_store>0</show_in_store>
|
1662 |
</upsell_products_url>
|
1663 |
+
<crosssell_products_url translate="label" module="connector">
|
1664 |
<label>Cross Sell Products URL</label>
|
1665 |
<frontend_type>label</frontend_type>
|
1666 |
+
<frontend_model>connector/adminhtml_system_config_form_crosssell</frontend_model>
|
1667 |
<sort_order>90</sort_order>
|
1668 |
<show_in_default>1</show_in_default>
|
1669 |
<show_in_website>1</show_in_website>
|
1670 |
<show_in_store>0</show_in_store>
|
1671 |
</crosssell_products_url>
|
1672 |
+
<best_sellers_url translate="label" module="connector">
|
|
|
1673 |
<label>Best Sellers URL</label>
|
1674 |
<frontend_type>label</frontend_type>
|
1675 |
+
<frontend_model>connector/adminhtml_system_config_form_bestsellers</frontend_model>
|
1676 |
<sort_order>100</sort_order>
|
1677 |
<show_in_default>1</show_in_default>
|
1678 |
<show_in_website>1</show_in_website>
|
1679 |
<show_in_store>0</show_in_store>
|
1680 |
</best_sellers_url>
|
1681 |
+
<most_viewed_url translate="label" module="connector">
|
1682 |
<label>Most Viewed URL</label>
|
1683 |
<frontend_type>label</frontend_type>
|
1684 |
+
<frontend_model>connector/adminhtml_system_config_form_mostviewed</frontend_model>
|
1685 |
<sort_order>110</sort_order>
|
1686 |
<show_in_default>1</show_in_default>
|
1687 |
<show_in_website>1</show_in_website>
|
1688 |
<show_in_store>0</show_in_store>
|
1689 |
</most_viewed_url>
|
1690 |
+
<product_push_url translate="label" module="connector">
|
1691 |
<label>Product Push URL</label>
|
1692 |
<frontend_type>label</frontend_type>
|
1693 |
+
<frontend_model>connector/adminhtml_system_config_form_productpush</frontend_model>
|
1694 |
<sort_order>120</sort_order>
|
1695 |
<show_in_default>1</show_in_default>
|
1696 |
<show_in_website>1</show_in_website>
|
1697 |
<show_in_store>0</show_in_store>
|
1698 |
</product_push_url>
|
1699 |
+
<recently_viewed_url translate="label" module="connector">
|
1700 |
<label>Recently Viewed</label>
|
1701 |
<frontend_type>label</frontend_type>
|
1702 |
<frontend_model>connector/adminhtml_system_recentlyviewed</frontend_model>
|
1705 |
<show_in_website>1</show_in_website>
|
1706 |
<show_in_store>0</show_in_store>
|
1707 |
</recently_viewed_url>
|
1708 |
+
<transactional_heading translate="label" module="connector">
|
1709 |
+
<label>Transactional Emails</label>
|
1710 |
+
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
1711 |
+
<sort_order>140</sort_order>
|
1712 |
+
<show_in_default>0</show_in_default>
|
1713 |
+
<show_in_website>0</show_in_website>
|
1714 |
+
<show_in_store>0</show_in_store>
|
1715 |
+
</transactional_heading>
|
1716 |
+
<transactional_customer_new translate="label" module="connector">
|
1717 |
+
<label>New Customer Registration Email</label>
|
1718 |
+
<frontend_type>label</frontend_type>
|
1719 |
+
<frontend_model>connector/adminhtml_system_config_form_customernew</frontend_model>
|
1720 |
+
<sort_order>150</sort_order>
|
1721 |
+
<show_in_default>0</show_in_default>
|
1722 |
+
<show_in_website>0</show_in_website>
|
1723 |
+
<show_in_store>0</show_in_store>
|
1724 |
+
</transactional_customer_new>
|
1725 |
+
<transactional_order_new translate="label" module="connector">
|
1726 |
+
<label>New Order Email Confirmation</label>
|
1727 |
+
<frontend_type>label</frontend_type>
|
1728 |
+
<frontend_model>connector/adminhtml_system_config_form_ordernew</frontend_model>
|
1729 |
+
<sort_order>160</sort_order>
|
1730 |
+
<show_in_default>0</show_in_default>
|
1731 |
+
<show_in_website>0</show_in_website>
|
1732 |
+
<show_in_store>0</show_in_store>
|
1733 |
+
</transactional_order_new>
|
1734 |
+
<transactional_order_creditmemo_new translate="label" module="connector">
|
1735 |
+
<label>New Creditmemo</label>
|
1736 |
+
<frontend_type>label</frontend_type>
|
1737 |
+
<frontend_model>connector/adminhtml_system_config_form_creditmemonew</frontend_model>
|
1738 |
+
<sort_order>170</sort_order>
|
1739 |
+
<show_in_default>0</show_in_default>
|
1740 |
+
<show_in_website>0</show_in_website>
|
1741 |
+
<show_in_store>0</show_in_store>
|
1742 |
+
</transactional_order_creditmemo_new>
|
1743 |
+
<transactional_order_update translate="label" module="connector">
|
1744 |
+
<label>Order Update</label>
|
1745 |
+
<frontend_type>label</frontend_type>
|
1746 |
+
<frontend_model>connector/adminhtml_system_config_form_orderupdate</frontend_model>
|
1747 |
+
<sort_order>180</sort_order>
|
1748 |
+
<show_in_default>0</show_in_default>
|
1749 |
+
<show_in_website>0</show_in_website>
|
1750 |
+
<show_in_store>0</show_in_store>
|
1751 |
+
</transactional_order_update>
|
1752 |
+
<transactional_invoice_new translate="label" module="connector">
|
1753 |
+
<label>New Invoice</label>
|
1754 |
+
<frontend_type>label</frontend_type>
|
1755 |
+
<frontend_model>connector/adminhtml_system_config_form_invoicenew</frontend_model>
|
1756 |
+
<sort_order>180</sort_order>
|
1757 |
+
<show_in_default>0</show_in_default>
|
1758 |
+
<show_in_website>0</show_in_website>
|
1759 |
+
<show_in_store>0</show_in_store>
|
1760 |
+
</transactional_invoice_new>
|
1761 |
</fields>
|
1762 |
</external>
|
1763 |
+
<admin translate="label" module="connector">
|
1764 |
<label>Admin</label>
|
1765 |
<frontend_type>text</frontend_type>
|
1766 |
<sort_order>30</sort_order>
|
1768 |
<show_in_default>1</show_in_default>
|
1769 |
<show_in_store>0</show_in_store>
|
1770 |
<fields>
|
1771 |
+
<admin_title translate="label" module="connector">
|
1772 |
+
<label><![CDATA[Contacts ID's]]></label>
|
1773 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
1774 |
<sort_order>10</sort_order>
|
1775 |
<show_in_default>1</show_in_default>
|
1776 |
<show_in_website>1</show_in_website>
|
1777 |
<show_in_store>0</show_in_store>
|
1778 |
</admin_title>
|
1779 |
+
<count_customers translate="label" module="connector">
|
1780 |
+
<label>Count Customers With ID</label>
|
1781 |
+
<frontend_model>connector/adminhtml_advanced_admin_contactsimported</frontend_model>
|
1782 |
<sort_order>20</sort_order>
|
1783 |
<show_in_default>1</show_in_default>
|
1784 |
<show_in_website>1</show_in_website>
|
1785 |
<show_in_store>0</show_in_store>
|
1786 |
</count_customers>
|
1787 |
+
<delete_contact translate="label" module="connector">
|
1788 |
+
<label><![CDATA[Delete All Contact ID's]]></label>
|
1789 |
+
<frontend_model>connector/adminhtml_advanced_admin_deletecontactids</frontend_model>
|
1790 |
<sort_order>30</sort_order>
|
1791 |
<show_in_default>1</show_in_default>
|
1792 |
<show_in_website>1</show_in_website>
|
1793 |
<show_in_store>0</show_in_store>
|
1794 |
</delete_contact>
|
1795 |
+
<advanced_title translate="label" module="connector">
|
1796 |
+
<label>Advanced</label>
|
1797 |
+
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
1798 |
+
<sort_order>40</sort_order>
|
1799 |
+
<show_in_default>1</show_in_default>
|
1800 |
+
<show_in_website>1</show_in_website>
|
1801 |
+
<show_in_store>0</show_in_store>
|
1802 |
+
</advanced_title>
|
1803 |
+
<setup_data_fields translate="label comment" module="connector">
|
1804 |
+
<label>Setup Data Fields</label>
|
1805 |
+
<frontend_model>connector/adminhtml_widget_button_setupdatafields</frontend_model>
|
1806 |
+
<sort_order>50</sort_order>
|
1807 |
+
<show_in_default>1</show_in_default>
|
1808 |
+
<show_in_website>1</show_in_website>
|
1809 |
+
<show_in_store>0</show_in_store>
|
1810 |
+
<comment>This will create data-fields and map them automatically.</comment>
|
1811 |
+
</setup_data_fields>
|
1812 |
+
<reimport_orders module="connector" translate="label">
|
1813 |
+
<label>Reimport Order Data</label>
|
1814 |
+
<frontend_model>connector/adminhtml_widget_button_reimportorders</frontend_model>
|
1815 |
+
<sort_order>60</sort_order>
|
1816 |
+
<show_in_default>1</show_in_default>
|
1817 |
+
<show_in_website>1</show_in_website>
|
1818 |
+
<show_in_store>0</show_in_store>
|
1819 |
+
<comment>Remport Order Transactional Data</comment>
|
1820 |
+
</reimport_orders>
|
1821 |
+
<suppressed_contacts module="connector" translate="label">
|
1822 |
+
<label>Update Supressed Contacts</label>
|
1823 |
+
<frontend_model>connector/adminhtml_widget_button_suppressedcontacts</frontend_model>
|
1824 |
+
<sort_order>70</sort_order>
|
1825 |
+
<show_in_default>1</show_in_default>
|
1826 |
+
<show_in_website>1</show_in_website>
|
1827 |
+
<show_in_store>0</show_in_store>
|
1828 |
+
<comment>Update All Contacts Who Historically Unsubscribed.</comment>
|
1829 |
+
</suppressed_contacts>
|
1830 |
+
<memory_limit translate="label comment" module="connector">
|
1831 |
<label>Memory Limit</label>
|
1832 |
<frontend_type>select</frontend_type>
|
1833 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
1834 |
<show_in_default>1</show_in_default>
|
1835 |
<show_in_website>0</show_in_website>
|
1836 |
<show_in_store>0</show_in_store>
|
1837 |
+
<sort_order>80</sort_order>
|
1838 |
<comment>Set to NO to use system default memory.</comment>
|
1839 |
</memory_limit>
|
1840 |
+
<batch_size translate="label comment" module="connector">
|
1841 |
<label>Customer Sync Batch Size</label>
|
1842 |
<frontend_type>text</frontend_type>
|
1843 |
<show_in_default>1</show_in_default>
|
1844 |
<show_in_website>1</show_in_website>
|
1845 |
<show_in_store>0</show_in_store>
|
1846 |
+
<sort_order>90</sort_order>
|
1847 |
<comment>Set the limit size for customers loaded in memory.</comment>
|
1848 |
</batch_size>
|
1849 |
+
<debug_enabled translate="label comment" module="connector">
|
1850 |
<label>Debug Mode</label>
|
1851 |
<frontend_type>select</frontend_type>
|
1852 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
1853 |
+
<sort_order>100</sort_order>
|
1854 |
<show_in_default>1</show_in_default>
|
1855 |
<show_in_website>1</show_in_website>
|
1856 |
+
<show_in_store>0</show_in_store>
|
1857 |
+
<comment>Set to YES to allow debug infomation to be saved in var/log directory.</comment>
|
1858 |
+
</debug_enabled>
|
1859 |
</fields>
|
1860 |
</admin>
|
1861 |
</groups>
|
app/code/community/Dotdigitalgroup/Email/sql/.DS_Store
ADDED
Binary file
|
app/code/{local → community}/Dotdigitalgroup/Email/sql/connector_setup/mysql4-install-0.1.0.php
RENAMED
@@ -1,12 +1,4 @@
|
|
1 |
<?php
|
2 |
-
/**
|
3 |
-
* mag17.
|
4 |
-
*
|
5 |
-
* User: chrisroseuk
|
6 |
-
* Date: 30/04/2013
|
7 |
-
* Time: 14:17
|
8 |
-
*
|
9 |
-
*/
|
10 |
|
11 |
$installer = $this;
|
12 |
$installer->startSetup();
|
@@ -24,6 +16,7 @@ $setup->addAttribute('customer', 'dotmailer_contact_id', array(
|
|
24 |
'visible' => 1,
|
25 |
'required' => 0,
|
26 |
'user_defined' => 0,
|
|
|
27 |
));
|
28 |
|
29 |
$setup->addAttributeToGroup(
|
@@ -42,9 +35,9 @@ $adminData = array();
|
|
42 |
$adminData[] = array(
|
43 |
'severity' => 4,
|
44 |
'date_added' => gmdate('Y-m-d H:i:s', time()),
|
45 |
-
'title' => 'Email Connector
|
46 |
-
'description' => 'Connector
|
47 |
-
'url' => ''
|
48 |
);
|
49 |
|
50 |
Mage::getModel('adminnotification/inbox')->parse($adminData);
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
$installer = $this;
|
4 |
$installer->startSetup();
|
16 |
'visible' => 1,
|
17 |
'required' => 0,
|
18 |
'user_defined' => 0,
|
19 |
+
''
|
20 |
));
|
21 |
|
22 |
$setup->addAttributeToGroup(
|
35 |
$adminData[] = array(
|
36 |
'severity' => 4,
|
37 |
'date_added' => gmdate('Y-m-d H:i:s', time()),
|
38 |
+
'title' => 'Email Connector Was Installed. Please Enter Your API Credentials & Ensure Cron Jobs Are Running On Your Site (Find Out More)',
|
39 |
+
'description' => 'Email Connector Was Installed. Please Enter Your API Credentials & Ensure Cron Jobs Are Running On Your Site.',
|
40 |
+
'url' => 'http://www.magentocommerce.com/wiki/1_-_installation_and_configuration/how_to_setup_a_cron_job'
|
41 |
);
|
42 |
|
43 |
Mage::getModel('adminnotification/inbox')->parse($adminData);
|
app/code/{local → community}/Dotdigitalgroup/Email/sql/connector_setup/mysql4-upgrade-1.1.1-1.1.2.php
RENAMED
File without changes
|
app/code/community/Dotdigitalgroup/Email/sql/connector_setup/mysql4-upgrade-1.1.2-1.5.0.php
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
$installer = $this;
|
4 |
+
|
5 |
+
$installer->startSetup();
|
6 |
+
|
7 |
+
|
8 |
+
$installer->endSetup();
|
app/code/community/Dotdigitalgroup/Email/sql/connector_setup/mysql4-upgrade-1.5.0-2.0.0.php
ADDED
@@ -0,0 +1,75 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
|
4 |
+
$installer = $this;
|
5 |
+
|
6 |
+
$installer->startSetup();
|
7 |
+
|
8 |
+
try{
|
9 |
+
|
10 |
+
$installer->run(
|
11 |
+
"DROP TABLE IF EXISTS {$this->getTable('email_order')};
|
12 |
+
CREATE TABLE `{$this->getTable('email_order')}` (
|
13 |
+
`email_order_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
|
14 |
+
`order_id` int(15) unsigned DEFAULT NULL,
|
15 |
+
`quote_id` int(15) unsigned DEFAULT NULL,
|
16 |
+
`store_id` smallint(5) unsigned DEFAULT NULL,
|
17 |
+
`email_imported` tinyint(1) DEFAULT NULL,
|
18 |
+
`created_at` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
|
19 |
+
`updated_at` datetime DEFAULT NULL,
|
20 |
+
PRIMARY KEY (`email_order_id`),
|
21 |
+
KEY `IDX_EMAIL_STORE_ID` (`store_id`),
|
22 |
+
KEY `IDX_EMAIL_QUOTE_ID` (`quote_id`),
|
23 |
+
CONSTRAINT `FK_EMAIL_STORE_ID_CORE_STORE_STORE_ID` FOREIGN KEY (`store_id`) REFERENCES `{$this->getTable('core_store')}` (`store_id`) ON DELETE SET NULL ON UPDATE CASCADE
|
24 |
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;"
|
25 |
+
);
|
26 |
+
|
27 |
+
|
28 |
+
//Insert and populate email order the table
|
29 |
+
$installer->run(
|
30 |
+
"INSERT IGNORE INTO `{$this->getTable('email_order')}` (`order_id`, `quote_id`, `store_id`, `created_at`, `updated_at`)
|
31 |
+
SELECT `entity_id`, `quote_id`, `store_id`, `created_at`, `updated_at`
|
32 |
+
FROM `{$this->getTable('sales/order')}`;"
|
33 |
+
);
|
34 |
+
|
35 |
+
|
36 |
+
$installer->run(
|
37 |
+
"DROP TABLE IF EXISTS {$this->getTable('email_contact')};
|
38 |
+
CREATE TABLE `{$this->getTable('email_contact')}` (
|
39 |
+
`email_contact_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
40 |
+
`is_guest` smallint(1) DEFAULT NULL,
|
41 |
+
`contact_id` int(15) unsigned DEFAULT NULL,
|
42 |
+
`customer_id` int(10) unsigned DEFAULT NULL,
|
43 |
+
`website_id` smallint(5) unsigned DEFAULT NULL COMMENT 'Website Id',
|
44 |
+
`email` varchar(255) DEFAULT NULL,
|
45 |
+
`is_subscriber` tinyint(1)unsigned DEFAULT NULL,
|
46 |
+
`subscriber_status` int(10) unsigned DEFAULT '0',
|
47 |
+
`email_id` smallint(5) unsigned DEFAULT NULL,
|
48 |
+
`email_imported` tinyint(1) unsigned DEFAULT NULL,
|
49 |
+
`suppressed` smallint(1) DEFAULT NULL,
|
50 |
+
PRIMARY KEY (`email_contact_id`),
|
51 |
+
KEY `IDX_EMAIL_CONTACT_WEBSITE_ID` (`website_id`),
|
52 |
+
CONSTRAINT `FK_EMAIL_CONTACT_WEBSITE_ID_CORE_WEBSITE_WEBSITE_ID` FOREIGN KEY (`website_id`) REFERENCES `core_website` (`website_id`) ON DELETE SET NULL ON UPDATE CASCADE
|
53 |
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Email Contact Sync';"
|
54 |
+
);
|
55 |
+
|
56 |
+
|
57 |
+
//Insert and populate email contact table
|
58 |
+
$installer->run(
|
59 |
+
"INSERT IGNORE INTO `{$this->getTable('email_contact')}` (`customer_id`, `email`, `website_id`)
|
60 |
+
SELECT `entity_id`, `email`, `website_id`
|
61 |
+
FROM `{$this->getTable('customer_entity')}`;"
|
62 |
+
);
|
63 |
+
|
64 |
+
//Remove Order Attribute For Imported Data
|
65 |
+
$installer->removeAttribute('order', 'dotmailer_order_imported');
|
66 |
+
$installer->removeAttribute('customer', 'dotmailer_contact_id');
|
67 |
+
|
68 |
+
|
69 |
+
}catch (Exception $e){
|
70 |
+
|
71 |
+
Mage::log($e->getMessage());
|
72 |
+
|
73 |
+
}
|
74 |
+
|
75 |
+
$installer->endSetup();
|
app/code/community/Dotdigitalgroup/Email/sql/connector_setup/mysql4-upgrade-2.0.0-2.0.1.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
|
4 |
+
$installer = $this;
|
5 |
+
|
6 |
+
$installer->startSetup();
|
7 |
+
|
8 |
+
|
9 |
+
$installer->endSetup();
|
app/code/community/Dotdigitalgroup/Email/sql/connector_setup/mysql4-upgrade-2.0.1-2.0.2.php
ADDED
@@ -0,0 +1,52 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
$installer = $this;
|
4 |
+
|
5 |
+
$installer->startSetup();
|
6 |
+
|
7 |
+
|
8 |
+
$installer->run(
|
9 |
+
"DROP TABLE IF EXISTS {$this->getTable('email_contact')};
|
10 |
+
CREATE TABLE `{$this->getTable('email_contact')}` (
|
11 |
+
`email_contact_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
12 |
+
`is_guest` smallint(1) DEFAULT NULL,
|
13 |
+
`contact_id` int(15) unsigned DEFAULT NULL,
|
14 |
+
`customer_id` int(10) unsigned DEFAULT NULL,
|
15 |
+
`website_id` smallint(5) unsigned DEFAULT NULL COMMENT 'Website Id',
|
16 |
+
`email` varchar(255) DEFAULT NULL,
|
17 |
+
`is_subscriber` tinyint(1) unsigned DEFAULT NULL,
|
18 |
+
`subscriber_status` int(10) unsigned DEFAULT '0',
|
19 |
+
`subscriber_imported` tinyint(1) unsigned DEFAULT NULL,
|
20 |
+
`email_imported` tinyint(1) unsigned DEFAULT NULL,
|
21 |
+
`suppressed` smallint(1) DEFAULT NULL,
|
22 |
+
PRIMARY KEY (`email_contact_id`),
|
23 |
+
KEY `IDX_EMAIL_CONTACT_ID` (`email_contact_id`),
|
24 |
+
KEY `IDX_EMAIL_CONTACT_IS_GUEST` (`is_guest`),
|
25 |
+
KEY `IDX_EMAIL_CONTACT_CUSTOMER_ID` (`customer_id`),
|
26 |
+
KEY `IDX_EMAIL_CONTACT_WEBSITE_ID` (`website_id`),
|
27 |
+
KEY `IDX_EMAIL_CONTACT_IS_SUBSCRIBER` (`is_subscriber`),
|
28 |
+
KEY `IDX_EMAIL_CONTACT_SUBSCRIBER_STATUS` (`subscriber_status`),
|
29 |
+
KEY `IDX_EMAIL_CONTACT_SUBSCRIBER_IMPORTED` (`subscriber_imported`),
|
30 |
+
KEY `IDX_EMAIL_CONTACT_EMAIL_IMPORTED` (`email_imported`),
|
31 |
+
KEY `IDX_EMAIL_CONTACT_suppressed` (`suppressed`),
|
32 |
+
UNIQUE KEY `IDX_EMAIL_CONTACT_EMAIL` (`email`),
|
33 |
+
CONSTRAINT `FK_EMAIL_CONTACT_WEBSITE_ID_CORE_WEBSITE_WEBSITE_ID` FOREIGN KEY (`website_id`) REFERENCES `core_website` (`website_id`) ON DELETE SET NULL ON UPDATE CASCADE
|
34 |
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Email Contacts';"
|
35 |
+
);
|
36 |
+
|
37 |
+
|
38 |
+
//Insert and populate email contact table
|
39 |
+
$installer->run(
|
40 |
+
"INSERT IGNORE INTO `{$this->getTable('email_contact')}` (`customer_id`, `email`, `website_id`)
|
41 |
+
SELECT `entity_id`, `email`, `website_id`
|
42 |
+
FROM `{$this->getTable('customer_entity')}`;"
|
43 |
+
);
|
44 |
+
|
45 |
+
//Subscribers that are not customers
|
46 |
+
$installer->run("
|
47 |
+
INSERT IGNORE INTO {$this->getTable('email_contact')} (`email`, `is_subscriber`, `subscriber_status`)
|
48 |
+
SELECT `subscriber_email`, '1' as col2, '1' as col3 FROM `{$this->getTable('newsletter/subscriber')}` WHERE `customer_id` = 0 AND `subscriber_status` = 1;
|
49 |
+
");
|
50 |
+
|
51 |
+
|
52 |
+
$installer->endSetup();
|
app/code/community/Dotdigitalgroup/Email/sql/connector_setup/mysql4-upgrade-2.0.3-2.0.4.php
ADDED
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
$installer = $this;
|
4 |
+
|
5 |
+
|
6 |
+
$installer->startSetup();
|
7 |
+
|
8 |
+
|
9 |
+
$installer->run("
|
10 |
+
ALTER TABLE `{$this->getTable('email_contact')}`
|
11 |
+
DROP INDEX `IDX_EMAIL_CONTACT_EMAIL`,
|
12 |
+
DROP FOREIGN KEY `FK_EMAIL_CONTACT_WEBSITE_ID_CORE_WEBSITE_WEBSITE_ID`,
|
13 |
+
CHANGE COLUMN `website_id` `website_id` smallint(5) unsigned DEFAULT '0' AFTER `customer_id`;
|
14 |
+
");
|
15 |
+
|
16 |
+
$installer->run("
|
17 |
+
UPDATE `{$this->getTable('email_contact')}` SET `website_id` = '0'
|
18 |
+
WHERE `website_id` IS NULL;
|
19 |
+
");
|
20 |
+
|
21 |
+
$installer->run("
|
22 |
+
ALTER TABLE `{$this->getTable('email_contact')}`
|
23 |
+
ADD CONSTRAINT `FK_EMAIL_CONTACT_WEBSITE_ID_CORE_WEBSITE_WEBSITE_ID` FOREIGN KEY (`website_id`) REFERENCES `{$installer->getTable('core_website')}` (`website_id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
24 |
+
|
25 |
+
");
|
26 |
+
|
27 |
+
$installer->run("
|
28 |
+
ALTER TABLE `{$this->getTable('sales_flat_order')}`
|
29 |
+
DROP COLUMN `dotmailer_order_imported`;
|
30 |
+
");
|
31 |
+
|
32 |
+
|
33 |
+
|
34 |
+
$installer->endSetup();
|
app/code/community/Dotdigitalgroup/Email/sql/connector_setup/mysql4-upgrade-2.0.4-2.1.0.php
ADDED
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
$installer = $this;
|
4 |
+
|
5 |
+
|
6 |
+
$installer->startSetup();
|
7 |
+
|
8 |
+
$installer->run(
|
9 |
+
"DROP TABLE IF EXISTS {$this->getTable('email_send')};
|
10 |
+
CREATE TABLE `{$this->getTable('email_send')}` (
|
11 |
+
`email_send_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
12 |
+
`campaign_id` int(10) unsigned DEFAULT NULL,
|
13 |
+
`quote_id` int(10) unsigned DEFAULT NULL,
|
14 |
+
`email` varchar(255) DEFAULT NULL,
|
15 |
+
`message` varchar(255) DEFAULT NULL,
|
16 |
+
`customer_id` int(10) unsigned DEFAULT NULL,
|
17 |
+
`created_at` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
|
18 |
+
`updated_at` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
|
19 |
+
`sent_at` datetime DEFAULT NULL,
|
20 |
+
`is_sent` smallint(5) unsigned DEFAULT NULL,
|
21 |
+
`store_id` smallint(5) unsigned DEFAULT NULL COMMENT 'Store Id',
|
22 |
+
PRIMARY KEY (`email_send_id`),
|
23 |
+
KEY `IDX_EMAIL_SEND_STORE_ID` (`store_id`),
|
24 |
+
KEY `IDX_EMAIL_SEND_CAMPAIGN_ID` (`campaign_id`),
|
25 |
+
KEY `IDX_EMAIL_SEND_EMAIL` (`email`),
|
26 |
+
KEY `IDX_EMAIL_SEND_IS_SENT` (`is_sent`),
|
27 |
+
CONSTRAINT `FK_EMAIL_SEND_STORE_ID_CORE_STORE_STORE_ID` FOREIGN KEY (`store_id`) REFERENCES `core_store` (`store_id`) ON DELETE SET NULL ON UPDATE CASCADE
|
28 |
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Email Transactional Send';"
|
29 |
+
);
|
30 |
+
|
31 |
+
|
32 |
+
|
33 |
+
$installer->endSetup();
|
app/code/local/Dotdigitalgroup/Email/Block/Adminhtml/System/Bestsellers.php
DELETED
@@ -1,18 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Dotdigitalgroup_Email_Block_Adminhtml_System_Bestsellers extends Mage_Adminhtml_Block_System_Config_Form_Field
|
4 |
-
{
|
5 |
-
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
|
6 |
-
{
|
7 |
-
$baseUr = preg_replace('/index.php\//', '', Mage::getBaseUrl());
|
8 |
-
$code = Mage::helper('connector')->getPasscode();
|
9 |
-
$order = Mage::helper('connector')->getLastOrderNo();
|
10 |
-
if(!strlen($code)) $code = '[PLEASE SET UP A PASSCODE]';
|
11 |
-
if(!$order) $order = '[PLEASE MAP THE LAST ORDER NO]';
|
12 |
-
$text = $baseUr . 'connector/email/products/order/@' . $order . '@/code/' . $code . '/mode/bestsellers';
|
13 |
-
$element->setData('value', $text);
|
14 |
-
$element->setData('disabled', 'disabled');
|
15 |
-
return parent::_getElementHtml($element);
|
16 |
-
|
17 |
-
}
|
18 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Insertvariable.php
DELETED
@@ -1,13 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Dotdigitalgroup_Email_Block_Adminhtml_System_Config_Insertvariable extends Mage_Adminhtml_Block_System_Config_Form_Field
|
4 |
-
{
|
5 |
-
public function _getElementHtml($element){
|
6 |
-
|
7 |
-
$element->setData('onclick', 'templateControl.openVariableChooser();return false;');
|
8 |
-
|
9 |
-
|
10 |
-
return parent::_getElementHtml($element);
|
11 |
-
}
|
12 |
-
|
13 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Dotdigitalgroup/Email/Block/Adminhtml/System/Config/Messagedefault.php
DELETED
@@ -1,46 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Dotdigitalgroup_Email_Block_Adminhtml_System_Config_Messagedefault extends Mage_Adminhtml_Block_System_Config_Form_Field
|
4 |
-
{
|
5 |
-
const DEFAULT_TEXT = 'Default SMS Text';
|
6 |
-
|
7 |
-
protected function _getElementHtml(Varien_Data_Form_Element_Abstract$element){
|
8 |
-
|
9 |
-
|
10 |
-
$element->setData('placeholder', self::DEFAULT_TEXT);
|
11 |
-
|
12 |
-
$element->setData('after_element_html', "
|
13 |
-
|
14 |
-
<a href='#' onclick=\"injectText('sms_section_sms_message_one_message', '{{var order_number}}');return false;\">Insert Order Number</a>
|
15 |
-
<a href='#' onclick=\"injectText('sms_section_sms_message_one_message', '{{var customer_name}}');return false;\">Insert Customer Name</a>
|
16 |
-
|
17 |
-
<script type='text/javascript'>
|
18 |
-
|
19 |
-
function addText(text){
|
20 |
-
$('sms_section_sms_message_one_message').value += text;
|
21 |
-
}
|
22 |
-
|
23 |
-
function injectText(element,value){
|
24 |
-
var element_dom=document.getElementById(element);
|
25 |
-
if(document.selection){
|
26 |
-
element_dom.focus();
|
27 |
-
sel=document.selection.createRange();
|
28 |
-
sel.text=value;
|
29 |
-
return;
|
30 |
-
}if(element_dom.selectionStart||element_dom.selectionStart=='0'){
|
31 |
-
var t_start=element_dom.selectionStart;
|
32 |
-
var t_end=element_dom.selectionEnd;
|
33 |
-
var val_start=element_dom.value.substring(0,t_start);
|
34 |
-
var val_end=element_dom.value.substring(t_end,element_dom.value.length);
|
35 |
-
element_dom.value=val_start+value+val_end;
|
36 |
-
}else{
|
37 |
-
element_dom.value+=value;
|
38 |
-
}
|
39 |
-
}
|
40 |
-
</script>
|
41 |
-
");
|
42 |
-
return parent::_getElementHtml($element);
|
43 |
-
}
|
44 |
-
|
45 |
-
|
46 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Dotdigitalgroup/Email/Block/Debug/Forcecustomersync.php
DELETED
@@ -1,21 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Dotdigitalgroup_Email_Block_Debug_Forcecustomersync extends Mage_Adminhtml_Block_System_Config_Form_Field
|
4 |
-
{
|
5 |
-
|
6 |
-
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element) {
|
7 |
-
$this->setElement($element);
|
8 |
-
return $this->_getAddRowButtonHtml($this->__('Sync Customer Data Now'));
|
9 |
-
}
|
10 |
-
|
11 |
-
protected function _getAddRowButtonHtml($title) {
|
12 |
-
$url = Mage::helper('adminhtml')->getUrl("connector/debug/forcecustomersync");
|
13 |
-
|
14 |
-
return $this->getLayout()->createBlock('adminhtml/widget_button')
|
15 |
-
->setType('button')
|
16 |
-
->setLabel($this->__($title))
|
17 |
-
->setOnClick("window.location.href='" . $url . "'")
|
18 |
-
->toHtml();
|
19 |
-
}
|
20 |
-
|
21 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Dotdigitalgroup/Email/Block/Debug/Forcelostbasketsync.php
DELETED
@@ -1,21 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Dotdigitalgroup_Email_Block_Debug_Forcelostbasketsync extends Mage_Adminhtml_Block_System_Config_Form_Field
|
4 |
-
{
|
5 |
-
|
6 |
-
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element) {
|
7 |
-
$this->setElement($element);
|
8 |
-
return $this->_getAddRowButtonHtml($this->__('Sync Lost Baskets Now'));
|
9 |
-
}
|
10 |
-
|
11 |
-
protected function _getAddRowButtonHtml($title) {
|
12 |
-
$url = Mage::helper('adminhtml')->getUrl("connector/debug/forcelostbasketsync");
|
13 |
-
|
14 |
-
return $this->getLayout()->createBlock('adminhtml/widget_button')
|
15 |
-
->setType('button')
|
16 |
-
->setLabel($this->__($title))
|
17 |
-
->setOnClick("window.location.href='" . $url . "'")
|
18 |
-
->toHtml();
|
19 |
-
}
|
20 |
-
|
21 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Dotdigitalgroup/Email/Block/Debug/Forcesuppressedsync.php
DELETED
@@ -1,21 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Dotdigitalgroup_Email_Block_Debug_Forcesuppressedsync extends Mage_Adminhtml_Block_System_Config_Form_Field
|
4 |
-
{
|
5 |
-
|
6 |
-
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element) {
|
7 |
-
$this->setElement($element);
|
8 |
-
return $this->_getAddRowButtonHtml($this->__('Sync Suppressed Data Now'));
|
9 |
-
}
|
10 |
-
|
11 |
-
protected function _getAddRowButtonHtml($title) {
|
12 |
-
$url = Mage::helper('adminhtml')->getUrl("connector/debug/forcesuppressed");
|
13 |
-
|
14 |
-
return $this->getLayout()->createBlock('adminhtml/widget_button')
|
15 |
-
->setType('button')
|
16 |
-
->setLabel($this->__($title))
|
17 |
-
->setOnClick("window.location.href='" . $url . "'")
|
18 |
-
->toHtml();
|
19 |
-
}
|
20 |
-
|
21 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Dotdigitalgroup/Email/Block/Debug/Rescuenow.php
DELETED
@@ -1,21 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Dotdigitalgroup_Email_Block_Debug_Rescuenow extends Mage_Adminhtml_Block_System_Config_Form_Field
|
4 |
-
{
|
5 |
-
|
6 |
-
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element) {
|
7 |
-
$this->setElement($element);
|
8 |
-
return $this->_getAddRowButtonHtml($this->__('Send Lost Basket Campaigns Now'));
|
9 |
-
}
|
10 |
-
|
11 |
-
protected function _getAddRowButtonHtml($title) {
|
12 |
-
$url = Mage::helper('adminhtml')->getUrl("connector/debug/rescuenow");
|
13 |
-
|
14 |
-
return $this->getLayout()->createBlock('adminhtml/widget_button')
|
15 |
-
->setType('button')
|
16 |
-
->setLabel($this->__($title))
|
17 |
-
->setOnClick("window.location.href='" . $url . "'")
|
18 |
-
->toHtml();
|
19 |
-
}
|
20 |
-
|
21 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Dotdigitalgroup/Email/Block/Debug/Testcredentials.php
DELETED
@@ -1,21 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Dotdigitalgroup_Email_Block_Debug_Testcredentials extends Mage_Adminhtml_Block_System_Config_Form_Field
|
4 |
-
{
|
5 |
-
|
6 |
-
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element) {
|
7 |
-
$this->setElement($element);
|
8 |
-
return $this->_getAddRowButtonHtml($this->__('Test Credentials'));
|
9 |
-
}
|
10 |
-
|
11 |
-
protected function _getAddRowButtonHtml($title) {
|
12 |
-
$url = Mage::helper('adminhtml')->getUrl("connector/debug/testcredentials");
|
13 |
-
|
14 |
-
return $this->getLayout()->createBlock('adminhtml/widget_button')
|
15 |
-
->setType('button')
|
16 |
-
->setLabel($this->__($title))
|
17 |
-
->setOnClick("window.location.href='" . $url . "'")
|
18 |
-
->toHtml();
|
19 |
-
}
|
20 |
-
|
21 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Dotdigitalgroup/Email/Helper/Api/DotNetExample.php
DELETED
@@ -1,182 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* mag17.
|
4 |
-
*
|
5 |
-
* User: chrisroseuk
|
6 |
-
* Date: 19/04/2013
|
7 |
-
* Time: 17:10
|
8 |
-
*
|
9 |
-
*/
|
10 |
-
|
11 |
-
/*
|
12 |
-
*
|
13 |
-
* using System;
|
14 |
-
using System.Collections.Generic;
|
15 |
-
using System.IO;
|
16 |
-
using System.Net;
|
17 |
-
using System.Text;
|
18 |
-
using System.Threading;
|
19 |
-
using Newtonsoft.Json;
|
20 |
-
|
21 |
-
namespace Email.ImportContacts
|
22 |
-
{
|
23 |
-
class Program
|
24 |
-
{
|
25 |
-
private const string UserName = "";
|
26 |
-
private const string Password = "";
|
27 |
-
private const int AddressBookId = 1188372; //Your address book here
|
28 |
-
|
29 |
-
static void Main(string[] args)
|
30 |
-
{
|
31 |
-
AppDomain.CurrentDomain.UnhandledException += PrintUnhandledException;
|
32 |
-
|
33 |
-
ApiContactImport contactImport = ImportContactsFromFile();
|
34 |
-
ApiContactImport contactImportResult = WaitUntilImportFinishes(contactImport);
|
35 |
-
PrintContactImport(contactImportResult);
|
36 |
-
|
37 |
-
Dictionary<String, String> contactImportReport = GetContactImportReport(contactImportResult.Id);
|
38 |
-
PrintContactImportReport(contactImportReport);
|
39 |
-
|
40 |
-
String csvReport = GetContactImportFaults(contactImportResult.Id);
|
41 |
-
PrintCsvReport(csvReport);
|
42 |
-
}
|
43 |
-
|
44 |
-
private static String GetContactImportFaults(Guid importId)
|
45 |
-
{
|
46 |
-
string url = String.Format("https://apiconnector.com/v2/contacts/import/{0}/report-faults", importId);
|
47 |
-
HttpWebRequest request = CreateRequest(url);
|
48 |
-
String result = ReadResultAsString(request);
|
49 |
-
return result;
|
50 |
-
}
|
51 |
-
|
52 |
-
private static void PrintCsvReport(string csvReport)
|
53 |
-
{
|
54 |
-
Console.WriteLine();
|
55 |
-
Console.WriteLine(csvReport);
|
56 |
-
}
|
57 |
-
|
58 |
-
private static Dictionary<string, string> GetContactImportReport(Guid importId)
|
59 |
-
{
|
60 |
-
string url = String.Format("https://apiconnector.com/v2/contacts/import/{0}/report", importId);
|
61 |
-
HttpWebRequest request = CreateRequest(url);
|
62 |
-
Dictionary<string, string> result = ReadResult<Dictionary<string, string>>(request);
|
63 |
-
return result;
|
64 |
-
}
|
65 |
-
|
66 |
-
private static ApiContactImport WaitUntilImportFinishes(ApiContactImport importResult)
|
67 |
-
{
|
68 |
-
ApiContactImport result = importResult;
|
69 |
-
|
70 |
-
while (result.Status == ApiContactImportStatuses.NotFinished)
|
71 |
-
{
|
72 |
-
Thread.Sleep(TimeSpan.FromSeconds(10));
|
73 |
-
|
74 |
-
HttpWebRequest request = CreateRequest("https://apiconnector.com/v2/contacts/import/" + importResult.Id);
|
75 |
-
result = ReadResult<ApiContactImport>(request);
|
76 |
-
}
|
77 |
-
|
78 |
-
return result;
|
79 |
-
}
|
80 |
-
|
81 |
-
private static ApiContactImport ImportContactsFromFile()
|
82 |
-
{
|
83 |
-
string url = String.Format("https://apiconnector.com/v2/address-books/{0}/contacts/import", AddressBookId);
|
84 |
-
HttpWebRequest request = CreateRequest(url);
|
85 |
-
request.Method = "POST";
|
86 |
-
|
87 |
-
AddContactsToRequest(request);
|
88 |
-
|
89 |
-
ApiContactImport result = ReadResult<ApiContactImport>(request);
|
90 |
-
return result;
|
91 |
-
}
|
92 |
-
|
93 |
-
private static void AddContactsToRequest(HttpWebRequest request)
|
94 |
-
{
|
95 |
-
String boundary = Guid.NewGuid().ToString("N");
|
96 |
-
request.ContentType = String.Format(@"multipart/form-data; boundary=""{0}""", boundary);
|
97 |
-
|
98 |
-
using (BinaryWriter writer = new BinaryWriter(request.GetRequestStream()))
|
99 |
-
{
|
100 |
-
writer.Write(Encoding.UTF8.GetBytes("\r\n--" + boundary + "\r\n"));
|
101 |
-
|
102 |
-
const string headerTemplate = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\n\r\n";
|
103 |
-
string header = string.Format(headerTemplate, "Contacts", "Contacts.csv");
|
104 |
-
|
105 |
-
byte[] headerbytes = Encoding.UTF8.GetBytes(header);
|
106 |
-
writer.Write(headerbytes);
|
107 |
-
|
108 |
-
byte[] contacts = File.ReadAllBytes("Contacts.csv");
|
109 |
-
writer.Write(contacts);
|
110 |
-
|
111 |
-
writer.Write(Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n"));
|
112 |
-
}
|
113 |
-
}
|
114 |
-
|
115 |
-
private static HttpWebRequest CreateRequest(string url)
|
116 |
-
{
|
117 |
-
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
|
118 |
-
String base64 = Convert.ToBase64String(Encoding.UTF8.GetBytes(UserName + ":" + Password));
|
119 |
-
request.Headers.Add("Authorization", "Basic " + base64);
|
120 |
-
|
121 |
-
return request;
|
122 |
-
}
|
123 |
-
|
124 |
-
private static void PrintContactImport(ApiContactImport importResult)
|
125 |
-
{
|
126 |
-
Console.WriteLine("Import Id = {0}", importResult.Id);
|
127 |
-
Console.WriteLine("Import Status = {0}", importResult.Status);
|
128 |
-
}
|
129 |
-
|
130 |
-
private static void PrintContactImportReport(Dictionary<String, String> contactImportReport)
|
131 |
-
{
|
132 |
-
Console.WriteLine();
|
133 |
-
foreach (KeyValuePair<string, string> pair in contactImportReport)
|
134 |
-
{
|
135 |
-
Console.WriteLine("{0,-20} = {1}", pair.Key, pair.Value);
|
136 |
-
}
|
137 |
-
}
|
138 |
-
|
139 |
-
private static String ReadResultAsString(WebRequest request)
|
140 |
-
{
|
141 |
-
String result;
|
142 |
-
|
143 |
-
using (WebResponse response = request.GetResponse())
|
144 |
-
{
|
145 |
-
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
|
146 |
-
{
|
147 |
-
result = reader.ReadToEnd();
|
148 |
-
}
|
149 |
-
}
|
150 |
-
|
151 |
-
return result;
|
152 |
-
}
|
153 |
-
|
154 |
-
private static TResult ReadResult<TResult>(WebRequest request)
|
155 |
-
{
|
156 |
-
TResult result;
|
157 |
-
|
158 |
-
using (WebResponse response = request.GetResponse())
|
159 |
-
{
|
160 |
-
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
|
161 |
-
{
|
162 |
-
JsonSerializer serializer = new JsonSerializer();
|
163 |
-
using (JsonTextReader jsonReader = new JsonTextReader(reader))
|
164 |
-
{
|
165 |
-
result = serializer.Deserialize<TResult>(jsonReader);
|
166 |
-
}
|
167 |
-
}
|
168 |
-
}
|
169 |
-
|
170 |
-
return result;
|
171 |
-
}
|
172 |
-
|
173 |
-
private static void PrintUnhandledException(object sender, UnhandledExceptionEventArgs e)
|
174 |
-
{
|
175 |
-
Console.WriteLine(e.ExceptionObject);
|
176 |
-
}
|
177 |
-
}
|
178 |
-
}
|
179 |
-
*
|
180 |
-
*
|
181 |
-
*
|
182 |
-
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Dotdigitalgroup/Email/Helper/Data.php
DELETED
@@ -1,96 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
* empty helper to keep admin from breaking
|
4 |
-
*/
|
5 |
-
class Dotdigitalgroup_Email_Helper_Data extends Mage_Core_Helper_Abstract
|
6 |
-
{
|
7 |
-
const XML_PATH_PASSCODE = 'connector_advanced_settings/external/passcode';
|
8 |
-
const XML_PATH_LAST_ORDER_NO = 'connector_data_field_settings/customer_data/last_order_no';
|
9 |
-
const XML_PATH_MAPPING_CUSTOMER_ID = 'connector_data_field_settings/customer_data/customer_id';
|
10 |
-
const XML_PATH_ENABLED_LOGS = 'connector_advanced_settings/admin/debug';
|
11 |
-
|
12 |
-
|
13 |
-
/**
|
14 |
-
* return the time scheldule for the cronjob
|
15 |
-
* @param $code
|
16 |
-
* @return mixed
|
17 |
-
*/
|
18 |
-
public function getSchelduledAtCronjob($code)
|
19 |
-
{
|
20 |
-
/* @var $collection Mage_Cron_Model_Resource_Schedule_Collection */
|
21 |
-
$collection = Mage::getModel('cron/schedule')->getCollection();
|
22 |
-
$collection->addFieldToFilter('job_code', $code)
|
23 |
-
->addFieldToFilter('status', Mage_Cron_Model_Schedule::STATUS_PENDING)
|
24 |
-
->addOrder('scheduled_at', Varien_Data_Collection_Db::SORT_ORDER_DESC)
|
25 |
-
->getSelect()->limit(1);
|
26 |
-
$schedule = $collection->getFirstItem();
|
27 |
-
|
28 |
-
$scheduleAt = $schedule->getData('scheduled_at');
|
29 |
-
|
30 |
-
return $scheduleAt;
|
31 |
-
}
|
32 |
-
|
33 |
-
public function auth($authRequest)
|
34 |
-
{
|
35 |
-
if($authRequest == Mage::getStoreConfig(self::XML_PATH_PASSCODE)){
|
36 |
-
return true;
|
37 |
-
}
|
38 |
-
|
39 |
-
if($this->isEnabledLogs())
|
40 |
-
$this->log('authenication failed : ' . $authRequest , null, 'auth.log');
|
41 |
-
exit();
|
42 |
-
}
|
43 |
-
|
44 |
-
public function getMappedCustomerId()
|
45 |
-
{
|
46 |
-
return Mage::getStoreConfig(self::XML_PATH_MAPPING_CUSTOMER_ID);
|
47 |
-
}
|
48 |
-
|
49 |
-
public function getPasscode()
|
50 |
-
{
|
51 |
-
return Mage::getStoreConfig(self::XML_PATH_PASSCODE);
|
52 |
-
}
|
53 |
-
|
54 |
-
public function getLastOrderNo()
|
55 |
-
{
|
56 |
-
return Mage::getStoreConfig(self::XML_PATH_LAST_ORDER_NO);
|
57 |
-
|
58 |
-
}
|
59 |
-
|
60 |
-
public function log($data, $level = Zend_Log::DEBUG, $filename = 'api.log')
|
61 |
-
{
|
62 |
-
if($this->isEnabledLogs()){
|
63 |
-
$filename = 'connector_' . $filename;
|
64 |
-
|
65 |
-
Mage::log($data, $level, $filename, $force = true);
|
66 |
-
}
|
67 |
-
}
|
68 |
-
|
69 |
-
public function isEnabledLogs()
|
70 |
-
{
|
71 |
-
return (bool) Mage::getStoreConfig(self::XML_PATH_ENABLED_LOGS);
|
72 |
-
}
|
73 |
-
|
74 |
-
public function isOrderTransactionalEnabled()
|
75 |
-
{
|
76 |
-
return (bool) Mage::getStoreConfig(Dotdigitalgroup_Email_Model_Sales_Order::XML_PATH_TRANSACTIONAL_DATA_ENABLED);
|
77 |
-
}
|
78 |
-
|
79 |
-
public function isCustomerSyncEnabled()
|
80 |
-
{
|
81 |
-
return (bool) Mage::getStoreConfig(Dotdigitalgroup_Email_Model_Customer_Customer::XML_PATH_CUSTOMER_SYNC_ENABLE);
|
82 |
-
}
|
83 |
-
|
84 |
-
public function getConnectorVersion()
|
85 |
-
{
|
86 |
-
|
87 |
-
$modules = (array) Mage::getConfig()->getNode('modules')->children();
|
88 |
-
|
89 |
-
if(isset($modules['Dotdigitalgroup_Email'])){
|
90 |
-
|
91 |
-
$moduleName = $modules['Dotdigitalgroup_Email'];
|
92 |
-
return $moduleName->version;
|
93 |
-
}
|
94 |
-
return '';
|
95 |
-
}
|
96 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Dotdigitalgroup/Email/Model/Account/Test.php
DELETED
@@ -1,40 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Dotdigitalgroup_Email_Model_Account_Test extends Dotdigitalgroup_Email_Model_Api_Rest
|
4 |
-
{
|
5 |
-
const TEST_API_USERNAME = 'apiuser-2c692ba1bbd2@apiconnector.com';
|
6 |
-
const TEST_API_PASSWORD = 'Magento2013';
|
7 |
-
const TEST_API_CAMPAIGN = '2643928';
|
8 |
-
const TEST_CONTACT_ID = '13';
|
9 |
-
const TEST_CONTACT_EMAIL = 'ben.staveley@dotmailer.co.uk';
|
10 |
-
|
11 |
-
public function test($api_user = null, $api_password = null)
|
12 |
-
{
|
13 |
-
if($api_user && $api_password){
|
14 |
-
$this->_api_user = $api_user;
|
15 |
-
$this->_api_password = $api_password;
|
16 |
-
}
|
17 |
-
$response = array('errors' => 0, 'message' => '');
|
18 |
-
$result = $this->testAccount();
|
19 |
-
if(!$result){
|
20 |
-
$response['errors'] = true;
|
21 |
-
$response['message'] = 'Invalid API Credentials.';
|
22 |
-
}
|
23 |
-
$this->sendInstallConfirmation();
|
24 |
-
|
25 |
-
return $response;
|
26 |
-
}
|
27 |
-
|
28 |
-
public function sendInstallConfirmation()
|
29 |
-
{
|
30 |
-
$this->_api_user = self::TEST_API_USERNAME;
|
31 |
-
$this->_api_password = self::TEST_API_PASSWORD;
|
32 |
-
$testEmail = self::TEST_CONTACT_EMAIL;
|
33 |
-
$contactId = self::TEST_CONTACT_ID;
|
34 |
-
$campaignId = self::TEST_API_CAMPAIGN;
|
35 |
-
|
36 |
-
// send initial info
|
37 |
-
$this->sendIntallInfo($testEmail, $contactId, $campaignId);
|
38 |
-
|
39 |
-
}
|
40 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Dotdigitalgroup/Email/Model/Api/Rest.php
DELETED
@@ -1,729 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Dotdigitalgroup_Email_Model_Api_Rest extends Mage_Core_Model_Abstract
|
4 |
-
{
|
5 |
-
const REST_WAIT_UPLOAD_TIME = 5;
|
6 |
-
//rest api data
|
7 |
-
const REST_ACCOUNT_INFO = 'https://apiconnector.com/v2/account-info';
|
8 |
-
const REST_CONTACTS = 'https://apiconnector.com/v2/contacts/';
|
9 |
-
const REST_CONTACTS_IMPORT = 'https://apiconnector.com/v2/contacts/import/';
|
10 |
-
const REST_ADDRESS_BOOKS = 'https://apiconnector.com/v2/address-books';
|
11 |
-
const REST_DATA_FILEDS = 'https://apiconnector.com/v2/data-fields';
|
12 |
-
const REST_TRANSACTIONAL_DATA_IMPORT = 'https://apiconnector.com/v2/contacts/transactional-data/import/';
|
13 |
-
const REST_SINGLE_TRANSACTIONAL_DATA_IMPORT = 'https://apiconnector.com/v2/contacts/transactional-data/';
|
14 |
-
const REST_CAMPAIGN_SEND = 'https://apiconnector.com/v2/campaigns/send';
|
15 |
-
const REST_CONTACTS_SUPPRESSED_SINCE = 'https://apiconnector.com/v2/contacts/suppressed-since/';
|
16 |
-
const REST_DATA_FIELDS_CAMPAIGNS = 'https://apiconnector.com/v2/campaigns';
|
17 |
-
const REST_SMS_MESSAGE_SEND_TO = 'https://apiconnector.com/v2/sms-messages/send-to/';
|
18 |
-
//rest error responces
|
19 |
-
const REST_CONTACT_NOT_FOUND = 'Error: ERROR_CONTACT_NOT_FOUND';
|
20 |
-
const REST_STATUS_IMPORT_REPORT_NOT_FOUND = 'Import is not processed yet or completed with error. ERROR_IMPORT_REPORT_NOT_FOUND';
|
21 |
-
const REST_STATUS_REPORT_NOTFINISHED = 'NotFinished';
|
22 |
-
const REST_TRANSACTIONAL_DATA_NOT_EXISTS = 'Error: ERROR_TRANSACTIONAL_DATA_DOES_NOT_EXIST';
|
23 |
-
const REST_API_USAGE_EXCEEDED = 'Your account has generated excess API activity and is being temporarily capped. Please contact support. ERROR_APIUSAGE_EXCEEDED';
|
24 |
-
|
25 |
-
protected $_api_user;
|
26 |
-
protected $_api_password;
|
27 |
-
protected $_customers_file_slug = 'customer_sync';
|
28 |
-
protected $_subscribers_file_slug = 'subscriber_sync';
|
29 |
-
protected $_api_helper;
|
30 |
-
protected $_subscribers_address_book_id;
|
31 |
-
protected $_customers_address_book_id;
|
32 |
-
protected $_filename;
|
33 |
-
protected $_subscribers_filename;
|
34 |
-
protected $_customers_filename;
|
35 |
-
protected $_limit = 10;
|
36 |
-
protected $_address_book_id;
|
37 |
-
public $fileHelper; /** @var Dotdigitalgroup_Email_Helper_File */
|
38 |
-
protected $_helper;
|
39 |
-
public $result = array('error' => false, 'message' => '');
|
40 |
-
protected $_log_filename = 'api.log';
|
41 |
-
|
42 |
-
public function __construct()
|
43 |
-
{
|
44 |
-
// connect to default
|
45 |
-
$this->_api_user = Mage::getStoreConfig(Dotdigitalgroup_Email_Model_Customer_Customer::XML_PATH_CONNECTOR_API_USERNAME);
|
46 |
-
$this->_api_password = Mage::getStoreConfig(Dotdigitalgroup_Email_Model_Customer_Customer::XML_PATH_CONNECTOR_API_PASSWORD);
|
47 |
-
$this->_helper = Mage::helper('connector');
|
48 |
-
}
|
49 |
-
|
50 |
-
/**
|
51 |
-
* Deletes all contacts from a given address book.
|
52 |
-
* @param $addressBooks
|
53 |
-
* @return mixed
|
54 |
-
*/
|
55 |
-
protected function deleteAddressBookContacts($addressBooks) {
|
56 |
-
|
57 |
-
foreach ($addressBooks as $addressBookId) {
|
58 |
-
|
59 |
-
// skip if contact Id is null otherwise the API will delete ALL contacts from the address book!!!
|
60 |
-
if ($addressBookId==null) continue;
|
61 |
-
$ch = curl_init("https://apiconnector.com/v2/address-books/{$addressBookId}/contacts/");
|
62 |
-
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
|
63 |
-
curl_setopt($ch, CURLOPT_USERPWD, $this->_api_user . ':' . $this->_api_password);
|
64 |
-
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
65 |
-
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
66 |
-
|
67 |
-
// delete the contact from the address book
|
68 |
-
$result = curl_exec($ch);
|
69 |
-
$result = json_decode($result);
|
70 |
-
}
|
71 |
-
}
|
72 |
-
|
73 |
-
|
74 |
-
/**
|
75 |
-
* Bulk creates, or bulk updates, contacts. Import format can either be CSV or Excel.
|
76 |
-
* Must include one column called "Email". Any other columns will attempt to map to your custom data fields.
|
77 |
-
* The ID of returned object can be used to query import progress.
|
78 |
-
* @param $filename
|
79 |
-
* @param $addressBookId
|
80 |
-
* @return mixed
|
81 |
-
*/
|
82 |
-
protected function postAddressBookContactsImport($filename, $addressBookId)
|
83 |
-
{
|
84 |
-
// ...the API request
|
85 |
-
$uploadUrl = "https://apiconnector.com/v2/address-books/{$addressBookId}/contacts/import";
|
86 |
-
$ch = curl_init($uploadUrl);
|
87 |
-
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
|
88 |
-
curl_setopt($ch, CURLOPT_USERPWD, $this->_api_user . ':' . $this->_api_password);
|
89 |
-
curl_setopt($ch, CURLOPT_POSTFIELDS, array (
|
90 |
-
'file' => '@'.$this->fileHelper->getFilePath($filename)
|
91 |
-
));
|
92 |
-
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
93 |
-
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
94 |
-
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
95 |
-
'Content-Type: multipart/form-data')
|
96 |
-
);
|
97 |
-
// send contacts to address book
|
98 |
-
$result = curl_exec($ch);
|
99 |
-
$result = json_decode($result);
|
100 |
-
|
101 |
-
return $result;
|
102 |
-
}
|
103 |
-
|
104 |
-
/**
|
105 |
-
* Adds a contact to a given address book.
|
106 |
-
* @param $addressBookId
|
107 |
-
* @param $contactAPI
|
108 |
-
* @return mixed
|
109 |
-
*/
|
110 |
-
public function postAddressBookContacts($addressBookId, $contactAPI)
|
111 |
-
{
|
112 |
-
$data_string = json_encode($contactAPI);
|
113 |
-
$url = self::REST_ADDRESS_BOOKS . '/' . $addressBookId . '/contacts';
|
114 |
-
$ch = curl_init($url);
|
115 |
-
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
|
116 |
-
curl_setopt($ch, CURLOPT_USERPWD, $this->_api_user . ':' . $this->_api_password);
|
117 |
-
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
|
118 |
-
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
119 |
-
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
120 |
-
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
121 |
-
'Content-Type: application/json',
|
122 |
-
'Content-Length: ' . strlen($data_string))
|
123 |
-
);
|
124 |
-
|
125 |
-
// send campaign
|
126 |
-
$result = curl_exec($ch);
|
127 |
-
$result = json_decode($result);
|
128 |
-
|
129 |
-
return $result;
|
130 |
-
}
|
131 |
-
|
132 |
-
/**
|
133 |
-
* Deletes all contacts from a given address book.
|
134 |
-
* @param $addressBookId
|
135 |
-
* @param $contactId
|
136 |
-
*/
|
137 |
-
public function deleteAddressBookContact($addressBookId, $contactId)
|
138 |
-
{
|
139 |
-
$url = self::REST_ADDRESS_BOOKS . '/' . $addressBookId . '/contacts/' . $contactId;
|
140 |
-
$ch = curl_init($url);
|
141 |
-
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
|
142 |
-
curl_setopt($ch, CURLOPT_USERPWD, $this->_api_user . ':' . $this->_api_password);
|
143 |
-
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
144 |
-
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
145 |
-
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
146 |
-
'Content-Type: application/json'
|
147 |
-
));
|
148 |
-
$result = curl_exec($ch);
|
149 |
-
}
|
150 |
-
|
151 |
-
/**
|
152 |
-
* Gets a report with statistics about what was successfully imported, and what was unable to be imported.
|
153 |
-
* @param $importId
|
154 |
-
* @return mixed
|
155 |
-
*/
|
156 |
-
public function getContactsImportReport($importId)
|
157 |
-
{
|
158 |
-
$reportUrl = self::REST_CONTACTS_IMPORT . "{$importId}/report";
|
159 |
-
$ch = curl_init($reportUrl);
|
160 |
-
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
|
161 |
-
curl_setopt($ch, CURLOPT_USERPWD, $this->_api_user . ':' . $this->_api_password);
|
162 |
-
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
163 |
-
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
164 |
-
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
165 |
-
'Content-Type: application/json')
|
166 |
-
);
|
167 |
-
// get the report
|
168 |
-
$result = curl_exec($ch);
|
169 |
-
$result = json_decode($result);
|
170 |
-
return $result;
|
171 |
-
}
|
172 |
-
|
173 |
-
public function getContacts($skip = 0, $limit = 1000)
|
174 |
-
{
|
175 |
-
$allContactsUrl = self::REST_CONTACTS . '?select=' . $limit . '&skip=' . $skip;
|
176 |
-
$ch = curl_init($allContactsUrl);
|
177 |
-
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
|
178 |
-
curl_setopt($ch, CURLOPT_USERPWD, $this->_api_user . ':' . $this->_api_password);
|
179 |
-
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
180 |
-
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
181 |
-
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
182 |
-
'Content-Type: application/json'
|
183 |
-
));
|
184 |
-
$data = curl_exec($ch);
|
185 |
-
$result = json_decode($data);
|
186 |
-
|
187 |
-
return $result;
|
188 |
-
}
|
189 |
-
|
190 |
-
public function getContactByEmail($email)
|
191 |
-
{
|
192 |
-
$contactInfoUrl = self::REST_CONTACTS . $email;
|
193 |
-
$ch = curl_init($contactInfoUrl);
|
194 |
-
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
|
195 |
-
curl_setopt($ch, CURLOPT_USERPWD, $this->_api_user . ':' . $this->_api_password);
|
196 |
-
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
197 |
-
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
198 |
-
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
199 |
-
'Content-Type: application/json'
|
200 |
-
));
|
201 |
-
|
202 |
-
$data = curl_exec($ch);
|
203 |
-
$result = json_decode($data);
|
204 |
-
|
205 |
-
return $result;
|
206 |
-
}
|
207 |
-
public function getContactById($contactId)
|
208 |
-
{
|
209 |
-
$contactInfoUrl = self::REST_CONTACTS . $contactId;
|
210 |
-
$ch = curl_init($contactInfoUrl);
|
211 |
-
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
|
212 |
-
curl_setopt($ch, CURLOPT_USERPWD, $this->_api_user . ':' . $this->_api_password);
|
213 |
-
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
214 |
-
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
215 |
-
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
216 |
-
'Content-Type: application/json'
|
217 |
-
));
|
218 |
-
|
219 |
-
$data = curl_exec($ch);
|
220 |
-
$result = json_decode($data);
|
221 |
-
|
222 |
-
return $result;
|
223 |
-
}
|
224 |
-
|
225 |
-
/**
|
226 |
-
* Creates an address book.
|
227 |
-
* @return mixed
|
228 |
-
*/
|
229 |
-
public function postAddressBooks()
|
230 |
-
{
|
231 |
-
$contactInfoUrl = self::REST_ADDRESS_BOOKS;
|
232 |
-
$ch = curl_init($contactInfoUrl);
|
233 |
-
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
|
234 |
-
curl_setopt($ch, CURLOPT_USERPWD, $this->_api_user . ':' . $this->_api_password);
|
235 |
-
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
236 |
-
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
237 |
-
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
238 |
-
'Content-Type: application/json'
|
239 |
-
));
|
240 |
-
$data = curl_exec($ch);
|
241 |
-
$result = json_decode($data);
|
242 |
-
return $result;
|
243 |
-
}
|
244 |
-
|
245 |
-
/**
|
246 |
-
* Creates a campaign.
|
247 |
-
* @return mixed
|
248 |
-
*/
|
249 |
-
protected function postCampaigns(){
|
250 |
-
$contactInfoUrl = self::REST_DATA_FIELDS_CAMPAIGNS;
|
251 |
-
$ch = curl_init($contactInfoUrl);
|
252 |
-
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
|
253 |
-
curl_setopt($ch, CURLOPT_USERPWD, $this->_api_user . ':' . $this->_api_password);
|
254 |
-
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
255 |
-
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
256 |
-
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
257 |
-
'Content-Type: application/json'
|
258 |
-
));
|
259 |
-
$data = curl_exec($ch);
|
260 |
-
$result = json_decode($data);
|
261 |
-
return $result;
|
262 |
-
}
|
263 |
-
|
264 |
-
/**
|
265 |
-
* Creates a data field within the account.
|
266 |
-
* @return mixed
|
267 |
-
*/
|
268 |
-
protected function postDataFields() {
|
269 |
-
$contactInfoUrl = self::REST_DATA_FILEDS;
|
270 |
-
$ch_contact = curl_init($contactInfoUrl);
|
271 |
-
curl_setopt($ch_contact, CURLOPT_CUSTOMREQUEST, 'GET');
|
272 |
-
curl_setopt($ch_contact, CURLOPT_USERPWD, $this->_api_user . ':' . $this->_api_password);
|
273 |
-
curl_setopt($ch_contact, CURLOPT_RETURNTRANSFER, true);
|
274 |
-
curl_setopt($ch_contact, CURLOPT_SSL_VERIFYPEER, false);
|
275 |
-
curl_setopt($ch_contact, CURLOPT_HTTPHEADER, array(
|
276 |
-
'Content-Type: application/json'
|
277 |
-
));
|
278 |
-
$data = curl_exec($ch_contact);
|
279 |
-
$result = json_decode($data);
|
280 |
-
return $result;
|
281 |
-
}
|
282 |
-
|
283 |
-
/**
|
284 |
-
* Bulk creates, or bulk updates, contacts. Import format can either be CSV or Excel.
|
285 |
-
* Must include one column called "Email". Any other columns will attempt to map to your custom data fields.
|
286 |
-
* The ID of returned object can be used to query import progress.
|
287 |
-
* @param bool $waitFinished
|
288 |
-
* @return mixed
|
289 |
-
*/
|
290 |
-
private function postContactsImport($waitFinished = false){
|
291 |
-
$importUrl = self::REST_CONTACTS_IMPORT;
|
292 |
-
$ch = curl_init($importUrl);
|
293 |
-
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
|
294 |
-
curl_setopt($ch, CURLOPT_USERPWD, $this->_api_user . ':' . $this->_api_password);
|
295 |
-
curl_setopt($ch, CURLOPT_POSTFIELDS, array (
|
296 |
-
'file' => '@'.$this->getFilePath($this->_filename)
|
297 |
-
));
|
298 |
-
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
299 |
-
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
300 |
-
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
301 |
-
'Content-Type: multipart/form-data')
|
302 |
-
);
|
303 |
-
$result = curl_exec($ch);
|
304 |
-
$result = json_decode($result);
|
305 |
-
|
306 |
-
if($waitFinished)
|
307 |
-
$this->waitFinishedImport($result->id);
|
308 |
-
return $result;
|
309 |
-
}
|
310 |
-
public function updateContact($contactId, $data)
|
311 |
-
{
|
312 |
-
$data_string = json_encode($data);
|
313 |
-
$contactInfoUrl = self::REST_CONTACTS . $contactId;
|
314 |
-
$ch = curl_init($contactInfoUrl);
|
315 |
-
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
|
316 |
-
curl_setopt($ch, CURLOPT_POST, true);
|
317 |
-
curl_setopt($ch, CURLOPT_USERPWD, $this->_api_user . ':' . $this->_api_password);
|
318 |
-
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
|
319 |
-
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
320 |
-
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
321 |
-
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
322 |
-
'Content-Type: application/json',
|
323 |
-
'Content-Length: ' . strlen($data_string))
|
324 |
-
);
|
325 |
-
$data = curl_exec($ch);
|
326 |
-
$result = json_decode($data);
|
327 |
-
return $result;
|
328 |
-
}
|
329 |
-
|
330 |
-
/**
|
331 |
-
* Send connector campaings
|
332 |
-
* @param $campaignId
|
333 |
-
* @param $contacts
|
334 |
-
* @return mixed
|
335 |
-
*/
|
336 |
-
public function sendCampaign($campaignId, $contacts)
|
337 |
-
{
|
338 |
-
$data = array(
|
339 |
-
'username' => $this->_api_user,
|
340 |
-
'password' => $this->_api_password,
|
341 |
-
"campaignId" => $campaignId,
|
342 |
-
"ContactIds" => $contacts
|
343 |
-
);
|
344 |
-
|
345 |
-
$this->_helper->log($data, null, $this->_log_filename);
|
346 |
-
$data_string = json_encode($data);
|
347 |
-
$campaignUrl = self::REST_CAMPAIGN_SEND;
|
348 |
-
$ch = curl_init($campaignUrl);
|
349 |
-
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
|
350 |
-
curl_setopt($ch, CURLOPT_USERPWD, $this->_api_user . ':' . $this->_api_password);
|
351 |
-
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
|
352 |
-
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
353 |
-
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
354 |
-
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
355 |
-
'Content-Type: application/json',
|
356 |
-
'Content-Length: ' . strlen($data_string))
|
357 |
-
);
|
358 |
-
|
359 |
-
// send campaign
|
360 |
-
$result = curl_exec($ch);
|
361 |
-
$result = json_decode($result);
|
362 |
-
$this->_helper->log($result, null, $this->_log_filename);
|
363 |
-
|
364 |
-
return $result;
|
365 |
-
}
|
366 |
-
private function waitFinishedImport($importId){
|
367 |
-
|
368 |
-
do{
|
369 |
-
// wait until do the report status call
|
370 |
-
sleep(self::REST_WAIT_UPLOAD_TIME);
|
371 |
-
// ...the API request
|
372 |
-
// Create a GET request
|
373 |
-
|
374 |
-
$reportUrl = self::REST_CONTACTS_IMPORT . "{$importId}/report";
|
375 |
-
$ch = curl_init($reportUrl);
|
376 |
-
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
|
377 |
-
curl_setopt($ch, CURLOPT_USERPWD, $this->_api_user . ':' . $this->_api_password);
|
378 |
-
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
379 |
-
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
380 |
-
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
381 |
-
'Content-Type: application/json')
|
382 |
-
);
|
383 |
-
|
384 |
-
// get the report
|
385 |
-
$result = curl_exec($ch);
|
386 |
-
$result = json_decode($result);
|
387 |
-
|
388 |
-
}while(isset($result->message) && $result->message == self::REST_STATUS_REPORT_NOTFINISHED);
|
389 |
-
|
390 |
-
}
|
391 |
-
|
392 |
-
/**
|
393 |
-
* create new connector contact
|
394 |
-
* @param $email
|
395 |
-
* @return mixed
|
396 |
-
*/
|
397 |
-
public function createNewContact($email)
|
398 |
-
{
|
399 |
-
$data = array(
|
400 |
-
'Email' => $email,
|
401 |
-
'EmailType' => 'Html'
|
402 |
-
);
|
403 |
-
$data_string = json_encode($data);
|
404 |
-
$ch = curl_init(self::REST_CONTACTS);
|
405 |
-
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
|
406 |
-
curl_setopt($ch, CURLOPT_USERPWD, $this->_api_user . ':' . $this->_api_password);
|
407 |
-
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
|
408 |
-
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
409 |
-
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
410 |
-
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
411 |
-
'Content-Type: application/json',
|
412 |
-
'Content-Length: ' . strlen($data_string))
|
413 |
-
);
|
414 |
-
$result = curl_exec($ch);
|
415 |
-
$result = json_decode($result);
|
416 |
-
|
417 |
-
return $result;
|
418 |
-
}
|
419 |
-
|
420 |
-
public function sendIntallInfo($testEmail, $contactId, $campaignId)
|
421 |
-
{
|
422 |
-
$numProducts = Mage::getModel('catalog/product')->getCollection()->getSize();
|
423 |
-
$numCustomers = Mage::getModel('customer/customer')->getCollection()->getSize();
|
424 |
-
|
425 |
-
$data = array(
|
426 |
-
'Email' => $testEmail,
|
427 |
-
'EmailType' => 'Html',
|
428 |
-
'DataFields' => array(
|
429 |
-
array(
|
430 |
-
'Key' => 'INSTALLCUSTOMERS',
|
431 |
-
'Value' => (string)$numCustomers),
|
432 |
-
array(
|
433 |
-
'Key' => 'INSTALLPRODUCTS',
|
434 |
-
'Value' => (string)$numProducts),
|
435 |
-
array(
|
436 |
-
'Key' => 'INSTALLURL',
|
437 |
-
'Value' => Mage::getBaseUrl()),
|
438 |
-
array(
|
439 |
-
'Key' => 'INSTALLAPI',
|
440 |
-
'Value' => implode(',' , $this->getWebsiteAccounts())),
|
441 |
-
array(
|
442 |
-
'Key' => 'PHPMEMORY',
|
443 |
-
'Value' => ini_get('memory_limit') . ', V=' . Mage::helper('connector')->getConnectorVersion()
|
444 |
-
)
|
445 |
-
)
|
446 |
-
);
|
447 |
-
|
448 |
-
$this->updateContact($contactId, $data);
|
449 |
-
$this->sendCampaign($campaignId, array($contactId));
|
450 |
-
|
451 |
-
return ;
|
452 |
-
}
|
453 |
-
private function getWebsiteAccounts()
|
454 |
-
{
|
455 |
-
$accounts = array();
|
456 |
-
$websites = Mage::app()->getWebsites();
|
457 |
-
foreach ($websites as $website) {
|
458 |
-
$websiteId = $website->getWebsiteId();
|
459 |
-
$websiteModel = Mage::app()->getWebsite($websiteId);
|
460 |
-
$apiUsername = $websiteModel->getConfig('connector_api_settings/api_credentials/username');
|
461 |
-
if(! in_array($apiUsername, $accounts))
|
462 |
-
$accounts[] = $apiUsername;
|
463 |
-
}
|
464 |
-
return $accounts;
|
465 |
-
}
|
466 |
-
|
467 |
-
protected function getSuppressedSince($dateString)
|
468 |
-
{
|
469 |
-
$suppressedUrl = self::REST_CONTACTS_SUPPRESSED_SINCE . $dateString;
|
470 |
-
$ch = curl_init($suppressedUrl);
|
471 |
-
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
|
472 |
-
curl_setopt($ch, CURLOPT_USERPWD, $this->_api_user . ':' . $this->_api_password);
|
473 |
-
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
474 |
-
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
475 |
-
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
476 |
-
'Content-Type: application/json'
|
477 |
-
));
|
478 |
-
|
479 |
-
// get the list of suppressed contacts
|
480 |
-
$data = curl_exec($ch);
|
481 |
-
$data = json_decode($data);
|
482 |
-
|
483 |
-
return $data;
|
484 |
-
|
485 |
-
}
|
486 |
-
public function sendMultiTransactionalData($ordersData, $collectionName = 'Order')
|
487 |
-
{
|
488 |
-
$orders = array();
|
489 |
-
foreach ($ordersData as $order) {
|
490 |
-
if(isset($order->connector_id)){
|
491 |
-
$orders[] = array(
|
492 |
-
'Key' => $order->id,
|
493 |
-
'ContactIdentifier' => $order->connector_id,
|
494 |
-
'Json' => json_encode($order->expose())
|
495 |
-
);
|
496 |
-
}
|
497 |
-
}
|
498 |
-
|
499 |
-
$data_string = json_encode($orders);
|
500 |
-
$transactionalUrl = self::REST_TRANSACTIONAL_DATA_IMPORT . $collectionName;
|
501 |
-
|
502 |
-
$ch = curl_init($transactionalUrl);
|
503 |
-
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
|
504 |
-
curl_setopt($ch, CURLOPT_USERPWD, $this->_api_user . ':' . $this->_api_password);
|
505 |
-
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
|
506 |
-
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
507 |
-
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
508 |
-
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
509 |
-
'Content-Type: application/json',
|
510 |
-
'Content-Length: ' . strlen($data_string))
|
511 |
-
);
|
512 |
-
|
513 |
-
// send contacts to connector
|
514 |
-
$result = curl_exec($ch);
|
515 |
-
$result = json_decode($result);
|
516 |
-
|
517 |
-
return $result;
|
518 |
-
}
|
519 |
-
protected function sendTransactionalData($quoteData, $collectionName = 'Basket')
|
520 |
-
{
|
521 |
-
// check if the transactional data is already set
|
522 |
-
$transactionalUrl = self::REST_SINGLE_TRANSACTIONAL_DATA_IMPORT . $collectionName . '/' . $quoteData->id ;
|
523 |
-
$ch = curl_init($transactionalUrl);
|
524 |
-
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
|
525 |
-
curl_setopt($ch, CURLOPT_USERPWD, $this->_api_user . ':' . $this->_api_password);
|
526 |
-
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
527 |
-
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
528 |
-
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
529 |
-
'Content-Type: application/json'
|
530 |
-
));
|
531 |
-
$result = curl_exec($ch);
|
532 |
-
$result = json_decode($result);
|
533 |
-
|
534 |
-
if(isset($result->message) && $result->message == self::REST_TRANSACTIONAL_DATA_NOT_EXISTS)
|
535 |
-
$transactionalUrl = self::REST_SINGLE_TRANSACTIONAL_DATA_IMPORT . $collectionName ;
|
536 |
-
else
|
537 |
-
$transactionalUrl = self::REST_SINGLE_TRANSACTIONAL_DATA_IMPORT . $collectionName . '/' . $result->key ;
|
538 |
-
|
539 |
-
|
540 |
-
$data = array(
|
541 |
-
'Key' => $quoteData->id,
|
542 |
-
'ContactIdentifier' => $quoteData->connector_id,
|
543 |
-
'Json' => json_encode($quoteData->expose())
|
544 |
-
);
|
545 |
-
|
546 |
-
|
547 |
-
$data_string = json_encode($data);
|
548 |
-
|
549 |
-
$ch = curl_init($transactionalUrl);
|
550 |
-
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
|
551 |
-
curl_setopt($ch, CURLOPT_USERPWD, $this->_api_user . ':' . $this->_api_password);
|
552 |
-
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
|
553 |
-
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
554 |
-
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
555 |
-
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
556 |
-
'Content-Type: application/json',
|
557 |
-
'Content-Length: ' . strlen($data_string))
|
558 |
-
);
|
559 |
-
|
560 |
-
// send contacts to connector
|
561 |
-
$result = curl_exec($ch);
|
562 |
-
$result = json_decode($result);
|
563 |
-
|
564 |
-
return $result;
|
565 |
-
}
|
566 |
-
|
567 |
-
public function sendOrderTransactionalData($order, $collectionName = 'Order', $key = '')
|
568 |
-
{
|
569 |
-
$data = array(
|
570 |
-
'Key' => $order->id,
|
571 |
-
'ContactIdentifier' => $order->connector_id,
|
572 |
-
'Json' => json_encode($order->expose())
|
573 |
-
);
|
574 |
-
|
575 |
-
|
576 |
-
$data_string = json_encode($data);
|
577 |
-
|
578 |
-
$transactionalUrl = self::REST_SINGLE_TRANSACTIONAL_DATA_IMPORT . $collectionName . '/' . $key;
|
579 |
-
|
580 |
-
$ch = curl_init($transactionalUrl);
|
581 |
-
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
|
582 |
-
curl_setopt($ch, CURLOPT_USERPWD, $this->_api_user . ':' . $this->_api_password);
|
583 |
-
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
|
584 |
-
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
585 |
-
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
586 |
-
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
587 |
-
'Content-Type: application/json',
|
588 |
-
'Content-Length: ' . strlen($data_string))
|
589 |
-
);
|
590 |
-
|
591 |
-
// send contacts to connector
|
592 |
-
$result = curl_exec($ch);
|
593 |
-
$result = json_decode($result);
|
594 |
-
|
595 |
-
if(! isset($result->message)){
|
596 |
-
$this->removeTransactionalData($order->connector_id, 'Basket');
|
597 |
-
}
|
598 |
-
|
599 |
-
return $result;
|
600 |
-
}
|
601 |
-
public function deleteContactsTransactionalData($collectionName = 'Order', $key = '')
|
602 |
-
{
|
603 |
-
|
604 |
-
$transactionalUrl = self::REST_SINGLE_TRANSACTIONAL_DATA_IMPORT . $collectionName . '/' . $key;
|
605 |
-
|
606 |
-
$ch = curl_init($transactionalUrl);
|
607 |
-
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
|
608 |
-
curl_setopt($ch, CURLOPT_USERPWD, $this->_api_user . ':' . $this->_api_password);
|
609 |
-
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
610 |
-
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
611 |
-
|
612 |
-
// send contacts to connector
|
613 |
-
$result = curl_exec($ch);
|
614 |
-
$result = json_decode($result);
|
615 |
-
|
616 |
-
|
617 |
-
return $result;
|
618 |
-
}
|
619 |
-
|
620 |
-
public function removeTransactionalData($contactId, $collectionName)
|
621 |
-
{
|
622 |
-
$transactionalUrl = 'https://apiconnector.com/v2/contacts/' . $contactId . '/transactional-data/' . $collectionName ;
|
623 |
-
$ch = curl_init($transactionalUrl);
|
624 |
-
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
|
625 |
-
curl_setopt($ch, CURLOPT_USERPWD, $this->_api_user . ':' . $this->_api_password);
|
626 |
-
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
627 |
-
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
628 |
-
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
629 |
-
'Content-Type: application/json'
|
630 |
-
));
|
631 |
-
$result = curl_exec($ch);
|
632 |
-
|
633 |
-
}
|
634 |
-
|
635 |
-
public function testAccount()
|
636 |
-
{
|
637 |
-
$url = self::REST_ACCOUNT_INFO;
|
638 |
-
$ch = curl_init($url);
|
639 |
-
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
|
640 |
-
curl_setopt($ch, CURLOPT_USERPWD, $this->_api_user . ':' . $this->_api_password);
|
641 |
-
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
642 |
-
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
643 |
-
$result = curl_exec($ch);
|
644 |
-
$result = json_decode($result);
|
645 |
-
if(isset($result->message)){
|
646 |
-
return false;
|
647 |
-
}
|
648 |
-
|
649 |
-
return true;
|
650 |
-
}
|
651 |
-
|
652 |
-
public function getAddressBookContacts($bookId, $skip = 0)
|
653 |
-
{
|
654 |
-
/**
|
655 |
-
* https://apiconnector.com/v2/address-books/{addressBookId}/contacts?withFullData={withFullData}&select={select}&skip={skip}
|
656 |
-
*/
|
657 |
-
$url = self::REST_ADDRESS_BOOKS . '/' . $bookId . '/contacts' . '?skip=' . $skip;
|
658 |
-
|
659 |
-
$ch = curl_init($url);
|
660 |
-
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
|
661 |
-
curl_setopt($ch, CURLOPT_USERPWD, $this->_api_user . ':' . $this->_api_password);
|
662 |
-
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
663 |
-
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
664 |
-
$result = curl_exec($ch);
|
665 |
-
$result = json_decode($result);
|
666 |
-
return $result;
|
667 |
-
|
668 |
-
}
|
669 |
-
|
670 |
-
/**
|
671 |
-
* Send a single SMS message.
|
672 |
-
* @param $number
|
673 |
-
* @param $message
|
674 |
-
* @return mixed
|
675 |
-
*/
|
676 |
-
public function postSmsMessagesSendTo($telephoneNumber, $message)
|
677 |
-
{
|
678 |
-
$data = array('Message' => $message);
|
679 |
-
$data_string = json_encode($data);
|
680 |
-
$ch = curl_init(self::REST_SMS_MESSAGE_SEND_TO . $telephoneNumber);
|
681 |
-
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
|
682 |
-
curl_setopt($ch, CURLOPT_USERPWD, $this->_api_user . ':' . $this->_api_password);
|
683 |
-
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
|
684 |
-
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
685 |
-
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
686 |
-
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
687 |
-
'Content-Type: application/json',
|
688 |
-
'Content-Length: ' . strlen($data_string))
|
689 |
-
);
|
690 |
-
$result = curl_exec($ch);
|
691 |
-
$result = json_decode($result);
|
692 |
-
return $result;
|
693 |
-
}
|
694 |
-
|
695 |
-
public function postContactsTransactionalDataImport($collectionName, $data = array())
|
696 |
-
{
|
697 |
-
$import = array();
|
698 |
-
|
699 |
-
foreach ($data as $one) {
|
700 |
-
|
701 |
-
$import[] = array(
|
702 |
-
'Key' => $one->getId(),
|
703 |
-
'ContactIdentifier' => $one->getCustomerId(),
|
704 |
-
'Json' => json_encode($one->expose())
|
705 |
-
);
|
706 |
-
}
|
707 |
-
|
708 |
-
$data_string = json_encode($import);
|
709 |
-
|
710 |
-
$transactionalUrl = self::REST_TRANSACTIONAL_DATA_IMPORT . $collectionName;
|
711 |
-
|
712 |
-
$ch = curl_init($transactionalUrl);
|
713 |
-
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
|
714 |
-
curl_setopt($ch, CURLOPT_USERPWD, $this->_api_user . ':' . $this->_api_password);
|
715 |
-
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
|
716 |
-
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
717 |
-
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
718 |
-
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
719 |
-
'Content-Type: application/json',
|
720 |
-
'Content-Length: ' . strlen($data_string))
|
721 |
-
);
|
722 |
-
|
723 |
-
// send contacts to connector
|
724 |
-
$result = curl_exec($ch);
|
725 |
-
$result = json_decode($result);
|
726 |
-
|
727 |
-
return $result;
|
728 |
-
}
|
729 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Dotdigitalgroup/Email/Model/Connector/Quote.php
DELETED
@@ -1,75 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Dotdigitalgroup_Email_Model_Connector_Quote
|
4 |
-
{
|
5 |
-
|
6 |
-
public $id;
|
7 |
-
public $connector_id;
|
8 |
-
public $customer_id;
|
9 |
-
protected $store_name;
|
10 |
-
protected $create_date;
|
11 |
-
protected $update_date;
|
12 |
-
protected $delivery_address;
|
13 |
-
protected $billing_address;
|
14 |
-
protected $products = array();
|
15 |
-
protected $order_subtotal;
|
16 |
-
protected $order_total;
|
17 |
-
|
18 |
-
/**
|
19 |
-
* set the quote information
|
20 |
-
* @param Mage_Sales_Model_Quote $quote
|
21 |
-
*/
|
22 |
-
public function __construct(Mage_Sales_Model_Quote $quote)
|
23 |
-
{
|
24 |
-
$this->id = $quote->getId();
|
25 |
-
$this->customer_id = $quote->getCustomerId();
|
26 |
-
$customerModel = Mage::getModel('customer/customer')->load($this->customer_id);
|
27 |
-
$this->connector_id = $customerModel->getData('dotmailer_contact_id');
|
28 |
-
|
29 |
-
$this->store_name = $this->getStoreName($quote->getStoreId());
|
30 |
-
$this->order_subtotal = (float)number_format($quote->getSubtotal(), 2);
|
31 |
-
$this->order_total = (float)number_format($quote->getGrandTotal(), 2);
|
32 |
-
|
33 |
-
$created_at = new Zend_Date($quote->getCreatedAt(), Zend_Date::ISO_8601);
|
34 |
-
$updated_at = new Zend_Date($quote->getUpdatedAt(), Zend_Date::ISO_8601);
|
35 |
-
$this->create_date = $created_at->toString(Zend_Date::ISO_8601);
|
36 |
-
$this->update_date = $updated_at->toString(Zend_Date::ISO_8601);
|
37 |
-
|
38 |
-
$items = $quote->getAllVisibleItems();
|
39 |
-
foreach ($items as $product) {
|
40 |
-
$this->products[] = array(
|
41 |
-
'name' => $product->getName(),
|
42 |
-
'sku' => $product->getSku(),
|
43 |
-
'category' => $this->getCategory($product),
|
44 |
-
'qty' => (float)number_format($product->getQty(), 2),
|
45 |
-
'price' => (float)number_format($product->getPrice(), 2)
|
46 |
-
);
|
47 |
-
}
|
48 |
-
}
|
49 |
-
private function getStoreName($storeId)
|
50 |
-
{
|
51 |
-
$storeModel = Mage::getModel('core/store')->load($storeId);
|
52 |
-
return $storeModel->getName();
|
53 |
-
}
|
54 |
-
private function getCategory($product)
|
55 |
-
{
|
56 |
-
$product = Mage::getModel('catalog/product')->load($product->getProductId());
|
57 |
-
$categories = $product->getCategoryCollection()
|
58 |
-
->addAttributeToSelect('name');
|
59 |
-
$categoryNames = array();
|
60 |
-
foreach ($categories as $cat) {
|
61 |
-
$categoryNames[] = $cat->getName();
|
62 |
-
}
|
63 |
-
|
64 |
-
$categoryNames = implode(',', $categoryNames);
|
65 |
-
return $categoryNames;
|
66 |
-
|
67 |
-
}
|
68 |
-
// exposes the class as an array of objects
|
69 |
-
public function expose() {
|
70 |
-
|
71 |
-
return get_object_vars($this);
|
72 |
-
|
73 |
-
}
|
74 |
-
|
75 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Dotdigitalgroup/Email/Model/Cron.php
DELETED
@@ -1,58 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
class Dotdigitalgroup_Email_Model_Cron
|
3 |
-
{
|
4 |
-
/**
|
5 |
-
* CRON FOR CUSTOMER SYNC
|
6 |
-
*/
|
7 |
-
public function customersync()
|
8 |
-
{
|
9 |
-
if(Mage::getStoreConfig(Dotdigitalgroup_Email_Model_Customer_Customer::XML_PATH_CUSTOMER_SYNC_ENABLE))
|
10 |
-
Mage::getModel('connector/customer_customer')->sync();
|
11 |
-
return;
|
12 |
-
}
|
13 |
-
|
14 |
-
/**
|
15 |
-
* CRON FOR LOST BASKET
|
16 |
-
*/
|
17 |
-
public function lostbasketssync()
|
18 |
-
{
|
19 |
-
//look for lost baskets
|
20 |
-
Mage::getModel('connector/sales_quote')->proccessCampaigns();
|
21 |
-
$helper = Mage::helper('connector');
|
22 |
-
if($helper->isOrderTransactionalEnabled()){
|
23 |
-
//send transactional data and mark as imported
|
24 |
-
Mage::getModel('connector/sales_order')->sync();
|
25 |
-
}
|
26 |
-
if($helper->isCustomerSyncEnabled()){
|
27 |
-
//check for customer that have no connector id
|
28 |
-
$numUpdated = Mage::getModel('connector/customer_customer')->syncContacts();
|
29 |
-
Mage::helper('connector')->log('SYNC CONTACTS : '. $numUpdated);
|
30 |
-
}
|
31 |
-
}
|
32 |
-
|
33 |
-
/**
|
34 |
-
* CRON FOR SUPRESSED CONTACTS
|
35 |
-
*/
|
36 |
-
public function suppressedsync()
|
37 |
-
{
|
38 |
-
if(Mage::getStoreConfig(Dotdigitalgroup_Email_Model_Customer_Customer::XML_PATH_CUSTOMER_SUPPRESSED_ENABLE)){
|
39 |
-
//check suppressed contacts from connector
|
40 |
-
Mage::getModel('connector/customer_suppressed')->unsubscribe();
|
41 |
-
}
|
42 |
-
|
43 |
-
}
|
44 |
-
|
45 |
-
/**
|
46 |
-
* CLEAN ARHIVED FOLDERS
|
47 |
-
*/
|
48 |
-
|
49 |
-
public function cleaning()
|
50 |
-
{
|
51 |
-
$helper = Mage::helper('connector/file');
|
52 |
-
$archivedFolder = $helper->getArchiveFolder();
|
53 |
-
$result = $helper->deleteDir($archivedFolder);
|
54 |
-
Mage::helper('connector')->log('Cleaning cronjob result : ' . $result, null, 'api.log');
|
55 |
-
return $result;
|
56 |
-
}
|
57 |
-
|
58 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Dotdigitalgroup/Email/Model/Customer/Customer.php
DELETED
@@ -1,480 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Dotdigitalgroup_Email_Model_Customer_Customer extends Dotdigitalgroup_Email_Model_Api_Rest
|
4 |
-
{
|
5 |
-
// xml configuration
|
6 |
-
const XML_PATH_CONNECTOR_API_USERNAME = 'connector_api_settings/api_credentials/username';
|
7 |
-
const XML_PATH_CONNECTOR_API_PASSWORD = 'connector_api_settings/api_credentials/password';
|
8 |
-
const XML_PATH_CUSTOMER_SYNC_ENABLE = 'connector_sync_settings/sync_customer_schedule/enabled';
|
9 |
-
const XML_PATH_CUSTOMER_SYNC_LIMIT = 'connector_advanced_settings/sync_limits/contact';
|
10 |
-
const XML_PATH_CUSTOMER_SUPPRESSED_ENABLE = 'connector_sync_settings/sync_suppressed_schedule/enabled';
|
11 |
-
const XML_PATH_CUSTOMERS_ADDRESS_BOOK_ID = 'connector_data_field_settings/address_book/customers';
|
12 |
-
const XML_PATH_CUSTOMERS_SUPPRESSED_INTERVAL = 'connector_sync_settings/sync_suppressed_schedule/frequency';
|
13 |
-
const XML_PATH_GUEST_ADDRESS_BOOK_ID = 'connector_data_field_settings/address_book/guest';
|
14 |
-
const XML_PATH_CUSTOMER_WISHLIST_ENABLED = 'connector_sync_settings/transactional_data/wishlist_enabled';
|
15 |
-
|
16 |
-
const FORCE_CUSTOMERS_YEARS = '10';
|
17 |
-
|
18 |
-
protected $_customers_address_book_id;
|
19 |
-
protected $_customers = array();
|
20 |
-
protected $_mapping_hash;
|
21 |
-
protected $_website; // website model
|
22 |
-
private $countSubscribers = 0;
|
23 |
-
private $countCustomers = 0;
|
24 |
-
|
25 |
-
protected $accounts = array();// api accounts
|
26 |
-
protected $wishlists = array();// wishlists
|
27 |
-
protected $_proccessing;
|
28 |
-
protected $_websiteId;
|
29 |
-
public $apiLimit = 450;
|
30 |
-
|
31 |
-
public function sync()
|
32 |
-
{
|
33 |
-
/** @var Dotdigitalgroup_Email_Helper_Data $helper */
|
34 |
-
$helper = Mage::helper('connector');
|
35 |
-
$helper->log('Start customer sync..', null, $this->_log_filename);
|
36 |
-
$result = array('error' => false, 'message' => "Done.");
|
37 |
-
|
38 |
-
// check for default settings to use memory limit
|
39 |
-
if(Mage::getStoreConfig('connector_advanced_settings/admin/memory_limit'))
|
40 |
-
$this->allowResourceFullExecution();
|
41 |
-
|
42 |
-
// get all websites
|
43 |
-
foreach(Mage::app()->getWebsites() as $website){
|
44 |
-
|
45 |
-
// skip any actions if sync disabled
|
46 |
-
if(! $website->getConfig(self::XML_PATH_CUSTOMER_SYNC_ENABLE))
|
47 |
-
continue;
|
48 |
-
//API credentials
|
49 |
-
$this->_api_user = $website->getConfig(self::XML_PATH_CONNECTOR_API_USERNAME);
|
50 |
-
$this->_api_password = $website->getConfig(self::XML_PATH_CONNECTOR_API_PASSWORD);
|
51 |
-
|
52 |
-
if(strlen($this->_api_user) > 10 && strlen($this->_api_password)){
|
53 |
-
|
54 |
-
$result = $this->exportCustomersForWebsite($website);
|
55 |
-
if($website->getConfig(self::XML_PATH_CUSTOMER_WISHLIST_ENABLED)){
|
56 |
-
$this->exportWishlistsForWebsite($website);
|
57 |
-
}
|
58 |
-
}else{
|
59 |
-
$result['error'] = true;
|
60 |
-
$message = 'The Credentials For Website :' . $website->getCode() . ' is not set!';
|
61 |
-
$result['message'] = $message;
|
62 |
-
$helper->log($message, null, $this->_log_filename);
|
63 |
-
}
|
64 |
-
}
|
65 |
-
//set result check
|
66 |
-
if($this->countCustomers != 0){
|
67 |
-
|
68 |
-
$message = 'Total Exported : ' . $this->countCustomers . ' Customers, ' . $this->countSubscribers . ' Subscribers.';
|
69 |
-
|
70 |
-
$result['message'] = $message;
|
71 |
-
$helper->log($message, null, $this->_log_filename);
|
72 |
-
}else{
|
73 |
-
$result['error'] = true;
|
74 |
-
$message = 'Check the logs for more information, the number of updated customers is : 0.';
|
75 |
-
$result['message'] = $message;
|
76 |
-
}
|
77 |
-
|
78 |
-
$helper->log('Customer sync end!', null, $this->_log_filename);
|
79 |
-
return $result;
|
80 |
-
}
|
81 |
-
|
82 |
-
/**
|
83 |
-
* Get the customer for the website
|
84 |
-
* @param bool $websiteId
|
85 |
-
* @return mixed
|
86 |
-
*/
|
87 |
-
public function getContactsCustomers($websiteId = false)
|
88 |
-
{
|
89 |
-
/** @var Mage_Customer_Model_Customer $customerCollection */
|
90 |
-
$customerCollection = Mage::getModel('customer/customer')->getCollection()
|
91 |
-
->addAttributeToSelect('dotmailer_contact_id')
|
92 |
-
->addAttributeToFilter('dotmailer_contact_id', array('notnull' => true), 'left')
|
93 |
-
;
|
94 |
-
if($websiteId !== false)
|
95 |
-
$customerCollection->addAttributeToFilter('website_id', $websiteId);
|
96 |
-
|
97 |
-
return $customerCollection;
|
98 |
-
}
|
99 |
-
|
100 |
-
private function countNumOfContacts($contacts)
|
101 |
-
{
|
102 |
-
$total = 0;
|
103 |
-
// Get contacts number with contact id
|
104 |
-
foreach ($contacts as $contact) {
|
105 |
-
if($contact->getDotmailerContactId())
|
106 |
-
$total++;
|
107 |
-
}
|
108 |
-
unset($contacts);
|
109 |
-
return $total;
|
110 |
-
}
|
111 |
-
|
112 |
-
public function syncContacts()
|
113 |
-
{
|
114 |
-
$updated = 0;
|
115 |
-
/**
|
116 |
-
* Customers at website level
|
117 |
-
*/
|
118 |
-
foreach (Mage::app()->getWebsites(true) as $website) {
|
119 |
-
$websiteId = $website->getId();
|
120 |
-
$missingContacts = $this->getMissingContacts($websiteId, $this->apiLimit);
|
121 |
-
Mage::helper('connector')->log('API LIMIT : ' . $this->apiLimit, null, 'api.log');
|
122 |
-
Mage::helper('connector')->log($missingContacts->count(), null, 'api.log');
|
123 |
-
if(count($missingContacts) == 0)
|
124 |
-
continue;
|
125 |
-
//save customer and trigger the obsever
|
126 |
-
foreach($missingContacts as $customer){
|
127 |
-
try{
|
128 |
-
$customer->save();
|
129 |
-
$updated++;
|
130 |
-
//limit the number of updated contacts
|
131 |
-
if($this->apiLimit == $updated){
|
132 |
-
return $updated;
|
133 |
-
}
|
134 |
-
}catch (Exception $e){
|
135 |
-
Mage::logException($e);
|
136 |
-
}
|
137 |
-
}
|
138 |
-
}
|
139 |
-
return $updated;
|
140 |
-
}
|
141 |
-
public function getMissingContacts($websiteId = null, $limit = 200)
|
142 |
-
{
|
143 |
-
$customerCollection = Mage::getModel('customer/customer')->getCollection()
|
144 |
-
->addAttributeToSelect('dotmailer_contact_id')
|
145 |
-
->addAttributeToFilter('dotmailer_contact_id', array('null' => true), 'left')
|
146 |
-
->setPageSize($limit)
|
147 |
-
;
|
148 |
-
if($websiteId !== null)
|
149 |
-
$customerCollection->addAttributeToFilter('website_id', $websiteId);
|
150 |
-
|
151 |
-
return $customerCollection;
|
152 |
-
}
|
153 |
-
public function getTotalNumberCustomers()
|
154 |
-
{
|
155 |
-
$customers = Mage::getModel('customer/customer')->getCollection();
|
156 |
-
$totalCustomers = $customers->getSize();
|
157 |
-
|
158 |
-
return $totalCustomers;
|
159 |
-
}
|
160 |
-
|
161 |
-
public function countSkipContacts($contacts = false, $websiteId)
|
162 |
-
{
|
163 |
-
if($contacts)
|
164 |
-
$numContactIds = $this->countNumOfContacts($contacts);
|
165 |
-
else
|
166 |
-
$numContactIds = count($this->getContactsCustomers($websiteId));
|
167 |
-
|
168 |
-
|
169 |
-
return $numContactIds;
|
170 |
-
}
|
171 |
-
|
172 |
-
/**
|
173 |
-
* @param Mage_Core_Model_Website $website
|
174 |
-
* @return $this
|
175 |
-
*/
|
176 |
-
public function exportCustomersForWebsite(Mage_Core_Model_Website $website)
|
177 |
-
{
|
178 |
-
$websiteCode = $website->getCode();
|
179 |
-
$websiteId = $website->getId();
|
180 |
-
$customer_filename = $websiteCode . '_' . $this->_customers_file_slug . '_' . date('d-M-Y_hms') . '.csv';
|
181 |
-
$subscriber_filename = $websiteCode . '_' . $this->_subscribers_file_slug . '_' . date('d-M-Y_hms') . '.csv';
|
182 |
-
$helper = Mage::helper('connector');
|
183 |
-
|
184 |
-
$helper->log('customer filename : ' . $customer_filename . ', subscriber filename : ' . $subscriber_filename, null, $this->_log_filename);
|
185 |
-
|
186 |
-
$pageNum = 1;
|
187 |
-
$pageSize = $website->getConfig('connector_advanced_settings/admin/batch_size');
|
188 |
-
if($pageSize == '') $pageSize = 5000;
|
189 |
-
$this->fileHelper = Mage::helper('connector/file');
|
190 |
-
|
191 |
-
do{
|
192 |
-
$time_start = microtime(true);
|
193 |
-
|
194 |
-
$currentBatch = $this->getCustomersToExport($pageSize, $pageNum, $this->getMappingHash($website), $website->getId());
|
195 |
-
$condition = count($currentBatch);
|
196 |
-
//write the csv headers
|
197 |
-
if($pageNum == 1 && count($currentBatch)){
|
198 |
-
$this->fileHelper->outputCSV($this->fileHelper->getFilePath($customer_filename), $this->getCsvHeaderArray($website));
|
199 |
-
$this->fileHelper->outputCSV($this->fileHelper->getFilePath($subscriber_filename), array('Email', 'emailType'));
|
200 |
-
}
|
201 |
-
foreach ($currentBatch as $customer) {
|
202 |
-
|
203 |
-
/**
|
204 |
-
* Send wishlist as transactional data
|
205 |
-
*/
|
206 |
-
if($website->getConfig(self::XML_PATH_CUSTOMER_WISHLIST_ENABLED)){
|
207 |
-
$this->setWishlists($customer, $website);
|
208 |
-
}
|
209 |
-
// check if customer is subscribed
|
210 |
-
if($customer->isSubscribed()){
|
211 |
-
// save data for subscribers
|
212 |
-
$this->fileHelper->outputCSV($this->fileHelper->getFilePath($subscriber_filename), array($customer->getEmail(), 'Html'));
|
213 |
-
$this->countSubscribers++;
|
214 |
-
}
|
215 |
-
|
216 |
-
// save data for csutomers
|
217 |
-
$this->fileHelper->outputCSV($this->fileHelper->getFilePath($customer_filename), $customer->toCSVArray());
|
218 |
-
$this->countCustomers++;
|
219 |
-
}
|
220 |
-
$time_end = microtime(true);
|
221 |
-
$time_in_seconds = $time_end - $time_start;
|
222 |
-
|
223 |
-
$helper->log('-----------------------------------------------execution time :' . gmdate("H:i:s", $time_in_seconds), null, $this->_log_filename);
|
224 |
-
$pageNum++;
|
225 |
-
unset($currentBatch);
|
226 |
-
|
227 |
-
}while( $condition == $pageSize );
|
228 |
-
|
229 |
-
$storeIds = Mage::getModel('core/website')->load($websiteId)
|
230 |
-
->getStoreIds();
|
231 |
-
$subscriberModel = new Dotdigitalgroup_Email_Model_Newsletter_Subscriber();
|
232 |
-
$subscribersNotCustomers = $subscriberModel->getSubscribersNotCustomers($storeIds);
|
233 |
-
|
234 |
-
foreach ($subscribersNotCustomers as $one) {
|
235 |
-
$this->fileHelper->outputCSV($this->fileHelper->getFilePath($subscriber_filename), array($one->getSubscriberEmail()));
|
236 |
-
$this->countSubscribers++;
|
237 |
-
}
|
238 |
-
|
239 |
-
/**
|
240 |
-
* Save customers and subscribers to address books
|
241 |
-
*/
|
242 |
-
$this->postAddressBookContactsImport($customer_filename, $website->getConfig(self::XML_PATH_CUSTOMERS_ADDRESS_BOOK_ID));
|
243 |
-
$this->postAddressBookContactsImport($subscriber_filename, $website->getConfig(Dotdigitalgroup_Email_Model_Newsletter_Subscriber::XML_PATH_SUBSCRIBERS_ADDRESS_BOOK_ID));
|
244 |
-
|
245 |
-
//If successful, archive the CSV file and Log something in the Magento Log - success/failure
|
246 |
-
if(file_exists($this->fileHelper->getFilePath($customer_filename)) && file_exists($this->fileHelper->getFilePath($subscriber_filename))){
|
247 |
-
$this->fileHelper->archiveCSV($customer_filename);
|
248 |
-
$this->fileHelper->archiveCSV($subscriber_filename);
|
249 |
-
}
|
250 |
-
return $this;
|
251 |
-
|
252 |
-
}
|
253 |
-
|
254 |
-
private function exportWishlistsForWebsite(Mage_Core_Model_Website $website){
|
255 |
-
|
256 |
-
$this->_api_user = $website->getConfig(self::XML_PATH_CONNECTOR_API_USERNAME);
|
257 |
-
$this->_api_password = $website->getConfig(self::XML_PATH_CONNECTOR_API_PASSWORD);
|
258 |
-
//wishlists for the website key
|
259 |
-
if(isset($this->wishlists[$website->getId()])){
|
260 |
-
|
261 |
-
//send wishlists as transactional data
|
262 |
-
$wishlists = $this->wishlists[$website->getId()];
|
263 |
-
|
264 |
-
$this->postContactsTransactionalDataImport($collectionName = 'Wishlist', $wishlists);
|
265 |
-
}
|
266 |
-
}
|
267 |
-
|
268 |
-
public function getCustomersToExport($pageSize = 0, $pageNum = 1, $mappingHash, $websiteId)
|
269 |
-
{
|
270 |
-
// the filtering and aggregation of all the customer data here
|
271 |
-
$customers = array();
|
272 |
-
$helper = Mage::helper('connector');
|
273 |
-
|
274 |
-
$customerCollection = Mage::getModel('customer/customer')->getCollection()
|
275 |
-
->addAttributeToSelect('email')
|
276 |
-
->addAttributeToSelect('firstname')
|
277 |
-
->addAttributeToSelect('lastname')
|
278 |
-
->addAttributeToSelect('dob')
|
279 |
-
->addAttributeToSelect('gender')
|
280 |
-
->addAttributeToSelect('prefix')
|
281 |
-
->addAttributeToSelect('website_id')
|
282 |
-
->addAttributeToSelect('store_id')
|
283 |
-
->addAttributeToSelect('created_at')
|
284 |
-
->addAttributeToSelect('last_logged_in')
|
285 |
-
->addAttributeToSelect('group_id')
|
286 |
-
->addAttributeToSelect('dob')
|
287 |
-
->addAttributeToSelect('dotmailer_contact_id')
|
288 |
-
|
289 |
-
->addAttributeToFilter('website_id', $websiteId)
|
290 |
-
|
291 |
-
->joinAttribute('billing_street', 'customer_address/street', 'default_billing', null, 'left')
|
292 |
-
->joinAttribute('billing_city', 'customer_address/city', 'default_billing', null, 'left')
|
293 |
-
->joinAttribute('billing_country_code', 'customer_address/country_id', 'default_billing', null, 'left')
|
294 |
-
->joinAttribute('billing_postcode', 'customer_address/postcode', 'default_billing', null, 'left')
|
295 |
-
->joinAttribute('billing_telephone', 'customer_address/telephone', 'default_billing', null, 'left')
|
296 |
-
->joinAttribute('billing_region', 'customer_address/region', 'default_billing', null, 'left')
|
297 |
-
->joinAttribute('shipping_street', 'customer_address/street', 'default_shipping', null, 'left')
|
298 |
-
->joinAttribute('shipping_city', 'customer_address/city', 'default_shipping', null, 'left')
|
299 |
-
->joinAttribute('shipping_country_code', 'customer_address/country_id', 'default_shipping', null, 'left')
|
300 |
-
->joinAttribute('shipping_postcode', 'customer_address/postcode', 'default_shipping', null, 'left')
|
301 |
-
->joinAttribute('shipping_telephone', 'customer_address/telephone', 'default_shipping', null, 'left')
|
302 |
-
->joinAttribute('shipping_region', 'customer_address/region', 'default_shipping', null, 'left')
|
303 |
-
->joinTable('newsletter/subscriber','subscriber_email=email',array('subscriber_status' => 'subscriber_status'), null, 'left')
|
304 |
-
|
305 |
-
;
|
306 |
-
if( $pageSize ){
|
307 |
-
$customerCollection->setPage($pageNum, $pageSize);
|
308 |
-
}
|
309 |
-
|
310 |
-
$customer_log = Mage::getSingleton('core/resource')->getTableName('log_customer');
|
311 |
-
$sales_flat_order_grid = Mage::getSingleton('core/resource')->getTableName('sales_flat_order_grid');
|
312 |
-
$sales_flat_order = Mage::getSingleton('core/resource')->getTableName('sales_flat_order');
|
313 |
-
|
314 |
-
// get the last login from the log_customer table
|
315 |
-
$customerCollection->getSelect()->columns(array('last_logged_in' => new Zend_Db_Expr ("(SELECT login_at
|
316 |
-
FROM $customer_log
|
317 |
-
WHERE customer_id =e.entity_id
|
318 |
-
ORDER BY log_id DESC
|
319 |
-
LIMIT 1)")));
|
320 |
-
|
321 |
-
// customer order information
|
322 |
-
$alias = 'subselect';
|
323 |
-
$subselect = Mage::getModel('Varien_Db_Select',
|
324 |
-
Mage::getSingleton('core/resource')->getConnection('core_read')
|
325 |
-
)->from($sales_flat_order_grid, array(
|
326 |
-
'customer_id as s_customer_id',
|
327 |
-
'sum(grand_total) as total_spend',
|
328 |
-
'count(*) as total_orders',
|
329 |
-
'avg(grand_total) as average_order_value',
|
330 |
-
)
|
331 |
-
)->group('customer_id')
|
332 |
-
;
|
333 |
-
$customerCollection->getSelect()->columns(array(
|
334 |
-
'last_purchase' => new Zend_Db_Expr("(SELECT created_at
|
335 |
-
FROM $sales_flat_order
|
336 |
-
WHERE customer_id =e.entity_id
|
337 |
-
ORDER BY created_at DESC
|
338 |
-
LIMIT 1)"),
|
339 |
-
'last_order_no' => new Zend_Db_Expr("(SELECT entity_id
|
340 |
-
FROM $sales_flat_order
|
341 |
-
WHERE customer_id =e.entity_id
|
342 |
-
ORDER BY created_at DESC
|
343 |
-
LIMIT 1)")
|
344 |
-
));
|
345 |
-
|
346 |
-
$customerCollection->getSelect()
|
347 |
-
->joinLeft(array($alias => $subselect),
|
348 |
-
"{$alias}.s_customer_id = e.entity_id");
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
$time = microtime(true);
|
353 |
-
// create a customer object for each item in our collection
|
354 |
-
foreach ($customerCollection as $item) {
|
355 |
-
|
356 |
-
$customers[] = new Dotdigitalgroup_Email_Model_Connector_Customer($item, $mappingHash);
|
357 |
-
}
|
358 |
-
|
359 |
-
unset($customerCollection);
|
360 |
-
$end_time = microtime(true);
|
361 |
-
$end = $end_time - $time;
|
362 |
-
|
363 |
-
|
364 |
-
$helper->log($pageSize . ': page' . $pageNum . ' for website: ' . $websiteId, null, $this->_log_filename);
|
365 |
-
$helper->log('created dotmailer customers from collection: ' . gmdate("H:i:s", $end), null, $this->_log_filename);
|
366 |
-
|
367 |
-
return $customers;
|
368 |
-
}
|
369 |
-
|
370 |
-
protected function allowResourceFullExecution() {
|
371 |
-
|
372 |
-
/* it may be needed to set maximum execution time of the script to longer,
|
373 |
-
* like 60 minutes than usual */
|
374 |
-
set_time_limit ( 7200 );
|
375 |
-
|
376 |
-
/* and memory to 512 megabytes */
|
377 |
-
ini_set ( 'memory_limit', '512M' );
|
378 |
-
|
379 |
-
return $this;
|
380 |
-
}
|
381 |
-
function convert($size)
|
382 |
-
{
|
383 |
-
$unit=array('b','kb','mb','gb','tb','pb');
|
384 |
-
return @round($size/pow(1024,($i=floor(log($size,1024)))),2).' '.$unit[$i];
|
385 |
-
}
|
386 |
-
|
387 |
-
/**
|
388 |
-
* Create an array of columns we have chosen to map in our System->Config
|
389 |
-
* @param Mage_Core_Model_Website $website
|
390 |
-
* @return array
|
391 |
-
*/
|
392 |
-
public function getCsvHeaderArray(Mage_Core_Model_Website $website) {
|
393 |
-
|
394 |
-
$result = array();
|
395 |
-
|
396 |
-
$result[] = 'Email';
|
397 |
-
|
398 |
-
foreach ($this->getMappingHash($website) as $header) {
|
399 |
-
if ($header != "0") $result[] = $header;
|
400 |
-
}
|
401 |
-
$result[] = 'emailType';
|
402 |
-
|
403 |
-
return $result;
|
404 |
-
}
|
405 |
-
|
406 |
-
/**
|
407 |
-
* Gets the datafield mapping hash from the system config
|
408 |
-
* @param Mage_Core_Model_Website $website
|
409 |
-
* @return array
|
410 |
-
*/
|
411 |
-
protected function getMappingHash(Mage_Core_Model_Website $website){
|
412 |
-
|
413 |
-
|
414 |
-
$customer_fields = array(
|
415 |
-
'customer_data/firstname',
|
416 |
-
'customer_data/lastname',
|
417 |
-
'customer_data/dob',
|
418 |
-
'customer_data/gender',
|
419 |
-
'customer_data/title',
|
420 |
-
'customer_data/website_created_on',
|
421 |
-
'customer_data/store_created_on',
|
422 |
-
'customer_data/account_created',
|
423 |
-
'customer_data/last_logged_in',
|
424 |
-
'customer_data/customer_group',
|
425 |
-
'customer_data/billing_address_1',
|
426 |
-
'customer_data/billing_address_2',
|
427 |
-
'customer_data/billing_city',
|
428 |
-
'customer_data/billing_country',
|
429 |
-
'customer_data/billing_postcode',
|
430 |
-
'customer_data/billing_telephone',
|
431 |
-
'customer_data/delivery_address_1',
|
432 |
-
'customer_data/delivery_address_2',
|
433 |
-
'customer_data/delivery_city',
|
434 |
-
'customer_data/delivery_country',
|
435 |
-
'customer_data/delivery_postcode',
|
436 |
-
'customer_data/delivery_telephone',
|
437 |
-
'customer_data/total_orders',
|
438 |
-
'customer_data/average_order_value',
|
439 |
-
'customer_data/total_spend',
|
440 |
-
'customer_data/last_order',
|
441 |
-
'customer_data/last_order_no',
|
442 |
-
'customer_data/customer_id'
|
443 |
-
);
|
444 |
-
|
445 |
-
$result = array();
|
446 |
-
|
447 |
-
foreach ($customer_fields as $field) {
|
448 |
-
|
449 |
-
$result[] = $website->getConfig('connector_data_field_settings/' . $field);
|
450 |
-
|
451 |
-
}
|
452 |
-
return $result;
|
453 |
-
}
|
454 |
-
|
455 |
-
public function setWishlists($customer, $website)
|
456 |
-
{
|
457 |
-
$customerId = $customer->id;
|
458 |
-
$wishList = Mage::getModel('wishlist/wishlist')->loadByCustomer($customerId);
|
459 |
-
|
460 |
-
/** @var $connectorWishlist */
|
461 |
-
$connectorWishlist = new Dotdigitalgroup_Email_Model_Connector_Wishlist($customer);
|
462 |
-
$connectorWishlist->setId($wishList->getId());
|
463 |
-
|
464 |
-
$wishListItemCollection = $wishList->getItemCollection();
|
465 |
-
|
466 |
-
if (count($wishListItemCollection)) {
|
467 |
-
foreach ($wishListItemCollection as $item) {
|
468 |
-
/* @var $product Mage_Catalog_Model_Product */
|
469 |
-
$product = $item->getProduct();
|
470 |
-
$connectorItem = new Dotdigitalgroup_Email_Model_Customer_Wishlist_Item($product);
|
471 |
-
$connectorItem->setQty($item->getQty());
|
472 |
-
$connectorItem->setPrice($product);
|
473 |
-
$connectorWishlist->setItem($connectorItem);//store for wishlists
|
474 |
-
}
|
475 |
-
//set wishlists for later use
|
476 |
-
$this->wishlists[$website->getId()][] = $connectorWishlist;
|
477 |
-
}
|
478 |
-
}
|
479 |
-
|
480 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Dotdigitalgroup/Email/Model/Customer/Suppressed.php
DELETED
@@ -1,85 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Dotdigitalgroup_Email_Model_Customer_Suppressed extends Dotdigitalgroup_Email_Model_Api_Rest
|
4 |
-
{
|
5 |
-
|
6 |
-
private $suppressedContacts = array();
|
7 |
-
|
8 |
-
public function unsubscribe($force = false)
|
9 |
-
{
|
10 |
-
// result of sync
|
11 |
-
$result = array('errors' => false, 'message' => '', 'customers');
|
12 |
-
$result['customers'] = 0;
|
13 |
-
$date = new Zend_Date();
|
14 |
-
|
15 |
-
/**
|
16 |
-
* 1. calculate from frequency
|
17 |
-
*/
|
18 |
-
if(! $force){
|
19 |
-
$frequency = Mage::getStoreConfig(Dotdigitalgroup_Email_Model_Customer_Customer::XML_PATH_CUSTOMERS_SUPPRESSED_INTERVAL);
|
20 |
-
// get the frequency of sinse date
|
21 |
-
switch($frequency){
|
22 |
-
case('H'):
|
23 |
-
$date = $date->subHour(1);
|
24 |
-
break;
|
25 |
-
case('D'):
|
26 |
-
$date = $date->subDay(1);
|
27 |
-
break;
|
28 |
-
case('W'):
|
29 |
-
$date = $date->subWeek(1);
|
30 |
-
break;
|
31 |
-
case('M'):
|
32 |
-
$date = $date->subMonth(1);
|
33 |
-
break;
|
34 |
-
}
|
35 |
-
}else{
|
36 |
-
|
37 |
-
// force sync all customers
|
38 |
-
$date = $date->subYear(Dotdigitalgroup_Email_Model_Customer_Customer::FORCE_CUSTOMERS_YEARS);
|
39 |
-
}
|
40 |
-
|
41 |
-
// datetime format string
|
42 |
-
$dateString = $date->toString(Zend_Date::W3C);
|
43 |
-
/**
|
44 |
-
* Sync all suppressed for each store
|
45 |
-
*/
|
46 |
-
foreach (Mage::app()->getWebsites(true) as $website) {
|
47 |
-
$this->_api_user = $website->getConfig(Dotdigitalgroup_Email_Model_Customer_Customer::XML_PATH_CONNECTOR_API_USERNAME);
|
48 |
-
$this->_api_password = $website->getConfig(Dotdigitalgroup_Email_Model_Customer_Customer::XML_PATH_CONNECTOR_API_PASSWORD);
|
49 |
-
$contacts = $this->getSuppressedSince($dateString);
|
50 |
-
if(! empty($contacts)){
|
51 |
-
foreach ($contacts as $suppressed){
|
52 |
-
$contactEmail = false;
|
53 |
-
if(isset($suppressed->suppressedContact)){
|
54 |
-
|
55 |
-
$contactEmail = $suppressed->suppressedContact->email;
|
56 |
-
$contactId = $suppressed->suppressedContact->id;
|
57 |
-
}
|
58 |
-
|
59 |
-
if($contactEmail){
|
60 |
-
try{
|
61 |
-
/**
|
62 |
-
* 3. Unsubscribe customer
|
63 |
-
*/
|
64 |
-
$newsletterModel = Mage::getModel('newsletter/subscriber')->loadByEmail($contactEmail);
|
65 |
-
if($newsletterModel->getStatus() == Mage_Newsletter_Model_Subscriber::STATUS_SUBSCRIBED){
|
66 |
-
$unsubscribe = $newsletterModel->setStatus(Mage_Newsletter_Model_Subscriber::STATUS_UNSUBSCRIBED);
|
67 |
-
$unsubscribe->save();
|
68 |
-
// remove from subscriber address-book
|
69 |
-
$this->deleteAddressBookContact($website->getConfig(Dotdigitalgroup_Email_Model_Newsletter_Subscriber::XML_PATH_SUBSCRIBERS_ADDRESS_BOOK_ID), $contactId);
|
70 |
-
$this->suppressedContacts[$newsletterModel->getSubscriberEmail()] = $newsletterModel->getSubscriberEmail();
|
71 |
-
}
|
72 |
-
}catch (Exception $e){
|
73 |
-
$result['errors'] = true;
|
74 |
-
$result['message'] = 'Error Saving Customer!';
|
75 |
-
}
|
76 |
-
}
|
77 |
-
}
|
78 |
-
}
|
79 |
-
}
|
80 |
-
$result['customers'] = count($this->suppressedContacts);
|
81 |
-
|
82 |
-
return $result;
|
83 |
-
}
|
84 |
-
|
85 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Dotdigitalgroup/Email/Model/Newsletter/Subscriber.php
DELETED
@@ -1,19 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Dotdigitalgroup_Email_Model_Newsletter_Subscriber extends Mage_Core_Helper_Abstract
|
4 |
-
{
|
5 |
-
const XML_PATH_SUBSCRIBERS_ADDRESS_BOOK_ID = 'connector_data_field_settings/address_book/subscribers';
|
6 |
-
|
7 |
-
// select subscribers that are not registred as customers
|
8 |
-
public function getSubscribersNotCustomers($storeIds = array())
|
9 |
-
{
|
10 |
-
$newsletterCollection = Mage::getModel('newsletter/subscriber')->getCollection()
|
11 |
-
->addFieldToFilter('main_table.customer_id', array('eq' => 0))
|
12 |
-
->addFieldToFilter('subscriber_status', array('eq' => Mage_Newsletter_Model_Subscriber::STATUS_SUBSCRIBED))
|
13 |
-
->addStoreFilter($storeIds)
|
14 |
-
;
|
15 |
-
|
16 |
-
return $newsletterCollection;
|
17 |
-
}
|
18 |
-
|
19 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Dotdigitalgroup/Email/Model/Observer.php
DELETED
@@ -1,189 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Dotdigitalgroup_Email_Model_Observer extends Dotdigitalgroup_Email_Model_Api_Rest
|
4 |
-
{
|
5 |
-
/**
|
6 |
-
* Create new contact or update info also check for email change
|
7 |
-
* event: customer_save_before
|
8 |
-
* @param Varien_Event_Observer $observer
|
9 |
-
* @return $this
|
10 |
-
*/
|
11 |
-
public function handleCustomerSaveBefore(Varien_Event_Observer $observer)
|
12 |
-
{
|
13 |
-
// skip update customer for first time sync
|
14 |
-
if(! Mage::registry('first_time_sync')){
|
15 |
-
|
16 |
-
/* @var $customer Mage_Customer_Model_Customer */
|
17 |
-
$customer = $observer->getEvent()->getCustomer();
|
18 |
-
$email = $customer->getEmail();
|
19 |
-
$websiteId = $customer->getWebsiteId();
|
20 |
-
$subscribed = $customer->getIsSubscribed();
|
21 |
-
|
22 |
-
$this->_api_user = Mage::app()->getWebsite($websiteId)->getConfig(Dotdigitalgroup_Email_Model_Customer_Customer::XML_PATH_CONNECTOR_API_USERNAME);
|
23 |
-
$this->_api_password = Mage::app()->getWebsite($websiteId)->getConfig(Dotdigitalgroup_Email_Model_Customer_Customer::XML_PATH_CONNECTOR_API_PASSWORD);
|
24 |
-
$subscribersAddressBook = Mage::app()->getWebsite($websiteId)->getConfig(Dotdigitalgroup_Email_Model_Newsletter_Subscriber::XML_PATH_SUBSCRIBERS_ADDRESS_BOOK_ID);
|
25 |
-
|
26 |
-
if($customer->getData('dotmailer_contact_id')){
|
27 |
-
$dotmailerId = $customer->getData('dotmailer_contact_id');
|
28 |
-
//get contact infrmation by id
|
29 |
-
$response = $this->getContactById($dotmailerId);
|
30 |
-
|
31 |
-
//check for matching email
|
32 |
-
if(isset($response->email)){
|
33 |
-
if($email != $response->email){
|
34 |
-
$data = array(
|
35 |
-
'Email' => $email,
|
36 |
-
'EmailType' => 'Html'
|
37 |
-
);
|
38 |
-
//update the contact with same id - different email
|
39 |
-
$this->updateContact($dotmailerId, $data);
|
40 |
-
}
|
41 |
-
|
42 |
-
if(!$subscribed && $response->status == 'Subscribed'){
|
43 |
-
$this->deleteAddressBookContact($subscribersAddressBook, $response->id);
|
44 |
-
}
|
45 |
-
}
|
46 |
-
}else{
|
47 |
-
//get contact info by email
|
48 |
-
$response = $this->getContactByEmail($email);
|
49 |
-
//create new contact and add to address books
|
50 |
-
if(isset($response->message) && $response->message == Dotdigitalgroup_Email_Model_Api_Rest::REST_CONTACT_NOT_FOUND){
|
51 |
-
$contactApi = $this->createNewContact($email);
|
52 |
-
$this->postAddressBookContacts(Mage::getStoreConfig(Dotdigitalgroup_Email_Model_Customer_Customer::XML_PATH_CUSTOMERS_ADDRESS_BOOK_ID), $contactApi);
|
53 |
-
|
54 |
-
if($subscribed){
|
55 |
-
$this->postAddressBookContacts($subscribersAddressBook, $contactApi);
|
56 |
-
}
|
57 |
-
}
|
58 |
-
}
|
59 |
-
|
60 |
-
if(isset($response->id))
|
61 |
-
$customer->setData('dotmailer_contact_id', $response->id);//set the id from contact info
|
62 |
-
}
|
63 |
-
return $this;
|
64 |
-
}
|
65 |
-
/**
|
66 |
-
* event: sales_order_save_after
|
67 |
-
* @param Varien_Event_Observer $observer
|
68 |
-
* @return $this
|
69 |
-
*/
|
70 |
-
public function handleSalesOrderSaveAfter(Varien_Event_Observer $observer)
|
71 |
-
{
|
72 |
-
$order = $observer->getEvent()->getOrder();
|
73 |
-
$storeId = $order->getStoreId();
|
74 |
-
$customerId = $order->getCustomerId();
|
75 |
-
|
76 |
-
$customerModel = Mage::getModel('customer/customer')->load($customerId);
|
77 |
-
|
78 |
-
|
79 |
-
if(!$customerModel->getData('dotmailer_contact_id'))
|
80 |
-
$customerModel->save();
|
81 |
-
|
82 |
-
$this->_api_user = Mage::getStoreConfig(Dotdigitalgroup_Email_Model_Customer_Customer::XML_PATH_CONNECTOR_API_USERNAME, $storeId);
|
83 |
-
$this->_api_password = Mage::getStoreConfig(Dotdigitalgroup_Email_Model_Customer_Customer::XML_PATH_CONNECTOR_API_PASSWORD, $storeId);
|
84 |
-
$is_enabled = Mage::getStoreConfig(Dotdigitalgroup_Email_Model_Sales_Order::XML_PATH_TRANSACTIONAL_DATA_ENABLED, $storeId);
|
85 |
-
|
86 |
-
// store scope enabled
|
87 |
-
if($is_enabled){
|
88 |
-
$dotmailer = new Dotdigitalgroup_Email_Model_Connector_Order($order);
|
89 |
-
$this->sendOrderTransactionalData($dotmailer, 'Order');
|
90 |
-
}
|
91 |
-
|
92 |
-
|
93 |
-
return $this;
|
94 |
-
}
|
95 |
-
|
96 |
-
/**
|
97 |
-
* event: quote_save_after
|
98 |
-
* @param Varien_Event_Observer $observer
|
99 |
-
* @return $this
|
100 |
-
*/
|
101 |
-
public function handleSalesQuoteSaveAfter(Varien_Event_Observer $observer)
|
102 |
-
{
|
103 |
-
$quote = $observer->getQuote();
|
104 |
-
$customerIsNotGuest = $quote->getCustomerId();
|
105 |
-
$storeId = $quote->getStoreId();
|
106 |
-
|
107 |
-
$this->_api_user = Mage::getStoreConfig(Dotdigitalgroup_Email_Model_Customer_Customer::XML_PATH_CONNECTOR_API_USERNAME, $storeId);
|
108 |
-
$this->_api_password = Mage::getStoreConfig(Dotdigitalgroup_Email_Model_Customer_Customer::XML_PATH_CONNECTOR_API_PASSWORD, $storeId);
|
109 |
-
$is_enabled = Mage::getStoreConfig(Dotdigitalgroup_Email_Model_Sales_Order::XML_PATH_TRANSACTIONAL_DATA_ENABLED, $storeId);
|
110 |
-
|
111 |
-
// save quotes that are active
|
112 |
-
if($customerIsNotGuest && $is_enabled && $quote->getIsActive()){
|
113 |
-
$dotmailer = new Dotdigitalgroup_Email_Model_Connector_Quote($quote);
|
114 |
-
$this->sendTransactionalData($dotmailer, 'Basket');
|
115 |
-
}
|
116 |
-
|
117 |
-
return $this;
|
118 |
-
}
|
119 |
-
|
120 |
-
public function handleSalesOrderStatusChange(Varien_Event_Observer $observer)
|
121 |
-
{
|
122 |
-
$order = $observer->getEvent()->getOrder();
|
123 |
-
$status = $order->getStatus();
|
124 |
-
|
125 |
-
/**
|
126 |
-
* SMS functinality
|
127 |
-
*/
|
128 |
-
$smsStatusOne = Mage::getStoreConfig(Dotdigitalgroup_Email_Model_Sales_Sms::XML_PATH_SMS_MESSAGE_ONE_STATUS);
|
129 |
-
$smsStatusTwo = Mage::getStoreConfig(Dotdigitalgroup_Email_Model_Sales_Sms::XML_PATH_SMS_MESSAGE_TWO_STATUS);
|
130 |
-
$smsStatusThree = Mage::getStoreConfig(Dotdigitalgroup_Email_Model_Sales_Sms::XML_PATH_SMS_MESSAGE_THREE_STATUS);
|
131 |
-
$smsStatusFour = Mage::getStoreConfig(Dotdigitalgroup_Email_Model_Sales_Sms::XML_PATH_SMS_MESSAGE_FOUR_STATUS);
|
132 |
-
$smsModel = new Dotdigitalgroup_Email_Model_Sales_Sms();
|
133 |
-
|
134 |
-
switch($status){
|
135 |
-
case $smsStatusOne:
|
136 |
-
$smsModel->sendMessage($order, 'ONE');
|
137 |
-
break;
|
138 |
-
case $smsStatusTwo:
|
139 |
-
$smsModel->sendMessage($order, 'TWO');
|
140 |
-
break;
|
141 |
-
case $smsStatusThree:
|
142 |
-
$smsModel->sendMessage($order, 'THREE');
|
143 |
-
break;
|
144 |
-
case $smsStatusFour:
|
145 |
-
$smsModel->sendMessage($order, 'FOUR');
|
146 |
-
break;
|
147 |
-
}
|
148 |
-
|
149 |
-
return $this;
|
150 |
-
}
|
151 |
-
|
152 |
-
public function handleSalesOrderRefund(Varien_Event_Observer $observer)
|
153 |
-
{
|
154 |
-
$creditmemo = $observer->getEvent()->getCreditmemo();
|
155 |
-
$storeId = $creditmemo->getStoreId();
|
156 |
-
|
157 |
-
$this->_api_user = Mage::getStoreConfig(Dotdigitalgroup_Email_Model_Customer_Customer::XML_PATH_CONNECTOR_API_USERNAME, $storeId);
|
158 |
-
$this->_api_password = Mage::getStoreConfig(Dotdigitalgroup_Email_Model_Customer_Customer::XML_PATH_CONNECTOR_API_PASSWORD, $storeId);
|
159 |
-
$is_enabled = Mage::getStoreConfig(Dotdigitalgroup_Email_Model_Sales_Order::XML_PATH_TRANSACTIONAL_DATA_ENABLED, $storeId);
|
160 |
-
$order = $creditmemo->getOrder();
|
161 |
-
|
162 |
-
// store scope enabled
|
163 |
-
if($is_enabled){
|
164 |
-
$connectorOrder = new Dotdigitalgroup_Email_Model_Connector_Order($order);
|
165 |
-
$result = $this->sendOrderTransactionalData($connectorOrder, 'Order', $order->getIncrementId());
|
166 |
-
$this->_helper->log($result, null, $this->_log_filename);
|
167 |
-
|
168 |
-
}
|
169 |
-
|
170 |
-
return $this;
|
171 |
-
}
|
172 |
-
public function hangleSalesOrderCancel(Varien_Event_Observer $observer)
|
173 |
-
{
|
174 |
-
$order = $observer->getEvent()->getOrder();
|
175 |
-
$storeId = $order->getStoreId();
|
176 |
-
$key = $order->getIncrementId();
|
177 |
-
|
178 |
-
$this->_api_user = Mage::getStoreConfig(Dotdigitalgroup_Email_Model_Customer_Customer::XML_PATH_CONNECTOR_API_USERNAME, $storeId);
|
179 |
-
$this->_api_password = Mage::getStoreConfig(Dotdigitalgroup_Email_Model_Customer_Customer::XML_PATH_CONNECTOR_API_PASSWORD, $storeId);
|
180 |
-
$is_enabled = Mage::getStoreConfig(Dotdigitalgroup_Email_Model_Sales_Order::XML_PATH_TRANSACTIONAL_DATA_ENABLED, $storeId);
|
181 |
-
|
182 |
-
if($is_enabled)
|
183 |
-
$this->deleteContactsTransactionalData('Order', $key);
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
return $this;
|
188 |
-
}
|
189 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Dotdigitalgroup/Email/Model/Sales/Order.php
DELETED
@@ -1,96 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Dotdigitalgroup_Email_Model_Sales_Order extends Dotdigitalgroup_Email_Model_Api_Rest
|
4 |
-
{
|
5 |
-
const XML_PATH_TRANSACTIONAL_DATA_ENABLED = 'connector_sync_settings/transactional_data/order_enabled';
|
6 |
-
const XML_PATH_TRANSACTIONAL_DATA_SYNC_LIMIT = 'connector_advanced_settings/sync_limits/orders';
|
7 |
-
|
8 |
-
protected $accounts = array();
|
9 |
-
|
10 |
-
/**
|
11 |
-
* initial sync the transactional data
|
12 |
-
* @return array
|
13 |
-
*/
|
14 |
-
public function sync()
|
15 |
-
{
|
16 |
-
// Initialise a return hash containing results of our sync attempt
|
17 |
-
$this->_searchAccounts();
|
18 |
-
|
19 |
-
foreach ($this->accounts as $account){
|
20 |
-
if(count($account->getOrders())){
|
21 |
-
$this->sendMultiTransactionalData($account->getOrders(), 'Order');
|
22 |
-
|
23 |
-
}
|
24 |
-
|
25 |
-
unset($this->accounts[$account->getApiUsername()]);
|
26 |
-
}
|
27 |
-
return $this;
|
28 |
-
}
|
29 |
-
|
30 |
-
/**
|
31 |
-
*Search the configuration data per website
|
32 |
-
*/
|
33 |
-
private function _searchAccounts()
|
34 |
-
{
|
35 |
-
foreach (Mage::app()->getWebsites() as $website){
|
36 |
-
$enabled = $website->getConfig(self::XML_PATH_TRANSACTIONAL_DATA_ENABLED);
|
37 |
-
|
38 |
-
if(!$enabled)
|
39 |
-
continue;
|
40 |
-
|
41 |
-
$this->_api_user = $website->getConfig(Dotdigitalgroup_Email_Model_Customer_Customer::XML_PATH_CONNECTOR_API_USERNAME);
|
42 |
-
$limit = $website->getConfig(self::XML_PATH_TRANSACTIONAL_DATA_SYNC_LIMIT);
|
43 |
-
|
44 |
-
if(!isset($this->accounts[$this->_api_user])){
|
45 |
-
$account = new Dotdigitalgroup_Email_Model_Connector_Account();
|
46 |
-
$account->setApiUsername($this->_api_user);
|
47 |
-
$account->setApiPassword($this->_api_password);
|
48 |
-
$this->accounts[$this->_api_user] = $account;
|
49 |
-
}
|
50 |
-
$this->accounts[$this->_api_user]->setOrders($this->getConnectorOrders($limit));
|
51 |
-
}
|
52 |
-
}
|
53 |
-
|
54 |
-
/**
|
55 |
-
* get all connector orders data
|
56 |
-
* @param $limit
|
57 |
-
* @return array
|
58 |
-
*/
|
59 |
-
public function getConnectorOrders($limit = 100)
|
60 |
-
{
|
61 |
-
$orders = $customers = array();
|
62 |
-
$orderCollection = Mage::getModel('sales/order')->getCollection()
|
63 |
-
->addAttributeToFilter('dotmailer_order_imported', array('null' => true), 'left')
|
64 |
-
->setPageSize($limit);
|
65 |
-
|
66 |
-
$this->_helper->log('GET CONNECTOR ORDERS ' . $orderCollection->count() . ' limit ' . $limit, null, $this->_log_filename);
|
67 |
-
|
68 |
-
//mark as imported for customers with contact id
|
69 |
-
foreach ($orderCollection as $order) {
|
70 |
-
try {
|
71 |
-
$customerEmail = $order->getCustomerEmail();
|
72 |
-
$storeId = $order->getStoreId();
|
73 |
-
$this->setStoreId(Mage::app()->getStore(true)->getId());
|
74 |
-
$websiteId = Mage::getModel('core/store')->load($storeId)->getWebsiteId();
|
75 |
-
|
76 |
-
$customerModel = Mage::getModel('customer/customer')->setWebsiteId($websiteId)
|
77 |
-
->loadByEmail($customerEmail);
|
78 |
-
|
79 |
-
if($customerModel){
|
80 |
-
$contactId = $customerModel->getData('dotmailer_contact_id');
|
81 |
-
if($contactId){
|
82 |
-
$orders[] = new Dotdigitalgroup_Email_Model_Connector_Order($order);
|
83 |
-
$order->setData('dotmailer_order_imported', 1);
|
84 |
-
$order->save();
|
85 |
-
}
|
86 |
-
}
|
87 |
-
}catch(Exception $e){
|
88 |
-
|
89 |
-
|
90 |
-
$this->_helper->log($order->getIncrementId(), null, $this->_log_filename);
|
91 |
-
$this->_helper->log($e->getMessage(), null, $this->_log_filename);
|
92 |
-
}
|
93 |
-
}
|
94 |
-
return $orders;
|
95 |
-
}
|
96 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Dotdigitalgroup/Email/Model/System/Config/Backend/Syncschedule/Suppressed.php
DELETED
@@ -1,54 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Dotdigitalgroup_Email_Model_System_Config_Backend_Syncschedule_Suppressed extends Mage_Core_Model_Config_Data
|
4 |
-
{
|
5 |
-
const CRON_STRING_PATH = 'connector_sync_settings/sync_suppressed_schedule/cronschedulesupp';
|
6 |
-
|
7 |
-
/**
|
8 |
-
* Cron settings after save
|
9 |
-
*
|
10 |
-
*
|
11 |
-
*/
|
12 |
-
protected function _afterSave()
|
13 |
-
{
|
14 |
-
|
15 |
-
$enabled = $this->getData('groups/sync_suppressed_schedule/fields/enabled/value');
|
16 |
-
$time = $this->getData('groups/sync_suppressed_schedule/fields/time/value');
|
17 |
-
$frequency = $this->getData('groups/sync_suppressed_schedule/fields/frequency/value');
|
18 |
-
|
19 |
-
$frequencyHourly = Dotdigitalgroup_Email_Model_System_Config_Source_Syncfrequency::CRON_HOURLY;
|
20 |
-
$frequencyDaily = Dotdigitalgroup_Email_Model_System_Config_Source_Syncfrequency::CRON_DAILY;
|
21 |
-
$frequencyWeekly = Dotdigitalgroup_Email_Model_System_Config_Source_Syncfrequency::CRON_WEEKLY;
|
22 |
-
$frequencyMonthly = Dotdigitalgroup_Email_Model_System_Config_Source_Syncfrequency::CRON_MONTHLY;
|
23 |
-
|
24 |
-
if ($enabled) {
|
25 |
-
$cronDayOfWeek = date('N');
|
26 |
-
$cronExprArray = array(
|
27 |
-
($frequency == $frequencyHourly) ? intval($time[1]) : '*', # Minute
|
28 |
-
($frequency == $frequencyDaily) ? intval($time[0]) : '*', # Hour
|
29 |
-
($frequency == $frequencyMonthly) ? '1' : '*', # Day of the Month
|
30 |
-
'*', # Month of the Year
|
31 |
-
($frequency == $frequencyWeekly) ? $cronDayOfWeek : '*', # Day of the Week
|
32 |
-
);
|
33 |
-
$cronExprString = join(' ', $cronExprArray);
|
34 |
-
}
|
35 |
-
else {
|
36 |
-
$cronExprString = '';
|
37 |
-
}
|
38 |
-
|
39 |
-
try {
|
40 |
-
// store config $cronExprString
|
41 |
-
|
42 |
-
|
43 |
-
Mage::getModel('core/config_data')
|
44 |
-
->load(self::CRON_STRING_PATH, 'path')
|
45 |
-
->setValue($cronExprString)
|
46 |
-
->setPath(self::CRON_STRING_PATH)
|
47 |
-
->save();
|
48 |
-
|
49 |
-
}
|
50 |
-
catch (Exception $e) {
|
51 |
-
Mage::throwException('Unable to save the cron expression.');
|
52 |
-
}
|
53 |
-
}
|
54 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Dotdigitalgroup/Email/Model/System/Config/Source/Addressbooks.php
DELETED
@@ -1,30 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Dotdigitalgroup_Email_Model_System_Config_Source_Addressbooks extends Dotdigitalgroup_Email_Model_Api_Rest
|
4 |
-
{
|
5 |
-
// Returns the account's datafields
|
6 |
-
public function toOptionArray()
|
7 |
-
{
|
8 |
-
$fields = array();
|
9 |
-
//load the configuration for website select in admin
|
10 |
-
$websiteName = Mage::app()->getRequest()->getParam('website');
|
11 |
-
if(! empty($websiteName)){
|
12 |
-
$websites = Mage::getModel('core/website')->getCollection()
|
13 |
-
->addFieldToFilter('code', $websiteName);
|
14 |
-
$website = $websites->getFirstItem();
|
15 |
-
$this->_api_user = $website->getConfig(Dotdigitalgroup_Email_Model_Customer_Customer::XML_PATH_CONNECTOR_API_USERNAME);
|
16 |
-
$this->_api_password = $website->getConfig(Dotdigitalgroup_Email_Model_Customer_Customer::XML_PATH_CONNECTOR_API_PASSWORD);
|
17 |
-
}
|
18 |
-
$addressBooks = $this->postAddressBooks();
|
19 |
-
|
20 |
-
//set up fields with book id and label
|
21 |
-
foreach ($addressBooks as $book){
|
22 |
-
|
23 |
-
if(isset($book->id))
|
24 |
-
$fields[] = array('value' => $book->id, 'label' => $book->name);
|
25 |
-
}
|
26 |
-
|
27 |
-
return $fields;
|
28 |
-
}
|
29 |
-
|
30 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Dotdigitalgroup/Email/Model/System/Config/Source/Campaigns.php
DELETED
@@ -1,30 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Date: 15/04/2013
|
4 |
-
* Time: 13:46
|
5 |
-
*/
|
6 |
-
class Dotdigitalgroup_Email_Model_System_Config_Source_Campaigns extends Dotdigitalgroup_Email_Model_Api_Rest
|
7 |
-
{
|
8 |
-
|
9 |
-
// Returns the account's datafields
|
10 |
-
public function toOptionArray()
|
11 |
-
{
|
12 |
-
$fields = array();
|
13 |
-
$websiteName = Mage::app()->getRequest()->getParam('website');
|
14 |
-
if(! empty($websiteName)){
|
15 |
-
$websites = Mage::getModel('core/website')->getCollection()
|
16 |
-
->addFieldToFilter('code', $websiteName);
|
17 |
-
$website = $websites->getFirstItem();
|
18 |
-
$this->_api_user = $website->getConfig(Dotdigitalgroup_Email_Model_Customer_Customer::XML_PATH_CONNECTOR_API_USERNAME);
|
19 |
-
$this->_api_password = $website->getConfig(Dotdigitalgroup_Email_Model_Customer_Customer::XML_PATH_CONNECTOR_API_PASSWORD);
|
20 |
-
}
|
21 |
-
$campaigns = $this->postCampaigns();
|
22 |
-
foreach ($campaigns as $one){
|
23 |
-
if(isset($one->id))
|
24 |
-
$fields[] = array('value' => $one->id, 'label' => $one->name);
|
25 |
-
}
|
26 |
-
|
27 |
-
return $fields;
|
28 |
-
}
|
29 |
-
|
30 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Dotdigitalgroup/Email/Model/System/Config/Source/Datafields.php
DELETED
@@ -1,35 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Date: 15/04/2013
|
4 |
-
* Time: 13:46
|
5 |
-
*/
|
6 |
-
class Dotdigitalgroup_Email_Model_System_Config_Source_Datafields extends Dotdigitalgroup_Email_Model_Api_Rest
|
7 |
-
{
|
8 |
-
|
9 |
-
// Returns the account's datafields
|
10 |
-
public function toOptionArray()
|
11 |
-
{
|
12 |
-
$fields = array();
|
13 |
-
//load the configuration for website select in admin
|
14 |
-
$websiteName = Mage::app()->getRequest()->getParam('website');
|
15 |
-
if(! empty($websiteName)){
|
16 |
-
$websites = Mage::getModel('core/website')->getCollection()
|
17 |
-
->addFieldToFilter('code', $websiteName);
|
18 |
-
$website = $websites->getFirstItem();
|
19 |
-
$this->_api_user = $website->getConfig(Dotdigitalgroup_Email_Model_Customer_Customer::XML_PATH_CONNECTOR_API_USERNAME);
|
20 |
-
$this->_api_password = $website->getConfig(Dotdigitalgroup_Email_Model_Customer_Customer::XML_PATH_CONNECTOR_API_PASSWORD);
|
21 |
-
}
|
22 |
-
|
23 |
-
// Add a "Do Not Map" Option
|
24 |
-
$fields[] = array('value' => 0, 'label' => 'Do Not Map');
|
25 |
-
|
26 |
-
$datafileds = $this->postDataFields();
|
27 |
-
foreach ($datafileds as $datafield) {
|
28 |
-
if(isset($datafield->name))
|
29 |
-
$fields[] = array('value' => $datafield->name, 'label' => $datafield->name);
|
30 |
-
}
|
31 |
-
|
32 |
-
return $fields;
|
33 |
-
}
|
34 |
-
|
35 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Dotdigitalgroup/Email/Model/System/Config/Source/Displayifnot.php
DELETED
@@ -1,12 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Dotdigitalgroup_Email_Model_System_Config_Source_Displayifnot
|
4 |
-
{
|
5 |
-
public function toOptionArray()
|
6 |
-
{
|
7 |
-
return array(
|
8 |
-
array('value' => 'best-sellers', 'label' => Mage::helper('connector')->__('Best Sellers')),
|
9 |
-
array('value' => 'most-viewed', 'label' => Mage::helper('connector')->__('Most Viewed'))
|
10 |
-
);
|
11 |
-
}
|
12 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Dotdigitalgroup/Email/Model/System/Config/Source/Sendcampain.php
DELETED
@@ -1,30 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Dotdigitalgroup_Email_Model_System_Config_Source_SendCampain
|
4 |
-
{
|
5 |
-
/**
|
6 |
-
* send to campain options hours
|
7 |
-
* @return array
|
8 |
-
*/
|
9 |
-
public function toOptionArray()
|
10 |
-
{
|
11 |
-
return array(
|
12 |
-
array('value'=>1 , 'label'=>Mage::helper('adminhtml')->__('1 Hour')),
|
13 |
-
array('value'=>2 , 'label'=>Mage::helper('adminhtml')->__('2 Hours')),
|
14 |
-
array('value'=>3 , 'label'=>Mage::helper('adminhtml')->__('3 Hours')),
|
15 |
-
array('value'=>4 , 'label'=>Mage::helper('adminhtml')->__('4 Hours')),
|
16 |
-
array('value'=>5 , 'label'=>Mage::helper('adminhtml')->__('5 Hours')),
|
17 |
-
array('value'=>6 , 'label'=>Mage::helper('adminhtml')->__('6 Hours')),
|
18 |
-
array('value'=>12 , 'label'=>Mage::helper('adminhtml')->__('12 Hours')),
|
19 |
-
array('value'=>36 , 'label'=>Mage::helper('adminhtml')->__('36 Hours')),
|
20 |
-
array('value'=>48 , 'label'=>Mage::helper('adminhtml')->__('48 Hours')),
|
21 |
-
array('value'=>60 , 'label'=>Mage::helper('adminhtml')->__('60 Hours')),
|
22 |
-
array('value'=>72 , 'label'=>Mage::helper('adminhtml')->__('72 Hours')),
|
23 |
-
array('value'=>84 , 'label'=>Mage::helper('adminhtml')->__('84 Hours')),
|
24 |
-
array('value'=>96 , 'label'=>Mage::helper('adminhtml')->__('96 Hours')),
|
25 |
-
array('value'=>108 , 'label'=>Mage::helper('adminhtml')->__('108 Hours')),
|
26 |
-
array('value'=>120 , 'label'=>Mage::helper('adminhtml')->__('120 Hours')),
|
27 |
-
);
|
28 |
-
|
29 |
-
}
|
30 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Dotdigitalgroup/Email/Model/System/Config/Source/Syncfrequency.php
DELETED
@@ -1,40 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Dotdigitalgroup_Email_Model_System_Config_Source_Syncfrequency
|
4 |
-
{
|
5 |
-
|
6 |
-
protected static $_options;
|
7 |
-
|
8 |
-
const CRON_HOURLY = 'H';
|
9 |
-
const CRON_DAILY = 'D';
|
10 |
-
const CRON_WEEKLY = 'W';
|
11 |
-
const CRON_MONTHLY = 'M';
|
12 |
-
|
13 |
-
public function toOptionArray()
|
14 |
-
{
|
15 |
-
if (!self::$_options) {
|
16 |
-
self::$_options = array(
|
17 |
-
array(
|
18 |
-
'label' => Mage::helper('cron')->__('Hourly'),
|
19 |
-
'value' => self::CRON_HOURLY,
|
20 |
-
),
|
21 |
-
array(
|
22 |
-
'label' => Mage::helper('cron')->__('Daily'),
|
23 |
-
'value' => self::CRON_DAILY,
|
24 |
-
),
|
25 |
-
array(
|
26 |
-
'label' => Mage::helper('cron')->__('Weekly'),
|
27 |
-
'value' => self::CRON_WEEKLY,
|
28 |
-
),
|
29 |
-
array(
|
30 |
-
'label' => Mage::helper('cron')->__('Monthly'),
|
31 |
-
'value' => self::CRON_MONTHLY,
|
32 |
-
),
|
33 |
-
);
|
34 |
-
}
|
35 |
-
return self::$_options;
|
36 |
-
}
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Dotdigitalgroup/Email/Test/Model/Product.php
DELETED
@@ -1,18 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
class Dotdigitalgroup_Email_Test_Model_Product extends EcomDev_PHPUnit_Test_Case
|
3 |
-
{
|
4 |
-
|
5 |
-
public function testIfTheAnswerToTheUniverseIs42()
|
6 |
-
{
|
7 |
-
|
8 |
-
$productModel = Mage::getModel('catalog/product')->load(39);
|
9 |
-
|
10 |
-
|
11 |
-
$price = $productModel->getPrice();
|
12 |
-
|
13 |
-
$this->assertEquals('20', $price);
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
}
|
18 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Dotdigitalgroup/Email/controllers/Adminhtml/DebugController.php
DELETED
@@ -1,125 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Dotdigitalgroup_Email_Adminhtml_DebugController extends Mage_Adminhtml_Controller_Action
|
4 |
-
{
|
5 |
-
|
6 |
-
public function forcecustomersyncAction()
|
7 |
-
{
|
8 |
-
$result = Mage::getModel('connector/customer_customer')->sync();
|
9 |
-
|
10 |
-
if ($result['error']) {
|
11 |
-
Mage::getSingleton('adminhtml/session')->addError($result['message']);
|
12 |
-
}else {
|
13 |
-
Mage::getSingleton('adminhtml/session')->addSuccess($result['message']);
|
14 |
-
}
|
15 |
-
$this->_redirectReferer();
|
16 |
-
}
|
17 |
-
|
18 |
-
public function forcelostbasketsyncAction()
|
19 |
-
{
|
20 |
-
|
21 |
-
$result = Mage::getModel('connector/sales_quote')->forceProccess();
|
22 |
-
|
23 |
-
if ($result['errors'])
|
24 |
-
Mage::getSingleton('adminhtml/session')->addError($result['message']);
|
25 |
-
else
|
26 |
-
Mage::getSingleton('adminhtml/session')->addSuccess($result['message']);
|
27 |
-
|
28 |
-
$this->_redirectReferer();
|
29 |
-
}
|
30 |
-
|
31 |
-
public function forcesuppressedAction()
|
32 |
-
{
|
33 |
-
// forse sync
|
34 |
-
$result = Mage::getModel('connector/customer_suppressed')->unsubscribe(true);
|
35 |
-
|
36 |
-
if($result['errors']){
|
37 |
-
Mage::getSingleton('adminhtml/session')->addError($result['message']);
|
38 |
-
}else{
|
39 |
-
|
40 |
-
if($result['customers'] > 0)
|
41 |
-
Mage::getSingleton('adminhtml/session')->addSuccess('Customers Unsubscribed : ' . $result['customers']);
|
42 |
-
else
|
43 |
-
Mage::getSingleton('adminhtml/session')->addSuccess('Done.');
|
44 |
-
}
|
45 |
-
|
46 |
-
$this->_redirectReferer();
|
47 |
-
}
|
48 |
-
|
49 |
-
public function testCredentialsAction()
|
50 |
-
{
|
51 |
-
/**
|
52 |
-
* Test account API
|
53 |
-
*/
|
54 |
-
$testResult = Mage::getModel('connector/account_test')->test();
|
55 |
-
|
56 |
-
if($testResult['errors']){
|
57 |
-
Mage::getSingleton('adminhtml/session')->addError($testResult['message']);
|
58 |
-
}else{
|
59 |
-
Mage::getSingleton('adminhtml/session')->addSuccess('API Credentials Valid.');
|
60 |
-
}
|
61 |
-
$this->_redirectReferer();
|
62 |
-
}
|
63 |
-
public function transactionalSyncAction()
|
64 |
-
{
|
65 |
-
|
66 |
-
Mage::register('force_transactional', true);
|
67 |
-
$initialSync = Mage::getModel('connector/sales_order')->sync();
|
68 |
-
|
69 |
-
if ($initialSync['errors'])
|
70 |
-
Mage::getSingleton('adminhtml/session')->addError($initialSync['message']);
|
71 |
-
else
|
72 |
-
Mage::getSingleton('adminhtml/session')->addSuccess($initialSync['message']);
|
73 |
-
|
74 |
-
$this->_redirectReferer();
|
75 |
-
}
|
76 |
-
public function deletecontactsidAction()
|
77 |
-
{
|
78 |
-
Mage::register('first_time_sync', true);
|
79 |
-
$customerModel = new Dotdigitalgroup_Email_Model_Customer_Customer();
|
80 |
-
$customers = $customerModel->getContactsCustomers();
|
81 |
-
$numUpdated = 0;
|
82 |
-
if($customers->getSize()){
|
83 |
-
foreach ($customers as $one){
|
84 |
-
try{
|
85 |
-
$customer = Mage::getModel('customer/customer')->load($one->getId());
|
86 |
-
$customer->setData('dotmailer_contact_id', null);
|
87 |
-
$customer->save();
|
88 |
-
}catch(Exception $e){
|
89 |
-
Mage::helper('connector')->log($e->getMessage(), null, 'api.log');
|
90 |
-
}
|
91 |
-
$numUpdated++;
|
92 |
-
}
|
93 |
-
}
|
94 |
-
Mage::unregister('first_time_sync');
|
95 |
-
if($numUpdated);
|
96 |
-
Mage::getModel('adminhtml/session')->addSuccess('Number Of Contacts Id Removed :'. $numUpdated);
|
97 |
-
$this->_redirectReferer();
|
98 |
-
}
|
99 |
-
|
100 |
-
public function countcontactsAction()
|
101 |
-
{
|
102 |
-
$customer = new Dotdigitalgroup_Email_Model_Customer_Customer();
|
103 |
-
$contacts = $customer->getContactsCustomers();
|
104 |
-
$total = $customer->getTotalNumberCustomers();
|
105 |
-
$numMissing = $contacts->getSize();
|
106 |
-
|
107 |
-
Mage::getModel('adminhtml/session')->addSuccess('Customers No: ' . $total . ', With Contact Id No: ' . $numMissing);
|
108 |
-
$this->_redirectReferer();
|
109 |
-
}
|
110 |
-
|
111 |
-
public function ajaxvalidationAction()
|
112 |
-
{
|
113 |
-
$result = 'Validation failed!';
|
114 |
-
$api_user = $this->getRequest()->getParam('api_user');
|
115 |
-
$api_password = $this->getRequest()->getParam('api_password');
|
116 |
-
$testResult = Mage::getModel('connector/account_test')->test($api_user, $api_password);
|
117 |
-
if($testResult['errors'] == false){
|
118 |
-
$result = 'Valid';
|
119 |
-
}
|
120 |
-
|
121 |
-
$this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));
|
122 |
-
}
|
123 |
-
|
124 |
-
|
125 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Dotdigitalgroup/Email/controllers/EmailController.php
DELETED
@@ -1,133 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Dotdigitalgroup_Email_EmailController extends Mage_Core_Controller_Front_Action
|
4 |
-
{
|
5 |
-
public function indexAction()
|
6 |
-
{
|
7 |
-
//Get current layout state
|
8 |
-
$this->loadLayout();
|
9 |
-
|
10 |
-
$this->renderLayout();
|
11 |
-
}
|
12 |
-
|
13 |
-
|
14 |
-
/**
|
15 |
-
* Params
|
16 |
-
* code - security check
|
17 |
-
* order - order id
|
18 |
-
* products type :
|
19 |
-
* 1.related
|
20 |
-
* 2.upsell
|
21 |
-
* 3.cross sell
|
22 |
-
* 4.best sellers
|
23 |
-
* 5.most viewed
|
24 |
-
* 6.recently viewed
|
25 |
-
*
|
26 |
-
*/
|
27 |
-
public function productsAction()
|
28 |
-
{
|
29 |
-
//get all params
|
30 |
-
$params = $this->getRequest()->getParams();
|
31 |
-
|
32 |
-
if(!isset($params['code']) || !isset($params['mode'])){
|
33 |
-
|
34 |
-
exit();
|
35 |
-
}
|
36 |
-
//authenticate before proceed
|
37 |
-
Mage::helper('connector')->auth($params['code']);
|
38 |
-
Mage::register('mode', $params['mode']);
|
39 |
-
if(isset($params['customer']))
|
40 |
-
Mage::register('customer', $params['customer']);
|
41 |
-
$this->loadLayout();
|
42 |
-
$this->renderLayout();
|
43 |
-
|
44 |
-
}
|
45 |
-
|
46 |
-
public function couponAction()
|
47 |
-
{
|
48 |
-
$this->loadLayout();
|
49 |
-
$this->renderLayout();
|
50 |
-
}
|
51 |
-
public function basketAction()
|
52 |
-
{
|
53 |
-
$this->loadLayout();
|
54 |
-
$this->renderLayout();
|
55 |
-
}
|
56 |
-
|
57 |
-
public function logAction()
|
58 |
-
{
|
59 |
-
//@todo allow from these Ips
|
60 |
-
$allowedIps = array(
|
61 |
-
|
62 |
-
);
|
63 |
-
|
64 |
-
//file name param
|
65 |
-
$file = $this->getRequest()->getParam('file');
|
66 |
-
$fileName = $file . '.log';
|
67 |
-
$filePath = Mage::getBaseDir('log') . DIRECTORY_SEPARATOR . $fileName;
|
68 |
-
|
69 |
-
$this->_prepareDownloadResponse($fileName, array(
|
70 |
-
'type' => 'filename',
|
71 |
-
'value' => $filePath
|
72 |
-
));
|
73 |
-
exit();
|
74 |
-
|
75 |
-
}
|
76 |
-
|
77 |
-
public function resetimportedorderdataAction()
|
78 |
-
{
|
79 |
-
$orderCollection = Mage::getResourceModel('sales/order_collection');
|
80 |
-
foreach ($orderCollection as $one) {
|
81 |
-
|
82 |
-
try{
|
83 |
-
|
84 |
-
$one->setData('dotmailer_order_imported', null);
|
85 |
-
$one->save();
|
86 |
-
}catch(Exception $e){
|
87 |
-
Mage::logException($e);
|
88 |
-
}
|
89 |
-
}
|
90 |
-
|
91 |
-
}
|
92 |
-
|
93 |
-
public function saveMissingIdCustomerAction()
|
94 |
-
{
|
95 |
-
$customer = Mage::getModel('connector/customer_customer')->getMissingContacts();
|
96 |
-
$helper = Mage::helper('connector');
|
97 |
-
$helper->log('number of miss ids : ' . count($customer));
|
98 |
-
foreach ($customer as $one) {
|
99 |
-
try{
|
100 |
-
$helper->log($one->getEmail());
|
101 |
-
$one->save();
|
102 |
-
}catch(Exception $e){
|
103 |
-
$helper->log($e->getMessage());
|
104 |
-
|
105 |
-
}
|
106 |
-
|
107 |
-
}
|
108 |
-
|
109 |
-
}
|
110 |
-
|
111 |
-
public function importAllTransactionalDataAction()
|
112 |
-
{
|
113 |
-
$orderCollection = Mage::getModel('sales/order')->getCollection();
|
114 |
-
$helper = Mage::helper('connector');
|
115 |
-
$helper->log('import all transactional data : ' . $orderCollection->getSize());
|
116 |
-
foreach($orderCollection as $one){
|
117 |
-
|
118 |
-
$order = Mage::getModel('connector/connector_order', $one);
|
119 |
-
if($order->connector_id)
|
120 |
-
$orders[] = $order;
|
121 |
-
}
|
122 |
-
$helper->log('orders created : ' . count($orders));
|
123 |
-
$rest = Mage::getModel('connector/api_rest');
|
124 |
-
|
125 |
-
try{
|
126 |
-
$result = $rest->sendMultiTransactionalData($orders, 'Order');
|
127 |
-
$helper->log($result);
|
128 |
-
}catch(Exception $e){
|
129 |
-
$helper->log($e->getMessage());
|
130 |
-
}
|
131 |
-
|
132 |
-
}
|
133 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Dotdigitalgroup/Email/etc/config.xml
DELETED
@@ -1,289 +0,0 @@
|
|
1 |
-
<?xml version="1.0"?>
|
2 |
-
<config>
|
3 |
-
|
4 |
-
<modules>
|
5 |
-
<Dotdigitalgroup_Email>
|
6 |
-
<version>1.5.1</version>
|
7 |
-
</Dotdigitalgroup_Email>
|
8 |
-
</modules>
|
9 |
-
<frontend>
|
10 |
-
<routers>
|
11 |
-
<connector>
|
12 |
-
<use>standard</use>
|
13 |
-
<args>
|
14 |
-
<module>Dotdigitalgroup_Email</module>
|
15 |
-
<frontName>connector</frontName>
|
16 |
-
</args>
|
17 |
-
</connector>
|
18 |
-
</routers>
|
19 |
-
<layout>
|
20 |
-
<updates>
|
21 |
-
<connector>
|
22 |
-
<file>connector.xml</file>
|
23 |
-
</connector>
|
24 |
-
</updates>
|
25 |
-
</layout>
|
26 |
-
</frontend>
|
27 |
-
<global>
|
28 |
-
<models>
|
29 |
-
<connector>
|
30 |
-
<class>Dotdigitalgroup_Email_Model</class>
|
31 |
-
</connector>
|
32 |
-
<sales>
|
33 |
-
<rewrite>
|
34 |
-
<order>Dotdigitalgroup_Email_Model_Order</order>
|
35 |
-
</rewrite>
|
36 |
-
</sales>
|
37 |
-
</models>
|
38 |
-
<helpers>
|
39 |
-
<connector>
|
40 |
-
<class>Dotdigitalgroup_Email_Helper</class>
|
41 |
-
</connector>
|
42 |
-
</helpers>
|
43 |
-
<blocks>
|
44 |
-
<connector>
|
45 |
-
<class>Dotdigitalgroup_Email_Block</class>
|
46 |
-
</connector>
|
47 |
-
</blocks>
|
48 |
-
|
49 |
-
<resources>
|
50 |
-
<connector_setup>
|
51 |
-
<setup>
|
52 |
-
<module>Dotdigitalgroup_Email</module>
|
53 |
-
<class>Mage_Sales_Model_Mysql4_Setup</class>
|
54 |
-
</setup>
|
55 |
-
<connection>
|
56 |
-
<use>core_setup</use>
|
57 |
-
</connection>
|
58 |
-
</connector_setup>
|
59 |
-
<customer_write>
|
60 |
-
<connection>
|
61 |
-
<use>core_write</use>
|
62 |
-
</connection>
|
63 |
-
</customer_write>
|
64 |
-
<customer_read>
|
65 |
-
<connection>
|
66 |
-
<use>core_read</use>
|
67 |
-
</connection>
|
68 |
-
</customer_read>
|
69 |
-
</resources>
|
70 |
-
<events>
|
71 |
-
<customer_save_before>
|
72 |
-
<observers>
|
73 |
-
<contactid>
|
74 |
-
<class>Dotdigitalgroup_Email_Model_Observer</class>
|
75 |
-
<method>handleCustomerSaveBefore</method>
|
76 |
-
</contactid>
|
77 |
-
</observers>
|
78 |
-
</customer_save_before>
|
79 |
-
<sales_order_save_after>
|
80 |
-
<observers>
|
81 |
-
<connector_checkout_type_onepage_save_order_after>
|
82 |
-
<class>Dotdigitalgroup_Email_Model_Observer</class>
|
83 |
-
<method>handleSalesOrderSaveAfter</method>
|
84 |
-
</connector_checkout_type_onepage_save_order_after>
|
85 |
-
</observers>
|
86 |
-
</sales_order_save_after>
|
87 |
-
<sales_quote_save_after>
|
88 |
-
<observers>
|
89 |
-
<connector_quote_save_after>
|
90 |
-
<type>singleton</type>
|
91 |
-
<class>Dotdigitalgroup_Email_Model_Observer</class>
|
92 |
-
<method>handleSalesQuoteSaveAfter</method>
|
93 |
-
</connector_quote_save_after>
|
94 |
-
</observers>
|
95 |
-
</sales_quote_save_after>
|
96 |
-
<sales_order_creditmemo_save_after>
|
97 |
-
<observers>
|
98 |
-
<connector_sales_order_payment_refund>
|
99 |
-
<class>Dotdigitalgroup_Email_Model_Observer</class>
|
100 |
-
<method>handleSalesOrderRefund</method>
|
101 |
-
</connector_sales_order_payment_refund>
|
102 |
-
</observers>
|
103 |
-
</sales_order_creditmemo_save_after>
|
104 |
-
<order_cancel_after>
|
105 |
-
<observers>
|
106 |
-
<connector_sales_order_cancel>
|
107 |
-
<class>Dotdigitalgroup_Email_Model_Observer</class>
|
108 |
-
<method>hangleSalesOrderCancel</method>
|
109 |
-
</connector_sales_order_cancel>
|
110 |
-
</observers>
|
111 |
-
</order_cancel_after>
|
112 |
-
|
113 |
-
<sales_order_status_after>
|
114 |
-
<observers>
|
115 |
-
<connector_sales_order_status_change>
|
116 |
-
<class>Dotdigitalgroup_Email_Model_Observer</class>
|
117 |
-
<method>handleSalesOrderStatusChange</method>
|
118 |
-
</connector_sales_order_status_change>
|
119 |
-
</observers>
|
120 |
-
</sales_order_status_after>
|
121 |
-
</events>
|
122 |
-
</global>
|
123 |
-
|
124 |
-
<adminhtml>
|
125 |
-
<layout>
|
126 |
-
<updates>
|
127 |
-
<connector>
|
128 |
-
<file>connector.xml</file>
|
129 |
-
</connector>
|
130 |
-
</updates>
|
131 |
-
</layout>
|
132 |
-
</adminhtml>
|
133 |
-
|
134 |
-
|
135 |
-
<admin>
|
136 |
-
<routers>
|
137 |
-
<connector>
|
138 |
-
<use>admin</use>
|
139 |
-
<args>
|
140 |
-
<modules>
|
141 |
-
<connector before="Mage_Adminhtml">Dotdigitalgroup_Email_Adminhtml</connector>
|
142 |
-
</modules>
|
143 |
-
<module>Dotdigitalgroup_Email_Adminhtml</module>
|
144 |
-
<frontName>connector</frontName>
|
145 |
-
</args>
|
146 |
-
</connector>
|
147 |
-
</routers>
|
148 |
-
</admin>
|
149 |
-
|
150 |
-
<crontab>
|
151 |
-
<jobs>
|
152 |
-
<dotdigitalgroup_email_customer_sync>
|
153 |
-
<run><model>connector/cron::customersync</model></run>
|
154 |
-
<schedule>
|
155 |
-
<config_path>connector_sync_settings/sync_customer_schedule/cronschedule</config_path>
|
156 |
-
</schedule>
|
157 |
-
</dotdigitalgroup_email_customer_sync>
|
158 |
-
<dotdigitalgroup_email_lostbaskets_sync>
|
159 |
-
<run><model>connector/cron::lostbasketssync</model></run>
|
160 |
-
<schedule>
|
161 |
-
<cron_expr>*/5 * * * *</cron_expr>
|
162 |
-
</schedule>
|
163 |
-
</dotdigitalgroup_email_lostbaskets_sync>
|
164 |
-
<dotdigitalgroup_email_suppressed_sync>
|
165 |
-
<run><model>connector/cron::suppressedsync</model></run>
|
166 |
-
<schedule>
|
167 |
-
<config_path>connector_sync_settings/sync_suppressed_schedule/cronschedulesupp</config_path>
|
168 |
-
</schedule>
|
169 |
-
</dotdigitalgroup_email_suppressed_sync>
|
170 |
-
<dotdigitalgroup_email_cleaner>
|
171 |
-
<run><model>connector/cron::cleaning</model></run>
|
172 |
-
<schedule>
|
173 |
-
<cron_expr>0 0 1 * * </cron_expr>
|
174 |
-
</schedule>
|
175 |
-
</dotdigitalgroup_email_cleaner>
|
176 |
-
</jobs>
|
177 |
-
</crontab>
|
178 |
-
<default>
|
179 |
-
<connector_api_settings>
|
180 |
-
<api_credentials>
|
181 |
-
<username></username>
|
182 |
-
<password></password>
|
183 |
-
</api_credentials>
|
184 |
-
</connector_api_settings>
|
185 |
-
<connector_sync_settings>
|
186 |
-
<sync_customer_schedule>
|
187 |
-
<enabled>0</enabled>
|
188 |
-
<cronschedule></cronschedule>
|
189 |
-
</sync_customer_schedule>
|
190 |
-
<sync_suppressed_schedule>
|
191 |
-
<enabled>0</enabled>
|
192 |
-
<cronschedulesupp></cronschedulesupp>
|
193 |
-
</sync_suppressed_schedule>
|
194 |
-
<transactional_data>
|
195 |
-
<enabled>0</enabled>
|
196 |
-
</transactional_data>
|
197 |
-
</connector_sync_settings>
|
198 |
-
<connector_data_field_settings>
|
199 |
-
<customer_data>
|
200 |
-
<firstname></firstname>
|
201 |
-
<lastname></lastname>
|
202 |
-
<dob></dob>
|
203 |
-
<gender></gender>
|
204 |
-
<website_created_on></website_created_on>
|
205 |
-
<store_created_on></store_created_on>
|
206 |
-
<account_created></account_created>
|
207 |
-
<last_logged_in></last_logged_in>
|
208 |
-
<customer_group></customer_group>
|
209 |
-
</customer_data>
|
210 |
-
<customer_address>
|
211 |
-
<billing_address_1></billing_address_1>
|
212 |
-
<billing_address_2></billing_address_2>
|
213 |
-
<billing_city></billing_city>
|
214 |
-
<billing_country></billing_country>
|
215 |
-
<billing_postcode></billing_postcode>
|
216 |
-
<billing_telephone></billing_telephone>
|
217 |
-
<delivery_address_1></delivery_address_1>
|
218 |
-
<delivery_address_2></delivery_address_2>
|
219 |
-
<delivery_city></delivery_city>
|
220 |
-
<delivery_country></delivery_country>
|
221 |
-
<delivery_postcode></delivery_postcode>
|
222 |
-
<delivery_telephone></delivery_telephone>
|
223 |
-
</customer_address>
|
224 |
-
<customer_sales>
|
225 |
-
<total_orders></total_orders>
|
226 |
-
<average_order_value></average_order_value>
|
227 |
-
<total_spend></total_spend>
|
228 |
-
</customer_sales>
|
229 |
-
</connector_data_field_settings>
|
230 |
-
|
231 |
-
<connector_roi_page_tracking_settings>
|
232 |
-
<page_tracking>
|
233 |
-
<enabled></enabled>
|
234 |
-
</page_tracking>
|
235 |
-
<roi_tracking>
|
236 |
-
<enabled></enabled>
|
237 |
-
</roi_tracking>
|
238 |
-
</connector_roi_page_tracking_settings>
|
239 |
-
<connector_newsletter_subscription_settings>
|
240 |
-
<customers_subscription_management>
|
241 |
-
<default></default>
|
242 |
-
</customers_subscription_management>
|
243 |
-
<subscribers_subscription_management>
|
244 |
-
<default></default>
|
245 |
-
</subscribers_subscription_management>
|
246 |
-
</connector_newsletter_subscription_settings>
|
247 |
-
<lost_basket_settings>
|
248 |
-
<customers>
|
249 |
-
<enabled_1></enabled_1>
|
250 |
-
<send_after_1></send_after_1>
|
251 |
-
<campaign_1></campaign_1>
|
252 |
-
<enabled_2></enabled_2>
|
253 |
-
<send_after_2></send_after_2>
|
254 |
-
<campaign_2></campaign_2>
|
255 |
-
<enabled_3></enabled_3>
|
256 |
-
<send_after_3></send_after_3>
|
257 |
-
<campaign_3></campaign_3>
|
258 |
-
</customers>
|
259 |
-
<guests>
|
260 |
-
<enabled_1></enabled_1>
|
261 |
-
<send_after_1></send_after_1>
|
262 |
-
<campaign_1></campaign_1>
|
263 |
-
<enabled_2></enabled_2>
|
264 |
-
<send_after_2></send_after_2>
|
265 |
-
<campaign_2></campaign_2>
|
266 |
-
<enabled_3></enabled_3>
|
267 |
-
<send_after_3></send_after_3>
|
268 |
-
<campaign_3></campaign_3>
|
269 |
-
</guests>
|
270 |
-
</lost_basket_settings>
|
271 |
-
<connector_advanced_settings>
|
272 |
-
<sync_limits>
|
273 |
-
<contact>500</contact>
|
274 |
-
<orders>500</orders>
|
275 |
-
</sync_limits>
|
276 |
-
<admin>
|
277 |
-
<memory_limit></memory_limit>
|
278 |
-
<batch_size>5000</batch_size>
|
279 |
-
</admin>
|
280 |
-
</connector_advanced_settings>
|
281 |
-
</default>
|
282 |
-
<phpunit>
|
283 |
-
<suite>
|
284 |
-
<modules>
|
285 |
-
<Dotdigitalgroup_Email />
|
286 |
-
</modules>
|
287 |
-
</suite>
|
288 |
-
</phpunit>
|
289 |
-
</config>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Varien/Data/Collection.php
DELETED
@@ -1,818 +0,0 @@
|
|
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 Varien
|
22 |
-
* @package Varien_Data
|
23 |
-
* @copyright Copyright (c) 2008 Irubin Consulting Inc. DBA Varien (http://www.varien.com)
|
24 |
-
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
-
*/
|
26 |
-
|
27 |
-
/**
|
28 |
-
* Data collection
|
29 |
-
*
|
30 |
-
* @category Varien
|
31 |
-
* @package Varien_Data
|
32 |
-
* @author Magento Core Team <core@magentocommerce.com>
|
33 |
-
*/
|
34 |
-
class Varien_Data_Collection implements IteratorAggregate, Countable
|
35 |
-
{
|
36 |
-
const SORT_ORDER_ASC = 'ASC';
|
37 |
-
const SORT_ORDER_DESC = 'DESC';
|
38 |
-
|
39 |
-
/**
|
40 |
-
* Collection items
|
41 |
-
*
|
42 |
-
* @var array
|
43 |
-
*/
|
44 |
-
protected $_items = array();
|
45 |
-
|
46 |
-
/**
|
47 |
-
* Item object class name
|
48 |
-
*
|
49 |
-
* @var string
|
50 |
-
*/
|
51 |
-
protected $_itemObjectClass = 'Varien_Object';
|
52 |
-
|
53 |
-
/**
|
54 |
-
* Order configuration
|
55 |
-
*
|
56 |
-
* @var array
|
57 |
-
*/
|
58 |
-
protected $_orders = array();
|
59 |
-
|
60 |
-
/**
|
61 |
-
* Filters configuration
|
62 |
-
*
|
63 |
-
* @var array
|
64 |
-
*/
|
65 |
-
protected $_filters = array();
|
66 |
-
|
67 |
-
/**
|
68 |
-
* Filter rendered flag
|
69 |
-
*
|
70 |
-
* @var bool
|
71 |
-
*/
|
72 |
-
protected $_isFiltersRendered = false;
|
73 |
-
|
74 |
-
/**
|
75 |
-
* Current page number for items pager
|
76 |
-
*
|
77 |
-
* @var int
|
78 |
-
*/
|
79 |
-
protected $_curPage = 1;
|
80 |
-
|
81 |
-
/**
|
82 |
-
* Pager page size
|
83 |
-
*
|
84 |
-
* if page size is false, then we works with all items
|
85 |
-
*
|
86 |
-
* @var int | false
|
87 |
-
*/
|
88 |
-
protected $_pageSize = false;
|
89 |
-
|
90 |
-
/**
|
91 |
-
* Total items number
|
92 |
-
*
|
93 |
-
* @var int
|
94 |
-
*/
|
95 |
-
protected $_totalRecords;
|
96 |
-
|
97 |
-
/**
|
98 |
-
* Loading state flag
|
99 |
-
*
|
100 |
-
* @var bool
|
101 |
-
*/
|
102 |
-
protected $_isCollectionLoaded;
|
103 |
-
|
104 |
-
protected $_cacheKey;
|
105 |
-
|
106 |
-
protected $_cacheTags = array();
|
107 |
-
|
108 |
-
protected $_cacheLifetime = 86400;
|
109 |
-
|
110 |
-
/**
|
111 |
-
* Additional collection flags
|
112 |
-
*
|
113 |
-
* @var array
|
114 |
-
*/
|
115 |
-
protected $_flags = array();
|
116 |
-
|
117 |
-
public function __construct()
|
118 |
-
{
|
119 |
-
|
120 |
-
}
|
121 |
-
|
122 |
-
/**
|
123 |
-
* Add collection filter
|
124 |
-
*
|
125 |
-
* @param string $field
|
126 |
-
* @param string $value
|
127 |
-
* @param string $type and|or|string
|
128 |
-
*/
|
129 |
-
public function addFilter($field, $value, $type = 'and')
|
130 |
-
{
|
131 |
-
$filter = new Varien_Object(); // implements ArrayAccess
|
132 |
-
$filter['field'] = $field;
|
133 |
-
$filter['value'] = $value;
|
134 |
-
$filter['type'] = strtolower($type);
|
135 |
-
|
136 |
-
$this->_filters[] = $filter;
|
137 |
-
$this->_isFiltersRendered = false;
|
138 |
-
return $this;
|
139 |
-
}
|
140 |
-
|
141 |
-
/**
|
142 |
-
* Search for a filter by specified field
|
143 |
-
*
|
144 |
-
* Multiple filters can be matched if an array is specified:
|
145 |
-
* - 'foo' -- get the first filter with field name 'foo'
|
146 |
-
* - array('foo') -- get all filters with field name 'foo'
|
147 |
-
* - array('foo', 'bar') -- get all filters with field name 'foo' or 'bar'
|
148 |
-
* - array() -- get all filters
|
149 |
-
*
|
150 |
-
* @param string|array $field
|
151 |
-
* @return Varien_Object|array|null
|
152 |
-
*/
|
153 |
-
public function getFilter($field)
|
154 |
-
{
|
155 |
-
if (is_array($field)) {
|
156 |
-
// empty array: get all filters
|
157 |
-
if (empty($field)) {
|
158 |
-
return $this->_filters;
|
159 |
-
}
|
160 |
-
// non-empty array: collect all filters that match specified field names
|
161 |
-
$result = array();
|
162 |
-
foreach ($this->_filters as $filter) {
|
163 |
-
if (in_array($filter['field'], $field)) {
|
164 |
-
$result[] = $filter;
|
165 |
-
}
|
166 |
-
}
|
167 |
-
return $result;
|
168 |
-
}
|
169 |
-
|
170 |
-
// get a first filter by specified name
|
171 |
-
foreach ($this->_filters as $filter) {
|
172 |
-
if ($filter['field'] === $field) {
|
173 |
-
return $filter;
|
174 |
-
}
|
175 |
-
}
|
176 |
-
}
|
177 |
-
|
178 |
-
/**
|
179 |
-
* Retrieve collection loading status
|
180 |
-
*
|
181 |
-
* @return bool
|
182 |
-
*/
|
183 |
-
public function isLoaded()
|
184 |
-
{
|
185 |
-
return $this->_isCollectionLoaded;
|
186 |
-
}
|
187 |
-
|
188 |
-
/**
|
189 |
-
* Set collection loading status flag
|
190 |
-
*
|
191 |
-
* @param unknown_type $flag
|
192 |
-
* @return unknown
|
193 |
-
*/
|
194 |
-
protected function _setIsLoaded($flag = true)
|
195 |
-
{
|
196 |
-
$this->_isCollectionLoaded = $flag;
|
197 |
-
return $this;
|
198 |
-
}
|
199 |
-
|
200 |
-
/**
|
201 |
-
* Get current collection page
|
202 |
-
*
|
203 |
-
* @param int $displacement
|
204 |
-
* @return int
|
205 |
-
*/
|
206 |
-
public function getCurPage($displacement = 0)
|
207 |
-
{
|
208 |
-
if ($this->_curPage + $displacement < 1) {
|
209 |
-
return 1;
|
210 |
-
}
|
211 |
-
elseif ($this->_curPage + $displacement > $this->getLastPageNumber()) {
|
212 |
-
return $this->getLastPageNumber();
|
213 |
-
} else {
|
214 |
-
return $this->_curPage + $displacement;
|
215 |
-
}
|
216 |
-
}
|
217 |
-
|
218 |
-
/**
|
219 |
-
* Retrieve collection last page number
|
220 |
-
*
|
221 |
-
* @return int
|
222 |
-
*/
|
223 |
-
public function getLastPageNumber()
|
224 |
-
{
|
225 |
-
$collectionSize = (int) $this->getSize();
|
226 |
-
if (0 === $collectionSize) {
|
227 |
-
return 1;
|
228 |
-
}
|
229 |
-
elseif($this->_pageSize) {
|
230 |
-
return ceil($collectionSize/$this->_pageSize);
|
231 |
-
}
|
232 |
-
else{
|
233 |
-
return 1;
|
234 |
-
}
|
235 |
-
}
|
236 |
-
|
237 |
-
/**
|
238 |
-
* Retrieve collection page size
|
239 |
-
*
|
240 |
-
* @return int
|
241 |
-
*/
|
242 |
-
public function getPageSize()
|
243 |
-
{
|
244 |
-
return $this->_pageSize;
|
245 |
-
}
|
246 |
-
|
247 |
-
/**
|
248 |
-
* Retrieve collection all items count
|
249 |
-
*
|
250 |
-
* @return int
|
251 |
-
*/
|
252 |
-
public function getSize()
|
253 |
-
{
|
254 |
-
$this->load();
|
255 |
-
if (is_null($this->_totalRecords)) {
|
256 |
-
$this->_totalRecords = count($this->getItems());
|
257 |
-
}
|
258 |
-
return intval($this->_totalRecords);
|
259 |
-
}
|
260 |
-
|
261 |
-
/**
|
262 |
-
* Retrieve collection first item
|
263 |
-
*
|
264 |
-
* @return Varien_Object
|
265 |
-
*/
|
266 |
-
public function getFirstItem()
|
267 |
-
{
|
268 |
-
$this->load();
|
269 |
-
|
270 |
-
if (count($this->_items)) {
|
271 |
-
reset($this->_items);
|
272 |
-
return current($this->_items);
|
273 |
-
}
|
274 |
-
|
275 |
-
return new $this->_itemObjectClass();
|
276 |
-
}
|
277 |
-
|
278 |
-
/**
|
279 |
-
* Retrieve collection last item
|
280 |
-
*
|
281 |
-
* @return Varien_Object
|
282 |
-
*/
|
283 |
-
public function getLastItem()
|
284 |
-
{
|
285 |
-
$this->load();
|
286 |
-
|
287 |
-
if (count($this->_items)) {
|
288 |
-
return end($this->_items);
|
289 |
-
}
|
290 |
-
|
291 |
-
return new $this->_itemObjectClass();
|
292 |
-
}
|
293 |
-
|
294 |
-
/**
|
295 |
-
* Retrieve collection items
|
296 |
-
*
|
297 |
-
* @return array
|
298 |
-
*/
|
299 |
-
public function getItems()
|
300 |
-
{
|
301 |
-
$this->load();
|
302 |
-
return $this->_items;
|
303 |
-
}
|
304 |
-
|
305 |
-
/**
|
306 |
-
* Retrieve field values from all items
|
307 |
-
*
|
308 |
-
* @param string $colName
|
309 |
-
* @return array
|
310 |
-
*/
|
311 |
-
public function getColumnValues($colName)
|
312 |
-
{
|
313 |
-
$this->load();
|
314 |
-
|
315 |
-
$col = array();
|
316 |
-
foreach ($this->getItems() as $item) {
|
317 |
-
$col[] = $item->getData($colName);
|
318 |
-
}
|
319 |
-
return $col;
|
320 |
-
}
|
321 |
-
|
322 |
-
/**
|
323 |
-
* Search all items by field value
|
324 |
-
*
|
325 |
-
* @param string $column
|
326 |
-
* @param mixed $value
|
327 |
-
* @return array
|
328 |
-
*/
|
329 |
-
public function getItemsByColumnValue($column, $value)
|
330 |
-
{
|
331 |
-
$this->load();
|
332 |
-
|
333 |
-
$res = array();
|
334 |
-
foreach ($this as $item) {
|
335 |
-
if ($item->getData($column)==$value) {
|
336 |
-
$res[] = $item;
|
337 |
-
}
|
338 |
-
}
|
339 |
-
return $res;
|
340 |
-
}
|
341 |
-
|
342 |
-
/**
|
343 |
-
* Search first item by field value
|
344 |
-
*
|
345 |
-
* @param string $column
|
346 |
-
* @param mixed $value
|
347 |
-
* @return Varien_Object || null
|
348 |
-
*/
|
349 |
-
public function getItemByColumnValue($column, $value)
|
350 |
-
{
|
351 |
-
$this->load();
|
352 |
-
|
353 |
-
foreach ($this as $item) {
|
354 |
-
if ($item->getData($column)==$value) {
|
355 |
-
return $item;
|
356 |
-
}
|
357 |
-
}
|
358 |
-
return null;
|
359 |
-
}
|
360 |
-
|
361 |
-
/**
|
362 |
-
* Adding item to item array
|
363 |
-
*
|
364 |
-
* @param Varien_Object $item
|
365 |
-
* @return Varien_Data_Collection
|
366 |
-
*/
|
367 |
-
public function addItem(Varien_Object $item)
|
368 |
-
{
|
369 |
-
$itemId = $this->_getItemId($item);
|
370 |
-
|
371 |
-
if (!is_null($itemId)) {
|
372 |
-
if (isset($this->_items[$itemId])) {
|
373 |
-
//throw new Exception('Item ('.get_class($item).') with the same id "'.$item->getId().'" already exist');
|
374 |
-
}
|
375 |
-
$this->_items[$itemId] = $item;
|
376 |
-
} else {
|
377 |
-
$this->_addItem($item);
|
378 |
-
}
|
379 |
-
return $this;
|
380 |
-
}
|
381 |
-
|
382 |
-
/**
|
383 |
-
* Add item that has no id to collection
|
384 |
-
*
|
385 |
-
* @param Varien_Object $item
|
386 |
-
* @return Varien_Data_Collection
|
387 |
-
*/
|
388 |
-
protected function _addItem($item)
|
389 |
-
{
|
390 |
-
$this->_items[] = $item;
|
391 |
-
return $this;
|
392 |
-
}
|
393 |
-
|
394 |
-
/**
|
395 |
-
* Retrieve item id
|
396 |
-
*
|
397 |
-
* @param Varien_Object $item
|
398 |
-
* @return mixed
|
399 |
-
*/
|
400 |
-
protected function _getItemId(Varien_Object $item)
|
401 |
-
{
|
402 |
-
return $item->getId();
|
403 |
-
}
|
404 |
-
|
405 |
-
/**
|
406 |
-
* Retrieve ids of all tems
|
407 |
-
*
|
408 |
-
* @return array
|
409 |
-
*/
|
410 |
-
public function getAllIds()
|
411 |
-
{
|
412 |
-
$ids = array();
|
413 |
-
foreach ($this->getItems() as $item) {
|
414 |
-
$ids[] = $this->_getItemId($item);
|
415 |
-
}
|
416 |
-
return $ids;
|
417 |
-
}
|
418 |
-
|
419 |
-
/**
|
420 |
-
* Remove item from collection by item key
|
421 |
-
*
|
422 |
-
* @param mixed $key
|
423 |
-
* @return Varien_Data_Collection
|
424 |
-
*/
|
425 |
-
public function removeItemByKey($key)
|
426 |
-
{
|
427 |
-
if (isset($this->_items[$key])) {
|
428 |
-
unset($this->_items[$key]);
|
429 |
-
}
|
430 |
-
return $this;
|
431 |
-
}
|
432 |
-
|
433 |
-
/**
|
434 |
-
* Clear collection
|
435 |
-
*
|
436 |
-
* @return Varien_Data_Collection
|
437 |
-
*/
|
438 |
-
public function clear()
|
439 |
-
{
|
440 |
-
$this->_setIsLoaded(false);
|
441 |
-
$this->_items = array();
|
442 |
-
return $this;
|
443 |
-
}
|
444 |
-
|
445 |
-
/**
|
446 |
-
* Walk through the collection and run model method or external callback
|
447 |
-
* with optional arguments
|
448 |
-
*
|
449 |
-
* Returns array with results of callback for each item
|
450 |
-
*
|
451 |
-
* @param string $method
|
452 |
-
* @param array $args
|
453 |
-
* @return array
|
454 |
-
*/
|
455 |
-
public function walk($callback, array $args=array())
|
456 |
-
{
|
457 |
-
$results = array();
|
458 |
-
$useItemCallback = is_string($callback) && strpos($callback, '::')===false;
|
459 |
-
foreach ($this->getItems() as $id=>$item) {
|
460 |
-
if ($useItemCallback) {
|
461 |
-
$cb = array($item, $callback);
|
462 |
-
} else {
|
463 |
-
$cb = $callback;
|
464 |
-
array_unshift($args, $item);
|
465 |
-
}
|
466 |
-
$results[$id] = call_user_func_array($cb, $args);
|
467 |
-
}
|
468 |
-
return $results;
|
469 |
-
}
|
470 |
-
|
471 |
-
public function each($obj_method, $args=array())
|
472 |
-
{
|
473 |
-
foreach ($args->_items as $k => $item) {
|
474 |
-
$args->_items[$k] = call_user_func($obj_method, $item);
|
475 |
-
}
|
476 |
-
}
|
477 |
-
|
478 |
-
/**
|
479 |
-
* Setting data for all collection items
|
480 |
-
*
|
481 |
-
* @param mixed $key
|
482 |
-
* @param mixed $value
|
483 |
-
* @return Varien_Data_Collection
|
484 |
-
*/
|
485 |
-
public function setDataToAll($key, $value=null)
|
486 |
-
{
|
487 |
-
if (is_array($key)) {
|
488 |
-
foreach ($key as $k=>$v) {
|
489 |
-
$this->setDataToAll($k, $v);
|
490 |
-
}
|
491 |
-
return $this;
|
492 |
-
}
|
493 |
-
foreach ($this->getItems() as $item) {
|
494 |
-
$item->setData($key, $value);
|
495 |
-
}
|
496 |
-
return $this;
|
497 |
-
}
|
498 |
-
|
499 |
-
/**
|
500 |
-
* Set current page
|
501 |
-
*
|
502 |
-
* @param int $page
|
503 |
-
* @return Varien_Data_Collection
|
504 |
-
*/
|
505 |
-
public function setCurPage($page)
|
506 |
-
{
|
507 |
-
$this->_curPage = $page;
|
508 |
-
return $this;
|
509 |
-
}
|
510 |
-
|
511 |
-
/**
|
512 |
-
* Set collection page size
|
513 |
-
*
|
514 |
-
* @param int $size
|
515 |
-
* @return Varien_Data_Collection
|
516 |
-
*/
|
517 |
-
public function setPageSize($size)
|
518 |
-
{
|
519 |
-
$this->_pageSize = $size;
|
520 |
-
return $this;
|
521 |
-
}
|
522 |
-
|
523 |
-
/**
|
524 |
-
* Set select order
|
525 |
-
*
|
526 |
-
* @param string $field
|
527 |
-
* @param string $direction
|
528 |
-
* @return Varien_Data_Collection
|
529 |
-
*/
|
530 |
-
public function setOrder($field, $direction = self::SORT_ORDER_DESC)
|
531 |
-
{
|
532 |
-
$this->_orders[$field] = $direction;
|
533 |
-
return $this;
|
534 |
-
}
|
535 |
-
|
536 |
-
/**
|
537 |
-
* Set collection item class name
|
538 |
-
*
|
539 |
-
* @param string $className
|
540 |
-
* @return Varien_Data_Collection
|
541 |
-
*/
|
542 |
-
function setItemObjectClass($className)
|
543 |
-
{
|
544 |
-
$className = Mage::getConfig()->getModelClassName($className);
|
545 |
-
/**
|
546 |
-
* is_subclass_of($className, 'Varien_Object') - Segmentation fault in php 5.2.3
|
547 |
-
*/
|
548 |
-
/*if (!is_subclass_of($className, 'Varien_Object')) {
|
549 |
-
throw new Exception($className.' does not extends from Varien_Object');
|
550 |
-
}*/
|
551 |
-
$this->_itemObjectClass = $className;
|
552 |
-
return $this;
|
553 |
-
}
|
554 |
-
|
555 |
-
/**
|
556 |
-
* Retrieve collection empty item
|
557 |
-
*
|
558 |
-
* @return Varien_Object
|
559 |
-
*/
|
560 |
-
public function getNewEmptyItem()
|
561 |
-
{
|
562 |
-
return new $this->_itemObjectClass();
|
563 |
-
}
|
564 |
-
|
565 |
-
/**
|
566 |
-
* Render sql select conditions
|
567 |
-
*
|
568 |
-
* @return Varien_Data_Collection
|
569 |
-
*/
|
570 |
-
protected function _renderFilters()
|
571 |
-
{
|
572 |
-
return $this;
|
573 |
-
}
|
574 |
-
|
575 |
-
/**
|
576 |
-
* Render sql select orders
|
577 |
-
*
|
578 |
-
* @return Varien_Data_Collection
|
579 |
-
*/
|
580 |
-
protected function _renderOrders()
|
581 |
-
{
|
582 |
-
return $this;
|
583 |
-
}
|
584 |
-
|
585 |
-
/**
|
586 |
-
* Render sql select limit
|
587 |
-
*
|
588 |
-
* @return Varien_Data_Collection
|
589 |
-
*/
|
590 |
-
protected function _renderLimit()
|
591 |
-
{
|
592 |
-
return $this;
|
593 |
-
}
|
594 |
-
|
595 |
-
/**
|
596 |
-
* Set select distinct
|
597 |
-
*
|
598 |
-
* @param bool $flag
|
599 |
-
*/
|
600 |
-
public function distinct($flag)
|
601 |
-
{
|
602 |
-
return $this;
|
603 |
-
}
|
604 |
-
|
605 |
-
/**
|
606 |
-
* Load data
|
607 |
-
*
|
608 |
-
* @return Varien_Data_Collection
|
609 |
-
*/
|
610 |
-
public function loadData($printQuery = false, $logQuery = false)
|
611 |
-
{
|
612 |
-
return $this;
|
613 |
-
}
|
614 |
-
|
615 |
-
/**
|
616 |
-
* Load data
|
617 |
-
*
|
618 |
-
* @return Varien_Data_Collection
|
619 |
-
*/
|
620 |
-
public function load($printQuery = false, $logQuery = false)
|
621 |
-
{
|
622 |
-
return $this->loadData($printQuery, $logQuery);
|
623 |
-
}
|
624 |
-
|
625 |
-
/**
|
626 |
-
* Convert collection to XML
|
627 |
-
*
|
628 |
-
* @return string
|
629 |
-
*/
|
630 |
-
public function toXml()
|
631 |
-
{
|
632 |
-
$xml = '<?xml version="1.0" encoding="UTF-8"?>
|
633 |
-
<collection>
|
634 |
-
<totalRecords>'.$this->_totalRecords.'</totalRecords>
|
635 |
-
<items>';
|
636 |
-
|
637 |
-
foreach ($this as $item) {
|
638 |
-
$xml.=$item->toXml();
|
639 |
-
}
|
640 |
-
$xml.= '</items>
|
641 |
-
</collection>';
|
642 |
-
return $xml;
|
643 |
-
}
|
644 |
-
|
645 |
-
/**
|
646 |
-
* Convert collection to array
|
647 |
-
*
|
648 |
-
* @return array
|
649 |
-
*/
|
650 |
-
public function toArray($arrRequiredFields = array())
|
651 |
-
{
|
652 |
-
$arrItems = array();
|
653 |
-
$arrItems['totalRecords'] = $this->getSize();
|
654 |
-
|
655 |
-
$arrItems['items'] = array();
|
656 |
-
foreach ($this as $item) {
|
657 |
-
$arrItems['items'][] = $item->toArray($arrRequiredFields);
|
658 |
-
}
|
659 |
-
return $arrItems;
|
660 |
-
}
|
661 |
-
|
662 |
-
/**
|
663 |
-
* Convert items array to array for select options
|
664 |
-
*
|
665 |
-
* return items array
|
666 |
-
* array(
|
667 |
-
* $index => array(
|
668 |
-
* 'value' => mixed
|
669 |
-
* 'label' => mixed
|
670 |
-
* )
|
671 |
-
* )
|
672 |
-
*
|
673 |
-
* @param string $valueField
|
674 |
-
* @param string $labelField
|
675 |
-
* @return array
|
676 |
-
*/
|
677 |
-
protected function _toOptionArray($valueField='id', $labelField='name', $additional=array())
|
678 |
-
{
|
679 |
-
$res = array();
|
680 |
-
$additional['value'] = $valueField;
|
681 |
-
$additional['label'] = $labelField;
|
682 |
-
|
683 |
-
foreach ($this as $item) {
|
684 |
-
foreach ($additional as $code => $field) {
|
685 |
-
$data[$code] = $item->getData($field);
|
686 |
-
}
|
687 |
-
$res[] = $data;
|
688 |
-
}
|
689 |
-
return $res;
|
690 |
-
}
|
691 |
-
|
692 |
-
public function toOptionArray()
|
693 |
-
{
|
694 |
-
return $this->_toOptionArray();
|
695 |
-
}
|
696 |
-
|
697 |
-
public function toOptionHash()
|
698 |
-
{
|
699 |
-
return $this->_toOptionHash();
|
700 |
-
}
|
701 |
-
|
702 |
-
/**
|
703 |
-
* Convert items array to hash for select options
|
704 |
-
*
|
705 |
-
* return items hash
|
706 |
-
* array($value => $label)
|
707 |
-
*
|
708 |
-
* @param string $valueField
|
709 |
-
* @param string $labelField
|
710 |
-
* @return array
|
711 |
-
*/
|
712 |
-
protected function _toOptionHash($valueField='id', $labelField='name')
|
713 |
-
{
|
714 |
-
$res = array();
|
715 |
-
foreach ($this as $item) {
|
716 |
-
$res[$item->getData($valueField)] = $item->getData($labelField);
|
717 |
-
}
|
718 |
-
return $res;
|
719 |
-
}
|
720 |
-
|
721 |
-
/**
|
722 |
-
* Retrieve item by id
|
723 |
-
*
|
724 |
-
* @param mixed $idValue
|
725 |
-
* @return Varien_Object
|
726 |
-
*/
|
727 |
-
public function getItemById($idValue)
|
728 |
-
{
|
729 |
-
$this->load();
|
730 |
-
if (isset($this->_items[$idValue])) {
|
731 |
-
return $this->_items[$idValue];
|
732 |
-
}
|
733 |
-
return null;
|
734 |
-
}
|
735 |
-
|
736 |
-
/**
|
737 |
-
* Implementation of IteratorAggregate::getIterator()
|
738 |
-
*/
|
739 |
-
public function getIterator()
|
740 |
-
{
|
741 |
-
$this->load();
|
742 |
-
return new ArrayIterator($this->_items);
|
743 |
-
}
|
744 |
-
|
745 |
-
/**
|
746 |
-
* Retireve count of collection loaded items
|
747 |
-
*
|
748 |
-
* @return int
|
749 |
-
*/
|
750 |
-
public function count()
|
751 |
-
{
|
752 |
-
$this->load();
|
753 |
-
|
754 |
-
return count($this->_items);
|
755 |
-
}
|
756 |
-
|
757 |
-
public function setCacheKey($key)
|
758 |
-
{
|
759 |
-
$this->_cacheKey = $key;
|
760 |
-
return $this;
|
761 |
-
}
|
762 |
-
|
763 |
-
public function getCacheKey()
|
764 |
-
{
|
765 |
-
return $this->_cacheKey;
|
766 |
-
}
|
767 |
-
|
768 |
-
public function setCacheTags($tags)
|
769 |
-
{
|
770 |
-
$this->_cacheTags = $tags;
|
771 |
-
return $this;
|
772 |
-
}
|
773 |
-
|
774 |
-
public function getCacheTags()
|
775 |
-
{
|
776 |
-
return $this->_cacheTags;
|
777 |
-
}
|
778 |
-
|
779 |
-
public function getCacheLifetime()
|
780 |
-
{
|
781 |
-
return $this->_cacheLifetime;
|
782 |
-
}
|
783 |
-
|
784 |
-
/**
|
785 |
-
* Retrieve Flag
|
786 |
-
*
|
787 |
-
* @param string $flag
|
788 |
-
* @return mixed
|
789 |
-
*/
|
790 |
-
public function getFlag($flag)
|
791 |
-
{
|
792 |
-
return isset($this->_flags[$flag]) ? $this->_flags[$flag] : null;
|
793 |
-
}
|
794 |
-
|
795 |
-
/**
|
796 |
-
* Set Flag
|
797 |
-
*
|
798 |
-
* @param string $flag
|
799 |
-
* @param mixed $value
|
800 |
-
* @return Varien_Data_Collection
|
801 |
-
*/
|
802 |
-
public function setFlag($flag, $value = null)
|
803 |
-
{
|
804 |
-
$this->_flags[$flag] = $value;
|
805 |
-
return $this;
|
806 |
-
}
|
807 |
-
|
808 |
-
/**
|
809 |
-
* Has Flag
|
810 |
-
*
|
811 |
-
* @param string $flag
|
812 |
-
* @return bool
|
813 |
-
*/
|
814 |
-
public function hasFlag($flag)
|
815 |
-
{
|
816 |
-
return array_key_exists($flag, $this->_flags);
|
817 |
-
}
|
818 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/design/frontend/base/default/layout/connector.xml
CHANGED
@@ -15,7 +15,7 @@
|
|
15 |
<action method="setTemplate"><template>page/blank.phtml</template></action>
|
16 |
</reference>
|
17 |
<reference name="content">
|
18 |
-
<block type="connector/products" name="email.products" as="email.products" template="
|
19 |
</reference>
|
20 |
</connector_email_products>
|
21 |
<connector_email_coupon>
|
@@ -34,4 +34,71 @@
|
|
34 |
<block type="connector/basket" name="email.basket" as="email.basket" template="connector/basket.phtml"/>
|
35 |
</reference>
|
36 |
</connector_email_basket>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
37 |
</layout>
|
15 |
<action method="setTemplate"><template>page/blank.phtml</template></action>
|
16 |
</reference>
|
17 |
<reference name="content">
|
18 |
+
<block type="connector/products" name="email.products" as="email.products" template="connector/products.phtml"/>
|
19 |
</reference>
|
20 |
</connector_email_products>
|
21 |
<connector_email_coupon>
|
34 |
<block type="connector/basket" name="email.basket" as="email.basket" template="connector/basket.phtml"/>
|
35 |
</reference>
|
36 |
</connector_email_basket>
|
37 |
+
<connector_order_new>
|
38 |
+
<reference name="root">
|
39 |
+
<action method="setTemplate"><template>page/blank.phtml</template></action>
|
40 |
+
</reference>
|
41 |
+
<reference name="content">
|
42 |
+
<block type="connector/order" name="connector.order.new" as="connector.order.new" template="connector/sales/order/new.phtml"/>
|
43 |
+
</reference>
|
44 |
+
</connector_order_new>
|
45 |
+
<connector_order_update>
|
46 |
+
<reference name="root">
|
47 |
+
<action method="setTemplate"><template>page/blank.phtml</template></action>
|
48 |
+
</reference>
|
49 |
+
<reference name="content">
|
50 |
+
<block type="connector/order_update" name="connector.order.update" as="connector.order.update" template="connector/sales/order/update.phtml"/>
|
51 |
+
</reference>
|
52 |
+
</connector_order_update>
|
53 |
+
<connector_customer_new>
|
54 |
+
<reference name="root">
|
55 |
+
<action method="setTemplate"><template>page/blank.phtml</template></action>
|
56 |
+
</reference>
|
57 |
+
<reference name="content">
|
58 |
+
<block type="connector/customer" name="connector.customer.new" template="connector/customer/new.phtml" as="connector.customer.new"/>
|
59 |
+
</reference>
|
60 |
+
</connector_customer_new>
|
61 |
+
<connector_order_creditmemo>
|
62 |
+
<reference name="root">
|
63 |
+
<action method="setTemplate"><template>page/blank.phtml</template></action>
|
64 |
+
</reference>
|
65 |
+
<reference name="content">
|
66 |
+
<block type="connector/order_info" as="info" name="sales.order.info">
|
67 |
+
<block type="connector/order_creditmemo" name="sales.order.creditmemo">
|
68 |
+
<block type="connector/order_creditmemo_items" name="creditmemo_items" template="connector/sales/order/creditmemo/items.phtml">
|
69 |
+
<action method="addItemRender"><type>default</type><block>sales/order_item_renderer_default</block><template>sales/order/creditmemo/items/renderer/default.phtml</template></action>
|
70 |
+
<action method="addItemRender"><type>grouped</type><block>sales/order_item_renderer_grouped</block><template>sales/order/creditmemo/items/renderer/default.phtml</template></action>
|
71 |
+
<block type="sales/order_creditmemo_totals" name="creditmemo_totals" template="sales/order/totals.phtml">
|
72 |
+
<action method="setLabelProperties"><value>colspan="6" class="a-right"</value></action>
|
73 |
+
<action method="setValueProperties"><value>class="a-right"</value></action>
|
74 |
+
<block type="tax/sales_order_tax" name="tax" template="tax/order/tax.phtml"/>
|
75 |
+
</block>
|
76 |
+
|
77 |
+
</block>
|
78 |
+
</block>
|
79 |
+
</block>
|
80 |
+
</reference>
|
81 |
+
</connector_order_creditmemo>
|
82 |
+
<connector_order_invoice>
|
83 |
+
<reference name="root">
|
84 |
+
<action method="setTemplate"><template>page/blank.phtml</template></action>
|
85 |
+
</reference>
|
86 |
+
<reference name="content">
|
87 |
+
<block type="connector/order_invoice" name="sales.order.invoice">
|
88 |
+
<block type="connector/order_invoice_items" name="invoice_items" template="connector/sales/order/invoice/items.phtml">
|
89 |
+
<action method="addItemRender"><type>default</type><block>sales/order_item_renderer_default</block><template>sales/order/invoice/items/renderer/default.phtml</template></action>
|
90 |
+
<action method="addItemRender"><type>grouped</type><block>sales/order_item_renderer_grouped</block><template>sales/order/invoice/items/renderer/default.phtml</template></action>
|
91 |
+
<block type="sales/order_invoice_totals" name="invoice_totals" template="connector/sales/order/totals.phtml">
|
92 |
+
<action method="setLabelProperties"><value>colspan="4" class="a-right"</value></action>
|
93 |
+
<action method="setValueProperties"><value>class="last a-right"</value></action>
|
94 |
+
<block type="tax/sales_order_tax" name="tax" template="tax/order/tax.phtml" />
|
95 |
+
</block>
|
96 |
+
<block type="sales/order_comments" name="invoice_comments" template="sales/order/comments.phtml" />
|
97 |
+
</block>
|
98 |
+
</block>
|
99 |
+
</reference>
|
100 |
+
|
101 |
+
<block type="core/text_list" name="additional.product.info" />
|
102 |
+
</connector_order_invoice>
|
103 |
+
|
104 |
</layout>
|
app/design/frontend/base/default/template/connector/customer/new.phtml
ADDED
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
$customer = $this->getNewCustomer();
|
3 |
+
?>
|
4 |
+
|
5 |
+
<body style="background:#F6F6F6; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px; margin:0; padding:0;">
|
6 |
+
<div style="background:#F6F6F6; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px; margin:0; padding:0;">
|
7 |
+
<table cellspacing="0" cellpadding="0" border="0" width="100%">
|
8 |
+
<tr>
|
9 |
+
<td align="center" valign="top" style="padding:20px 0 20px 0">
|
10 |
+
<table bgcolor="#FFFFFF" cellspacing="0" cellpadding="10" border="0" width="650" style="border:1px solid #E0E0E0;">
|
11 |
+
|
12 |
+
<tr>
|
13 |
+
<td>
|
14 |
+
<table cellspacing="0" cellpadding="0" border="0" width="650">
|
15 |
+
|
16 |
+
<tbody>
|
17 |
+
<tr>
|
18 |
+
<td>
|
19 |
+
Use the following values when prompted to log in:
|
20 |
+
</td>
|
21 |
+
</tr>
|
22 |
+
<tr>
|
23 |
+
|
24 |
+
<td valign="top" style="font-size:12px; padding:7px 9px 9px 9px; ">
|
25 |
+
Username : <?php echo $customer->getEmail();?>
|
26 |
+
</td>
|
27 |
+
|
28 |
+
|
29 |
+
</tr>
|
30 |
+
</tbody>
|
31 |
+
</table>
|
32 |
+
</td>
|
33 |
+
|
34 |
+
</tr>
|
35 |
+
|
36 |
+
</table>
|
37 |
+
|
38 |
+
</td>
|
39 |
+
</tr>
|
40 |
+
|
41 |
+
</table>
|
42 |
+
</div>
|
43 |
+
</body>
|
44 |
+
|
45 |
+
|
46 |
+
|
47 |
+
|
app/design/frontend/base/default/template/connector/customer/system/config/synccustomerdata.phtml
ADDED
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<script type="text/javascript">
|
2 |
+
//<![CDATA[
|
3 |
+
function validateVat() {
|
4 |
+
var elem = $('<?php echo $this->getHtmlId() ?>');
|
5 |
+
|
6 |
+
params = {
|
7 |
+
country: $('general_store_information_merchant_country').value,
|
8 |
+
vat: $('general_store_information_merchant_vat_number').value
|
9 |
+
};
|
10 |
+
|
11 |
+
new Ajax.Request('<?php echo $this->getAjaxUrl() ?>', {
|
12 |
+
parameters: params,
|
13 |
+
onSuccess: function(response) {
|
14 |
+
result = '<?php echo $this->__('VAT Number is Invalid') ?>';
|
15 |
+
try {
|
16 |
+
response = response.responseText;
|
17 |
+
if (response == 1) {
|
18 |
+
result = '<?php echo $this->__('VAT Number is Valid') ?>';
|
19 |
+
elem.removeClassName('fail').addClassName('success')
|
20 |
+
} else {
|
21 |
+
elem.removeClassName('success').addClassName('fail')
|
22 |
+
}
|
23 |
+
} catch (e) {
|
24 |
+
elem.removeClassName('success').addClassName('fail')
|
25 |
+
}
|
26 |
+
$('validation_result').update(result);
|
27 |
+
}
|
28 |
+
});
|
29 |
+
}
|
30 |
+
//]]>
|
31 |
+
</script>
|
32 |
+
<button onclick="javascript:validateVat(); return false;" class="scalable" type="button" id="<?php echo $this->getHtmlId() ?>">
|
33 |
+
<span id="validation_result"><?php echo $this->escapeHtml($this->getButtonLabel()) ?></span>
|
34 |
+
</button>
|
app/design/frontend/base/default/template/{page/connector → connector}/products.phtml
RENAMED
@@ -1,12 +1,9 @@
|
|
1 |
-
<?php $productCollection = $this->getRecommendedProducts();?>
|
2 |
-
|
3 |
-
|
4 |
<?php
|
5 |
-
$listMode = $this->getMode();
|
6 |
|
7 |
-
|
8 |
-
|
9 |
-
|
|
|
10 |
<?php $_product = Mage::getModel('catalog/product')->load($_product->getEntityId());?>
|
11 |
<?php if($i == 0):?>
|
12 |
<table border="0" bordercolor="#FFCC00" width="147" cellpadding="0" cellspacing="0" style='font-family:arial; border-collapse: collapse; font-size:12;'><tr>
|
|
|
|
|
|
|
1 |
<?php
|
|
|
2 |
|
3 |
+
$productCollection = $this->getRecommendedProducts();
|
4 |
+
$listMode = $this->getMode();
|
5 |
+
$i = 0;
|
6 |
+
foreach ($productCollection as $key => $_product) :?>
|
7 |
<?php $_product = Mage::getModel('catalog/product')->load($_product->getEntityId());?>
|
8 |
<?php if($i == 0):?>
|
9 |
<table border="0" bordercolor="#FFCC00" width="147" cellpadding="0" cellspacing="0" style='font-family:arial; border-collapse: collapse; font-size:12;'><tr>
|
app/design/frontend/base/default/template/connector/roi_code.phtml
CHANGED
@@ -1,23 +1,17 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
if(Mage::getStoreConfig('connector_roi_page_tracking_settings/roi_tracking/enabled')):?>
|
4 |
-
|
5 |
-
<?php
|
6 |
$order = Mage::getModel('sales/order')->loadByIncrementId($this->getOrderId());
|
7 |
$orderId = $this->getOrderId();
|
8 |
$items = $order->getAllItems();
|
9 |
$total = number_format($order->getBaseGrandTotal(), 2);
|
|
|
|
|
|
|
10 |
|
11 |
-
|
12 |
-
|
13 |
-
<?php
|
14 |
-
|
15 |
-
<?php if($item->getParentItemId() != null)
|
16 |
-
continue;?>
|
17 |
-
_dmTrack("product", <?php echo $item->getName()?>;
|
18 |
-
|
19 |
-
<?php endforeach;?>
|
20 |
-
_dmTrack("CheckOutAmount", <?php echo $total;?>);
|
21 |
-
</script>
|
22 |
|
|
|
|
|
|
|
23 |
<?php endif;?>
|
1 |
+
<?php if(Mage::helper('connector')->getRoiTrackingEnabled()):
|
|
|
|
|
|
|
|
|
2 |
$order = Mage::getModel('sales/order')->loadByIncrementId($this->getOrderId());
|
3 |
$orderId = $this->getOrderId();
|
4 |
$items = $order->getAllItems();
|
5 |
$total = number_format($order->getBaseGrandTotal(), 2);
|
6 |
+
?>
|
7 |
+
<script type="text/javascript">
|
8 |
+
<?php foreach ($items as $item):?>
|
9 |
|
10 |
+
<?php if($item->getParentItemId() != null)
|
11 |
+
continue;?>
|
12 |
+
_dmTrack("product", <?php echo $item->getName()?>;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
|
14 |
+
<?php endforeach;?>
|
15 |
+
_dmTrack("CheckOutAmount", <?php echo $total;?>);
|
16 |
+
</script>
|
17 |
<?php endif;?>
|
app/design/frontend/base/default/template/connector/sales/order/creditmemo.phtml
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
<?php echo $this->getChildHtml('creditmemo_items');
|
app/design/frontend/base/default/template/connector/sales/order/creditmemo/items.phtml
ADDED
@@ -0,0 +1,64 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php $_order = $this->getOrder() ?>
|
2 |
+
<?php foreach ($_order->getCreditmemosCollection() as $_creditmemo): ?>
|
3 |
+
<h3 class="table-caption"><?php echo $this->__('Items Refunded') ?></h3>
|
4 |
+
|
5 |
+
<table cellspacing="0" cellpadding="0" border="0" width="650">
|
6 |
+
<thead>
|
7 |
+
<tr>
|
8 |
+
<th align="left" width="325" bgcolor="#EAEAEA" style="font-size:13px; padding:5px 9px 6px 9px; line-height:1em;">Item</th>
|
9 |
+
<th align="left" width="325" bgcolor="#EAEAEA" style="font-size:13px; padding:5px 9px 6px 9px; line-height:1em;">SKU</th>
|
10 |
+
<th align="left" width="325" bgcolor="#EAEAEA" style="font-size:13px; padding:5px 9px 6px 9px; line-height:1em;">Qty</th>
|
11 |
+
<th align="left" width="325" bgcolor="#EAEAEA" style="font-size:13px; padding:5px 9px 6px 9px; line-height:1em;">Subtotal</th>
|
12 |
+
</tr>
|
13 |
+
</thead>
|
14 |
+
<tbody>
|
15 |
+
<?php $_items = $_creditmemo->getAllItems(); ?>
|
16 |
+
<?php foreach ($_items as $_item): ?>
|
17 |
+
<?php if ($_item->getOrderItem()->getParentItem()) continue;?>
|
18 |
+
<tr class="border">
|
19 |
+
<td valign="top" style="font-size:12px; padding:7px 9px 9px 9px; border-left:1px solid #EAEAEA; border-bottom:1px solid #EAEAEA; border-right:1px solid #EAEAEA;" width="70%"><?php echo $_item->getName() ?></td>
|
20 |
+
<td valign="top" style="font-size:12px; padding:7px 9px 9px 9px; border-left:1px solid #EAEAEA; border-bottom:1px solid #EAEAEA; border-right:1px solid #EAEAEA;"><?php echo $_item->getSku();?></td>
|
21 |
+
<td valign="top" style="font-size:12px; padding:7px 9px 9px 9px; border-left:1px solid #EAEAEA; border-bottom:1px solid #EAEAEA; border-right:1px solid #EAEAEA;"><?php echo number_format($_item->getQty(), 0);?></td>
|
22 |
+
<td valign="top" style="font-size:12px; padding:7px 9px 9px 9px; border-left:1px solid #EAEAEA; border-bottom:1px solid #EAEAEA; border-right:1px solid #EAEAEA;"><?php echo $_order->formatPrice($_item->getRowTotal());?>
|
23 |
+
</tr>
|
24 |
+
<?php endforeach; ?>
|
25 |
+
|
26 |
+
</tbody>
|
27 |
+
<tfoot>
|
28 |
+
<tr>
|
29 |
+
<td></td>
|
30 |
+
<td colspan="2" align="right" style="padding:3px 9px"><?php echo Mage::helper('sales')->__('Subtotal') ?></td>
|
31 |
+
<td align="right" style="padding:3px 9px"><?php echo $_order->formatPrice($_order->getSubtotal()) ?></td>
|
32 |
+
</tr>
|
33 |
+
<?php
|
34 |
+
|
35 |
+
if ($_order->getDiscountAmount() > 0): ?>
|
36 |
+
<tr>
|
37 |
+
<td></td>
|
38 |
+
<td colspan="2" align="right" style="padding:3px 9px"><?php echo Mage::helper('sales')->__('Discount') ?></td>
|
39 |
+
<td align="right" style="padding:3px 9px"><?php echo $_order->formatPrice($_order->getDiscountAmount()) ?></td>
|
40 |
+
</tr>
|
41 |
+
<?php endif; ?>
|
42 |
+
<?php if ($_order->getShippingAmount() > 0): ?>
|
43 |
+
<tr>
|
44 |
+
<td></td>
|
45 |
+
<td colspan="2" align="right" style="padding:3px 9px"><?php echo Mage::helper('sales')->__('Shipping Amount') ?></td>
|
46 |
+
<td align="right" style="padding:3px 9px"><?php echo $_order->formatPrice($_order->getShippingAmount()) ?></td>
|
47 |
+
</tr>
|
48 |
+
<?php endif; ?>
|
49 |
+
<?php if ($_order->getTaxAmount() > 0): ?>
|
50 |
+
<tr>
|
51 |
+
<td></td>
|
52 |
+
<td colspan="2" align="right" style="padding:3px 9px"><?php echo Mage::helper('sales')->__('Tax Amount') ?></td>
|
53 |
+
<td align="right" style="padding:3px 9px"><?php echo $_order->formatPrice($_order->getTaxAmount()) ?></td>
|
54 |
+
</tr>
|
55 |
+
<?php endif; ?>
|
56 |
+
<tr bgcolor="#DEE5E8">
|
57 |
+
<td></td>
|
58 |
+
<td colspan="2" align="right" style="padding:3px 9px"><strong><big><?php echo Mage::helper('sales')->__('Grand Total') ?></big></strong></td>
|
59 |
+
<td align="right" style="padding:6px 9px"><strong><big><?php echo $_order->formatPrice($_order->getGrandTotal()) ?></big></strong></td>
|
60 |
+
</tr>
|
61 |
+
</tfoot>
|
62 |
+
</table>
|
63 |
+
<?php echo $this->getCommentsHtml($_creditmemo)?>
|
64 |
+
<?php endforeach; ?>
|
app/design/frontend/base/default/template/connector/sales/order/info.phtml
ADDED
@@ -0,0 +1,58 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php $_order = $this->getOrder() ?>
|
2 |
+
<?php echo $this->getMessagesBlock()->getGroupedHtml() ?>
|
3 |
+
|
4 |
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
5 |
+
<html lang="en">
|
6 |
+
<head>
|
7 |
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
8 |
+
<title>Email Preview</title>
|
9 |
+
</head>
|
10 |
+
<body>
|
11 |
+
<style type="text/css">
|
12 |
+
body,td { color:#2f2f2f; font:11px/1.35em Verdana, Arial, Helvetica, sans-serif; }
|
13 |
+
</style>
|
14 |
+
<body style="background:#F6F6F6; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px; margin:0; padding:0;">
|
15 |
+
<div style="background:#F6F6F6; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px; margin:0; padding:0;">
|
16 |
+
<table cellspacing="0" cellpadding="0" border="0" width="100%">
|
17 |
+
<tr>
|
18 |
+
<td align="center" valign="top" style="padding:20px 0 20px 0">
|
19 |
+
<!-- [ header starts here] -->
|
20 |
+
<table bgcolor="#FFFFFF" cellspacing="0" cellpadding="10" border="0" width="650" style="border:1px solid #E0E0E0;">
|
21 |
+
|
22 |
+
<tr>
|
23 |
+
<td>
|
24 |
+
<table cellspacing="0" cellpadding="0" border="0" width="650">
|
25 |
+
<thead>
|
26 |
+
<tr>
|
27 |
+
<th align="left" width="325" bgcolor="#EAEAEA" style="font-size:13px; padding:5px 9px 6px 9px; line-height:1em;">Billing Information:</th>
|
28 |
+
<th width="10"></th>
|
29 |
+
<th align="left" width="325" bgcolor="#EAEAEA" style="font-size:13px; padding:5px 9px 6px 9px; line-height:1em;">Payment Method:</th>
|
30 |
+
</tr>
|
31 |
+
</thead>
|
32 |
+
<tbody>
|
33 |
+
<tr>
|
34 |
+
<td valign="top" style="font-size:12px; padding:7px 9px 9px 9px; border-left:1px solid #EAEAEA; border-bottom:1px solid #EAEAEA; border-right:1px solid #EAEAEA;">
|
35 |
+
<?php echo $_order->getBillingAddress()->format('html') ?>
|
36 |
+
|
37 |
+
</td>
|
38 |
+
<td> </td>
|
39 |
+
<td valign="top" style="font-size:12px; padding:7px 9px 9px 9px; border-left:1px solid #EAEAEA; border-bottom:1px solid #EAEAEA; border-right:1px solid #EAEAEA;">
|
40 |
+
|
41 |
+
<?php echo $this->getPaymentInfoHtml() ?>
|
42 |
+
|
43 |
+
</td>
|
44 |
+
</tr>
|
45 |
+
</tbody>
|
46 |
+
</table>
|
47 |
+
</br>
|
48 |
+
<?php echo $this->getChildHtml('sales.order.creditmemo');?>
|
49 |
+
</td>
|
50 |
+
</tr>
|
51 |
+
</table>
|
52 |
+
</td>
|
53 |
+
</tr>
|
54 |
+
</table>
|
55 |
+
</div>
|
56 |
+
</body>
|
57 |
+
</html>
|
58 |
+
|
app/design/frontend/base/default/template/connector/sales/order/invoice.phtml
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
<?php echo $this->getChildHtml('invoice_items');
|
app/design/frontend/base/default/template/connector/sales/order/invoice/items.phtml
ADDED
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php $_order = $this->getOrder() ?>
|
2 |
+
|
3 |
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
4 |
+
<html lang="en">
|
5 |
+
<head>
|
6 |
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
7 |
+
<title>Email Preview</title>
|
8 |
+
</head>
|
9 |
+
<body>
|
10 |
+
<style type="text/css">
|
11 |
+
body,td { color:#2f2f2f; font:11px/1.35em Verdana, Arial, Helvetica, sans-serif; }
|
12 |
+
</style>
|
13 |
+
<body style="background:#F6F6F6; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px; margin:0; padding:0;">
|
14 |
+
<div style="background:#F6F6F6; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px; margin:0; padding:0;">
|
15 |
+
<table cellspacing="0" cellpadding="0" border="0" width="100%">
|
16 |
+
<tr>
|
17 |
+
<td align="center" valign="top" style="padding:20px 0 20px 0">
|
18 |
+
<!-- [ header starts here] -->
|
19 |
+
<table bgcolor="#FFFFFF" cellspacing="0" cellpadding="10" border="0" width="650" style="border:1px solid #E0E0E0;">
|
20 |
+
|
21 |
+
<tr>
|
22 |
+
<td>
|
23 |
+
<?php foreach ($_order->getInvoiceCollection() as $_invoice): ?>
|
24 |
+
<h2 class="sub-title"><?php echo $this->__('Invoice #') ?><?php echo $_invoice->getIncrementId(); ?></h2>
|
25 |
+
<h3 class="table-caption"><?php echo $this->__('Items Invoiced') ?></h3>
|
26 |
+
<table cellspacing="0" cellpadding="0" border="0" width="650">
|
27 |
+
<thead>
|
28 |
+
<tr>
|
29 |
+
<th align="left" width="325" bgcolor="#EAEAEA" style="font-size:13px; padding:5px 9px 6px 9px; line-height:1em;"><?php echo $this->__('Product Name');?></th>
|
30 |
+
<th align="left" width="325" bgcolor="#EAEAEA" style="font-size:13px; padding:5px 9px 6px 9px; line-height:1em;"><?php echo $this->__('SKU');?></th>
|
31 |
+
<th align="left" width="325" bgcolor="#EAEAEA" style="font-size:13px; padding:5px 9px 6px 9px; line-height:1em;"><?php echo $this->__('Price');?></th>
|
32 |
+
<th align="left" width="325" bgcolor="#EAEAEA" style="font-size:13px; padding:5px 9px 6px 9px; line-height:1em;"><?php echo $this->__('Qty Invoiced');?></th>
|
33 |
+
<th align="left" width="325" bgcolor="#EAEAEA" style="font-size:13px; padding:5px 9px 6px 9px; line-height:1em;"><?php echo $this->__('Subtotal');?></th>
|
34 |
+
</tr>
|
35 |
+
</thead>
|
36 |
+
|
37 |
+
<?php $_items = $_invoice->getAllItems(); ?>
|
38 |
+
<?php $_count = count($_items) ?>
|
39 |
+
<?php foreach ($_items as $_item): ?>
|
40 |
+
<?php if ($_item->getOrderItem()->getParentItem()) continue; ?>
|
41 |
+
<tbody>
|
42 |
+
<?php echo $this->getItemHtml($_item) ?>
|
43 |
+
</tbody>
|
44 |
+
<?php endforeach; ?>
|
45 |
+
<tfoot>
|
46 |
+
<?php //echo $this->getInvoiceTotalsHtml($_invoice)?>
|
47 |
+
</tfoot>
|
48 |
+
</table>
|
49 |
+
<?php echo $this->getInvoiceCommentsHtml($_invoice)?>
|
50 |
+
<?php endforeach; ?>
|
51 |
+
|
52 |
+
</tr>
|
53 |
+
</table>
|
54 |
+
</td>
|
55 |
+
</tr>
|
56 |
+
</table>
|
57 |
+
</div>
|
58 |
+
</body>
|
59 |
+
</html>
|
60 |
+
|
61 |
+
|
app/design/frontend/base/default/template/connector/sales/order/invoice/renderer/default.phtml
ADDED
@@ -0,0 +1,273 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php $_item = $this->getItem() ?>
|
2 |
+
<?php $_order = $this->getItem()->getOrderItem()->getOrder() ?>
|
3 |
+
<tr class="border" id="order-item-row-<?php echo $_item->getId() ?>">
|
4 |
+
<td><h4 class="product-name"><?php echo $this->htmlEscape($_item->getName()) ?></h4>
|
5 |
+
<?php if($_options = $this->getItemOptions()): ?>
|
6 |
+
<dl class="item-options">
|
7 |
+
<?php foreach ($_options as $_option) : ?>
|
8 |
+
<dt><?php echo $this->htmlEscape($_option['label']) ?></dt>
|
9 |
+
<?php if (!$this->getPrintStatus()): ?>
|
10 |
+
<?php $_formatedOptionValue = $this->getFormatedOptionValue($_option) ?>
|
11 |
+
<dd<?php if (isset($_formatedOptionValue['full_view'])): ?> class="truncated"<?php endif; ?>>
|
12 |
+
<?php echo $_formatedOptionValue['value'] ?>
|
13 |
+
<?php if (isset($_formatedOptionValue['full_view'])): ?>
|
14 |
+
<div class="truncated_full_value">
|
15 |
+
<dl class="item-options">
|
16 |
+
<dt><?php echo $this->htmlEscape($_option['label']) ?></dt>
|
17 |
+
<dd><?php echo $_formatedOptionValue['full_view'] ?></dd>
|
18 |
+
</dl>
|
19 |
+
</div>
|
20 |
+
<?php endif; ?>
|
21 |
+
</dd>
|
22 |
+
<?php else: ?>
|
23 |
+
<dd><?php echo $this->htmlEscape( (isset($_option['print_value']) ? $_option['print_value'] : $_option['value']) ) ?></dd>
|
24 |
+
<?php endif; ?>
|
25 |
+
<?php endforeach; ?>
|
26 |
+
</dl>
|
27 |
+
<?php endif; ?>
|
28 |
+
<?php $addInfoBlock = $this->getProductAdditionalInformationBlock(); ?>
|
29 |
+
<?php if ($addInfoBlock) :?>
|
30 |
+
<?php echo $addInfoBlock->setItem($_item->getOrderItem())->toHtml(); ?>
|
31 |
+
<?php endif; ?>
|
32 |
+
<?php echo $this->htmlEscape($_item->getDescription()) ?>
|
33 |
+
<?php if($this->helper('giftmessage/message')->getIsMessagesAvailable('order_item', $_item->getOrderItem()) && $_item->getGiftMessageId()): ?>
|
34 |
+
<a href="#" id="order-item-gift-message-link-<?php echo $_item->getId() ?>" class="gift-message-link" onclick="return giftMessageToogle('<?php echo $_item->getId() ?>')"><?php echo $this->__('Gift Message') ?></a>
|
35 |
+
<?php endif; ?>
|
36 |
+
</td>
|
37 |
+
<td><?php echo $this->htmlEscape(Mage::helper('core/string')->splitInjection($this->getSku())) ?></td>
|
38 |
+
<td class="a-right">
|
39 |
+
<?php if ($this->helper('tax')->displaySalesBothPrices() || $this->helper('tax')->displaySalesPriceExclTax()): ?>
|
40 |
+
<span class="price-excl-tax">
|
41 |
+
<?php if ($this->helper('tax')->displaySalesBothPrices()): ?>
|
42 |
+
<?php if (!Mage::helper('weee')->typeOfDisplay($this->getItem(), array(1, 4), 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
|
43 |
+
<span class="cart-price">
|
44 |
+
<?php endif; ?>
|
45 |
+
<span class="label"><?php echo $this->__('Excl. Tax'); ?>:</span>
|
46 |
+
<?php if (!Mage::helper('weee')->typeOfDisplay($this->getItem(), array(1, 4), 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
|
47 |
+
</span>
|
48 |
+
<?php endif; ?>
|
49 |
+
<?php endif; ?>
|
50 |
+
<?php if (Mage::helper('weee')->typeOfDisplay($this->getItem(), array(1, 4), 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
|
51 |
+
<span class="cart-tax-total" onclick="taxToggle('eunit-item-tax-details<?php echo $this->getItem()->getId(); ?>', this, 'cart-tax-total-expanded');">
|
52 |
+
<?php else: ?>
|
53 |
+
<span class="cart-price">
|
54 |
+
<?php endif; ?>
|
55 |
+
|
56 |
+
<?php if (Mage::helper('weee')->typeOfDisplay($this->getItem(), array(0, 1, 4), 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
|
57 |
+
<?php echo $this->getOrder()->formatPrice($this->getItem()->getPrice()+$this->getItem()->getWeeeTaxAppliedAmount()+$this->getItem()->getWeeeTaxDisposition()); ?>
|
58 |
+
<?php else: ?>
|
59 |
+
<?php echo $this->getOrder()->formatPrice($this->getItem()->getPrice()) ?>
|
60 |
+
<?php endif; ?>
|
61 |
+
|
62 |
+
</span>
|
63 |
+
|
64 |
+
|
65 |
+
<?php if (Mage::helper('weee')->getApplied($this->getItem())): ?>
|
66 |
+
|
67 |
+
<span class="cart-tax-info" id="eunit-item-tax-details<?php echo $this->getItem()->getId(); ?>" style="display:none;">
|
68 |
+
<?php if (Mage::helper('weee')->typeOfDisplay($this->getItem(), 1, 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
|
69 |
+
<small>
|
70 |
+
<?php foreach (Mage::helper('weee')->getApplied($this->getItem()) as $tax): ?>
|
71 |
+
<span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->getOrder()->formatPrice($tax['amount']); ?></span>
|
72 |
+
<?php endforeach; ?>
|
73 |
+
</small>
|
74 |
+
<?php elseif (Mage::helper('weee')->typeOfDisplay($this->getItem(), 2, 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
|
75 |
+
<?php foreach (Mage::helper('weee')->getApplied($this->getItem()) as $tax): ?>
|
76 |
+
<span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo $this->getOrder()->formatPrice($tax['amount_incl_tax']); ?></small></span>
|
77 |
+
<?php endforeach; ?>
|
78 |
+
<?php elseif (Mage::helper('weee')->typeOfDisplay($this->getItem(), 4, 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
|
79 |
+
<small>
|
80 |
+
<?php foreach (Mage::helper('weee')->getApplied($this->getItem()) as $tax): ?>
|
81 |
+
<span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->getOrder()->formatPrice($tax['amount_incl_tax']); ?></span>
|
82 |
+
<?php endforeach; ?>
|
83 |
+
</small>
|
84 |
+
<?php endif; ?>
|
85 |
+
</span>
|
86 |
+
|
87 |
+
<?php if (Mage::helper('weee')->typeOfDisplay($this->getItem(), 2, 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
|
88 |
+
<span class="cart-tax-total" onclick="taxToggle('eunit-item-tax-details<?php echo $this->getItem()->getId(); ?>', this, 'cart-tax-total-expanded');">
|
89 |
+
<span class="nobr"><?php echo Mage::helper('weee')->__('Total'); ?>:<br /> <?php echo $this->getOrder()->formatPrice($this->getItem()->getPrice()+$this->getItem()->getWeeeTaxAppliedAmount()+$this->getItem()->getWeeeTaxDisposition()); ?></span>
|
90 |
+
</span>
|
91 |
+
<?php endif; ?>
|
92 |
+
<?php endif; ?>
|
93 |
+
</span>
|
94 |
+
<br />
|
95 |
+
<?php endif; ?>
|
96 |
+
<?php if ($this->helper('tax')->displaySalesBothPrices() || $this->helper('tax')->displaySalesPriceInclTax()): ?>
|
97 |
+
<span class="price-incl-tax">
|
98 |
+
<?php if ($this->helper('tax')->displaySalesBothPrices()): ?>
|
99 |
+
<?php if (!Mage::helper('weee')->typeOfDisplay($this->getItem(), array(1, 4), 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
|
100 |
+
<span class="cart-price">
|
101 |
+
<?php endif; ?>
|
102 |
+
<span class="label"><?php echo $this->__('Incl. Tax'); ?>:</span>
|
103 |
+
<?php if (!Mage::helper('weee')->typeOfDisplay($this->getItem(), array(1, 4), 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
|
104 |
+
</span>
|
105 |
+
<?php endif; ?>
|
106 |
+
<?php endif; ?>
|
107 |
+
<?php $_incl = $this->helper('checkout')->getPriceInclTax($this->getItem()); ?>
|
108 |
+
<?php if (Mage::helper('weee')->typeOfDisplay($this->getItem(), array(1, 4), 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
|
109 |
+
<span class="cart-tax-total" onclick="taxToggle('unit-item-tax-details<?php echo $this->getItem()->getId(); ?>', this, 'cart-tax-total-expanded');">
|
110 |
+
<?php else: ?>
|
111 |
+
<span class="cart-price">
|
112 |
+
<?php endif; ?>
|
113 |
+
|
114 |
+
<?php if (Mage::helper('weee')->typeOfDisplay($this->getItem(), array(0, 1, 4), 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
|
115 |
+
<?php echo $this->getOrder()->formatPrice($_incl+$this->getItem()->getWeeeTaxAppliedAmount()); ?>
|
116 |
+
<?php else: ?>
|
117 |
+
<?php echo $this->getOrder()->formatPrice($_incl-$this->getItem()->getWeeeTaxDisposition()) ?>
|
118 |
+
<?php endif; ?>
|
119 |
+
|
120 |
+
</span>
|
121 |
+
|
122 |
+
|
123 |
+
<?php if (Mage::helper('weee')->getApplied($this->getItem())): ?>
|
124 |
+
|
125 |
+
<span class="cart-tax-info" id="unit-item-tax-details<?php echo $this->getItem()->getId(); ?>" style="display:none;">
|
126 |
+
<?php if (Mage::helper('weee')->typeOfDisplay($this->getItem(), 1, 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
|
127 |
+
<small>
|
128 |
+
<?php foreach (Mage::helper('weee')->getApplied($this->getItem()) as $tax): ?>
|
129 |
+
<span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->getOrder()->formatPrice($tax['amount']); ?></span>
|
130 |
+
<?php endforeach; ?>
|
131 |
+
</small>
|
132 |
+
<?php elseif (Mage::helper('weee')->typeOfDisplay($this->getItem(), 2, 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
|
133 |
+
<?php foreach (Mage::helper('weee')->getApplied($this->getItem()) as $tax): ?>
|
134 |
+
<span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo $this->getOrder()->formatPrice($tax['amount_incl_tax']); ?></small></span>
|
135 |
+
<?php endforeach; ?>
|
136 |
+
<?php elseif (Mage::helper('weee')->typeOfDisplay($this->getItem(), 4, 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
|
137 |
+
<small>
|
138 |
+
<?php foreach (Mage::helper('weee')->getApplied($this->getItem()) as $tax): ?>
|
139 |
+
<span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->getOrder()->formatPrice($tax['amount_incl_tax']); ?></span>
|
140 |
+
<?php endforeach; ?>
|
141 |
+
</small>
|
142 |
+
<?php endif; ?>
|
143 |
+
</span>
|
144 |
+
|
145 |
+
<?php if (Mage::helper('weee')->typeOfDisplay($this->getItem(), 2, 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
|
146 |
+
<span class="cart-tax-total" onclick="taxToggle('unit-item-tax-details<?php echo $this->getItem()->getId(); ?>', this, 'cart-tax-total-expanded');">
|
147 |
+
<span class="nobr"><?php echo Mage::helper('weee')->__('Total incl. tax'); ?>:<br /> <?php echo $this->getOrder()->formatPrice($_incl+$this->getItem()->getWeeeTaxAppliedAmount()); ?></span>
|
148 |
+
</span>
|
149 |
+
<?php endif; ?>
|
150 |
+
<?php endif; ?>
|
151 |
+
</span>
|
152 |
+
<?php endif; ?>
|
153 |
+
</td>
|
154 |
+
<td class="a-center"><?php echo $_item->getQty()*1 ?> </td>
|
155 |
+
<td class="a-right">
|
156 |
+
<?php if ($this->helper('tax')->displaySalesBothPrices() || $this->helper('tax')->displaySalesPriceExclTax()): ?>
|
157 |
+
<span class="price-excl-tax">
|
158 |
+
<?php if ($this->helper('tax')->displaySalesBothPrices()): ?>
|
159 |
+
<?php if (!Mage::helper('weee')->typeOfDisplay($this->getItem(), array(1, 4), 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
|
160 |
+
<span class="cart-price">
|
161 |
+
<?php endif; ?>
|
162 |
+
<span class="label"><?php echo $this->__('Excl. Tax'); ?>:</span>
|
163 |
+
<?php if (!Mage::helper('weee')->typeOfDisplay($this->getItem(), array(1, 4), 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
|
164 |
+
</span>
|
165 |
+
<?php endif; ?>
|
166 |
+
<?php endif; ?>
|
167 |
+
<?php if (Mage::helper('weee')->typeOfDisplay($this->getItem(), array(1, 4), 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
|
168 |
+
<span class="cart-tax-total" onclick="taxToggle('esubtotal-item-tax-details<?php echo $this->getItem()->getId(); ?>', this, 'cart-tax-total-expanded');">
|
169 |
+
<?php else: ?>
|
170 |
+
<span class="cart-price">
|
171 |
+
<?php endif; ?>
|
172 |
+
|
173 |
+
<?php if (Mage::helper('weee')->typeOfDisplay($this->getItem(), array(0, 1, 4), 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
|
174 |
+
<?php echo $this->getOrder()->formatPrice($this->getItem()->getRowTotal()+$this->getItem()->getWeeeTaxAppliedRowAmount()+$this->getItem()->getWeeeTaxRowDisposition()); ?>
|
175 |
+
<?php else: ?>
|
176 |
+
<?php echo $this->getOrder()->formatPrice($this->getItem()->getRowTotal()) ?>
|
177 |
+
<?php endif; ?>
|
178 |
+
|
179 |
+
</span>
|
180 |
+
|
181 |
+
|
182 |
+
<?php if (Mage::helper('weee')->getApplied($this->getItem())): ?>
|
183 |
+
|
184 |
+
<span class="cart-tax-info" id="esubtotal-item-tax-details<?php echo $this->getItem()->getId(); ?>" style="display:none;">
|
185 |
+
<?php if (Mage::helper('weee')->typeOfDisplay($this->getItem(), 1, 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
|
186 |
+
<small>
|
187 |
+
<?php foreach (Mage::helper('weee')->getApplied($this->getItem()) as $tax): ?>
|
188 |
+
<span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->getOrder()->formatPrice($tax['row_amount']); ?></span>
|
189 |
+
<?php endforeach; ?>
|
190 |
+
</small>
|
191 |
+
<?php elseif (Mage::helper('weee')->typeOfDisplay($this->getItem(), 2, 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
|
192 |
+
<?php foreach (Mage::helper('weee')->getApplied($this->getItem()) as $tax): ?>
|
193 |
+
<span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo $this->getOrder()->formatPrice($tax['row_amount_incl_tax']); ?></small></span>
|
194 |
+
<?php endforeach; ?>
|
195 |
+
<?php elseif (Mage::helper('weee')->typeOfDisplay($this->getItem(), 4, 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
|
196 |
+
<small>
|
197 |
+
<?php foreach (Mage::helper('weee')->getApplied($this->getItem()) as $tax): ?>
|
198 |
+
<span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->getOrder()->formatPrice($tax['row_amount_incl_tax']); ?></span>
|
199 |
+
<?php endforeach; ?>
|
200 |
+
</small>
|
201 |
+
<?php endif; ?>
|
202 |
+
</span>
|
203 |
+
|
204 |
+
<?php if (Mage::helper('weee')->typeOfDisplay($this->getItem(), 2, 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
|
205 |
+
<span class="cart-tax-total" onclick="taxToggle('esubtotal-item-tax-details<?php echo $this->getItem()->getId(); ?>', this, 'cart-tax-total-expanded');">
|
206 |
+
<span class="nobr"><?php echo Mage::helper('weee')->__('Total'); ?>:<br /> <?php echo $this->getOrder()->formatPrice($this->getItem()->getRowTotal()+$this->getItem()->getWeeeTaxAppliedRowAmount()+$this->getItem()->getWeeeTaxRowDisposition()); ?></span>
|
207 |
+
</span>
|
208 |
+
<?php endif; ?>
|
209 |
+
<?php endif; ?>
|
210 |
+
</span>
|
211 |
+
<br />
|
212 |
+
<?php endif; ?>
|
213 |
+
<?php if ($this->helper('tax')->displaySalesBothPrices() || $this->helper('tax')->displaySalesPriceInclTax()): ?>
|
214 |
+
<span class="price-incl-tax">
|
215 |
+
<?php if ($this->helper('tax')->displaySalesBothPrices()): ?>
|
216 |
+
<?php if (!Mage::helper('weee')->typeOfDisplay($this->getItem(), array(1, 4), 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
|
217 |
+
<span class="cart-price">
|
218 |
+
<?php endif; ?>
|
219 |
+
<span class="label"><?php echo $this->__('Incl. Tax'); ?>:</span>
|
220 |
+
<?php if (!Mage::helper('weee')->typeOfDisplay($this->getItem(), array(1, 4), 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
|
221 |
+
</span>
|
222 |
+
<?php endif; ?>
|
223 |
+
<?php endif; ?>
|
224 |
+
<?php $_incl = $this->helper('checkout')->getSubtotalInclTax($this->getItem()); ?>
|
225 |
+
<?php if (Mage::helper('weee')->typeOfDisplay($this->getItem(), array(1, 4), 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
|
226 |
+
<span class="cart-tax-total" onclick="taxToggle('subtotal-item-tax-details<?php echo $this->getItem()->getId(); ?>', this, 'cart-tax-total-expanded');">
|
227 |
+
<?php else: ?>
|
228 |
+
<span class="cart-price">
|
229 |
+
<?php endif; ?>
|
230 |
+
<?php if (Mage::helper('weee')->typeOfDisplay($this->getItem(), array(0, 1, 4), 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
|
231 |
+
<?php echo $this->getOrder()->formatPrice($_incl+$this->getItem()->getWeeeTaxAppliedRowAmount()); ?>
|
232 |
+
<?php else: ?>
|
233 |
+
<?php echo $this->getOrder()->formatPrice($_incl-$this->getItem()->getWeeeTaxRowDisposition()) ?>
|
234 |
+
<?php endif; ?>
|
235 |
+
|
236 |
+
</span>
|
237 |
+
|
238 |
+
|
239 |
+
<?php if (Mage::helper('weee')->getApplied($this->getItem())): ?>
|
240 |
+
|
241 |
+
<span class="cart-tax-info" id="subtotal-item-tax-details<?php echo $this->getItem()->getId(); ?>" style="display:none;">
|
242 |
+
<?php if (Mage::helper('weee')->typeOfDisplay($this->getItem(), 1, 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
|
243 |
+
<small>
|
244 |
+
<?php foreach (Mage::helper('weee')->getApplied($this->getItem()) as $tax): ?>
|
245 |
+
<span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->getOrder()->formatPrice($tax['row_amount']); ?></span>
|
246 |
+
<?php endforeach; ?>
|
247 |
+
</small>
|
248 |
+
<?php elseif (Mage::helper('weee')->typeOfDisplay($this->getItem(), 2, 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
|
249 |
+
<?php foreach (Mage::helper('weee')->getApplied($this->getItem()) as $tax): ?>
|
250 |
+
<span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo $this->getOrder()->formatPrice($tax['row_amount_incl_tax']); ?></small></span>
|
251 |
+
<?php endforeach; ?>
|
252 |
+
<?php elseif (Mage::helper('weee')->typeOfDisplay($this->getItem(), 4, 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
|
253 |
+
<small>
|
254 |
+
<?php foreach (Mage::helper('weee')->getApplied($this->getItem()) as $tax): ?>
|
255 |
+
<span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->getOrder()->formatPrice($tax['row_amount_incl_tax']); ?></span>
|
256 |
+
<?php endforeach; ?>
|
257 |
+
</small>
|
258 |
+
<?php endif; ?>
|
259 |
+
</span>
|
260 |
+
|
261 |
+
<?php if (Mage::helper('weee')->typeOfDisplay($this->getItem(), 2, 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
|
262 |
+
<span class="cart-tax-total" onclick="taxToggle('subtotal-item-tax-details<?php echo $this->getItem()->getId(); ?>', this, 'cart-tax-total-expanded');">
|
263 |
+
<span class="nobr"><?php echo Mage::helper('weee')->__('Total incl. tax'); ?>:<br /> <?php echo $this->getOrder()->formatPrice($_incl+$this->getItem()->getWeeeTaxAppliedRowAmount()); ?></span>
|
264 |
+
</span>
|
265 |
+
<?php endif; ?>
|
266 |
+
<?php endif; ?>
|
267 |
+
|
268 |
+
|
269 |
+
|
270 |
+
</span>
|
271 |
+
<?php endif; ?>
|
272 |
+
</td>
|
273 |
+
</tr>
|
app/design/frontend/base/default/template/connector/sales/order/new.phtml
ADDED
@@ -0,0 +1,211 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
$_order = $this->getNewOrder();
|
3 |
+
$storeId = Mage::app()->getStore()->getId();
|
4 |
+
$paymentBlock = Mage::helper('payment')->getInfoBlock($_order->getPayment())
|
5 |
+
->setIsSecureMode(true);
|
6 |
+
$paymentBlock->getMethod()->setStore($storeId);
|
7 |
+
$paymentBlockHtml = $paymentBlock->toHtml();
|
8 |
+
?>
|
9 |
+
<!--body,td { color:#2f2f2f; font:11px/1.35em Verdana, Arial, Helvetica, sans-serif; }-->
|
10 |
+
|
11 |
+
<body style="background:#F6F6F6; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px; margin:0; padding:0;">
|
12 |
+
<div style="background:#F6F6F6; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px; margin:0; padding:0;">
|
13 |
+
<table cellspacing="0" cellpadding="0" border="0" width="100%">
|
14 |
+
<tr>
|
15 |
+
<td align="center" valign="top" style="padding:20px 0 20px 0">
|
16 |
+
<table bgcolor="#FFFFFF" cellspacing="0" cellpadding="10" border="0" width="650" style="border:1px solid #E0E0E0;">
|
17 |
+
|
18 |
+
<tr>
|
19 |
+
<td>
|
20 |
+
<table cellspacing="0" cellpadding="0" border="0" width="650">
|
21 |
+
<thead>
|
22 |
+
<tr>
|
23 |
+
<th align="left" width="325" bgcolor="#EAEAEA" style="font-size:13px; padding:5px 9px 6px 9px; line-height:1em;">Billing Information:</th>
|
24 |
+
<th width="10"></th>
|
25 |
+
<th align="left" width="325" bgcolor="#EAEAEA" style="font-size:13px; padding:5px 9px 6px 9px; line-height:1em;">Payment Method:</th>
|
26 |
+
</tr>
|
27 |
+
</thead>
|
28 |
+
<tbody>
|
29 |
+
<tr>
|
30 |
+
<td valign="top" style="font-size:12px; padding:7px 9px 9px 9px; border-left:1px solid #EAEAEA; border-bottom:1px solid #EAEAEA; border-right:1px solid #EAEAEA;">
|
31 |
+
<?php echo $_order->getBillingAddress()->format('html');?>
|
32 |
+
</td>
|
33 |
+
<td> </td>
|
34 |
+
<td valign="top" style="font-size:12px; padding:7px 9px 9px 9px; border-left:1px solid #EAEAEA; border-bottom:1px solid #EAEAEA; border-right:1px solid #EAEAEA;">
|
35 |
+
<?php echo $paymentBlockHtml;?>
|
36 |
+
</td>
|
37 |
+
</tr>
|
38 |
+
</tbody>
|
39 |
+
</table>
|
40 |
+
<br/>
|
41 |
+
<?php
|
42 |
+
|
43 |
+
if($_order->getIsNotVirtual()):?>
|
44 |
+
|
45 |
+
<table cellspacing="0" cellpadding="0" border="0" width="650">
|
46 |
+
<thead>
|
47 |
+
<tr>
|
48 |
+
<th align="left" width="325" bgcolor="#EAEAEA" style="font-size:13px; padding:5px 9px 6px 9px; line-height:1em;">Shipping Information:</th>
|
49 |
+
<th width="10"></th>
|
50 |
+
<th align="left" width="325" bgcolor="#EAEAEA" style="font-size:13px; padding:5px 9px 6px 9px; line-height:1em;">Shipping Method:</th>
|
51 |
+
</tr>
|
52 |
+
</thead>
|
53 |
+
<tbody>
|
54 |
+
<tr>
|
55 |
+
<td valign="top" style="font-size:12px; padding:7px 9px 9px 9px; border-left:1px solid #EAEAEA; border-bottom:1px solid #EAEAEA; border-right:1px solid #EAEAEA;">
|
56 |
+
<?php echo $_order->getShippingAddress()->format('html');?>
|
57 |
+
|
58 |
+
</td>
|
59 |
+
<td> </td>
|
60 |
+
<td valign="top" style="font-size:12px; padding:7px 9px 9px 9px; border-left:1px solid #EAEAEA; border-bottom:1px solid #EAEAEA; border-right:1px solid #EAEAEA;">
|
61 |
+
<?php echo $_order->getShippingDescription();?>
|
62 |
+
|
63 |
+
</td>
|
64 |
+
</tr>
|
65 |
+
</tbody>
|
66 |
+
</table>
|
67 |
+
<br/>
|
68 |
+
<?php endif;?>
|
69 |
+
<table cellspacing="0" cellpadding="0" border="0" width="650">
|
70 |
+
<thead>
|
71 |
+
<tr>
|
72 |
+
<th align="left" width="325" bgcolor="#EAEAEA" style="font-size:13px; padding:5px 9px 6px 9px; line-height:1em;">Item</th>
|
73 |
+
<th align="left" width="325" bgcolor="#EAEAEA" style="font-size:13px; padding:5px 9px 6px 9px; line-height:1em;">SKU</th>
|
74 |
+
<th align="left" width="325" bgcolor="#EAEAEA" style="font-size:13px; padding:5px 9px 6px 9px; line-height:1em;">Qty</th>
|
75 |
+
<th align="left" width="325" bgcolor="#EAEAEA" style="font-size:13px; padding:5px 9px 6px 9px; line-height:1em;">Subtotal</th>
|
76 |
+
</tr>
|
77 |
+
</thead>
|
78 |
+
<tbody>
|
79 |
+
|
80 |
+
|
81 |
+
<?php $i=0; foreach ($_order->getAllItems() as $_item): $i++ ?>
|
82 |
+
<?php
|
83 |
+
if($_item->getParentItemId()) continue;?>
|
84 |
+
<tr <?php echo $i%2?'bgcolor="#eeeded"':'' ?>>
|
85 |
+
<td valign="top" style="font-size:12px; padding:7px 9px 9px 9px; border-left:1px solid #EAEAEA; border-bottom:1px solid #EAEAEA; border-right:1px solid #EAEAEA;" width="70%"><?php echo $_item->getName() ?></td>
|
86 |
+
<td valign="top" style="font-size:12px; padding:7px 9px 9px 9px; border-left:1px solid #EAEAEA; border-bottom:1px solid #EAEAEA; border-right:1px solid #EAEAEA;"><?php echo $_item->getSku();?></td>
|
87 |
+
<td valign="top" style="font-size:12px; padding:7px 9px 9px 9px; border-left:1px solid #EAEAEA; border-bottom:1px solid #EAEAEA; border-right:1px solid #EAEAEA;"><?php echo sprintf('%s', $_item->getQtyOrdered()) ?></td>
|
88 |
+
<td valign="top" style="font-size:12px; padding:7px 9px 9px 9px; border-left:1px solid #EAEAEA; border-bottom:1px solid #EAEAEA; border-right:1px solid #EAEAEA;">
|
89 |
+
<?php if ($this->helper('tax')->displayCartPriceExclTax() || $this->helper('tax')->displayCartBothPrices()): ?>
|
90 |
+
<?php if ($this->helper('tax')->displayCartBothPrices()): ?>
|
91 |
+
<span class="label"><?php echo $this->__('Excl. Tax'); ?>:</span>
|
92 |
+
<?php endif; ?>
|
93 |
+
<?php if (Mage::helper('weee')->typeOfDisplay($_item, array(0, 1, 4), 'email', $_order->getStore())): ?>
|
94 |
+
<?php echo $_order->formatPrice($_item->getRowTotal()+$_item->getWeeeTaxAppliedRowAmount()+$_item->getWeeeTaxRowDisposition()); ?>
|
95 |
+
<?php else: ?>
|
96 |
+
<?php echo $_order->formatPrice($_item->getRowTotal()) ?>
|
97 |
+
<?php endif; ?>
|
98 |
+
|
99 |
+
<?php if (Mage::helper('weee')->getApplied($_item)): ?>
|
100 |
+
<br />
|
101 |
+
<?php if (Mage::helper('weee')->typeOfDisplay($_item, 1, 'email', $_order->getStore())): ?>
|
102 |
+
<small>
|
103 |
+
<?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
|
104 |
+
<span class="nobr"><?php echo $tax['title']; ?>: <?php echo $_order->formatPrice($tax['row_amount'],true,true); ?></span><br />
|
105 |
+
<?php endforeach; ?>
|
106 |
+
</small>
|
107 |
+
<?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 2, 'email', $_order->getStore())): ?>
|
108 |
+
<?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
|
109 |
+
<span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo $_order->formatPrice($tax['row_amount_incl_tax'],true,true); ?></small></span><br />
|
110 |
+
<?php endforeach; ?>
|
111 |
+
<?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 4, 'email', $_order->getStore())): ?>
|
112 |
+
<small>
|
113 |
+
<?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
|
114 |
+
<span class="nobr"><?php echo $tax['title']; ?>: <?php echo $_order->formatPrice($tax['row_amount_incl_tax'],true,true); ?></span><br />
|
115 |
+
<?php endforeach; ?>
|
116 |
+
</small>
|
117 |
+
<?php endif; ?>
|
118 |
+
|
119 |
+
<?php if (Mage::helper('weee')->typeOfDisplay($_item, 2, 'email', $_order->getStore())): ?>
|
120 |
+
<br />
|
121 |
+
<span class="nobr"><?php echo Mage::helper('weee')->__('Total'); ?>:<br /> <?php echo $_order->formatPrice($_item->getCalculationPrice()+$_item->getWeeeTaxAppliedRowAmount()+$_item->getWeeeTaxRowDisposition()); ?></span>
|
122 |
+
<?php endif; ?>
|
123 |
+
<?php endif; ?>
|
124 |
+
<?php endif; ?>
|
125 |
+
|
126 |
+
|
127 |
+
<?php if ($this->helper('tax')->displayCartPriceInclTax() || $this->helper('tax')->displayCartBothPrices()): ?>
|
128 |
+
<?php if ($this->helper('tax')->displayCartBothPrices()): ?>
|
129 |
+
<br /><span class="label"><?php echo $this->__('Incl. Tax'); ?>:</span>
|
130 |
+
<?php endif; ?>
|
131 |
+
<?php $_incl = $this->helper('checkout')->getSubtotalInclTax($_item); ?>
|
132 |
+
<?php if (Mage::helper('weee')->typeOfDisplay($_item, array(0, 1, 4), 'email', $_order->getStore())): ?>
|
133 |
+
<?php echo $_order->formatPrice($_incl+$_item->getWeeeTaxAppliedRowAmount()); ?>
|
134 |
+
<?php else: ?>
|
135 |
+
<?php echo $_order->formatPrice($_incl-$_item->getWeeeTaxRowDisposition()) ?>
|
136 |
+
<?php endif; ?>
|
137 |
+
<?php if (Mage::helper('weee')->getApplied($_item)): ?>
|
138 |
+
<br />
|
139 |
+
<?php if (Mage::helper('weee')->typeOfDisplay($_item, 1, 'email', $_order->getStore())): ?>
|
140 |
+
<small>
|
141 |
+
<?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
|
142 |
+
<span class="nobr"><?php echo $tax['title']; ?>: <?php echo $_order->formatPrice($tax['row_amount'],true,true); ?></span><br />
|
143 |
+
<?php endforeach; ?>
|
144 |
+
</small>
|
145 |
+
<?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 2, 'email', $_order->getStore())): ?>
|
146 |
+
<?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
|
147 |
+
<span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo $_order->formatPrice($tax['row_amount_incl_tax'],true,true); ?></small></span><br />
|
148 |
+
<?php endforeach; ?>
|
149 |
+
<?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 4, 'email', $_order->getStore())): ?>
|
150 |
+
<small>
|
151 |
+
<?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
|
152 |
+
<span class="nobr"><?php echo $tax['title']; ?>: <?php echo $_order->formatPrice($tax['row_amount_incl_tax'],true,true); ?></span><br />
|
153 |
+
<?php endforeach; ?>
|
154 |
+
</small>
|
155 |
+
<?php endif; ?>
|
156 |
+
|
157 |
+
<?php if (Mage::helper('weee')->typeOfDisplay($_item, 2, 'email', $_order->getStore())): ?>
|
158 |
+
<span class="nobr"><?php echo Mage::helper('weee')->__('Total incl. tax'); ?>:<br /> <?php echo $_order->formatPrice($_incl+$_item->getWeeeTaxAppliedRowAmount()); ?></span>
|
159 |
+
<?php endif; ?>
|
160 |
+
<?php endif; ?>
|
161 |
+
<?php endif; ?>
|
162 |
+
</td>
|
163 |
+
</tr>
|
164 |
+
<?php endforeach ?>
|
165 |
+
|
166 |
+
</tbody>
|
167 |
+
<tfoot>
|
168 |
+
|
169 |
+
<tr>
|
170 |
+
<td></td>
|
171 |
+
<td colspan="2" align="right" style="padding:3px 9px"><?php echo Mage::helper('sales')->__('Subtotal') ?></td>
|
172 |
+
<td align="right" style="padding:3px 9px"><?php echo $_order->formatPrice($_order->getSubtotal()) ?></td>
|
173 |
+
</tr>
|
174 |
+
<?php
|
175 |
+
|
176 |
+
if ($_order->getDiscountAmount() > 0): ?>
|
177 |
+
<tr>
|
178 |
+
<td></td>
|
179 |
+
<td colspan="2" align="right" style="padding:3px 9px"><?php echo Mage::helper('sales')->__('Discount') ?></td>
|
180 |
+
<td align="right" style="padding:3px 9px"><?php echo $_order->formatPrice($_order->getDiscountAmount()) ?></td>
|
181 |
+
</tr>
|
182 |
+
<?php endif; ?>
|
183 |
+
<?php if ($_order->getShippingAmount() > 0): ?>
|
184 |
+
<tr>
|
185 |
+
<td></td>
|
186 |
+
<td colspan="2" align="right" style="padding:3px 9px"><?php echo Mage::helper('sales')->__('Shipping Amount') ?></td>
|
187 |
+
<td align="right" style="padding:3px 9px"><?php echo $_order->formatPrice($_order->getShippingAmount()) ?></td>
|
188 |
+
</tr>
|
189 |
+
<?php endif; ?>
|
190 |
+
<?php if ($_order->getTaxAmount() > 0): ?>
|
191 |
+
<tr>
|
192 |
+
<td></td>
|
193 |
+
<td colspan="2" align="right" style="padding:3px 9px"><?php echo Mage::helper('sales')->__('Tax Amount') ?></td>
|
194 |
+
<td align="right" style="padding:3px 9px"><?php echo $_order->formatPrice($_order->getTaxAmount()) ?></td>
|
195 |
+
</tr>
|
196 |
+
<?php endif; ?>
|
197 |
+
<tr bgcolor="#DEE5E8">
|
198 |
+
<td></td>
|
199 |
+
<td colspan="2" align="right" style="padding:3px 9px"><strong><big><?php echo Mage::helper('sales')->__('Grand Total') ?></big></strong></td>
|
200 |
+
<td align="right" style="padding:6px 9px"><strong><big><?php echo $_order->formatPrice($_order->getGrandTotal()) ?></big></strong></td>
|
201 |
+
</tr>
|
202 |
+
</tfoot>
|
203 |
+
</table>
|
204 |
+
</td>
|
205 |
+
</tr>
|
206 |
+
</table>
|
207 |
+
</td>
|
208 |
+
</tr>
|
209 |
+
</table>
|
210 |
+
</div>
|
211 |
+
</body>
|
app/design/frontend/base/default/template/connector/sales/order/totals.phtml
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php foreach ($this->getTotals() as $_code => $_total): ?>
|
2 |
+
<?php if ($_total->getBlockName()): ?>
|
3 |
+
<?php echo $this->getChildHtml($_total->getBlockName(), false); ?>
|
4 |
+
<?php else:?>
|
5 |
+
<tr class="<?php echo $_code?>">
|
6 |
+
<td colspan="2" align="right" style="padding:3px 9px">
|
7 |
+
<?php if ($_total->getStrong()):?>
|
8 |
+
<strong><?php echo $this->escapeHtml($_total->getLabel());?></strong>
|
9 |
+
<?php else:?>
|
10 |
+
<?php echo $this->escapeHtml($_total->getLabel());?>
|
11 |
+
<?php endif?>
|
12 |
+
</td>
|
13 |
+
<td align="right" style="padding:3px 9px">
|
14 |
+
<?php if ($_total->getStrong()):?>
|
15 |
+
<strong><?php echo $this->formatValue($_total) ?></strong>
|
16 |
+
<?php else:?>
|
17 |
+
<?php echo $this->formatValue($_total) ?>
|
18 |
+
<?php endif?>
|
19 |
+
</td>
|
20 |
+
</tr>
|
21 |
+
<?php endif?>
|
22 |
+
<?php endforeach?>
|
app/design/frontend/base/default/template/connector/tracking_code.phtml
CHANGED
@@ -1,4 +1,12 @@
|
|
1 |
<?php
|
2 |
-
if(Mage::
|
3 |
-
<script
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
<?php endif;?>
|
1 |
<?php
|
2 |
+
if(Mage::helper('connector')->getPageTrackingEnabled()) :?>
|
3 |
+
<script type="text/javascript">
|
4 |
+
(function(){
|
5 |
+
var connector = document.createElement('script');
|
6 |
+
connector.type = 'text/javascript';
|
7 |
+
connector.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://') + 't.trackedlink.net/_dmpt.js';
|
8 |
+
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(connector, s);
|
9 |
+
})();
|
10 |
+
</script>
|
11 |
+
|
12 |
<?php endif;?>
|
app/design/frontend/base/default/template/page/blank.phtml
CHANGED
@@ -1 +1 @@
|
|
1 |
-
<?php echo $this->getChildHtml('content')
|
1 |
+
<?php echo $this->getChildHtml('content');
|
app/etc/modules/Dotdigitalgroup_Email.xml
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
<modules>
|
4 |
<Dotdigitalgroup_Email>
|
5 |
<active>true</active>
|
6 |
-
<codePool>
|
7 |
</Dotdigitalgroup_Email>
|
8 |
</modules>
|
9 |
</config>
|
3 |
<modules>
|
4 |
<Dotdigitalgroup_Email>
|
5 |
<active>true</active>
|
6 |
+
<codePool>community</codePool>
|
7 |
</Dotdigitalgroup_Email>
|
8 |
</modules>
|
9 |
</config>
|
app/locale/en_US/Dotdigitalgroup_Email.csv
ADDED
@@ -0,0 +1,146 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"EMAIL","EMAIL"
|
2 |
+
"API Credentials","API Credentials"
|
3 |
+
"API Settings","API Settings"
|
4 |
+
"API Username","API Username"
|
5 |
+
"API Password","API Password"
|
6 |
+
"Test API Credentials","Test API Credentials"
|
7 |
+
"*Please save your settings before clicking here! Use this button to test the account with customers campaign 1.","*Please save your settings before clicking here! Use this button to test the account with customers campaign 1."
|
8 |
+
"Sync Settings","Sync Settings"
|
9 |
+
"Customer Data and Subscribers Sync Schedule","Customer Data and Subscribers Sync Schedule"
|
10 |
+
"Enabled","Enabled"
|
11 |
+
"Start Time","Start Time"
|
12 |
+
"Frequency","Frequency"
|
13 |
+
"Suppressed Data Sync Schedule","Suppressed Data Sync Schedule"
|
14 |
+
"Use this button force the suppressed data synchronization to run now","Use this button force the suppressed data synchronization to run now"
|
15 |
+
"Transactional data settings","Transactional data settings"
|
16 |
+
"Order/Basket Information","Order/Basket Information"
|
17 |
+
"Wish List Information","Wish List Information"
|
18 |
+
"Data Mapping","Data Mapping"
|
19 |
+
"Data Field Mapping","Data Field Mapping"
|
20 |
+
"Customer Information","Customer Information"
|
21 |
+
"Title","Title"
|
22 |
+
"First Name","First Name"
|
23 |
+
"Last Name","Last Name"
|
24 |
+
"D.O.B.","D.O.B."
|
25 |
+
"Gender","Gender"
|
26 |
+
"Website Created On","Website Created On"
|
27 |
+
"Store Created On","Store Created On"
|
28 |
+
"Account Created Date","Account Created Date"
|
29 |
+
"Last Logged In Date","Last Logged In Date"
|
30 |
+
"Customer Group","Customer Group"
|
31 |
+
"Address Information","Address Information"
|
32 |
+
"Billing Address Line 1","Billing Address Line 1"
|
33 |
+
"Billing Address Line 2","Billing Address Line 2"
|
34 |
+
"Billing City","Billing City"
|
35 |
+
"Billing State/Region","Billing State/Region"
|
36 |
+
"Billing Country","Billing Country"
|
37 |
+
"Billing Zip/Postcode","Billing Zip/Postcode"
|
38 |
+
"Billing Telephone","Billing Telephone"
|
39 |
+
"Delivery Address Line 1","Delivery Address Line 1"
|
40 |
+
"Delivery Address Line 2","Delivery Address Line 2"
|
41 |
+
"Delivery City","Delivery City"
|
42 |
+
"Delivery State/Region","Delivery State/Region"
|
43 |
+
"Delivery Country","Delivery Country"
|
44 |
+
"Delivery Zip/Postcode","Delivery Zip/Postcode"
|
45 |
+
"Delivery Telephone","Delivery Telephone"
|
46 |
+
"Sales Information","Sales Information"
|
47 |
+
"Total Number of Orders","Total Number of Orders"
|
48 |
+
"Average Order Value","Average Order Value"
|
49 |
+
"Total Spend","Total Spend"
|
50 |
+
"Last Purchase Date","Last Purchase Date"
|
51 |
+
"Last Order No","Last Order No"
|
52 |
+
"Validation Block","Validation Block"
|
53 |
+
"Address Book Mapping","Address Book Mapping"
|
54 |
+
"Add Customers To","Add Customers To"
|
55 |
+
"Add Subscribers To","Add Subscribers To"
|
56 |
+
"Add Guests To","Add Guests To"
|
57 |
+
"ROI & Tracking","ROI & Tracking"
|
58 |
+
"Page Tracking","Page Tracking"
|
59 |
+
"ROI Tracking","ROI Tracking"
|
60 |
+
"Lost Baskets","Lost Baskets"
|
61 |
+
"Lost Baskets Settings","Lost Baskets Settings"
|
62 |
+
"Consider Order Complete For Lost Baskets","Consider Order Complete For Lost Baskets"
|
63 |
+
"Customers","Customers"
|
64 |
+
"Lost Basket 1","Lost Basket 1"
|
65 |
+
"Enabled/Disabled","Enabled/Disabled"
|
66 |
+
"Send After (min)","Send After (min)"
|
67 |
+
"Campaign To Send","Campaign To Send"
|
68 |
+
"Lost Basket 2","Lost Basket 2"
|
69 |
+
"Send After (hrs)","Send After (hrs)"
|
70 |
+
"Lost Basket 3","Lost Basket 3"
|
71 |
+
"Send After (hrs)","Send After (hrs)"
|
72 |
+
"Guests","Guests"
|
73 |
+
"Test","Test"
|
74 |
+
"Test Email","Test Email"
|
75 |
+
"Enter the email for customer to test lost basket, for customer Lost Basket 1","Enter the email for customer to test lost basket, for customer Lost Basket 1"
|
76 |
+
"Use this button force the data synchronization to run now.","Use this button force the data synchronization to run now."
|
77 |
+
"SMS","SMS"
|
78 |
+
"SMS Message 1","SMS Message 1"
|
79 |
+
"Order Status","Order Status"
|
80 |
+
"Message","Message"
|
81 |
+
"SMS Message 2","SMS Message 2"
|
82 |
+
"SMS Message 3","SMS Message 3"
|
83 |
+
"SMS Message 4","SMS Message 4"
|
84 |
+
"Dynamic Content","Dynamic Content"
|
85 |
+
"Related Products","Related Products"
|
86 |
+
"Display Type","Display Type"
|
87 |
+
"Items To Display","Items To Display"
|
88 |
+
"Up Sell Products","Up Sell Products"
|
89 |
+
"Cross Sell Products","Cross Sell Products"
|
90 |
+
"Best Sellers","Best Sellers"
|
91 |
+
"Time Period","Time Period"
|
92 |
+
"Most Viewed","Most Viewed"
|
93 |
+
"Recently Viewed","Recently Viewed"
|
94 |
+
"Manual Product Push","Manual Product Push"
|
95 |
+
"Settings","Settings"
|
96 |
+
"Products","Products"
|
97 |
+
"Comma Separated Product Id's","Comma Separated Product Id's"
|
98 |
+
"Fallback Products","Fallback Products"
|
99 |
+
"Transactional Emails","Transactional Emails"
|
100 |
+
"Test & Setup","Test & Setup"
|
101 |
+
"Email Mapping","Email Mapping"
|
102 |
+
"Order Emails","Order Emails"
|
103 |
+
"New Credit Memo","New Credit Memo"
|
104 |
+
"New Credit Memo Guest","New Credit Memo Guest"
|
105 |
+
"Credit Memo Update","Credit Memo Update"
|
106 |
+
"New Invoice","New Invoice"
|
107 |
+
"Invoice Update","Invoice Update"
|
108 |
+
"New Order","New Order"
|
109 |
+
"Order Update","Order Update"
|
110 |
+
"New Shipment","New Shipment"
|
111 |
+
"Shipment Update","Shipment Update"
|
112 |
+
"Customer Emails","Customer Emails"
|
113 |
+
"Password Remind","Password Remind"
|
114 |
+
"Forgot Password","Forgot Password"
|
115 |
+
"New Account","New Account"
|
116 |
+
"Advanced Settings","Advanced Settings"
|
117 |
+
"Transactional Sync Limit","Transactional Sync Limit"
|
118 |
+
"Historical Import Limit","Historical Import Limit"
|
119 |
+
"External Dynamic Content","External Dynamic Content"
|
120 |
+
"Passcode","Passcode"
|
121 |
+
"Recommended: Set a passcode so that basket contents and coupon codes can only be viewed if the following passcode is sent with the request.","Recommended: Set a passcode so that basket contents and coupon codes can only be viewed if the following passcode is sent with the request."
|
122 |
+
"Baskets Content URL","Baskets Content URL"
|
123 |
+
"Coupon Codes","Coupon Codes"
|
124 |
+
"Coupon Codes URL","Coupon Codes URL"
|
125 |
+
"Related Products URL","Related Products URL"
|
126 |
+
"Up Sell Products URL","Up Sell Products URL"
|
127 |
+
"Cross Sell Products URL","Cross Sell Products URL"
|
128 |
+
"Best Sellers URL","Best Sellers URL"
|
129 |
+
"Most Viewed URL","Most Viewed URL"
|
130 |
+
"Product Push URL","Product Push URL"
|
131 |
+
"New Customer Registration Email","New Customer Registration Email"
|
132 |
+
"New Order Email Confirmation","New Order Email Confirmation"
|
133 |
+
"New Creditmemo","New Creditmemo"
|
134 |
+
"Admin","Admin"
|
135 |
+
"Contacts ID's","Contacts ID's"
|
136 |
+
"Count Customers With ID","Count Customers With ID"
|
137 |
+
"Delete All Contact ID's","Delete All Contact ID's"
|
138 |
+
"Memory Limit","Memory Limit"
|
139 |
+
"Set to NO to use system default memory.","Set to NO to use system default memory."
|
140 |
+
"Customer Sync Batch Size","Customer Sync Batch Size"
|
141 |
+
"Set the limit size for customers loaded in memory.","Set the limit size for customers loaded in memory."
|
142 |
+
"Debug Mode","Debug Mode"
|
143 |
+
"Set to YES to allow creating log files in var/log directory","Set to YES to allow creating log files in var/log directory"
|
144 |
+
"Count Customers Now","Count Customers Now"
|
145 |
+
|
146 |
+
|
package.xml
CHANGED
@@ -1,18 +1,18 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>dotmailermagento</name>
|
4 |
-
<version>
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
|
7 |
<channel>community</channel>
|
8 |
<extends/>
|
9 |
<summary>Integrate your ecommerce with dotMailer's powerful triggered email marketing and convert more visits to sales.</summary>
|
10 |
<description>Connector Integration for Magento, allows to manage and synchronise customer data and lost baskets.</description>
|
11 |
-
<notes>
|
12 |
<authors><author><name>Calin Diacon</name><user>cdiacon</user><email>cdiacon@gmail.com</email></author></authors>
|
13 |
-
<date>
|
14 |
-
<time>
|
15 |
-
<contents><target name="magelocal"><dir name="Dotdigitalgroup"><dir name="Email"><dir name="Block"><dir name="Adminhtml"><dir name="System"><file name="Bestsellers.php" hash="3712d5b267bcb960ab61ea4c2f7780fd"/><dir name="Config"><file name="Gridlist.php" hash="4022c4af28efa8b521eae76da8781417"/><file name="Insertvariable.php" hash="16efa5b30d69f1a87ba73a39c30d526b"/><file name="Messagedefault.php" hash="316850603c3aba812e34955f4e6ea1ad"/><file name="Password.php" hash="3065946d4e092e6fe0d31cbb4b52edee"/><file name="Smsmessagefour.php" hash="6764248cd2dd0a1df8f8546ef581cefd"/><file name="Smsmessageone.php" hash="f99c4598125f337f5d02003e381466b0"/><file name="Smsmessagethree.php" hash="5deb67df50db7c640c7d8438cad05df6"/><file name="Smsmessagetwo.php" hash="ef33d2f8c780dba2fa71e3723192ed74"/><file name="Validator.php" hash="03288ddcb5cbf3234231d8af8f7723ff"/><file name="Waitingfield.php" hash="fb25e0d81a2067a2d8f6cabff4277f84"/><file name="Wrapper.php" hash="cf5319d175c585354c2d9ebfe30d41e6"/></dir><file name="Couponinfo.php" hash="ede44a34e922becad72a5b3c1c0fc633"/><file name="Crosssell.php" hash="e2f2f5436d3ea902cd40a03795d5e456"/><file name="Lostbasket.php" hash="923a64cb4759f3c1a6bac37437612a7c"/><file name="Mostviewed.php" hash="e6ecfc239e55d4f3781ae8d6e7da15ce"/><file name="Productpush.php" hash="9c243d149366577f47383935892f58d5"/><file name="Recentlyviewed.php" hash="2351cd33be3f670809a72774989b149a"/><file name="Related.php" hash="69a352f8d5c2b397f19cf2a3f1eac9d7"/><file name="Upsell.php" hash="20e8adb20d3bb7e31dfce13e616cd195"/></dir></dir><file name="Basket.php" hash="850034be56ab609ca8345781520148ae"/><file name="Coupon.php" hash="6aaec59401eb7a4602dcb29db9d8c03d"/><dir name="Debug"><file name="Countcontacts.php" hash="59d8d74a82aac88d3cb0f4ed9ffecfef"/><file name="Deletecontacts.php" hash="f2b3f787467ff337331e554117e48408"/><file name="Forcecustomersync.php" hash="d5738efb228c7ba430bf2156941b93a7"/><file name="Forcelostbasketsync.php" hash="f12e28f29b7e1c56edf6464b5af7ead4"/><file name="Forcesuppressedsync.php" hash="cfda0355fae3284853259f3f292dd742"/><file name="Initialsync.php" hash="118b2c178a22fa3cd2301d4d9bbec5f2"/><file name="Rescuenow.php" hash="f20a18a3fe2803c7d71924ec04bc4f50"/><file name="Testcredentials.php" hash="660ca7d025c51974bec5307518649506"/><file name="Transactionalsync.php" hash="7cce60182af6603fa0a082bf02752be8"/></dir><file name="Products.php" hash="091bd0a56391c7fc1b94e96e11ea636c"/></dir><dir name="Helper"><dir name="Api"><file name="DotNetExample.php" hash="cdefe297bf38b6c49ec0acdf9f43264a"/><file name="Restrequest.php" hash="dbd90bdcc12a90bcc875e6c88842e8be"/></dir><file name="Data.php" hash="042d65513fc63e89ff8093e5cb932ec1"/><file name="File.php" hash="7b13d5ce553d5c0442694a9ad2d46016"/><file name="Recommended.php" hash="e14f6657e3243816e8f7d4aae214499e"/></dir><dir name="Model"><dir name="Account"><file name="Test.php" hash="71095642bfae08183962007d59ef028c"/></dir><dir name="Api"><file name="Rest.php" hash="c91400b9e9d21cef977b95479752ad90"/></dir><dir name="Connector"><file name="Account.php" hash="b232ee04f222c3e61a6e6494d13a11b4"/><file name="Customer.php" hash="1f201b107ced31b9bad9b9884f8c4a28"/><file name="Order.php" hash="4baaed26cb6efb7de3dfdf8550acc6fe"/><file name="Quote.php" hash="74cb4c28351223c213889d00552712a7"/><file name="Wishlist.php" hash="7f02a04debb6d6a8971d5e696142b1c7"/></dir><file name="Cron.php" hash="23942f32f5cfeae44479fec3e4ca0294"/><dir name="Customer"><file name="Customer.php" hash="4b853783ed303a61dd5808f0fc368c3a"/><file name="Suppressed.php" hash="639382b91fe82328548429c5d7d48a7e"/><dir name="Wishlist"><file name="Item.php" hash="7087ac6edf465a88a5dd96af483459d9"/></dir></dir><dir name="Dynamic"><dir name="Product"><file name="Mapper.php" hash="63451cbd3d11523ba6d60f71a88d10f6"/></dir><file name="Recommended.php" hash="6588de609b5bc87ed1a51b25f7243858"/></dir><dir name="Newsletter"><file name="Subscriber.php" hash="aa06389101532308e6aa14da6cef2c99"/></dir><file name="Observer.php" hash="b3106c169860a62263e3aa92230f9f16"/><file name="Order.php" hash="df951471328bb27f35babb337e527851"/><dir name="Sales"><file name="Order.php" hash="2cb28b4a209825331ea01d6b45576d08"/><file name="Quote.php" hash="c97137d259868f7a44aaaa95e2130674"/><file name="Sms.php" hash="ea05d7b33f140fd308a60215fa5f7baa"/></dir><dir name="System"><dir name="Config"><dir name="Backend"><dir name="Syncschedule"><file name="Customer.php" hash="d421b5ac07c5bb71051edfda1cc4dcdb"/><file name="Suppressed.php" hash="6eb9b26bbac6c6ce86a7981a20f604ad"/></dir></dir><dir name="Source"><file name="Activebasket.php" hash="1ec34cf0f073f40c36f1918d4f38cbb0"/><file name="Addressbooks.php" hash="e482c8e6d64520eed38110005b6f44ea"/><file name="Campaigns.php" hash="221e817a4796d3754b6230f8e71a91e5"/><file name="Datafields.php" hash="e8d219b3170bf5e416bdf479874f0304"/><file name="Displayifnot.php" hash="175ec822880b9c21bdde7697e90da2d8"/><file name="Displaytype.php" hash="6025a5b7b08908819ec20263b0715b8b"/><file name="Gridview.php" hash="6c9a24e47167cabaa9c749670372e4ed"/><file name="Lostbasket.php" hash="02c5254bd7aeab58253f38e6ee401ee7"/><file name="Orderlimit.php" hash="db8cc03eb2259ce07900b5d2a45eedbc"/><file name="Orderstatus.php" hash="62446aebcb422acce53641412c0fd98f"/><file name="Sendcampain.php" hash="207c467eb35319e26437be126716fc72"/><file name="Syncfrequency.php" hash="19181d66a5688d6da78da9b8b0c639b0"/><file name="Timeperiod.php" hash="6f3d5907f6e6bdff3a6e0fae196fa78c"/></dir></dir></dir></dir><dir name="Test"><dir name="Model"><file name="Product.php" hash="590f024e6ae4a33044897004e81d5a33"/></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="DebugController.php" hash="0b58c42b842da871181f19ca97d69a13"/></dir><file name="EmailController.php" hash="af67b1470e5f33767d2fbf80c8d2725f"/></dir><dir name="etc"><file name="adminhtml.xml" hash="5f8fdbfa276d01622117b1a5a7ac4bf4"/><file name="config.xml" hash="10fd0f57b91292c12737b83b9244240c"/><file name="system.xml" hash="2ff93941b9d0336a602bbe410a377282"/></dir><dir name="sql"><dir name="connector_setup"><file name="mysql4-install-0.1.0.php" hash="c33e49225f3974f784f8b7b12f609102"/><file name="mysql4-upgrade-1.1.1-1.1.2.php" hash="7fae25a8ae47fe0ba692076ac04237a4"/></dir></dir></dir></dir><dir name="Varien"><dir name="Data"><file name="Collection.php" hash="a925107e95454d0e6609138b00f972aa"/></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="connector.xml" hash="d86fe05590ffbcbd4fe671da9cdb2979"/></dir><dir name="template"><dir name="connector"><file name="basket.phtml" hash="2dadd9e056a5a0267fb5a84e8d711fce"/><file name="coupon.phtml" hash="0e39fce43a6b3c4b45130996f1de90ff"/><file name="price.phtml" hash="3600de0d5573415628823b3d1f397cca"/><file name="roi_code.phtml" hash="72b38638e7105a4375cf22d662d67fab"/><file name="tracking_code.phtml" hash="4dcec68640a76074eced63d054a701eb"/></dir><dir name="page"><dir name="connector"><file name="products.phtml" hash="3c8bf292c14da73cd513498978323724"/></dir><file name="blank.phtml" hash="7bf34446254428a5c42740731127b435"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Dotdigitalgroup_Email.xml" hash="9b9b2dbb1f62fe025fe35da89171b658"/></dir></target></contents>
|
16 |
<compatible/>
|
17 |
<dependencies><required><php><min>1.5.2</min><max>6.0.0</max></php><extension><name>curl</name><min>7.15.1</min><max>7.30.0</max></extension></required></dependencies>
|
18 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>dotmailermagento</name>
|
4 |
+
<version>2.0.4</version>
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
|
7 |
<channel>community</channel>
|
8 |
<extends/>
|
9 |
<summary>Integrate your ecommerce with dotMailer's powerful triggered email marketing and convert more visits to sales.</summary>
|
10 |
<description>Connector Integration for Magento, allows to manage and synchronise customer data and lost baskets.</description>
|
11 |
+
<notes>Dropping number of subscribers.</notes>
|
12 |
<authors><author><name>Calin Diacon</name><user>cdiacon</user><email>cdiacon@gmail.com</email></author></authors>
|
13 |
+
<date>2014-01-14</date>
|
14 |
+
<time>13:27:39</time>
|
15 |
+
<contents><target name="magecommunity"><dir name="Dotdigitalgroup"><dir name="Email"><dir name="Block"><dir name="Adminhtml"><dir name="Advanced"><dir name="Admin"><file name="Contactsimported.php" hash="f1474a536719a27f9c97d77fdc071ac0"/><file name="Deletecontactids.php" hash="729e0227d63c8bdd1b3ea7128312d978"/></dir></dir><dir name="Sales"><dir name="Order"><dir name="Creditmemo"><file name="View.php" hash="fe35138d07d7edf823eb0ad7e6805b5d"/></dir></dir></dir><dir name="System"><dir name="Config"><dir name="Form"><file name="Ajaxvalidate.php" hash="8e755edd861892a9e68fd43a5450942b"/><file name="Bestsellers.php" hash="b2fa4ed00d2e30d9ea383f8374ba73be"/><file name="Couponinfo.php" hash="87eeef872835410ed7481019169a8d45"/><file name="Creditmemonew.php" hash="526045f9a469aad0212a04c0c0f84544"/><file name="Crosssell.php" hash="acc9de2192a54ce1a5baddd4d6e7c28b"/><file name="Customernew.php" hash="840431388af96ed7f7222f9db4fd020a"/><file name="Invoicenew.php" hash="421e986daf8513448d399e5699f7870d"/><file name="Lostbasket.php" hash="1d7ad7247b5b986100a052eceb19d7dc"/><file name="Mostviewed.php" hash="c5b304b1196cf4e724b9a42ce2bfb250"/><file name="Ordernew.php" hash="1b523afd79ef5e01ad12ca43fd56e6b8"/><file name="Orderupdate.php" hash="37ade5436b287bf8fc080b061c93ed4f"/><file name="Productpush.php" hash="bacafa6e33f0724253bf0deb40c0c90f"/><file name="Related.php" hash="dd1977a631753dbe35d42480aa900c6d"/><file name="Upsell.php" hash="fd126b8a610e8fc9a9e331431abb03f5"/></dir><file name="Gridlist.php" hash="4022c4af28efa8b521eae76da8781417"/><file name="Smsmessagefour.php" hash="6764248cd2dd0a1df8f8546ef581cefd"/><file name="Smsmessageone.php" hash="f99c4598125f337f5d02003e381466b0"/><file name="Smsmessagethree.php" hash="5deb67df50db7c640c7d8438cad05df6"/><file name="Smsmessagetwo.php" hash="4f886042f98e891a759c0b97a6e7eb05"/><file name="Synccustomerdata.php" hash="eebac512d913007da75631d2a1a08697"/><file name="Validator.php" hash="03288ddcb5cbf3234231d8af8f7723ff"/><file name="Waitingfield.php" hash="ad068a39d2ccb07affd67c8cd8584735"/><file name="Wrapper.php" hash="0a61b6dfb4983f0e9d15eca97e11f9d3"/></dir><file name="Recentlyviewed.php" hash="0295d3ffad0196ecc42124aad707b585"/></dir><dir name="Widget"><dir name="Button"><file name="Reimportorders.php" hash="25efce64ce01707e6f623a9ee165e77b"/><file name="Setupdatafields.php" hash="c4f5670c164ea03991263e9c4d945e91"/><file name="Suppressedcontacts.php" hash="74b66bd83ed53312ea7f74ce5795e590"/></dir></dir></dir><file name="Basket.php" hash="902338ab1cb1c8f4df59861394be3967"/><file name="Coupon.php" hash="6aaec59401eb7a4602dcb29db9d8c03d"/><file name="Customer.php" hash="b257f4375f47948d55f9dd7e8fd4393c"/><dir name="Order"><dir name="Creditmemo"><file name="Items.php" hash="27d9167dad29c7790ad58645f69e3646"/></dir><file name="Creditmemo.php" hash="fdfcdf3e9e1c3c70ff918a7d6e22ed2c"/><file name="Info.php" hash="8443321bdd35b4121fe63a8087cadf40"/><dir name="Invoice"><file name="Items.php" hash="af1d38a3cd72c75fc4f2e3ad46e6195e"/></dir><file name="Invoice.php" hash="750a5f937b784c0a2f884d7d220024a3"/></dir><file name="Order.php" hash="ae164f65893724dcc76092d0c682e764"/><file name="Products.php" hash="091bd0a56391c7fc1b94e96e11ea636c"/></dir><dir name="Helper"><file name="Data.php" hash="7716ae6f39a586e27e2a812344b0ddbf"/><file name="File.php" hash="2f12ca241e0c2243b59d8b3710e9ec90"/><file name="Recommended.php" hash="69bd19c4d22bd550f4db6e5c7b0d323c"/></dir><dir name="Model"><dir name="Abstract"><file name="Rest.php" hash="310fa6fc9e2d7f7eb762a73a062247a6"/></dir><dir name="Connector"><file name="Account.php" hash="97907f0a714c79f5d554e211c341e1ef"/><dir name="Api"><file name="Client.php" hash="394411f9097f7224b285d8ca7e23bb57"/></dir><file name="Campaign.php" hash="6812cec1cf639302f652e77534452fa4"/><file name="Customer.php" hash="b30e0d14aded8fba7c00aecfe83921cf"/><file name="Order.php" hash="ff01e7f16b2630a42b5fa11f335681ff"/><file name="Test.php" hash="7934213870c7a7ab1587b0d6c76d7edf"/></dir><file name="Cron.php" hash="2e43114240fc7a243eccc64653206eee"/><dir name="Customer"><file name="Contact.php" hash="4d676b3e64c793a0462abdc2d53c4434"/><file name="Guest.php" hash="93c474ea9249dde97580714577eeb23d"/><dir name="Wishlist"><file name="Item.php" hash="97ee7711a4dd1a361146c9679b6ebea2"/></dir><file name="Wishlist.php" hash="81c29f37f853f98103ab33a49a489b39"/></dir><dir name="Dynamic"><dir name="Product"><file name="Mapper.php" hash="63451cbd3d11523ba6d60f71a88d10f6"/></dir><file name="Recommended.php" hash="f7372d4f33b3586b021939b6993e3261"/></dir><dir name="Email"><file name="Contact.php" hash="569f8c1b4e89808ce8ed617340a51b38"/><file name="Order.php" hash="db88d06cece235778224ab663d5c106d"/><file name="Send.php" hash="068136ebeee6cf06014b666871fd1262"/></dir><dir name="Newsletter"><file name="Subscriber.php" hash="615f0eb815310705afb0344d4f67c7d0"/></dir><file name="Observer.php" hash="6383ff48e076ccb2862ef8b1c3e30f88"/><dir name="Resource"><dir name="Email"><dir name="Contact"><file name="Collection.php" hash="0721f74549e97323d9c6e472226e1cb9"/></dir><file name="Contact.php" hash="3c193df4c957e212cf7ad48ad86ef2a6"/><dir name="Order"><file name="Collection.php" hash="d91df4625cc1db125c1d40f9ca70c615"/></dir><file name="Order.php" hash="9a0f35812962ffc7c2a9afac62619bf5"/><dir name="Send"><file name="Collection.php" hash="ffec8f9fb2ca17442dc07b71d2c277d8"/></dir><file name="Send.php" hash="2777eec5d7a30ed5fad57746fa81c288"/></dir><file name="Setup.php" hash="e275a98c8e7b7c7c96487d249e74893d"/></dir><dir name="Sales"><dir name="Order"><file name="State.php" hash="37920779c169acf0cda019b8c1abedfa"/></dir><file name="Order.php" hash="0722db07b232fc1ae71e7345f9cde8c0"/><file name="Quote.php" hash="ec0138f2d084c78db5bb3fcec9a5a886"/><file name="Sms.php" hash="14dae975a1ded4f76507632f84e5dea3"/></dir><dir name="System"><dir name="Config"><dir name="Backend"><dir name="Syncschedule"><file name="Customer.php" hash="d0c9486102e133016d6f14a0282e3c1d"/></dir></dir><dir name="Source"><file name="Activebasket.php" hash="1ec34cf0f073f40c36f1918d4f38cbb0"/><file name="Addressbooks.php" hash="80af0afe345b73546bbab981aedddf78"/><file name="Campaigns.php" hash="8d3c24110eb1e0b8f4c5b2874887d375"/><file name="Datafields.php" hash="070b93c86ee1c942b3358e895054a404"/><file name="Displaytype.php" hash="6025a5b7b08908819ec20263b0715b8b"/><file name="Gridview.php" hash="6c9a24e47167cabaa9c749670372e4ed"/><file name="Lostbasket.php" hash="02c5254bd7aeab58253f38e6ee401ee7"/><file name="Orderlimit.php" hash="db8cc03eb2259ce07900b5d2a45eedbc"/><file name="Orderstatus.php" hash="62446aebcb422acce53641412c0fd98f"/><file name="Sendcampaignafter.php" hash="c3865e3a664ab7420b4d288f8e5b7672"/><file name="Timeperiod.php" hash="6f3d5907f6e6bdff3a6e0fae196fa78c"/></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="ConnectorController.php" hash="c0aed61d21a53d87659baa895e553970"/><file name="DebugController.php" hash="7f8444fb981e8a1673f8f580d224f290"/></dir><file name="CustomerController.php" hash="1f541d8609472ddd32dac0ce2b4391fe"/><file name="EmailController.php" hash="ce8622027af3a279dc16545acce5cd65"/><file name="OrderController.php" hash="a7911f87094f3f0255fcc917d021d85f"/></dir><dir name="etc"><file name="adminhtml.xml" hash="8e9d447d2cb3d2c5f10d6b0b608ebaba"/><file name="config.xml" hash="da33301175054baef9273e3ef1960ac0"/><file name="system.xml" hash="c0218c3ddb7c2c144f91fbad9de0a6f6"/></dir><dir name="sql"><dir name="connector_setup"><file name="mysql4-install-0.1.0.php" hash="bb1b5e52152e2f111d852c1649b7d1d9"/><file name="mysql4-upgrade-1.1.1-1.1.2.php" hash="7fae25a8ae47fe0ba692076ac04237a4"/><file name="mysql4-upgrade-1.1.2-1.5.0.php" hash="34ac896f6e681c56d8d2dd6bf411215e"/><file name="mysql4-upgrade-1.5.0-2.0.0.php" hash="75020a02255ea63e9bc4599d85ab4e2f"/><file name="mysql4-upgrade-2.0.0-2.0.1.php" hash="2f71a10d19eddd97c9eba9af840e4f09"/><file name="mysql4-upgrade-2.0.1-2.0.2.php" hash="6b7af944ebc76328d16223cdb245c568"/><file name="mysql4-upgrade-2.0.3-2.0.4.php" hash="dbab1d9af7a80d43b9ade3395420b3a9"/><file name="mysql4-upgrade-2.0.4-2.1.0.php" hash="959e134f7ff3d833499b93509a6ad6ed"/></dir><file name=".DS_Store" hash="d7fd6a1f2efc75ea6c79d6e208718a01"/></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="connector.xml" hash="aa8bc52a5fd2f3cffe3b0b9d8f976d90"/></dir><dir name="template"><dir name="connector"><file name="basket.phtml" hash="2dadd9e056a5a0267fb5a84e8d711fce"/><file name="coupon.phtml" hash="0e39fce43a6b3c4b45130996f1de90ff"/><dir name="customer"><file name="new.phtml" hash="9cc2d8fb4d8007df5a6f20fa3dc0dc1c"/><dir name="system"><dir name="config"><file name="synccustomerdata.phtml" hash="0f127f59f09194dd0b24bde9043e22de"/></dir></dir></dir><file name="price.phtml" hash="3600de0d5573415628823b3d1f397cca"/><file name="products.phtml" hash="a2139e8f875ecb7906aeaeae396b0a7c"/><file name="roi_code.phtml" hash="ee4150b30c808c2f6c803f87fa7355da"/><dir name="sales"><dir name="order"><dir name="creditmemo"><file name="items.phtml" hash="3c7560bf346a08d3b435f7823eb4233d"/></dir><file name="creditmemo.phtml" hash="37c56ea7911713219261e63d5ba47845"/><file name="info.phtml" hash="8cb155174b428bb902102f18867dccd6"/><dir name="invoice"><file name="items.phtml" hash="83975b71738f7e95bb2cb3c7ab6b1268"/><dir name="renderer"><file name="default.phtml" hash="6b169aad785564139fae81f63c8f5b55"/></dir></dir><file name="invoice.phtml" hash="f751287920624e0b5bf222acdffa5973"/><file name="new.phtml" hash="8b18e8e82f9d3957a38934fbcb1a8e25"/><file name="totals.phtml" hash="915578e433291d3639d5a091cbc98cc6"/></dir></dir><file name="tracking_code.phtml" hash="f82527b0485a58fb852a2d8028f4393d"/></dir><dir name="page"><file name="blank.phtml" hash="2ffd97981bddedac0e16dd27f42bff25"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Dotdigitalgroup_Email.xml" hash="8745c0b2eae08783b6203a613acdbcb8"/></dir></target><target name="magelocale"><dir name="en_US"><file name="Dotdigitalgroup_Email.csv" hash="20a38887a1fff108817a3d36bdf1beb2"/></dir></target></contents>
|
16 |
<compatible/>
|
17 |
<dependencies><required><php><min>1.5.2</min><max>6.0.0</max></php><extension><name>curl</name><min>7.15.1</min><max>7.30.0</max></extension></required></dependencies>
|
18 |
</package>
|