Version Notes
Added support for 2- way synchronisation of unsubscribes over Magento accounts and the Newsletter2Go unsubscribe link
Download this release
Release Info
Developer | Magento Core Team |
Extension | NL2go_Sync |
Version | 1.1.0 |
Comparing to | |
See all releases |
Code changes from version 1.0.4 to 1.1.0
app/code/local/NL2go/Sync/Model/Newsletter/Api.php
CHANGED
@@ -13,4 +13,6 @@ class NL2go_Sync_Model_Newsletter_Api extends Mage_Api_Model_Resource_Abstract
|
|
13 |
public function getSubscribers()
|
14 |
{
|
15 |
}
|
|
|
|
|
16 |
}
|
13 |
public function getSubscribers()
|
14 |
{
|
15 |
}
|
16 |
+
public function setSubscriptionStatus($mail, $status){
|
17 |
+
}
|
18 |
}
|
app/code/local/NL2go/Sync/Model/Newsletter/Api/V2.php
CHANGED
@@ -10,7 +10,67 @@
|
|
10 |
|
11 |
class Nl2go_Sync_Model_Newsletter_Api_V2 extends Mage_Api_Model_Resource_Abstract
|
12 |
{
|
13 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14 |
/**
|
15 |
* Return subscriber list with the customer info
|
16 |
*
|
@@ -98,10 +158,14 @@ class Nl2go_Sync_Model_Newsletter_Api_V2 extends Mage_Api_Model_Resource_Abstrac
|
|
98 |
// it is impossible to filter subscribers by date, because there are cases when the dates are NULL
|
99 |
// get all subscribers
|
100 |
|
|
|
|
|
|
|
|
|
|
|
101 |
$query = "SELECT * FROM newsletter_subscriber ".
|
102 |
-
// " WHERE subscriber_status=".Mage_Newsletter_Model_Subscriber::STATUS_SUBSCRIBED.
|
103 |
-
// " AND customer_id=0 AND (change_status_at IS NULL OR change_status_at BETWEEN TIMESTAMP(DATE_SUB(NOW(), INTERVAL ".$hours." HOUR)) AND TIMESTAMP(NOW()))";
|
104 |
" WHERE customer_id=0 AND (change_status_at IS NULL OR change_status_at BETWEEN TIMESTAMP(DATE_SUB(NOW(), INTERVAL ".$hours." HOUR)) AND TIMESTAMP(NOW()))";
|
|
|
105 |
|
106 |
/* Execute the query and store the results in $results */
|
107 |
$results = $readConnection->fetchAll($query);
|
@@ -129,9 +193,6 @@ class Nl2go_Sync_Model_Newsletter_Api_V2 extends Mage_Api_Model_Resource_Abstrac
|
|
129 |
" AND customer_id!=0";
|
130 |
} else {
|
131 |
$query = "SELECT * FROM newsletter_subscriber ".
|
132 |
-
// " WHERE subscriber_status=".Mage_Newsletter_Model_Subscriber::STATUS_SUBSCRIBED.
|
133 |
-
// " AND customer_id IN(".
|
134 |
-
// Unsubscribes over Magento user accounts are being synchronized - changes
|
135 |
" WHERE customer_id IN(".
|
136 |
"SELECT entity_id FROM customer_entity ".
|
137 |
" WHERE created_at BETWEEN TIMESTAMP(DATE_SUB(NOW(), INTERVAL ".$hours." HOUR)) AND TIMESTAMP(NOW()) OR ".
|
10 |
|
11 |
class Nl2go_Sync_Model_Newsletter_Api_V2 extends Mage_Api_Model_Resource_Abstract
|
12 |
{
|
13 |
+
/**
|
14 |
+
* Update subsciber's status
|
15 |
+
*
|
16 |
+
* @param string $email
|
17 |
+
* @param int $status
|
18 |
+
* @return int
|
19 |
+
*/
|
20 |
+
public function setSubscriptionStatus($mail, $status){
|
21 |
+
|
22 |
+
switch ($status) {
|
23 |
+
case 1:
|
24 |
+
$status = Mage_Newsletter_Model_Subscriber::STATUS_SUBSCRIBED;
|
25 |
+
break;
|
26 |
+
case 2:
|
27 |
+
$status = Mage_Newsletter_Model_Subscriber::STATUS_NOT_ACTIVE;
|
28 |
+
break;
|
29 |
+
case 3:
|
30 |
+
$status = Mage_Newsletter_Model_Subscriber::STATUS_UNSUBSCRIBED;
|
31 |
+
break;
|
32 |
+
case 4:
|
33 |
+
$status = Mage_Newsletter_Model_Subscriber::STATUS_UNCONFIRMED;
|
34 |
+
break;
|
35 |
+
default:
|
36 |
+
$res = 400;
|
37 |
+
return $res;
|
38 |
+
}
|
39 |
+
|
40 |
+
$subscriber = Mage::getModel('newsletter/subscriber')->loadByEmail($mail);
|
41 |
+
|
42 |
+
$subscrId = $subscriber->getId();
|
43 |
+
if(empty($subscrId)){
|
44 |
+
$res = 204;
|
45 |
+
return $res;
|
46 |
+
}
|
47 |
+
|
48 |
+
# change status and save
|
49 |
+
// $subscriber->setStatus($status);
|
50 |
+
// $subscriber->save();
|
51 |
+
|
52 |
+
// I decided to use direct sql requests, for the cases, when somebody want to create and intercept
|
53 |
+
// event for changes of sucscribers
|
54 |
+
/**
|
55 |
+
* Get the resource model/write connection/table name
|
56 |
+
*/
|
57 |
+
$resource = Mage::getSingleton('core/resource');
|
58 |
+
|
59 |
+
$writeConnection = $resource->getConnection('core_write');
|
60 |
+
|
61 |
+
$table = $resource->getTableName('newsletter/subscriber');
|
62 |
+
|
63 |
+
$query = "UPDATE {$table} SET subscriber_status = ".$status.",change_status_at=NOW() ".
|
64 |
+
" WHERE "."subscriber_email = '".$mail."'";
|
65 |
+
|
66 |
+
/**
|
67 |
+
* Execute the query
|
68 |
+
*/
|
69 |
+
$writeConnection->query($query);
|
70 |
+
|
71 |
+
$res = 200;
|
72 |
+
return $res;
|
73 |
+
}
|
74 |
/**
|
75 |
* Return subscriber list with the customer info
|
76 |
*
|
158 |
// it is impossible to filter subscribers by date, because there are cases when the dates are NULL
|
159 |
// get all subscribers
|
160 |
|
161 |
+
if($hours==0){
|
162 |
+
$query = "SELECT * FROM newsletter_subscriber ".
|
163 |
+
" WHERE subscriber_status=".Mage_Newsletter_Model_Subscriber::STATUS_SUBSCRIBED.
|
164 |
+
" AND customer_id=0";
|
165 |
+
} else {
|
166 |
$query = "SELECT * FROM newsletter_subscriber ".
|
|
|
|
|
167 |
" WHERE customer_id=0 AND (change_status_at IS NULL OR change_status_at BETWEEN TIMESTAMP(DATE_SUB(NOW(), INTERVAL ".$hours." HOUR)) AND TIMESTAMP(NOW()))";
|
168 |
+
}
|
169 |
|
170 |
/* Execute the query and store the results in $results */
|
171 |
$results = $readConnection->fetchAll($query);
|
193 |
" AND customer_id!=0";
|
194 |
} else {
|
195 |
$query = "SELECT * FROM newsletter_subscriber ".
|
|
|
|
|
|
|
196 |
" WHERE customer_id IN(".
|
197 |
"SELECT entity_id FROM customer_entity ".
|
198 |
" WHERE created_at BETWEEN TIMESTAMP(DATE_SUB(NOW(), INTERVAL ".$hours." HOUR)) AND TIMESTAMP(NOW()) OR ".
|
app/code/local/NL2go/Sync/etc/api.xml
CHANGED
@@ -26,6 +26,10 @@
|
|
26 |
<title>Return subscribers list with the customer info</title>
|
27 |
<method>getSubscribers</method>
|
28 |
</getSubscribers>
|
|
|
|
|
|
|
|
|
29 |
</methods>
|
30 |
<faults module="sync">
|
31 |
<store_not_exists>
|
26 |
<title>Return subscribers list with the customer info</title>
|
27 |
<method>getSubscribers</method>
|
28 |
</getSubscribers>
|
29 |
+
<setSubscriptionStatus translate="title" module="sync">
|
30 |
+
<title>Update subscriper status</title>
|
31 |
+
<method>setSubscriptionStatus</method>
|
32 |
+
</setSubscriptionStatus>
|
33 |
</methods>
|
34 |
<faults module="sync">
|
35 |
<store_not_exists>
|
app/code/local/NL2go/Sync/etc/wsdl.xml
CHANGED
@@ -62,6 +62,15 @@
|
|
62 |
<part name="result" type="typens:ArrayOfNewsletterSubscriberEntity"/>
|
63 |
</message>
|
64 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
<portType name="{{var wsdl.handler}}PortType">
|
66 |
|
67 |
<operation name="syncNewsletterGetSubscribers">
|
@@ -69,6 +78,12 @@
|
|
69 |
<input message="typens:syncNewsletterGetSubscribersRequest"/>
|
70 |
<output message="typens:syncNewsletterGetSubscribersResponse"/>
|
71 |
</operation>
|
|
|
|
|
|
|
|
|
|
|
|
|
72 |
|
73 |
</portType>
|
74 |
<binding name="{{var wsdl.handler}}Binding" type="typens:{{var wsdl.handler}}PortType">
|
@@ -85,6 +100,18 @@
|
|
85 |
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
|
86 |
</output>
|
87 |
</operation>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
88 |
|
89 |
</binding>
|
90 |
|
62 |
<part name="result" type="typens:ArrayOfNewsletterSubscriberEntity"/>
|
63 |
</message>
|
64 |
|
65 |
+
<message name="syncNewsletterSetSubscriptionStatusRequest">
|
66 |
+
<part name="sessionId" type="xsd:string"/>
|
67 |
+
<part name="email" type="xsd:string"/>
|
68 |
+
<part name="status" type="xsd:int"/>
|
69 |
+
</message>
|
70 |
+
<message name="syncNewsletterSetSubscriptionStatusResponse">
|
71 |
+
<part name="result" type="xsd:int"/>
|
72 |
+
</message>
|
73 |
+
|
74 |
<portType name="{{var wsdl.handler}}PortType">
|
75 |
|
76 |
<operation name="syncNewsletterGetSubscribers">
|
78 |
<input message="typens:syncNewsletterGetSubscribersRequest"/>
|
79 |
<output message="typens:syncNewsletterGetSubscribersResponse"/>
|
80 |
</operation>
|
81 |
+
|
82 |
+
<operation name="syncNewsletterSetSubscriptionStatus">
|
83 |
+
<documentation>Update subscriper status</documentation>
|
84 |
+
<input message="typens:syncNewsletterSetSubscriptionStatusRequest"/>
|
85 |
+
<output message="typens:syncNewsletterSetSubscriptionStatusResponse"/>
|
86 |
+
</operation>
|
87 |
|
88 |
</portType>
|
89 |
<binding name="{{var wsdl.handler}}Binding" type="typens:{{var wsdl.handler}}PortType">
|
100 |
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
|
101 |
</output>
|
102 |
</operation>
|
103 |
+
|
104 |
+
<operation name="syncNewsletterSetSubscriptionStatus">
|
105 |
+
<soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
|
106 |
+
<input>
|
107 |
+
<soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
|
108 |
+
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
|
109 |
+
</input>
|
110 |
+
<output>
|
111 |
+
<soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
|
112 |
+
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
|
113 |
+
</output>
|
114 |
+
</operation>
|
115 |
|
116 |
</binding>
|
117 |
|
package.xml
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>NL2go_Sync</name>
|
4 |
-
<version>1.0
|
5 |
<stability>stable</stability>
|
6 |
<license>GPL</license>
|
7 |
<channel>community</channel>
|
@@ -15,11 +15,11 @@ On top you can easily retrieve all item data including description, price info,
|
|
15 |
<p>Get the extension key on this site and install the Newsletter2Go Magento Extension in your Magento shop. <br />
|
16 |
Set up a new API user and insert the information under settings on the Newsletter2Go web site.
|
17 |
</p></description>
|
18 |
-
<notes>
|
19 |
<authors><author><name>Steffen</name><user>auto-converted</user><email>info@newsletter2go.de</email></author></authors>
|
20 |
-
<date>2013-08-
|
21 |
-
<time>
|
22 |
-
<contents><target name="magelocal"><dir name="NL2go"><dir name="Sync"><dir name="Model"><dir name="Newsletter"><dir name="Api"><file name="V2.php" hash="
|
23 |
<compatible/>
|
24 |
<dependencies/>
|
25 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>NL2go_Sync</name>
|
4 |
+
<version>1.1.0</version>
|
5 |
<stability>stable</stability>
|
6 |
<license>GPL</license>
|
7 |
<channel>community</channel>
|
15 |
<p>Get the extension key on this site and install the Newsletter2Go Magento Extension in your Magento shop. <br />
|
16 |
Set up a new API user and insert the information under settings on the Newsletter2Go web site.
|
17 |
</p></description>
|
18 |
+
<notes>Added support for 2- way synchronisation of unsubscribes over Magento accounts and the Newsletter2Go unsubscribe link</notes>
|
19 |
<authors><author><name>Steffen</name><user>auto-converted</user><email>info@newsletter2go.de</email></author></authors>
|
20 |
+
<date>2013-08-05</date>
|
21 |
+
<time>15:59:44</time>
|
22 |
+
<contents><target name="magelocal"><dir name="NL2go"><dir name="Sync"><dir name="Model"><dir name="Newsletter"><dir name="Api"><file name="V2.php" hash="1ab6a64a5b115839a1541e3763f89efe"/></dir><file name="Api.php" hash="0139d3b2ef2ed98a10b3d7a14b6f7959"/></dir></dir><dir name="etc"><file name="api.xml" hash="7e11289db23d52088f15c1654b35f3a8"/><file name="config.xml" hash="534eb47f4db745e8b5210c1dfb5ca40a"/><file name="wsdl.xml" hash="20bbaaea37e858a3f07f597f4fae41b2"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="NL2go_Sync.xml" hash="93aca69e7ba45a5664e4bcd277aa775b"/></dir></target></contents>
|
23 |
<compatible/>
|
24 |
<dependencies/>
|
25 |
</package>
|