Version Notes
- Additional logging
- Updated subscribe mechanism
- Fix for updates from Laposta not being stored correctly
Download this release
Release Info
| Developer | Merten van Gerven |
| Extension | Mage_Laposta_Connect |
| Version | 1.0.3 |
| Comparing to | |
| See all releases | |
Code changes from version 1.0.2 to 1.0.3
app/code/community/Laposta/Connect/Helper/Customer.php
CHANGED
|
@@ -45,7 +45,11 @@ class Laposta_Connect_Helper_Customer extends Mage_Core_Helper_Abstract
|
|
| 45 |
/**
|
| 46 |
* @var array
|
| 47 |
*/
|
| 48 |
-
protected $methodMapSet = array(
|
|
|
|
|
|
|
|
|
|
|
|
|
| 49 |
|
| 50 |
/**
|
| 51 |
* @var array
|
|
@@ -155,7 +159,7 @@ class Laposta_Connect_Helper_Customer extends Mage_Core_Helper_Abstract
|
|
| 155 |
}
|
| 156 |
|
| 157 |
if (!isset($this->methodMapSet[$name])) {
|
| 158 |
-
return $this;
|
| 159 |
}
|
| 160 |
|
| 161 |
$method = $this->methodMapSet[$name];
|
|
@@ -261,6 +265,31 @@ class Laposta_Connect_Helper_Customer extends Mage_Core_Helper_Abstract
|
|
| 261 |
return $gender;
|
| 262 |
}
|
| 263 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 264 |
/**
|
| 265 |
* Get the date of the customers last order
|
| 266 |
*
|
|
@@ -296,6 +325,22 @@ class Laposta_Connect_Helper_Customer extends Mage_Core_Helper_Abstract
|
|
| 296 |
return $address->getData('telephone');
|
| 297 |
}
|
| 298 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 299 |
/**
|
| 300 |
* Get the customer company name
|
| 301 |
*
|
|
@@ -312,6 +357,22 @@ class Laposta_Connect_Helper_Customer extends Mage_Core_Helper_Abstract
|
|
| 312 |
return $address->getData('company');
|
| 313 |
}
|
| 314 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 315 |
/**
|
| 316 |
* Get the name that corresponds thte customer group id.
|
| 317 |
*
|
| 45 |
/**
|
| 46 |
* @var array
|
| 47 |
*/
|
| 48 |
+
protected $methodMapSet = array(
|
| 49 |
+
'gender' => 'setGender',
|
| 50 |
+
'telephone' => 'setTelephone',
|
| 51 |
+
'company' => 'setCompany',
|
| 52 |
+
);
|
| 53 |
|
| 54 |
/**
|
| 55 |
* @var array
|
| 159 |
}
|
| 160 |
|
| 161 |
if (!isset($this->methodMapSet[$name])) {
|
| 162 |
+
return $this->setCustomerAttribute($name, $value);
|
| 163 |
}
|
| 164 |
|
| 165 |
$method = $this->methodMapSet[$name];
|
| 265 |
return $gender;
|
| 266 |
}
|
| 267 |
|
| 268 |
+
/**
|
| 269 |
+
* Set the textual customer gender
|
| 270 |
+
*
|
| 271 |
+
* @return string
|
| 272 |
+
*/
|
| 273 |
+
protected function setGender($value)
|
| 274 |
+
{
|
| 275 |
+
$options = $this->getCustomer()->getAttribute('gender')->getSource()->getAllOptions(false);
|
| 276 |
+
$genderId = '';
|
| 277 |
+
|
| 278 |
+
foreach ($options as $option) {
|
| 279 |
+
if ($option['label'] != $value) {
|
| 280 |
+
continue;
|
| 281 |
+
}
|
| 282 |
+
|
| 283 |
+
$genderId = $option['value'];
|
| 284 |
+
|
| 285 |
+
break;
|
| 286 |
+
}
|
| 287 |
+
|
| 288 |
+
$this->setCustomerAttribute('gender', $genderId);
|
| 289 |
+
|
| 290 |
+
return $this;
|
| 291 |
+
}
|
| 292 |
+
|
| 293 |
/**
|
| 294 |
* Get the date of the customers last order
|
| 295 |
*
|
| 325 |
return $address->getData('telephone');
|
| 326 |
}
|
| 327 |
|
| 328 |
+
/**
|
| 329 |
+
* Set the customer telephone number
|
| 330 |
+
*
|
| 331 |
+
* @return string
|
| 332 |
+
*/
|
| 333 |
+
protected function setTelephone($value)
|
| 334 |
+
{
|
| 335 |
+
$address = $this->getCustomer()->getPrimaryBillingAddress();
|
| 336 |
+
|
| 337 |
+
if (!$address instanceof Mage_Customer_Model_Address) {
|
| 338 |
+
return '';
|
| 339 |
+
}
|
| 340 |
+
|
| 341 |
+
return $address->setData('telephone', $value);
|
| 342 |
+
}
|
| 343 |
+
|
| 344 |
/**
|
| 345 |
* Get the customer company name
|
| 346 |
*
|
| 357 |
return $address->getData('company');
|
| 358 |
}
|
| 359 |
|
| 360 |
+
/**
|
| 361 |
+
* Set the customer company name
|
| 362 |
+
*
|
| 363 |
+
* @return string
|
| 364 |
+
*/
|
| 365 |
+
protected function setCompany($value)
|
| 366 |
+
{
|
| 367 |
+
$address = $this->getCustomer()->getPrimaryBillingAddress();
|
| 368 |
+
|
| 369 |
+
if (!$address instanceof Mage_Customer_Model_Address) {
|
| 370 |
+
return '';
|
| 371 |
+
}
|
| 372 |
+
|
| 373 |
+
return $address->setData('company', $value);
|
| 374 |
+
}
|
| 375 |
+
|
| 376 |
/**
|
| 377 |
* Get the name that corresponds thte customer group id.
|
| 378 |
*
|
app/code/community/Laposta/Connect/Helper/Laposta.php
CHANGED
|
@@ -86,9 +86,12 @@ class Laposta_Connect_Helper_Laposta extends Mage_Core_Helper_Abstract
|
|
| 86 |
'state' => $subscribed ? 'active' : 'unsubscribed',
|
| 87 |
'custom_fields' => $this->denormalizeFields($listId, $fields),
|
| 88 |
);
|
|
|
|
|
|
|
|
|
|
| 89 |
$result = $member->create($data);
|
| 90 |
|
| 91 |
-
$this->log(__METHOD__, $result);
|
| 92 |
|
| 93 |
return $result['member']['member_id'];
|
| 94 |
}
|
| 86 |
'state' => $subscribed ? 'active' : 'unsubscribed',
|
| 87 |
'custom_fields' => $this->denormalizeFields($listId, $fields),
|
| 88 |
);
|
| 89 |
+
|
| 90 |
+
$this->log(__METHOD__ . ' Sending: ', $data);
|
| 91 |
+
|
| 92 |
$result = $member->create($data);
|
| 93 |
|
| 94 |
+
$this->log(__METHOD__ . ' Received: ', $result);
|
| 95 |
|
| 96 |
return $result['member']['member_id'];
|
| 97 |
}
|
app/code/community/Laposta/Connect/controllers/WebhookController.php
CHANGED
|
@@ -105,8 +105,6 @@ class Laposta_Connect_WebhookController extends Mage_Core_Controller_Front_Actio
|
|
| 105 |
*/
|
| 106 |
protected function log($message, $data = null)
|
| 107 |
{
|
| 108 |
-
var_dump($message, $data);
|
| 109 |
-
|
| 110 |
Mage::helper('lapostaconnect')->log(
|
| 111 |
array(
|
| 112 |
'message' => $message,
|
|
@@ -158,24 +156,41 @@ class Laposta_Connect_WebhookController extends Mage_Core_Controller_Front_Actio
|
|
| 158 |
return $this->log("Customer for subscriber with laposta id '$memberId' not found.");
|
| 159 |
}
|
| 160 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 161 |
/** @var $newsletterSubscriberModel Mage_Newsletter_Model_Subscriber */
|
| 162 |
$newsletterSubscriberModel = Mage::getModel('newsletter/subscriber');
|
| 163 |
/** @var $newsletterSubscriber Mage_Newsletter_Model_Subscriber */
|
| 164 |
$newsletterSubscriber = $newsletterSubscriberModel->loadByCustomer($customer);
|
| 165 |
-
|
| 166 |
-
|
|
|
|
| 167 |
|
| 168 |
if ($status !== 'active') {
|
|
|
|
| 169 |
$newsletterSubscriber->unsubscribe();
|
| 170 |
|
| 171 |
-
|
| 172 |
-
|
| 173 |
-
return $this;
|
| 174 |
}
|
|
|
|
|
|
|
|
|
|
| 175 |
|
| 176 |
-
|
|
|
|
| 177 |
|
| 178 |
-
|
| 179 |
|
| 180 |
return $this;
|
| 181 |
}
|
| 105 |
*/
|
| 106 |
protected function log($message, $data = null)
|
| 107 |
{
|
|
|
|
|
|
|
| 108 |
Mage::helper('lapostaconnect')->log(
|
| 109 |
array(
|
| 110 |
'message' => $message,
|
| 156 |
return $this->log("Customer for subscriber with laposta id '$memberId' not found.");
|
| 157 |
}
|
| 158 |
|
| 159 |
+
/** @var $fieldsHelper Laposta_Connect_Helper_Fields */
|
| 160 |
+
$fieldsHelper = Mage::helper('lapostaconnect/Fields');
|
| 161 |
+
$fields = $fieldsHelper->getByListId($subscriber->getListId());
|
| 162 |
+
|
| 163 |
+
/** @var $customerHelper Laposta_Connect_Helper_Customer */
|
| 164 |
+
$customerHelper = Mage::helper('lapostaconnect/customer');
|
| 165 |
+
|
| 166 |
+
$customerHelper->setCustomer($customer);
|
| 167 |
+
$customerHelper->email = $event['data']['email'];
|
| 168 |
+
foreach ($fields as $fieldName => $lapostaTag) {
|
| 169 |
+
$customerHelper->$fieldName = $event['data']['custom_fields'][$lapostaTag];
|
| 170 |
+
}
|
| 171 |
+
|
| 172 |
/** @var $newsletterSubscriberModel Mage_Newsletter_Model_Subscriber */
|
| 173 |
$newsletterSubscriberModel = Mage::getModel('newsletter/subscriber');
|
| 174 |
/** @var $newsletterSubscriber Mage_Newsletter_Model_Subscriber */
|
| 175 |
$newsletterSubscriber = $newsletterSubscriberModel->loadByCustomer($customer);
|
| 176 |
+
$newsletterSubscriber->setCustomerId($subscriber->getData('customer_id'));
|
| 177 |
+
$newsletterSubscriber->setEmail($customer->getEmail());
|
| 178 |
+
$newsletterSubscriber->setStoreId($customer->getStore()->getId());
|
| 179 |
|
| 180 |
if ($status !== 'active') {
|
| 181 |
+
$customer->setIsSubscribed(false);
|
| 182 |
$newsletterSubscriber->unsubscribe();
|
| 183 |
|
| 184 |
+
$this->log("Customer '{$customer->getEmail()}' for subscriber with laposta id '$memberId' has been unsubscribed.");
|
|
|
|
|
|
|
| 185 |
}
|
| 186 |
+
else {
|
| 187 |
+
$customer->setIsSubscribed(true);
|
| 188 |
+
$newsletterSubscriber->subscribeCustomer($customer);
|
| 189 |
|
| 190 |
+
$this->log("Customer '{$customer->getEmail()}' for subscriber with laposta id '$memberId' has been subscribed.");
|
| 191 |
+
}
|
| 192 |
|
| 193 |
+
$customer->save();
|
| 194 |
|
| 195 |
return $this;
|
| 196 |
}
|
package.xml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
<?xml version="1.0"?>
|
| 2 |
<package>
|
| 3 |
<name>Mage_Laposta_Connect</name>
|
| 4 |
-
<version>1.0.
|
| 5 |
<stability>stable</stability>
|
| 6 |
<license uri="http://www.opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
|
| 7 |
<channel>community</channel>
|
|
@@ -24,13 +24,14 @@
|
|
| 24 |

|
| 25 |
<h2>Questions</h2>
|
| 26 |
<p>Please see the FAQ section for questions.</p></description>
|
| 27 |
-
<notes>-
|
| 28 |
-
-
|
|
|
|
| 29 |
</notes>
|
| 30 |
<authors><author><name>Merten van Gerven</name><user>mertenvg</user><email>merten@codeblanche.com</email></author></authors>
|
| 31 |
-
<date>2014-05-
|
| 32 |
-
<time>
|
| 33 |
-
<contents><target name="magecommunity"><dir name="Laposta"><dir name="Connect"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><dir name="Form"><dir name="Field"><file name="Mapfields.php" hash="2c88b8a08121c09ba5748f631205a282"/></dir></dir></dir></dir></dir></dir><dir name="Helper"><file name="Customer.php" hash="
|
| 34 |
<compatible/>
|
| 35 |
<dependencies><required><php><min>5.3.0</min><max>6.0.0</max></php></required></dependencies>
|
| 36 |
</package>
|
| 1 |
<?xml version="1.0"?>
|
| 2 |
<package>
|
| 3 |
<name>Mage_Laposta_Connect</name>
|
| 4 |
+
<version>1.0.3</version>
|
| 5 |
<stability>stable</stability>
|
| 6 |
<license uri="http://www.opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
|
| 7 |
<channel>community</channel>
|
| 24 |

|
| 25 |
<h2>Questions</h2>
|
| 26 |
<p>Please see the FAQ section for questions.</p></description>
|
| 27 |
+
<notes>- Additional logging
|
| 28 |
+
- Updated subscribe mechanism
|
| 29 |
+
- Fix for updates from Laposta not being stored correctly
|
| 30 |
</notes>
|
| 31 |
<authors><author><name>Merten van Gerven</name><user>mertenvg</user><email>merten@codeblanche.com</email></author></authors>
|
| 32 |
+
<date>2014-05-16</date>
|
| 33 |
+
<time>14:00:23</time>
|
| 34 |
+
<contents><target name="magecommunity"><dir name="Laposta"><dir name="Connect"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><dir name="Form"><dir name="Field"><file name="Mapfields.php" hash="2c88b8a08121c09ba5748f631205a282"/></dir></dir></dir></dir></dir></dir><dir name="Helper"><file name="Customer.php" hash="ef0a5dff85fd77de92a0fefe06fddc60"/><file name="Data.php" hash="8f9e28d0f28f9375385432d227ec1d06"/><file name="Fields.php" hash="51bc0aa26167219b038c04b3babb19af"/><file name="Laposta.php" hash="6d7c3f204a79f7f01727e8fa80d66b10"/><file name="Subscribe.php" hash="f58bc248ee3b4d229b58de8b4efbccf3"/><file name="Sync.php" hash="ad94bd49cf666fb99fa043bef1ba8bcf"/></dir><dir name="Model"><file name="Cron.php" hash="270a2289a1de1bc678dfc4e6264c095b"/><file name="Field.php" hash="42e1857bdb7d90b31be189e2921ac8fd"/><file name="List.php" hash="99f590a5e5ea3b1a14869c641f49eaed"/><dir name="Mysql4"><dir name="Field"><file name="Collection.php" hash="f8133202231937b1ec14d8cdc39903fe"/></dir><file name="Field.php" hash="c49743d6acd1d4ce2b69aadf22838839"/><dir name="List"><file name="Collection.php" hash="fcc556452fff91bb3e9f933c68fff630"/></dir><file name="List.php" hash="6fef1b36f5d3a5560f83bafe205be614"/><dir name="Subscriber"><file name="Collection.php" hash="05db928eb656f132e4fa16ac740ce3c5"/></dir><file name="Subscriber.php" hash="9f73d39e97d4a19f8d8ad3c19f83a699"/></dir><file name="Observer.php" hash="1f22b2201a11543b725bc76f133b803d"/><file name="Subscriber.php" hash="cba5176e53a7dcab9b9014190f13485d"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="LapostaController.php" hash="cc2a0d62caf63469258042e3b29616e4"/></dir><file name="IndexController.php" hash="7577e30abee9624d59901edb5cecd3e9"/><file name="SubscribeAllController.php" hash="160ac8e5229bb1003d7220116a9b06f7"/><file name="WebhookController.php" hash="0526b02b319fc31cd8c8a3e9789ba358"/></dir><dir name="etc"><file name="adminhtml.xml" hash="71f985837d4b79e3db94c529bfee1e47"/><file name="config.xml" hash="325b71820df2ffd4b265810cb7c680f6"/><file name="system.xml" hash="6ee7d5de56541573f16a2caf94dc0418"/></dir><dir name="sql"><dir name="connect_setup"><file name="mysql4-install-0.1.0.php" hash="96c1911d06392a5e9496829411102479"/></dir></dir></dir></dir></target><target name="magelocal"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="lapostaconnect.xml" hash=""/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Laposta_Connect.xml" hash="ab7675e19ea96d39c5980bee835f0e76"/></dir></target><target name="magelocale"><dir name="en_US"><file name="Laposta_Connect.csv" hash="4f8f28790602cdd01633c0bb00f70585"/></dir></target></contents>
|
| 35 |
<compatible/>
|
| 36 |
<dependencies><required><php><min>5.3.0</min><max>6.0.0</max></php></required></dependencies>
|
| 37 |
</package>
|
