Version Notes
- Fix a bug where an error would be logged in case the product image does not exist.
Download this release
Release Info
| Developer | Digital Pianism |
| Extension | DigitalPianism_Abandonedcarts |
| Version | 0.3.6 |
| Comparing to | |
| See all releases | |
Code changes from version 0.3.5 to 0.3.6
app/code/community/DigitalPianism/Abandonedcarts/Model/Observer.php
CHANGED
|
@@ -37,34 +37,34 @@ class DigitalPianism_Abandonedcarts_Model_Observer extends Mage_Core_Model_Abstr
|
|
| 37 |
$this->_today = $today->toString("Y-MM-dd HH:mm:ss");
|
| 38 |
}
|
| 39 |
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
| 44 |
{
|
| 45 |
return $this->_today;
|
| 46 |
}
|
| 47 |
|
| 48 |
-
|
| 49 |
-
|
| 50 |
-
|
| 51 |
-
|
| 52 |
{
|
| 53 |
return $this->_recipients;
|
| 54 |
}
|
| 55 |
|
| 56 |
-
|
| 57 |
-
|
| 58 |
-
|
| 59 |
-
|
| 60 |
{
|
| 61 |
return $this->_saleRecipients;
|
| 62 |
}
|
| 63 |
|
| 64 |
-
|
| 65 |
-
|
| 66 |
-
|
| 67 |
-
|
| 68 |
{
|
| 69 |
// Customer group check
|
| 70 |
if (array_key_exists('customer_group',$args['row']) && !in_array($args['row']['customer_group'],$this->_customerGroups))
|
|
@@ -95,8 +95,15 @@ class DigitalPianism_Abandonedcarts_Model_Observer extends Mage_Core_Model_Abstr
|
|
| 95 |
// Limit the collection to get the specific product
|
| 96 |
$_productCollection->setPageSize(1);
|
| 97 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 98 |
// Add product image
|
| 99 |
-
$emailTemplateVariables['productimage'] =
|
| 100 |
|
| 101 |
$emailTemplateVariables['extraproductcount'] = 0;
|
| 102 |
}
|
|
@@ -112,10 +119,10 @@ class DigitalPianism_Abandonedcarts_Model_Observer extends Mage_Core_Model_Abstr
|
|
| 112 |
$this->_recipients[$args['row']['customer_email']]['store_id'] = $this->_currentStoreId;
|
| 113 |
}
|
| 114 |
|
| 115 |
-
|
| 116 |
-
|
| 117 |
-
|
| 118 |
-
|
| 119 |
{
|
| 120 |
// Customer group check
|
| 121 |
if (array_key_exists('customer_group',$args['row']) && !in_array($args['row']['customer_group'],$this->_customerGroups))
|
|
@@ -172,8 +179,15 @@ class DigitalPianism_Abandonedcarts_Model_Observer extends Mage_Core_Model_Abstr
|
|
| 172 |
// Limit the collection to get the specific product
|
| 173 |
$_productCollection->setPageSize(1);
|
| 174 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 175 |
// Add product image
|
| 176 |
-
$emailTemplateVariables['productimage'] =
|
| 177 |
}
|
| 178 |
else
|
| 179 |
{
|
|
@@ -210,11 +224,11 @@ class DigitalPianism_Abandonedcarts_Model_Observer extends Mage_Core_Model_Abstr
|
|
| 210 |
}
|
| 211 |
}
|
| 212 |
|
| 213 |
-
|
| 214 |
-
|
| 215 |
-
|
| 216 |
-
|
| 217 |
-
|
| 218 |
{
|
| 219 |
try
|
| 220 |
{
|
|
@@ -242,13 +256,13 @@ class DigitalPianism_Abandonedcarts_Model_Observer extends Mage_Core_Model_Abstr
|
|
| 242 |
Mage::helper('abandonedcarts')->log(__METHOD__ . "sendAbandonedCartsSaleEmail test: " . $email);
|
| 243 |
// Send the test email
|
| 244 |
Mage::getModel('core/email_template')
|
| 245 |
-
|
| 246 |
-
|
| 247 |
-
|
| 248 |
-
|
| 249 |
-
|
| 250 |
-
|
| 251 |
-
|
| 252 |
}
|
| 253 |
}
|
| 254 |
else
|
|
@@ -257,13 +271,13 @@ class DigitalPianism_Abandonedcarts_Model_Observer extends Mage_Core_Model_Abstr
|
|
| 257 |
|
| 258 |
// Send the email
|
| 259 |
Mage::getModel('core/email_template')
|
| 260 |
-
|
| 261 |
-
|
| 262 |
-
|
| 263 |
-
|
| 264 |
-
|
| 265 |
-
|
| 266 |
-
|
| 267 |
}
|
| 268 |
|
| 269 |
// Load the quote
|
|
@@ -275,7 +289,7 @@ class DigitalPianism_Abandonedcarts_Model_Observer extends Mage_Core_Model_Abstr
|
|
| 275 |
// Save only if dryrun is false or if the test email is set and found
|
| 276 |
if (!$dryrun || (isset($testemail) && $email == $testemail))
|
| 277 |
{
|
| 278 |
-
|
| 279 |
}
|
| 280 |
}
|
| 281 |
}
|
|
@@ -285,11 +299,11 @@ class DigitalPianism_Abandonedcarts_Model_Observer extends Mage_Core_Model_Abstr
|
|
| 285 |
}
|
| 286 |
}
|
| 287 |
|
| 288 |
-
|
| 289 |
-
|
| 290 |
-
|
| 291 |
-
|
| 292 |
-
|
| 293 |
{
|
| 294 |
try
|
| 295 |
{
|
|
@@ -317,13 +331,13 @@ class DigitalPianism_Abandonedcarts_Model_Observer extends Mage_Core_Model_Abstr
|
|
| 317 |
Mage::helper('abandonedcarts')->log(__METHOD__ . "sendAbandonedCartsEmail test: " . $email);
|
| 318 |
// Send the test email
|
| 319 |
Mage::getModel('core/email_template')
|
| 320 |
-
|
| 321 |
-
|
| 322 |
-
|
| 323 |
-
|
| 324 |
-
|
| 325 |
-
|
| 326 |
-
|
| 327 |
}
|
| 328 |
}
|
| 329 |
else
|
|
@@ -332,13 +346,13 @@ class DigitalPianism_Abandonedcarts_Model_Observer extends Mage_Core_Model_Abstr
|
|
| 332 |
|
| 333 |
// Send the email
|
| 334 |
Mage::getModel('core/email_template')
|
| 335 |
-
|
| 336 |
-
|
| 337 |
-
|
| 338 |
-
|
| 339 |
-
|
| 340 |
-
|
| 341 |
-
|
| 342 |
}
|
| 343 |
|
| 344 |
// Load the quote
|
|
@@ -350,7 +364,7 @@ class DigitalPianism_Abandonedcarts_Model_Observer extends Mage_Core_Model_Abstr
|
|
| 350 |
// Save only if dryrun is false or if the test email is set and found
|
| 351 |
if (!$dryrun || (isset($testemail) && $email == $testemail))
|
| 352 |
{
|
| 353 |
-
|
| 354 |
}
|
| 355 |
}
|
| 356 |
}
|
|
@@ -419,22 +433,22 @@ class DigitalPianism_Abandonedcarts_Model_Observer extends Mage_Core_Model_Abstr
|
|
| 419 |
$collection->getSelect()
|
| 420 |
->reset(Zend_Db_Select::COLUMNS)
|
| 421 |
->columns(array('e.entity_id AS product_id',
|
| 422 |
-
|
| 423 |
-
|
| 424 |
-
|
| 425 |
-
|
| 426 |
-
|
| 427 |
-
|
| 428 |
-
|
| 429 |
-
|
| 430 |
-
|
| 431 |
-
|
| 432 |
-
|
| 433 |
-
|
| 434 |
-
|
| 435 |
-
|
| 436 |
-
|
| 437 |
-
|
| 438 |
->joinInner(
|
| 439 |
array('quote_items' => Mage::getSingleton("core/resource")->getTableName('sales_flat_quote_item')),
|
| 440 |
'quote_items.product_id = e.entity_id AND quote_items.price > 0.00',
|
|
@@ -464,22 +478,22 @@ class DigitalPianism_Abandonedcarts_Model_Observer extends Mage_Core_Model_Abstr
|
|
| 464 |
$collection->getSelect()
|
| 465 |
->reset(Zend_Db_Select::COLUMNS)
|
| 466 |
->columns(array('e.entity_id AS product_id',
|
| 467 |
-
|
| 468 |
-
|
| 469 |
-
|
| 470 |
-
|
| 471 |
-
|
| 472 |
-
|
| 473 |
-
|
| 474 |
-
|
| 475 |
-
|
| 476 |
-
|
| 477 |
-
|
| 478 |
-
|
| 479 |
-
|
| 480 |
-
|
| 481 |
-
|
| 482 |
-
|
| 483 |
// Name
|
| 484 |
->joinInner(
|
| 485 |
array('catalog_name' => Mage::getSingleton("core/resource")->getTableName('catalog_product_entity_varchar')),
|
|
@@ -550,12 +564,12 @@ class DigitalPianism_Abandonedcarts_Model_Observer extends Mage_Core_Model_Abstr
|
|
| 550 |
}
|
| 551 |
}
|
| 552 |
|
| 553 |
-
|
| 554 |
-
|
| 555 |
-
|
| 556 |
-
|
| 557 |
-
|
| 558 |
-
|
| 559 |
public function sendAbandonedCartsEmail($nodate = false, $dryrun = false, $testemail = null)
|
| 560 |
{
|
| 561 |
if (Mage::helper('abandonedcarts')->getDryRun()) $dryrun = true;
|
|
@@ -618,18 +632,18 @@ class DigitalPianism_Abandonedcarts_Model_Observer extends Mage_Core_Model_Abstr
|
|
| 618 |
$collection->getSelect()
|
| 619 |
->reset(Zend_Db_Select::COLUMNS)
|
| 620 |
->columns(array('e.entity_id AS product_id',
|
| 621 |
-
|
| 622 |
-
|
| 623 |
-
|
| 624 |
-
|
| 625 |
-
|
| 626 |
-
|
| 627 |
-
|
| 628 |
-
|
| 629 |
-
|
| 630 |
-
|
| 631 |
-
|
| 632 |
-
|
| 633 |
->joinInner(
|
| 634 |
array('quote_items' => Mage::getSingleton("core/resource")->getTableName('sales_flat_quote_item')),
|
| 635 |
'quote_items.product_id = e.entity_id AND quote_items.price > 0.00',
|
|
@@ -659,18 +673,18 @@ class DigitalPianism_Abandonedcarts_Model_Observer extends Mage_Core_Model_Abstr
|
|
| 659 |
$collection->getSelect()
|
| 660 |
->reset(Zend_Db_Select::COLUMNS)
|
| 661 |
->columns(array('e.entity_id AS product_id',
|
| 662 |
-
|
| 663 |
-
|
| 664 |
-
|
| 665 |
-
|
| 666 |
-
|
| 667 |
-
|
| 668 |
-
|
| 669 |
-
|
| 670 |
-
|
| 671 |
-
|
| 672 |
-
|
| 673 |
-
|
| 674 |
// Name
|
| 675 |
->joinInner(
|
| 676 |
array('catalog_name' => Mage::getSingleton("core/resource")->getTableName('catalog_product_entity_varchar')),
|
| 37 |
$this->_today = $today->toString("Y-MM-dd HH:mm:ss");
|
| 38 |
}
|
| 39 |
|
| 40 |
+
/**
|
| 41 |
+
* @return string
|
| 42 |
+
*/
|
| 43 |
+
protected function _getToday()
|
| 44 |
{
|
| 45 |
return $this->_today;
|
| 46 |
}
|
| 47 |
|
| 48 |
+
/**
|
| 49 |
+
* @return array
|
| 50 |
+
*/
|
| 51 |
+
protected function _getRecipients()
|
| 52 |
{
|
| 53 |
return $this->_recipients;
|
| 54 |
}
|
| 55 |
|
| 56 |
+
/**
|
| 57 |
+
* @return array
|
| 58 |
+
*/
|
| 59 |
+
protected function _getSaleRecipients()
|
| 60 |
{
|
| 61 |
return $this->_saleRecipients;
|
| 62 |
}
|
| 63 |
|
| 64 |
+
/**
|
| 65 |
+
* @param $args
|
| 66 |
+
*/
|
| 67 |
+
public function generateRecipients($args)
|
| 68 |
{
|
| 69 |
// Customer group check
|
| 70 |
if (array_key_exists('customer_group',$args['row']) && !in_array($args['row']['customer_group'],$this->_customerGroups))
|
| 95 |
// Limit the collection to get the specific product
|
| 96 |
$_productCollection->setPageSize(1);
|
| 97 |
|
| 98 |
+
try {
|
| 99 |
+
$productImg = (string)Mage::helper('catalog/image')->init($_productCollection->getFirstItem(), 'image');
|
| 100 |
+
}
|
| 101 |
+
catch (Exception $e) {
|
| 102 |
+
$productImg = false;
|
| 103 |
+
}
|
| 104 |
+
|
| 105 |
// Add product image
|
| 106 |
+
$emailTemplateVariables['productimage'] = $productImg;
|
| 107 |
|
| 108 |
$emailTemplateVariables['extraproductcount'] = 0;
|
| 109 |
}
|
| 119 |
$this->_recipients[$args['row']['customer_email']]['store_id'] = $this->_currentStoreId;
|
| 120 |
}
|
| 121 |
|
| 122 |
+
/**
|
| 123 |
+
* @param $args
|
| 124 |
+
*/
|
| 125 |
+
public function generateSaleRecipients($args)
|
| 126 |
{
|
| 127 |
// Customer group check
|
| 128 |
if (array_key_exists('customer_group',$args['row']) && !in_array($args['row']['customer_group'],$this->_customerGroups))
|
| 179 |
// Limit the collection to get the specific product
|
| 180 |
$_productCollection->setPageSize(1);
|
| 181 |
|
| 182 |
+
try {
|
| 183 |
+
$productImg = (string)Mage::helper('catalog/image')->init($_productCollection->getFirstItem(), 'image');
|
| 184 |
+
}
|
| 185 |
+
catch (Exception $e) {
|
| 186 |
+
$productImg = false;
|
| 187 |
+
}
|
| 188 |
+
|
| 189 |
// Add product image
|
| 190 |
+
$emailTemplateVariables['productimage'] = $productImg;
|
| 191 |
}
|
| 192 |
else
|
| 193 |
{
|
| 224 |
}
|
| 225 |
}
|
| 226 |
|
| 227 |
+
/**
|
| 228 |
+
* @param $dryrun
|
| 229 |
+
* @param $testemail
|
| 230 |
+
*/
|
| 231 |
+
protected function _sendSaleEmails($dryrun,$testemail)
|
| 232 |
{
|
| 233 |
try
|
| 234 |
{
|
| 256 |
Mage::helper('abandonedcarts')->log(__METHOD__ . "sendAbandonedCartsSaleEmail test: " . $email);
|
| 257 |
// Send the test email
|
| 258 |
Mage::getModel('core/email_template')
|
| 259 |
+
->sendTransactional(
|
| 260 |
+
$templateId,
|
| 261 |
+
$sender,
|
| 262 |
+
$email,
|
| 263 |
+
$recipient['emailTemplateVariables']['fullname'] ,
|
| 264 |
+
$recipient['emailTemplateVariables'],
|
| 265 |
+
null);
|
| 266 |
}
|
| 267 |
}
|
| 268 |
else
|
| 271 |
|
| 272 |
// Send the email
|
| 273 |
Mage::getModel('core/email_template')
|
| 274 |
+
->sendTransactional(
|
| 275 |
+
$templateId,
|
| 276 |
+
$sender,
|
| 277 |
+
$email,
|
| 278 |
+
$recipient['emailTemplateVariables']['fullname'] ,
|
| 279 |
+
$recipient['emailTemplateVariables'],
|
| 280 |
+
null);
|
| 281 |
}
|
| 282 |
|
| 283 |
// Load the quote
|
| 289 |
// Save only if dryrun is false or if the test email is set and found
|
| 290 |
if (!$dryrun || (isset($testemail) && $email == $testemail))
|
| 291 |
{
|
| 292 |
+
$quote->getResource()->saveAttribute($quote,array('abandoned_sale_notified'));
|
| 293 |
}
|
| 294 |
}
|
| 295 |
}
|
| 299 |
}
|
| 300 |
}
|
| 301 |
|
| 302 |
+
/**
|
| 303 |
+
* @param $dryrun
|
| 304 |
+
* @param $testemail
|
| 305 |
+
*/
|
| 306 |
+
protected function _sendEmails($dryrun,$testemail)
|
| 307 |
{
|
| 308 |
try
|
| 309 |
{
|
| 331 |
Mage::helper('abandonedcarts')->log(__METHOD__ . "sendAbandonedCartsEmail test: " . $email);
|
| 332 |
// Send the test email
|
| 333 |
Mage::getModel('core/email_template')
|
| 334 |
+
->sendTransactional(
|
| 335 |
+
$templateId,
|
| 336 |
+
$sender,
|
| 337 |
+
$email,
|
| 338 |
+
$recipient['emailTemplateVariables']['fullname'] ,
|
| 339 |
+
$recipient['emailTemplateVariables'],
|
| 340 |
+
null);
|
| 341 |
}
|
| 342 |
}
|
| 343 |
else
|
| 346 |
|
| 347 |
// Send the email
|
| 348 |
Mage::getModel('core/email_template')
|
| 349 |
+
->sendTransactional(
|
| 350 |
+
$templateId,
|
| 351 |
+
$sender,
|
| 352 |
+
$email,
|
| 353 |
+
$recipient['emailTemplateVariables']['fullname'] ,
|
| 354 |
+
$recipient['emailTemplateVariables'],
|
| 355 |
+
null);
|
| 356 |
}
|
| 357 |
|
| 358 |
// Load the quote
|
| 364 |
// Save only if dryrun is false or if the test email is set and found
|
| 365 |
if (!$dryrun || (isset($testemail) && $email == $testemail))
|
| 366 |
{
|
| 367 |
+
$quote->getResource()->saveAttribute($quote,array('abandoned_notified'));
|
| 368 |
}
|
| 369 |
}
|
| 370 |
}
|
| 433 |
$collection->getSelect()
|
| 434 |
->reset(Zend_Db_Select::COLUMNS)
|
| 435 |
->columns(array('e.entity_id AS product_id',
|
| 436 |
+
'e.sku',
|
| 437 |
+
'catalog_flat.name as product_name',
|
| 438 |
+
'catalog_flat.price as product_price',
|
| 439 |
+
'catalog_flat.special_price as product_special_price',
|
| 440 |
+
'catalog_flat.special_from_date as product_special_from_date',
|
| 441 |
+
'catalog_flat.special_to_date as product_special_to_date',
|
| 442 |
+
'quote_table.entity_id as cart_id',
|
| 443 |
+
'quote_table.updated_at as cart_updated_at',
|
| 444 |
+
'quote_table.abandoned_sale_notified as has_been_notified',
|
| 445 |
+
'quote_items.price as product_price_in_cart',
|
| 446 |
+
'quote_table.customer_email as customer_email',
|
| 447 |
+
'quote_table.customer_firstname as customer_firstname',
|
| 448 |
+
'quote_table.customer_lastname as customer_lastname',
|
| 449 |
+
'quote_table.customer_group_id as customer_group'
|
| 450 |
+
)
|
| 451 |
+
)
|
| 452 |
->joinInner(
|
| 453 |
array('quote_items' => Mage::getSingleton("core/resource")->getTableName('sales_flat_quote_item')),
|
| 454 |
'quote_items.product_id = e.entity_id AND quote_items.price > 0.00',
|
| 478 |
$collection->getSelect()
|
| 479 |
->reset(Zend_Db_Select::COLUMNS)
|
| 480 |
->columns(array('e.entity_id AS product_id',
|
| 481 |
+
'e.sku',
|
| 482 |
+
'catalog_name.value as product_name',
|
| 483 |
+
'catalog_price.value as product_price',
|
| 484 |
+
'catalog_sprice.value as product_special_price',
|
| 485 |
+
'catalog_spfrom.value as product_special_from_date',
|
| 486 |
+
'catalog_spto.value as product_special_to_date',
|
| 487 |
+
'quote_table.entity_id as cart_id',
|
| 488 |
+
'quote_table.updated_at as cart_updated_at',
|
| 489 |
+
'quote_table.abandoned_sale_notified as has_been_notified',
|
| 490 |
+
'quote_items.price as product_price_in_cart',
|
| 491 |
+
'quote_table.customer_email as customer_email',
|
| 492 |
+
'quote_table.customer_firstname as customer_firstname',
|
| 493 |
+
'quote_table.customer_lastname as customer_lastname',
|
| 494 |
+
'quote_table.customer_group_id as customer_group'
|
| 495 |
+
)
|
| 496 |
+
)
|
| 497 |
// Name
|
| 498 |
->joinInner(
|
| 499 |
array('catalog_name' => Mage::getSingleton("core/resource")->getTableName('catalog_product_entity_varchar')),
|
| 564 |
}
|
| 565 |
}
|
| 566 |
|
| 567 |
+
/**
|
| 568 |
+
* Send notification email to customer with abandoned carts after the number of days specified in the config
|
| 569 |
+
* @param bool $nodate
|
| 570 |
+
* @param boolean $dryrun if dryrun is set to true, it won't send emails and won't alter quotes
|
| 571 |
+
* @param string $testemail email to test
|
| 572 |
+
*/
|
| 573 |
public function sendAbandonedCartsEmail($nodate = false, $dryrun = false, $testemail = null)
|
| 574 |
{
|
| 575 |
if (Mage::helper('abandonedcarts')->getDryRun()) $dryrun = true;
|
| 632 |
$collection->getSelect()
|
| 633 |
->reset(Zend_Db_Select::COLUMNS)
|
| 634 |
->columns(array('e.entity_id AS product_id',
|
| 635 |
+
'e.sku',
|
| 636 |
+
'catalog_flat.name as product_name',
|
| 637 |
+
'catalog_flat.price as product_price',
|
| 638 |
+
'quote_table.entity_id as cart_id',
|
| 639 |
+
'quote_table.updated_at as cart_updated_at',
|
| 640 |
+
'quote_table.abandoned_notified as has_been_notified',
|
| 641 |
+
'quote_table.customer_email as customer_email',
|
| 642 |
+
'quote_table.customer_firstname as customer_firstname',
|
| 643 |
+
'quote_table.customer_lastname as customer_lastname',
|
| 644 |
+
'quote_table.customer_group_id as customer_group'
|
| 645 |
+
)
|
| 646 |
+
)
|
| 647 |
->joinInner(
|
| 648 |
array('quote_items' => Mage::getSingleton("core/resource")->getTableName('sales_flat_quote_item')),
|
| 649 |
'quote_items.product_id = e.entity_id AND quote_items.price > 0.00',
|
| 673 |
$collection->getSelect()
|
| 674 |
->reset(Zend_Db_Select::COLUMNS)
|
| 675 |
->columns(array('e.entity_id AS product_id',
|
| 676 |
+
'e.sku',
|
| 677 |
+
'catalog_name.value as product_name',
|
| 678 |
+
'catalog_price.value as product_price',
|
| 679 |
+
'quote_table.entity_id as cart_id',
|
| 680 |
+
'quote_table.updated_at as cart_updated_at',
|
| 681 |
+
'quote_table.abandoned_notified as has_been_notified',
|
| 682 |
+
'quote_table.customer_email as customer_email',
|
| 683 |
+
'quote_table.customer_firstname as customer_firstname',
|
| 684 |
+
'quote_table.customer_lastname as customer_lastname',
|
| 685 |
+
'quote_table.customer_group_id as customer_group'
|
| 686 |
+
)
|
| 687 |
+
)
|
| 688 |
// Name
|
| 689 |
->joinInner(
|
| 690 |
array('catalog_name' => Mage::getSingleton("core/resource")->getTableName('catalog_product_entity_varchar')),
|
app/code/community/DigitalPianism/Abandonedcarts/etc/config.xml
CHANGED
|
@@ -4,7 +4,7 @@
|
|
| 4 |
|
| 5 |
<modules>
|
| 6 |
<DigitalPianism_Abandonedcarts>
|
| 7 |
-
<version>0.3.
|
| 8 |
</DigitalPianism_Abandonedcarts>
|
| 9 |
</modules>
|
| 10 |
|
| 4 |
|
| 5 |
<modules>
|
| 6 |
<DigitalPianism_Abandonedcarts>
|
| 7 |
+
<version>0.3.6</version>
|
| 8 |
</DigitalPianism_Abandonedcarts>
|
| 9 |
</modules>
|
| 10 |
|
package.xml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
<?xml version="1.0"?>
|
| 2 |
<package>
|
| 3 |
<name>DigitalPianism_Abandonedcarts</name>
|
| 4 |
-
<version>0.3.
|
| 5 |
<stability>stable</stability>
|
| 6 |
<license uri="http://opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
|
| 7 |
<channel>community</channel>
|
|
@@ -95,11 +95,11 @@ Save the configuration.
|
|
| 95 |

|
| 96 |
<p>To manually trigger the notification system, please access System &gt; Configuration &gt; Digital Pianism &gt; Abandoned carts email and click on the "Send" button</p>
|
| 97 |
<p>Please note that this functionality will send abandoned carts notification regardless the delay you provided, all possible abandoned carts emails will be sent.</p></description>
|
| 98 |
-
<notes>- Fix a bug where
|
| 99 |
<authors><author><name>Digital Pianism</name><user>digitalpianism</user><email>contact@digital-pianism.com</email></author></authors>
|
| 100 |
-
<date>2016-
|
| 101 |
-
<time>
|
| 102 |
-
<contents><target name="magecommunity"><dir name="DigitalPianism"><dir name="Abandonedcarts"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><dir name="Form"><file name="Button.php" hash="1c8d9cad5c54bcc28c0760e72406b5e3"/></dir></dir></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="5148fe5929e61f4c8385c6c5be0b89f3"/></dir><dir name="Model"><file name="Observer.php" hash="
|
| 103 |
<compatible/>
|
| 104 |
<dependencies><required><php><min>4.1.0</min><max>6.0.0</max></php></required></dependencies>
|
| 105 |
</package>
|
| 1 |
<?xml version="1.0"?>
|
| 2 |
<package>
|
| 3 |
<name>DigitalPianism_Abandonedcarts</name>
|
| 4 |
+
<version>0.3.6</version>
|
| 5 |
<stability>stable</stability>
|
| 6 |
<license uri="http://opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
|
| 7 |
<channel>community</channel>
|
| 95 |

|
| 96 |
<p>To manually trigger the notification system, please access System &gt; Configuration &gt; Digital Pianism &gt; Abandoned carts email and click on the "Send" button</p>
|
| 97 |
<p>Please note that this functionality will send abandoned carts notification regardless the delay you provided, all possible abandoned carts emails will be sent.</p></description>
|
| 98 |
+
<notes>- Fix a bug where an error would be logged in case the product image does not exist.</notes>
|
| 99 |
<authors><author><name>Digital Pianism</name><user>digitalpianism</user><email>contact@digital-pianism.com</email></author></authors>
|
| 100 |
+
<date>2016-04-22</date>
|
| 101 |
+
<time>13:16:02</time>
|
| 102 |
+
<contents><target name="magecommunity"><dir name="DigitalPianism"><dir name="Abandonedcarts"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><dir name="Form"><file name="Button.php" hash="1c8d9cad5c54bcc28c0760e72406b5e3"/></dir></dir></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="5148fe5929e61f4c8385c6c5be0b89f3"/></dir><dir name="Model"><file name="Observer.php" hash="8f44dfb99958d521b10a292a65d842d4"/><dir name="Sales"><dir name="Resource"><file name="Quote.php" hash="3b2f9f24a74a6ea3b6851d64bd6ae5ba"/></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="AbandonedcartsController.php" hash="c26ae0925cc1ca148f5e3277702842e2"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="8ddca513c0ed7e034c476f3e026ceda8"/><file name="config.xml" hash="8d6a68ea652f6c578e91adffa33d40be"/><file name="system.xml" hash="07f261c1f35321317da8f09f75a37317"/></dir><dir name="sql"><dir name="abandonedcarts_setup"><file name="install-0.0.1.php" hash="851338e4a710b5d94fead688b065f4b5"/><file name="upgrade-0.0.1-0.0.2.php" hash="0227c009e49b97bcf3f34f84c49f0927"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="DigitalPianism_Abandonedcarts.xml" hash="8a7657855486c68d548db4ba48e083d2"/></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="digitalpianism"><dir name="abandonedcarts"><dir name="system"><dir name="config"><file name="button.phtml" hash="8f7e673ea52cd81b616cac01b1022990"/></dir></dir></dir></dir></dir></dir></dir></dir></target><target name="magelocale"><dir name="en_US"><dir name="template"><dir name="email"><dir name="digitalpianism"><dir name="abandonedcarts"><file name="sales_abandonedcarts.html" hash="f8a5ec3af09730f06ade1fd18fa321e9"/><file name="sales_abandonedcarts_sale.html" hash="22bb7a1e95e336948a43f282e7e58806"/></dir></dir></dir></dir><file name="DigitalPianism_Abandonedcarts.csv" hash="b782bff95dba8b860cd773a674aac6c9"/></dir><dir name="fr_FR"><dir name="template"><dir name="email"><dir name="digitalpianism"><dir name="abandonedcarts"><file name="sales_abandonedcarts.html" hash="5340ea06fbf9d2213ea2f09e7425181b"/><file name="sales_abandonedcarts_sale.html" hash="22592c5467a554ab80195218bec5b6b0"/></dir></dir></dir></dir><file name="DigitalPianism_Abandonedcarts.csv" hash="0f5271e2ad1d6b07061314b18bd170c2"/></dir></target></contents>
|
| 103 |
<compatible/>
|
| 104 |
<dependencies><required><php><min>4.1.0</min><max>6.0.0</max></php></required></dependencies>
|
| 105 |
</package>
|
