4Dem_Integration_community - Version 2.0.0

Version Notes

Version 2.0.0 Release Notes

- Added WebsiteID and StoreID data management
- Added Customer custom fields detection
- Multi store support

Download this release

Release Info

Developer 4Marketing.it
Extension 4Dem_Integration_community
Version 2.0.0
Comparing to
See all releases


Code changes from version 1.0.0 to 2.0.0

Files changed (22) hide show
  1. app/code/community/FourMarketing/FourDem/Block/Adminhtml/{Users.php → FourDem.php} +4 -4
  2. app/code/community/FourMarketing/FourDem/Block/Adminhtml/{Users → FourDem}/Grid.php +14 -12
  3. app/code/community/FourMarketing/FourDem/Block/Adminhtml/System/Config/Form/Field/Mapfields.php +3 -4
  4. app/code/community/FourMarketing/FourDem/Helper/Data.php +15 -6
  5. app/code/community/FourMarketing/FourDem/Model/FourDem.php +8 -0
  6. app/code/community/FourMarketing/FourDem/Model/Mysql4/FourDem.php +8 -0
  7. app/code/community/FourMarketing/FourDem/Model/Mysql4/FourDem/Collection.php +8 -0
  8. app/code/community/FourMarketing/FourDem/Model/Mysql4/Users.php +0 -8
  9. app/code/community/FourMarketing/FourDem/Model/Mysql4/Users/Collection.php +0 -8
  10. app/code/community/FourMarketing/FourDem/Model/Observer.php +475 -273
  11. app/code/community/FourMarketing/FourDem/Model/System/Config/Source/List.php +3 -3
  12. app/code/community/FourMarketing/FourDem/Model/Users.php +0 -8
  13. app/code/community/FourMarketing/FourDem/controllers/Adminhtml/FourDemController.php +196 -0
  14. app/code/community/FourMarketing/FourDem/controllers/UsersController.php +0 -201
  15. app/code/community/FourMarketing/FourDem/etc/{adminhtml.xml → adminhtml.old} +3 -3
  16. app/code/community/FourMarketing/FourDem/etc/config.xml +201 -134
  17. app/code/community/FourMarketing/FourDem/etc/system.xml +59 -27
  18. app/code/community/FourMarketing/FourDem/sql/{fourmarketing_fourdem_setup → fourdem_setup}/mysql4-install-0.1.0.php +3 -2
  19. app/design/adminhtml/default/default/layout/fourdem.xml +8 -0
  20. app/design/adminhtml/default/default/layout/fourmarketing/fourdem.xml +8 -0
  21. app/design/frontend/default/default/template/fourdem/subscribe.phtml +36 -0
  22. package.xml +10 -10
app/code/community/FourMarketing/FourDem/Block/Adminhtml/{Users.php → FourDem.php} RENAMED
@@ -1,14 +1,14 @@
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
  ));
1
  <?php
2
+ class FourMarketing_FourDem_Block_Adminhtml_FourDem extends Mage_Adminhtml_Block_Widget_Grid_Container
3
  {
4
  public function __construct()
5
  {
6
+ $this->_blockGroup = 'fourdem';
7
+ $this->_controller = 'adminhtml_fourdem';
8
  $this->_headerText = $this->__('Clienti Sincronizzati');
9
 
10
  $this->_addButton('button_synchronize', array(
11
+ 'label' => Mage::helper('fourdem')->__('Sincronizza Magento/4Marketing'),
12
  'onclick' => 'setLocation(\'' . $this->getUrl('*/*/synchronize') .'\')',
13
  'class' => 'remove',
14
  ));
app/code/community/FourMarketing/FourDem/Block/Adminhtml/{Users → FourDem}/Grid.php RENAMED
@@ -1,25 +1,27 @@
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();
@@ -27,39 +29,39 @@ class FourMarketing_FourDem_Block_Adminhtml_Users_Grid extends Mage_Adminhtml_Bl
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
  );
1
  <?php
2
+ class FourMarketing_FourDem_Block_Adminhtml_FourDem_Grid extends Mage_Adminhtml_Block_Widget_Grid
3
  {
4
  public function __construct()
5
  {
6
  parent::__construct();
7
 
8
+ $this->setDefaultSort('fourdem_id');
9
+ $this->setId('fourdemGrid');
10
  $this->setDefaultDir('desc');
11
  $this->setSaveParametersInSession(true);
12
  }
13
 
14
  protected function _getCollectionClass()
15
  {
16
+ return 'fourdem/fourdem';
17
  }
18
 
19
  protected function _prepareCollection()
20
  {
21
+
22
  // Get and set our collection for the grid
23
+ //$collection = Mage::getResourceModel($this->_getCollectionClass());
24
+ $collection = Mage::getModel('fourdem/fourdem')->getCollection();
25
  $this->setCollection($collection);
26
 
27
  return parent::_prepareCollection();
29
 
30
  protected function _prepareColumns()
31
  {
32
+ $this->addColumn('fourdem_id',
33
  array(
34
+ 'header'=> Mage::helper('fourdem')->__('ID 4MARKETING'),
35
  'align' =>'right',
36
  'width' => '50px',
37
+ 'index' => 'fourdem_id'
38
  )
39
  );
40
 
41
  $this->addColumn('firstname',
42
  array(
43
+ 'header'=> Mage::helper('fourdem')->__('Nome Cliente'),
44
  'index' => 'firstname'
45
  )
46
  );
47
 
48
  $this->addColumn('lastname',
49
  array(
50
+ 'header'=> Mage::helper('fourdem')->__('Cognome Cliente'),
51
  'index' => 'lastname'
52
  )
53
  );
54
 
55
  $this->addColumn('email_address',
56
  array(
57
+ 'header'=> Mage::helper('fourdem')->__('Email Cliente'),
58
  'index' => 'email_address'
59
  )
60
  );
61
 
62
  $this->addColumn('own_list',
63
  array(
64
+ 'header' => Mage::helper('fourdem')->__('Lista di Appartenenza'),
65
  'index' => 'own_list'
66
  )
67
  );
app/code/community/FourMarketing/FourDem/Block/Adminhtml/System/Config/Form/Field/Mapfields.php CHANGED
@@ -4,16 +4,15 @@
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',
4
  * System configuration form field renderer for mapping MergeVars fields with Magento
5
  * attributes.
6
  *
7
+ * @category DevTrade
8
+ * @package DevTrade_FourDem
9
+ * @author DevTrade 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
  $this->addColumn('magento', array(
17
  'label' => Mage::helper('fourdem')->__('Magento'),
18
  'style' => 'width:120px',
app/code/community/FourMarketing/FourDem/Helper/Data.php CHANGED
@@ -3,9 +3,9 @@
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
  {
@@ -17,11 +17,20 @@ class FourMarketing_FourDem_Helper_Data extends Mage_Core_Helper_Abstract
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);
3
  /**
4
  * Helper - Wrap Connection To 4Marketing
5
  *
6
+ * @category DevTrade
7
+ * @package DevTrade_FourDem
8
+ * @author DevTrade Team <devandtrade@devandtrade.it>
9
  */
10
  class FourMarketing_FourDem_Helper_Data extends Mage_Core_Helper_Abstract
11
  {
17
 
18
  public function __construct()
19
  {
20
+
21
+ $this->consoleUrl = Mage::getStoreConfig('fourdem/system_access/url_console');
22
+
23
+ //$this->consoleUrl = 'http://mailchef.4dem.it/api.php';
24
+
25
  $params = array(
26
+
27
+
28
+ 'username' => '&Username='.Mage::getStoreConfig('fourdem/system_access/username'),
29
  'password' => '&Password='.Mage::getStoreConfig('fourdem/system_access/password')
30
+ /*
31
+ 'username' => '&Username=andreabardi',
32
+ 'password' => '&Password=andrea'
33
+ */
34
  );
35
 
36
  $resultJSON = $this->_getRequestApi('User.Login', $params);
app/code/community/FourMarketing/FourDem/Model/FourDem.php ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class FourMarketing_FourDem_Model_FourDem extends Mage_Core_Model_Abstract
3
+ {
4
+ public function _construct()
5
+ {
6
+ $this->_init('fourdem/fourdem');
7
+ }
8
+ }
app/code/community/FourMarketing/FourDem/Model/Mysql4/FourDem.php ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class FourMarketing_FourDem_Model_Mysql4_FourDem extends Mage_Core_Model_Mysql4_Abstract
3
+ {
4
+ public function _construct()
5
+ {
6
+ $this->_init('fourdem/fourdem', 'fourdem_id');
7
+ }
8
+ }
app/code/community/FourMarketing/FourDem/Model/Mysql4/FourDem/Collection.php ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class FourMarketing_FourDem_Model_Mysql4_FourDem_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
3
+ {
4
+ public function _construct()
5
+ {
6
+ $this->_init('fourdem/fourdem');
7
+ }
8
+ }
app/code/community/FourMarketing/FourDem/Model/Mysql4/Users.php DELETED
@@ -1,8 +0,0 @@
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 DELETED
@@ -1,8 +0,0 @@
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 CHANGED
@@ -3,278 +3,480 @@
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
  }
3
  /**
4
  * Events Observer Model
5
  *
6
+ * @category DevTrade
7
+ * @package DevTrade_FourDem
8
+ * @author DevTrade Team <devandtrade@devandtrade.it>
9
  */
10
+ class FourMarketing_FourDem_Model_Observer {
11
+ public function changeSystemConfig(Varien_Event_Observer $observer) {
12
+
13
+ /**
14
+ * CUSTOM FIELD MODEL IS
15
+ * <firstname translate="comment">
16
+ * <label>Nome</label>
17
+ * <frontend_type>select</frontend_type>
18
+ * <sort_order>1</sort_order>
19
+ * <show_in_default>1</show_in_default>
20
+ * <show_in_website>1</show_in_website>
21
+ * <show_in_store>1</show_in_store>
22
+ * <source_model>fourdem/adminhtml_system_source_fields</source_model>
23
+ * </firstname>
24
+ */
25
+
26
+ // get init sections and tabs
27
+ $config = $observer->getConfig ();
28
+
29
+ // get tab 'advanced', change sort order and label
30
+ $advancedTab = $config->getNode ( 'tabs/fourdem_config' );
31
+ $advancedTab->sort_order = 1;
32
+ // $advancedTab->label .= ' (on top TOTAL)';
33
+
34
+ // Get extension custom field section
35
+ $adminCustomFields = $config->getNode ( 'sections/fourdem/groups/fourdem_mapping/fields' );
36
+ $adminFieldsCollection = Mage::getResourceModel ( 'customer/attribute_collection' )->addFieldToFilter ( 'is_user_defined', '1' )->getItems ();
37
+ foreach ( $adminFieldsCollection as $modelField ) {
38
+ $adminFieldsToAddXmlString = '
39
+ <' . $modelField->getAttributeCode () . ' translate="comment">
40
+ <label>' . $modelField->getFrontendLabel () . '</label>
41
+ <frontend_type>select</frontend_type>
42
+ <sort_order>100</sort_order>
43
+ <show_in_default>1</show_in_default>
44
+ <show_in_website>1</show_in_website>
45
+ <show_in_store>1</show_in_store>
46
+ <source_model>fourdem/adminhtml_system_source_fields</source_model>
47
+ </' . $modelField->getAttributeCode () . '>';
48
+ // Create an xml formatted string for custom fields to add
49
+ $adminFieldsToAddXml = new Mage_Core_Model_Config_Element ( $adminFieldsToAddXmlString );
50
+ $adminCustomFields->appendChild ( $adminFieldsToAddXml );
51
+ }
52
+ // Create an xml formatted string for custom fields to add
53
+ // $adminFieldsToAddXml = new Mage_Core_Model_Config_Element ( $adminFieldsToAddXmlString );
54
+
55
+ // Append new fields to section
56
+ // $adminCustomFields->appendChild ( $adminFieldsToAddXml );
57
+
58
+ return $this;
59
+ }
60
+
61
+ /**
62
+ * Controllo Credenziali inserite dall'utente dal pannello di configurazione
63
+ *
64
+ * @author Raffaele Capasso
65
+ * @version 1.0
66
+ * @copyright Dev And Trade
67
+ */
68
+ public function check4demConfiguration() {
69
+ try {
70
+ $isEnabled = Mage::getStoreConfig ( 'fourdem/system_access/active' );
71
+
72
+ if ($isEnabled) {
73
+ if (empty ( Mage::helper ( 'fourdem' )->sessionID )) {
74
+ throw new Exception ( 'Nome Utente o Password Errati! Controlla le tue credenziali di accesso.' );
75
+ }
76
+ }
77
+
78
+ return;
79
+ } catch ( Exception $e ) {
80
+ Mage::getSingleton ( 'core/session' )->addError ( $e->getMessage () );
81
+ return;
82
+ }
83
+ }
84
+
85
+ /**
86
+ * Iscrivo il cliente nella lista "Clienti" durante la registrazione.
87
+ *
88
+ * @author Raffaele Capasso
89
+ * @version 1.0
90
+ * @copyright Dev And Trade
91
+ */
92
+ public function subscribeCustomer(Varien_Event_Observer $observer) {
93
+ $customer = $observer->getCustomer ();
94
+ $listID = Mage::getStoreConfig ( 'fourdem/system_access/customer_list' );
95
+ $mapFields = Mage::getStoreConfig ( 'fourdem/fourdem_mapping' );
96
+ $email = $customer->getEmail ();
97
+ $ipAddress = $_SERVER ['REMOTE_ADDR'];
98
+ $customFields = array ();
99
+
100
+ foreach ( $mapFields as $label => $customFieldID ) {
101
+ if (! empty ( $customFieldID )) {
102
+ $customerValueField = $customer->getData ( $label );
103
+ // ************************** INIZIO MODIFICA CAMPI PERSONALIZZATI SELECT *************************************
104
+ // Step 1 - Verifica se il campo è personalizzato e di tipo select
105
+ $Custom_Var = Mage::getResourceModel ( 'customer/attribute_collection' )->addFieldToFilter ( 'is_user_defined', '1' )->addFieldToFilter ( 'attribute_code', $label )->addFieldToFilter ( 'frontend_input', 'select' )->getItems ();
106
+ // Step 2 - Carica il valore testuale della selezione (il campo contiene l'ID della option selezionata dall'utente
107
+ if (! empty ( $Custom_Var ) && isset ( $Custom_Var )) {
108
+ $customerModel = Mage::getModel ( 'customer/customer' ); /* ->setStoreId ( $modelCustomer->getData ( 'store_id' ) ); */
109
+ $attr = $customerModel->getResource ()->getAttribute ( $label );
110
+ if ($attr->usesSource ()) {
111
+ $currentStore = Mage::app ()->getStore ()->getCode ();
112
+ Mage::app ()->getStore ()->setId ( 0 );
113
+ $billingValueField = $attr->getSource ()->getOptionText ( $billingValueField );
114
+ Mage::app ()->getStore ()->setId ( $currentStore );
115
+ }
116
+ }
117
+ // ************************** FINE MODIFICA CAMPI PERSONALIZZATI SELECT ************************************
118
+ // Website and WebStore names
119
+ if ($label == "website_id") {
120
+ $customerValueField = Mage::app ()->getWebsite ( $customerValueField )->getName ();
121
+ }
122
+ if ($label == "store_id") {
123
+ $customerValueField = Mage::app ()->getStore ( $customerValueField )->getName ();
124
+ }
125
+ // ----- end ---
126
+
127
+ if (! empty ( $customerValueField )) {
128
+ $key = 'CustomField' . $customFieldID;
129
+ $customFields [$key] = '&CustomField' . $customFieldID . '=' . $customerValueField;
130
+ }
131
+ }
132
+ }
133
+
134
+ Mage::helper ( 'fourdem' )->newSubscriber ( $listID, $email, $ipAddress, $customFields, true, true );
135
+ return;
136
+ }
137
+ public function collectionDataMapping(Varien_Event_Observer $observer) {
138
+ $mapFields = Mage::getStoreConfig ( 'fourdem/fourdem_mapping' );
139
+ $customFields = array ();
140
+ $listID = Mage::getStoreConfig ( 'fourdem/system_access/customer_list' );
141
+ $defaultBillingAddress = $observer->getCustomerAddress ()->getData ();
142
+ $emailCustomer = Mage::getModel ( 'customer/customer' )->load ( $defaultBillingAddress ['parent_id'] )->getEmail ();
143
+
144
+ foreach ( $mapFields as $label => $customFieldID ) {
145
+ if (! empty ( $customFieldID )) {
146
+ $billingValueField = $defaultBillingAddress [$label];
147
+
148
+ // ************************** INIZIO MODIFICA CAMPI PERSONALIZZATI SELECT *************************************
149
+ // Step 1 - Verifica se il campo è personalizzato e di tipo select
150
+ $Custom_Var = Mage::getResourceModel ( 'customer/attribute_collection' )->addFieldToFilter ( 'is_user_defined', '1' )->addFieldToFilter ( 'attribute_code', $label )->addFieldToFilter ( 'frontend_input', 'select' )->getItems ();
151
+ // Step 2 - Carica il valore testuale della selezione (il campo contiene l'ID della option selezionata dall'utente
152
+ if (! empty ( $Custom_Var ) && isset ( $Custom_Var )) {
153
+ $customerModel = Mage::getModel ( 'customer/customer' ); /* ->setStoreId ( $modelCustomer->getData ( 'store_id' ) ); */
154
+ $attr = $customerModel->getResource ()->getAttribute ( $label );
155
+ if ($attr->usesSource ()) {
156
+ $currentStore = Mage::app ()->getStore ()->getCode ();
157
+ Mage::app ()->getStore ()->setId ( 0 );
158
+ $billingValueField = $attr->getSource ()->getOptionText ( $billingValueField );
159
+ Mage::app ()->getStore ()->setId ( $currentStore );
160
+ }
161
+ }
162
+ // ************************** FINE MODIFICA CAMPI PERSONALIZZATI SELECT ************************************
163
+ // Website and WebStore names
164
+ if ($label == "website_id") {
165
+ $billingValueField = Mage::app ()->getWebsite ( $billingValueField )->getName ();
166
+ }
167
+ if ($label == "store_id") {
168
+ $billingValueField = Mage::app ()->getStore ( $billingValueField )->getName ();
169
+ }
170
+ // ----- end ---
171
+
172
+ $key = 'Fields' . $customFieldID;
173
+ $customFields [$key] = '&Fields[CustomField' . $customFieldID . ']=' . $billingValueField;
174
+ }
175
+ }
176
+
177
+ // echo '<pre>'; print_r($customFields); echo '</pre>'; die();
178
+ Mage::helper ( 'fourdem' )->updateSubscriber ( $emailCustomer, $emailCustomer, $listID, $customFields, true );
179
+ return;
180
+ }
181
+
182
+ /**
183
+ * Cambio le impostazioni date dall'utente inserite nella fase di registrazione.
184
+ *
185
+ * @author Raffaele Capasso
186
+ * @version 1.0
187
+ * @copyright Dev And Trade
188
+ */
189
+ public function changeSubscribeEmail(Varien_Event_Observer $observer) {
190
+ $mapFields = Mage::getStoreConfig ( 'fourdem/fourdem_mapping' );
191
+ $customFields = array ();
192
+ $oldDataCustomer = $observer->getCustomer ()->getOrigData ();
193
+ $newDataCustomer = $observer->getCustomer ()->getData ();
194
+
195
+ $listID = Mage::getStoreConfig ( 'fourdem/system_access/customer_list' );
196
+ $oldEmailCustomer = $oldDataCustomer ['email'];
197
+ $newEmailCustomer = $newDataCustomer ['email'];
198
+ $customerModel = Mage::getModel ( 'customer/customer' )->load ( $newDataCustomer ['entity_id'] );
199
+
200
+ if (empty ( $oldEmailCustomer )) {
201
+ return;
202
+ $oldEmailCustomer = $newEmailCustomer;
203
+ }
204
+
205
+ foreach ( $mapFields as $label => $customFieldID ) {
206
+ if (! empty ( $customFieldID )) {
207
+ $billingValueField = $customerModel->getData ( $label );
208
+
209
+ if (! empty ( $billingValueField )) {
210
+
211
+ // ************************** INIZIO MODIFICA CAMPI PERSONALIZZATI SELECT *************************************
212
+ // Step 1 - Verifica se il campo è personalizzato e di tipo select
213
+ $Custom_Var = Mage::getResourceModel ( 'customer/attribute_collection' )->addFieldToFilter ( 'is_user_defined', '1' )->addFieldToFilter ( 'attribute_code', $label )->addFieldToFilter ( 'frontend_input', 'select' )->getItems ();
214
+ // Step 2 - Carica il valore testuale della selezione (il campo contiene l'ID della option selezionata dall'utente
215
+ if (! empty ( $Custom_Var ) && isset ( $Custom_Var )) {
216
+ $customerModel = Mage::getModel ( 'customer/customer' ); /* ->setStoreId ( $modelCustomer->getData ( 'store_id' ) ); */
217
+ $attr = $customerModel->getResource ()->getAttribute ( $label );
218
+ if ($attr->usesSource ()) {
219
+ $currentStore = Mage::app ()->getStore ()->getCode ();
220
+ Mage::app ()->getStore ()->setId ( 0 );
221
+ $billingValueField = $attr->getSource ()->getOptionText ( $billingValueField );
222
+ Mage::app ()->getStore ()->setId ( $currentStore );
223
+ }
224
+ }
225
+ // ************************** FINE MODIFICA CAMPI PERSONALIZZATI SELECT ************************************
226
+ // Website and WebStore names
227
+ if ($label == "website_id") {
228
+ $billingValueField = Mage::app ()->getWebsite ( $billingValueField )->getName ();
229
+ }
230
+ if ($label == "store_id") {
231
+ $billingValueField = Mage::app ()->getStore ( $billingValueField )->getName ();
232
+ }
233
+ // ----- end ---
234
+
235
+ $key = 'Fields' . $customFieldID;
236
+ $customFields [$key] = '&Fields[CustomField' . $customFieldID . ']=' . $billingValueField;
237
+ } else {
238
+ if (is_object ( $customerModel->getDefaultBillingAddress () )) {
239
+ $billingDefaultAddress = $customerModel->getDefaultBillingAddress ()->getData ();
240
+ $billingValueField = $billingDefaultAddress [$label];
241
+
242
+ // ************************** INIZIO MODIFICA CAMPI PERSONALIZZATI SELECT *************************************
243
+ // Step 1 - Verifica se il campo è personalizzato e di tipo select
244
+ $Custom_Var = Mage::getResourceModel ( 'customer/attribute_collection' )->addFieldToFilter ( 'is_user_defined', '1' )->addFieldToFilter ( 'attribute_code', $label )->addFieldToFilter ( 'frontend_input', 'select' )->getItems ();
245
+ // Step 2 - Carica il valore testuale della selezione (il campo contiene l'ID della option selezionata dall'utente
246
+ if (! empty ( $Custom_Var ) && isset ( $Custom_Var )) {
247
+ $customerModel = Mage::getModel ( 'customer/customer' ); /* ->setStoreId ( $modelCustomer->getData ( 'store_id' ) ); */
248
+ $attr = $customerModel->getResource ()->getAttribute ( $label );
249
+ if ($attr->usesSource ()) {
250
+ $currentStore = Mage::app ()->getStore ()->getCode ();
251
+ Mage::app ()->getStore ()->setId ( 0 );
252
+ $billingValueField = $attr->getSource ()->getOptionText ( $billingValueField );
253
+ Mage::app ()->getStore ()->setId ( $currentStore );
254
+ }
255
+ }
256
+ // ************************** FINE MODIFICA CAMPI PERSONALIZZATI SELECT ************************************
257
+ // Website and WebStore names
258
+ if ($label == "website_id") {
259
+ $billingValueField = Mage::app ()->getWebsite ( $billingValueField )->getName ();
260
+ }
261
+ if ($label == "store_id") {
262
+ $billingValueField = Mage::app ()->getStore ( $billingValueField )->getName ();
263
+ }
264
+ // ----- end ---
265
+
266
+ $key = 'Fields' . $customFieldID;
267
+ $customFields [$key] = '&Fields[CustomField' . $customFieldID . ']=' . $billingValueField;
268
+ }
269
+ }
270
+ }
271
+ }
272
+
273
+ if (isset ( $newDataCustomer ['is_subscribed'] ) && ! $newDataCustomer ['is_subscribed']) {
274
+ // Se l'utente disabilita la newsletter lo disiscrivo da 4Marketing.it..
275
+ $resource = Mage::getSingleton ( 'core/resource' )->getConnection ( 'core_write' );
276
+ $email = $newDataCustomer ['email'];
277
+ $user = $resource->query ( "SELECT * FROM devtrade_fourdem_users WHERE email_address = '" . $email . "'" );
278
+ $userRow = array_pop ( $user );
279
+ $idUser = $userRow ['fourdem_id'];
280
+
281
+ Mage::helper ( 'fourdem' )->unsubscribeSubscriber ( $listID, $idUser, $email, true );
282
+ return;
283
+ } elseif (isset ( $newDataCustomer ['is_subscribed'] ) && $newDataCustomer ['is_subscribed']) {
284
+ // Se l'utente abilita la newsletter lo iscrivo nella lista 4Marketing.it impostata dall'utente.
285
+ $email = $newDataCustomer ['email'];
286
+ $ipAddress = $_SERVER ['REMOTE_ADDR'];
287
+
288
+ //Mage::helper ( 'fourdem' )->newSubscriber ( $listID, $email, $ipAddress, $customFields, true, true );
289
+ Mage::helper ( 'fourdem' )->updateSubscriber ( $oldEmailCustomer, $newEmailCustomer, $listID, $customFields, true );
290
+ return;
291
+ }
292
+
293
+ Mage::helper ( 'fourdem' )->updateSubscriber ( $oldEmailCustomer, $newEmailCustomer, $listID, $customFields, true );
294
+ return;
295
+ }
296
+
297
+ /**
298
+ * Quando il cliente effettua un'acquisto viene iscritto alla lista "Clienti" presente su 4Marketing.
299
+ *
300
+ * @author Raffaele Capasso
301
+ * @version 1.0
302
+ * @copyright Dev And Trade
303
+ */
304
+ public function subscribeCustomerAfterCheckout(Varien_Event_Observer $observer) {
305
+ $mapFields = Mage::getStoreConfig ( 'fourdem/fourdem_mapping' );
306
+ $listID = Mage::getStoreConfig ( 'fourdem/system_access/customer_list' );
307
+ $customerQuote = $observer->getEvent ()->getQuote ()->getData ();
308
+ $billingInformation = $observer->getEvent ()->getQuote ()->getBillingAddress ()->getData ();
309
+ $customFields = array ();
310
+
311
+ if ($customerQuote ['checkout_method'] === 'guest') {
312
+ $email = $customerQuote ['customer_email'];
313
+ $ipAddress = $_SERVER ['REMOTE_ADDR'];
314
+ $isMessageSuppressed = true;
315
+ $isCustomerRegistered = Mage::getModel ( 'customer/customer' )->setWebsiteId ( 1 )->loadByEmail ( $email )->getId ();
316
+
317
+ if ($isCustomerRegistered) {
318
+ foreach ( $mapFields as $label => $customFieldID ) {
319
+ if (! empty ( $customFieldID )) {
320
+ $billingValueField = $billingInformation [$label];
321
+
322
+ // ************************** INIZIO MODIFICA CAMPI PERSONALIZZATI SELECT *************************************
323
+ // Step 1 - Verifica se il campo è personalizzato e di tipo select
324
+ $Custom_Var = Mage::getResourceModel ( 'customer/attribute_collection' )->addFieldToFilter ( 'is_user_defined', '1' )->addFieldToFilter ( 'attribute_code', $label )->addFieldToFilter ( 'frontend_input', 'select' )->getItems ();
325
+ // Step 2 - Carica il valore testuale della selezione (il campo contiene l'ID della option selezionata dall'utente
326
+ if (! empty ( $Custom_Var ) && isset ( $Custom_Var )) {
327
+ $customerModel = Mage::getModel ( 'customer/customer' ); /* ->setStoreId ( $modelCustomer->getData ( 'store_id' ) ); */
328
+ $attr = $customerModel->getResource ()->getAttribute ( $label );
329
+ if ($attr->usesSource ()) {
330
+ $currentStore = Mage::app ()->getStore ()->getCode ();
331
+ Mage::app ()->getStore ()->setId ( 0 );
332
+ $billingValueField = $attr->getSource ()->getOptionText ( $billingValueField );
333
+ Mage::app ()->getStore ()->setId ( $currentStore );
334
+ }
335
+ }
336
+ // ************************** FINE MODIFICA CAMPI PERSONALIZZATI SELECT ************************************
337
+ // Website and WebStore names
338
+ if ($label == "website_id") {
339
+ $billingValueField = Mage::app ()->getWebsite ( $billingValueField )->getName ();
340
+ }
341
+ if ($label == "store_id") {
342
+ $billingValueField = Mage::app ()->getStore ( $billingValueField )->getName ();
343
+ }
344
+ // ----- end ---
345
+
346
+ $key = 'Fields' . $customFieldID;
347
+ $customFields [$key] = '&Fields[CustomField' . $customFieldID . ']=' . $billingValueField;
348
+ }
349
+ }
350
+
351
+ Mage::helper ( 'fourdem' )->updateSubscriber ( $email, $email, $listID, $customFields );
352
+ return;
353
+ } else {
354
+ foreach ( $mapFields as $label => $customFieldID ) {
355
+ if (! empty ( $customFieldID )) {
356
+ $billingValueField = $billingInformation [$label];
357
+ // ************************** INIZIO MODIFICA CAMPI PERSONALIZZATI SELECT *************************************
358
+ // Step 1 - Verifica se il campo è personalizzato e di tipo select
359
+ $Custom_Var = Mage::getResourceModel ( 'customer/attribute_collection' )->addFieldToFilter ( 'is_user_defined', '1' )->addFieldToFilter ( 'attribute_code', $label )->addFieldToFilter ( 'frontend_input', 'select' )->getItems ();
360
+ // Step 2 - Carica il valore testuale della selezione (il campo contiene l'ID della option selezionata dall'utente
361
+ if (! empty ( $Custom_Var ) && isset ( $Custom_Var )) {
362
+ $customerModel = Mage::getModel ( 'customer/customer' ); /* ->setStoreId ( $modelCustomer->getData ( 'store_id' ) ); */
363
+ $attr = $customerModel->getResource ()->getAttribute ( $label );
364
+ if ($attr->usesSource ()) {
365
+ $currentStore = Mage::app ()->getStore ()->getCode ();
366
+ Mage::app ()->getStore ()->setId ( 0 );
367
+ $billingValueField = $attr->getSource ()->getOptionText ( $billingValueField );
368
+ Mage::app ()->getStore ()->setId ( $currentStore );
369
+ }
370
+ }
371
+ // ************************** FINE MODIFICA CAMPI PERSONALIZZATI SELECT ************************************
372
+ // Website and WebStore names
373
+ if ($label == "website_id") {
374
+ $billingValueField = Mage::app ()->getWebsite ( $billingValueField )->getName ();
375
+ }
376
+ if ($label == "store_id") {
377
+ $billingValueField = Mage::app ()->getStore ( $billingValueField )->getName ();
378
+ }
379
+ // ----- end ---
380
+
381
+ if (! empty ( $billingValueField )) {
382
+ $key = 'CustomField' . $customFieldID;
383
+ $customFields [$key] = '&CustomField' . $customFieldID . '=' . $billingValueField;
384
+ }
385
+ }
386
+ }
387
+
388
+ Mage::helper ( 'fourdem' )->newSubscriber ( $listID, $email, $ipAddress, $customFields, false, $isMessageSuppressed );
389
+ return;
390
+ }
391
+ } else {
392
+ $customerOrder = $observer->getEvent ()->getOrder ();
393
+ $customer = $customerOrder->getCustomer ();
394
+ // echo '<pre>'; print_r($customer->getData()); echo '</pre>'; die();
395
+ $customerModel = Mage::getModel ( 'customer/customer' )->load ( $customer->getData ( 'entity_id' ) );
396
+ $billingAddress = $customerOrder->getBillingAddress ();
397
+ $email = $customerOrder->getCustomer ()->getEmail ();
398
+ $isCustomerRegistered = Mage::getModel ( 'customer/customer' )->setWebsiteId ( 1 )->loadByEmail ( $email )->getId ();
399
+ $ipAddress = $_SERVER ['REMOTE_ADDR'];
400
+
401
+ if ($isCustomerRegistered) {
402
+ foreach ( $mapFields as $label => $customFieldID ) {
403
+ if (! empty ( $customFieldID ) && $label != 'billing_address') {
404
+ $billingValueField = $billingAddress->getData ( $label );
405
+
406
+ // ************************** INIZIO MODIFICA CAMPI PERSONALIZZATI SELECT *************************************
407
+ // Step 1 - Verifica se il campo è personalizzato e di tipo select
408
+ $Custom_Var = Mage::getResourceModel ( 'customer/attribute_collection' )->addFieldToFilter ( 'is_user_defined', '1' )->addFieldToFilter ( 'attribute_code', $label )->addFieldToFilter ( 'frontend_input', 'select' )->getItems ();
409
+ // Step 2 - Carica il valore testuale della selezione (il campo contiene l'ID della option selezionata dall'utente
410
+ if (! empty ( $Custom_Var ) && isset ( $Custom_Var )) {
411
+ $customerModel = Mage::getModel ( 'customer/customer' ); /* ->setStoreId ( $modelCustomer->getData ( 'store_id' ) ); */
412
+ $attr = $customerModel->getResource ()->getAttribute ( $label );
413
+ if ($attr->usesSource ()) {
414
+ $currentStore = Mage::app ()->getStore ()->getCode ();
415
+ Mage::app ()->getStore ()->setId ( 0 );
416
+ $billingValueField = $attr->getSource ()->getOptionText ( $billingValueField );
417
+ Mage::app ()->getStore ()->setId ( $currentStore );
418
+ }
419
+ }
420
+ // ************************** FINE MODIFICA CAMPI PERSONALIZZATI SELECT ************************************
421
+ // Website and WebStore names
422
+ if ($label == "website_id") {
423
+ $billingValueField = Mage::app ()->getWebsite ( $billingValueField )->getName ();
424
+ }
425
+ if ($label == "store_id") {
426
+ $billingValueField = Mage::app ()->getStore ( $billingValueField )->getName ();
427
+ }
428
+ // ----- end --
429
+ $key = 'Fields' . $customFieldID;
430
+ $customFields [$key] = '&Fields[CustomField' . $customFieldID . ']=' . $billingValueField;
431
+ }
432
+ }
433
+
434
+ // echo '<pre>'; print_r($customFields); echo '</pre>'; die();
435
+ Mage::helper ( 'fourdem' )->updateSubscriber ( $email, $email, $listID, $customFields, true );
436
+ return;
437
+ } else {
438
+ foreach ( $mapFields as $label => $customFieldID ) {
439
+ if (! empty ( $customFieldID )) {
440
+ $billingValueField = $billingAddress->getData ( $label );
441
+
442
+ // ************************** INIZIO MODIFICA CAMPI PERSONALIZZATI SELECT *************************************
443
+ // Step 1 - Verifica se il campo è personalizzato e di tipo select
444
+ $Custom_Var = Mage::getResourceModel ( 'customer/attribute_collection' )->addFieldToFilter ( 'is_user_defined', '1' )->addFieldToFilter ( 'attribute_code', $label )->addFieldToFilter ( 'frontend_input', 'select' )->getItems ();
445
+ // Step 2 - Carica il valore testuale della selezione (il campo contiene l'ID della option selezionata dall'utente
446
+ if (! empty ( $Custom_Var ) && isset ( $Custom_Var )) {
447
+ $customerModel = Mage::getModel ( 'customer/customer' ); /* ->setStoreId ( $modelCustomer->getData ( 'store_id' ) ); */
448
+ $attr = $customerModel->getResource ()->getAttribute ( $label );
449
+ if ($attr->usesSource ()) {
450
+ $currentStore = Mage::app ()->getStore ()->getCode ();
451
+ Mage::app ()->getStore ()->setId ( 0 );
452
+ $billingValueField = $attr->getSource ()->getOptionText ( $billingValueField );
453
+ Mage::app ()->getStore ()->setId ( $currentStore );
454
+ }
455
+ }
456
+ // ************************** FINE MODIFICA CAMPI PERSONALIZZATI SELECT ************************************
457
+ // Website and WebStore names
458
+ if ($label == "website_id") {
459
+ $billingValueField = Mage::app ()->getWebsite ( $billingValueField )->getName ();
460
+ }
461
+ if ($label == "store_id") {
462
+ $billingValueField = Mage::app ()->getStore ( $billingValueField )->getName ();
463
+ }
464
+ // ----- end --
465
+
466
+ if (! empty ( $billingValueField )) {
467
+ $key = 'CustomField' . $customFieldID;
468
+ $customFields [$key] = '&CustomField' . $customFieldID . '=' . $billingValueField;
469
+ } else {
470
+ $key = 'CustomField' . $customFieldID;
471
+ $customerValueField = $customerModel->getData ( $label );
472
+ $customFields [$key] = '&CustomField' . $customFieldID . '=' . $customerValueField;
473
+ }
474
+ }
475
+ }
476
+
477
+ Mage::helper ( 'fourdem' )->newSubscriber ( $listID, $email, $ipAddress, $customFields );
478
+ return;
479
+ }
480
+ }
481
+ }
482
  }
app/code/community/FourMarketing/FourDem/Model/System/Config/Source/List.php CHANGED
@@ -3,9 +3,9 @@
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
  {
3
  /**
4
  * 4Marketing lists source file
5
  *
6
+ * @category DevTrade
7
+ * @package DevTrade_FourDem
8
+ * @author DevTrade Team <devandtrade@devandtrade.it>
9
  */
10
  class FourMarketing_FourDem_Model_System_Config_Source_List
11
  {
app/code/community/FourMarketing/FourDem/Model/Users.php DELETED
@@ -1,8 +0,0 @@
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/Adminhtml/FourDemController.php ADDED
@@ -0,0 +1,196 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * Magento Class For 4Marketing Magento ADMIN
4
+ */
5
+ class FourMarketing_FourDem_Adminhtml_FourDemController extends Mage_Adminhtml_Controller_Action {
6
+ protected function _initAction() {
7
+ $this->loadLayout ()->_setActiveMenu ( 'fourdem/items' )->_title ( $this->__ ( 'Iscritti Newsletter' ) )->_title ( $this->__ ( '4Marketing' ) );
8
+
9
+ return $this;
10
+ }
11
+ public function indexAction() {
12
+ $this->_initAction ();
13
+ $this->_addContent ( $this->getLayout ()->createBlock ( 'fourdem/adminhtml_fourdem' ) );
14
+ $this->renderLayout ();
15
+ }
16
+ public function deleteAction() {
17
+ $params = $this->getRequest ()->getParams ();
18
+ $idUser = $params ['id'];
19
+ $user = Mage::getModel ( 'fourdem/fourdem' )->load ( $idUser );
20
+
21
+ preg_match_all ( "/\d+/", $user->getOwnList (), $matches );
22
+ $listID = $matches [0] [0];
23
+ $email = $user->getData ( 'email_address' );
24
+
25
+ try {
26
+ // Cancello l'utente da Magento e dalla tabella di riferimento..
27
+ $response = Mage::helper ( 'fourdem' )->unsubscribeSubscriber ( $listID, $idUser, $email );
28
+
29
+ if ($response->Success) {
30
+ $user->delete ();
31
+
32
+ $message = $this->__ ( "L'utente $email è stato cancellato con successo!" );
33
+ Mage::getSingleton ( 'core/session' )->addSuccess ( $message );
34
+ $this->_redirectReferer ();
35
+ } else {
36
+ throw new Exception ( "L'utente $email non è presente in 4Marketing. Può darsi che sia già stato cancellato." );
37
+ }
38
+ } catch ( Exception $e ) {
39
+ $message = $e->getMessage ();
40
+ Mage::getSingleton ( 'core/session' )->addError ( $message );
41
+ $this->_redirectReferer ();
42
+ }
43
+ }
44
+ public function synchronizeAction() {
45
+ $start = microtime ( true );
46
+
47
+ try {
48
+ // Clean Magento Table..
49
+ $resource = Mage::getSingleton ( 'core/resource' );
50
+ $writeConnection = $resource->getConnection ( 'core_write' );
51
+ $writeConnection->query ( "TRUNCATE fourdem_users" );
52
+
53
+ $collection = Mage::getModel ( 'customer/customer' )->getCollection ()->addAttributeToSelect ( '*' );
54
+ $customers = $collection->getData ();
55
+
56
+ // echo '<pre>'; print_r($customers); echo '</pre>'; die();
57
+
58
+ $mapFields = Mage::getStoreConfig ( 'fourdem/fourdem_mapping' );
59
+ $customFields = array ();
60
+ $customFieldsUpdate = array ();
61
+
62
+ $customerListID = Mage::getStoreConfig ( 'fourdem/system_access/customer_list' );
63
+ $newsletterListID = Mage::getStoreConfig ( 'fourdem/system_access/newsletter_list' );
64
+
65
+ $customerList = Mage::helper ( 'fourdem' )->getListInformation ( $customerListID )->List->Name;
66
+ $newsletterList = Mage::helper ( 'fourdem' )->getListInformation ( $newsletterListID )->List->Name;
67
+
68
+ $customerSubscribers = Mage::helper ( 'fourdem' )->getAllSubscribers ( $customerListID )->Subscribers;
69
+ $newsletterSubscribers = Mage::helper ( 'fourdem' )->getAllSubscribers ( $newsletterListID )->Subscribers;
70
+
71
+ // Prima Fase: Importo i Clienti Magento nella "Lista Clienti" Di Destinazione..
72
+ foreach ( $customers as $customer ) {
73
+ $modelCustomer = Mage::getModel ( 'customer/customer' )->load ( $customer ['entity_id'] );
74
+ $addressCustomerModel = Mage::getModel ( 'customer/address' )->load ( $modelCustomer->getDefaultBilling () );
75
+
76
+ foreach ( $mapFields as $label => $customFieldID ) {
77
+ if (! empty ( $customFieldID ) && $label != 'billing_address') {
78
+ $customerValueField = $modelCustomer->getData ( $label );
79
+ // $customerValueField = $modelCustomer->getAttributeText($label);
80
+ // $Custom_Var = Mage::getModel('customer/customer')->load($_item['is'])->getData('adresse')
81
+
82
+ //************************** INIZIO MODIFICA CAMPI PERSONALIZZATI SELECT *************************************
83
+ // Step 1 - Verifica se il campo è personalizzato e di tipo select
84
+ $Custom_Var = Mage::getResourceModel ( 'customer/attribute_collection' )->addFieldToFilter ( 'is_user_defined', '1' )->addFieldToFilter ( 'attribute_code', $label )->addFieldToFilter ( 'frontend_input', 'select' )->getItems ();
85
+ // Step 2 - Carica il valore testuale della selezione (il campo contiene l'ID della option selezionata dall'utente
86
+ if (! empty ( $Custom_Var ) && isset ( $Custom_Var )) {
87
+ $customerModel = Mage::getModel ( 'customer/customer' );
88
+ $attr = $customerModel->getResource ()->getAttribute ( $label );
89
+ if ($attr->usesSource ()) {
90
+ $currentStore = Mage::app ()->getStore ()->getCode ();
91
+ Mage::app ()->getStore ()->setId ( 0 );
92
+ $customerValueField = $attr->getSource ()->getOptionText ( $customerValueField );
93
+ Mage::app ()->getStore ()->setId ( $currentStore );
94
+ }
95
+ }
96
+ //************************** FINE MODIFICA CAMPI PERSONALIZZATI SELECT *************************************
97
+
98
+ // Website and WebStore names
99
+ if ($label == "website_id") {
100
+ $customerValueField = Mage::app ()->getWebsite ( $customerValueField )->getName ();
101
+ }
102
+ if ($label == "store_id") {
103
+ $customerValueField = Mage::app ()->getStore ( $customerValueField )->getName ();
104
+ }
105
+
106
+ // ----- end --
107
+
108
+ if (! empty ( $customerValueField )) {
109
+ $key = 'CustomField' . $customFieldID;
110
+ $customFields [$key] = '&CustomField' . $customFieldID . '=' . $customerValueField;
111
+
112
+ $keyUpdate = 'Fields' . $customFieldID;
113
+ $customFieldsUpdate [$keyUpdate] = '&Fields[CustomField' . $customFieldID . ']=' . $customerValueField;
114
+ } else {
115
+ $customerValueField = $addressCustomerModel->getData ( $label );
116
+ $key = 'CustomField' . $customFieldID;
117
+ $customFields [$key] = '&CustomField' . $customFieldID . '=' . $customerValueField;
118
+
119
+ $keyUpdate = 'Fields' . $customFieldID;
120
+ $customFieldsUpdate [$keyUpdate] = '&Fields[CustomField' . $customFieldID . ']=' . $customerValueField;
121
+ }
122
+ }
123
+ }
124
+
125
+ // echo '<pre>'; print_r($modelCustomer->getData()); echo '</pre>'; die();
126
+ // echo '<pre>'; print_r($mapFields); echo '</pre>'; die();
127
+ // echo '<pre>'; print_r($customFields); echo '</pre>'; die();
128
+
129
+ $listID = $customerListID;
130
+ $singleAlert = true;
131
+ $isThereSubscribers = Mage::helper ( 'fourdem' )->getAboutSubscriber ( $customer ['email'], $listID )->Subscribers;
132
+
133
+ // Se l'utente è presente nella lista, controllo se sia cancellato oppure no..
134
+ if ($isThereSubscribers) {
135
+ $customerConsoleResponse = array_pop ( $isThereSubscribers );
136
+ $customerStatusOnConsole = $customerConsoleResponse->SubscriptionStatus;
137
+
138
+ // echo '<pre>'; print_r(var_dump($customerStatusOnConsole)); echo '</pre>'; die();
139
+
140
+ if ($customerStatusOnConsole === 'Unsubscribed') {
141
+ Mage::helper ( 'fourdem' )->newSubscriber ( $listID, $customer ['email'], $_SERVER ['REMOTE_ADDR'], $customFields, $singleAlert, true );
142
+ } elseif ($customerStatusOnConsole === 'Subscribed') {
143
+ Mage::helper ( 'fourdem' )->updateSubscriber ( $customer ['email'], $customer ['email'], $listID, $customFieldsUpdate, true );
144
+ }
145
+ } else {
146
+ // Se l'utente non esite nella lista di destinazione lo iscrivo..
147
+ Mage::helper ( 'fourdem' )->newSubscriber ( $listID, $customer ['email'], $_SERVER ['REMOTE_ADDR'], $customFields, $singleAlert );
148
+ }
149
+ }
150
+
151
+ // Seconda Fase: Importo Le Liste Nella Tabella di Riferimento in Magento..
152
+ if (! empty ( $customerListID )) {
153
+ foreach ( $customerSubscribers as $subscriber ) {
154
+
155
+ $info = get_object_vars ( $subscriber );
156
+ $firstname = $info ['CustomField' . $mapFields ['firstname']];
157
+ $lastname = $info ['CustomField' . $mapFields ['lastname']];
158
+
159
+ $insertStatement = "INSERT INTO fourdem_users VALUES(
160
+ " . $subscriber->SubscriberID . ",
161
+ '$firstname',
162
+ '$lastname',
163
+ '" . $subscriber->EmailAddress . "',
164
+ 'ID: $customerListID / Nome: $customerList')";
165
+ $writeConnection->query ( $insertStatement );
166
+ }
167
+ } else {
168
+ // Import Newsletter Users
169
+ foreach ( $newsletterSubscribers as $subscriber ) {
170
+ $info = get_object_vars ( $subscriber );
171
+ $firstname = $info ['CustomField' . $mapFields ['firstname']];
172
+ $lastname = $info ['CustomField' . $mapFields ['lastname']];
173
+
174
+ $insertStatement = "INSERT INTO fourdem_users VALUES(
175
+ " . $subscriber->SubscriberID . ",
176
+ '$firstname',
177
+ '$lastname',
178
+ '" . $subscriber->EmailAddress . "',
179
+ 'ID: $newsletterListID / Nome: $newsletterList')";
180
+ $writeConnection->query ( $insertStatement );
181
+ }
182
+ }
183
+
184
+ $time_taken = microtime ( true ) - $start;
185
+ $minSeconds = date ( "i:s", $time_taken );
186
+
187
+ $message = $this->__ ( "Tabella Sincronizzata Con Successo! Tempo stimato: " . $minSeconds . " secondi" );
188
+ Mage::getSingleton ( 'core/session' )->addSuccess ( $message );
189
+
190
+ $this->_redirectReferer ();
191
+ } catch ( Exception $e ) {
192
+ $message = $this->__ ( $e->getMessage () );
193
+ Mage::getSingleton ( 'core/session' )->addError ( $message );
194
+ }
195
+ }
196
+ }
app/code/community/FourMarketing/FourDem/controllers/UsersController.php DELETED
@@ -1,201 +0,0 @@
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 → adminhtml.old} RENAMED
@@ -5,11 +5,11 @@
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>
5
  <title>4Dem.it</title>
6
  <sort_order>65</sort_order>
7
  <children>
8
+ <items module="fourdem">
9
  <title>Sincronizzazione Clienti</title>
10
  <sort_order>1</sort_order>
11
+ <action>fourdem/adminhtml_fourdem</action>
12
+ </items>
13
  </children>
14
  <!--
15
  <children>
app/code/community/FourMarketing/FourDem/etc/config.xml CHANGED
@@ -1,142 +1,209 @@
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>
1
  <?xml version="1.0"?>
2
  <config>
3
+ <modules>
4
+ <FourMarketing_FourDem>
5
+ <version>0.2.0</version>
6
+ </FourMarketing_FourDem>
7
+ </modules>
8
+ <frontend>
9
+ <routers>
10
+ <fourdem>
11
+ <use>standard</use>
12
+ <args>
13
+ <module>FourMarketing_FourDem</module>
14
+ <frontName>fourdem</frontName>
15
+ </args>
16
+ </fourdem>
17
+ </routers>
18
+ <layout>
19
+ <updates>
20
+ <fourdem>
21
+ <file>fourdem.xml</file>
22
+ </fourdem>
23
+ </updates>
24
+ </layout>
25
+ </frontend>
26
+
27
+ <admin>
28
+ <routers>
29
+ <fourdem>
30
+ <use>admin</use>
31
+ <args>
32
+ <module>FourMarketing_FourDem</module>
33
+ <frontName>fourdem</frontName>
34
+ </args>
35
+ </fourdem>
36
+ <adminhtml>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
  <args>
38
  <modules>
39
+ <FourDem Before="Mage_Adminhtml">FourMarketing_FourDem</FourDem>
40
  </modules>
41
  </args>
42
  </adminhtml>
43
+ </routers>
44
+ </admin>
45
+ <adminhtml>
46
+ <menu>
47
+ <fourdem module="fourdem">
48
+ <title>4Dem.it</title>
49
+ <sort_order>71</sort_order>
50
+ <children>
51
+ <items module="fourdem">
52
+ <title>Sincronizza Utenti</title>
53
+ <sort_order>0</sort_order>
54
+ <action>fourdem/adminhtml_fourdem</action>
55
+ </items>
56
+ </children>
57
+ </fourdem>
58
+ </menu>
59
+ <acl>
60
+ <!--
61
+ <resources>
62
+ <all>
63
+ <title>Allow Everything</title>
64
+ </all>
65
+ <admin>
66
+ <children>
67
+ <fourdem>
68
+ <title>FourDem FourDem</title>
69
+ <sort_order>200</sort_order>
70
+ </fourdem>
71
+ </children>
72
+
73
+ </admin>
74
+ </resources>
75
+ --><resources>
76
+ <admin>
77
+ <children>
78
+ <system>
79
+ <children>
80
+ <config>
81
+ <children>
82
+ <fourdem translate="title" module="fourdem">
83
+ <title>4Dem.it - Email Marketing</title>
84
+ </fourdem>
85
+ </children>
86
+ </config>
87
+ </children>
88
+ </system>
89
+ </children>
90
+ </admin>
91
+ </resources>
92
+ </acl>
93
+
94
+ <layout>
95
+ <updates>
96
+ <fourdem>
97
+ <file>fourdem.xml</file>
98
+ </fourdem>
99
+ </updates>
100
+ </layout>
101
+ </adminhtml>
102
+
103
+
104
+ <global>
105
+ <models>
106
+ <fourdem>
107
+ <class>FourMarketing_FourDem_Model</class>
108
+ <resourceModel>fourdem_mysql4</resourceModel>
109
+ </fourdem>
110
+
111
+ <fourdem_mysql4>
112
+ <class>FourMarketing_FourDem_Model_Mysql4</class>
113
+ <entities>
114
+ <fourdem>
115
+ <table>fourdem_users</table>
116
+ </fourdem>
117
+ </entities>
118
+ </fourdem_mysql4>
119
+ </models>
120
+
121
+ <resources>
122
+ <fourdem_setup>
123
+ <setup>
124
+ <module>FourMarketing_FourDem</module>
125
+ </setup>
126
+ <connection>
127
+ <use>core_setup</use>
128
+ </connection>
129
+ </fourdem_setup>
130
+ <fourdem_write>
131
+ <connection>
132
+ <use>core_write</use>
133
+ </connection>
134
+ </fourdem_write>
135
+ <fourdem_read>
136
+ <connection>
137
+ <use>core_read</use>
138
+ </connection>
139
+ </fourdem_read>
140
+ </resources>
141
+
142
+ <blocks>
143
+ <fourdem>
144
+ <class>FourMarketing_FourDem_Block</class>
145
+ </fourdem>
146
+ </blocks>
147
+ <helpers>
148
+ <fourdem>
149
+ <class>FourMarketing_FourDem_Helper</class>
150
+ </fourdem>
151
+ </helpers>
152
+ <events>
153
+ <adminhtml_init_system_config>
154
+ <observers>
155
+ <fourmarketing_fourdem>
156
+ <class>FourMarketing_FourDem_Model_Observer</class>
157
+ <method>changeSystemConfig</method>
158
+ </fourmarketing_fourdem>
159
+ </observers>
160
+ </adminhtml_init_system_config>
161
+
162
+ <admin_system_config_changed_section_fourdem>
163
+ <observers>
164
+ <fourdem>
165
+ <type>singleton</type>
166
+ <class>FourMarketing_FourDem_Model_Observer</class>
167
+ <method>check4DemConfiguration</method>
168
+ </fourdem>
169
+ </observers>
170
+ </admin_system_config_changed_section_fourdem>
171
+ <customer_register_success>
172
+ <observers>
173
+ <fourdem>
174
+ <type>singleton</type>
175
+ <class>FourMarketing_FourDem_Model_Observer</class>
176
+ <method>subscribeCustomer</method>
177
+ </fourdem>
178
+ </observers>
179
+ </customer_register_success>
180
+ <customer_save_after>
181
+ <observers>
182
+ <fourdem>
183
+ <type>singleton</type>
184
+ <class>FourMarketing_FourDem_Model_Observer</class>
185
+ <method>changeSubscribeEmail</method>
186
+ </fourdem>
187
+ </observers>
188
+ </customer_save_after>
189
+ <customer_address_save_after>
190
+ <observers>
191
+ <fourdem>
192
+ <type>singleton</type>
193
+ <class>FourMarketing_FourDem_Model_Observer</class>
194
+ <method>collectionDataMapping</method>
195
+ </fourdem>
196
+ </observers>
197
+ </customer_address_save_after>
198
+ <checkout_submit_all_after>
199
+ <observers>
200
+ <fourdem>
201
+ <type>singleton</type>
202
+ <class>FourMarketing_FourDem_Model_Observer</class>
203
+ <method>subscribeCustomerAfterCheckout</method>
204
+ </fourdem>
205
+ </observers>
206
+ </checkout_submit_all_after>
207
+ </events>
208
+ </global>
209
  </config>
app/code/community/FourMarketing/FourDem/etc/system.xml CHANGED
@@ -1,15 +1,29 @@
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>
@@ -88,7 +102,7 @@
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>
@@ -99,7 +113,7 @@
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>
@@ -127,104 +141,122 @@ Una volta che i campi saranno disponibili potrai effettuare il mapping utilizzan
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>
1
  <?xml version="1.0"?>
2
  <config>
3
  <tabs>
4
+ <fourdem_config translate="label" module="fourdem">
5
  <label><![CDATA[4Dem.it]]></label>
6
  <sort_order>400</sort_order>
7
+ </fourdem_config>
8
  </tabs>
9
  <sections>
10
+
11
+ <!--
12
+ <fourdem_options translate="label" module="fourdem">
13
+ <label>Hello World Config Options</label>
14
+ <tab>fourdem_config</tab>
15
+ <frontend_type>text</frontend_type>
16
+ <sort_order>1000</sort_order>
17
+ <show_in_default>1</show_in_default>
18
+ <show_in_website>1</show_in_website>
19
+ <show_in_store>1</show_in_store>
20
+ </fourdem_options>
21
+ -->
22
+
23
+
24
  <fourdem translate="label" module="fourdem">
25
  <label><![CDATA[Configurazione 4Dem.it]]></label>
26
+ <tab>fourdem_config</tab>
27
  <sort_order>1000</sort_order>
28
  <show_in_default>1</show_in_default>
29
  <show_in_website>1</show_in_website>
102
  <label>Lista Clienti</label>
103
  <comment><![CDATA[Lista dei Clienti che hanno effettuato almeno un acquisto.]]></comment>
104
  <frontend_type>multiselect</frontend_type>
105
+ <source_model>fourdem/system_config_source_list</source_model>
106
  <sort_order>60</sort_order>
107
  <show_in_default>1</show_in_default>
108
  <show_in_website>0</show_in_website>
113
  <label>Iscritti alla Newsletter</label>
114
  <comment><![CDATA[Lista degli iscritti alla newsletter.]]></comment>
115
  <frontend_type>multiselect</frontend_type>
116
+ <source_model>fourdem/system_config_source_list</source_model>
117
  <sort_order>70</sort_order>
118
  <show_in_default>1</show_in_default>
119
  <show_in_website>0</show_in_website>
141
  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
142
  </div>]]></comment>
143
  <fields>
144
+ <website_id translate="comment">
145
+ <label>Magento Website</label>
146
+ <frontend_type>select</frontend_type>
147
+ <sort_order>1</sort_order>
148
+ <show_in_default>1</show_in_default>
149
+ <show_in_website>1</show_in_website>
150
+ <show_in_store>1</show_in_store>
151
+ <source_model>fourdem/adminhtml_system_source_fields</source_model>
152
+ </website_id>
153
+ <store_id translate="comment">
154
+ <label>Magento Store</label>
155
+ <frontend_type>select</frontend_type>
156
+ <sort_order>2</sort_order>
157
+ <show_in_default>1</show_in_default>
158
+ <show_in_website>1</show_in_website>
159
+ <show_in_store>1</show_in_store>
160
+ <source_model>fourdem/adminhtml_system_source_fields</source_model>
161
+ </store_id>
162
  <firstname translate="comment">
163
  <label>Nome</label>
164
  <frontend_type>select</frontend_type>
165
+ <sort_order>10</sort_order>
166
  <show_in_default>1</show_in_default>
167
  <show_in_website>1</show_in_website>
168
  <show_in_store>1</show_in_store>
169
+ <source_model>fourdem/adminhtml_system_source_fields</source_model>
170
  </firstname>
171
  <lastname translate="comment">
172
  <label>Cognome</label>
173
  <frontend_type>select</frontend_type>
174
+ <sort_order>11</sort_order>
175
  <show_in_default>1</show_in_default>
176
  <show_in_website>1</show_in_website>
177
  <show_in_store>1</show_in_store>
178
+ <source_model>fourdem/adminhtml_system_source_fields</source_model>
179
  </lastname>
180
  <gender translate="comment">
181
  <label>Genere</label>
182
  <frontend_type>select</frontend_type>
183
+ <sort_order>12</sort_order>
184
  <show_in_default>1</show_in_default>
185
  <show_in_website>1</show_in_website>
186
  <show_in_store>1</show_in_store>
187
+ <source_model>fourdem/adminhtml_system_source_fields</source_model>
188
  </gender>
189
  <company translate="comment">
190
  <label>Nome Azienda</label>
191
  <frontend_type>select</frontend_type>
192
+ <sort_order>14</sort_order>
193
  <show_in_default>1</show_in_default>
194
  <show_in_website>1</show_in_website>
195
  <show_in_store>1</show_in_store>
196
+ <source_model>fourdem/adminhtml_system_source_fields</source_model>
197
  </company>
198
  <street translate="comment">
199
  <label>Indirizzo</label>
200
  <frontend_type>select</frontend_type>
201
+ <sort_order>15</sort_order>
202
  <show_in_default>1</show_in_default>
203
  <show_in_website>1</show_in_website>
204
  <show_in_store>1</show_in_store>
205
+ <source_model>fourdem/adminhtml_system_source_fields</source_model>
206
  </street>
207
  <city translate="comment">
208
  <label>Città</label>
209
  <frontend_type>select</frontend_type>
210
+ <sort_order>16</sort_order>
211
  <show_in_default>1</show_in_default>
212
  <show_in_website>1</show_in_website>
213
  <show_in_store>1</show_in_store>
214
+ <source_model>fourdem/adminhtml_system_source_fields</source_model>
215
  </city>
216
  <postcode translate="comment">
217
  <label>CAP</label>
218
  <frontend_type>select</frontend_type>
219
+ <sort_order>17</sort_order>
220
  <show_in_default>1</show_in_default>
221
  <show_in_website>1</show_in_website>
222
  <show_in_store>1</show_in_store>
223
+ <source_model>fourdem/adminhtml_system_source_fields</source_model>
224
  </postcode>
225
  <province translate="comment">
226
  <label>Provincia</label>
227
  <frontend_type>select</frontend_type>
228
+ <sort_order>18</sort_order>
229
  <show_in_default>1</show_in_default>
230
  <show_in_website>1</show_in_website>
231
  <show_in_store>1</show_in_store>
232
+ <source_model>fourdem/adminhtml_system_source_fields</source_model>
233
  </province>
234
  <region translate="comment">
235
  <label>Regione</label>
236
  <frontend_type>select</frontend_type>
237
+ <sort_order>19</sort_order>
238
  <show_in_default>1</show_in_default>
239
  <show_in_website>1</show_in_website>
240
  <show_in_store>1</show_in_store>
241
+ <source_model>fourdem/adminhtml_system_source_fields</source_model>
242
  </region>
243
  <country_id translate="comment">
244
  <label>Nazione</label>
245
  <frontend_type>select</frontend_type>
246
+ <sort_order>20</sort_order>
247
  <show_in_default>1</show_in_default>
248
  <show_in_website>1</show_in_website>
249
  <show_in_store>1</show_in_store>
250
+ <source_model>fourdem/adminhtml_system_source_fields</source_model>
251
  </country_id>
252
  <created_at translate="comment">
253
  <label>Ultimo acquisto</label>
254
  <frontend_type>select</frontend_type>
255
+ <sort_order>21</sort_order>
256
  <show_in_default>1</show_in_default>
257
  <show_in_website>1</show_in_website>
258
  <show_in_store>1</show_in_store>
259
+ <source_model>fourdem/adminhtml_system_source_fields</source_model>
260
  </created_at>
261
  </fields>
262
  </fourdem_mapping>
app/code/community/FourMarketing/FourDem/sql/{fourmarketing_fourdem_setup → fourdem_setup}/mysql4-install-0.1.0.php RENAMED
@@ -4,8 +4,9 @@ $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,
4
  $installer->startSetup();
5
 
6
  $installer->run("
7
+ -- DROP TABLE IF EXISTS fourdem_users;
8
+ CREATE TABLE fourdem_users(
9
+ fourdem_id int(11) NOT NULL,
10
  firstname text NOT NULL,
11
  lastname text NOT NULL,
12
  email_address text NOT NULL,
app/design/adminhtml/default/default/layout/fourdem.xml ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ e<?xml version="1.0"?>
2
+ <layout version="0.1.0">
3
+ <fourdem_adminhtml_fourdem_index>
4
+ <reference name="content">
5
+ <block type="fourdem/adminhtml_fourdem" name="fourdem"/>
6
+ </reference>
7
+ </fourdem_adminhtml_fourdem_index>
8
+ </layout>
app/design/adminhtml/default/default/layout/fourmarketing/fourdem.xml ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <layout>
3
+ <adminhtml_users_index>
4
+ <reference name="content">
5
+ <block type="fourmarketing_fourdem/adminhtml_users" name="fourmarketing_fourdem_users"/>
6
+ </reference>
7
+ </adminhtml_users_index>
8
+ </layout>
app/design/frontend/default/default/template/fourdem/subscribe.phtml ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $titoloBox = Mage::getStoreConfig('fourdem/box_newsletter/title_box');
3
+ $testoBox = Mage::getStoreConfig('fourdem/box_newsletter/text_box');
4
+ $isSelectList = Mage::getStoreConfig('fourdem/system_access/select_list');
5
+ ?>
6
+ <?php if($isSelectList): ?>
7
+ <style type="text/css">
8
+ .mini-newsletter .head{ background: url("../images/base-mini-bg.jpg") no-repeat; }
9
+ .mini-newsletter .head h4{ text-align: left!important; }
10
+ .mini-newsletter .input-text{ margin:5px 0px 5px 0px; width: 170px; }
11
+ .mini-newsletter button{ margin:5px 0 15px; 0; }
12
+ </style>
13
+ <div class="box base-mini mini-newsletter">
14
+ <div class="head">
15
+ <h4><?php echo $this->__($titoloBox); ?><a name="newsletter-box"></a></h4>
16
+ </div>
17
+ <form action="<?php echo $this->getUrl('fourdem/subscribers/new') ?>" method="post" id="newsletter-validate-detail">
18
+ <fieldset class="content">
19
+ <label for="newsletter"><?php echo $this->__($testoBox); ?>:</label>
20
+ <div class="input-box">
21
+ <input name="email" type="text" id="newsletter" value="Indirizzo Email" class="required-entry validate-email input-text"/>
22
+ </div>
23
+ <button class="button" title="Iscriviti alla Newsletter" type="submit">
24
+ <span><span>Iscriviti Ora</span></span>
25
+ </button>
26
+ <input type="hidden" name="ip-address" value="<?php echo $_SERVER['REMOTE_ADDR']; ?>"/>
27
+ </fieldset>
28
+ </form>
29
+ </div>
30
+ <script type="text/javascript">
31
+ <!--
32
+ var newsletterSubscriberFormDetail = new VarienForm('newsletter-validate-detail');
33
+ new Varien.searchForm('newsletter-validate-detail', 'newsletter', '<?php echo $this->helper('newsletter')->__('Indirizzo Email'); ?>');
34
+ //-->
35
+ </script>
36
+ <?php endif; ?>
package.xml CHANGED
@@ -1,22 +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.&#xD;
11
- Every new user registered on Magento and subscribed to the newsletter is synced with a subscribers list in 4Dem.it.&#xD;
12
- User data and subscription preferences are authomatically synced and managed.&#xD;
13
  &#xD;
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>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>4Dem_Integration_community</name>
4
+ <version>2.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. Every new user registered on Magento and subscribed to the newsletter is synced with a subscribers list in 4Dem.it. User data and subscription preferences are automatically synchronized and managed. 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>
11
+ <notes>Version 2.0.0 Release Notes&#xD;
 
12
  &#xD;
13
+ - Added WebsiteID and StoreID data management&#xD;
14
+ - Added Customer custom fields detection&#xD;
15
+ - Multi store support</notes>
16
  <authors><author><name>4Marketing.it</name><user>techsupport4mkt</user><email>ugo.reynaldi@4marketing.it</email></author></authors>
17
+ <date>2014-05-27</date>
18
+ <time>09:29:38</time>
19
+ <contents><target name="magecommunity"><dir name="FourMarketing"><dir name="FourDem"><dir name="Block"><dir name="Adminhtml"><dir name="FourDem"><file name="Grid.php" hash="f2b21f458237e5dca1e650be724a0ac7"/></dir><file name="FourDem.php" hash="a658696b9bd4f913e222ca07950cdb65"/><dir name="System"><dir name="Config"><dir name="Form"><dir name="Field"><file name="Mapfields.php" hash="4646e704ae708179a32c655ffa0e6d21"/></dir></dir></dir></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="3945c088ef7a804d6e2994eb64f5de2e"/></dir><dir name="Model"><dir name="Adminhtml"><dir name="System"><dir name="Source"><file name="Fields.php" hash="4085a2528df1ffc5fce044948fada18f"/></dir></dir></dir><file name="FourDem.php" hash="ae211c790a810d12d4bd5ecc706e39a9"/><dir name="Mysql4"><dir name="FourDem"><file name="Collection.php" hash="b58bdda2eaad377d02675facc141be6f"/></dir><file name="FourDem.php" hash="9ea9597ba4eefa25c057fae7b638799a"/></dir><file name="Observer.php" hash="cea5e9f11987df4ae0576e6b75611f63"/><dir name="System"><dir name="Config"><dir name="Source"><file name="List.php" hash="3821c86713534e1aa92cf455687655c0"/></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="FourDemController.php" hash="3a235aadc7748f35d92642f1694b436a"/></dir><file name="SubscribersController.php" hash="30ae20725949ff4d061738bab0d46b03"/></dir><dir name="etc"><file name="adminhtml.old" hash="6b93f7de0de2360e133df06e928be9b3"/><file name="config.xml" hash="2fb22202df75f8ac259879be5ac6fca6"/><file name="system.xml" hash="83f5f1c2c2028bd96d6fa5d02ab1b9fa"/></dir><dir name="sql"><dir name="fourdem_setup"><file name="mysql4-install-0.1.0.php" hash="afe4444211d01ce32161c22bf9f4676f"/></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></dir></dir><dir><dir name="frontend"><dir name="default"><dir name="default"><dir name="template"><dir name="fourdem"><dir name="form"><file name="register-customer.phtml" hash="cbe26dfdb19ac6444d96ed1dc389ec51"/></dir><file name="subscribe.phtml" hash="9eded5d0cbf2402175109408c8255296"/></dir></dir></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="fourdem.xml" hash="dbce3504aa0896b435ab2360bf84397f"/><dir name="fourmarketing"><file name="fourdem.xml" hash="0f9566d4d348347b2778191dce364d89"/></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>4.3.0</min><max>6.0.0</max></php></required></dependencies>
22
  </package>