Version Notes
Scenario manager programs and Livedata unsubscribed synchronization
Download this release
Release Info
Developer | Toni |
Extension | Livedata_Solutions |
Version | 1.0.2 |
Comparing to | |
See all releases |
Code changes from version 1.0.1 to 1.0.2
- app/code/community/Livedata/README.txt +9 -2
- app/code/community/Livedata/Trans/Helper/Contact.php +54 -9
- app/code/community/Livedata/Trans/Helper/Contactlist.php +25 -19
- app/code/community/Livedata/Trans/Helper/Scenario.php +114 -0
- app/code/community/Livedata/Trans/Model/Observer.php +40 -1
- app/code/community/Livedata/Trans/Model/System/Config/Source/Scenariolist.php +42 -0
- app/code/community/Livedata/Trans/etc/config.xml +40 -0
- app/code/community/Livedata/Trans/etc/system.xml +7 -5
- package.xml +7 -7
app/code/community/Livedata/README.txt
CHANGED
@@ -8,9 +8,16 @@ etc/modules
|
|
8 |
Install the smtp pluggin from:
|
9 |
https://www.magentocommerce.com/magento-connect/smtp-pro-email-free-custom-smtp-email.html
|
10 |
"http://connect20.magentocommerce.com/community/ASchroder_SMTPPro"
|
11 |
-
SMTP config:
|
12 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
|
14 |
-
chmod 775
|
15 |
|
16 |
clear chache
|
8 |
Install the smtp pluggin from:
|
9 |
https://www.magentocommerce.com/magento-connect/smtp-pro-email-free-custom-smtp-email.html
|
10 |
"http://connect20.magentocommerce.com/community/ASchroder_SMTPPro"
|
|
|
11 |
|
12 |
+
Edit crontab:
|
13 |
+
contrab -e
|
14 |
+
Linux:
|
15 |
+
10 9 * * * /{{url to project}}/cron.sh
|
16 |
+
13 9 * * * /{{url to project}}/cron.sh
|
17 |
+
windows:
|
18 |
+
10 9 * * * /{{url to project}}/cron.php //10 9 * * * /var/www/magento/cron.sh
|
19 |
+
13 9 * * * /{{url to project}}/cron.php
|
20 |
|
21 |
+
chmod 775 in all Livedata project
|
22 |
|
23 |
clear chache
|
app/code/community/Livedata/Trans/Helper/Contact.php
CHANGED
@@ -40,15 +40,7 @@ class Livedata_Trans_Helper_Contact extends Mage_Core_Helper_Abstract
|
|
40 |
else
|
41 |
$birthdate = "";
|
42 |
// check if it's a new contact or updated
|
43 |
-
$
|
44 |
-
$httpMethod = 'GET';
|
45 |
-
curl_setopt($ch, CURLOPT_URL, $environment.$baseId.'/contacts/'.$contact->getEmail());
|
46 |
-
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
47 |
-
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
48 |
-
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $httpMethod);
|
49 |
-
$response = curl_exec($ch);
|
50 |
-
curl_close($ch);
|
51 |
-
$getContact = json_decode($response, true);
|
52 |
// initializace custom attributes
|
53 |
if($getContact['statusCode'] == 200) {
|
54 |
// updated contact
|
@@ -293,4 +285,57 @@ class Livedata_Trans_Helper_Contact extends Mage_Core_Helper_Abstract
|
|
293 |
}
|
294 |
return $total;
|
295 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
296 |
}
|
40 |
else
|
41 |
$birthdate = "";
|
42 |
// check if it's a new contact or updated
|
43 |
+
$getContact = $this->checkContact($contact->getEmail());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
44 |
// initializace custom attributes
|
45 |
if($getContact['statusCode'] == 200) {
|
46 |
// updated contact
|
285 |
}
|
286 |
return $total;
|
287 |
}
|
288 |
+
|
289 |
+
/**
|
290 |
+
* function check if contact exist in our database
|
291 |
+
*
|
292 |
+
* @param $email
|
293 |
+
* @return array
|
294 |
+
*/
|
295 |
+
public function checkContact($email)
|
296 |
+
{
|
297 |
+
$environment = Mage::getStoreConfig('trans/view/api_url');
|
298 |
+
$baseId = Mage::getStoreConfig('trans/view/api_key');
|
299 |
+
$username = Mage::getStoreConfig('trans/view/from_user');
|
300 |
+
$password = Mage::getStoreConfig('trans/view/from_password');
|
301 |
+
$httpMethod = 'GET';
|
302 |
+
$headers = $this->generateWSSEHeader($username, $password);
|
303 |
+
$ch = curl_init();
|
304 |
+
curl_setopt($ch, CURLOPT_URL, $environment.$baseId.'/contacts/'.$email);
|
305 |
+
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
306 |
+
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
307 |
+
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $httpMethod);
|
308 |
+
$response = curl_exec($ch);
|
309 |
+
curl_close($ch);
|
310 |
+
$res = json_decode($response, true);
|
311 |
+
|
312 |
+
return $res;
|
313 |
+
}
|
314 |
+
|
315 |
+
/**
|
316 |
+
* function get all livedata unsubscribe contacts from last day
|
317 |
+
*
|
318 |
+
* @param string $fromDate
|
319 |
+
* @param string $toDate
|
320 |
+
* @return array
|
321 |
+
*/
|
322 |
+
public function getLastDayUnsubscribes($fromDate, $toDate)
|
323 |
+
{
|
324 |
+
$environment = Mage::getStoreConfig('trans/view/api_url');
|
325 |
+
$baseId = Mage::getStoreConfig('trans/view/api_key');
|
326 |
+
$username = Mage::getStoreConfig('trans/view/from_user');
|
327 |
+
$password = Mage::getStoreConfig('trans/view/from_password');
|
328 |
+
$httpMethod = 'GET';
|
329 |
+
$headers = $this->generateWSSEHeader($username, $password);
|
330 |
+
$ch = curl_init();
|
331 |
+
curl_setopt($ch, CURLOPT_URL, $environment.$baseId.'/unsubscribes?fromDate='.$fromDate.'&toDate='.$toDate);
|
332 |
+
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
333 |
+
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
334 |
+
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $httpMethod);
|
335 |
+
$response = curl_exec($ch);
|
336 |
+
curl_close($ch);
|
337 |
+
$res = json_decode($response, true);
|
338 |
+
|
339 |
+
return $res;
|
340 |
+
}
|
341 |
}
|
app/code/community/Livedata/Trans/Helper/Contactlist.php
CHANGED
@@ -54,29 +54,35 @@ class Livedata_Trans_Helper_Contactlist extends Mage_Core_Helper_Abstract
|
|
54 |
$contact = Mage::getSingleton('admin/session')->getUser()->getEmail();
|
55 |
$fieldsString = '';
|
56 |
$httpMethod = 'PUT';
|
57 |
-
$result = array('
|
58 |
// check that all the fields are not empty
|
59 |
if(!empty($environment) && !empty($baseId) && !empty($username) && !empty($password)) {
|
60 |
-
|
61 |
-
$
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
|
|
|
|
|
|
|
|
70 |
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
|
77 |
-
|
78 |
-
|
79 |
-
|
|
|
|
|
80 |
}
|
81 |
|
82 |
return $result;
|
54 |
$contact = Mage::getSingleton('admin/session')->getUser()->getEmail();
|
55 |
$fieldsString = '';
|
56 |
$httpMethod = 'PUT';
|
57 |
+
$result = array('statusCode' => 400, 'message' => 'Some mandatory parameters are not defined');
|
58 |
// check that all the fields are not empty
|
59 |
if(!empty($environment) && !empty($baseId) && !empty($username) && !empty($password)) {
|
60 |
+
// check if the user is loaded in our database
|
61 |
+
$existContact = Mage::helper('livedata_trans/contact')->checkContact($contact);
|
62 |
+
if($existContact['statusCode'] == 200) {
|
63 |
+
// if exist create the list
|
64 |
+
$ch = curl_init();
|
65 |
+
$headers = $this->generateWSSEHeader($username, $password);
|
66 |
+
curl_setopt($ch, CURLOPT_URL, $environment.$baseId.'/contact_lists');
|
67 |
+
$fields = array('name' => urlencode($listName),
|
68 |
+
'description' => urlencode($username.' created this list from Magento'),
|
69 |
+
'emaillist' => urlencode($contact),
|
70 |
+
'batList' => urlencode('false')
|
71 |
+
);
|
72 |
+
foreach($fields as $key=>$value) { $fieldsString .= $key.'='.$value.'&'; }
|
73 |
+
rtrim($fieldsString, '&');
|
74 |
|
75 |
+
curl_setopt($ch, CURLOPT_POST, count($fields));
|
76 |
+
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
77 |
+
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
78 |
+
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $httpMethod);
|
79 |
+
curl_setopt($ch, CURLOPT_POSTFIELDS, $fieldsString);
|
80 |
|
81 |
+
$response = curl_exec($ch);
|
82 |
+
curl_close($ch);
|
83 |
+
$result = json_decode($response, true);
|
84 |
+
} else
|
85 |
+
$result = array('statusCode' => 400, 'message' => 'Your email is not saved in our database. Please, add your contact in your LiveData base.');
|
86 |
}
|
87 |
|
88 |
return $result;
|
app/code/community/Livedata/Trans/Helper/Scenario.php
ADDED
@@ -0,0 +1,114 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Scenario helper
|
4 |
+
*
|
5 |
+
* @author Livedata
|
6 |
+
*/
|
7 |
+
class Livedata_Trans_Helper_Scenario extends Mage_Core_Helper_Abstract
|
8 |
+
{
|
9 |
+
/**
|
10 |
+
* get all the scenario program finished
|
11 |
+
*
|
12 |
+
* @return array
|
13 |
+
*/
|
14 |
+
public function getAllPrograms()
|
15 |
+
{
|
16 |
+
$environment = Mage::getStoreConfig('trans/view/api_url');
|
17 |
+
$baseId = Mage::getStoreConfig('trans/view/api_key');
|
18 |
+
$username = Mage::getStoreConfig('trans/view/from_user');
|
19 |
+
$password = Mage::getStoreConfig('trans/view/from_password');
|
20 |
+
$httpMethod = 'GET';
|
21 |
+
$result = array();
|
22 |
+
// check that all the fields are not empty
|
23 |
+
if(!empty($environment) && !empty($baseId) && !empty($username) && !empty($password)) {
|
24 |
+
$ch = curl_init();
|
25 |
+
$headers = $this->generateWSSEHeader($username, $password);
|
26 |
+
curl_setopt($ch, CURLOPT_URL, $environment.$baseId.'/scenario/programs/all');
|
27 |
+
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
28 |
+
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
29 |
+
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $httpMethod);
|
30 |
+
$response = curl_exec($ch);
|
31 |
+
curl_close($ch);
|
32 |
+
$scenarioProgram = json_decode($response, true);
|
33 |
+
|
34 |
+
if ($scenarioProgram['statusCode'] == 200)
|
35 |
+
$result = $scenarioProgram['result']['data'];
|
36 |
+
}
|
37 |
+
|
38 |
+
return $result;
|
39 |
+
}
|
40 |
+
|
41 |
+
/**
|
42 |
+
* insert contact to scenario program
|
43 |
+
*
|
44 |
+
* @param Object $contact
|
45 |
+
* @return array
|
46 |
+
*/
|
47 |
+
public function addContactToProgram($contact)
|
48 |
+
{
|
49 |
+
$environment = Mage::getStoreConfig('trans/view/api_url');
|
50 |
+
$baseId = Mage::getStoreConfig('trans/view/api_key');
|
51 |
+
$username = Mage::getStoreConfig('trans/view/from_user');
|
52 |
+
$password = Mage::getStoreConfig('trans/view/from_password');
|
53 |
+
$enabledScn = Mage::getStoreConfig('trans/scenario/enabled_scn');
|
54 |
+
$result = array('statusCode' => 400, 'message' => 'Some mandatory parameters are not defined');
|
55 |
+
// if scenario program is enabled
|
56 |
+
if(Mage::getStoreConfig('trans/scenario/enabled_scn')) {
|
57 |
+
// get email
|
58 |
+
$email = $contact->getEmail();
|
59 |
+
// get scenario id
|
60 |
+
$scenarioId = Mage::getStoreConfig('trans/scenario/from_list');
|
61 |
+
if($scenarioId != '0') {
|
62 |
+
// check all input parameters from config
|
63 |
+
if(!empty($environment) && !empty($baseId) && !empty($username) && !empty($password))
|
64 |
+
$result = $this->addContact($email,$scenarioId); // insert contact to program
|
65 |
+
}
|
66 |
+
}
|
67 |
+
|
68 |
+
return $result;
|
69 |
+
}
|
70 |
+
|
71 |
+
/**
|
72 |
+
* function to generate wsseheader
|
73 |
+
*
|
74 |
+
* @param $username
|
75 |
+
* @param $password
|
76 |
+
* @return array
|
77 |
+
*/
|
78 |
+
private function generateWSSEHeader($username, $password)
|
79 |
+
{
|
80 |
+
$created = date('c');
|
81 |
+
$nonce = substr(md5(uniqid('nonce_', true)),0,16);
|
82 |
+
$nonce64 = base64_encode($nonce);
|
83 |
+
$passwordDigest = base64_encode(sha1($nonce . $created . $password, true));
|
84 |
+
|
85 |
+
return array('X-WSSE: UsernameToken Username="' . $username . '", PasswordDigest="' . $passwordDigest . '", Nonce="' . $nonce64 . '", Created="'. $created . '"');
|
86 |
+
}
|
87 |
+
|
88 |
+
/**
|
89 |
+
* function that call the api function add contact to program
|
90 |
+
*
|
91 |
+
* @param string $email
|
92 |
+
* @param stirng $programId
|
93 |
+
* @return array
|
94 |
+
*/
|
95 |
+
private function addContact($email, $programId)
|
96 |
+
{
|
97 |
+
$environment = Mage::getStoreConfig('trans/view/api_url');
|
98 |
+
$baseId = Mage::getStoreConfig('trans/view/api_key');
|
99 |
+
$username = Mage::getStoreConfig('trans/view/from_user');
|
100 |
+
$password = Mage::getStoreConfig('trans/view/from_password');
|
101 |
+
$httpMethod = 'PUT';
|
102 |
+
$ch = curl_init();
|
103 |
+
$headers = $this->generateWSSEHeader($username, $password);
|
104 |
+
curl_setopt($ch, CURLOPT_URL, $environment.$baseId.'/scenario/programs/'.$programId.'/'.$email);
|
105 |
+
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
106 |
+
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
107 |
+
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $httpMethod);
|
108 |
+
$response = curl_exec($ch);
|
109 |
+
curl_close($ch);
|
110 |
+
$result = json_decode($response, true);
|
111 |
+
|
112 |
+
return $result;
|
113 |
+
}
|
114 |
+
}
|
app/code/community/Livedata/Trans/Model/Observer.php
CHANGED
@@ -241,7 +241,7 @@ class Livedata_Trans_Model_Observer
|
|
241 |
*/
|
242 |
private function getCustomerAddress($email)
|
243 |
{
|
244 |
-
$contactAddress = Mage::getResourceModel('customer/address_collection')->addAttributeToSelect('*')->joinTable(array('customer'=>'customer/entity'),'entity_id = parent_id',array('
|
245 |
$postcode = "";
|
246 |
foreach ($contactAddress as $address) {
|
247 |
$addressData = $address->getData();
|
@@ -359,4 +359,43 @@ class Livedata_Trans_Model_Observer
|
|
359 |
if($contact['statusCode'] != 200)
|
360 |
Mage::getSingleton('core/session')->addError('Livedata attributes has not been updated: ' . $contact['message'] . ' Please contact with Livedata support team.');
|
361 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
362 |
}
|
241 |
*/
|
242 |
private function getCustomerAddress($email)
|
243 |
{
|
244 |
+
$contactAddress = Mage::getResourceModel('customer/address_collection')->addAttributeToSelect('*')->joinTable(array('customer'=>'customer/entity'),'entity_id = parent_id',array('email'));
|
245 |
$postcode = "";
|
246 |
foreach ($contactAddress as $address) {
|
247 |
$addressData = $address->getData();
|
359 |
if($contact['statusCode'] != 200)
|
360 |
Mage::getSingleton('core/session')->addError('Livedata attributes has not been updated: ' . $contact['message'] . ' Please contact with Livedata support team.');
|
361 |
}
|
362 |
+
|
363 |
+
/**
|
364 |
+
* event to add registers in scenario program
|
365 |
+
*
|
366 |
+
*/
|
367 |
+
public function addRegisterToScenario(Varien_Event_Observer $observer)
|
368 |
+
{
|
369 |
+
// get the post data
|
370 |
+
$request = $observer->getEvent();
|
371 |
+
$customerData = $request->getCustomer();
|
372 |
+
// add contact to database
|
373 |
+
$contact = Mage::helper('livedata_trans/scenario')->addContactToProgram($customerData);
|
374 |
+
if($contact['statusCode'] != 201)
|
375 |
+
Mage::getSingleton('core/session')->addNotice('An error ocurred while inserting the contact in scenario program: ' . $contact['message']);
|
376 |
+
}
|
377 |
+
|
378 |
+
/**
|
379 |
+
* cron that check the unsubscribe contacts in livedata every day and update it in magento database
|
380 |
+
*
|
381 |
+
*/
|
382 |
+
public function livedatatransunsubscribe()
|
383 |
+
{
|
384 |
+
$environment = Mage::getStoreConfig('trans/view/api_url');
|
385 |
+
$baseId = Mage::getStoreConfig('trans/view/api_key');
|
386 |
+
$username = Mage::getStoreConfig('trans/view/from_user');
|
387 |
+
$password = Mage::getStoreConfig('trans/view/from_password');
|
388 |
+
// get the unsubscribes in last day
|
389 |
+
$date = date('Y-m-j');
|
390 |
+
$yesterday = strtotime ( '-1 day' , strtotime ( $date ) ) ;
|
391 |
+
$fromDate = date ( 'Y-m-j' , $yesterday ).'+00:00:00';
|
392 |
+
$toDate = date ( 'Y-m-j' , $yesterday ).'+23:59:59';
|
393 |
+
$contacts = Mage::helper('livedata_trans/contact')->getLastDayUnsubscribes($fromDate, $toDate);
|
394 |
+
if(!empty($contacts['result']['data'])) {
|
395 |
+
foreach ($contacts['result']['data'] as $contact) {
|
396 |
+
// mark the contact as not subscriber
|
397 |
+
$subscriber = Mage::getModel('newsletter/subscriber')->loadByEmail($contact['email'])->unsubscribe();
|
398 |
+
}
|
399 |
+
}
|
400 |
+
}
|
401 |
}
|
app/code/community/Livedata/Trans/Model/System/Config/Source/Scenariolist.php
ADDED
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Livedata_Trans_Model_System_Config_Source_Scenariolist
|
4 |
+
{
|
5 |
+
/**
|
6 |
+
* Options getter
|
7 |
+
*
|
8 |
+
* @return array
|
9 |
+
*/
|
10 |
+
public function toOptionArray()
|
11 |
+
{
|
12 |
+
$scenariolist = Mage::helper('livedata_trans/scenario')->getAllPrograms();
|
13 |
+
$arrayList = array();
|
14 |
+
|
15 |
+
foreach ($scenariolist as $program) {
|
16 |
+
if($program['status'] == 'active')
|
17 |
+
$arrayList[] = array('value' => $program['id'], 'label' => $program['name']);
|
18 |
+
}
|
19 |
+
$arrayList[] = array('value' => 0, 'label' => 'Select Program');
|
20 |
+
|
21 |
+
return $arrayList;
|
22 |
+
}
|
23 |
+
|
24 |
+
/**
|
25 |
+
* Get options in "key-value" format
|
26 |
+
*
|
27 |
+
* @return array
|
28 |
+
*/
|
29 |
+
public function toArray()
|
30 |
+
{
|
31 |
+
$scenariolist = Mage::helper('livedata_trans/scenario')->getAllPrograms();
|
32 |
+
$arrayList = array();
|
33 |
+
|
34 |
+
foreach ($scenariolist as $program) {
|
35 |
+
if($program['status'] == 'active')
|
36 |
+
$arrayList[$program['id']] = $program['name'];
|
37 |
+
}
|
38 |
+
$arrayList[0] = 'Select Program';
|
39 |
+
|
40 |
+
return $arrayList;
|
41 |
+
}
|
42 |
+
}
|
app/code/community/Livedata/Trans/etc/config.xml
CHANGED
@@ -6,6 +6,28 @@
|
|
6 |
<version>1.0.0.0.1</version>
|
7 |
</Livedata_Trans>
|
8 |
</modules>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
<global>
|
10 |
<!-- models sections -->
|
11 |
<models>
|
@@ -40,6 +62,24 @@
|
|
40 |
</livedata_trans>
|
41 |
</observers>
|
42 |
</customer_save_after>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
43 |
<newsletter_subscriber_save_commit_after>
|
44 |
<observers>
|
45 |
<livedata_trans>
|
6 |
<version>1.0.0.0.1</version>
|
7 |
</Livedata_Trans>
|
8 |
</modules>
|
9 |
+
<crontab>
|
10 |
+
<jobs>
|
11 |
+
<livedata_trans>
|
12 |
+
<schedule>
|
13 |
+
<cron_expr>10 9 * * *</cron_expr>
|
14 |
+
</schedule>
|
15 |
+
<run>
|
16 |
+
<model>livedata_trans/observer::livedatatransunsubscribe</model>
|
17 |
+
</run>
|
18 |
+
</livedata_trans>
|
19 |
+
</jobs>
|
20 |
+
<jobs>
|
21 |
+
<livedata_trans>
|
22 |
+
<schedule>
|
23 |
+
<cron_expr>13 9 * * *</cron_expr>
|
24 |
+
</schedule>
|
25 |
+
<run>
|
26 |
+
<model>livedata_trans/observer::livedatatransunsubscribe</model>
|
27 |
+
</run>
|
28 |
+
</livedata_trans>
|
29 |
+
</jobs>
|
30 |
+
</crontab>
|
31 |
<global>
|
32 |
<!-- models sections -->
|
33 |
<models>
|
62 |
</livedata_trans>
|
63 |
</observers>
|
64 |
</customer_save_after>
|
65 |
+
<customer_register_success>
|
66 |
+
<observers>
|
67 |
+
<livedata_trans>
|
68 |
+
<type>singleton</type>
|
69 |
+
<class>livedata_trans/observer</class>
|
70 |
+
<method>addRegisterToScenario</method>
|
71 |
+
</livedata_trans>
|
72 |
+
</observers>
|
73 |
+
</customer_register_success>
|
74 |
+
<adminhtml_customer_save_after>
|
75 |
+
<observers>
|
76 |
+
<livedata_trans>
|
77 |
+
<type>singleton</type>
|
78 |
+
<class>livedata_trans/observer</class>
|
79 |
+
<method>addRegisterToScenario</method>
|
80 |
+
</livedata_trans>
|
81 |
+
</observers>
|
82 |
+
</adminhtml_customer_save_after>
|
83 |
<newsletter_subscriber_save_commit_after>
|
84 |
<observers>
|
85 |
<livedata_trans>
|
app/code/community/Livedata/Trans/etc/system.xml
CHANGED
@@ -138,7 +138,7 @@
|
|
138 |
<show_in_store>1</show_in_store>
|
139 |
<fields>
|
140 |
<enabled_scn translate="label">
|
141 |
-
<label>
|
142 |
<frontend_type>select</frontend_type>
|
143 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
144 |
<sort_order>10</sort_order>
|
@@ -146,15 +146,17 @@
|
|
146 |
<show_in_website>1</show_in_website>
|
147 |
<show_in_store>1</show_in_store>
|
148 |
</enabled_scn>
|
149 |
-
<
|
150 |
-
<label>Scenario
|
151 |
-
<frontend_type>
|
|
|
152 |
<sort_order>20</sort_order>
|
153 |
<show_in_default>1</show_in_default>
|
154 |
<show_in_website>1</show_in_website>
|
155 |
<show_in_store>1</show_in_store>
|
|
|
156 |
<depends><enabled_scn>1</enabled_scn></depends>
|
157 |
-
</
|
158 |
</fields>
|
159 |
</scenario>
|
160 |
</groups>
|
138 |
<show_in_store>1</show_in_store>
|
139 |
<fields>
|
140 |
<enabled_scn translate="label">
|
141 |
+
<label>Allow scenario program</label>
|
142 |
<frontend_type>select</frontend_type>
|
143 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
144 |
<sort_order>10</sort_order>
|
146 |
<show_in_website>1</show_in_website>
|
147 |
<show_in_store>1</show_in_store>
|
148 |
</enabled_scn>
|
149 |
+
<from_list translate="label">
|
150 |
+
<label>Select Scenario program</label>
|
151 |
+
<frontend_type>select</frontend_type>
|
152 |
+
<source_model>livedata_trans/system_config_source_scenariolist</source_model>
|
153 |
<sort_order>20</sort_order>
|
154 |
<show_in_default>1</show_in_default>
|
155 |
<show_in_website>1</show_in_website>
|
156 |
<show_in_store>1</show_in_store>
|
157 |
+
<comment>Select the scenario program you want</comment>
|
158 |
<depends><enabled_scn>1</enabled_scn></depends>
|
159 |
+
</from_list>
|
160 |
</fields>
|
161 |
</scenario>
|
162 |
</groups>
|
package.xml
CHANGED
@@ -1,18 +1,18 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Livedata_Solutions</name>
|
4 |
-
<version>1.0.
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://opensource.org/licenses/osl-3.0.php">Open Software License</license>
|
7 |
<channel>community</channel>
|
8 |
<extends/>
|
9 |
-
<summary>
|
10 |
<description>Live Data is a cloud based emailing platform that enables client engagement by one to one campaigns, scenario automation and customer retention. Intuitive and easy to employ, Live Data Emailing is the perfect tool for email marketers who don’t want to spend their time reading user manuals. Whether you’re a content editor, online store or a traditional retailer, Live Data Platform has been created to satisfy your needs.Live Data Emailing enables you to build and manage customer lifecycles and deliver context driven messages. It takes into account your clients’ behavior and device preferences, for a targeted and personalized dialogue.Access your campaign manager directly on our online interface our plug our API to your system. A specialized consultant will help you set up your account and accompany you on a daily basis to get the best out of your email marketing experience.</description>
|
11 |
-
<notes>
|
12 |
<authors><author><name>Toni</name><user>Toni</user><email>tcarreno@livedata-solutions.com</email></author></authors>
|
13 |
-
<date>2016-08-
|
14 |
-
<time>
|
15 |
-
<contents><target name="magecommunity"><dir name="Livedata"><file name="README.txt" hash="
|
16 |
<compatible/>
|
17 |
-
<dependencies><required><php><min>5.0.0</min><max>6.0.0</max></php><package><name>Aschroder_ SMTPPro</name><channel>local</channel><min>1.6</min><max>1.9.2</max><files><file target="." path="app/etc/modules/Aschroder_SMTPPro.xml
|
18 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Livedata_Solutions</name>
|
4 |
+
<version>1.0.2</version>
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://opensource.org/licenses/osl-3.0.php">Open Software License</license>
|
7 |
<channel>community</channel>
|
8 |
<extends/>
|
9 |
+
<summary>Allow you to synchronize your magento contacts with our database and send transactional messages.</summary>
|
10 |
<description>Live Data is a cloud based emailing platform that enables client engagement by one to one campaigns, scenario automation and customer retention. Intuitive and easy to employ, Live Data Emailing is the perfect tool for email marketers who don’t want to spend their time reading user manuals. Whether you’re a content editor, online store or a traditional retailer, Live Data Platform has been created to satisfy your needs.Live Data Emailing enables you to build and manage customer lifecycles and deliver context driven messages. It takes into account your clients’ behavior and device preferences, for a targeted and personalized dialogue.Access your campaign manager directly on our online interface our plug our API to your system. A specialized consultant will help you set up your account and accompany you on a daily basis to get the best out of your email marketing experience.</description>
|
11 |
+
<notes>Scenario manager programs and Livedata unsubscribed synchronization </notes>
|
12 |
<authors><author><name>Toni</name><user>Toni</user><email>tcarreno@livedata-solutions.com</email></author></authors>
|
13 |
+
<date>2016-08-31</date>
|
14 |
+
<time>08:34:24</time>
|
15 |
+
<contents><target name="magecommunity"><dir name="Livedata"><file name="README.txt" hash="ceb13527ad00b32bd4e76ba057421ba9"/><dir name="Trans"><dir name="Helper"><file name="Contact.php" hash="f7eddee0fa61fb197d4a90d813a4b579"/><file name="Contactlist.php" hash="e288ff740871f4d21c9781f730959417"/><file name="Scenario.php" hash="5ddd91cfbb70afbcb57f2084bb1e80e3"/></dir><dir name="Model"><file name="Observer.php" hash="a837907bf1eb33d4483d212e47fc7820"/><dir name="System"><dir name="Config"><dir name="Source"><file name="Contactlists.php" hash="246ecc00a9381e3468062ec4b10c6584"/><file name="Scenariolist.php" hash="e0c99ca7ac545b18fc5b5540867ea6b8"/></dir></dir></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="86910cfba6392ca627a6cf23938a87b7"/><file name="config.xml" hash="449970d062bd6d57be6edad8f8f22b8a"/><file name="system.xml" hash="fa1976f9423e26e29a42bf155876703f"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Livedata_Trans.xml" hash="513a947383ede06a9fa880a3bcacebf7"/></dir></target></contents>
|
16 |
<compatible/>
|
17 |
+
<dependencies><required><php><min>5.0.0</min><max>6.0.0</max></php><package><name>Aschroder_ SMTPPro</name><channel>local</channel><min>1.6</min><max>1.9.2</max><files><file target="." path="app/etc/modules/Aschroder_SMTPPro.xml "/></files></package></required></dependencies>
|
18 |
</package>
|