Version Notes
Pass "new customers" to Rejoiner
Download this release
Release Info
Developer | Mike |
Extension | Rejoiner |
Version | 1.2.4 |
Comparing to | |
See all releases |
Code changes from version 1.2.3 to 1.2.4
app/code/community/Rejoiner/Acr/Block/Product.php
CHANGED
@@ -7,6 +7,8 @@ class Rejoiner_Acr_Block_Product extends Rejoiner_Acr_Block_Base
|
|
7 |
public function getCurrentProductInfo()
|
8 |
{
|
9 |
$product = Mage::registry('current_product');
|
|
|
|
|
10 |
$imageHelper = Mage::helper('catalog/image');
|
11 |
$rejoinerHelper = Mage::helper('rejoiner_acr');
|
12 |
$mediaUrl = Mage::getBaseUrl('media');
|
@@ -43,7 +45,8 @@ class Rejoiner_Acr_Block_Product extends Rejoiner_Acr_Block_Base
|
|
43 |
'price' => $this->_convertPriceToCents((string) $product->getPrice()),
|
44 |
'product_id' => (string) $product->getSku(),
|
45 |
'product_url' => (string) $product->getProductUrl(),
|
46 |
-
'category' => $categories
|
|
|
47 |
);
|
48 |
return str_replace('\\/', '/', json_encode($productData));
|
49 |
}
|
7 |
public function getCurrentProductInfo()
|
8 |
{
|
9 |
$product = Mage::registry('current_product');
|
10 |
+
$stocklevel = (int)Mage::getModel('cataloginventory/stock_item')
|
11 |
+
->loadByProduct($product)->getQty();
|
12 |
$imageHelper = Mage::helper('catalog/image');
|
13 |
$rejoinerHelper = Mage::helper('rejoiner_acr');
|
14 |
$mediaUrl = Mage::getBaseUrl('media');
|
45 |
'price' => $this->_convertPriceToCents((string) $product->getPrice()),
|
46 |
'product_id' => (string) $product->getSku(),
|
47 |
'product_url' => (string) $product->getProductUrl(),
|
48 |
+
'category' => $categories,
|
49 |
+
'stock' => $stocklevel
|
50 |
);
|
51 |
return str_replace('\\/', '/', json_encode($productData));
|
52 |
}
|
app/code/community/Rejoiner/Acr/Model/Observer.php
CHANGED
@@ -2,58 +2,119 @@
|
|
2 |
class Rejoiner_Acr_Model_Observer
|
3 |
{
|
4 |
const REJOINER_API_URL = 'https://app.rejoiner.com';
|
5 |
-
const
|
|
|
6 |
const REJOINER_API_LOG_FILE = 'rejoiner_api.log';
|
7 |
|
8 |
-
const XML_PATH_REJOINER_API_KEY
|
9 |
-
const XML_PATH_REJOINER_API_SECRET
|
10 |
-
const XML_PATH_REJOINER_API_SITE_ID
|
|
|
|
|
|
|
11 |
|
12 |
-
|
|
|
|
|
|
|
|
|
13 |
{
|
14 |
$apiKey = Mage::getStoreConfig(self::XML_PATH_REJOINER_API_KEY);
|
15 |
$apiSecret = utf8_encode(Mage::getStoreConfig(self::XML_PATH_REJOINER_API_SECRET));
|
16 |
-
|
17 |
if ($apiKey && $apiSecret) {
|
18 |
/** @var Mage_Checkout_Model_Session $session */
|
19 |
$lastOrderId = $observer->getEvent()->getData('order_ids');
|
20 |
/** @var Mage_Sales_Model_Order $order */
|
21 |
$order = Mage::getModel('sales/order')->load($lastOrderId[0]);
|
22 |
-
|
23 |
-
|
|
|
|
|
24 |
$siteId = Mage::getStoreConfig(self::XML_PATH_REJOINER_API_SITE_ID);
|
25 |
-
$
|
26 |
-
|
27 |
-
|
|
|
|
|
|
|
|
|
28 |
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
55 |
}
|
|
|
|
|
56 |
}
|
|
|
57 |
}
|
58 |
|
59 |
/**
|
2 |
class Rejoiner_Acr_Model_Observer
|
3 |
{
|
4 |
const REJOINER_API_URL = 'https://app.rejoiner.com';
|
5 |
+
const REJOINER_API_CONVERT_REQUEST_PATH = '/api/1.0/site/%s/lead/convert';
|
6 |
+
const REJOINER_API_ADD_TO_LIST_REQUEST_PATH = '/api/1.0/site/%s/contact_add';
|
7 |
const REJOINER_API_LOG_FILE = 'rejoiner_api.log';
|
8 |
|
9 |
+
const XML_PATH_REJOINER_API_KEY = 'checkout/rejoiner_acr/api_key';
|
10 |
+
const XML_PATH_REJOINER_API_SECRET = 'checkout/rejoiner_acr/api_secret';
|
11 |
+
const XML_PATH_REJOINER_API_SITE_ID = 'checkout/rejoiner_acr/site_id';
|
12 |
+
const XML_PATH_REJOINER_API_DEBUGGER = 'checkout/rejoiner_acr/debug_enabled';
|
13 |
+
const XML_PATH_REJOINER_PASS_NEW_CUSTOMERS = 'checkout/rejoiner_acr/passing_new_customers';
|
14 |
+
const XML_PATH_REJOINER_LIST_ID = 'checkout/rejoiner_acr/list_id';
|
15 |
|
16 |
+
/**
|
17 |
+
* @param Varien_Event_Observer $observer
|
18 |
+
* @return $this
|
19 |
+
*/
|
20 |
+
public function trackOrderSuccess(Varien_Event_Observer $observer)
|
21 |
{
|
22 |
$apiKey = Mage::getStoreConfig(self::XML_PATH_REJOINER_API_KEY);
|
23 |
$apiSecret = utf8_encode(Mage::getStoreConfig(self::XML_PATH_REJOINER_API_SECRET));
|
|
|
24 |
if ($apiKey && $apiSecret) {
|
25 |
/** @var Mage_Checkout_Model_Session $session */
|
26 |
$lastOrderId = $observer->getEvent()->getData('order_ids');
|
27 |
/** @var Mage_Sales_Model_Order $order */
|
28 |
$order = Mage::getModel('sales/order')->load($lastOrderId[0]);
|
29 |
+
if (!$order->getId()) {
|
30 |
+
return $this;
|
31 |
+
}
|
32 |
+
$customerEmail = $order->getCustomerEmail();
|
33 |
$siteId = Mage::getStoreConfig(self::XML_PATH_REJOINER_API_SITE_ID);
|
34 |
+
$this->convert($apiKey, $apiSecret, $siteId, $customerEmail);
|
35 |
+
if (Mage::getStoreConfig(self::XML_PATH_REJOINER_PASS_NEW_CUSTOMERS) && Mage::getStoreConfig(self::XML_PATH_REJOINER_LIST_ID)) {
|
36 |
+
$this->addToList($apiKey, $apiSecret, $siteId, $order);
|
37 |
+
}
|
38 |
+
}
|
39 |
+
return $this;
|
40 |
+
}
|
41 |
|
42 |
+
/**
|
43 |
+
* @param $apiKey
|
44 |
+
* @param $apiSecret
|
45 |
+
* @param $siteId
|
46 |
+
* @param $customerEmail
|
47 |
+
* @return $this
|
48 |
+
*/
|
49 |
+
private function convert($apiKey, $apiSecret, $siteId, $customerEmail)
|
50 |
+
{
|
51 |
+
$requestBody = utf8_encode(sprintf('{"email": "%s"}', $customerEmail));
|
52 |
+
$requestPath = sprintf(self::REJOINER_API_CONVERT_REQUEST_PATH, $siteId);
|
53 |
+
$hmacData = utf8_encode(implode("\n", array(Varien_Http_Client::POST, $requestPath, $requestBody)));
|
54 |
+
$codedApiSecret = base64_encode(hash_hmac('sha1', $hmacData, $apiSecret, true));
|
55 |
+
$authorization = sprintf('Rejoiner %s:%s', $apiKey , $codedApiSecret);
|
56 |
+
$client = new Varien_Http_Client(self::REJOINER_API_URL . $requestPath);
|
57 |
+
$client->setRawData($requestBody);
|
58 |
+
$client->setHeaders(array('Authorization' => $authorization, 'Content-type' => 'application/json;' ));
|
59 |
+
$this->sendRequest($client);
|
60 |
+
return $this;
|
61 |
+
}
|
62 |
+
|
63 |
+
/**
|
64 |
+
* @param $apiKey
|
65 |
+
* @param $apiSecret
|
66 |
+
* @param $siteId
|
67 |
+
* @param $order Mage_Sales_Model_Order
|
68 |
+
* @return $this
|
69 |
+
*/
|
70 |
+
private function addToList($apiKey, $apiSecret, $siteId, $order)
|
71 |
+
{
|
72 |
+
$listId = Mage::getStoreConfig(self::XML_PATH_REJOINER_LIST_ID);
|
73 |
+
if (!$listId) {
|
74 |
+
return $this;
|
75 |
+
}
|
76 |
+
$data = array(
|
77 |
+
'email' => $order->getCustomerEmail(),
|
78 |
+
'list_id' => $listId,
|
79 |
+
'first_name' => $order->getCustomerFirstname()
|
80 |
+
);
|
81 |
+
$requestBody = utf8_encode(json_encode($data));
|
82 |
+
$requestPath = sprintf(self::REJOINER_API_ADD_TO_LIST_REQUEST_PATH, $siteId);
|
83 |
+
$hmacData = utf8_encode(implode("\n", array(Varien_Http_Client::POST, $requestPath, $requestBody)));
|
84 |
+
$codedApiSecret = base64_encode(hash_hmac('sha1', $hmacData, $apiSecret, true));
|
85 |
+
$authorization = sprintf('Rejoiner %s:%s', $apiKey , $codedApiSecret);
|
86 |
+
$client = new Varien_Http_Client(self::REJOINER_API_URL . $requestPath);
|
87 |
+
$client->setRawData($requestBody);
|
88 |
+
$client->setHeaders(array('Authorization' => $authorization, 'Content-type' => 'application/json;' ));
|
89 |
+
$this->sendRequest($client);
|
90 |
+
return $this;
|
91 |
+
}
|
92 |
+
|
93 |
+
private function sendRequest($client)
|
94 |
+
{
|
95 |
+
try{
|
96 |
+
$response = $client->request(Varien_Http_Client::POST);
|
97 |
+
switch ($response->getStatus() && Mage::getStoreConfig(self::XML_PATH_REJOINER_API_DEBUGGER)) {
|
98 |
+
case '200':
|
99 |
+
Mage::log(print_r($response->getStatus(), true) . ' Everything is alright.', null, self::REJOINER_API_LOG_FILE);
|
100 |
+
break;
|
101 |
+
case '400':
|
102 |
+
Mage::log(print_r($response->getStatus(), true) . ' required params were not specified and/or the body was malformed', null, self::REJOINER_API_LOG_FILE);
|
103 |
+
break;
|
104 |
+
case '403':
|
105 |
+
Mage::log(print_r($response->getStatus(), true) . ' failed authentication and/or incorrect signature', null, self::REJOINER_API_LOG_FILE);
|
106 |
+
break;
|
107 |
+
case '500':
|
108 |
+
Mage::log(print_r($response->getStatus(), true) . ' internal error, contact us for details', null, self::REJOINER_API_LOG_FILE);
|
109 |
+
break;
|
110 |
+
default:
|
111 |
+
Mage::log(print_r($response->getStatus(), true) . ' unexpected response code', null, self::REJOINER_API_LOG_FILE);
|
112 |
+
break;
|
113 |
}
|
114 |
+
} catch (Exception $e) {
|
115 |
+
Mage::log($e->getMessage(), null, 'exception.log');
|
116 |
}
|
117 |
+
return $this;
|
118 |
}
|
119 |
|
120 |
/**
|
app/code/community/Rejoiner/Acr/etc/config.xml
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
<config>
|
3 |
<modules>
|
4 |
<Rejoiner_Acr>
|
5 |
-
<version>1.2.
|
6 |
</Rejoiner_Acr>
|
7 |
</modules>
|
8 |
<global>
|
@@ -52,7 +52,7 @@
|
|
52 |
<observers>
|
53 |
<rejoiner_order_success>
|
54 |
<class>rejoiner_acr/observer</class>
|
55 |
-
<method>
|
56 |
</rejoiner_order_success>
|
57 |
</observers>
|
58 |
</checkout_onepage_controller_success_action>
|
2 |
<config>
|
3 |
<modules>
|
4 |
<Rejoiner_Acr>
|
5 |
+
<version>1.2.4</version>
|
6 |
</Rejoiner_Acr>
|
7 |
</modules>
|
8 |
<global>
|
52 |
<observers>
|
53 |
<rejoiner_order_success>
|
54 |
<class>rejoiner_acr/observer</class>
|
55 |
+
<method>trackOrderSuccess</method>
|
56 |
</rejoiner_order_success>
|
57 |
</observers>
|
58 |
</checkout_onepage_controller_success_action>
|
app/code/community/Rejoiner/Acr/etc/system.xml
CHANGED
@@ -54,6 +54,25 @@
|
|
54 |
<show_in_website>1</show_in_website>
|
55 |
<show_in_store>1</show_in_store>
|
56 |
</domain>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
57 |
<track_numbers>
|
58 |
<label>Track Phone Numbers</label>
|
59 |
<frontend_type>select</frontend_type>
|
54 |
<show_in_website>1</show_in_website>
|
55 |
<show_in_store>1</show_in_store>
|
56 |
</domain>
|
57 |
+
<passing_new_customers>
|
58 |
+
<label>Pass "new customers" to Rejoiner</label>
|
59 |
+
<frontend_type>select</frontend_type>
|
60 |
+
<comment></comment>
|
61 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
62 |
+
<sort_order>60</sort_order>
|
63 |
+
<show_in_default>1</show_in_default>
|
64 |
+
<show_in_website>1</show_in_website>
|
65 |
+
<show_in_store>1</show_in_store>
|
66 |
+
</passing_new_customers>
|
67 |
+
<list_id translate="label">
|
68 |
+
<label>List ID</label>
|
69 |
+
<depends><passing_new_customers>1</passing_new_customers></depends>
|
70 |
+
<frontend_type>text</frontend_type>
|
71 |
+
<sort_order>65</sort_order>
|
72 |
+
<show_in_default>1</show_in_default>
|
73 |
+
<show_in_website>1</show_in_website>
|
74 |
+
<show_in_store>1</show_in_store>
|
75 |
+
</list_id>
|
76 |
<track_numbers>
|
77 |
<label>Track Phone Numbers</label>
|
78 |
<frontend_type>select</frontend_type>
|
package.xml
CHANGED
@@ -1,18 +1,18 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Rejoiner</name>
|
4 |
-
<version>1.2.
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://www.opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
|
7 |
<channel>community</channel>
|
8 |
<extends/>
|
9 |
<summary>Rejoiner Cart Abandonment Remarketing</summary>
|
10 |
<description>Turn abandoned carts into 15% more sales with Rejoiner.</description>
|
11 |
-
<notes>
|
12 |
<authors><author><name>Mike</name><user>rejoiner</user><email>mike@rejoiner.com</email></author></authors>
|
13 |
-
<date>
|
14 |
-
<time>
|
15 |
-
<contents><target name="mageetc"><dir name="modules"><file name="Rejoiner_Acr.xml" hash="1aad3601804cead81b6e687dfcb5b83f"/></dir></target><target name="magecommunity"><dir name="Rejoiner"><dir name="Acr"><dir name="Block"><dir name="Adminhtml"><dir name="Custom"><file name="Form.php" hash="9aa505a9a27584d241fcfae803ca5d1a"/></dir><dir name="Form"><dir name="Field"><file name="Source.php" hash="4cfc6c0c33e5090efb825c68bd46f3b2"/></dir></dir><file name="Notification.php" hash="9755c2b45ce39bfa6e731fad9210a9c8"/><dir name="Preinstalled"><file name="Form.php" hash="9a7928e2e659e7b337fc54f0cdcc6c7a"/></dir></dir><file name="Base.php" hash="955a15b1881e5f8c298424f4b5fe4082"/><file name="Conversion.php" hash="b42b63140dbb7e67cd1dd224e8319b50"/><file name="Customer.php" hash="b36ce8e354fdddc514faab724d5a8e2f"/><file name="Product.php" hash="
|
16 |
<compatible/>
|
17 |
<dependencies><required><php><min>5.2.0</min><max>7.0.9</max></php></required></dependencies>
|
18 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Rejoiner</name>
|
4 |
+
<version>1.2.4</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>
|
8 |
<extends/>
|
9 |
<summary>Rejoiner Cart Abandonment Remarketing</summary>
|
10 |
<description>Turn abandoned carts into 15% more sales with Rejoiner.</description>
|
11 |
+
<notes>Pass "new customers" to Rejoiner</notes>
|
12 |
<authors><author><name>Mike</name><user>rejoiner</user><email>mike@rejoiner.com</email></author></authors>
|
13 |
+
<date>2017-08-09</date>
|
14 |
+
<time>14:03:29</time>
|
15 |
+
<contents><target name="mageetc"><dir name="modules"><file name="Rejoiner_Acr.xml" hash="1aad3601804cead81b6e687dfcb5b83f"/></dir></target><target name="magecommunity"><dir name="Rejoiner"><dir name="Acr"><dir name="Block"><dir name="Adminhtml"><dir name="Custom"><file name="Form.php" hash="9aa505a9a27584d241fcfae803ca5d1a"/></dir><dir name="Form"><dir name="Field"><file name="Source.php" hash="4cfc6c0c33e5090efb825c68bd46f3b2"/></dir></dir><file name="Notification.php" hash="9755c2b45ce39bfa6e731fad9210a9c8"/><dir name="Preinstalled"><file name="Form.php" hash="9a7928e2e659e7b337fc54f0cdcc6c7a"/></dir></dir><file name="Base.php" hash="955a15b1881e5f8c298424f4b5fe4082"/><file name="Conversion.php" hash="b42b63140dbb7e67cd1dd224e8319b50"/><file name="Customer.php" hash="b36ce8e354fdddc514faab724d5a8e2f"/><file name="Product.php" hash="8bd509a13e7ed83d33e055c7df2e3c3b"/><file name="Snippets.php" hash="cb634e2b368fe54e160618b4651b7c12"/></dir><dir name="Helper"><file name="Data.php" hash="4c00ecfd1fe47d15fe661a46d54831d4"/></dir><dir name="Model"><file name="Notification.php" hash="fcaa63417db72268528fed03066ff808"/><file name="Observer.php" hash="bb41e94324d7736d7956d8371f973221"/><dir name="Resource"><file name="Setup.php" hash="48f66ad159e3d10a21cc04a980ca923e"/></dir><dir name="System"><dir name="Config"><dir name="Source"><file name="Salesrule.php" hash="43ec14e93984bf1160900754f61668f5"/></dir></dir></dir></dir><dir name="controllers"><file name="AddbyskuController.php" hash="78bc6382ac0f8d59020fa924f6e238c2"/><file name="AddtocartController.php" hash="4eb895c63658ba68c94952178a8bbb1c"/><dir name="Adminhtml"><file name="RejoinerController.php" hash="0c1a1df3d91d5596ae4026c484a4bd1f"/></dir></dir><dir name="etc"><file name="config.xml" hash="288480dd3ecf1e9af12b1ed52c5a6a21"/><file name="system.xml" hash="cc218e743edf2a6a0620e024024556a6"/></dir><dir name="sql"><dir name="rejoiner_setup"><file name="mysql4-install-1.0.0.0.php" hash="8d9a21c9c09fe44c6fe51ddd2106e3e0"/><file name="mysql4-upgrade-1.0.0.0-1.0.1.0.php" hash="36cc70cc6dd37aab7f3c460e0af58d59"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="rejoiner_acr.xml" hash="03be091dcc6dfc203871ecd4bddad362"/></dir><dir name="template"><dir name="rejoiner_acr"><file name="base.phtml" hash="98288f08530dfd42edb75ec6558f65b4"/><file name="conversion.phtml" hash="ebe3e1c4cba407bd73f74dd551e82bcf"/><file name="customer.phtml" hash="8037067aa44942175b660c1f3af0ff1f"/><file name="product.phtml" hash="f52bf4de76279a5a07711d8430031187"/><file name="tracking.phtml" hash="786720850765d3296c6e4cb5e7baf521"/></dir></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="rejoiner_acr.xml" hash="eae0005d21a98027d5be43ab548f220d"/></dir><dir name="template"><dir name="rejoiner_acr"><file name="notification.phtml" hash="3a3872e6434bf7d2ca7fa0edfe6f9726"/></dir></dir></dir></dir></dir></target><target name="magelocale"><dir name="en_US"><file name="Rejoiner_Acr.csv" hash="9015e31d97b9bc4746bc0a5241f8013b"/></dir></target></contents>
|
16 |
<compatible/>
|
17 |
<dependencies><required><php><min>5.2.0</min><max>7.0.9</max></php></required></dependencies>
|
18 |
</package>
|