Version Notes
First release
Download this release
Release Info
Developer | 4Marketing.it |
Extension | 4Dem_Integration_community |
Version | 1.0.0 |
Comparing to | |
See all releases |
Version 1.0.0
- app/code/community/FourMarketing/FourDem/Block/Adminhtml/System/Config/Form/Field/Mapfields.php +29 -0
- app/code/community/FourMarketing/FourDem/Block/Adminhtml/Users.php +24 -0
- app/code/community/FourMarketing/FourDem/Block/Adminhtml/Users/Grid.php +90 -0
- app/code/community/FourMarketing/FourDem/Helper/Data.php +256 -0
- app/code/community/FourMarketing/FourDem/Model/Adminhtml/System/Source/Fields.php +38 -0
- app/code/community/FourMarketing/FourDem/Model/Mysql4/Users.php +8 -0
- app/code/community/FourMarketing/FourDem/Model/Mysql4/Users/Collection.php +8 -0
- app/code/community/FourMarketing/FourDem/Model/Observer.php +280 -0
- app/code/community/FourMarketing/FourDem/Model/System/Config/Source/List.php +38 -0
- app/code/community/FourMarketing/FourDem/Model/Users.php +8 -0
- app/code/community/FourMarketing/FourDem/controllers/SubscribersController.php +14 -0
- app/code/community/FourMarketing/FourDem/controllers/UsersController.php +201 -0
- app/code/community/FourMarketing/FourDem/etc/adminhtml.xml +44 -0
- app/code/community/FourMarketing/FourDem/etc/config.xml +142 -0
- app/code/community/FourMarketing/FourDem/etc/system.xml +260 -0
- app/code/community/FourMarketing/FourDem/sql/fourmarketing_fourdem_setup/mysql4-install-0.1.0.php +17 -0
- app/design/frontend/default/default/layout/fourdem.xml +16 -0
- app/design/frontend/default/default/template/fourdem/form/register-customer.phtml +190 -0
- app/etc/modules/FourMarketing_FourDem.xml +9 -0
- package.xml +22 -0
app/code/community/FourMarketing/FourDem/Block/Adminhtml/System/Config/Form/Field/Mapfields.php
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* System configuration form field renderer for mapping MergeVars fields with Magento
|
5 |
+
* attributes.
|
6 |
+
*
|
7 |
+
* @category FourMarketing
|
8 |
+
* @package FourMarketing_FourDem
|
9 |
+
* @author FourMarketing Team <devandtrade@devandtrade.it>
|
10 |
+
*/
|
11 |
+
class FourMarketing_FourDem_Block_Adminhtml_System_Config_Form_Field_Mapfields extends Mage_Adminhtml_Block_System_Config_Form_Field_Array_Abstract
|
12 |
+
{
|
13 |
+
|
14 |
+
public function __construct()
|
15 |
+
{
|
16 |
+
|
17 |
+
$this->addColumn('magento', array(
|
18 |
+
'label' => Mage::helper('fourdem')->__('Magento'),
|
19 |
+
'style' => 'width:120px',
|
20 |
+
));
|
21 |
+
$this->addColumn('fourdem', array(
|
22 |
+
'label' => Mage::helper('fourdem')->__('4Marketing'),
|
23 |
+
'style' => 'width:120px',
|
24 |
+
));
|
25 |
+
$this->_addAfter = false;
|
26 |
+
$this->_addButtonLabel = Mage::helper('fourdem')->__('Aggiungi Campo');
|
27 |
+
parent::__construct();
|
28 |
+
}
|
29 |
+
}
|
app/code/community/FourMarketing/FourDem/Block/Adminhtml/Users.php
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class FourMarketing_FourDem_Block_Adminhtml_Users extends Mage_Adminhtml_Block_Widget_Grid_Container
|
3 |
+
{
|
4 |
+
public function __construct()
|
5 |
+
{
|
6 |
+
$this->_blockGroup = 'fourmarketing_fourdem';
|
7 |
+
$this->_controller = 'adminhtml_users';
|
8 |
+
$this->_headerText = $this->__('Clienti Sincronizzati');
|
9 |
+
|
10 |
+
$this->_addButton('button_synchronize', array(
|
11 |
+
'label' => Mage::helper('fourdem')->__('Sincronizza Magento/4Dem'),
|
12 |
+
'onclick' => 'setLocation(\'' . $this->getUrl('*/*/synchronize') .'\')',
|
13 |
+
'class' => 'remove',
|
14 |
+
));
|
15 |
+
|
16 |
+
parent::__construct();
|
17 |
+
$this->_removeButton('add');
|
18 |
+
}
|
19 |
+
|
20 |
+
public function getHeaderCssClass()
|
21 |
+
{
|
22 |
+
return 'icon-head head-newsletter-list';
|
23 |
+
}
|
24 |
+
}
|
app/code/community/FourMarketing/FourDem/Block/Adminhtml/Users/Grid.php
ADDED
@@ -0,0 +1,90 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class FourMarketing_FourDem_Block_Adminhtml_Users_Grid extends Mage_Adminhtml_Block_Widget_Grid
|
3 |
+
{
|
4 |
+
public function __construct()
|
5 |
+
{
|
6 |
+
parent::__construct();
|
7 |
+
|
8 |
+
$this->setDefaultSort('id_fourdem');
|
9 |
+
$this->setId('fourmarketing_fourdem_users_grid');
|
10 |
+
$this->setDefaultDir('desc');
|
11 |
+
$this->setSaveParametersInSession(true);
|
12 |
+
}
|
13 |
+
|
14 |
+
protected function _getCollectionClass()
|
15 |
+
{
|
16 |
+
return 'fourmarketing_fourdem/users_collection';
|
17 |
+
}
|
18 |
+
|
19 |
+
protected function _prepareCollection()
|
20 |
+
{
|
21 |
+
// Get and set our collection for the grid
|
22 |
+
$collection = Mage::getResourceModel($this->_getCollectionClass());
|
23 |
+
$this->setCollection($collection);
|
24 |
+
|
25 |
+
return parent::_prepareCollection();
|
26 |
+
}
|
27 |
+
|
28 |
+
protected function _prepareColumns()
|
29 |
+
{
|
30 |
+
$this->addColumn('id_fourdem',
|
31 |
+
array(
|
32 |
+
'header'=> $this->__('ID 4MARKETING'),
|
33 |
+
'align' =>'right',
|
34 |
+
'width' => '50px',
|
35 |
+
'index' => 'id_fourdem'
|
36 |
+
)
|
37 |
+
);
|
38 |
+
|
39 |
+
$this->addColumn('firstname',
|
40 |
+
array(
|
41 |
+
'header'=> $this->__('Nome Cliente'),
|
42 |
+
'index' => 'firstname'
|
43 |
+
)
|
44 |
+
);
|
45 |
+
|
46 |
+
$this->addColumn('lastname',
|
47 |
+
array(
|
48 |
+
'header'=> $this->__('Cognome Cliente'),
|
49 |
+
'index' => 'lastname'
|
50 |
+
)
|
51 |
+
);
|
52 |
+
|
53 |
+
$this->addColumn('email_address',
|
54 |
+
array(
|
55 |
+
'header'=> $this->__('Email Cliente'),
|
56 |
+
'index' => 'email_address'
|
57 |
+
)
|
58 |
+
);
|
59 |
+
|
60 |
+
$this->addColumn('own_list',
|
61 |
+
array(
|
62 |
+
'header' => $this->__('Lista di Appartenenza'),
|
63 |
+
'index' => 'own_list'
|
64 |
+
)
|
65 |
+
);
|
66 |
+
|
67 |
+
$this->addColumn('action',
|
68 |
+
array(
|
69 |
+
'header' => Mage::helper('catalog')->__('Disiscrizione Newsletter'),
|
70 |
+
'width' => '50px',
|
71 |
+
'type' => 'action',
|
72 |
+
'getter' => 'getId',
|
73 |
+
'actions' => array(
|
74 |
+
array(
|
75 |
+
'caption' => Mage::helper('catalog')->__('Disiscrivi Utente'),
|
76 |
+
'confirm' => $this->__('Sei sicuro di voler disiscrivere il cliente dalla lista?'),
|
77 |
+
'url' => array(
|
78 |
+
'base' => '*/*/delete'
|
79 |
+
),
|
80 |
+
'field' => 'id'
|
81 |
+
)
|
82 |
+
),
|
83 |
+
'filter' => false,
|
84 |
+
'sortable' => false,
|
85 |
+
'index' => 'stores',
|
86 |
+
));
|
87 |
+
|
88 |
+
return parent::_prepareColumns();
|
89 |
+
}
|
90 |
+
}
|
app/code/community/FourMarketing/FourDem/Helper/Data.php
ADDED
@@ -0,0 +1,256 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Helper - Wrap Connection To 4Marketing
|
5 |
+
*
|
6 |
+
* @category FourMarketing
|
7 |
+
* @package FourMarketing_FourDem
|
8 |
+
* @author FourMarketing Team <devandtrade@devandtrade.it>
|
9 |
+
*/
|
10 |
+
class FourMarketing_FourDem_Helper_Data extends Mage_Core_Helper_Abstract
|
11 |
+
{
|
12 |
+
public $consoleUrl = '';
|
13 |
+
public $urlConnectionAPI = "?Command=%s&ResponseFormat=JSON";
|
14 |
+
public $sessionID = '';
|
15 |
+
public static $singleAlert = 1;
|
16 |
+
public static $singleAlertSuccess = 1;
|
17 |
+
|
18 |
+
public function __construct()
|
19 |
+
{
|
20 |
+
$this->consoleUrl = Mage::getStoreConfig('fourdem/system_access/url_console');
|
21 |
+
|
22 |
+
$params = array(
|
23 |
+
'username' => '&Username='.Mage::getStoreConfig('fourdem/system_access/username'),
|
24 |
+
'password' => '&Password='.Mage::getStoreConfig('fourdem/system_access/password')
|
25 |
+
);
|
26 |
+
|
27 |
+
$resultJSON = $this->_getRequestApi('User.Login', $params);
|
28 |
+
|
29 |
+
if($resultJSON->Success)
|
30 |
+
{
|
31 |
+
$this->sessionID = $resultJSON->SessionID;
|
32 |
+
}
|
33 |
+
|
34 |
+
return;
|
35 |
+
}
|
36 |
+
|
37 |
+
private function _getRequestApi($method, array $params, $printUrl = false)
|
38 |
+
{
|
39 |
+
$consoleUrl = $this->consoleUrl.$this->urlConnectionAPI;
|
40 |
+
$urlRequest = sprintf($consoleUrl, $method);
|
41 |
+
|
42 |
+
foreach($params as $param)
|
43 |
+
{
|
44 |
+
$urlRequest .= $param;
|
45 |
+
}
|
46 |
+
|
47 |
+
if($printUrl)
|
48 |
+
{
|
49 |
+
print_r('<strong>'.$urlRequest.'</strong>'); die();
|
50 |
+
}
|
51 |
+
|
52 |
+
$curl = new Varien_Http_Adapter_Curl();
|
53 |
+
$curl->setConfig(array('timeout' => 15));
|
54 |
+
$curl->write(Zend_Http_Client::GET, $urlRequest, '1.0');
|
55 |
+
preg_match('/\{.*\}/i', $curl->read(), $jsonObj);
|
56 |
+
|
57 |
+
return json_decode(array_pop($jsonObj));
|
58 |
+
}
|
59 |
+
|
60 |
+
public function getListInformation($listID)
|
61 |
+
{
|
62 |
+
$method = 'List.Get';
|
63 |
+
$params = array(
|
64 |
+
'sessionID' => '&SessionID='.$this->sessionID,
|
65 |
+
'listID' => '&ListID='.$listID
|
66 |
+
);
|
67 |
+
|
68 |
+
return $this->_getRequestApi($method, $params);
|
69 |
+
}
|
70 |
+
|
71 |
+
public function getLists()
|
72 |
+
{
|
73 |
+
$method = 'Lists.Get';
|
74 |
+
$params = array(
|
75 |
+
'sessionID' => '&SessionID='.$this->sessionID,
|
76 |
+
'orderField' => '&OrderField=Name',
|
77 |
+
'orderType' => '&OrderType=ASC'
|
78 |
+
);
|
79 |
+
|
80 |
+
return $this->_getRequestApi($method, $params);
|
81 |
+
}
|
82 |
+
|
83 |
+
public function getCustomFields($listID)
|
84 |
+
{
|
85 |
+
$method = "CustomFields.Get";
|
86 |
+
$params = array(
|
87 |
+
'sessionID' => '&SessionID='.$this->sessionID,
|
88 |
+
'orderField' => '&OrderField=FieldName',
|
89 |
+
'orderType' => '&OrderType=ASC',
|
90 |
+
'subscriberListID' => '&SubscriberListID='.$listID
|
91 |
+
);
|
92 |
+
|
93 |
+
return $this->_getRequestApi($method, $params);
|
94 |
+
}
|
95 |
+
|
96 |
+
public function newSubscriber($listID, $email, $ipAddress, $customFields = array(), $singleAlert = false, $isMessageSuppressed = false)
|
97 |
+
{
|
98 |
+
$method = 'Subscriber.Subscribe';
|
99 |
+
$params = array(
|
100 |
+
'sessionID' => '&SessionID='.$this->sessionID,
|
101 |
+
'listID' => '&ListID='.$listID,
|
102 |
+
'emailAddress' => '&EmailAddress='.$email,
|
103 |
+
'ipAddress' => '&IPAddress='.$ipAddress
|
104 |
+
);
|
105 |
+
|
106 |
+
if(!empty($customFields))
|
107 |
+
{
|
108 |
+
foreach($customFields as $key => $field)
|
109 |
+
{
|
110 |
+
$params[$key] = str_replace(" ", "%20", $field);
|
111 |
+
}
|
112 |
+
}
|
113 |
+
|
114 |
+
$fourObject = $this->_getRequestApi($method, $params);
|
115 |
+
$newSubscriber = $fourObject->Subscriber;
|
116 |
+
|
117 |
+
if(!empty($newSubscriber->SubscriberID))
|
118 |
+
{
|
119 |
+
if(self::$singleAlertSuccess && $singleAlert==true)
|
120 |
+
{
|
121 |
+
if(self::$singleAlertSuccess==1)
|
122 |
+
{
|
123 |
+
if(!$isMessageSuppressed)
|
124 |
+
{
|
125 |
+
self::$singleAlertSuccess++;
|
126 |
+
$message = $this->__('Iscrizione alla newsletter avvenuta con successo!');
|
127 |
+
Mage::getSingleton('core/session')->addSuccess($message);
|
128 |
+
}
|
129 |
+
}
|
130 |
+
}
|
131 |
+
}
|
132 |
+
elseif($singleAlert)
|
133 |
+
{
|
134 |
+
if(self::$singleAlert==1)
|
135 |
+
{
|
136 |
+
if(!$isMessageSuppressed)
|
137 |
+
{
|
138 |
+
self::$singleAlert++;
|
139 |
+
$message = $this->__("Alcuni indirizzi era già presenti nella lista di destinazione.");
|
140 |
+
Mage::getSingleton('core/session')->addError($message);
|
141 |
+
}
|
142 |
+
}
|
143 |
+
}
|
144 |
+
else
|
145 |
+
{
|
146 |
+
if(!$isMessageSuppressed)
|
147 |
+
{
|
148 |
+
$message = $this->__("Indirizzo email $email già presente nella lista!");
|
149 |
+
Mage::getSingleton('core/session')->addError($message);
|
150 |
+
}
|
151 |
+
}
|
152 |
+
}
|
153 |
+
|
154 |
+
public function updateSubscriber($emailAddress, $newEmailAddress, $listID, $customFields, $isMessageSuppressed = false)
|
155 |
+
{
|
156 |
+
$fourObject = $this->getAllSubscribers($listID, $emailAddress);
|
157 |
+
//echo '<pre>'; print_r($fourObject); echo '</pre>'; die();
|
158 |
+
|
159 |
+
try
|
160 |
+
{
|
161 |
+
if($fourObject->TotalSubscribers)
|
162 |
+
{
|
163 |
+
$method = "Subscriber.Update";
|
164 |
+
$subscriberObject = array_pop($fourObject->Subscribers);
|
165 |
+
|
166 |
+
$params = array(
|
167 |
+
'sessionID' => "&SessionID=".$this->sessionID,
|
168 |
+
'subscriberID' => "&SubscriberID=".$subscriberObject->SubscriberID,
|
169 |
+
'subscriberListID' => "&SubscriberListID=".$listID,
|
170 |
+
'emailAddress' => "&EmailAddress=".$newEmailAddress,
|
171 |
+
);
|
172 |
+
|
173 |
+
if(!empty($customFields))
|
174 |
+
{
|
175 |
+
foreach($customFields as $key => $field)
|
176 |
+
{
|
177 |
+
$params[$key] = str_replace(" ", "%20", $field);
|
178 |
+
}
|
179 |
+
}
|
180 |
+
|
181 |
+
$params['access'] = "&Access=admin";
|
182 |
+
//echo '<pre>'; print_r($params); echo '</pre>'; die();
|
183 |
+
$fourObject = $this->_getRequestApi($method, $params);
|
184 |
+
|
185 |
+
if($fourObject->Success)
|
186 |
+
{
|
187 |
+
if(!$isMessageSuppressed)
|
188 |
+
{
|
189 |
+
$message = $this->__('Aggiornamento Newsletter: I Tuoi Dati Sono Stati Aggiornati Con Successo!');
|
190 |
+
Mage::getSingleton('core/session')->addSuccess($message);
|
191 |
+
}
|
192 |
+
}
|
193 |
+
}
|
194 |
+
}
|
195 |
+
catch(Exception $e)
|
196 |
+
{
|
197 |
+
$message = $this->__($e->getMessage());
|
198 |
+
Mage::getSingleton('core/session')->addError($message);
|
199 |
+
}
|
200 |
+
|
201 |
+
return;
|
202 |
+
}
|
203 |
+
|
204 |
+
public function unsubscribeSubscriber($listID, $idSubscriber, $emailAddress)
|
205 |
+
{
|
206 |
+
$method = "Subscriber.Unsubscribe";
|
207 |
+
$params = array(
|
208 |
+
'sessionID' => '&SessionID='.$this->sessionID,
|
209 |
+
'subscriberListID' => '&ListID='.$listID,
|
210 |
+
'subscribers' => '&SubscriberID='.$idSubscriber,
|
211 |
+
'emailAddress' => '&EmailAddress='.$emailAddress
|
212 |
+
);
|
213 |
+
|
214 |
+
return $this->_getRequestApi($method, $params);
|
215 |
+
}
|
216 |
+
|
217 |
+
public function getAllSubscribers($listID, $emailAddress = NULL)
|
218 |
+
{
|
219 |
+
$method = "Subscribers.Get";
|
220 |
+
$params = array(
|
221 |
+
'sessionID' => "&SessionID=".$this->sessionID,
|
222 |
+
'orderField' => "&OrderField=EmailAddress",
|
223 |
+
'orderType' => "&OrderType=DESC",
|
224 |
+
'recordsFrom' => "&RecordsFrom=0",
|
225 |
+
//'recordPerRequest' => "&RecordsPerRequest=1",
|
226 |
+
'searchField' => "&SearchField=EmailAddress",
|
227 |
+
'subscriberSegment' => "&SubscriberSegment=Active",
|
228 |
+
'subscriberListID' => "&SubscriberListID=".$listID,
|
229 |
+
);
|
230 |
+
|
231 |
+
if($emailAddress!=NULL)
|
232 |
+
{
|
233 |
+
$params['searchKeyword'] = "&SearchKeyword=".$emailAddress;
|
234 |
+
}
|
235 |
+
|
236 |
+
return $this->_getRequestApi($method, $params);
|
237 |
+
}
|
238 |
+
|
239 |
+
public function getAboutSubscriber($emailAddress, $listID)
|
240 |
+
{
|
241 |
+
$method = "Subscribers.Get";
|
242 |
+
$params = array(
|
243 |
+
'sessionID' => "&SessionID=".$this->sessionID,
|
244 |
+
'orderField' => "&OrderField=EmailAddress",
|
245 |
+
'orderType' => "&OrderType=DESC",
|
246 |
+
'recordsFrom' => "&RecordsFrom=0",
|
247 |
+
'recordPerRequest' => "&RecordsPerRequest=1",
|
248 |
+
'searchKeyword' => "&SearchKeyword=".$emailAddress,
|
249 |
+
'searchField' => "&SearchField=EmailAddress",
|
250 |
+
'subscriberSegment' => "&SubscriberSegment=Active",
|
251 |
+
'subscriberListID' => "&SubscriberListID=".$listID,
|
252 |
+
);
|
253 |
+
|
254 |
+
return $this->_getRequestApi($method, $params);
|
255 |
+
}
|
256 |
+
}
|
app/code/community/FourMarketing/FourDem/Model/Adminhtml/System/Source/Fields.php
ADDED
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class FourMarketing_FourDem_Model_Adminhtml_System_Source_Fields
|
3 |
+
{
|
4 |
+
public function toOptionArray()
|
5 |
+
{
|
6 |
+
$customerListID = Mage::getStoreConfig('fourdem/system_access/customer_list');
|
7 |
+
$newsletterListID = Mage::getStoreConfig('fourdem/system_access/newsletter_list');
|
8 |
+
|
9 |
+
if(!empty($customerListID))
|
10 |
+
{
|
11 |
+
$listID = $customerListID;
|
12 |
+
}
|
13 |
+
else
|
14 |
+
{
|
15 |
+
$listID = $newsletterListID;
|
16 |
+
}
|
17 |
+
|
18 |
+
$customFields = Mage::helper('fourdem')->getCustomFields($listID)->CustomFields;
|
19 |
+
|
20 |
+
if(!empty($customFields))
|
21 |
+
{
|
22 |
+
$options[] = array(
|
23 |
+
'value' => '',
|
24 |
+
'label' => '-- Nessun Campo --',
|
25 |
+
);
|
26 |
+
|
27 |
+
foreach($customFields as $field)
|
28 |
+
{
|
29 |
+
$options[] = array(
|
30 |
+
'value' => $field->CustomFieldID,
|
31 |
+
'label' => $field->FieldName,
|
32 |
+
);
|
33 |
+
}
|
34 |
+
}
|
35 |
+
|
36 |
+
return $options;
|
37 |
+
}
|
38 |
+
}
|
app/code/community/FourMarketing/FourDem/Model/Mysql4/Users.php
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class FourMarketing_FourDem_Model_Mysql4_Users extends Mage_Core_Model_Mysql4_Abstract
|
3 |
+
{
|
4 |
+
protected function _construct()
|
5 |
+
{
|
6 |
+
$this->_init('fourmarketing_fourdem/users', 'id_fourdem');
|
7 |
+
}
|
8 |
+
}
|
app/code/community/FourMarketing/FourDem/Model/Mysql4/Users/Collection.php
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class FourMarketing_FourDem_Model_Mysql4_Users_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
|
3 |
+
{
|
4 |
+
protected function _construct()
|
5 |
+
{
|
6 |
+
$this->_init('fourmarketing_fourdem/users');
|
7 |
+
}
|
8 |
+
}
|
app/code/community/FourMarketing/FourDem/Model/Observer.php
ADDED
@@ -0,0 +1,280 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Events Observer Model
|
5 |
+
*
|
6 |
+
* @category FourMarketing
|
7 |
+
* @package FourMarketing_FourDem
|
8 |
+
* @author FourMarketing Team <devandtrade@devandtrade.it>
|
9 |
+
*/
|
10 |
+
class FourMarketing_FourDem_Model_Observer
|
11 |
+
{
|
12 |
+
/**
|
13 |
+
* Controllo Credenziali inserite dall'utente dal pannello di configurazione
|
14 |
+
* @author Raffaele Capasso
|
15 |
+
* @version 1.0
|
16 |
+
* @copyright Dev And Trade
|
17 |
+
*/
|
18 |
+
public function check4demConfiguration()
|
19 |
+
{
|
20 |
+
try
|
21 |
+
{
|
22 |
+
$isEnabled = Mage::getStoreConfig('fourdem/system_access/active');
|
23 |
+
|
24 |
+
if($isEnabled)
|
25 |
+
{
|
26 |
+
if(empty(Mage::helper('fourdem')->sessionID))
|
27 |
+
{
|
28 |
+
throw new Exception('Nome Utente o Password Errati! Controlla le tue credenziali di accesso.');
|
29 |
+
}
|
30 |
+
}
|
31 |
+
|
32 |
+
return;
|
33 |
+
}
|
34 |
+
catch(Exception $e)
|
35 |
+
{
|
36 |
+
Mage::getSingleton('core/session')->addError($e->getMessage());
|
37 |
+
return;
|
38 |
+
}
|
39 |
+
}
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Iscrivo il cliente nella lista "Clienti" durante la registrazione.
|
43 |
+
* @author Raffaele Capasso
|
44 |
+
* @version 1.0
|
45 |
+
* @copyright Dev And Trade
|
46 |
+
*/
|
47 |
+
public function subscribeCustomer(Varien_Event_Observer $observer)
|
48 |
+
{
|
49 |
+
$customer = $observer->getCustomer();
|
50 |
+
$listID = Mage::getStoreConfig('fourdem/system_access/customer_list');
|
51 |
+
$mapFields = Mage::getStoreConfig('fourdem/fourdem_mapping');
|
52 |
+
$email = $customer->getEmail();
|
53 |
+
$ipAddress = $_SERVER['REMOTE_ADDR'];
|
54 |
+
$customFields = array();
|
55 |
+
|
56 |
+
foreach($mapFields as $label => $customFieldID)
|
57 |
+
{
|
58 |
+
if(!empty($customFieldID))
|
59 |
+
{
|
60 |
+
$customerValueField = $customer->getData($label);
|
61 |
+
|
62 |
+
if(!empty($customerValueField))
|
63 |
+
{
|
64 |
+
$key = 'CustomField'.$customFieldID;
|
65 |
+
$customFields[$key] = '&CustomField'.$customFieldID.'='.$customerValueField;
|
66 |
+
}
|
67 |
+
}
|
68 |
+
}
|
69 |
+
|
70 |
+
Mage::helper('fourdem')->newSubscriber($listID, $email, $ipAddress, $customFields, true, true);
|
71 |
+
return;
|
72 |
+
}
|
73 |
+
|
74 |
+
public function collectionDataMapping(Varien_Event_Observer $observer)
|
75 |
+
{
|
76 |
+
$mapFields = Mage::getStoreConfig('fourdem/fourdem_mapping');
|
77 |
+
$customFields = array();
|
78 |
+
$listID = Mage::getStoreConfig('fourdem/system_access/customer_list');
|
79 |
+
$defaultBillingAddress = $observer->getCustomerAddress()->getData();
|
80 |
+
$emailCustomer = Mage::getModel('customer/customer')->load($defaultBillingAddress['parent_id'])->getEmail();
|
81 |
+
|
82 |
+
foreach($mapFields as $label => $customFieldID)
|
83 |
+
{
|
84 |
+
if(!empty($customFieldID))
|
85 |
+
{
|
86 |
+
$billingValueField = $defaultBillingAddress[$label];
|
87 |
+
$key = 'Fields'.$customFieldID;
|
88 |
+
$customFields[$key] = '&Fields[CustomField'.$customFieldID.']='.$billingValueField;
|
89 |
+
}
|
90 |
+
}
|
91 |
+
|
92 |
+
//echo '<pre>'; print_r($customFields); echo '</pre>'; die();
|
93 |
+
Mage::helper('fourdem')->updateSubscriber($emailCustomer, $emailCustomer, $listID, $customFields, true);
|
94 |
+
return;
|
95 |
+
}
|
96 |
+
|
97 |
+
/**
|
98 |
+
* Cambio le impostazioni date dall'utente inserite nella fase di registrazione.
|
99 |
+
* @author Raffaele Capasso
|
100 |
+
* @version 1.0
|
101 |
+
* @copyright Dev And Trade
|
102 |
+
*/
|
103 |
+
public function changeSubscribeEmail(Varien_Event_Observer $observer)
|
104 |
+
{
|
105 |
+
$mapFields = Mage::getStoreConfig('fourdem/fourdem_mapping');
|
106 |
+
$customFields = array();
|
107 |
+
$oldDataCustomer = $observer->getCustomer()->getOrigData();
|
108 |
+
$newDataCustomer = $observer->getCustomer()->getData();
|
109 |
+
|
110 |
+
$listID = Mage::getStoreConfig('fourdem/system_access/customer_list');
|
111 |
+
$oldEmailCustomer = $oldDataCustomer['email'];
|
112 |
+
$newEmailCustomer = $newDataCustomer['email'];
|
113 |
+
$customerModel = Mage::getModel('customer/customer')->load($newDataCustomer['entity_id']);
|
114 |
+
|
115 |
+
if(empty($oldEmailCustomer))
|
116 |
+
{
|
117 |
+
$oldEmailCustomer = $newEmailCustomer;
|
118 |
+
}
|
119 |
+
|
120 |
+
foreach($mapFields as $label => $customFieldID)
|
121 |
+
{
|
122 |
+
if(!empty($customFieldID))
|
123 |
+
{
|
124 |
+
$billingValueField = $customerModel->getData($label);
|
125 |
+
|
126 |
+
if(!empty($billingValueField))
|
127 |
+
{
|
128 |
+
$key = 'Fields'.$customFieldID;
|
129 |
+
$customFields[$key] = '&Fields[CustomField'.$customFieldID.']='.$billingValueField;
|
130 |
+
}
|
131 |
+
else
|
132 |
+
{
|
133 |
+
if(is_object($customerModel->getDefaultBillingAddress()))
|
134 |
+
{
|
135 |
+
$billingDefaultAddress = $customerModel->getDefaultBillingAddress()->getData();
|
136 |
+
$billingValueField = $billingDefaultAddress[$label];
|
137 |
+
$key = 'Fields'.$customFieldID;
|
138 |
+
$customFields[$key] = '&Fields[CustomField'.$customFieldID.']='.$billingValueField;
|
139 |
+
}
|
140 |
+
}
|
141 |
+
}
|
142 |
+
}
|
143 |
+
|
144 |
+
if(isset($newDataCustomer['is_subscribed']) && !$newDataCustomer['is_subscribed'])
|
145 |
+
{
|
146 |
+
// Se l'utente disabilita la newsletter lo disiscrivo da 4Marketing.it..
|
147 |
+
$resource = Mage::getSingleton('core/resource')->getConnection('core_write');
|
148 |
+
$email = $newDataCustomer['email'];
|
149 |
+
$user = $resource->query("SELECT * FROM fourmarketing_fourdem_users WHERE email_address = '".$email."'");
|
150 |
+
$userRow = array_pop($user);
|
151 |
+
$idUser = $userRow['id_fourdem'];
|
152 |
+
|
153 |
+
Mage::helper('fourdem')->unsubscribeSubscriber($listID, $idUser, $email, true);
|
154 |
+
return;
|
155 |
+
}
|
156 |
+
elseif(isset($newDataCustomer['is_subscribed']) && $newDataCustomer['is_subscribed'])
|
157 |
+
{
|
158 |
+
// Se l'utente abilita la newsletter lo iscrivo nella lista 4Marketing.it impostata dall'utente.
|
159 |
+
$email = $newDataCustomer['email'];
|
160 |
+
$ipAddress = $_SERVER['REMOTE_ADDR'];
|
161 |
+
|
162 |
+
Mage::helper('fourdem')->newSubscriber($listID, $email, $ipAddress, $customFields, true, true);
|
163 |
+
return;
|
164 |
+
}
|
165 |
+
|
166 |
+
Mage::helper('fourdem')->updateSubscriber($oldEmailCustomer, $newEmailCustomer, $listID, $customFields, true);
|
167 |
+
return;
|
168 |
+
}
|
169 |
+
|
170 |
+
/**
|
171 |
+
* Quando il cliente effettua un'acquisto viene iscritto alla lista "Clienti" presente su 4Marketing.
|
172 |
+
* @author Raffaele Capasso
|
173 |
+
* @version 1.0
|
174 |
+
* @copyright Dev And Trade
|
175 |
+
*/
|
176 |
+
public function subscribeCustomerAfterCheckout(Varien_Event_Observer $observer)
|
177 |
+
{
|
178 |
+
$mapFields = Mage::getStoreConfig('fourdem/fourdem_mapping');
|
179 |
+
$listID = Mage::getStoreConfig('fourdem/system_access/customer_list');
|
180 |
+
$customerQuote = $observer->getEvent()->getQuote()->getData();
|
181 |
+
$billingInformation = $observer->getEvent()->getQuote()->getBillingAddress()->getData();
|
182 |
+
$customFields = array();
|
183 |
+
|
184 |
+
if($customerQuote['checkout_method'] === 'guest')
|
185 |
+
{
|
186 |
+
$email = $customerQuote['customer_email'];
|
187 |
+
$ipAddress = $_SERVER['REMOTE_ADDR'];
|
188 |
+
$isMessageSuppressed = true;
|
189 |
+
$isCustomerRegistered = Mage::getModel('customer/customer')->setWebsiteId(1)->loadByEmail($email)->getId();
|
190 |
+
|
191 |
+
if($isCustomerRegistered)
|
192 |
+
{
|
193 |
+
foreach($mapFields as $label => $customFieldID)
|
194 |
+
{
|
195 |
+
if(!empty($customFieldID))
|
196 |
+
{
|
197 |
+
$billingValueField = $billingInformation[$label];
|
198 |
+
$key = 'Fields'.$customFieldID;
|
199 |
+
$customFields[$key] = '&Fields[CustomField'.$customFieldID.']='.$billingValueField;
|
200 |
+
}
|
201 |
+
}
|
202 |
+
|
203 |
+
Mage::helper('fourdem')->updateSubscriber($email, $email, $listID, $customFields);
|
204 |
+
return;
|
205 |
+
}
|
206 |
+
else
|
207 |
+
{
|
208 |
+
foreach($mapFields as $label => $customFieldID)
|
209 |
+
{
|
210 |
+
if(!empty($customFieldID))
|
211 |
+
{
|
212 |
+
$billingValueField = $billingInformation[$label];
|
213 |
+
|
214 |
+
if(!empty($billingValueField))
|
215 |
+
{
|
216 |
+
$key = 'CustomField'.$customFieldID;
|
217 |
+
$customFields[$key] = '&CustomField'.$customFieldID.'='.$billingValueField;
|
218 |
+
}
|
219 |
+
}
|
220 |
+
}
|
221 |
+
|
222 |
+
Mage::helper('fourdem')->newSubscriber($listID, $email, $ipAddress, $customFields, false, $isMessageSuppressed);
|
223 |
+
return;
|
224 |
+
}
|
225 |
+
}
|
226 |
+
else
|
227 |
+
{
|
228 |
+
$customerOrder = $observer->getEvent()->getOrder();
|
229 |
+
$customer = $customerOrder->getCustomer();
|
230 |
+
//echo '<pre>'; print_r($customer->getData()); echo '</pre>'; die();
|
231 |
+
$customerModel = Mage::getModel('customer/customer')->load($customer->getData('entity_id'));
|
232 |
+
$billingAddress = $customerOrder->getBillingAddress();
|
233 |
+
$email = $customerOrder->getCustomer()->getEmail();
|
234 |
+
$isCustomerRegistered = Mage::getModel('customer/customer')->setWebsiteId(1)->loadByEmail($email)->getId();
|
235 |
+
$ipAddress = $_SERVER['REMOTE_ADDR'];
|
236 |
+
|
237 |
+
if($isCustomerRegistered)
|
238 |
+
{
|
239 |
+
foreach($mapFields as $label => $customFieldID)
|
240 |
+
{
|
241 |
+
if(!empty($customFieldID) && $label!='billing_address')
|
242 |
+
{
|
243 |
+
$billingValueField = $billingAddress->getData($label);
|
244 |
+
$key = 'Fields'.$customFieldID;
|
245 |
+
$customFields[$key] = '&Fields[CustomField'.$customFieldID.']='.$billingValueField;
|
246 |
+
}
|
247 |
+
}
|
248 |
+
|
249 |
+
//echo '<pre>'; print_r($customFields); echo '</pre>'; die();
|
250 |
+
Mage::helper('fourdem')->updateSubscriber($email, $email, $listID, $customFields, true);
|
251 |
+
return;
|
252 |
+
}
|
253 |
+
else
|
254 |
+
{
|
255 |
+
foreach($mapFields as $label => $customFieldID)
|
256 |
+
{
|
257 |
+
if(!empty($customFieldID))
|
258 |
+
{
|
259 |
+
$billingValueField = $billingAddress->getData($label);
|
260 |
+
|
261 |
+
if(!empty($billingValueField))
|
262 |
+
{
|
263 |
+
$key = 'CustomField'.$customFieldID;
|
264 |
+
$customFields[$key] = '&CustomField'.$customFieldID.'='.$billingValueField;
|
265 |
+
}
|
266 |
+
else
|
267 |
+
{
|
268 |
+
$key = 'CustomField'.$customFieldID;
|
269 |
+
$customerValueField = $customerModel->getData($label);
|
270 |
+
$customFields[$key] = '&CustomField'.$customFieldID.'='.$customerValueField;
|
271 |
+
}
|
272 |
+
}
|
273 |
+
}
|
274 |
+
|
275 |
+
Mage::helper('fourdem')->newSubscriber($listID, $email, $ipAddress, $customFields);
|
276 |
+
return;
|
277 |
+
}
|
278 |
+
}
|
279 |
+
}
|
280 |
+
}
|
app/code/community/FourMarketing/FourDem/Model/System/Config/Source/List.php
ADDED
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* 4Marketing lists source file
|
5 |
+
*
|
6 |
+
* @category FourMarketing
|
7 |
+
* @package FourMarketing_FourDem
|
8 |
+
* @author FourMarketing Team <devandtrade@devandtrade.it>
|
9 |
+
*/
|
10 |
+
class FourMarketing_FourDem_Model_System_Config_Source_List
|
11 |
+
{
|
12 |
+
protected $_lists = null;
|
13 |
+
|
14 |
+
public function __construct()
|
15 |
+
{
|
16 |
+
if(is_null($this->_lists) && !empty(Mage::helper('fourdem')->sessionID))
|
17 |
+
{
|
18 |
+
$this->_lists = Mage::helper('fourdem')->getLists();
|
19 |
+
}
|
20 |
+
}
|
21 |
+
|
22 |
+
public function toOptionArray()
|
23 |
+
{
|
24 |
+
$lists = array();
|
25 |
+
$listsByApi = $this->_lists->Lists;
|
26 |
+
|
27 |
+
foreach($listsByApi as $list)
|
28 |
+
{
|
29 |
+
$lists [] = array(
|
30 |
+
'value' => $list->ListID,
|
31 |
+
'label' => $list->Name . ' (' . $list->SubscriberCount . ' ' . Mage::helper('fourdem')->__('Membri') . ')'
|
32 |
+
);
|
33 |
+
}
|
34 |
+
|
35 |
+
return $lists;
|
36 |
+
}
|
37 |
+
|
38 |
+
}
|
app/code/community/FourMarketing/FourDem/Model/Users.php
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class FourMarketing_FourDem_Model_Users extends Mage_Core_Model_Abstract
|
3 |
+
{
|
4 |
+
protected function _construct()
|
5 |
+
{
|
6 |
+
$this->_init('fourmarketing_fourdem/users');
|
7 |
+
}
|
8 |
+
}
|
app/code/community/FourMarketing/FourDem/controllers/SubscribersController.php
ADDED
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class FourMarketing_FourDem_SubscribersController extends Mage_Core_Controller_Front_Action
|
3 |
+
{
|
4 |
+
public function newAction()
|
5 |
+
{
|
6 |
+
$params = $this->getRequest()->getParams();
|
7 |
+
$email = $params['email'];
|
8 |
+
$ipAddress = $params['ip-address'];
|
9 |
+
$listID = Mage::getStoreConfig('fourdem/system_access/newsletter_list');
|
10 |
+
|
11 |
+
Mage::helper('fourdem')->newSubscriber($listID, $email, $ipAddress);
|
12 |
+
$this->_redirect('');
|
13 |
+
}
|
14 |
+
}
|
app/code/community/FourMarketing/FourDem/controllers/UsersController.php
ADDED
@@ -0,0 +1,201 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
* Magento Class For 4Marketing Magento ADMIN
|
4 |
+
*/
|
5 |
+
class FourMarketing_FourDem_UsersController extends Mage_Adminhtml_Controller_Action
|
6 |
+
{
|
7 |
+
public function indexAction()
|
8 |
+
{
|
9 |
+
$this->_initAction()->renderLayout();
|
10 |
+
}
|
11 |
+
|
12 |
+
protected function _initAction()
|
13 |
+
{
|
14 |
+
$this->loadLayout()
|
15 |
+
->_setActiveMenu('fourdem/fourmarketing_fourdem_users')
|
16 |
+
->_title($this->__('Iscritti Newsletter'))->_title($this->__('4Marketing'));
|
17 |
+
|
18 |
+
return $this;
|
19 |
+
}
|
20 |
+
|
21 |
+
public function deleteAction()
|
22 |
+
{
|
23 |
+
$params = $this->getRequest()->getParams();
|
24 |
+
$idUser = $params['id'];
|
25 |
+
$user = Mage::getModel('fourmarketing_fourdem/users')->load($idUser);
|
26 |
+
|
27 |
+
preg_match_all("/\d+/", $user->getOwnList(), $matches);
|
28 |
+
$listID = $matches[0][0];
|
29 |
+
$email = $user->getData('email_address');
|
30 |
+
|
31 |
+
try
|
32 |
+
{
|
33 |
+
// Cancello l'utente da Magento e dalla tabella di riferimento..
|
34 |
+
$response = Mage::helper('fourdem')->unsubscribeSubscriber($listID, $idUser, $email);
|
35 |
+
|
36 |
+
if($response->Success)
|
37 |
+
{
|
38 |
+
$user->delete();
|
39 |
+
|
40 |
+
$message = $this->__("L'utente $email è stato cancellato con successo!");
|
41 |
+
Mage::getSingleton('core/session')->addSuccess($message);
|
42 |
+
$this->_redirectReferer();
|
43 |
+
}
|
44 |
+
else
|
45 |
+
{
|
46 |
+
throw new Exception("L'utente $email non è presente in 4Marketing. Può darsi che sia già stato cancellato.");
|
47 |
+
}
|
48 |
+
}
|
49 |
+
catch(Exception $e)
|
50 |
+
{
|
51 |
+
$message = $e->getMessage();
|
52 |
+
Mage::getSingleton('core/session')->addError($message);
|
53 |
+
$this->_redirectReferer();
|
54 |
+
}
|
55 |
+
}
|
56 |
+
|
57 |
+
public function synchronizeAction()
|
58 |
+
{
|
59 |
+
$start = microtime(true);
|
60 |
+
try
|
61 |
+
{
|
62 |
+
// Clean Magento Table..
|
63 |
+
$resource = Mage::getSingleton('core/resource');
|
64 |
+
$writeConnection = $resource->getConnection('core_write');
|
65 |
+
$writeConnection->query("TRUNCATE fourmarketing_fourdem_users");
|
66 |
+
|
67 |
+
$collection = Mage::getModel('customer/customer')->getCollection()->addAttributeToSelect('*');
|
68 |
+
$customers = $collection->getData();
|
69 |
+
|
70 |
+
//echo '<pre>'; print_r($customers); echo '</pre>'; die();
|
71 |
+
|
72 |
+
$mapFields = Mage::getStoreConfig('fourdem/fourdem_mapping');
|
73 |
+
$customFields = array();
|
74 |
+
$customFieldsUpdate = array();
|
75 |
+
|
76 |
+
$customerListID = Mage::getStoreConfig('fourdem/system_access/customer_list');
|
77 |
+
$newsletterListID = Mage::getStoreConfig('fourdem/system_access/newsletter_list');
|
78 |
+
|
79 |
+
$customerList = Mage::helper('fourdem')->getListInformation($customerListID)->List->Name;
|
80 |
+
$newsletterList = Mage::helper('fourdem')->getListInformation($newsletterListID)->List->Name;
|
81 |
+
|
82 |
+
$customerSubscribers = Mage::helper('fourdem')->getAllSubscribers($customerListID)->Subscribers;
|
83 |
+
$newsletterSubscribers = Mage::helper('fourdem')->getAllSubscribers($newsletterListID)->Subscribers;
|
84 |
+
|
85 |
+
// Prima Fase: Importo i Clienti Magento nella "Lista Clienti" Di Destinazione..
|
86 |
+
foreach($customers as $customer)
|
87 |
+
{
|
88 |
+
$modelCustomer = Mage::getModel('customer/customer')->load($customer['entity_id']);
|
89 |
+
$addressCustomerModel = Mage::getModel('customer/address')->load($modelCustomer->getDefaultBilling());
|
90 |
+
|
91 |
+
foreach($mapFields as $label => $customFieldID)
|
92 |
+
{
|
93 |
+
if(!empty($customFieldID) && $label!='billing_address')
|
94 |
+
{
|
95 |
+
$customerValueField = $modelCustomer->getData($label);
|
96 |
+
|
97 |
+
if(!empty($customerValueField))
|
98 |
+
{
|
99 |
+
$key = 'CustomField'.$customFieldID;
|
100 |
+
$customFields[$key] = '&CustomField'.$customFieldID.'='.$customerValueField;
|
101 |
+
|
102 |
+
$keyUpdate = 'Fields'.$customFieldID;
|
103 |
+
$customFieldsUpdate[$keyUpdate] = '&Fields[CustomField'.$customFieldID.']='.$customerValueField;
|
104 |
+
}
|
105 |
+
else
|
106 |
+
{
|
107 |
+
$customerValueField = $addressCustomerModel->getData($label);
|
108 |
+
$key = 'CustomField'.$customFieldID;
|
109 |
+
$customFields[$key] = '&CustomField'.$customFieldID.'='.$customerValueField;
|
110 |
+
|
111 |
+
$keyUpdate = 'Fields'.$customFieldID;
|
112 |
+
$customFieldsUpdate[$keyUpdate] = '&Fields[CustomField'.$customFieldID.']='.$customerValueField;
|
113 |
+
}
|
114 |
+
}
|
115 |
+
}
|
116 |
+
|
117 |
+
//echo '<pre>'; print_r($modelCustomer->getData()); echo '</pre>'; die();
|
118 |
+
//echo '<pre>'; print_r($mapFields); echo '</pre>'; die();
|
119 |
+
//echo '<pre>'; print_r($customFields); echo '</pre>'; die();
|
120 |
+
|
121 |
+
$listID = $customerListID;
|
122 |
+
$singleAlert = true;
|
123 |
+
$isThereSubscribers = Mage::helper('fourdem')->getAboutSubscriber($customer['email'], $listID)->Subscribers;
|
124 |
+
|
125 |
+
// Se l'utente è presente nella lista, controllo se sia cancellato oppure no..
|
126 |
+
if($isThereSubscribers)
|
127 |
+
{
|
128 |
+
$customerConsoleResponse = array_pop($isThereSubscribers);
|
129 |
+
$customerStatusOnConsole = $customerConsoleResponse->SubscriptionStatus;
|
130 |
+
|
131 |
+
//echo '<pre>'; print_r(var_dump($customerStatusOnConsole)); echo '</pre>'; die();
|
132 |
+
|
133 |
+
if($customerStatusOnConsole === 'Unsubscribed')
|
134 |
+
{
|
135 |
+
Mage::helper('fourdem')->newSubscriber($listID, $customer['email'], $_SERVER['REMOTE_ADDR'], $customFields, $singleAlert, true);
|
136 |
+
}
|
137 |
+
elseif($customerStatusOnConsole === 'Subscribed')
|
138 |
+
{
|
139 |
+
Mage::helper('fourdem')->updateSubscriber($customer['email'], $customer['email'], $listID, $customFieldsUpdate, true);
|
140 |
+
}
|
141 |
+
}
|
142 |
+
else
|
143 |
+
{
|
144 |
+
// Se l'utente non esite nella lista di destinazione lo iscrivo..
|
145 |
+
Mage::helper('fourdem')->newSubscriber($listID, $customer['email'], $_SERVER['REMOTE_ADDR'], $customFields, $singleAlert);
|
146 |
+
}
|
147 |
+
}
|
148 |
+
|
149 |
+
// Seconda Fase: Importo Le Liste Nella Tabella di Riferimento in Magento..
|
150 |
+
if(!empty($customerListID))
|
151 |
+
{
|
152 |
+
foreach($customerSubscribers as $subscriber)
|
153 |
+
{
|
154 |
+
|
155 |
+
$info = get_object_vars($subscriber);
|
156 |
+
$firstname = $info['CustomField'.$mapFields['firstname']];
|
157 |
+
$lastname = $info['CustomField'.$mapFields['lastname']];
|
158 |
+
|
159 |
+
$insertStatement = "INSERT INTO fourmarketing_fourdem_users VALUES(
|
160 |
+
".$subscriber->SubscriberID.",
|
161 |
+
'$firstname',
|
162 |
+
'$lastname',
|
163 |
+
'".$subscriber->EmailAddress."',
|
164 |
+
'ID: $customerListID / Nome: $customerList')";
|
165 |
+
$writeConnection->query($insertStatement);
|
166 |
+
}
|
167 |
+
}
|
168 |
+
else
|
169 |
+
{
|
170 |
+
// Import Newsletter Users
|
171 |
+
foreach($newsletterSubscribers as $subscriber)
|
172 |
+
{
|
173 |
+
$info = get_object_vars($subscriber);
|
174 |
+
$firstname = $info['CustomField'.$mapFields['firstname']];
|
175 |
+
$lastname = $info['CustomField'.$mapFields['lastname']];
|
176 |
+
|
177 |
+
$insertStatement = "INSERT INTO fourmarketing_fourdem_users VALUES(
|
178 |
+
".$subscriber->SubscriberID.",
|
179 |
+
'$firstname',
|
180 |
+
'$lastname',
|
181 |
+
'".$subscriber->EmailAddress."',
|
182 |
+
'ID: $newsletterListID / Nome: $newsletterList')";
|
183 |
+
$writeConnection->query($insertStatement);
|
184 |
+
}
|
185 |
+
}
|
186 |
+
|
187 |
+
$time_taken = microtime(true) - $start;
|
188 |
+
$minSeconds = date("i:s", $time_taken);
|
189 |
+
|
190 |
+
$message = $this->__("Tabella Sincronizzata Con Successo! Tempo stimato: ".$minSeconds." secondi");
|
191 |
+
Mage::getSingleton('core/session')->addSuccess($message);
|
192 |
+
|
193 |
+
$this->_redirectReferer();
|
194 |
+
}
|
195 |
+
catch(Exception $e)
|
196 |
+
{
|
197 |
+
$message = $this->__($e->getMessage());
|
198 |
+
Mage::getSingleton('core/session')->addError($message);
|
199 |
+
}
|
200 |
+
}
|
201 |
+
}
|
app/code/community/FourMarketing/FourDem/etc/adminhtml.xml
ADDED
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<menu>
|
4 |
+
<fourdem translate="title" module="fourdem">
|
5 |
+
<title>4Dem.it</title>
|
6 |
+
<sort_order>65</sort_order>
|
7 |
+
<children>
|
8 |
+
<iscritti>
|
9 |
+
<title>Sincronizzazione Clienti</title>
|
10 |
+
<sort_order>1</sort_order>
|
11 |
+
<action>adminhtml/users</action>
|
12 |
+
</iscritti>
|
13 |
+
</children>
|
14 |
+
<!--
|
15 |
+
<children>
|
16 |
+
<utenti>
|
17 |
+
<title>Gestione Utenti</title>
|
18 |
+
<sort_order>2</sort_order>
|
19 |
+
<action>adminhtml/iscritti/getutenti</action>
|
20 |
+
</utenti>
|
21 |
+
</children>
|
22 |
+
-->
|
23 |
+
</fourdem>
|
24 |
+
</menu>
|
25 |
+
<acl>
|
26 |
+
<resources>
|
27 |
+
<admin>
|
28 |
+
<children>
|
29 |
+
<system>
|
30 |
+
<children>
|
31 |
+
<config>
|
32 |
+
<children>
|
33 |
+
<fourdem>
|
34 |
+
<title>4Dem.it - Email Marketing</title>
|
35 |
+
</fourdem>
|
36 |
+
</children>
|
37 |
+
</config>
|
38 |
+
</children>
|
39 |
+
</system>
|
40 |
+
</children>
|
41 |
+
</admin>
|
42 |
+
</resources>
|
43 |
+
</acl>
|
44 |
+
</config>
|
app/code/community/FourMarketing/FourDem/etc/config.xml
ADDED
@@ -0,0 +1,142 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<FourMarketing_FourDem>
|
5 |
+
<version>0.1.0</version>
|
6 |
+
</FourMarketing_FourDem>
|
7 |
+
</modules>
|
8 |
+
<global>
|
9 |
+
<blocks>
|
10 |
+
<fourmarketing_fourdem>
|
11 |
+
<class>FourMarketing_FourDem_Block</class>
|
12 |
+
</fourmarketing_fourdem>
|
13 |
+
</blocks>
|
14 |
+
<helpers>
|
15 |
+
<fourdem>
|
16 |
+
<class>FourMarketing_FourDem_Helper</class>
|
17 |
+
</fourdem>
|
18 |
+
</helpers>
|
19 |
+
|
20 |
+
<models>
|
21 |
+
<fourmarketing_fourdem>
|
22 |
+
<class>FourMarketing_FourDem_Model</class>
|
23 |
+
<resourceModel>fourmarketing_fourdem_mysql4</resourceModel>
|
24 |
+
</fourmarketing_fourdem>
|
25 |
+
|
26 |
+
<fourmarketing_fourdem_mysql4>
|
27 |
+
<class>FourMarketing_FourDem_Model_Mysql4</class>
|
28 |
+
<entities>
|
29 |
+
<users>
|
30 |
+
<table>fourmarketing_fourdem_users</table>
|
31 |
+
</users>
|
32 |
+
</entities>
|
33 |
+
</fourmarketing_fourdem_mysql4>
|
34 |
+
</models>
|
35 |
+
|
36 |
+
<resources>
|
37 |
+
<fourmarketing_fourdem_setup>
|
38 |
+
<setup>
|
39 |
+
<module>FourMarketing_FourDem</module>
|
40 |
+
</setup>
|
41 |
+
<connection>
|
42 |
+
<use>core_setup</use>
|
43 |
+
</connection>
|
44 |
+
</fourmarketing_fourdem_setup>
|
45 |
+
<fourmarketing_fourdem_write>
|
46 |
+
<connection>
|
47 |
+
<use>core_write</use>
|
48 |
+
</connection>
|
49 |
+
</fourmarketing_fourdem_write>
|
50 |
+
<fourmarketing_fourdem_read>
|
51 |
+
<connection>
|
52 |
+
<use>core_read</use>
|
53 |
+
</connection>
|
54 |
+
</fourmarketing_fourdem_read>
|
55 |
+
</resources>
|
56 |
+
<events>
|
57 |
+
<admin_system_config_changed_section_fourdem>
|
58 |
+
<observers>
|
59 |
+
<fourdem>
|
60 |
+
<type>singleton</type>
|
61 |
+
<class>FourMarketing_FourDem_Model_Observer</class>
|
62 |
+
<method>check4DemConfiguration</method>
|
63 |
+
</fourdem>
|
64 |
+
</observers>
|
65 |
+
</admin_system_config_changed_section_fourdem>
|
66 |
+
<customer_register_success>
|
67 |
+
<observers>
|
68 |
+
<fourdem>
|
69 |
+
<type>singleton</type>
|
70 |
+
<class>FourMarketing_FourDem_Model_Observer</class>
|
71 |
+
<method>subscribeCustomer</method>
|
72 |
+
</fourdem>
|
73 |
+
</observers>
|
74 |
+
</customer_register_success>
|
75 |
+
<customer_save_after>
|
76 |
+
<observers>
|
77 |
+
<fourdem>
|
78 |
+
<type>singleton</type>
|
79 |
+
<class>FourMarketing_FourDem_Model_Observer</class>
|
80 |
+
<method>changeSubscribeEmail</method>
|
81 |
+
</fourdem>
|
82 |
+
</observers>
|
83 |
+
</customer_save_after>
|
84 |
+
<customer_address_save_after>
|
85 |
+
<observers>
|
86 |
+
<fourdem>
|
87 |
+
<type>singleton</type>
|
88 |
+
<class>FourMarketing_FourDem_Model_Observer</class>
|
89 |
+
<method>collectionDataMapping</method>
|
90 |
+
</fourdem>
|
91 |
+
</observers>
|
92 |
+
</customer_address_save_after>
|
93 |
+
<checkout_submit_all_after>
|
94 |
+
<observers>
|
95 |
+
<fourdem>
|
96 |
+
<type>singleton</type>
|
97 |
+
<class>FourMarketing_FourDem_Model_Observer</class>
|
98 |
+
<method>subscribeCustomerAfterCheckout</method>
|
99 |
+
</fourdem>
|
100 |
+
</observers>
|
101 |
+
</checkout_submit_all_after>
|
102 |
+
</events>
|
103 |
+
</global>
|
104 |
+
<admin>
|
105 |
+
<routers>
|
106 |
+
<adminhtml>
|
107 |
+
<args>
|
108 |
+
<modules>
|
109 |
+
<FourMarketing_FourDem before="Mage_Adminhtml">FourMarketing_FourDem</FourMarketing_FourDem>
|
110 |
+
</modules>
|
111 |
+
</args>
|
112 |
+
</adminhtml>
|
113 |
+
</routers>
|
114 |
+
</admin>
|
115 |
+
<adminhtml>
|
116 |
+
<layout>
|
117 |
+
<updates>
|
118 |
+
<fourmarketing_fourdem>
|
119 |
+
<file>fourmarketing/fourdem.xml</file>
|
120 |
+
</fourmarketing_fourdem>
|
121 |
+
</updates>
|
122 |
+
</layout>
|
123 |
+
</adminhtml>
|
124 |
+
<frontend>
|
125 |
+
<routers>
|
126 |
+
<fourdem>
|
127 |
+
<use>standard</use>
|
128 |
+
<args>
|
129 |
+
<module>FourMarketing_FourDem</module>
|
130 |
+
<frontName>fourdem</frontName>
|
131 |
+
</args>
|
132 |
+
</fourdem>
|
133 |
+
</routers>
|
134 |
+
<layout>
|
135 |
+
<updates>
|
136 |
+
<fourdem>
|
137 |
+
<file>fourdem.xml</file>
|
138 |
+
</fourdem>
|
139 |
+
</updates>
|
140 |
+
</layout>
|
141 |
+
</frontend>
|
142 |
+
</config>
|
app/code/community/FourMarketing/FourDem/etc/system.xml
ADDED
@@ -0,0 +1,260 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<tabs>
|
4 |
+
<fourdem translate="label" module="fourdem">
|
5 |
+
<label><![CDATA[4Dem.it]]></label>
|
6 |
+
<sort_order>400</sort_order>
|
7 |
+
</fourdem>
|
8 |
+
</tabs>
|
9 |
+
<sections>
|
10 |
+
<fourdem translate="label" module="fourdem">
|
11 |
+
<label><![CDATA[Configurazione 4Dem.it]]></label>
|
12 |
+
<tab>fourdem</tab>
|
13 |
+
<sort_order>1000</sort_order>
|
14 |
+
<show_in_default>1</show_in_default>
|
15 |
+
<show_in_website>1</show_in_website>
|
16 |
+
<show_in_store>1</show_in_store>
|
17 |
+
<groups>
|
18 |
+
<system_access translate="label" module="fourdem">
|
19 |
+
<label>Configurazione 4Dem.it Email Marketing</label>
|
20 |
+
<frontend_type>text</frontend_type>
|
21 |
+
<sort_order>1000</sort_order>
|
22 |
+
<show_in_default>1</show_in_default>
|
23 |
+
<show_in_website>1</show_in_website>
|
24 |
+
<show_in_store>1</show_in_store>
|
25 |
+
<comment><![CDATA[
|
26 |
+
<div style="float:right;width:560px;">
|
27 |
+
<p>Attivando il modulo 4Dem.it potrai sincronizzare i tuoi clienti e prospect con la nostra piattaforma di email marketing.
|
28 |
+
Inserisci lo username e password che utilizzi per accedere alla console.</p>
|
29 |
+
<p style="margin-top:95px;">
|
30 |
+
Puoi scegliere se separare gli utenti registrati e chi si è solo iscritto alla newsletter in due liste separate, oppure inserirli tutti nella stessa lista.
|
31 |
+
Se decidi di separarli verrà attivato nel frontend di magento un widget di iscrizione alla newsletter che avrà valenza a se stante, quindi si potrà essere iscritti alla newsletter senza essere registrati a magento. In caso contrario solamente gli utenti registrati a magento verranno sincronizzati con la console 4Dem.it.
|
32 |
+
Ricorda che sulla console 4Dem.it puoi selezionare più di una lista per ogni campagna, la deduplica degli indirizzi è automatica!
|
33 |
+
</p>
|
34 |
+
<p style="margin-top:203px;">
|
35 |
+
Seleziona la lista di destinazione dall'elenco delle liste presenti sul tuo account 4Dem.it.
|
36 |
+
Se hai deciso di separare i clienti e gli iscritti alla newsletter ricordati che per la lista dedicata alla newsletter dovrai impostare il metodo di
|
37 |
+
conferma Double Opt-in ed impostare la mail di conferma iscrizione sulla console 4Dem.it in modo che l'iscrizione alla newsletter rispetti i termini di legge e netiquette.
|
38 |
+
</p>
|
39 |
+
</div>
|
40 |
+
]]></comment>
|
41 |
+
<fields>
|
42 |
+
<active translate="label">
|
43 |
+
<label>Attivare il Modulo 4Dem.it?</label>
|
44 |
+
<frontend_type>select</frontend_type>
|
45 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
46 |
+
<sort_order>10</sort_order>
|
47 |
+
<show_in_default>1</show_in_default>
|
48 |
+
<show_in_website>1</show_in_website>
|
49 |
+
<show_in_store>1</show_in_store>
|
50 |
+
</active>
|
51 |
+
<username translate="label comment">
|
52 |
+
<label>Username</label>
|
53 |
+
<comment><![CDATA[Inserire la username fornita da 4Dem.it.]]></comment>
|
54 |
+
<frontend_type>text</frontend_type>
|
55 |
+
<sort_order>20</sort_order>
|
56 |
+
<show_in_default>1</show_in_default>
|
57 |
+
<show_in_website>1</show_in_website>
|
58 |
+
<show_in_store>1</show_in_store>
|
59 |
+
</username>
|
60 |
+
<password translate="label comment">
|
61 |
+
<label>Password</label>
|
62 |
+
<comment><![CDATA[Inserire la password fornita da 4Dem.it.]]></comment>
|
63 |
+
<frontend_type>password</frontend_type>
|
64 |
+
<sort_order>30</sort_order>
|
65 |
+
<show_in_default>1</show_in_default>
|
66 |
+
<show_in_website>1</show_in_website>
|
67 |
+
<show_in_store>1</show_in_store>
|
68 |
+
</password>
|
69 |
+
<url_console translate="label comment">
|
70 |
+
<label>Console URL</label>
|
71 |
+
<comment><![CDATA[Inserire l'indirizzo della console. Esempio: http://www.4dem.it/api.php]]></comment>
|
72 |
+
<frontend_type>text</frontend_type>
|
73 |
+
<sort_order>40</sort_order>
|
74 |
+
<show_in_default>1</show_in_default>
|
75 |
+
<show_in_website>1</show_in_website>
|
76 |
+
<show_in_store>1</show_in_store>
|
77 |
+
</url_console>
|
78 |
+
<select_list translate="label">
|
79 |
+
<label>Vuoi che gli iscritti alla newsletter e i clienti siano su 2 liste separate?</label>
|
80 |
+
<frontend_type>select</frontend_type>
|
81 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
82 |
+
<sort_order>50</sort_order>
|
83 |
+
<show_in_default>1</show_in_default>
|
84 |
+
<show_in_website>1</show_in_website>
|
85 |
+
<show_in_store>1</show_in_store>
|
86 |
+
</select_list>
|
87 |
+
<customer_list translate="label comment">
|
88 |
+
<label>Lista Clienti</label>
|
89 |
+
<comment><![CDATA[Lista dei Clienti che hanno effettuato almeno un acquisto.]]></comment>
|
90 |
+
<frontend_type>multiselect</frontend_type>
|
91 |
+
<source_model>fourmarketing_fourdem/system_config_source_list</source_model>
|
92 |
+
<sort_order>60</sort_order>
|
93 |
+
<show_in_default>1</show_in_default>
|
94 |
+
<show_in_website>0</show_in_website>
|
95 |
+
<show_in_store>1</show_in_store>
|
96 |
+
<!--<can_be_empty>1</can_be_empty>-->
|
97 |
+
</customer_list>
|
98 |
+
<newsletter_list translate="label comment">
|
99 |
+
<label>Iscritti alla Newsletter</label>
|
100 |
+
<comment><![CDATA[Lista degli iscritti alla newsletter.]]></comment>
|
101 |
+
<frontend_type>multiselect</frontend_type>
|
102 |
+
<source_model>fourmarketing_fourdem/system_config_source_list</source_model>
|
103 |
+
<sort_order>70</sort_order>
|
104 |
+
<show_in_default>1</show_in_default>
|
105 |
+
<show_in_website>0</show_in_website>
|
106 |
+
<show_in_store>1</show_in_store>
|
107 |
+
<can_be_empty>1</can_be_empty>
|
108 |
+
<depends>
|
109 |
+
<select_list>1</select_list>
|
110 |
+
</depends>
|
111 |
+
</newsletter_list>
|
112 |
+
</fields>
|
113 |
+
</system_access>
|
114 |
+
<fourdem_mapping translate="label">
|
115 |
+
<label>4Dem.it Mappatura Campi</label>
|
116 |
+
<frontend_type>text</frontend_type>
|
117 |
+
<sort_order>2000</sort_order>
|
118 |
+
<show_in_default>1</show_in_default>
|
119 |
+
<show_in_website>1</show_in_website>
|
120 |
+
<show_in_store>1</show_in_store>
|
121 |
+
<comment><![CDATA[<p style="font-size:13px;"><strong style="margin-right:150px;">Magento</strong><strong>Console 4Dem.it</strong></p>
|
122 |
+
<div style="float:right;width:573px;">
|
123 |
+
In questo pannello puoi decidere di importare ulteriori informazioni sui tuoi clienti oltre all'indirizzo email.
|
124 |
+
Per sincronizzare i dati aggiuntivi entra nel tuo account sulla console 4Dem.it, seleziona la lista dedicata agli utenti registrati in magento e crea i campi personalizzati di cui hai bisogno. Per ogni dato che vuoi sincronizzare devi creare un campo personalizzato.
|
125 |
+
Quando crei il campo personalizzato imposta solamente il nome del campo e lascia tutti gli altri valori come proposti.
|
126 |
+
Una volta che i campi saranno disponibili potrai effettuare il mapping utilizzano questo menù dove potrai selezionare per ogni dato disponibile su magento, il campo personalizzato della console 4Dem.it in cui importarlo.
|
127 |
+
La mappatura campi non è obbligatoria, ma puà risultare molto utilie in quanto ti permetterà di personalizzare le email inserendo automaticamente i dati del destinatario, ad esempio Nome e Cognome
|
128 |
+
</div>]]></comment>
|
129 |
+
<fields>
|
130 |
+
<firstname translate="comment">
|
131 |
+
<label>Nome</label>
|
132 |
+
<frontend_type>select</frontend_type>
|
133 |
+
<sort_order>1</sort_order>
|
134 |
+
<show_in_default>1</show_in_default>
|
135 |
+
<show_in_website>1</show_in_website>
|
136 |
+
<show_in_store>1</show_in_store>
|
137 |
+
<source_model>fourmarketing_fourdem/adminhtml_system_source_fields</source_model>
|
138 |
+
</firstname>
|
139 |
+
<lastname translate="comment">
|
140 |
+
<label>Cognome</label>
|
141 |
+
<frontend_type>select</frontend_type>
|
142 |
+
<sort_order>2</sort_order>
|
143 |
+
<show_in_default>1</show_in_default>
|
144 |
+
<show_in_website>1</show_in_website>
|
145 |
+
<show_in_store>1</show_in_store>
|
146 |
+
<source_model>fourmarketing_fourdem/adminhtml_system_source_fields</source_model>
|
147 |
+
</lastname>
|
148 |
+
<gender translate="comment">
|
149 |
+
<label>Genere</label>
|
150 |
+
<frontend_type>select</frontend_type>
|
151 |
+
<sort_order>3</sort_order>
|
152 |
+
<show_in_default>1</show_in_default>
|
153 |
+
<show_in_website>1</show_in_website>
|
154 |
+
<show_in_store>1</show_in_store>
|
155 |
+
<source_model>fourmarketing_fourdem/adminhtml_system_source_fields</source_model>
|
156 |
+
</gender>
|
157 |
+
<company translate="comment">
|
158 |
+
<label>Nome Azienda</label>
|
159 |
+
<frontend_type>select</frontend_type>
|
160 |
+
<sort_order>4</sort_order>
|
161 |
+
<show_in_default>1</show_in_default>
|
162 |
+
<show_in_website>1</show_in_website>
|
163 |
+
<show_in_store>1</show_in_store>
|
164 |
+
<source_model>fourmarketing_fourdem/adminhtml_system_source_fields</source_model>
|
165 |
+
</company>
|
166 |
+
<street translate="comment">
|
167 |
+
<label>Indirizzo</label>
|
168 |
+
<frontend_type>select</frontend_type>
|
169 |
+
<sort_order>5</sort_order>
|
170 |
+
<show_in_default>1</show_in_default>
|
171 |
+
<show_in_website>1</show_in_website>
|
172 |
+
<show_in_store>1</show_in_store>
|
173 |
+
<source_model>fourmarketing_fourdem/adminhtml_system_source_fields</source_model>
|
174 |
+
</street>
|
175 |
+
<city translate="comment">
|
176 |
+
<label>Città</label>
|
177 |
+
<frontend_type>select</frontend_type>
|
178 |
+
<sort_order>6</sort_order>
|
179 |
+
<show_in_default>1</show_in_default>
|
180 |
+
<show_in_website>1</show_in_website>
|
181 |
+
<show_in_store>1</show_in_store>
|
182 |
+
<source_model>fourmarketing_fourdem/adminhtml_system_source_fields</source_model>
|
183 |
+
</city>
|
184 |
+
<postcode translate="comment">
|
185 |
+
<label>CAP</label>
|
186 |
+
<frontend_type>select</frontend_type>
|
187 |
+
<sort_order>7</sort_order>
|
188 |
+
<show_in_default>1</show_in_default>
|
189 |
+
<show_in_website>1</show_in_website>
|
190 |
+
<show_in_store>1</show_in_store>
|
191 |
+
<source_model>fourmarketing_fourdem/adminhtml_system_source_fields</source_model>
|
192 |
+
</postcode>
|
193 |
+
<province translate="comment">
|
194 |
+
<label>Provincia</label>
|
195 |
+
<frontend_type>select</frontend_type>
|
196 |
+
<sort_order>8</sort_order>
|
197 |
+
<show_in_default>1</show_in_default>
|
198 |
+
<show_in_website>1</show_in_website>
|
199 |
+
<show_in_store>1</show_in_store>
|
200 |
+
<source_model>fourmarketing_fourdem/adminhtml_system_source_fields</source_model>
|
201 |
+
</province>
|
202 |
+
<region translate="comment">
|
203 |
+
<label>Regione</label>
|
204 |
+
<frontend_type>select</frontend_type>
|
205 |
+
<sort_order>9</sort_order>
|
206 |
+
<show_in_default>1</show_in_default>
|
207 |
+
<show_in_website>1</show_in_website>
|
208 |
+
<show_in_store>1</show_in_store>
|
209 |
+
<source_model>fourmarketing_fourdem/adminhtml_system_source_fields</source_model>
|
210 |
+
</region>
|
211 |
+
<country_id translate="comment">
|
212 |
+
<label>Nazione</label>
|
213 |
+
<frontend_type>select</frontend_type>
|
214 |
+
<sort_order>10</sort_order>
|
215 |
+
<show_in_default>1</show_in_default>
|
216 |
+
<show_in_website>1</show_in_website>
|
217 |
+
<show_in_store>1</show_in_store>
|
218 |
+
<source_model>fourmarketing_fourdem/adminhtml_system_source_fields</source_model>
|
219 |
+
</country_id>
|
220 |
+
<created_at translate="comment">
|
221 |
+
<label>Ultimo acquisto</label>
|
222 |
+
<frontend_type>select</frontend_type>
|
223 |
+
<sort_order>11</sort_order>
|
224 |
+
<show_in_default>1</show_in_default>
|
225 |
+
<show_in_website>1</show_in_website>
|
226 |
+
<show_in_store>1</show_in_store>
|
227 |
+
<source_model>fourmarketing_fourdem/adminhtml_system_source_fields</source_model>
|
228 |
+
</created_at>
|
229 |
+
</fields>
|
230 |
+
</fourdem_mapping>
|
231 |
+
<box_newsletter translate="label">
|
232 |
+
<label>Frontend Box Newsletter</label>
|
233 |
+
<frontend_type>text</frontend_type>
|
234 |
+
<sort_order>3000</sort_order>
|
235 |
+
<show_in_default>1</show_in_default>
|
236 |
+
<show_in_website>1</show_in_website>
|
237 |
+
<show_in_store>1</show_in_store>
|
238 |
+
<fields>
|
239 |
+
<title_box translate="label comment">
|
240 |
+
<label>Titolo Box Newsletter</label>
|
241 |
+
<frontend_type>text</frontend_type>
|
242 |
+
<sort_order>10</sort_order>
|
243 |
+
<show_in_default>1</show_in_default>
|
244 |
+
<show_in_website>1</show_in_website>
|
245 |
+
<show_in_store>1</show_in_store>
|
246 |
+
</title_box>
|
247 |
+
<text_box translate="label comment">
|
248 |
+
<label>Testo Box Newsletter</label>
|
249 |
+
<frontend_type>text</frontend_type>
|
250 |
+
<sort_order>20</sort_order>
|
251 |
+
<show_in_default>1</show_in_default>
|
252 |
+
<show_in_website>1</show_in_website>
|
253 |
+
<show_in_store>1</show_in_store>
|
254 |
+
</text_box>
|
255 |
+
</fields>
|
256 |
+
</box_newsletter>
|
257 |
+
</groups>
|
258 |
+
</fourdem>
|
259 |
+
</sections>
|
260 |
+
</config>
|
app/code/community/FourMarketing/FourDem/sql/fourmarketing_fourdem_setup/mysql4-install-0.1.0.php
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/* @var $installer Mage_Core_Model_Resource_Setup */
|
3 |
+
$installer = $this;
|
4 |
+
$installer->startSetup();
|
5 |
+
|
6 |
+
$installer->run("
|
7 |
+
CREATE TABLE fourmarketing_fourdem_users(
|
8 |
+
id_fourdem int(11) NOT NULL,
|
9 |
+
firstname text NOT NULL,
|
10 |
+
lastname text NOT NULL,
|
11 |
+
email_address text NOT NULL,
|
12 |
+
own_list text NOT NULL
|
13 |
+
)
|
14 |
+
ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
15 |
+
");
|
16 |
+
|
17 |
+
$installer->endSetup();
|
app/design/frontend/default/default/layout/fourdem.xml
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<layout version="0.1.0">
|
3 |
+
<default>
|
4 |
+
<remove name="left.newsletter"/>
|
5 |
+
<reference name="right">
|
6 |
+
<block type="core/template" name="right.subscribe" template="fourdem/subscribe.phtml" before="-"/>
|
7 |
+
</reference>
|
8 |
+
</default>
|
9 |
+
<customer_account_create>
|
10 |
+
<reference name="customer_form_register">
|
11 |
+
<action method="setTemplate">
|
12 |
+
<template>fourdem/form/register-customer.phtml</template>
|
13 |
+
</action>
|
14 |
+
</reference>
|
15 |
+
</customer_account_create>
|
16 |
+
</layout>
|
app/design/frontend/default/default/template/fourdem/form/register-customer.phtml
ADDED
@@ -0,0 +1,190 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Academic Free License (AFL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE_AFL.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/afl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category design
|
22 |
+
* @package base_default
|
23 |
+
* @copyright Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
25 |
+
*/
|
26 |
+
?>
|
27 |
+
<?php
|
28 |
+
/**
|
29 |
+
* Create account form template
|
30 |
+
*
|
31 |
+
* @var $this Mage_Customer_Block_Form_Register
|
32 |
+
*/
|
33 |
+
?>
|
34 |
+
<div class="account-create">
|
35 |
+
<div class="page-title">
|
36 |
+
<h1><?php echo $this->__('Create an Account') ?></h1>
|
37 |
+
</div>
|
38 |
+
<?php echo $this->getChildHtml('form_fields_before')?>
|
39 |
+
<?php echo $this->getMessagesBlock()->getGroupedHtml() ?>
|
40 |
+
<?php /* Extensions placeholder */ ?>
|
41 |
+
<?php echo $this->getChildHtml('customer.form.register.extra')?>
|
42 |
+
<form action="<?php echo $this->getPostActionUrl() ?>" method="post" id="form-validate">
|
43 |
+
<div class="fieldset">
|
44 |
+
<input type="hidden" name="success_url" value="<?php echo $this->getSuccessUrl() ?>" />
|
45 |
+
<input type="hidden" name="error_url" value="<?php echo $this->getErrorUrl() ?>" />
|
46 |
+
<h2 class="legend"><?php echo $this->__('Personal Information') ?></h2>
|
47 |
+
<ul class="form-list">
|
48 |
+
<li class="fields">
|
49 |
+
<?php echo $this->getLayout()->createBlock('customer/widget_name')->setObject($this->getFormData())->setForceUseCustomerAttributes(true)->toHtml() ?>
|
50 |
+
</li>
|
51 |
+
<li>
|
52 |
+
<label for="email_address" class="required"><em>*</em><?php echo $this->__('Email Address') ?></label>
|
53 |
+
<div class="input-box">
|
54 |
+
<input type="text" name="email" id="email_address" value="<?php echo $this->escapeHtml($this->getFormData()->getEmail()) ?>" title="<?php echo $this->__('Email Address') ?>" class="input-text validate-email required-entry" />
|
55 |
+
</div>
|
56 |
+
</li>
|
57 |
+
<?php //if ($this->isNewsletterEnabled()): ?>
|
58 |
+
<li class="control" style="visibility:hidden;">
|
59 |
+
<div class="input-box">
|
60 |
+
<input type="checkbox" name="is_subscribed" title="<?php echo $this->__('Sign Up for Newsletter') ?>" value="1" id="is_subscribed" checked="checked" class="checkbox"/>
|
61 |
+
</div>
|
62 |
+
<label for="is_subscribed"><?php echo $this->__('Sign Up for Newsletter') ?></label>
|
63 |
+
<?php /* Extensions placeholder */ ?>
|
64 |
+
<?php echo $this->getChildHtml('customer.form.register.newsletter')?>
|
65 |
+
</li>
|
66 |
+
<?php //endif; ?>
|
67 |
+
<?php $_dob = $this->getLayout()->createBlock('customer/widget_dob') ?>
|
68 |
+
<?php if ($_dob->isEnabled()): ?>
|
69 |
+
<li><?php echo $_dob->setDate($this->getFormData()->getDob())->toHtml() ?></li>
|
70 |
+
<?php endif ?>
|
71 |
+
<?php $_taxvat = $this->getLayout()->createBlock('customer/widget_taxvat') ?>
|
72 |
+
<?php if ($_taxvat->isEnabled()): ?>
|
73 |
+
<li><?php echo $_taxvat->setTaxvat($this->getFormData()->getTaxvat())->toHtml() ?></li>
|
74 |
+
<?php endif ?>
|
75 |
+
<?php $_gender = $this->getLayout()->createBlock('customer/widget_gender') ?>
|
76 |
+
<?php if ($_gender->isEnabled()): ?>
|
77 |
+
<li><?php echo $_gender->setGender($this->getFormData()->getGender())->toHtml() ?></li>
|
78 |
+
<?php endif ?>
|
79 |
+
</ul>
|
80 |
+
</div>
|
81 |
+
<?php if($this->getShowAddressFields()): ?>
|
82 |
+
<div class="fieldset">
|
83 |
+
<input type="hidden" name="create_address" value="1" />
|
84 |
+
<h2 class="legend"><?php echo $this->__('Address Information') ?></h2>
|
85 |
+
<ul class="form-list">
|
86 |
+
<li class="fields">
|
87 |
+
<div class="field">
|
88 |
+
<label for="company"><?php echo $this->__('Company') ?></label>
|
89 |
+
<div class="input-box">
|
90 |
+
<input type="text" name="company" id="company" value="<?php echo $this->escapeHtml($this->getFormData()->getCompany()) ?>" title="<?php echo $this->__('Company') ?>" class="input-text <?php echo $this->helper('customer/address')->getAttributeValidationClass('company') ?>" />
|
91 |
+
</div>
|
92 |
+
</div>
|
93 |
+
<div class="field">
|
94 |
+
<label for="telephone" class="required"><em>*</em><?php echo $this->__('Telephone') ?></label>
|
95 |
+
<div class="input-box">
|
96 |
+
<input type="text" name="telephone" id="telephone" value="<?php echo $this->escapeHtml($this->getFormData()->getTelephone()) ?>" title="<?php echo $this->__('Telephone') ?>" class="input-text <?php echo $this->helper('customer/address')->getAttributeValidationClass('telephone') ?>" />
|
97 |
+
</div>
|
98 |
+
</div>
|
99 |
+
</li>
|
100 |
+
<?php $_streetValidationClass = $this->helper('customer/address')->getAttributeValidationClass('street'); ?>
|
101 |
+
<li class="wide">
|
102 |
+
<label for="street_1" class="required"><em>*</em><?php echo $this->__('Street Address') ?></label>
|
103 |
+
<div class="input-box">
|
104 |
+
<input type="text" name="street[]" value="<?php echo $this->escapeHtml($this->getFormData()->getStreet(1)) ?>" title="<?php echo $this->__('Street Address') ?>" id="street_1" class="input-text <?php echo $_streetValidationClass ?>" />
|
105 |
+
</div>
|
106 |
+
</li>
|
107 |
+
<?php $_streetValidationClass = trim(str_replace('required-entry', '', $_streetValidationClass)); ?>
|
108 |
+
<?php for ($_i = 2, $_n = $this->helper('customer/address')->getStreetLines(); $_i <= $_n; $_i++): ?>
|
109 |
+
<li class="wide">
|
110 |
+
<div class="input-box">
|
111 |
+
<input type="text" name="street[]" value="<?php echo $this->escapeHtml($this->getFormData()->getStreet($_i)) ?>" title="<?php echo $this->__('Street Address %s', $_i) ?>" id="street_<?php echo $_i ?>" class="input-text <?php echo $_streetValidationClass ?>" />
|
112 |
+
</div>
|
113 |
+
</li>
|
114 |
+
<?php endfor; ?>
|
115 |
+
<li class="fields">
|
116 |
+
<div class="field">
|
117 |
+
<label for="city" class="required"><em>*</em><?php echo $this->__('City') ?></label>
|
118 |
+
<div class="input-box">
|
119 |
+
<input type="text" name="city" value="<?php echo $this->escapeHtml($this->getFormData()->getCity()) ?>" title="<?php echo $this->__('City') ?>" class="input-text <?php echo $this->helper('customer/address')->getAttributeValidationClass('city') ?>" id="city" />
|
120 |
+
</div>
|
121 |
+
</div>
|
122 |
+
<div class="field">
|
123 |
+
<label for="region_id" class="required"><em>*</em><?php echo $this->__('State/Province') ?></label>
|
124 |
+
<div class="input-box">
|
125 |
+
<select id="region_id" name="region_id" title="<?php echo $this->__('State/Province') ?>" class="validate-select" style="display:none;">
|
126 |
+
<option value=""><?php echo $this->__('Please select region, state or province') ?></option>
|
127 |
+
</select>
|
128 |
+
<script type="text/javascript">
|
129 |
+
//<![CDATA[
|
130 |
+
$('region_id').setAttribute('defaultValue', "<?php echo $this->getFormData()->getRegionId() ?>");
|
131 |
+
//]]>
|
132 |
+
</script>
|
133 |
+
<input type="text" id="region" name="region" value="<?php echo $this->escapeHtml($this->getRegion()) ?>" title="<?php echo $this->__('State/Province') ?>" class="input-text <?php echo $this->helper('customer/address')->getAttributeValidationClass('region') ?>" style="display:none;" />
|
134 |
+
</div>
|
135 |
+
</div>
|
136 |
+
</li>
|
137 |
+
<li class="fields">
|
138 |
+
<div class="field">
|
139 |
+
<label for="zip" class="required"><em>*</em><?php echo $this->__('Zip/Postal Code') ?></label>
|
140 |
+
<div class="input-box">
|
141 |
+
<input type="text" name="postcode" value="<?php echo $this->escapeHtml($this->getFormData()->getPostcode()) ?>" title="<?php echo $this->__('Zip/Postal Code') ?>" id="zip" class="input-text validate-zip-international <?php echo $this->helper('customer/address')->getAttributeValidationClass('postcode') ?>" />
|
142 |
+
</div>
|
143 |
+
</div>
|
144 |
+
<div class="field">
|
145 |
+
<label for="country" class="required"><em>*</em><?php echo $this->__('Country') ?></label>
|
146 |
+
<div class="input-box">
|
147 |
+
<?php echo $this->getCountryHtmlSelect() ?>
|
148 |
+
</div>
|
149 |
+
</div>
|
150 |
+
</li>
|
151 |
+
</ul>
|
152 |
+
<input type="hidden" name="default_billing" value="1" />
|
153 |
+
<input type="hidden" name="default_shipping" value="1" />
|
154 |
+
</div>
|
155 |
+
<?php endif; ?>
|
156 |
+
<div class="fieldset">
|
157 |
+
<h2 class="legend"><?php echo $this->__('Login Information') ?></h2>
|
158 |
+
<ul class="form-list">
|
159 |
+
<li class="fields">
|
160 |
+
<div class="field">
|
161 |
+
<label for="password" class="required"><em>*</em><?php echo $this->__('Password') ?></label>
|
162 |
+
<div class="input-box">
|
163 |
+
<input type="password" name="password" id="password" title="<?php echo $this->__('Password') ?>" class="input-text required-entry validate-password" />
|
164 |
+
</div>
|
165 |
+
</div>
|
166 |
+
<div class="field">
|
167 |
+
<label for="confirmation" class="required"><em>*</em><?php echo $this->__('Confirm Password') ?></label>
|
168 |
+
<div class="input-box">
|
169 |
+
<input type="password" name="confirmation" title="<?php echo $this->__('Confirm Password') ?>" id="confirmation" class="input-text required-entry validate-cpassword" />
|
170 |
+
</div>
|
171 |
+
</div>
|
172 |
+
</li>
|
173 |
+
<?php echo $this->getChildHtml('form.additional.info'); ?>
|
174 |
+
</ul>
|
175 |
+
</div>
|
176 |
+
<div class="buttons-set">
|
177 |
+
<p class="required"><?php echo $this->__('* Required Fields') ?></p>
|
178 |
+
<p class="back-link"><a href="<?php echo $this->escapeUrl($this->getBackUrl()) ?>" class="back-link"><small>« </small><?php echo $this->__('Back') ?></a></p>
|
179 |
+
<button type="submit" title="<?php echo $this->__('Submit') ?>" class="button"><span><span><?php echo $this->__('Submit') ?></span></span></button>
|
180 |
+
</div>
|
181 |
+
</form>
|
182 |
+
<script type="text/javascript">
|
183 |
+
//<![CDATA[
|
184 |
+
var dataForm = new VarienForm('form-validate', true);
|
185 |
+
<?php if($this->getShowAddressFields()): ?>
|
186 |
+
new RegionUpdater('country', 'region', 'region_id', <?php echo $this->helper('directory')->getRegionJson() ?>, undefined, 'zip');
|
187 |
+
<?php endif; ?>
|
188 |
+
//]]>
|
189 |
+
</script>
|
190 |
+
</div>
|
app/etc/modules/FourMarketing_FourDem.xml
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<FourMarketing_FourDem>
|
5 |
+
<active>true</active>
|
6 |
+
<codePool>community</codePool>
|
7 |
+
</FourMarketing_FourDem>
|
8 |
+
</modules>
|
9 |
+
</config>
|
package.xml
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<package>
|
3 |
+
<name>4Dem_Integration_community</name>
|
4 |
+
<version>1.0.0</version>
|
5 |
+
<stability>stable</stability>
|
6 |
+
<license uri="http://www.4dem.it/disclaimer">Open Software License (OSL)</license>
|
7 |
+
<channel>community</channel>
|
8 |
+
<extends/>
|
9 |
+
<summary>Integrate Magento Users and Newsletter Subscribers with 4Dem.it Email Marketing Platform</summary>
|
10 |
+
<description>This extension provide a one way synchronization of the magento users data with a list on the 4Dem.it email marketing platform.
|
11 |
+
Every new user registered on Magento and subscribed to the newsletter is synced with a subscribers list in 4Dem.it.
|
12 |
+
User data and subscription preferences are authomatically synced and managed.
|
13 |
+

|
14 |
+
This extension also provide a new newsletter only registration in magento frontend. Each visitor that subscribe using the provided newsletter form is put inside a 4Dem.it subscribers list.</description>
|
15 |
+
<notes>First release</notes>
|
16 |
+
<authors><author><name>4Marketing.it</name><user>techsupport4mkt</user><email>ugo.reynaldi@4marketing.it</email></author></authors>
|
17 |
+
<date>2014-03-31</date>
|
18 |
+
<time>07:52:39</time>
|
19 |
+
<contents><target name="magecommunity"><dir name="FourMarketing"><dir name="FourDem"><dir><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><dir name="Form"><dir name="Field"><file name="Mapfields.php" hash="4976f6ae47bb04d95c94064c231b8409"/></dir></dir></dir></dir><dir name="Users"><file name="Grid.php" hash="b4a73c4a95c9a83d31d8629c3715a86e"/></dir><file name="Users.php" hash="77ef1e8ebeca9e263039f299c9bee6c5"/></dir></dir><dir name="Helper"><file name="Data.php" hash="7d430d2c7cbdcfc946dd2503b78b8b38"/></dir><dir name="Model"><dir name="Adminhtml"><dir name="System"><dir name="Source"><file name="Fields.php" hash="4085a2528df1ffc5fce044948fada18f"/></dir></dir></dir><dir name="Mysql4"><dir name="Users"><file name="Collection.php" hash="1ec0d46b7bd77347426a2d4713aa1e1e"/></dir><file name="Users.php" hash="ed06aa878acbad0d1a40b0c5161d3f7c"/></dir><file name="Observer.php" hash="83ae622587e58712bf6f9f9a905f5094"/><dir name="System"><dir name="Config"><dir name="Source"><file name="List.php" hash="959117927bc862ddcb48585f6dcdf96a"/></dir></dir></dir><file name="Users.php" hash="add246d80d352d6537cf71f3ab45f5dd"/></dir><dir name="controllers"><file name="SubscribersController.php" hash="30ae20725949ff4d061738bab0d46b03"/><file name="UsersController.php" hash="d2d34d6b3fd25b78aab858623c0e14a6"/></dir><dir name="etc"><file name="adminhtml.xml" hash="e79bd5ce8327e0e3add9ba8cf2edf6bb"/><file name="config.xml" hash="b9ca98f3533d6b71a095b4f330119a13"/><file name="system.xml" hash="8b268fdfa16c13da969a7c99598b3bdb"/></dir><dir name="sql"><dir name="fourmarketing_fourdem_setup"><file name="mysql4-install-0.1.0.php" hash="ccef0bfd0b49a6ced3889f42560f5ece"/></dir></dir></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="default"><dir name="default"><dir name="layout"><file name="fourdem.xml" hash="4cdb947b36365d26b3e94b732cfbd35e"/></dir><dir name="template"><dir name="fourdem"><dir name="form"><file name="register-customer.phtml" hash="cbe26dfdb19ac6444d96ed1dc389ec51"/><file name="register-customer.phtml" hash="cbe26dfdb19ac6444d96ed1dc389ec51"/></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="FourMarketing_FourDem.xml" hash="708a31c59e03b1c719335822113a6908"/></dir></target></contents>
|
20 |
+
<compatible/>
|
21 |
+
<dependencies><required><php><min>5.3.0</min><max>5.4.2</max></php></required></dependencies>
|
22 |
+
</package>
|