Version Notes
Bug Fixes
Download this release
Release Info
| Developer | Magento Core Team |
| Extension | EmailDirect_Integration |
| Version | 1.5.1 |
| Comparing to | |
| See all releases | |
Code changes from version 1.5.0 to 1.5.1
- app/code/local/EmailDirect/Integration/Block/Adminhtml/Abandoned/Grid.php +110 -89
- app/code/local/EmailDirect/Integration/Block/Adminhtml/System/Config/Form/Field/Addressmapfields.php +1 -1
- app/code/local/EmailDirect/Integration/Block/Adminhtml/System/Config/Form/Field/Common.php +6 -3
- app/code/local/EmailDirect/Integration/Block/Adminhtml/System/Config/Form/Field/Mapfields.php +1 -1
- app/code/local/EmailDirect/Integration/Block/Adminhtml/System/Config/Form/Field/Shippingmapfields.php +1 -1
- app/code/local/EmailDirect/Integration/Block/Adminhtml/System/Config/Form/Field/Troubleshooting.php +8 -2
- app/code/local/EmailDirect/Integration/Block/Adminhtml/Troubleshooting.php +0 -96
- app/code/local/EmailDirect/Integration/Block/Adminhtml/Troubleshooting/View.php +0 -1
- app/code/local/EmailDirect/Integration/Helper/Data.php +36 -18
- app/code/local/EmailDirect/Integration/Helper/Fields.php +8 -1
- app/code/local/EmailDirect/Integration/Model/Observer.php +458 -360
- app/code/local/EmailDirect/Integration/Model/Wrapper/Execute.php +15 -10
- app/code/local/EmailDirect/Integration/controllers/Admin/AbandonedController.php +2 -1
- app/code/local/EmailDirect/Integration/controllers/Admin/ExportController.php +0 -9
- app/code/local/EmailDirect/Integration/controllers/ExportController.php +11 -0
- app/code/local/EmailDirect/Integration/etc/config.xml +8 -8
- app/design/adminhtml/default/default/template/emaildirect/system/config/form/field/trouble.phtml +1 -1
- app/design/frontend/base/default/layout/emaildirect.xml +2 -2
- package.xml +5 -18
app/code/local/EmailDirect/Integration/Block/Adminhtml/Abandoned/Grid.php
CHANGED
|
@@ -4,9 +4,14 @@ class Emaildirect_Integration_Block_Adminhtml_Abandoned_Grid extends Mage_Adminh
|
|
| 4 |
{
|
| 5 |
|
| 6 |
/**
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
protected $_storeIds
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 10 |
|
| 11 |
public function __construct()
|
| 12 |
{
|
|
@@ -21,11 +26,27 @@ class Emaildirect_Integration_Block_Adminhtml_Abandoned_Grid extends Mage_Adminh
|
|
| 21 |
}
|
| 22 |
|
| 23 |
/**
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 29 |
public function setStoreIds($storeIds)
|
| 30 |
{
|
| 31 |
$this->_storeIds = $storeIds;
|
|
@@ -34,13 +55,13 @@ class Emaildirect_Integration_Block_Adminhtml_Abandoned_Grid extends Mage_Adminh
|
|
| 34 |
|
| 35 |
private function prepareForAbandonedReport($storeIds, $filter = null)
|
| 36 |
{
|
| 37 |
-
|
| 38 |
|
| 39 |
$collection->addFieldToFilter('items_count', array('neq' => '0'))
|
| 40 |
-
|
| 41 |
-
|
| 42 |
->addFieldToFilter('customer_email',array('notnull'=>1))
|
| 43 |
-
|
| 44 |
if (is_array($storeIds) && !empty($storeIds))
|
| 45 |
{
|
| 46 |
$collection->addFieldToFilter('store_id', array('in' => $storeIds));
|
|
@@ -65,10 +86,10 @@ class Emaildirect_Integration_Block_Adminhtml_Abandoned_Grid extends Mage_Adminh
|
|
| 65 |
$this->setCollection($collection);
|
| 66 |
|
| 67 |
if (!empty($data))
|
| 68 |
-
|
| 69 |
else
|
| 70 |
-
|
| 71 |
-
|
| 72 |
return parent::_prepareCollection();
|
| 73 |
}
|
| 74 |
|
|
@@ -103,26 +124,26 @@ class Emaildirect_Integration_Block_Adminhtml_Abandoned_Grid extends Mage_Adminh
|
|
| 103 |
return $options;
|
| 104 |
}
|
| 105 |
|
| 106 |
-
|
| 107 |
-
|
| 108 |
$this->addColumn('customer_firstname', array(
|
| 109 |
-
|
| 110 |
-
|
| 111 |
));
|
| 112 |
|
| 113 |
$this->addColumn('customer_lastname', array(
|
| 114 |
-
|
| 115 |
-
|
| 116 |
-
|
| 117 |
|
| 118 |
$this->addColumn('email', array(
|
| 119 |
-
|
| 120 |
-
|
| 121 |
-
|
| 122 |
|
| 123 |
$this->addColumn('customer_group_id', array(
|
| 124 |
-
'header'
|
| 125 |
-
'index'
|
| 126 |
//'filter_index' => 'IFNULL(cust.group_id,0)',
|
| 127 |
'type' => 'options',
|
| 128 |
'width' => 200,
|
|
@@ -130,20 +151,20 @@ class Emaildirect_Integration_Block_Adminhtml_Abandoned_Grid extends Mage_Adminh
|
|
| 130 |
));
|
| 131 |
|
| 132 |
$this->addColumn('items_count', array(
|
| 133 |
-
|
| 134 |
-
|
| 135 |
-
|
| 136 |
-
|
| 137 |
-
|
| 138 |
-
|
| 139 |
|
| 140 |
$this->addColumn('items_qty', array(
|
| 141 |
-
|
| 142 |
-
|
| 143 |
-
|
| 144 |
-
|
| 145 |
-
|
| 146 |
-
|
| 147 |
|
| 148 |
if ($this->getRequest()->getParam('website'))
|
| 149 |
$storeIds = Mage::app()->getWebsite($this->getRequest()->getParam('website'))->getStoreIds();
|
|
@@ -158,75 +179,75 @@ class Emaildirect_Integration_Block_Adminhtml_Abandoned_Grid extends Mage_Adminh
|
|
| 158 |
$currencyCode = $this->getCurrentCurrencyCode();
|
| 159 |
|
| 160 |
$this->addColumn('subtotal', array(
|
| 161 |
-
|
| 162 |
-
|
| 163 |
-
|
| 164 |
-
|
| 165 |
-
|
| 166 |
-
|
| 167 |
-
|
| 168 |
-
|
| 169 |
|
| 170 |
$this->addColumn('updated_at', array(
|
| 171 |
-
|
| 172 |
-
|
| 173 |
-
|
| 174 |
-
|
| 175 |
-
|
| 176 |
-
|
| 177 |
|
| 178 |
$this->addColumn('abandoned_minutes', array(
|
| 179 |
-
|
| 180 |
-
|
| 181 |
-
|
| 182 |
-
|
| 183 |
-
|
| 184 |
-
|
| 185 |
-
|
| 186 |
-
|
| 187 |
-
|
| 188 |
|
| 189 |
$this->addColumn('remote_ip', array(
|
| 190 |
-
|
| 191 |
-
|
| 192 |
-
|
| 193 |
-
|
| 194 |
|
| 195 |
$this->addColumn('emaildirect_abandoned_date', array(
|
| 196 |
-
|
| 197 |
-
|
| 198 |
-
|
| 199 |
-
|
| 200 |
-
|
| 201 |
-
|
| 202 |
|
| 203 |
if (Mage::helper('emaildirect')->getAbandonedEnabled())
|
| 204 |
{
|
| 205 |
|
| 206 |
$this->addColumn('action',
|
| 207 |
array(
|
| 208 |
-
'header'
|
| 209 |
-
'width'
|
| 210 |
-
'type'
|
| 211 |
-
'getter'
|
| 212 |
'actions' => array(
|
| 213 |
array(
|
| 214 |
'caption' => Mage::helper('emaildirect')->__('Send'),
|
| 215 |
-
'url'
|
| 216 |
-
'field'
|
| 217 |
'sent' => false
|
| 218 |
),
|
| 219 |
array(
|
| 220 |
'caption' => Mage::helper('emaildirect')->__('Resend'),
|
| 221 |
-
'url'
|
| 222 |
-
'field'
|
| 223 |
'sent' => true
|
| 224 |
)
|
| 225 |
),
|
| 226 |
-
'filter'
|
| 227 |
'sortable' => false,
|
| 228 |
'renderer' => 'EmailDirect_Integration_Block_Widget_Grid_Column_Renderer_Action',
|
| 229 |
-
'index'
|
| 230 |
'is_system' => true,
|
| 231 |
));
|
| 232 |
}
|
|
@@ -236,7 +257,7 @@ class Emaildirect_Integration_Block_Adminhtml_Abandoned_Grid extends Mage_Adminh
|
|
| 236 |
|
| 237 |
return parent::_prepareColumns();
|
| 238 |
}
|
| 239 |
-
|
| 240 |
protected function _prepareMassaction()
|
| 241 |
{
|
| 242 |
if (!Mage::helper('emaildirect')->getAbandonedEnabled())
|
|
@@ -246,16 +267,16 @@ class Emaildirect_Integration_Block_Adminhtml_Abandoned_Grid extends Mage_Adminh
|
|
| 246 |
$this->getMassactionBlock()->setFormFieldName('id');
|
| 247 |
|
| 248 |
$this->getMassactionBlock()->addItem('send', array(
|
| 249 |
-
|
| 250 |
-
|
| 251 |
-
|
| 252 |
|
| 253 |
return $this;
|
| 254 |
-
|
| 255 |
-
|
| 256 |
public function getGridUrl()
|
| 257 |
{
|
| 258 |
-
|
| 259 |
}
|
| 260 |
|
| 261 |
public function getRowUrl($row)
|
| 4 |
{
|
| 5 |
|
| 6 |
/**
|
| 7 |
+
* ids of current stores
|
| 8 |
+
*/
|
| 9 |
+
protected $_storeIds = array();
|
| 10 |
+
|
| 11 |
+
/**
|
| 12 |
+
* stores current currency code
|
| 13 |
+
*/
|
| 14 |
+
protected $_currentCurrencyCode = null;
|
| 15 |
|
| 16 |
public function __construct()
|
| 17 |
{
|
| 26 |
}
|
| 27 |
|
| 28 |
/**
|
| 29 |
+
* Retrieve currency code based on selected store
|
| 30 |
+
*
|
| 31 |
+
* @return string
|
| 32 |
+
*/
|
| 33 |
+
public function getCurrentCurrencyCode()
|
| 34 |
+
{
|
| 35 |
+
if (is_null($this->_currentCurrencyCode)) {
|
| 36 |
+
reset($this->_storeIds);
|
| 37 |
+
$this->_currentCurrencyCode = (count($this->_storeIds) > 0)
|
| 38 |
+
? Mage::app()->getStore(current($this->_storeIds))->getBaseCurrencyCode()
|
| 39 |
+
: Mage::app()->getStore()->getBaseCurrencyCode();
|
| 40 |
+
}
|
| 41 |
+
return $this->_currentCurrencyCode;
|
| 42 |
+
}
|
| 43 |
+
|
| 44 |
+
/**
|
| 45 |
+
* storeIds setter
|
| 46 |
+
*
|
| 47 |
+
* @param array $storeIds
|
| 48 |
+
* @return Mage_Adminhtml_Block_Report_Grid_Shopcart_Abstract
|
| 49 |
+
*/
|
| 50 |
public function setStoreIds($storeIds)
|
| 51 |
{
|
| 52 |
$this->_storeIds = $storeIds;
|
| 55 |
|
| 56 |
private function prepareForAbandonedReport($storeIds, $filter = null)
|
| 57 |
{
|
| 58 |
+
$collection = $this->getCollection();
|
| 59 |
|
| 60 |
$collection->addFieldToFilter('items_count', array('neq' => '0'))
|
| 61 |
+
->addFieldToFilter('main_table.is_active', '1')
|
| 62 |
+
->addSubtotal($storeIds, $filter)
|
| 63 |
->addFieldToFilter('customer_email',array('notnull'=>1))
|
| 64 |
+
->setOrder('updated_at');
|
| 65 |
if (is_array($storeIds) && !empty($storeIds))
|
| 66 |
{
|
| 67 |
$collection->addFieldToFilter('store_id', array('in' => $storeIds));
|
| 86 |
$this->setCollection($collection);
|
| 87 |
|
| 88 |
if (!empty($data))
|
| 89 |
+
$this->prepareForAbandonedReport($this->_storeIds, $data);
|
| 90 |
else
|
| 91 |
+
$this->prepareForAbandonedReport($this->_storeIds);
|
| 92 |
+
|
| 93 |
return parent::_prepareCollection();
|
| 94 |
}
|
| 95 |
|
| 124 |
return $options;
|
| 125 |
}
|
| 126 |
|
| 127 |
+
protected function _prepareColumns()
|
| 128 |
+
{
|
| 129 |
$this->addColumn('customer_firstname', array(
|
| 130 |
+
'header' =>Mage::helper('reports')->__('Customer First Name'),
|
| 131 |
+
'index' =>'customer_firstname'
|
| 132 |
));
|
| 133 |
|
| 134 |
$this->addColumn('customer_lastname', array(
|
| 135 |
+
'header' =>Mage::helper('reports')->__('Last Name'),
|
| 136 |
+
'index' =>'customer_lastname'
|
| 137 |
+
));
|
| 138 |
|
| 139 |
$this->addColumn('email', array(
|
| 140 |
+
'header' =>Mage::helper('reports')->__('Email'),
|
| 141 |
+
'index' =>'customer_email'
|
| 142 |
+
));
|
| 143 |
|
| 144 |
$this->addColumn('customer_group_id', array(
|
| 145 |
+
'header' => Mage::helper('sales')->__('Customer Group'),
|
| 146 |
+
'index' => 'customer_group_id',
|
| 147 |
//'filter_index' => 'IFNULL(cust.group_id,0)',
|
| 148 |
'type' => 'options',
|
| 149 |
'width' => 200,
|
| 151 |
));
|
| 152 |
|
| 153 |
$this->addColumn('items_count', array(
|
| 154 |
+
'header' =>Mage::helper('reports')->__('Number of Items'),
|
| 155 |
+
'width' =>'80px',
|
| 156 |
+
'align' =>'right',
|
| 157 |
+
'index' =>'items_count',
|
| 158 |
+
'type' =>'number'
|
| 159 |
+
));
|
| 160 |
|
| 161 |
$this->addColumn('items_qty', array(
|
| 162 |
+
'header' =>Mage::helper('reports')->__('Quantity of Items'),
|
| 163 |
+
'width' =>'80px',
|
| 164 |
+
'align' =>'right',
|
| 165 |
+
'index' =>'items_qty',
|
| 166 |
+
'type' =>'number'
|
| 167 |
+
));
|
| 168 |
|
| 169 |
if ($this->getRequest()->getParam('website'))
|
| 170 |
$storeIds = Mage::app()->getWebsite($this->getRequest()->getParam('website'))->getStoreIds();
|
| 179 |
$currencyCode = $this->getCurrentCurrencyCode();
|
| 180 |
|
| 181 |
$this->addColumn('subtotal', array(
|
| 182 |
+
'header' => Mage::helper('reports')->__('Subtotal'),
|
| 183 |
+
'width' => '80px',
|
| 184 |
+
'type' => 'currency',
|
| 185 |
+
'currency_code' => $currencyCode,
|
| 186 |
+
'index' => 'subtotal',
|
| 187 |
+
'renderer' => 'adminhtml/report_grid_column_renderer_currency',
|
| 188 |
+
'rate' => $this->getRate($currencyCode),
|
| 189 |
+
));
|
| 190 |
|
| 191 |
$this->addColumn('updated_at', array(
|
| 192 |
+
'header' =>Mage::helper('reports')->__('Abandoned Date'),
|
| 193 |
+
'width' =>'170px',
|
| 194 |
+
'type' =>'datetime',
|
| 195 |
+
'index' =>'updated_at',
|
| 196 |
+
'filter_index'=>'main_table.updated_at'
|
| 197 |
+
));
|
| 198 |
|
| 199 |
$this->addColumn('abandoned_minutes', array(
|
| 200 |
+
'header' =>Mage::helper('reports')->__('Minutes'),
|
| 201 |
+
'width' =>'100px',
|
| 202 |
+
'renderer' => 'EmailDirect_Integration_Block_Widget_Grid_Column_Renderer_AbandonedMinutes',
|
| 203 |
+
'index' =>'abandoned_minutes',
|
| 204 |
+
'sortable' => false,
|
| 205 |
+
'filter' => false,
|
| 206 |
+
'filter_index'=>'main_table.updated_at'
|
| 207 |
+
|
| 208 |
+
));
|
| 209 |
|
| 210 |
$this->addColumn('remote_ip', array(
|
| 211 |
+
'header' =>Mage::helper('reports')->__('IP Address'),
|
| 212 |
+
'width' =>'80px',
|
| 213 |
+
'index' =>'remote_ip'
|
| 214 |
+
));
|
| 215 |
|
| 216 |
$this->addColumn('emaildirect_abandoned_date', array(
|
| 217 |
+
'header' =>Mage::helper('reports')->__('Date Sent to EmailDirect'),
|
| 218 |
+
//'width' =>'80px',
|
| 219 |
+
'index' =>'emaildirect_abandoned_date',
|
| 220 |
+
'type' => 'datetime',
|
| 221 |
+
|
| 222 |
+
));
|
| 223 |
|
| 224 |
if (Mage::helper('emaildirect')->getAbandonedEnabled())
|
| 225 |
{
|
| 226 |
|
| 227 |
$this->addColumn('action',
|
| 228 |
array(
|
| 229 |
+
'header' => Mage::helper('emaildirect')->__('Action'),
|
| 230 |
+
'width' => '100',
|
| 231 |
+
'type' => 'action',
|
| 232 |
+
'getter' => 'getId',
|
| 233 |
'actions' => array(
|
| 234 |
array(
|
| 235 |
'caption' => Mage::helper('emaildirect')->__('Send'),
|
| 236 |
+
'url' => array('base'=> '*/*/send'),
|
| 237 |
+
'field' => 'id',
|
| 238 |
'sent' => false
|
| 239 |
),
|
| 240 |
array(
|
| 241 |
'caption' => Mage::helper('emaildirect')->__('Resend'),
|
| 242 |
+
'url' => array('base'=> '*/*/send'),
|
| 243 |
+
'field' => 'id',
|
| 244 |
'sent' => true
|
| 245 |
)
|
| 246 |
),
|
| 247 |
+
'filter' => false,
|
| 248 |
'sortable' => false,
|
| 249 |
'renderer' => 'EmailDirect_Integration_Block_Widget_Grid_Column_Renderer_Action',
|
| 250 |
+
'index' => 'stores',
|
| 251 |
'is_system' => true,
|
| 252 |
));
|
| 253 |
}
|
| 257 |
|
| 258 |
return parent::_prepareColumns();
|
| 259 |
}
|
| 260 |
+
|
| 261 |
protected function _prepareMassaction()
|
| 262 |
{
|
| 263 |
if (!Mage::helper('emaildirect')->getAbandonedEnabled())
|
| 267 |
$this->getMassactionBlock()->setFormFieldName('id');
|
| 268 |
|
| 269 |
$this->getMassactionBlock()->addItem('send', array(
|
| 270 |
+
'label' => Mage::helper('emaildirect')->__('Send or Resend'),
|
| 271 |
+
'url' => $this->getUrl('*/*/massSend')
|
| 272 |
+
));
|
| 273 |
|
| 274 |
return $this;
|
| 275 |
+
}
|
| 276 |
+
|
| 277 |
public function getGridUrl()
|
| 278 |
{
|
| 279 |
+
return $this->getUrl('*/*/grid', array('_current'=> true));
|
| 280 |
}
|
| 281 |
|
| 282 |
public function getRowUrl($row)
|
app/code/local/EmailDirect/Integration/Block/Adminhtml/System/Config/Form/Field/Addressmapfields.php
CHANGED
|
@@ -9,7 +9,7 @@ class EmailDirect_Integration_Block_Adminhtml_System_Config_Form_Field_Addressma
|
|
| 9 |
'style' => 'width:120px',
|
| 10 |
));
|
| 11 |
$this->addColumn('emaildirect', array(
|
| 12 |
-
'label' => Mage::helper('emaildirect')->__('
|
| 13 |
'type' => 'options',
|
| 14 |
'options' => Mage::helper('emaildirect')->getEmailDirectColumnOptions(),
|
| 15 |
'style' => 'width:120px',
|
| 9 |
'style' => 'width:120px',
|
| 10 |
));
|
| 11 |
$this->addColumn('emaildirect', array(
|
| 12 |
+
'label' => Mage::helper('emaildirect')->__('EmailDirect'),
|
| 13 |
'type' => 'options',
|
| 14 |
'options' => Mage::helper('emaildirect')->getEmailDirectColumnOptions(),
|
| 15 |
'style' => 'width:120px',
|
app/code/local/EmailDirect/Integration/Block/Adminhtml/System/Config/Form/Field/Common.php
CHANGED
|
@@ -25,7 +25,7 @@ class EmailDirect_Integration_Block_Adminhtml_System_Config_Form_Field_Common ex
|
|
| 25 |
'style' => empty($params['style']) ? null : $params['style'],
|
| 26 |
'class' => empty($params['class']) ? null : $params['class'],
|
| 27 |
'type' => empty($params['type']) ? null : $params['type'],
|
| 28 |
-
'options' => empty($params['options'])
|
| 29 |
'renderer' => false,
|
| 30 |
);
|
| 31 |
if ((!empty($params['renderer'])) && ($params['renderer'] instanceof Mage_Core_Block_Abstract)) {
|
|
@@ -47,7 +47,8 @@ class EmailDirect_Integration_Block_Adminhtml_System_Config_Form_Field_Common ex
|
|
| 47 |
$column = $this->_columns[$columnName];
|
| 48 |
$inputName = $this->getElement()->getName() . '[#{_id}][' . $columnName . ']';
|
| 49 |
|
| 50 |
-
if ($column['renderer'])
|
|
|
|
| 51 |
return $column['renderer']->setInputName($inputName)->setColumnName($columnName)->setColumn($column)
|
| 52 |
->toHtml();
|
| 53 |
}
|
|
@@ -59,7 +60,9 @@ class EmailDirect_Integration_Block_Adminhtml_System_Config_Form_Field_Common ex
|
|
| 59 |
(isset($column['class']) ? $column['class'] : 'input-text') . '"'.
|
| 60 |
(isset($column['style']) ? ' style="'.$column['style'] . '"' : '') . '>';
|
| 61 |
//$value = $row->getData($this->getColumn()->getIndex());
|
| 62 |
-
|
|
|
|
|
|
|
| 63 |
//$selected = ( ($val == $value && (!is_null($value))) ? ' selected="selected"' : '' );
|
| 64 |
$html .= '<option #{_selected_' . $this->escapeHtml($val) . '} value="' . $this->escapeHtml($val) . '">';
|
| 65 |
$html .= $this->escapeHtml($label) . '</option>';
|
| 25 |
'style' => empty($params['style']) ? null : $params['style'],
|
| 26 |
'class' => empty($params['class']) ? null : $params['class'],
|
| 27 |
'type' => empty($params['type']) ? null : $params['type'],
|
| 28 |
+
'options' => empty($params['options']) ? array() : $params['options'],
|
| 29 |
'renderer' => false,
|
| 30 |
);
|
| 31 |
if ((!empty($params['renderer'])) && ($params['renderer'] instanceof Mage_Core_Block_Abstract)) {
|
| 47 |
$column = $this->_columns[$columnName];
|
| 48 |
$inputName = $this->getElement()->getName() . '[#{_id}][' . $columnName . ']';
|
| 49 |
|
| 50 |
+
if ($column['renderer'])
|
| 51 |
+
{
|
| 52 |
return $column['renderer']->setInputName($inputName)->setColumnName($columnName)->setColumn($column)
|
| 53 |
->toHtml();
|
| 54 |
}
|
| 60 |
(isset($column['class']) ? $column['class'] : 'input-text') . '"'.
|
| 61 |
(isset($column['style']) ? ' style="'.$column['style'] . '"' : '') . '>';
|
| 62 |
//$value = $row->getData($this->getColumn()->getIndex());
|
| 63 |
+
|
| 64 |
+
foreach ($column['options'] as $val => $label)
|
| 65 |
+
{
|
| 66 |
//$selected = ( ($val == $value && (!is_null($value))) ? ' selected="selected"' : '' );
|
| 67 |
$html .= '<option #{_selected_' . $this->escapeHtml($val) . '} value="' . $this->escapeHtml($val) . '">';
|
| 68 |
$html .= $this->escapeHtml($label) . '</option>';
|
app/code/local/EmailDirect/Integration/Block/Adminhtml/System/Config/Form/Field/Mapfields.php
CHANGED
|
@@ -9,7 +9,7 @@ class EmailDirect_Integration_Block_Adminhtml_System_Config_Form_Field_Mapfields
|
|
| 9 |
'style' => 'width:120px',
|
| 10 |
));
|
| 11 |
$this->addColumn('emaildirect', array(
|
| 12 |
-
'label' => Mage::helper('emaildirect')->__('
|
| 13 |
'style' => 'width:120px',
|
| 14 |
'type' => 'options',
|
| 15 |
'options' => Mage::helper('emaildirect')->getEmailDirectColumnOptions(),
|
| 9 |
'style' => 'width:120px',
|
| 10 |
));
|
| 11 |
$this->addColumn('emaildirect', array(
|
| 12 |
+
'label' => Mage::helper('emaildirect')->__('EmailDirect'),
|
| 13 |
'style' => 'width:120px',
|
| 14 |
'type' => 'options',
|
| 15 |
'options' => Mage::helper('emaildirect')->getEmailDirectColumnOptions(),
|
app/code/local/EmailDirect/Integration/Block/Adminhtml/System/Config/Form/Field/Shippingmapfields.php
CHANGED
|
@@ -12,7 +12,7 @@ class EmailDirect_Integration_Block_Adminhtml_System_Config_Form_Field_Shippingm
|
|
| 12 |
'style' => 'width:120px',
|
| 13 |
));
|
| 14 |
$this->addColumn('emaildirect', array(
|
| 15 |
-
'label' => Mage::helper('emaildirect')->__('
|
| 16 |
'type' => 'options',
|
| 17 |
'options' => Mage::helper('emaildirect')->getEmailDirectColumnOptions(),
|
| 18 |
'style' => 'width:120px',
|
| 12 |
'style' => 'width:120px',
|
| 13 |
));
|
| 14 |
$this->addColumn('emaildirect', array(
|
| 15 |
+
'label' => Mage::helper('emaildirect')->__('EmailDirect'),
|
| 16 |
'type' => 'options',
|
| 17 |
'options' => Mage::helper('emaildirect')->getEmailDirectColumnOptions(),
|
| 18 |
'style' => 'width:120px',
|
app/code/local/EmailDirect/Integration/Block/Adminhtml/System/Config/Form/Field/Troubleshooting.php
CHANGED
|
@@ -83,10 +83,16 @@ class EmailDirect_Integration_Block_Adminhtml_System_Config_Form_Field_Troublesh
|
|
| 83 |
|
| 84 |
$file_date = $helper->getLogFilelastUpdate();
|
| 85 |
|
| 86 |
-
|
|
|
|
|
|
|
|
|
|
| 87 |
|
| 88 |
$ago = $helper->timeElapsed2string($file_date);
|
| 89 |
|
| 90 |
-
|
|
|
|
|
|
|
|
|
|
| 91 |
}
|
| 92 |
}
|
| 83 |
|
| 84 |
$file_date = $helper->getLogFilelastUpdate();
|
| 85 |
|
| 86 |
+
if ($file_date == "")
|
| 87 |
+
$last_update = "";
|
| 88 |
+
else
|
| 89 |
+
$last_update = "<br />" . Mage::helper('core')->formatTime(date("Y-m-d H:i:s",$file_date), 'long', true);
|
| 90 |
|
| 91 |
$ago = $helper->timeElapsed2string($file_date);
|
| 92 |
|
| 93 |
+
if ($ago != "")
|
| 94 |
+
$ago = "<br />({$ago} ago.)";
|
| 95 |
+
|
| 96 |
+
return "emaildirect.log ({$formatted_size}){$last_update}{$ago}";
|
| 97 |
}
|
| 98 |
}
|
app/code/local/EmailDirect/Integration/Block/Adminhtml/Troubleshooting.php
DELETED
|
@@ -1,96 +0,0 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
|
| 3 |
-
class Emaildirect_Integration_Block_Adminhtml_Troubleshooting extends Mage_Adminhtml_Block_Template
|
| 4 |
-
implements Mage_Adminhtml_Block_Widget_Tab_Interface
|
| 5 |
-
{
|
| 6 |
-
/**
|
| 7 |
-
* ######################## TAB settings #################################
|
| 8 |
-
*/
|
| 9 |
-
public function getTabLabel()
|
| 10 |
-
{
|
| 11 |
-
return Mage::helper('sales')->__('Test1');
|
| 12 |
-
}
|
| 13 |
-
|
| 14 |
-
public function getTabTitle()
|
| 15 |
-
{
|
| 16 |
-
return Mage::helper('sales')->__('Test2');
|
| 17 |
-
}
|
| 18 |
-
|
| 19 |
-
public function canShowTab()
|
| 20 |
-
{
|
| 21 |
-
return true;
|
| 22 |
-
}
|
| 23 |
-
|
| 24 |
-
public function isHidden()
|
| 25 |
-
{
|
| 26 |
-
return false;
|
| 27 |
-
}
|
| 28 |
-
|
| 29 |
-
public function __construct()
|
| 30 |
-
{
|
| 31 |
-
parent::__construct();
|
| 32 |
-
$this->setTemplate('emaildirect/troubleshooting/details.phtml');
|
| 33 |
-
}
|
| 34 |
-
|
| 35 |
-
private function getArrayData($data)
|
| 36 |
-
{
|
| 37 |
-
$output = "<table width='100%'><tr><th>Magento</th><th>EmailDirect</th></tr>";
|
| 38 |
-
foreach ($data as $row)
|
| 39 |
-
{
|
| 40 |
-
$output .= "<tr><td>{$row['magento']}</td><td>{$row['emaildirect']}</td></tr>";
|
| 41 |
-
|
| 42 |
-
}
|
| 43 |
-
|
| 44 |
-
$output .= "</table>";
|
| 45 |
-
|
| 46 |
-
return $output;
|
| 47 |
-
}
|
| 48 |
-
|
| 49 |
-
public function getEnvironmentInfo()
|
| 50 |
-
{
|
| 51 |
-
$data = array(
|
| 52 |
-
'Magento Version' => Mage::getVersion(),
|
| 53 |
-
'Magento Edition' => Mage::getEdition(),
|
| 54 |
-
'EmailDirect Version' => (string) Mage::getConfig()->getNode('modules/EmailDirect_Integration/version'),
|
| 55 |
-
'Website URL' => Mage::getBaseUrl(),
|
| 56 |
-
'PHP Version' => phpversion(),
|
| 57 |
-
'Server Software' => $_SERVER['SERVER_SOFTWARE']
|
| 58 |
-
|
| 59 |
-
);
|
| 60 |
-
return $data;
|
| 61 |
-
}
|
| 62 |
-
|
| 63 |
-
public function getConfigurationInfo()
|
| 64 |
-
{
|
| 65 |
-
$data = array();
|
| 66 |
-
|
| 67 |
-
$store = Mage::app()->getStore();
|
| 68 |
-
|
| 69 |
-
$e_config = Mage::getStoreConfig("emaildirect/general", $store);
|
| 70 |
-
|
| 71 |
-
foreach ($e_config as $key => $value)
|
| 72 |
-
{
|
| 73 |
-
if (is_array($value))
|
| 74 |
-
{
|
| 75 |
-
// Ignore for now
|
| 76 |
-
}
|
| 77 |
-
else
|
| 78 |
-
{
|
| 79 |
-
$test_data = @unserialize($value);
|
| 80 |
-
if ($test_data !== false)
|
| 81 |
-
$data[$key] = $this->getArrayData($test_data);
|
| 82 |
-
else
|
| 83 |
-
$data[$key] = $value;;
|
| 84 |
-
}
|
| 85 |
-
}
|
| 86 |
-
|
| 87 |
-
return $data;
|
| 88 |
-
}
|
| 89 |
-
|
| 90 |
-
public function getLogFile()
|
| 91 |
-
{
|
| 92 |
-
$log_file = Mage::getBaseDir('log') . DS. "emaildirect.log";
|
| 93 |
-
|
| 94 |
-
return file_get_contents($log_file);
|
| 95 |
-
}
|
| 96 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/EmailDirect/Integration/Block/Adminhtml/Troubleshooting/View.php
CHANGED
|
@@ -36,7 +36,6 @@ class EmailDirect_Integration_Block_Adminhtml_Troubleshooting_View extends Mage_
|
|
| 36 |
|
| 37 |
public function getUrl($params='', $params2=array())
|
| 38 |
{
|
| 39 |
-
//$params2['order_id'] = $this->getOrderId();
|
| 40 |
return parent::getUrl($params, $params2);
|
| 41 |
}
|
| 42 |
|
| 36 |
|
| 37 |
public function getUrl($params='', $params2=array())
|
| 38 |
{
|
|
|
|
| 39 |
return parent::getUrl($params, $params2);
|
| 40 |
}
|
| 41 |
|
app/code/local/EmailDirect/Integration/Helper/Data.php
CHANGED
|
@@ -17,6 +17,9 @@ class EmailDirect_Integration_Helper_Data extends Mage_Core_Helper_Abstract
|
|
| 17 |
|
| 18 |
public function formatSize($size)
|
| 19 |
{
|
|
|
|
|
|
|
|
|
|
| 20 |
$unit=array('b','kb','mb','gb','tb','pb');
|
| 21 |
return @round($size/pow(1024,($i=floor(log($size,1024)))),2).' '.$unit[$i];
|
| 22 |
}
|
|
@@ -100,19 +103,28 @@ class EmailDirect_Integration_Helper_Data extends Mage_Core_Helper_Abstract
|
|
| 100 |
public function getEmailDirectColumnOptions()
|
| 101 |
{
|
| 102 |
$columns = Mage::getSingleton('emaildirect/wrapper_database')->getAllColumns();
|
| 103 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 104 |
$options = array();
|
| 105 |
|
| 106 |
foreach ($columns as $column)
|
| 107 |
{
|
| 108 |
-
if ($column->IsCustom == 'true')
|
| 109 |
{
|
| 110 |
$key = (string)$column->ColumnName;
|
| 111 |
|
| 112 |
$options[$key] = $key;
|
| 113 |
}
|
| 114 |
}
|
| 115 |
-
|
| 116 |
return $options;
|
| 117 |
}
|
| 118 |
|
|
@@ -128,21 +140,9 @@ class EmailDirect_Integration_Helper_Data extends Mage_Core_Helper_Abstract
|
|
| 128 |
return $options;
|
| 129 |
}
|
| 130 |
|
| 131 |
-
public function getDefaultList($storeId)
|
| 132 |
-
{
|
| 133 |
-
$curstore = Mage::app()->getStore();
|
| 134 |
-
Mage::app()->setCurrentStore($storeId);
|
| 135 |
-
$list = $this->config('list', $storeId);
|
| 136 |
-
Mage::app()->setCurrentStore($curstore);
|
| 137 |
-
return $list;
|
| 138 |
-
}
|
| 139 |
public function getDefaultPublication($storeId)
|
| 140 |
{
|
| 141 |
-
$
|
| 142 |
-
Mage::app()->setCurrentStore($storeId);
|
| 143 |
-
$publication = $this->config('publication', $storeId);
|
| 144 |
-
Mage::app()->setCurrentStore($curstore);
|
| 145 |
-
return $publication;
|
| 146 |
}
|
| 147 |
|
| 148 |
public function getMergeVars($customer, $includeEmail = FALSE)
|
|
@@ -582,7 +582,10 @@ class EmailDirect_Integration_Helper_Data extends Mage_Core_Helper_Abstract
|
|
| 582 |
{
|
| 583 |
$log_file = $this->getLogFilePath();
|
| 584 |
|
| 585 |
-
|
|
|
|
|
|
|
|
|
|
| 586 |
}
|
| 587 |
|
| 588 |
public function getLogFilelastUpdate()
|
|
@@ -641,6 +644,11 @@ class EmailDirect_Integration_Helper_Data extends Mage_Core_Helper_Abstract
|
|
| 641 |
$list_count = 0;
|
| 642 |
$publication_subscribed = false;
|
| 643 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 644 |
foreach($properties->Publications->Publication as $publication)
|
| 645 |
{
|
| 646 |
if ((int) $publication->PublicationID == $data['publication']['id'])
|
|
@@ -663,6 +671,9 @@ class EmailDirect_Integration_Helper_Data extends Mage_Core_Helper_Abstract
|
|
| 663 |
return $data;
|
| 664 |
}
|
| 665 |
|
|
|
|
|
|
|
|
|
|
| 666 |
foreach($properties->Lists->List as $list)
|
| 667 |
{
|
| 668 |
$list_id = (int)$list->ListID;
|
|
@@ -721,7 +732,9 @@ class EmailDirect_Integration_Helper_Data extends Mage_Core_Helper_Abstract
|
|
| 721 |
{
|
| 722 |
$data = array(
|
| 723 |
'publication' => $this->getPublication(),
|
| 724 |
-
'lists' => $this->getLists()
|
|
|
|
|
|
|
| 725 |
);
|
| 726 |
|
| 727 |
$data = $this->getSubscriberData($data, $email);
|
|
@@ -758,6 +771,11 @@ class EmailDirect_Integration_Helper_Data extends Mage_Core_Helper_Abstract
|
|
| 758 |
$this->log($data,self::DISABLED_REASON_PREFIX, $area);
|
| 759 |
}
|
| 760 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 761 |
public function setLogArea($area)
|
| 762 |
{
|
| 763 |
$this->_log_area = $area;
|
| 17 |
|
| 18 |
public function formatSize($size)
|
| 19 |
{
|
| 20 |
+
if ($size == 0 || $size == null || $size = "")
|
| 21 |
+
return "0b";
|
| 22 |
+
|
| 23 |
$unit=array('b','kb','mb','gb','tb','pb');
|
| 24 |
return @round($size/pow(1024,($i=floor(log($size,1024)))),2).' '.$unit[$i];
|
| 25 |
}
|
| 103 |
public function getEmailDirectColumnOptions()
|
| 104 |
{
|
| 105 |
$columns = Mage::getSingleton('emaildirect/wrapper_database')->getAllColumns();
|
| 106 |
+
|
| 107 |
+
$custom_fields = Mage::helper('emaildirect/fields')->getCustomFields(true);
|
| 108 |
+
|
| 109 |
+
$invalid_columns = array();
|
| 110 |
+
|
| 111 |
+
foreach ($custom_fields as $cf)
|
| 112 |
+
{
|
| 113 |
+
$invalid_columns[] = $cf['name'];
|
| 114 |
+
}
|
| 115 |
+
|
| 116 |
$options = array();
|
| 117 |
|
| 118 |
foreach ($columns as $column)
|
| 119 |
{
|
| 120 |
+
if ($column->IsCustom == 'true' && !in_array((string)$column->ColumnName,$invalid_columns))
|
| 121 |
{
|
| 122 |
$key = (string)$column->ColumnName;
|
| 123 |
|
| 124 |
$options[$key] = $key;
|
| 125 |
}
|
| 126 |
}
|
| 127 |
+
|
| 128 |
return $options;
|
| 129 |
}
|
| 130 |
|
| 140 |
return $options;
|
| 141 |
}
|
| 142 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 143 |
public function getDefaultPublication($storeId)
|
| 144 |
{
|
| 145 |
+
return $this->config('publication', $storeId);
|
|
|
|
|
|
|
|
|
|
|
|
|
| 146 |
}
|
| 147 |
|
| 148 |
public function getMergeVars($customer, $includeEmail = FALSE)
|
| 582 |
{
|
| 583 |
$log_file = $this->getLogFilePath();
|
| 584 |
|
| 585 |
+
if (file_exists($log_file))
|
| 586 |
+
return filesize($log_file);
|
| 587 |
+
|
| 588 |
+
return 0;
|
| 589 |
}
|
| 590 |
|
| 591 |
public function getLogFilelastUpdate()
|
| 644 |
$list_count = 0;
|
| 645 |
$publication_subscribed = false;
|
| 646 |
|
| 647 |
+
//CHECK THAT THERE ARE PUBLICATIONS?
|
| 648 |
+
|
| 649 |
+
if (!isset($properties->Publications->Publication))
|
| 650 |
+
return $data;
|
| 651 |
+
|
| 652 |
foreach($properties->Publications->Publication as $publication)
|
| 653 |
{
|
| 654 |
if ((int) $publication->PublicationID == $data['publication']['id'])
|
| 671 |
return $data;
|
| 672 |
}
|
| 673 |
|
| 674 |
+
if (!isset($properties->Lists->List))
|
| 675 |
+
return $data;
|
| 676 |
+
|
| 677 |
foreach($properties->Lists->List as $list)
|
| 678 |
{
|
| 679 |
$list_id = (int)$list->ListID;
|
| 732 |
{
|
| 733 |
$data = array(
|
| 734 |
'publication' => $this->getPublication(),
|
| 735 |
+
'lists' => $this->getLists(),
|
| 736 |
+
'count' => 0,
|
| 737 |
+
'list_count' => 0
|
| 738 |
);
|
| 739 |
|
| 740 |
$data = $this->getSubscriberData($data, $email);
|
| 771 |
$this->log($data,self::DISABLED_REASON_PREFIX, $area);
|
| 772 |
}
|
| 773 |
|
| 774 |
+
public function logException($e, $area = "")
|
| 775 |
+
{
|
| 776 |
+
$this->log($e->__toString(),"Exception", $area);
|
| 777 |
+
}
|
| 778 |
+
|
| 779 |
public function setLogArea($area)
|
| 780 |
{
|
| 781 |
$this->_log_area = $area;
|
app/code/local/EmailDirect/Integration/Helper/Fields.php
CHANGED
|
@@ -96,7 +96,7 @@ class EmailDirect_Integration_Helper_Fields extends Mage_Core_Helper_Abstract
|
|
| 96 |
return $missing;
|
| 97 |
}
|
| 98 |
|
| 99 |
-
public function
|
| 100 |
{
|
| 101 |
$fields = array();
|
| 102 |
|
|
@@ -124,6 +124,13 @@ class EmailDirect_Integration_Helper_Fields extends Mage_Core_Helper_Abstract
|
|
| 124 |
|
| 125 |
$fields = $this->getMultiFields($fields,"AB");
|
| 126 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 127 |
$missing = $this->getMissingColumns($fields);
|
| 128 |
|
| 129 |
if (count($missing) > 0)
|
| 96 |
return $missing;
|
| 97 |
}
|
| 98 |
|
| 99 |
+
public function getCustomFields($force_product = false)
|
| 100 |
{
|
| 101 |
$fields = array();
|
| 102 |
|
| 124 |
|
| 125 |
$fields = $this->getMultiFields($fields,"AB");
|
| 126 |
|
| 127 |
+
return $fields;
|
| 128 |
+
}
|
| 129 |
+
|
| 130 |
+
public function verifyFields($force_product = false)
|
| 131 |
+
{
|
| 132 |
+
$fields = $this->getCustomFields($force_product);
|
| 133 |
+
|
| 134 |
$missing = $this->getMissingColumns($fields);
|
| 135 |
|
| 136 |
if (count($missing) > 0)
|
app/code/local/EmailDirect/Integration/Model/Observer.php
CHANGED
|
@@ -16,113 +16,129 @@ class EmailDirect_Integration_Model_Observer
|
|
| 16 |
*/
|
| 17 |
public function handleSubscriber(Varien_Event_Observer $observer)
|
| 18 |
{
|
| 19 |
-
|
| 20 |
-
$this->_helper->log('handleSubscriber Start');
|
| 21 |
-
|
| 22 |
-
if (!$this->_helper->canEdirect())
|
| 23 |
-
{
|
| 24 |
-
$this->_helper->logReason($this->_helper->getDisabledReason());
|
| 25 |
-
return $observer;
|
| 26 |
-
}
|
| 27 |
-
|
| 28 |
-
$subscriber = $observer->getEvent()->getSubscriber();
|
| 29 |
-
$subscriber->setImportMode(false);
|
| 30 |
-
|
| 31 |
-
$email = $subscriber->getSubscriberEmail();
|
| 32 |
-
$listId = $this->_helper->getDefaultPublication($subscriber->getStoreId());
|
| 33 |
-
$isConfirmNeed = (Mage::getStoreConfig(Mage_Newsletter_Model_Subscriber::XML_PATH_CONFIRMATION_FLAG, $subscriber->getStoreId()) == 1) ? TRUE : FALSE;
|
| 34 |
-
|
| 35 |
-
//New subscriber, just add
|
| 36 |
-
if( $subscriber->isObjectNew() )
|
| 37 |
{
|
| 38 |
-
$this->_helper->
|
| 39 |
-
|
|
|
|
|
|
|
| 40 |
{
|
| 41 |
-
$this->_helper->
|
| 42 |
-
$
|
| 43 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 44 |
{
|
| 45 |
-
$this->_helper->log("
|
| 46 |
-
$
|
| 47 |
-
|
| 48 |
-
|
| 49 |
-
|
| 50 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 51 |
}
|
| 52 |
else
|
| 53 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 54 |
}
|
| 55 |
else
|
| 56 |
{
|
| 57 |
-
$this->_helper->log("
|
| 58 |
-
$subscriber->
|
| 59 |
-
$merge_vars = $this->_mergeVars($subscriber);
|
| 60 |
-
|
| 61 |
-
$this->_helper->log($merge_vars,"Merge Vars");
|
| 62 |
-
|
| 63 |
-
$rc = Mage::getSingleton('emaildirect/wrapper_subscribers')
|
| 64 |
-
->subscriberAdd($email,$merge_vars);
|
| 65 |
-
}
|
| 66 |
-
}
|
| 67 |
-
else
|
| 68 |
-
{
|
| 69 |
-
$this->_helper->log("Existing Subscriber");
|
| 70 |
-
$status = (int)$subscriber->getData('subscriber_status');
|
| 71 |
-
|
| 72 |
-
$oldSubscriber = Mage::getModel('newsletter/subscriber')
|
| 73 |
-
->load($subscriber->getId());
|
| 74 |
-
$oldstatus = (int)$oldSubscriber->getOrigData('subscriber_status');
|
| 75 |
-
if ($oldstatus == Mage_Newsletter_Model_Subscriber::STATUS_UNCONFIRMED && $status == Mage_Newsletter_Model_Subscriber::STATUS_SUBSCRIBED)
|
| 76 |
-
{
|
| 77 |
-
$this->_helper->log("Unconfirmed to Subscribed");
|
| 78 |
-
$subscriber->setSubscriberStatus(Mage_Newsletter_Model_Subscriber::STATUS_SUBSCRIBED);
|
| 79 |
-
$merge_vars = $this->_mergeVars($subscriber);
|
| 80 |
|
| 81 |
-
$
|
| 82 |
-
|
| 83 |
-
|
| 84 |
-
|
| 85 |
-
elseif( $status !== $oldstatus )
|
| 86 |
-
{
|
| 87 |
-
//Status change
|
| 88 |
-
$this->_helper->log("Status Change");
|
| 89 |
-
|
| 90 |
-
//Unsubscribe customer
|
| 91 |
-
if($status == Mage_Newsletter_Model_Subscriber::STATUS_UNSUBSCRIBED)
|
| 92 |
{
|
| 93 |
-
$this->_helper->log("
|
| 94 |
-
$
|
| 95 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 96 |
}
|
| 97 |
-
|
| 98 |
{
|
| 99 |
-
|
| 100 |
-
|
|
|
|
|
|
|
|
|
|
| 101 |
{
|
| 102 |
-
$this->_helper->log("
|
| 103 |
$rc = Mage::getSingleton('emaildirect/wrapper_publications')
|
| 104 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 105 |
}
|
| 106 |
-
else
|
| 107 |
-
$this->_helper->log("Status Not Changed");
|
| 108 |
}
|
| 109 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 110 |
}
|
| 111 |
-
$this->_helper->log('handleSubscriber End');
|
| 112 |
}
|
| 113 |
|
| 114 |
// Remove Unsubscribe option from Newsletter grid
|
| 115 |
public function updateNewsletterMassAction($observer)
|
| 116 |
{
|
| 117 |
-
|
| 118 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 119 |
|
| 120 |
-
|
| 121 |
-
|
| 122 |
-
|
| 123 |
-
|
|
|
|
|
|
|
|
|
|
| 124 |
{
|
| 125 |
-
$
|
|
|
|
| 126 |
}
|
| 127 |
}
|
| 128 |
|
|
@@ -132,23 +148,31 @@ class EmailDirect_Integration_Model_Observer
|
|
| 132 |
*/
|
| 133 |
public function handleSubscriberDeletion(Varien_Event_Observer $observer)
|
| 134 |
{
|
| 135 |
-
|
| 136 |
-
$this->_helper->log("Handle Subscriber Deletion Start");
|
| 137 |
-
|
| 138 |
-
if (!$this->_helper->canEdirect())
|
| 139 |
{
|
| 140 |
-
$this->_helper->
|
| 141 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 142 |
}
|
| 143 |
-
|
| 144 |
-
$subscriber = $observer->getEvent()->getSubscriber();
|
| 145 |
-
|
| 146 |
-
$email = $subscriber->getSubscriberEmail();
|
| 147 |
-
|
| 148 |
-
$rc = Mage::getSingleton('emaildirect/wrapper_subscribers')
|
| 149 |
-
->subscriberDelete($email);
|
| 150 |
-
|
| 151 |
-
$this->_helper->log("Handle Subscriber Deletion End");
|
| 152 |
}
|
| 153 |
|
| 154 |
private function validateSource($source, $sources, $store)
|
|
@@ -213,6 +237,7 @@ class EmailDirect_Integration_Model_Observer
|
|
| 213 |
if ($apiKey == '')
|
| 214 |
{
|
| 215 |
$this->_helper->updateConfig('setup', false, $store);
|
|
|
|
| 216 |
return $observer;
|
| 217 |
}
|
| 218 |
|
|
@@ -404,65 +429,81 @@ class EmailDirect_Integration_Model_Observer
|
|
| 404 |
|
| 405 |
public function updateCustomer(Varien_Event_Observer $observer)
|
| 406 |
{
|
| 407 |
-
|
| 408 |
-
$this->_helper->log("Update Customer Start");
|
| 409 |
-
|
| 410 |
-
if (!$this->_helper->canEdirect())
|
| 411 |
-
{
|
| 412 |
-
$this->_helper->logReason($this->_helper->getDisabledReason());
|
| 413 |
-
return $observer;
|
| 414 |
-
}
|
| 415 |
-
|
| 416 |
-
$store = Mage::app()->getStore()->getId();
|
| 417 |
-
$customer = $observer->getEvent()->getCustomer();
|
| 418 |
-
|
| 419 |
-
$merge_vars = $this->_mergeVars($customer, TRUE);
|
| 420 |
-
|
| 421 |
-
$this->_helper->log($merge_vars,"Merge Vars");
|
| 422 |
-
|
| 423 |
-
$api = Mage::getSingleton('emaildirect/wrapper_subscribers');
|
| 424 |
-
|
| 425 |
-
$oldEmail = $customer->getOrigData('email');
|
| 426 |
-
$email = $customer->getEmail();
|
| 427 |
-
|
| 428 |
-
if ($oldEmail == '')
|
| 429 |
{
|
| 430 |
-
$this->_helper->
|
| 431 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 432 |
}
|
| 433 |
-
|
| 434 |
{
|
| 435 |
-
$
|
| 436 |
-
|
| 437 |
-
|
| 438 |
-
$this->_helper->log("Adding Subscriber");
|
| 439 |
-
$rc = $api->subscriberAdd($email,$merge_vars);
|
| 440 |
}
|
| 441 |
-
else
|
| 442 |
-
$this->_helper->logReason("Email has not been changed");
|
| 443 |
-
|
| 444 |
-
$this->_helper->log("Update Customer End");
|
| 445 |
|
| 446 |
return $observer;
|
| 447 |
}
|
| 448 |
|
| 449 |
public function registerCheckoutSubscribe(Varien_Event_Observer $observer)
|
| 450 |
{
|
| 451 |
-
|
| 452 |
-
$this->_helper->log("Register Checkout Subscribe Start");
|
| 453 |
-
if(!$this->_helper->canEdirect())
|
| 454 |
{
|
| 455 |
-
$this->_helper->
|
| 456 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 457 |
}
|
| 458 |
-
|
| 459 |
-
|
| 460 |
-
if(!is_null($subscribe))
|
| 461 |
{
|
| 462 |
-
Mage::
|
|
|
|
| 463 |
}
|
| 464 |
-
|
| 465 |
-
$this->_helper->log("Register Checkout Subscribe End");
|
| 466 |
}
|
| 467 |
|
| 468 |
/**
|
|
@@ -470,158 +511,182 @@ class EmailDirect_Integration_Model_Observer
|
|
| 470 |
*/
|
| 471 |
public function registerCheckoutSuccess(Varien_Event_Observer $observer)
|
| 472 |
{
|
| 473 |
-
|
| 474 |
-
$this->_helper->log("Register Checkout Success Start");
|
| 475 |
-
if(!$this->_helper->canEdirect())
|
| 476 |
-
{
|
| 477 |
-
$this->_helper->logReason($this->_helper->getDisabledReason());
|
| 478 |
-
return;
|
| 479 |
-
}
|
| 480 |
-
|
| 481 |
-
$sessionFlag = Mage::getSingleton('core/session')->getEmaildirectCheckout(TRUE);
|
| 482 |
-
if (!$sessionFlag)
|
| 483 |
-
{
|
| 484 |
-
$this->_helper->logReason("Session flag not found.");
|
| 485 |
-
return;
|
| 486 |
-
}
|
| 487 |
-
|
| 488 |
-
$orderId = (int)current($observer->getEvent()->getOrderIds());
|
| 489 |
-
|
| 490 |
-
if (!$orderId)
|
| 491 |
{
|
| 492 |
-
$this->_helper->
|
| 493 |
-
|
| 494 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 495 |
|
| 496 |
-
|
| 497 |
-
|
| 498 |
-
|
| 499 |
-
|
| 500 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 501 |
}
|
| 502 |
-
|
| 503 |
-
$this->_helper->log("Processing Order # " . $order->getIncrementId());
|
| 504 |
-
|
| 505 |
-
//Guest Checkout
|
| 506 |
-
if( (int)$order->getCustomerGroupId() === Mage_Customer_Model_Group::NOT_LOGGED_IN_ID )
|
| 507 |
{
|
| 508 |
-
$
|
| 509 |
-
$this->_helper->
|
| 510 |
}
|
| 511 |
-
|
| 512 |
-
$rc = $subscriber = Mage::getModel('newsletter/subscriber')
|
| 513 |
-
->subscribe($order->getCustomerEmail());
|
| 514 |
-
|
| 515 |
-
$this->_helper->log("Register Checkout Success End");
|
| 516 |
}
|
| 517 |
|
| 518 |
public function salesOrderShipmentTrackSaveAfter(Varien_Event_Observer $observer)
|
| 519 |
{
|
| 520 |
-
|
| 521 |
-
$this->_helper->log("Sales Order Shipment Track Save After Start");
|
| 522 |
-
if(!$this->_helper->canEdirect())
|
| 523 |
-
{
|
| 524 |
-
$this->_helper->logReason($this->_helper->getDisabledReason());
|
| 525 |
-
return;
|
| 526 |
-
}
|
| 527 |
-
$track = $observer->getEvent()->getTrack();
|
| 528 |
-
|
| 529 |
-
$order = $track->getShipment()->getOrder();
|
| 530 |
-
$shippingMethod = $order->getShippingMethod(); // String in format of 'carrier_method'
|
| 531 |
-
if (!$shippingMethod)
|
| 532 |
{
|
| 533 |
-
$this->_helper->
|
| 534 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 535 |
}
|
| 536 |
-
|
| 537 |
-
$email = $order->getCustomerEmail();
|
| 538 |
-
|
| 539 |
-
$merge_vars = array();
|
| 540 |
-
|
| 541 |
-
$merge_vars = $this->_helper->getTrackingMergeVars($track, $order);
|
| 542 |
-
|
| 543 |
-
if ($merge_vars == null)
|
| 544 |
{
|
| 545 |
-
$
|
| 546 |
-
|
| 547 |
}
|
| 548 |
-
|
| 549 |
-
$this->_helper->log($merge_vars,"Merge Vars");
|
| 550 |
-
|
| 551 |
-
$rc = Mage::getSingleton('emaildirect/wrapper_orders')->addSubscriberTracking($email, $merge_vars);
|
| 552 |
-
|
| 553 |
-
$this->_helper->log("Sales Order Shipment Track Save After Start");
|
| 554 |
-
|
| 555 |
-
return $observer;
|
| 556 |
}
|
| 557 |
|
| 558 |
public function orderSaveAfter(Varien_Event_Observer $observer)
|
| 559 |
{
|
| 560 |
-
|
| 561 |
-
$this->_helper->log("Order Save After Start");
|
| 562 |
-
|
| 563 |
-
if (!$this->_helper->getOrdersEnabled())
|
| 564 |
{
|
| 565 |
-
$this->_helper->
|
| 566 |
-
|
| 567 |
-
|
| 568 |
-
|
| 569 |
-
|
| 570 |
-
|
| 571 |
-
|
| 572 |
-
|
| 573 |
-
|
| 574 |
-
|
| 575 |
-
|
| 576 |
-
|
| 577 |
-
|
| 578 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 579 |
|
| 580 |
-
|
| 581 |
-
|
| 582 |
-
|
| 583 |
-
|
| 584 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 585 |
|
| 586 |
-
|
| 587 |
-
|
| 588 |
-
|
| 589 |
-
|
| 590 |
-
|
| 591 |
-
|
| 592 |
-
|
| 593 |
-
|
| 594 |
-
|
| 595 |
-
|
| 596 |
-
|
| 597 |
-
|
| 598 |
-
|
| 599 |
-
|
| 600 |
-
|
| 601 |
-
|
| 602 |
-
$merge_vars = $this->_helper->getMergeVars($customer, true);
|
| 603 |
-
$merge_vars = $this->_helper->getOrderMergeVars($merge_vars,$order);
|
| 604 |
-
|
| 605 |
-
if ($this->_helper->config('save_latest_order'))
|
| 606 |
-
{
|
| 607 |
-
$this->_helper->log("Getting Latest Order Info");
|
| 608 |
-
$merge_vars['LastOrderNumber'] = $order->getIncrementId();
|
| 609 |
-
$merge_vars['LastPurchaseDate'] = $order->getData('created_at');
|
| 610 |
-
$merge_vars['LastPurchaseTotal'] = Mage::helper('core')->currency($order->getData('total_paid'), true, false);
|
| 611 |
|
| 612 |
-
$
|
| 613 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 614 |
}
|
| 615 |
-
|
| 616 |
-
$this->_helper->log($merge_vars, "Merge Vars");
|
| 617 |
-
|
| 618 |
-
Mage::helper('emaildirect/fields')->checkFields();
|
| 619 |
-
|
| 620 |
-
$rc = Mage::getSingleton('emaildirect/wrapper_orders')->addSubscriberOrder($email,$order, $merge_vars);
|
| 621 |
-
|
| 622 |
-
$this->_helper->log("Order Save After End");
|
| 623 |
-
|
| 624 |
-
return $observer;
|
| 625 |
}
|
| 626 |
|
| 627 |
// START ABANDONED CRON
|
|
@@ -675,6 +740,7 @@ class EmailDirect_Integration_Model_Observer
|
|
| 675 |
catch (Exception $e)
|
| 676 |
{
|
| 677 |
Mage::logException($e);
|
|
|
|
| 678 |
}
|
| 679 |
}
|
| 680 |
|
|
@@ -753,7 +819,7 @@ class EmailDirect_Integration_Model_Observer
|
|
| 753 |
if (!$subscribers)
|
| 754 |
{
|
| 755 |
$this->_helper->logReason("No Carts Found");
|
| 756 |
-
return
|
| 757 |
}
|
| 758 |
|
| 759 |
$this->_helper->log("Sending Abandoned Carts");
|
|
@@ -763,84 +829,108 @@ class EmailDirect_Integration_Model_Observer
|
|
| 763 |
|
| 764 |
public function abandonedStoreProcessor($store, $check_date)
|
| 765 |
{
|
| 766 |
-
|
| 767 |
-
|
| 768 |
-
$this->_helper->log("Processing Store: {$store_code}");
|
| 769 |
-
|
| 770 |
-
if (!$this->_helper->getAbandonedEnabled())
|
| 771 |
{
|
| 772 |
-
$
|
| 773 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 774 |
}
|
| 775 |
-
|
| 776 |
-
Mage::helper('emaildirect/fields')->checkFields();
|
| 777 |
-
|
| 778 |
-
// Get abandoned collection
|
| 779 |
-
$collection = Mage::getResourceModel('reports/quote_collection');
|
| 780 |
-
|
| 781 |
-
$collection->addFieldToFilter('items_count', array('neq' => '0'))
|
| 782 |
-
->addFieldToFilter('main_table.is_active', '1')
|
| 783 |
-
->setOrder('updated_at');
|
| 784 |
-
|
| 785 |
-
$collection->addFieldToFilter('main_table.updated_at', array('lt' => $check_date));
|
| 786 |
-
$collection->addFieldToFilter('main_table.emaildirect_abandoned_date', array('null' => true));
|
| 787 |
-
$collection->addFieldToFilter('main_table.emaildirect_abandoned_url', array('notnull' => true));
|
| 788 |
-
$collection->addFieldToFilter('main_table.customer_email', array('notnull' => true));
|
| 789 |
-
|
| 790 |
-
$collection->addFieldToFilter('store_id', array('eq' => $store->getId()));
|
| 791 |
-
|
| 792 |
-
$this->_helper->log("SQL: " . $collection->getSelect()->__toString());
|
| 793 |
-
|
| 794 |
-
$this->_abandonedCartsProcessor($collection);
|
| 795 |
-
|
| 796 |
-
$this->_helper->log("Finished Processing Store: {$store_code}");
|
| 797 |
}
|
| 798 |
|
| 799 |
public function abandonedCartsProcessor()
|
| 800 |
{
|
| 801 |
-
|
| 802 |
-
|
| 803 |
-
|
| 804 |
-
|
| 805 |
-
|
| 806 |
-
|
| 807 |
-
|
| 808 |
-
$stores = Mage::app()->getStores();
|
| 809 |
-
|
| 810 |
-
$starting_store = Mage::app()->getStore()->getCode();
|
| 811 |
-
|
| 812 |
-
foreach ($stores as $store)
|
| 813 |
-
{
|
| 814 |
-
Mage::app()->setCurrentStore($store->getCode());
|
| 815 |
|
| 816 |
-
$this->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 817 |
}
|
| 818 |
-
|
| 819 |
-
Mage::app()->setCurrentStore($starting_store);
|
| 820 |
-
|
| 821 |
-
$this->_helper->log("Abandoned Carts Processor End");
|
| 822 |
}
|
| 823 |
|
| 824 |
public function SendAbandonedCarts($id_list)
|
| 825 |
{
|
| 826 |
-
|
| 827 |
-
|
| 828 |
-
|
| 829 |
-
|
| 830 |
-
|
| 831 |
-
|
| 832 |
-
|
| 833 |
-
|
| 834 |
-
|
| 835 |
-
|
| 836 |
-
|
| 837 |
-
|
| 838 |
-
|
| 839 |
-
|
| 840 |
-
|
| 841 |
-
|
| 842 |
-
|
| 843 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 844 |
}
|
| 845 |
// END ABANDONED CRON
|
| 846 |
|
|
@@ -899,30 +989,38 @@ class EmailDirect_Integration_Model_Observer
|
|
| 899 |
|
| 900 |
public function quoteSaveAfter(Varien_Event_Observer $observer)
|
| 901 |
{
|
| 902 |
-
|
| 903 |
-
|
| 904 |
-
|
| 905 |
-
|
| 906 |
-
|
| 907 |
-
|
| 908 |
-
|
| 909 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 910 |
}
|
| 911 |
-
|
| 912 |
-
$url = $this->getAbandonedUrl($quote);
|
| 913 |
-
|
| 914 |
-
$this->_helper->log("Abandoned Url: {$url}");
|
| 915 |
-
|
| 916 |
-
if ($quote->getEmaildirectAbandonedUrl() == $url)
|
| 917 |
{
|
| 918 |
-
$
|
| 919 |
-
|
| 920 |
}
|
| 921 |
-
|
| 922 |
-
$this->_helper->log("Saving Quote.");
|
| 923 |
-
// Re-save quote with new URL
|
| 924 |
-
$this->setAbandonedUrl($quote, $url);
|
| 925 |
-
$this->_helper->log("Quote Save After End");
|
| 926 |
}
|
| 927 |
// END QUOTE SAVE AFTER
|
| 928 |
}
|
| 16 |
*/
|
| 17 |
public function handleSubscriber(Varien_Event_Observer $observer)
|
| 18 |
{
|
| 19 |
+
try
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 20 |
{
|
| 21 |
+
$this->_helper->setLogArea(EmailDirect_Integration_Helper_Data::NEWSLETTER);
|
| 22 |
+
$this->_helper->log('handleSubscriber Start');
|
| 23 |
+
|
| 24 |
+
if (!$this->_helper->canEdirect())
|
| 25 |
{
|
| 26 |
+
$this->_helper->logReason($this->_helper->getDisabledReason());
|
| 27 |
+
return $observer;
|
| 28 |
+
}
|
| 29 |
+
|
| 30 |
+
$subscriber = $observer->getEvent()->getSubscriber();
|
| 31 |
+
$subscriber->setImportMode(false);
|
| 32 |
+
|
| 33 |
+
$email = $subscriber->getSubscriberEmail();
|
| 34 |
+
$listId = $this->_helper->getDefaultPublication($subscriber->getStoreId());
|
| 35 |
+
$isConfirmNeed = (Mage::getStoreConfig(Mage_Newsletter_Model_Subscriber::XML_PATH_CONFIRMATION_FLAG, $subscriber->getStoreId()) == 1) ? TRUE : FALSE;
|
| 36 |
+
|
| 37 |
+
//New subscriber, just add
|
| 38 |
+
if( $subscriber->isObjectNew() )
|
| 39 |
+
{
|
| 40 |
+
$this->_helper->log("New Subscriber");
|
| 41 |
+
if( TRUE === $isConfirmNeed )
|
| 42 |
{
|
| 43 |
+
$this->_helper->log("Confirmation Needed");
|
| 44 |
+
$subscriber->setSubscriberStatus(Mage_Newsletter_Model_Subscriber::STATUS_UNCONFIRMED);
|
| 45 |
+
if( !Mage::helper('customer')->isLoggedIn() && Mage::registry('ed_guest_customer'))
|
| 46 |
+
{
|
| 47 |
+
$this->_helper->log("Guest Customer");
|
| 48 |
+
$guestCustomer = Mage::registry('ed_guest_customer');
|
| 49 |
+
$subscriber->setFirstname($guestCustomer->getFirstname());
|
| 50 |
+
$subscriber->setLastname($guestCustomer->getLastname());
|
| 51 |
+
Mage::unregister('ed_guest_customer');
|
| 52 |
+
$subscriber->save();
|
| 53 |
+
}
|
| 54 |
+
else
|
| 55 |
+
$this->_helper->log("Not a Guest Customer (Doing Nothing?)");
|
| 56 |
}
|
| 57 |
else
|
| 58 |
+
{
|
| 59 |
+
$this->_helper->log("Confirmation Not Required");
|
| 60 |
+
$subscriber->setSubscriberStatus(Mage_Newsletter_Model_Subscriber::STATUS_SUBSCRIBED);
|
| 61 |
+
$merge_vars = $this->_mergeVars($subscriber);
|
| 62 |
+
|
| 63 |
+
$this->_helper->log($merge_vars,"Merge Vars");
|
| 64 |
+
|
| 65 |
+
$rc = Mage::getSingleton('emaildirect/wrapper_subscribers')
|
| 66 |
+
->subscriberAdd($email,$merge_vars);
|
| 67 |
+
}
|
| 68 |
}
|
| 69 |
else
|
| 70 |
{
|
| 71 |
+
$this->_helper->log("Existing Subscriber");
|
| 72 |
+
$status = (int)$subscriber->getData('subscriber_status');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 73 |
|
| 74 |
+
$oldSubscriber = Mage::getModel('newsletter/subscriber')
|
| 75 |
+
->load($subscriber->getId());
|
| 76 |
+
$oldstatus = (int)$oldSubscriber->getOrigData('subscriber_status');
|
| 77 |
+
if ($oldstatus == Mage_Newsletter_Model_Subscriber::STATUS_UNCONFIRMED && $status == Mage_Newsletter_Model_Subscriber::STATUS_SUBSCRIBED)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 78 |
{
|
| 79 |
+
$this->_helper->log("Unconfirmed to Subscribed");
|
| 80 |
+
$subscriber->setSubscriberStatus(Mage_Newsletter_Model_Subscriber::STATUS_SUBSCRIBED);
|
| 81 |
+
$merge_vars = $this->_mergeVars($subscriber);
|
| 82 |
+
|
| 83 |
+
$this->_helper->log($merge_vars,"Merge Vars");
|
| 84 |
+
$rc = Mage::getSingleton('emaildirect/wrapper_subscribers')
|
| 85 |
+
->subscriberAdd($email,$merge_vars);
|
| 86 |
}
|
| 87 |
+
elseif( $status !== $oldstatus )
|
| 88 |
{
|
| 89 |
+
//Status change
|
| 90 |
+
$this->_helper->log("Status Change");
|
| 91 |
+
|
| 92 |
+
//Unsubscribe customer
|
| 93 |
+
if($status == Mage_Newsletter_Model_Subscriber::STATUS_UNSUBSCRIBED)
|
| 94 |
{
|
| 95 |
+
$this->_helper->log("Unsubscribed");
|
| 96 |
$rc = Mage::getSingleton('emaildirect/wrapper_publications')
|
| 97 |
+
->unsubscribe($listId, $email);
|
| 98 |
+
}
|
| 99 |
+
else if($status == Mage_Newsletter_Model_Subscriber::STATUS_SUBSCRIBED)
|
| 100 |
+
{
|
| 101 |
+
$this->_helper->log("Subscribed");
|
| 102 |
+
if( $oldstatus == Mage_Newsletter_Model_Subscriber::STATUS_NOT_ACTIVE || $oldstatus == Mage_Newsletter_Model_Subscriber::STATUS_UNSUBSCRIBED )
|
| 103 |
+
{
|
| 104 |
+
$this->_helper->log("Changing Status");
|
| 105 |
+
$rc = Mage::getSingleton('emaildirect/wrapper_publications')
|
| 106 |
+
->subscribe($listId, $email);
|
| 107 |
+
}
|
| 108 |
+
else
|
| 109 |
+
$this->_helper->log("Status Not Changed");
|
| 110 |
}
|
|
|
|
|
|
|
| 111 |
}
|
| 112 |
}
|
| 113 |
+
$this->_helper->log('handleSubscriber End');
|
| 114 |
+
}
|
| 115 |
+
catch (Exception $e)
|
| 116 |
+
{
|
| 117 |
+
Mage::logException($e);
|
| 118 |
+
$this->_helper->logException($e);
|
| 119 |
}
|
|
|
|
| 120 |
}
|
| 121 |
|
| 122 |
// Remove Unsubscribe option from Newsletter grid
|
| 123 |
public function updateNewsletterMassAction($observer)
|
| 124 |
{
|
| 125 |
+
try
|
| 126 |
+
{
|
| 127 |
+
if (!$this->_helper->canEdirect())
|
| 128 |
+
return $observer;
|
| 129 |
+
|
| 130 |
+
$block = $observer->getEvent()->getBlock();
|
| 131 |
|
| 132 |
+
if (get_class($block) =='Mage_Adminhtml_Block_Widget_Grid_Massaction'
|
| 133 |
+
&& $block->getRequest()->getControllerName() == 'newsletter_subscriber')
|
| 134 |
+
{
|
| 135 |
+
$block->removeItem('unsubscribe');
|
| 136 |
+
}
|
| 137 |
+
}
|
| 138 |
+
catch (Exception $e)
|
| 139 |
{
|
| 140 |
+
Mage::logException($e);
|
| 141 |
+
$this->_helper->logException($e);
|
| 142 |
}
|
| 143 |
}
|
| 144 |
|
| 148 |
*/
|
| 149 |
public function handleSubscriberDeletion(Varien_Event_Observer $observer)
|
| 150 |
{
|
| 151 |
+
try
|
|
|
|
|
|
|
|
|
|
| 152 |
{
|
| 153 |
+
$this->_helper->setLogArea(EmailDirect_Integration_Helper_Data::NEWSLETTER);
|
| 154 |
+
$this->_helper->log("Handle Subscriber Deletion Start");
|
| 155 |
+
|
| 156 |
+
if (!$this->_helper->canEdirect())
|
| 157 |
+
{
|
| 158 |
+
$this->_helper->logReason($this->_helper->getDisabledReason());
|
| 159 |
+
return $observer;
|
| 160 |
+
}
|
| 161 |
+
|
| 162 |
+
$subscriber = $observer->getEvent()->getSubscriber();
|
| 163 |
+
|
| 164 |
+
$email = $subscriber->getSubscriberEmail();
|
| 165 |
+
|
| 166 |
+
$rc = Mage::getSingleton('emaildirect/wrapper_subscribers')
|
| 167 |
+
->subscriberDelete($email);
|
| 168 |
+
|
| 169 |
+
$this->_helper->log("Handle Subscriber Deletion End");
|
| 170 |
+
}
|
| 171 |
+
catch (Exception $e)
|
| 172 |
+
{
|
| 173 |
+
Mage::logException($e);
|
| 174 |
+
$this->_helper->logException($e);
|
| 175 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 176 |
}
|
| 177 |
|
| 178 |
private function validateSource($source, $sources, $store)
|
| 237 |
if ($apiKey == '')
|
| 238 |
{
|
| 239 |
$this->_helper->updateConfig('setup', false, $store);
|
| 240 |
+
$this->_helper->updateConfig('active', false, $store);
|
| 241 |
return $observer;
|
| 242 |
}
|
| 243 |
|
| 429 |
|
| 430 |
public function updateCustomer(Varien_Event_Observer $observer)
|
| 431 |
{
|
| 432 |
+
try
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 433 |
{
|
| 434 |
+
$this->_helper->setLogArea(EmailDirect_Integration_Helper_Data::CUSTOMER);
|
| 435 |
+
$this->_helper->log("Update Customer Start");
|
| 436 |
+
|
| 437 |
+
if (!$this->_helper->canEdirect())
|
| 438 |
+
{
|
| 439 |
+
$this->_helper->logReason($this->_helper->getDisabledReason());
|
| 440 |
+
return $observer;
|
| 441 |
+
}
|
| 442 |
+
|
| 443 |
+
$store = Mage::app()->getStore()->getId();
|
| 444 |
+
$customer = $observer->getEvent()->getCustomer();
|
| 445 |
+
|
| 446 |
+
$merge_vars = $this->_mergeVars($customer, TRUE);
|
| 447 |
+
|
| 448 |
+
$this->_helper->log($merge_vars,"Merge Vars");
|
| 449 |
+
|
| 450 |
+
$api = Mage::getSingleton('emaildirect/wrapper_subscribers');
|
| 451 |
+
|
| 452 |
+
$oldEmail = $customer->getOrigData('email');
|
| 453 |
+
$email = $customer->getEmail();
|
| 454 |
+
|
| 455 |
+
if ($oldEmail == '')
|
| 456 |
+
{
|
| 457 |
+
$this->_helper->log("Original Email was blank. Adding Subscriber");
|
| 458 |
+
$rc = $api->subscriberAdd($email,$merge_vars);
|
| 459 |
+
}
|
| 460 |
+
elseif ($oldEmail != $email)
|
| 461 |
+
{
|
| 462 |
+
$this->_helper->log("Modifying Email");
|
| 463 |
+
$rc = $api->mailModify($oldEmail,$email);
|
| 464 |
+
|
| 465 |
+
$this->_helper->log("Adding Subscriber");
|
| 466 |
+
$rc = $api->subscriberAdd($email,$merge_vars);
|
| 467 |
+
}
|
| 468 |
+
else
|
| 469 |
+
$this->_helper->logReason("Email has not been changed");
|
| 470 |
+
|
| 471 |
+
$this->_helper->log("Update Customer End");
|
| 472 |
}
|
| 473 |
+
catch (Exception $e)
|
| 474 |
{
|
| 475 |
+
Mage::logException($e);
|
| 476 |
+
$this->_helper->logException($e);
|
|
|
|
|
|
|
|
|
|
| 477 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
| 478 |
|
| 479 |
return $observer;
|
| 480 |
}
|
| 481 |
|
| 482 |
public function registerCheckoutSubscribe(Varien_Event_Observer $observer)
|
| 483 |
{
|
| 484 |
+
try
|
|
|
|
|
|
|
| 485 |
{
|
| 486 |
+
$this->_helper->setLogArea(EmailDirect_Integration_Helper_Data::NEWSLETTER);
|
| 487 |
+
$this->_helper->log("Register Checkout Subscribe Start");
|
| 488 |
+
if(!$this->_helper->canEdirect())
|
| 489 |
+
{
|
| 490 |
+
$this->_helper->logReason($this->_helper->getDisabledReason());
|
| 491 |
+
return;
|
| 492 |
+
}
|
| 493 |
+
$subscribe = Mage::app()->getRequest()->getPost('emaildirect_subscribe');
|
| 494 |
+
|
| 495 |
+
if(!is_null($subscribe))
|
| 496 |
+
{
|
| 497 |
+
Mage::getSingleton('core/session')->setEmaildirectCheckout($subscribe);
|
| 498 |
+
}
|
| 499 |
+
|
| 500 |
+
$this->_helper->log("Register Checkout Subscribe End");
|
| 501 |
}
|
| 502 |
+
catch (Exception $e)
|
|
|
|
|
|
|
| 503 |
{
|
| 504 |
+
Mage::logException($e);
|
| 505 |
+
$this->_helper->logException($e);
|
| 506 |
}
|
|
|
|
|
|
|
| 507 |
}
|
| 508 |
|
| 509 |
/**
|
| 511 |
*/
|
| 512 |
public function registerCheckoutSuccess(Varien_Event_Observer $observer)
|
| 513 |
{
|
| 514 |
+
try
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 515 |
{
|
| 516 |
+
$this->_helper->setLogArea(EmailDirect_Integration_Helper_Data::NEWSLETTER);
|
| 517 |
+
$this->_helper->log("Register Checkout Success Start");
|
| 518 |
+
if(!$this->_helper->canEdirect())
|
| 519 |
+
{
|
| 520 |
+
$this->_helper->logReason($this->_helper->getDisabledReason());
|
| 521 |
+
return;
|
| 522 |
+
}
|
| 523 |
|
| 524 |
+
$sessionFlag = Mage::getSingleton('core/session')->getEmaildirectCheckout(TRUE);
|
| 525 |
+
if (!$sessionFlag)
|
| 526 |
+
{
|
| 527 |
+
$this->_helper->logReason("Session flag not found.");
|
| 528 |
+
return;
|
| 529 |
+
}
|
| 530 |
+
|
| 531 |
+
$orderId = (int)current($observer->getEvent()->getOrderIds());
|
| 532 |
+
|
| 533 |
+
if (!$orderId)
|
| 534 |
+
{
|
| 535 |
+
$this->_helper->logReason("Order ID not found.");
|
| 536 |
+
return;
|
| 537 |
+
}
|
| 538 |
+
|
| 539 |
+
$order = Mage::getModel('sales/order')->load($orderId);
|
| 540 |
+
if (!$order->getId())
|
| 541 |
+
{
|
| 542 |
+
$this->_helper->logReason("Failed to Load Order ({$orderId}).");
|
| 543 |
+
return;
|
| 544 |
+
}
|
| 545 |
+
|
| 546 |
+
$this->_helper->log("Processing Order # " . $order->getIncrementId());
|
| 547 |
+
|
| 548 |
+
//Guest Checkout
|
| 549 |
+
if( (int)$order->getCustomerGroupId() === Mage_Customer_Model_Group::NOT_LOGGED_IN_ID )
|
| 550 |
+
{
|
| 551 |
+
$this->_helper->log("Guest Checkout");
|
| 552 |
+
$this->_helper->registerGuestCustomer($order);
|
| 553 |
+
}
|
| 554 |
+
|
| 555 |
+
$rc = $subscriber = Mage::getModel('newsletter/subscriber')
|
| 556 |
+
->subscribe($order->getCustomerEmail());
|
| 557 |
+
|
| 558 |
+
$this->_helper->log("Register Checkout Success End");
|
| 559 |
}
|
| 560 |
+
catch (Exception $e)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 561 |
{
|
| 562 |
+
Mage::logException($e);
|
| 563 |
+
$this->_helper->logException($e);
|
| 564 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 565 |
}
|
| 566 |
|
| 567 |
public function salesOrderShipmentTrackSaveAfter(Varien_Event_Observer $observer)
|
| 568 |
{
|
| 569 |
+
try
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 570 |
{
|
| 571 |
+
$this->_helper->setLogArea(EmailDirect_Integration_Helper_Data::ORDERS);
|
| 572 |
+
$this->_helper->log("Sales Order Shipment Track Save After Start");
|
| 573 |
+
if(!$this->_helper->canEdirect())
|
| 574 |
+
{
|
| 575 |
+
$this->_helper->logReason($this->_helper->getDisabledReason());
|
| 576 |
+
return;
|
| 577 |
+
}
|
| 578 |
+
$track = $observer->getEvent()->getTrack();
|
| 579 |
+
|
| 580 |
+
$order = $track->getShipment()->getOrder();
|
| 581 |
+
$shippingMethod = $order->getShippingMethod(); // String in format of 'carrier_method'
|
| 582 |
+
if (!$shippingMethod)
|
| 583 |
+
{
|
| 584 |
+
$this->_helper->logReason("Shipping Method not found");
|
| 585 |
+
return $observer;
|
| 586 |
+
}
|
| 587 |
+
|
| 588 |
+
$email = $order->getCustomerEmail();
|
| 589 |
+
|
| 590 |
+
$merge_vars = array();
|
| 591 |
+
|
| 592 |
+
$merge_vars = $this->_helper->getTrackingMergeVars($track, $order);
|
| 593 |
+
|
| 594 |
+
if ($merge_vars == null)
|
| 595 |
+
{
|
| 596 |
+
$this->_helper->logReason("No shipping fields setup");
|
| 597 |
+
return $observer;
|
| 598 |
+
}
|
| 599 |
+
|
| 600 |
+
$this->_helper->log($merge_vars,"Merge Vars");
|
| 601 |
+
|
| 602 |
+
$rc = Mage::getSingleton('emaildirect/wrapper_orders')->addSubscriberTracking($email, $merge_vars);
|
| 603 |
+
|
| 604 |
+
$this->_helper->log("Sales Order Shipment Track Save After Start");
|
| 605 |
+
|
| 606 |
+
return $observer;
|
| 607 |
}
|
| 608 |
+
catch (Exception $e)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 609 |
{
|
| 610 |
+
Mage::logException($e);
|
| 611 |
+
$this->_helper->logException($e);
|
| 612 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 613 |
}
|
| 614 |
|
| 615 |
public function orderSaveAfter(Varien_Event_Observer $observer)
|
| 616 |
{
|
| 617 |
+
try
|
|
|
|
|
|
|
|
|
|
| 618 |
{
|
| 619 |
+
$this->_helper->setLogArea(EmailDirect_Integration_Helper_Data::ABANDONED_CART);
|
| 620 |
+
$this->_helper->log("Order Save After Start");
|
| 621 |
+
|
| 622 |
+
if (!$this->_helper->getOrdersEnabled())
|
| 623 |
+
{
|
| 624 |
+
$this->_helper->logReason($this->_helper->getOrdersDisabledReason());
|
| 625 |
+
return $observer;
|
| 626 |
+
}
|
| 627 |
+
|
| 628 |
+
$order = $observer->getEvent()->getOrder();
|
| 629 |
+
|
| 630 |
+
$this->_helper->log("Order Save After: " . $order->getIncrementId());
|
| 631 |
+
if($order->getState() !== Mage_Sales_Model_Order::STATE_COMPLETE)
|
| 632 |
+
{
|
| 633 |
+
$this->_helper->logReason("Order is not complete.");
|
| 634 |
+
return $observer;
|
| 635 |
+
}
|
| 636 |
+
|
| 637 |
+
//$this->_helper->log("Order is complete. Processing...");
|
| 638 |
+
|
| 639 |
+
$email = $order->getCustomerEmail();
|
| 640 |
+
|
| 641 |
+
if ($order->getData('customer_is_guest'))
|
| 642 |
+
{
|
| 643 |
+
$this->_helper->log("Guest Customer");
|
| 644 |
|
| 645 |
+
$customer = new Varien_Object;
|
| 646 |
+
|
| 647 |
+
$customer->setData('email',$email);
|
| 648 |
+
$customer->setData('firstname',$order->getData('customer_firstname'));
|
| 649 |
+
$customer->setData('lastname',$order->getData('customer_lastname'));
|
| 650 |
+
$customer->setData('store_id',$order->getStoreId());
|
| 651 |
+
|
| 652 |
+
$customer->setBillingAddress($order->getBillingAddress());
|
| 653 |
+
}
|
| 654 |
+
else
|
| 655 |
+
{
|
| 656 |
+
$customer = Mage::getModel('customer/customer')->load($order->getCustomerId());
|
| 657 |
+
$address = Mage::getModel('customer/address')->load($customer->getDefaultBilling());
|
| 658 |
+
$customer->setBillingAddress($address);
|
| 659 |
+
}
|
| 660 |
+
|
| 661 |
+
$merge_vars = $this->_helper->getMergeVars($customer, true);
|
| 662 |
+
$merge_vars = $this->_helper->getOrderMergeVars($merge_vars,$order);
|
| 663 |
|
| 664 |
+
if ($this->_helper->config('save_latest_order'))
|
| 665 |
+
{
|
| 666 |
+
$this->_helper->log("Getting Latest Order Info");
|
| 667 |
+
$merge_vars['LastOrderNumber'] = $order->getIncrementId();
|
| 668 |
+
$merge_vars['LastPurchaseDate'] = $order->getData('created_at');
|
| 669 |
+
$merge_vars['LastPurchaseTotal'] = Mage::helper('core')->currency($order->getData('total_paid'), true, false);
|
| 670 |
+
|
| 671 |
+
$merge_vars = $this->getMergeOrderItems($order, $merge_vars);
|
| 672 |
+
$merge_vars = $this->getRelatedOrderItems($order, $merge_vars);
|
| 673 |
+
}
|
| 674 |
+
|
| 675 |
+
$this->_helper->log($merge_vars, "Merge Vars");
|
| 676 |
+
|
| 677 |
+
Mage::helper('emaildirect/fields')->checkFields();
|
| 678 |
+
|
| 679 |
+
$rc = Mage::getSingleton('emaildirect/wrapper_orders')->addSubscriberOrder($email,$order, $merge_vars);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 680 |
|
| 681 |
+
$this->_helper->log("Order Save After End");
|
| 682 |
+
|
| 683 |
+
return $observer;
|
| 684 |
+
}
|
| 685 |
+
catch (Exception $e)
|
| 686 |
+
{
|
| 687 |
+
Mage::logException($e);
|
| 688 |
+
$this->_helper->logException($e);
|
| 689 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 690 |
}
|
| 691 |
|
| 692 |
// START ABANDONED CRON
|
| 740 |
catch (Exception $e)
|
| 741 |
{
|
| 742 |
Mage::logException($e);
|
| 743 |
+
$this->_helper->logException($e);
|
| 744 |
}
|
| 745 |
}
|
| 746 |
|
| 819 |
if (!$subscribers)
|
| 820 |
{
|
| 821 |
$this->_helper->logReason("No Carts Found");
|
| 822 |
+
return; // No abandoned carts found
|
| 823 |
}
|
| 824 |
|
| 825 |
$this->_helper->log("Sending Abandoned Carts");
|
| 829 |
|
| 830 |
public function abandonedStoreProcessor($store, $check_date)
|
| 831 |
{
|
| 832 |
+
try
|
|
|
|
|
|
|
|
|
|
|
|
|
| 833 |
{
|
| 834 |
+
$store_code = $store->getCode();
|
| 835 |
+
|
| 836 |
+
$this->_helper->log("Processing Store: {$store_code}");
|
| 837 |
+
|
| 838 |
+
if (!$this->_helper->getAbandonedEnabled())
|
| 839 |
+
{
|
| 840 |
+
$this->_helper->logReason($this->_helper->getAbandonedDisabledReason());
|
| 841 |
+
return;
|
| 842 |
+
}
|
| 843 |
+
|
| 844 |
+
Mage::helper('emaildirect/fields')->checkFields();
|
| 845 |
+
|
| 846 |
+
// Get abandoned collection
|
| 847 |
+
$collection = Mage::getResourceModel('reports/quote_collection');
|
| 848 |
+
|
| 849 |
+
$collection->addFieldToFilter('items_count', array('neq' => '0'))
|
| 850 |
+
->addFieldToFilter('main_table.is_active', '1')
|
| 851 |
+
->setOrder('updated_at');
|
| 852 |
+
|
| 853 |
+
$collection->addFieldToFilter('main_table.updated_at', array('lt' => $check_date));
|
| 854 |
+
$collection->addFieldToFilter('main_table.emaildirect_abandoned_date', array('null' => true));
|
| 855 |
+
$collection->addFieldToFilter('main_table.emaildirect_abandoned_url', array('notnull' => true));
|
| 856 |
+
$collection->addFieldToFilter('main_table.customer_email', array('notnull' => true));
|
| 857 |
+
|
| 858 |
+
$collection->addFieldToFilter('store_id', array('eq' => $store->getId()));
|
| 859 |
+
|
| 860 |
+
$this->_helper->log("SQL: " . $collection->getSelect()->__toString());
|
| 861 |
+
|
| 862 |
+
$this->_abandonedCartsProcessor($collection);
|
| 863 |
+
|
| 864 |
+
$this->_helper->log("Finished Processing Store: {$store_code}");
|
| 865 |
+
}
|
| 866 |
+
catch (Exception $e)
|
| 867 |
+
{
|
| 868 |
+
Mage::logException($e);
|
| 869 |
+
$this->_helper->logException($e);
|
| 870 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 871 |
}
|
| 872 |
|
| 873 |
public function abandonedCartsProcessor()
|
| 874 |
{
|
| 875 |
+
try
|
| 876 |
+
{
|
| 877 |
+
$this->_helper->setLogArea(EmailDirect_Integration_Helper_Data::ABANDONED_CART);
|
| 878 |
+
$this->_helper->log("Abandoned Carts Processor Start");
|
| 879 |
+
|
| 880 |
+
$check_date = $this->getAbandonedTime();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 881 |
|
| 882 |
+
$this->_helper->log("Check Date: {$check_date}");
|
| 883 |
+
|
| 884 |
+
$stores = Mage::app()->getStores();
|
| 885 |
+
|
| 886 |
+
$starting_store = Mage::app()->getStore()->getCode();
|
| 887 |
+
|
| 888 |
+
foreach ($stores as $store)
|
| 889 |
+
{
|
| 890 |
+
Mage::app()->setCurrentStore($store->getCode());
|
| 891 |
+
|
| 892 |
+
$this->abandonedStoreProcessor($store, $check_date);
|
| 893 |
+
}
|
| 894 |
+
|
| 895 |
+
Mage::app()->setCurrentStore($starting_store);
|
| 896 |
+
|
| 897 |
+
$this->_helper->log("Abandoned Carts Processor End");
|
| 898 |
+
}
|
| 899 |
+
catch (Exception $e)
|
| 900 |
+
{
|
| 901 |
+
Mage::logException($e);
|
| 902 |
+
$this->_helper->logException($e);
|
| 903 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
| 904 |
}
|
| 905 |
|
| 906 |
public function SendAbandonedCarts($id_list)
|
| 907 |
{
|
| 908 |
+
try
|
| 909 |
+
{
|
| 910 |
+
$this->_helper->setLogArea(EmailDirect_Integration_Helper_Data::ABANDONED_CART);
|
| 911 |
+
$this->_helper->log("Sending Specific Abandoned Carts Start");
|
| 912 |
+
|
| 913 |
+
Mage::helper('emaildirect/fields')->checkFields();
|
| 914 |
+
|
| 915 |
+
$this->_helper->log($id_list, "ID LIST");
|
| 916 |
+
|
| 917 |
+
// Get abandoned collection
|
| 918 |
+
$collection = Mage::getResourceModel('reports/quote_collection');
|
| 919 |
+
|
| 920 |
+
$collection->addFieldToFilter('entity_id', array('in' => $id_list))
|
| 921 |
+
->setOrder('updated_at');
|
| 922 |
+
|
| 923 |
+
$this->_helper->log("SQL: " . $collection->getSelect()->__toString());
|
| 924 |
+
|
| 925 |
+
$this->_abandonedCartsProcessor($collection, false);
|
| 926 |
+
|
| 927 |
+
$this->_helper->log("Sending Specific Abandoned Carts End");
|
| 928 |
+
}
|
| 929 |
+
catch (Exception $e)
|
| 930 |
+
{
|
| 931 |
+
Mage::logException($e);
|
| 932 |
+
$this->_helper->logException($e);
|
| 933 |
+
}
|
| 934 |
}
|
| 935 |
// END ABANDONED CRON
|
| 936 |
|
| 989 |
|
| 990 |
public function quoteSaveAfter(Varien_Event_Observer $observer)
|
| 991 |
{
|
| 992 |
+
try
|
| 993 |
+
{
|
| 994 |
+
$this->_helper->setLogArea(EmailDirect_Integration_Helper_Data::ABANDONED_CART);
|
| 995 |
+
$this->_helper->log("Quote Save After Start");
|
| 996 |
+
$quote = $observer->getEvent()->getQuote();
|
| 997 |
+
|
| 998 |
+
if (trim($quote->getEmaildirectAbandonedDate()))
|
| 999 |
+
{
|
| 1000 |
+
$this->_helper->logReason("Already sent.");
|
| 1001 |
+
return;
|
| 1002 |
+
}
|
| 1003 |
+
|
| 1004 |
+
$url = $this->getAbandonedUrl($quote);
|
| 1005 |
+
|
| 1006 |
+
$this->_helper->log("Abandoned Url: {$url}");
|
| 1007 |
+
|
| 1008 |
+
if ($quote->getEmaildirectAbandonedUrl() == $url)
|
| 1009 |
+
{
|
| 1010 |
+
$this->_helper->logReason("Abandoned Url is up to date.");
|
| 1011 |
+
return;
|
| 1012 |
+
}
|
| 1013 |
+
|
| 1014 |
+
$this->_helper->log("Saving Quote.");
|
| 1015 |
+
// Re-save quote with new URL
|
| 1016 |
+
$this->setAbandonedUrl($quote, $url);
|
| 1017 |
+
$this->_helper->log("Quote Save After End");
|
| 1018 |
}
|
| 1019 |
+
catch (Exception $e)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1020 |
{
|
| 1021 |
+
Mage::logException($e);
|
| 1022 |
+
$this->_helper->logException($e);
|
| 1023 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1024 |
}
|
| 1025 |
// END QUOTE SAVE AFTER
|
| 1026 |
}
|
app/code/local/EmailDirect/Integration/Model/Wrapper/Execute.php
CHANGED
|
@@ -13,21 +13,26 @@ class EmailDirect_Integration_Model_Wrapper_Execute
|
|
| 13 |
|
| 14 |
public function sendCommand($command, $subcommand = null, $id= null, $xmldata=null, $method = "POST")
|
| 15 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 16 |
$apikey = Mage::helper('emaildirect')->getApiKey();
|
| 17 |
|
| 18 |
if ($xmldata != null)
|
| 19 |
-
|
| 20 |
|
| 21 |
-
$URL =
|
| 22 |
-
$urlsuffix =
|
| 23 |
$URL .= $urlsuffix;
|
| 24 |
if ($id)
|
| 25 |
$URL .= "/$id";
|
| 26 |
if ($subcommand)
|
| 27 |
$URL .= "/$subcommand";
|
| 28 |
|
| 29 |
-
|
| 30 |
-
|
| 31 |
|
| 32 |
$header = array('Content-Type: text/xml','ApiKey: '.$apikey,'Accept: application/xml');
|
| 33 |
$ch = curl_init($URL);
|
|
@@ -60,18 +65,18 @@ class EmailDirect_Integration_Model_Wrapper_Execute
|
|
| 60 |
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
| 61 |
curl_setopt($ch, CURLOPT_PUT, true);
|
| 62 |
curl_setopt($ch, CURLOPT_INFILE, $putData);
|
| 63 |
-
curl_setopt($ch, CURLOPT_INFILESIZE, strlen($putString));
|
| 64 |
-
} break;
|
| 65 |
}
|
| 66 |
|
| 67 |
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
| 68 |
$output = curl_exec($ch);
|
| 69 |
|
| 70 |
curl_close($ch);
|
| 71 |
-
$start = strpos($output,'<?xml'
|
| 72 |
if(!$start)
|
| 73 |
{
|
| 74 |
-
$start = strpos($output,'<Response>'
|
| 75 |
}
|
| 76 |
if (!$start)
|
| 77 |
{
|
|
@@ -91,7 +96,7 @@ class EmailDirect_Integration_Model_Wrapper_Execute
|
|
| 91 |
}
|
| 92 |
|
| 93 |
if ($command != 'Database')
|
| 94 |
-
|
| 95 |
|
| 96 |
return $xml;
|
| 97 |
}
|
| 13 |
|
| 14 |
public function sendCommand($command, $subcommand = null, $id= null, $xmldata=null, $method = "POST")
|
| 15 |
{
|
| 16 |
+
$helper = Mage::helper('emaildirect');
|
| 17 |
+
|
| 18 |
+
if (!$helper->canEdirect())
|
| 19 |
+
return;
|
| 20 |
+
|
| 21 |
$apikey = Mage::helper('emaildirect')->getApiKey();
|
| 22 |
|
| 23 |
if ($xmldata != null)
|
| 24 |
+
$helper->log($xmldata,"Xml Data ({$command})");
|
| 25 |
|
| 26 |
+
$URL = $helper->config('urls/accesspoint');
|
| 27 |
+
$urlsuffix = $helper->config("urls/{$command}");
|
| 28 |
$URL .= $urlsuffix;
|
| 29 |
if ($id)
|
| 30 |
$URL .= "/$id";
|
| 31 |
if ($subcommand)
|
| 32 |
$URL .= "/$subcommand";
|
| 33 |
|
| 34 |
+
$helper->log("API KEY: {$apikey}");
|
| 35 |
+
$helper->log("URL: {$URL}");
|
| 36 |
|
| 37 |
$header = array('Content-Type: text/xml','ApiKey: '.$apikey,'Accept: application/xml');
|
| 38 |
$ch = curl_init($URL);
|
| 65 |
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
| 66 |
curl_setopt($ch, CURLOPT_PUT, true);
|
| 67 |
curl_setopt($ch, CURLOPT_INFILE, $putData);
|
| 68 |
+
curl_setopt($ch, CURLOPT_INFILESIZE, strlen($putString));
|
| 69 |
+
} break;
|
| 70 |
}
|
| 71 |
|
| 72 |
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
| 73 |
$output = curl_exec($ch);
|
| 74 |
|
| 75 |
curl_close($ch);
|
| 76 |
+
$start = strpos($output,'<?xml');
|
| 77 |
if(!$start)
|
| 78 |
{
|
| 79 |
+
$start = strpos($output,'<Response>');
|
| 80 |
}
|
| 81 |
if (!$start)
|
| 82 |
{
|
| 96 |
}
|
| 97 |
|
| 98 |
if ($command != 'Database')
|
| 99 |
+
$helper->log($xml, "Response");
|
| 100 |
|
| 101 |
return $xml;
|
| 102 |
}
|
app/code/local/EmailDirect/Integration/controllers/Admin/AbandonedController.php
CHANGED
|
@@ -6,6 +6,7 @@ class Emaildirect_Integration_Admin_AbandonedController extends Mage_Adminhtml_C
|
|
| 6 |
{
|
| 7 |
$this->loadLayout();
|
| 8 |
|
|
|
|
| 9 |
$this->_setActiveMenu('sales');
|
| 10 |
$this->renderLayout();
|
| 11 |
}
|
|
@@ -20,7 +21,7 @@ class Emaildirect_Integration_Admin_AbandonedController extends Mage_Adminhtml_C
|
|
| 20 |
$this->loadLayout();
|
| 21 |
$this->getResponse()->setBody($this->getLayout()->createBlock('emaildirect/adminhtml_abandoned_grid')->toHtml());
|
| 22 |
}
|
| 23 |
-
|
| 24 |
public function runAction()
|
| 25 |
{
|
| 26 |
Mage::getSingleton('emaildirect/observer')->abandonedCartsProcessor();
|
| 6 |
{
|
| 7 |
$this->loadLayout();
|
| 8 |
|
| 9 |
+
$this->getLayout()->getBlock('head')->setTitle($this->__('EmailDirect Abandoned Carts'));
|
| 10 |
$this->_setActiveMenu('sales');
|
| 11 |
$this->renderLayout();
|
| 12 |
}
|
| 21 |
$this->loadLayout();
|
| 22 |
$this->getResponse()->setBody($this->getLayout()->createBlock('emaildirect/adminhtml_abandoned_grid')->toHtml());
|
| 23 |
}
|
| 24 |
+
|
| 25 |
public function runAction()
|
| 26 |
{
|
| 27 |
Mage::getSingleton('emaildirect/observer')->abandonedCartsProcessor();
|
app/code/local/EmailDirect/Integration/controllers/Admin/ExportController.php
CHANGED
|
@@ -130,8 +130,6 @@ class Emaildirect_Integration_Admin_ExportController extends Mage_Adminhtml_Cont
|
|
| 130 |
$product_id = $this->getRequest()->getPost('id', 0);
|
| 131 |
$file_name = $this->getRequest()->getPost('filename', 0);
|
| 132 |
|
| 133 |
-
//Mage::log($product_id,null,'1_export.log');
|
| 134 |
-
|
| 135 |
if (is_array($product_id))
|
| 136 |
{
|
| 137 |
foreach ($product_id as $id)
|
|
@@ -188,8 +186,6 @@ class Emaildirect_Integration_Admin_ExportController extends Mage_Adminhtml_Cont
|
|
| 188 |
$api = Mage::getSingleton('emaildirect/wrapper_ftp');
|
| 189 |
$rc = $api->upload($ed_url,"magento_products_{$file_name}.csv");
|
| 190 |
|
| 191 |
-
//Mage::log($rc,null,'1_export.log');
|
| 192 |
-
|
| 193 |
if (isset($rc->ErrorCode))
|
| 194 |
{
|
| 195 |
$result['error'] = "EmailDirect Error: (" . (string) $rc->ErrorCode . "): " . (string)$rc->Message;
|
|
@@ -200,9 +196,4 @@ class Emaildirect_Integration_Admin_ExportController extends Mage_Adminhtml_Cont
|
|
| 200 |
}
|
| 201 |
|
| 202 |
}
|
| 203 |
-
/*
|
| 204 |
-
protected function _isAllowed()
|
| 205 |
-
{
|
| 206 |
-
return Mage::getSingleton('admin/session')->isAllowed('admin/system/convert/profiles');
|
| 207 |
-
}*/
|
| 208 |
}
|
| 130 |
$product_id = $this->getRequest()->getPost('id', 0);
|
| 131 |
$file_name = $this->getRequest()->getPost('filename', 0);
|
| 132 |
|
|
|
|
|
|
|
| 133 |
if (is_array($product_id))
|
| 134 |
{
|
| 135 |
foreach ($product_id as $id)
|
| 186 |
$api = Mage::getSingleton('emaildirect/wrapper_ftp');
|
| 187 |
$rc = $api->upload($ed_url,"magento_products_{$file_name}.csv");
|
| 188 |
|
|
|
|
|
|
|
| 189 |
if (isset($rc->ErrorCode))
|
| 190 |
{
|
| 191 |
$result['error'] = "EmailDirect Error: (" . (string) $rc->ErrorCode . "): " . (string)$rc->Message;
|
| 196 |
}
|
| 197 |
|
| 198 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 199 |
}
|
app/code/local/EmailDirect/Integration/controllers/ExportController.php
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
class EmailDirect_Integration_ExportController extends Mage_Core_Controller_Front_Action
|
| 3 |
+
{
|
| 4 |
+
public function downloadAction()
|
| 5 |
+
{
|
| 6 |
+
$file_name = "emaildirect_products_" . $this->getRequest()->getParam('filename');
|
| 7 |
+
$file = Mage::helper('emaildirect')->getExportFileName($file_name);
|
| 8 |
+
|
| 9 |
+
$this->_prepareDownloadResponse(Mage::helper('emaildirect')->getExportFileName($file_name,false), file_get_contents($file));
|
| 10 |
+
}
|
| 11 |
+
}
|
app/code/local/EmailDirect/Integration/etc/config.xml
CHANGED
|
@@ -2,19 +2,19 @@
|
|
| 2 |
<config>
|
| 3 |
<modules>
|
| 4 |
<EmailDirect_Integration>
|
| 5 |
-
<version>1.5.
|
| 6 |
</EmailDirect_Integration>
|
| 7 |
</modules>
|
| 8 |
<global>
|
| 9 |
<events>
|
| 10 |
-
|
| 11 |
<observers>
|
| 12 |
<emaildirect_subscribe_observer>
|
| 13 |
<class>emaildirect/observer</class>
|
| 14 |
<method>handleSubscriber</method>
|
| 15 |
</emaildirect_subscribe_observer>
|
| 16 |
</observers>
|
| 17 |
-
|
| 18 |
<newsletter_subscriber_delete_after>
|
| 19 |
<observers>
|
| 20 |
<emaildirect_subscribe_delete_observer>
|
|
@@ -30,7 +30,7 @@
|
|
| 30 |
<method>updateCustomer</method>
|
| 31 |
</emaildirect_update_customer>
|
| 32 |
</observers>
|
| 33 |
-
|
| 34 |
<sales_order_save_after>
|
| 35 |
<observers>
|
| 36 |
<emaildirect_order_save_after>
|
|
@@ -123,8 +123,8 @@
|
|
| 123 |
</emaildirect>
|
| 124 |
</updates>
|
| 125 |
</layout>
|
| 126 |
-
|
| 127 |
-
|
| 128 |
<observers>
|
| 129 |
<emaildirect_subscribe_checkout>
|
| 130 |
<class>emaildirect/observer</class>
|
|
@@ -213,11 +213,11 @@
|
|
| 213 |
</core_block_abstract_to_html_before>
|
| 214 |
<sales_order_shipment_track_save_after>
|
| 215 |
<observers>
|
| 216 |
-
<
|
| 217 |
<type>model</type>
|
| 218 |
<class>emaildirect/observer</class>
|
| 219 |
<method>salesOrderShipmentTrackSaveAfter</method>
|
| 220 |
-
</
|
| 221 |
</observers>
|
| 222 |
</sales_order_shipment_track_save_after>
|
| 223 |
<admin_system_config_changed_section_emaildirect>
|
| 2 |
<config>
|
| 3 |
<modules>
|
| 4 |
<EmailDirect_Integration>
|
| 5 |
+
<version>1.5.1</version>
|
| 6 |
</EmailDirect_Integration>
|
| 7 |
</modules>
|
| 8 |
<global>
|
| 9 |
<events>
|
| 10 |
+
<newsletter_subscriber_save_before>
|
| 11 |
<observers>
|
| 12 |
<emaildirect_subscribe_observer>
|
| 13 |
<class>emaildirect/observer</class>
|
| 14 |
<method>handleSubscriber</method>
|
| 15 |
</emaildirect_subscribe_observer>
|
| 16 |
</observers>
|
| 17 |
+
</newsletter_subscriber_save_before>
|
| 18 |
<newsletter_subscriber_delete_after>
|
| 19 |
<observers>
|
| 20 |
<emaildirect_subscribe_delete_observer>
|
| 30 |
<method>updateCustomer</method>
|
| 31 |
</emaildirect_update_customer>
|
| 32 |
</observers>
|
| 33 |
+
</customer_save_after>
|
| 34 |
<sales_order_save_after>
|
| 35 |
<observers>
|
| 36 |
<emaildirect_order_save_after>
|
| 123 |
</emaildirect>
|
| 124 |
</updates>
|
| 125 |
</layout>
|
| 126 |
+
<events>
|
| 127 |
+
<controller_action_postdispatch_checkout_onepage_saveOrder>
|
| 128 |
<observers>
|
| 129 |
<emaildirect_subscribe_checkout>
|
| 130 |
<class>emaildirect/observer</class>
|
| 213 |
</core_block_abstract_to_html_before>
|
| 214 |
<sales_order_shipment_track_save_after>
|
| 215 |
<observers>
|
| 216 |
+
<emaildirect_track_save_after>
|
| 217 |
<type>model</type>
|
| 218 |
<class>emaildirect/observer</class>
|
| 219 |
<method>salesOrderShipmentTrackSaveAfter</method>
|
| 220 |
+
</emaildirect_track_save_after>
|
| 221 |
</observers>
|
| 222 |
</sales_order_shipment_track_save_after>
|
| 223 |
<admin_system_config_changed_section_emaildirect>
|
app/design/adminhtml/default/default/template/emaildirect/system/config/form/field/trouble.phtml
CHANGED
|
@@ -2,7 +2,7 @@
|
|
| 2 |
<?php
|
| 3 |
$element = $this->getElement();
|
| 4 |
|
| 5 |
-
$enabled = $element->getValue();
|
| 6 |
?>
|
| 7 |
|
| 8 |
<span class='trouble_status'>Status: <strong><?php if ($enabled) echo "Enabled"; else echo "Disabled" ?></strong></span>
|
| 2 |
<?php
|
| 3 |
$element = $this->getElement();
|
| 4 |
|
| 5 |
+
$enabled = $element->getValue() == true;
|
| 6 |
?>
|
| 7 |
|
| 8 |
<span class='trouble_status'>Status: <strong><?php if ($enabled) echo "Enabled"; else echo "Disabled" ?></strong></span>
|
app/design/frontend/base/default/layout/emaildirect.xml
CHANGED
|
@@ -2,9 +2,9 @@
|
|
| 2 |
|
| 3 |
<layout version="0.1.0">
|
| 4 |
<checkout_onepage_review>
|
| 5 |
-
|
| 6 |
<block type="emaildirect/checkout_subscribe" name="emaildirect.subscribe" template="emaildirect/checkout/subscribe.phtml" />
|
| 7 |
-
|
| 8 |
</checkout_onepage_review>
|
| 9 |
|
| 10 |
<!-- Customer -->
|
| 2 |
|
| 3 |
<layout version="0.1.0">
|
| 4 |
<checkout_onepage_review>
|
| 5 |
+
<reference name="checkout.onepage.review.info.items.after">
|
| 6 |
<block type="emaildirect/checkout_subscribe" name="emaildirect.subscribe" template="emaildirect/checkout/subscribe.phtml" />
|
| 7 |
+
</reference>
|
| 8 |
</checkout_onepage_review>
|
| 9 |
|
| 10 |
<!-- Customer -->
|
package.xml
CHANGED
|
@@ -1,31 +1,18 @@
|
|
| 1 |
<?xml version="1.0"?>
|
| 2 |
<package>
|
| 3 |
<name>EmailDirect_Integration</name>
|
| 4 |
-
<version>1.5.
|
| 5 |
<stability>stable</stability>
|
| 6 |
<license>GNU</license>
|
| 7 |
<channel>community</channel>
|
| 8 |
<extends/>
|
| 9 |
<summary>EmailDirect integration for magento</summary>
|
| 10 |
<description>EmailDirect integration for magento</description>
|
| 11 |
-
<notes>
|
| 12 |
-
- Currency Symbol added to Cost Fields
|
| 13 |
-
- Troubleshooting system implemented
|
| 14 |
-
- Customer Account Dashboard Improvements
|
| 15 |
-
- Subscribe/Unsubscribe to Newsletter and Interests (Lists)
|
| 16 |
-
- Bug Fixes
|
| 17 |
-
- Bad API Key fix
|
| 18 |
-
- Multi-store Support Improved
|
| 19 |
-
- Separate API keys per Store
|
| 20 |
-
- Abandoned Cart process runs per Store
|
| 21 |
-
- Improved support for Disabling of Module
|
| 22 |
-
- Disabling module stops calls to API and turns off custom blocks on front end
|
| 23 |
-
- Disable module per store
|
| 24 |
-
- Tested on Enterprise 1.13</notes>
|
| 25 |
<authors><author><name>Kevin Linden</name><user>auto-converted</user><email>Kevin@EmailDirect.com</email></author></authors>
|
| 26 |
-
<date>2013-06-
|
| 27 |
-
<time>
|
| 28 |
-
<contents><target name="magelocal"><dir name="EmailDirect"><dir name="Integration"><dir name="Block"><dir name="Adminhtml"><dir name="Abandoned"><file name="Grid.php" hash="
|
| 29 |
<compatible/>
|
| 30 |
<dependencies/>
|
| 31 |
</package>
|
| 1 |
<?xml version="1.0"?>
|
| 2 |
<package>
|
| 3 |
<name>EmailDirect_Integration</name>
|
| 4 |
+
<version>1.5.1</version>
|
| 5 |
<stability>stable</stability>
|
| 6 |
<license>GNU</license>
|
| 7 |
<channel>community</channel>
|
| 8 |
<extends/>
|
| 9 |
<summary>EmailDirect integration for magento</summary>
|
| 10 |
<description>EmailDirect integration for magento</description>
|
| 11 |
+
<notes>Bug Fixes</notes>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 12 |
<authors><author><name>Kevin Linden</name><user>auto-converted</user><email>Kevin@EmailDirect.com</email></author></authors>
|
| 13 |
+
<date>2013-06-19</date>
|
| 14 |
+
<time>18:56:12</time>
|
| 15 |
+
<contents><target name="magelocal"><dir name="EmailDirect"><dir name="Integration"><dir name="Block"><dir name="Adminhtml"><dir name="Abandoned"><file name="Grid.php" hash="b664b1a7b368199656db734788cfb72c"/></dir><dir name="System"><dir name="Config"><dir name="Fieldset"><file name="Hint.php" hash="7649b64cf2319484207c5179df7b4e9f"/></dir><dir name="Form"><dir name="Field"><file name="Addressmapfields.php" hash="97b75c8340d561e863a3985ad73ce228"/><file name="Button.php" hash="ca555e93c55812795d2504ee6de13f3a"/><file name="Common.php" hash="e597ff375c4b46b92d6aa35646e3d8c9"/><file name="Mapfields.php" hash="677ebfd526fba11a1c177c00ae085526"/><file name="Shippingmapfields.php" hash="589a74260f394a5eae1b57ca89a74a8b"/><file name="Troubleshooting.php" hash="3699df84e4856983e679bd6c8fc9513e"/></dir></dir><file name="Account.php" hash="60fa8e43a87e1f2ff71c319c979556b2"/></dir><dir name="Convert"><dir name="Profile"><file name="Export.php" hash="95956414af4ec5b400244b246b8f1cf9"/></dir></dir></dir><dir name="Troubleshooting"><dir name="View"><dir name="Tab"><file name="Download.php" hash="9315a364a46f9e39972bbd0a47152e90"/><file name="Info.php" hash="6714b756a3fa7a5812356e544fe48f1b"/><file name="Log.php" hash="7c3661722d1197cd8a564f76275353c7"/><file name="Submit.php" hash="8831d886858fde08a4323eea66ec76d2"/></dir><file name="Form.php" hash="e527a3a2335b109c48a69f06c1b0d01f"/></dir><file name="Tabs.php" hash="ab1fdbe561e8572c2c50cdbec9573f82"/><file name="View.php" hash="7cd8350545f6b6119b2c91b3fc6ae562"/></dir><file name="Abandoned.php" hash="9d69cb3b2d561a97d0df0b456aa8f7b5"/></dir><dir name="Checkout"><file name="Subscribe.php" hash="ae325e815a54bde93507562cf0d86b8a"/></dir><dir name="Customer"><dir name="Account"><dir name="Dashboard"><file name="Info.php" hash="0d56c53c7c98046c435a2b87621c3e3b"/></dir><file name="Lists.php" hash="e56926d8681b4dacd5ecf8d0ccc31fc7"/></dir></dir><dir name="Widget"><dir name="Grid"><dir name="Column"><dir name="Renderer"><file name="AbandonedMinutes.php" hash="22e33be85dc8348fce9b49637ead919d"/><file name="Action.php" hash="b85ef0454ab5c65ef0c43c7ef057ecc2"/></dir></dir></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="820afaa8459b860cbd7384380ecd4229"/><file name="Fields.php" hash="3517ad00c7323e9bc5ef7d97ec076514"/></dir><dir name="Model"><dir name="System"><dir name="Config"><dir name="Source"><dir name="Export"><file name="Batch.php" hash="fd2fcedc80472895b2081e21af8fa7f5"/></dir><file name="Abandoned.php" hash="d4985049dbd47d79a9d8f3361528bc87"/><file name="Abandonedlist.php" hash="a5d3b987ea2a2d8672c9c2c3473c24e2"/><file name="Additionallist.php" hash="1fcede7a1efe84ce13104194f3dc9962"/><file name="Checkoutsubscribe.php" hash="fd90252a1f19649a420dae136ad2a2ba"/><file name="List.php" hash="00611b9215b54e86171a8e4a9a5e54db"/><file name="Maxtimes.php" hash="465ffb2acf45adf594b6e8c720dd23dc"/><file name="Publication.php" hash="903657f0b2a911af97f8bccb6d9cffab"/><file name="Source.php" hash="fb706f2418208b2a8f7a29a6050e815d"/><file name="Time.php" hash="0e26839880e25ec0eedce1ce8a663c0f"/></dir></dir></dir><dir name="Wrapper"><file name="Abandoned.php" hash="f33d3ef289c147ce572bcafdce47665c"/><file name="Abstract.php" hash="90935a39addc872b82639ae97855c894"/><file name="Database.php" hash="3cceb467358d13584baff58c043762ec"/><file name="Execute.php" hash="9ffc0b88992783e22b5d9e6817d859b3"/><file name="Ftp.php" hash="d5335cfb68f99761d6902dd390a3d7a8"/><file name="Lists.php" hash="07436322d71a6065e75b3fcb902a5952"/><file name="Orders.php" hash="0c5f01418fa2f0fabc8bed26b4434704"/><file name="Publications.php" hash="72ccdc495868308d9831cbf01ddea3b0"/><file name="Sources.php" hash="c67d1e8877e7f3ce907090d8fb7d4f00"/><file name="Subscribers.php" hash="c3093bd2f86fdc3a7e4b2a2d4beadd2b"/></dir><file name="Observer.php" hash="582f3510f6419107f607f029c8170a12"/></dir><dir name="controllers"><dir name="Admin"><file name="AbandonedController.php" hash="485bdcbe2ec956346e232287b8b48c5e"/><file name="ExportController.php" hash="e32b979b0fa256582a85d0d3116b356b"/><file name="TroubleshootingController.php" hash="7a4939b33d875417f19429614d8896ae"/></dir><dir name="Customer"><file name="AccountController.php" hash="16bfdb6de4804a5d71cb972afbff4537"/></dir><file name="AbandonedController.php" hash="12d8655ed118d280320e5457f4933881"/><file name="ExportController.php" hash="d34f5f1842db64f5eb1f18b4938c8c29"/></dir><dir name="etc"><file name="adminhtml.xml" hash="896c10d8a3f932346e7d301052b1b6a6"/><file name="config.xml" hash="e8204c973574a8ce8b364dd58ff218e5"/><file name="system.xml" hash="fb3e4ced708718df052a9e429bbfa8ed"/></dir><dir name="sql"><dir name="emaildirect_setup"><file name="mysql4-install-1.0.0.php" hash="9dc51edb346e9676735e15d3e78fa3eb"/><file name="mysql4-upgrade-1.0.13-1.0.14.php" hash="c42e2677b3960a049d7137b622552084"/><file name="mysql4-upgrade-1.0.19-1.2.0.php" hash="742be042b7f56e7ff2002b0606270ca6"/></dir></dir></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="emaildirect"><file name="emaildirect-connected-ebizmarts-title.png" hash="faf3858f23eafe3a89cce144fef6bd2a"/><file name="emaildirect-section-background.png" hash="c205ce454fe63280d7d7dd74428b7ea4"/><file name="emaildirect-tab.png" hash="9ddb077b74a7078ac509d79b024631a1"/><file name="emaildirect.css" hash="016ecc627aa3e7e971d53ec73d52858e"/><file name="emaildirect.js" hash="ce03dd6f51ea529fc4acdc5116f4e030"/></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="emaildirect"><dir name="images"><file name="bkg_block-title.gif" hash="f8c1f130ad69464fe7aff2f589b2ec75"/><file name="dotted_divider.gif" hash="260ebae91ffb1b7c663906b29a069925"/><file name="emaildirect-tile.png" hash="86a0ed36169ab9691480fc995ab674a8"/><file name="i_block-subscribe.gif" hash="9e5fee06a543742045118a95f2debcb8"/></dir><file name="integration.js" hash="d8c8d5bf0ddb4f6ead23bec8a2814475"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="emaildirect.xml" hash="91d689f9f169c4b1e5c59cf19aa89301"/></dir><dir name="template"><dir name="emaildirect"><dir name="abandoned"><file name="grid.phtml" hash="d41d8cd98f00b204e9800998ecf8427e"/></dir><dir name="system"><dir name="config"><dir name="fieldset"><file name="hint.phtml" hash="4d7607ecb15d13cfe8bb0cc889cb724f"/></dir><dir name="form"><dir name="field"><file name="array.phtml" hash="d6af9f840f4dda9c73d106e167ec1bc6"/><file name="button.phtml" hash="ad2811d37509d0919d3b41ecad1f37df"/><file name="trouble.phtml" hash="d7eae00a25ceda36d5880d431a176c6c"/></dir></dir></dir><dir name="convert"><dir name="profile"><file name="export.phtml" hash="86339d17e83bd8dcc2a268b3ace3d9e7"/></dir></dir></dir><dir name="troubleshooting"><dir name="view"><dir name="tab"><file name="download.phtml" hash="78ec34fd9c3c8b660b19f9e799d8e76e"/><file name="info.phtml" hash="547b1e906ed142983d1034e05f6251bd"/><file name="log.phtml" hash="c9e2c9493a2dad579bba4ed53795cf5e"/><file name="submit.phtml" hash="c2269f4a6a52d66bff5eac660d0831bd"/></dir><file name="form.phtml" hash="d2338bfe3598e9315ca8f5ac8d9b5516"/></dir><file name="view.phtml" hash="ee6af3fe79d916af764f41e7e8c5cc37"/></dir></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="emaildirect.xml" hash="9803fe9024b7eb6415713d81fe27c629"/></dir><dir name="template"><dir name="emaildirect"><dir name="checkout"><file name="subscribe.phtml" hash="351ea790305f0a3ec99c34180bbee235"/></dir><dir name="customer"><dir name="account"><dir name="dashboard"><file name="info.phtml" hash="4256a03d67ec2a6f97867a87564cff92"/></dir><file name="lists.phtml" hash="4c697dcfa63ece1db7885cadb02982d1"/></dir></dir><dir name="email"><dir name="order"><dir name="items"><dir name="order"><file name="default.phtml" hash="2d65f3d02b9baa08969d68f2a2cca348"/></dir></dir><file name="items.phtml" hash="e6b15e6460010c5acae66017d177bfb9"/></dir></dir></dir></dir></dir></dir></dir></target><target name="magelocale"><dir name="en_US"><dir name="template"><dir name="email"><file name="newsletter_subscr_success_emaildirect.html" hash="f6afb69d207bbc3f8920e7a72ac9dd07"/><file name="newsletter_unsub_success_emaildirect.html" hash="bd9f97e8f5485180d4420097b5200ef4"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="EmailDirect_Integration.xml" hash="2d2666e6d9cd8d40a4974d5e242721d6"/></dir></target></contents>
|
| 16 |
<compatible/>
|
| 17 |
<dependencies/>
|
| 18 |
</package>
|
