MailPoet Newsletters (Previous) - Version 2.6.16

Version Description

  • 2015-06-23 =
  • Added HHVM support
  • Added MariaDB support
  • Fixed import issue where existing subscriber's data was not updated
  • Fixed minor issues
Download this release

Release Info

Developer JoN1oP
Plugin Icon 128x128 MailPoet Newsletters (Previous)
Version 2.6.16
Comparing to
See all releases

Code changes from version 2.6.15 to 2.6.16

Files changed (54) hide show
  1. classes/WJ_Import.php +4 -1
  2. classes/WJ_Stats.php +23 -6
  3. classes/WJ_Upgrade.php +7 -5
  4. controllers/back.php +1 -1
  5. controllers/back/campaigns.php +19 -22
  6. controllers/back/subscribers.php +4 -1
  7. core/base.php +1 -1
  8. css/tmce/editor.css +3 -3
  9. css/validationEngine.jquery.css +1 -292
  10. helpers/numbers.php +42 -23
  11. helpers/server.php +1 -1
  12. helpers/update.php +2 -2
  13. index.php +1 -1
  14. languages/wysija-newsletters-af.mo +0 -0
  15. languages/wysija-newsletters-ar.mo +0 -0
  16. languages/wysija-newsletters-be.mo +0 -0
  17. languages/wysija-newsletters-bg_BG.mo +0 -0
  18. languages/wysija-newsletters-ca.mo +0 -0
  19. languages/wysija-newsletters-cs_CZ.mo +0 -0
  20. languages/wysija-newsletters-de_CH.mo +0 -0
  21. languages/wysija-newsletters-de_DE.mo +0 -0
  22. languages/wysija-newsletters-el.mo +0 -0
  23. languages/wysija-newsletters-es.mo +0 -0
  24. languages/wysija-newsletters-es_419.mo +0 -0
  25. languages/wysija-newsletters-es_ES.mo +0 -0
  26. languages/wysija-newsletters-es_MX.mo +0 -0
  27. languages/wysija-newsletters-eu.mo +0 -0
  28. languages/wysija-newsletters-fi.mo +0 -0
  29. languages/wysija-newsletters-fr_FR.mo +0 -0
  30. languages/wysija-newsletters-hr_HR.mo +0 -0
  31. languages/wysija-newsletters-hu_HU.mo +0 -0
  32. languages/wysija-newsletters-id.mo +0 -0
  33. languages/wysija-newsletters-is_IS.mo +0 -0
  34. languages/wysija-newsletters-it_IT.mo +0 -0
  35. languages/wysija-newsletters-ja.mo +0 -0
  36. languages/wysija-newsletters-ko_KR.mo +0 -0
  37. languages/wysija-newsletters-lt_LT.mo +0 -0
  38. languages/wysija-newsletters-lv.mo +0 -0
  39. languages/wysija-newsletters-nb_NO.mo +0 -0
  40. languages/wysija-newsletters-nl_NL.mo +0 -0
  41. languages/wysija-newsletters-pl_PL.mo +0 -0
  42. languages/wysija-newsletters-pt_BR.mo +0 -0
  43. languages/wysija-newsletters-pt_PT.mo +0 -0
  44. languages/wysija-newsletters-ro_RO.mo +0 -0
  45. languages/wysija-newsletters-ru_RU.mo +0 -0
  46. languages/wysija-newsletters-sl_SI.mo +0 -0
  47. languages/wysija-newsletters-sq.mo +0 -0
  48. languages/wysija-newsletters-sv_SE.mo +0 -0
  49. languages/wysija-newsletters-tr_TR.mo +0 -0
  50. languages/wysija-newsletters-uk.mo +0 -0
  51. readme.txt +12 -10
  52. sql/install.sql +15 -15
  53. views/back/campaigns.php +23 -18
  54. views/back/subscribers.php +43 -39
classes/WJ_Import.php CHANGED
@@ -170,7 +170,7 @@ class WJ_Import extends WYSIJA_object {
170
  * @return type
171
  */
172
  private function _get_import_query_header() {
173
- return 'INSERT IGNORE INTO [wysija]user (`' . implode('` ,`', $this->_data_to_insert) . '`,`created_at`) VALUES ';
174
  }
175
 
176
  /**
@@ -464,6 +464,9 @@ class WJ_Import extends WYSIJA_object {
464
 
465
  $query .= implode(', ', $lines);
466
 
 
 
 
467
  // replace query to import the subscribers
468
  $model_wysija = new WYSIJA_model();
469
  $import_query = $model_wysija->query($query);
170
  * @return type
171
  */
172
  private function _get_import_query_header() {
173
+ return 'INSERT INTO [wysija]user (`' . implode('` ,`', $this->_data_to_insert) . '`,`created_at`) VALUES ';
174
  }
175
 
176
  /**
464
 
465
  $query .= implode(', ', $lines);
466
 
467
+ // update values when the user already exists
468
+ $query .= ' ON DUPLICATE KEY UPDATE '.implode(', ', array_map(function($v) { return '`'.$v.'` = VALUES(`'.$v.'`)'; }, $this->_data_to_insert));
469
+
470
  // replace query to import the subscribers
471
  $model_wysija = new WYSIJA_model();
472
  $import_query = $model_wysija->query($query);
classes/WJ_Stats.php CHANGED
@@ -77,8 +77,13 @@ class WJ_Stats extends WYSIJA_object {
77
 
78
  $model_email_user_stat = WYSIJA::get('email_user_stat', 'model');
79
  $model_email_user_stat->reset();
 
 
 
80
  $model_email_user_stat->update(
81
- array('status' => 1, 'opened_at' => time()), array('email_id' => $this->email_id, 'user_id' => $this->user_id, 'status' => 0));
 
 
82
 
83
  $this->_update_user(array('last_opened' => time()));
84
 
@@ -221,7 +226,7 @@ class WJ_Stats extends WYSIJA_object {
221
 
222
  switch ($this->clicked_url) {
223
  case '[unsubscribe_link]':
224
- //we need to make sure that this link belongs to that user
225
  if ($receiver) {
226
  $link = $this->subscriberClass->getUnsubLink($receiver, true);
227
  // unsubscribe status
@@ -241,7 +246,7 @@ class WJ_Stats extends WYSIJA_object {
241
  break;
242
  }
243
 
244
- //if the subscriber still exists in the DB we will have a link
245
  if ($link) {
246
  $this->decoded_url = $link;
247
  } else {
@@ -252,8 +257,10 @@ class WJ_Stats extends WYSIJA_object {
252
  }
253
  } else {
254
  // this is the standard non-system url case
255
- if (strpos($this->decoded_url, 'http://') === false && strpos($this->decoded_url, 'https://') === false)
256
  $this->decoded_url = 'http://' . $this->decoded_url;
 
 
257
  // check that there is no broken unsubscribe link such as http://[unsubscribe_link]
258
  if (strpos($this->decoded_url, '[unsubscribe_link]') !== false) {
259
  $this->subscriberClass = WYSIJA::get('user', 'model');
@@ -268,15 +275,25 @@ class WJ_Stats extends WYSIJA_object {
268
  }
269
  }
270
 
 
 
 
271
  $model_email_user_stat = WYSIJA::get('email_user_stat', 'model');
272
  $exists = $model_email_user_stat->getOne(false, array('equal' => array('email_id' => $this->email_id, 'user_id' => $this->user_id), 'less' => array('status' => $status_email_user_stat)));
273
- $data_update = array('status' => $status_email_user_stat);
274
- if ($exists && isset($exists['opened_at']) && !(int) $exists['opened_at']) {
 
 
275
  $data_update['opened_at'] = time();
276
  }
277
 
278
  $model_email_user_stat->reset();
279
  $model_email_user_stat->colCheck = false;
 
 
 
 
 
280
  $model_email_user_stat->update($data_update, array('equal' => array('email_id' => $this->email_id, 'user_id' => $this->user_id), 'less' => array('status' => $status_email_user_stat)));
281
  }
282
 
77
 
78
  $model_email_user_stat = WYSIJA::get('email_user_stat', 'model');
79
  $model_email_user_stat->reset();
80
+
81
+ // update status to 1 and set opened_at time
82
+ // only if the status = 0
83
  $model_email_user_stat->update(
84
+ array('status' => 1, 'opened_at' => time()),
85
+ array('email_id' => $this->email_id, 'user_id' => $this->user_id, 'status' => 0)
86
+ );
87
 
88
  $this->_update_user(array('last_opened' => time()));
89
 
226
 
227
  switch ($this->clicked_url) {
228
  case '[unsubscribe_link]':
229
+ // we need to make sure that this link belongs to that user
230
  if ($receiver) {
231
  $link = $this->subscriberClass->getUnsubLink($receiver, true);
232
  // unsubscribe status
246
  break;
247
  }
248
 
249
+ //if the subscriber already exists in the DB we will have a link
250
  if ($link) {
251
  $this->decoded_url = $link;
252
  } else {
257
  }
258
  } else {
259
  // this is the standard non-system url case
260
+ if (strpos($this->decoded_url, 'http://') === false && strpos($this->decoded_url, 'https://') === false) {
261
  $this->decoded_url = 'http://' . $this->decoded_url;
262
+ }
263
+
264
  // check that there is no broken unsubscribe link such as http://[unsubscribe_link]
265
  if (strpos($this->decoded_url, '[unsubscribe_link]') !== false) {
266
  $this->subscriberClass = WYSIJA::get('user', 'model');
275
  }
276
  }
277
 
278
+ $data_update = array();
279
+
280
+ // check if we already have a record
281
  $model_email_user_stat = WYSIJA::get('email_user_stat', 'model');
282
  $exists = $model_email_user_stat->getOne(false, array('equal' => array('email_id' => $this->email_id, 'user_id' => $this->user_id), 'less' => array('status' => $status_email_user_stat)));
283
+
284
+ // fix "opened_at" value in case the "opened" status was not properly recorded (blocked images)
285
+ if(is_array($exists) && array_key_exists('opened_at', $exists) && (int)$exists['opened_at'] === 0) {
286
+ // set opened at in case it was not recorded
287
  $data_update['opened_at'] = time();
288
  }
289
 
290
  $model_email_user_stat->reset();
291
  $model_email_user_stat->colCheck = false;
292
+
293
+ // set new status
294
+ $data_update['status'] = $status_email_user_stat;
295
+
296
+ // update email user stat
297
  $model_email_user_stat->update($data_update, array('equal' => array('email_id' => $this->email_id, 'user_id' => $this->user_id), 'less' => array('status' => $status_email_user_stat)));
298
  }
299
 
classes/WJ_Upgrade.php CHANGED
@@ -337,23 +337,25 @@ class WJ_Upgrade extends WYSIJA_object {
337
  return;
338
  }
339
 
340
- switch ( $_POST['action'] ){
 
 
341
  case 'delete-selected':
342
- break;
 
343
 
344
  case 'deactivate-selected':
345
  if ( in_array( self::$plugins[0], $plugins ) && ! in_array( self::$plugins[1], $plugins ) && is_plugin_active( self::$plugins[1] ) ){
346
  $plugins[] = self::$plugins[1];
347
  }
348
- break;
349
 
350
  case 'update-selected':
351
  case 'activate-selected':
352
  if ( in_array( self::$plugins[1], $plugins ) && ! in_array( self::$plugins[0], $plugins ) ){
353
  $plugins[] = self::$plugins[0];
354
  }
355
-
356
- break;
357
  }
358
 
359
  $_POST['checked'] = $plugins;
337
  return;
338
  }
339
 
340
+ $action = (isset($_POST['action']) ? $_POST['action'] : null);
341
+
342
+ switch($action) {
343
  case 'delete-selected':
344
+
345
+ break;
346
 
347
  case 'deactivate-selected':
348
  if ( in_array( self::$plugins[0], $plugins ) && ! in_array( self::$plugins[1], $plugins ) && is_plugin_active( self::$plugins[1] ) ){
349
  $plugins[] = self::$plugins[1];
350
  }
351
+ break;
352
 
353
  case 'update-selected':
354
  case 'activate-selected':
355
  if ( in_array( self::$plugins[1], $plugins ) && ! in_array( self::$plugins[0], $plugins ) ){
356
  $plugins[] = self::$plugins[0];
357
  }
358
+ break;
 
359
  }
360
 
361
  $_POST['checked'] = $plugins;
controllers/back.php CHANGED
@@ -312,7 +312,7 @@ class WYSIJA_control_back extends WYSIJA_control{
312
 
313
  //Create a temporary table
314
  $temp_table_name = '[wysija]user'. time();
315
- $temp_table_create = 'CREATE TEMPORARY TABLE IF NOT EXISTS '.$temp_table_name . ' (user_id int (10) NOT NULL, PRIMARY KEY (user_id)) ENGINE=MyISAM';
316
  $temp_table_insert = 'INSERT IGNORE INTO '.$temp_table_name.' ' . $this->_batch_select['query'];
317
  $model_user = WYSIJA::get('user','model');
318
 
312
 
313
  //Create a temporary table
314
  $temp_table_name = '[wysija]user'. time();
315
+ $temp_table_create = 'CREATE TEMPORARY TABLE IF NOT EXISTS '.$temp_table_name . ' (user_id int (10) NOT NULL, PRIMARY KEY (user_id))';
316
  $temp_table_insert = 'INSERT IGNORE INTO '.$temp_table_name.' ' . $this->_batch_select['query'];
317
  $model_user = WYSIJA::get('user','model');
318
 
controllers/back/campaigns.php CHANGED
@@ -105,7 +105,7 @@ class WYSIJA_control_back_campaigns extends WYSIJA_control_back {
105
 
106
  //add a new language code with a new video
107
  $video_language=array();
108
- $video_language['en_EN'] = '<iframe src="//player.vimeo.com/video/81479899" width="500" height="281" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>';
109
 
110
  $wp_lang = get_locale();
111
  if (!empty($wp_lang) && isset($video_language[$wp_lang])) {
@@ -115,28 +115,25 @@ class WYSIJA_control_back_campaigns extends WYSIJA_control_back {
115
  }
116
 
117
  $this->data['sections'][] = array(
118
- 'title' => __('Hey, we\'re curious! How did you find out about us?', WYSIJA) . '<span id="poll_result"></span>',
119
  'format' => 'normal',
120
- 'paragraphs' => array(
121
- '<ul class="welcome_poll">
122
- <li>
123
- <input type="radio" id="how_did_you_find_us_1" value="repository" name="how_did_you_find_us">
124
- <label value="lab1" for="how_did_you_find_us_1">' . __('WordPress.org plugin repository', WYSIJA) . '</label>
125
- </li>
126
- <li>
127
- <input type="radio" id="how_did_you_find_us_2" value="search_engine" name="how_did_you_find_us">
128
- <label value="lab2" for="how_did_you_find_us_2">' . __('Google or other search engine', WYSIJA) . '</label>
129
- </li>
130
- <li>
131
- <input type="radio" id="how_did_you_find_us_3" value="friend" name="how_did_you_find_us">
132
- <label value="lab3" for="how_did_you_find_us_3">' . __('Friend recommendation', WYSIJA) . '</label>
133
- </li>
134
- <li>
135
- <input type="radio" id="how_did_you_find_us_4" value="url" name="how_did_you_find_us">
136
- <label value="lab4" for="how_did_you_find_us_4">' . __('Blog post, online review, forum:', WYSIJA) . '</label>
137
- <input type="text" id="how_did_you_find_us_4_url" name="how_did_you_find_us_url" placeholder="' . __('Please enter the address where you\'ve found out about us', WYSIJA) . '">
138
- </li>
139
- </ul>'
140
  )
141
  );
142
 
105
 
106
  //add a new language code with a new video
107
  $video_language=array();
108
+ $video_language['en_EN'] = '<iframe src="//player.vimeo.com/video/130224536" width="500" height="281" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>';
109
 
110
  $wp_lang = get_locale();
111
  if (!empty($wp_lang) && isset($video_language[$wp_lang])) {
115
  }
116
 
117
  $this->data['sections'][] = array(
118
+ 'title' => __('Stay up to date! Subscribe to our newsletters', WYSIJA) . '<span id="poll_result"></span>',
119
  'format' => 'normal',
120
+ 'paragraphs' => array('<div class="mpoet-update-subscribe" ><h4></h4><div class="mpoet-update-subscribe-left"> <p>'.__('We send a monthly newsletter with the following:',WYSIJA).'</p>' .
121
+ '<ul>' .
122
+ '<li>'.__('Important plugin updates',WYSIJA).'</li>' .
123
+ '<li>'.__('Coupons',WYSIJA).'</li>' .
124
+ '<li>'.__('Tips for you, or your customers',WYSIJA).'</li>' .
125
+ '<li>'.__('What we’re working on',WYSIJA).'</li>' .
126
+ '<li>'.__('News from us, the team',WYSIJA).'</li>' .
127
+ '</ul>
128
+ <p>View an <a target="_blank" href="http://www.mailpoet.com/?wysija-page=1&controller=email&action=view&email_id=1181&wysijap=subscriptions-3">an example blog post email</a> and <a target="_blank" href="http://www.mailpoet.com/?wysija-page=1&controller=email&action=view&email_id=64&wysijap=subscriptions-2">an example newsletter</a>.</p>
129
+ </div>' .
130
+ '<div class="mpoet-update-subscribe-right">' .
131
+
132
+ '<iframe width="380" scrolling="no" frameborder="0" src="http://www.mailpoet.com/?wysija-page=1&controller=subscribers&action=wysija_outter&wysija_form=5&external_site=1&wysijap=subscriptions-3" class="iframe-wysija" vspace="0" tabindex="0" style="position: static; top: 0pt; margin: 0px; border-style: none; height: 180px; left: 0pt; visibility: visible; background-color: #f1f1f1!important;" marginwidth="0" marginheight="0" hspace="0" allowtransparency="true" title="Subscription Wysija"></iframe>
133
+ </div>
134
+ <div style="clear:both;"></div>
135
+
136
+ </div>',
 
 
 
137
  )
138
  );
139
 
controllers/back/subscribers.php CHANGED
@@ -212,11 +212,14 @@ class WYSIJA_control_back_subscribers extends WYSIJA_control_back{
212
  unset($data['user_list']['list_id']);
213
  $data['message_success']=__('Subscriber has been saved.',WYSIJA);
214
  $id=$helper_user->addSubscriber($data,true);
215
- //$id= parent::save();
216
  if(!$id) {
217
  $this->viewShow=$this->action='add';
218
  $data=array('details'=>$_REQUEST['wysija']['user']);
219
  return $this->add($data);
 
 
 
 
220
  }
221
  }
222
  $this->redirect();
212
  unset($data['user_list']['list_id']);
213
  $data['message_success']=__('Subscriber has been saved.',WYSIJA);
214
  $id=$helper_user->addSubscriber($data,true);
 
215
  if(!$id) {
216
  $this->viewShow=$this->action='add';
217
  $data=array('details'=>$_REQUEST['wysija']['user']);
218
  return $this->add($data);
219
+ } else {
220
+ if(isset($_POST['wysija']['field'])) {
221
+ WJ_FieldHandler::handle_all($_POST['wysija']['field'], $id);
222
+ }
223
  }
224
  }
225
  $this->redirect();
core/base.php CHANGED
@@ -19,7 +19,7 @@ class WYSIJA_object{
19
  * Static variable holding core MailPoet's version
20
  * @var array
21
  */
22
- static $version = '2.6.15';
23
 
24
  function WYSIJA_object(){
25
 
19
  * Static variable holding core MailPoet's version
20
  * @var array
21
  */
22
+ static $version = '2.6.16';
23
 
24
  function WYSIJA_object(){
25
 
css/tmce/editor.css CHANGED
@@ -96,7 +96,7 @@
96
  -moz-transition: none;
97
  -webkit-transition: none;
98
  transition: none;
99
- background: url("../js/tinymce/skins/wordpress/images/icons.gif") no-repeat 20px 20px;
100
  }
101
 
102
  .wp_themeSkin span.mce_code:after {
@@ -311,7 +311,7 @@
311
  right: 3px;
312
  width: 7px;
313
  height: 7px;
314
- background: url("../js/tinymce/skins/wordpress/images/icons.gif") -820px 0;
315
  }
316
 
317
  /* Layout */
@@ -352,7 +352,7 @@
352
  .wp_themeSkin .mceStatusbar a.mceResize {
353
  display: block;
354
  float: right;
355
- background: url("../js/tinymce/skins/wordpress/images/icons.gif") -800px 0;
356
  width: 20px;
357
  height: 20px;
358
  cursor: se-resize;
96
  -moz-transition: none;
97
  -webkit-transition: none;
98
  transition: none;
99
+ /*background: url("../js/tinymce/skins/wordpress/images/icons.gif") no-repeat 20px 20px;*/
100
  }
101
 
102
  .wp_themeSkin span.mce_code:after {
311
  right: 3px;
312
  width: 7px;
313
  height: 7px;
314
+ /*background: url("../js/tinymce/skins/wordpress/images/icons.gif") -820px 0;*/
315
  }
316
 
317
  /* Layout */
352
  .wp_themeSkin .mceStatusbar a.mceResize {
353
  display: block;
354
  float: right;
355
+ /*background: url("../js/tinymce/skins/wordpress/images/icons.gif") -800px 0;*/
356
  width: 20px;
357
  height: 20px;
358
  cursor: se-resize;
css/validationEngine.jquery.css CHANGED
@@ -1,292 +1 @@
1
- .widget_wysija_cont .inputContainer {
2
- position: relative;
3
- float: left;
4
- }
5
-
6
- .widget_wysija_cont .ajaxSubmit {
7
- padding: 20px;
8
- background: #55ea55;
9
- border: 1px solid #999;
10
- display: none
11
- }
12
-
13
- .formError {
14
- position: absolute;
15
- top: 300px;
16
- left: 300px;
17
- display: block;
18
- z-index: 5000;
19
- cursor: pointer;
20
- }
21
-
22
- .formError .formErrorContent {
23
- background: none repeat scroll 0 0 #8E2121;
24
- border: 1px solid #BBBBBB;
25
- color: #FFFFFF;
26
- font-family: tahoma;
27
- font-size: 11px;
28
- padding: 4px 10px;
29
- position: relative;
30
- width: 150px;
31
- z-index: 5001;
32
- }
33
-
34
- .widget_wysija_cont .formError .formErrorArrow {
35
- width: 15px;
36
- margin: -2px 0 0 13px;
37
- position:relative;
38
- z-index: 5006;
39
- }
40
-
41
- .widget_wysija_cont .formError .formErrorArrowBottom {
42
- margin: 0px 0 0 12px;
43
- top:2px;
44
- }
45
-
46
- .widget_wysija_cont .formError .formErrorArrow div {
47
- border-left: 2px solid #ddd;
48
- border-right: 2px solid #ddd;
49
- font-size: 0px;
50
- height: 1px;
51
- background: #8E2121;
52
- margin: 0 auto;
53
- line-height: 0;
54
- font-size: 0;
55
- display: block;
56
- }
57
-
58
- .widget_wysija_cont .formError .formErrorArrowBottom div {
59
-
60
- }
61
-
62
- .widget_wysija_cont .greenPopup .formErrorArrow div {
63
- background: #33be40;
64
- }
65
-
66
- .widget_wysija_cont .blackPopup .formErrorArrow div {
67
- background: #393939;
68
- color: #FFF;
69
- }
70
-
71
- .widget_wysija_cont .formError .formErrorArrow .line10 {
72
- width: 15px;
73
- border: none;
74
- }
75
-
76
- .widget_wysija_cont .formError .formErrorArrow .line9 {
77
- width: 13px;
78
- border: none;
79
- }
80
-
81
- .widget_wysija_cont .formError .formErrorArrow .line8 {
82
- width: 11px;
83
- }
84
-
85
- .widget_wysija_cont .formError .formErrorArrow .line7 {
86
- width: 9px;
87
- }
88
-
89
- .widget_wysija_cont .formError .formErrorArrow .line6 {
90
- width: 7px;
91
- }
92
-
93
- .widget_wysija_cont .formError .formErrorArrow .line5 {
94
- width: 5px;
95
- }
96
-
97
- .widget_wysija_cont .formError .formErrorArrow .line4 {
98
- width: 3px;
99
- }
100
-
101
- .widget_wysija_cont .formError .formErrorArrow .line3 {
102
- width: 1px;
103
- border-left: 2px solid #ddd;
104
- border-right: 2px solid #ddd;
105
- border-bottom: 0 solid #ddd;
106
- }
107
-
108
- .widget_wysija_cont .formError .formErrorArrow .line2 {
109
- width: 3px;
110
- border: none;
111
- background: #ddd;
112
- }
113
-
114
- .widget_wysija_cont .formError .formErrorArrow .line1 {
115
- width: 1px;
116
- border: none;
117
- background: #ddd;
118
- }
119
-
120
-
121
- .greenPopup .formErrorContent {
122
- background: none repeat scroll 0 0 #FFFBCC;
123
- color:#555555;
124
- }
125
-
126
- /*Messages info*/
127
- .widget_wysija_cont .updated, .widget_wysija_cont .error, .widget_wysija_cont .xdetailed-errors {
128
- margin: 5px 0 15px;
129
- color: #333333;
130
- font-family: sans-serif;
131
- font-size: 12px;
132
- line-height: 1.4em;
133
- }
134
- .widget_wysija_cont .error, .widget_wysija_cont .login #login_error {
135
- background-color: #FFEBE8;
136
- border-color: #CC0000;
137
- }
138
- .widget_wysija_cont .updated, .widget_wysija_cont .error, .widget_wysija_cont .xdetailed-errors {
139
- border-radius: 3px;
140
- -moz-border-radius: 3px;
141
- -webkit-border-radius: 3px;
142
- -khtml-border-radius: 3px;
143
- border-style: solid;
144
- border-width: 1px;
145
- margin: 5px 15px 2px;
146
- padding: 0 0.6em;
147
- color:#333333;
148
- }
149
-
150
- .widget_wysija_cont.updated, .widget_wysija_cont .login .message {
151
- background-color: #FFFFE0;
152
- border-color: #E6DB55;
153
- }
154
- .widget_wysija_cont .xdetailed-updated {
155
- background-color: #FFFFE0;
156
- border-color: #E6DB55;
157
- color: #000;
158
- font-weight: bold;
159
- display:none;
160
- }
161
- .widget_wysija_cont .xdetailed-errors {
162
- background-color: #A50000;
163
- border-color: #888888;
164
- color: #DDDDDD;
165
- font-weight: bold;
166
- display:none;
167
- }
168
-
169
- .widget_wysija_cont .instruct {
170
- font-style:italic;
171
- font-weight:bold;
172
- padding:5px 0;
173
- font-size:11px;
174
- }
175
- .widget_wysija_cont .needInfo {
176
- padding-left:15px;
177
- text-decoration:underline;
178
- }
179
-
180
- .widget_wysija_cont .wysija-submit {
181
- display:block;
182
- margin-top:20px;
183
- }
184
-
185
- .widget_wysija_cont input.defaultlabels {
186
- color:#888;
187
- }
188
- .widget_wysija_cont input.defaultlabels:focus {
189
- color:#373737;
190
- }
191
- .widget_wysija_cont .abs-req {
192
- display:none;
193
- }
194
-
195
- .widget_wysija_cont p label {
196
- display:block;
197
- }
198
-
199
- .widget_wysija_cont .iframe-hidden {
200
- display:none;
201
- }
202
-
203
- /*frontend message default style (simple white and soft red) */
204
- .widget_wysija_cont .updated, .widget_wysija_cont .error, .widget_wysija_cont .xdetailed-errors {
205
- background-color: #FFFFFF;
206
- border: 1px solid;
207
- border-radius: 0 0 0 0;
208
- font-weight: normal;
209
- margin: 4px 0;
210
- padding: 4px;
211
- }
212
-
213
- .widget_wysija_cont .error, .widget_wysija_cont .xdetailed-errors{
214
- background-color: #e55057;
215
- color: #fff;
216
- }
217
-
218
- .widget_wysija_cont .error, .widget_wysija_cont .xdetailed-errors{
219
- background-color: #e55057;
220
- color: #fff;
221
- border-color: #CC0000;
222
- }
223
-
224
- .widget_wysija_cont .allmsgs ul{
225
- padding:0;
226
- }
227
-
228
- .widget_wysija_cont .allmsgs li{
229
- list-style-type: none;
230
- }
231
-
232
-
233
- .widget_wysija_cont .updated, .widget_wysija_cont .login .message {
234
- background-color: #FFFFE0;
235
- border-color: #E6DB55;
236
- }
237
-
238
- .widget_wysija_cont .updated ul {
239
- margin:0;
240
- }
241
-
242
-
243
- .widget_wysija_cont .showerrors {
244
- color:#DDDDDD;
245
- }
246
-
247
- #wysija-subscriptions input.checkboxx {
248
- margin-left:0px;
249
- margin-right:10px;
250
- }
251
-
252
- #wysija-subscriptions th label {
253
- margin-right:10px;
254
- }
255
- #wysija-box-after-comment {
256
- width:25px;
257
- }
258
-
259
- #wysija-box-after-register {
260
- margin: 0 6px 0 0;
261
- padding: 3px;
262
- }
263
- .wysija-after-register {
264
- padding-bottom: 10px;
265
- }
266
-
267
- .wysija-unsubscribed-on {
268
- color:#bbb;
269
- }
270
-
271
- /* new form */
272
- .widget_wysija .wysija-required {
273
- font-weight:bold;
274
- }
275
- .widget_wysija .wysija-radio-label,
276
- .widget_wysija .wysija-checkbox-label {
277
- margin:0 0 5px 0;
278
- cursor: pointer;
279
- }
280
- .widget_wysija .wysija-radio,
281
- .widget_wysija .wysija-checkbox {
282
- margin:0 5px 0 0;
283
- vertical-align: middle;
284
- }
285
-
286
- .xdetailed-errors, .xdetailed-updated{
287
- display:none;
288
- }
289
-
290
- .widget_wysija_cont .allmsgs .updated{
291
- display:block !important;
292
- }
1
+ .widget_wysija_cont .inputContainer{position:relative;float:left}.widget_wysija_cont .ajaxSubmit{padding:20px;background:#55ea55;border:1px solid #999;display:none}.formError{position:absolute;top:300px;left:300px;display:block;z-index:5000;cursor:pointer}.formError .formErrorContent{background:none repeat scroll 0 0 #8E2121;border:1px solid #BBBBBB;color:#FFFFFF;font-family:tahoma;font-size:11px;padding:4px 10px;position:relative;width:150px;z-index:5001}.widget_wysija_cont .formError .formErrorArrow{width:15px;margin:-2px 0 0 13px;position:relative;z-index:5006}.widget_wysija_cont .formError .formErrorArrowBottom{margin:0px 0 0 12px;top:2px}.widget_wysija_cont .formError .formErrorArrow div{border-left:2px solid #ddd;border-right:2px solid #ddd;font-size:0px;height:1px;background:#8E2121;margin:0 auto;line-height:0;font-size:0;display:block}.widget_wysija_cont .greenPopup .formErrorArrow div{background:#33be40}.widget_wysija_cont .blackPopup .formErrorArrow div{background:#393939;color:#FFF}.widget_wysija_cont .formError .formErrorArrow .line10{width:15px;border:none}.widget_wysija_cont .formError .formErrorArrow .line9{width:13px;border:none}.widget_wysija_cont .formError .formErrorArrow .line8{width:11px}.widget_wysija_cont .formError .formErrorArrow .line7{width:9px}.widget_wysija_cont .formError .formErrorArrow .line6{width:7px}.widget_wysija_cont .formError .formErrorArrow .line5{width:5px}.widget_wysija_cont .formError .formErrorArrow .line4{width:3px}.widget_wysija_cont .formError .formErrorArrow .line3{width:1px;border-left:2px solid #ddd;border-right:2px solid #ddd;border-bottom:0 solid #ddd}.widget_wysija_cont .formError .formErrorArrow .line2{width:3px;border:none;background:#ddd}.widget_wysija_cont .formError .formErrorArrow .line1{width:1px;border:none;background:#ddd}.greenPopup .formErrorContent{background:none repeat scroll 0 0 #FFFBCC;color:#555555}.widget_wysija_cont .updated,.widget_wysija_cont .error,.widget_wysija_cont .xdetailed-errors{margin:5px 0 15px;color:#333333;font-family:sans-serif;font-size:12px;line-height:1.4em}.widget_wysija_cont .error,.widget_wysija_cont .login #login_error{background-color:#FFEBE8;border-color:#CC0000}.widget_wysija_cont .updated,.widget_wysija_cont .error,.widget_wysija_cont .xdetailed-errors{border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px;border-style:solid;border-width:1px;margin:5px 15px 2px;padding:0 0.6em;color:#333333}.widget_wysija_cont.updated,.widget_wysija_cont .login .message{background-color:#FFFFE0;border-color:#E6DB55}.widget_wysija_cont .xdetailed-updated{background-color:#FFFFE0;border-color:#E6DB55;color:#000;font-weight:bold;display:none}.widget_wysija_cont .xdetailed-errors{background-color:#A50000;border-color:#888888;color:#DDDDDD;font-weight:bold;display:none}.widget_wysija_cont .instruct{font-style:italic;font-weight:bold;padding:5px 0;font-size:11px}.widget_wysija_cont .needInfo{padding-left:15px;text-decoration:underline}.widget_wysija_cont .wysija-submit{display:block;margin-top:20px}.widget_wysija_cont input.defaultlabels{color:#888}.widget_wysija_cont input.defaultlabels:focus{color:#373737}.widget_wysija_cont .abs-req{display:none}.widget_wysija_cont p label{display:block}.widget_wysija_cont .iframe-hidden{display:none}.widget_wysija_cont .updated,.widget_wysija_cont .error,.widget_wysija_cont .xdetailed-errors{background-color:#FFFFFF;border:1px solid;border-radius:0 0 0 0;font-weight:normal;margin:4px 0;padding:4px}.widget_wysija_cont .error,.widget_wysija_cont .xdetailed-errors{background-color:#e55057;color:#fff}.widget_wysija_cont .error,.widget_wysija_cont .xdetailed-errors{background-color:#e55057;color:#fff;border-color:#CC0000}.widget_wysija_cont .allmsgs ul{padding:0}.widget_wysija_cont .allmsgs li{list-style-type:none}.widget_wysija_cont .updated,.widget_wysija_cont .login .message{background-color:#FFFFE0;border-color:#E6DB55}.widget_wysija_cont .updated ul{margin:0}.widget_wysija_cont .showerrors{color:#DDDDDD}#wysija-subscriptions input.checkboxx{margin-left:0px;margin-right:10px}#wysija-subscriptions th label{margin-right:10px}#wysija-box-after-comment{width:25px}#wysija-box-after-register{margin:0 6px 0 0;padding:3px}.wysija-after-register{padding-bottom:10px}.wysija-unsubscribed-on{color:#bbb}.widget_wysija .wysija-required{font-weight:bold}.widget_wysija .wysija-radio-label,.widget_wysija .wysija-checkbox-label{margin:0 0 5px 0;cursor:pointer}.widget_wysija .wysija-radio,.widget_wysija .wysija-checkbox{margin:0 5px 0 0;vertical-align:middle}.xdetailed-errors,.xdetailed-updated{display:none}.widget_wysija_cont .allmsgs .updated{display:block !important}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
helpers/numbers.php CHANGED
@@ -1,57 +1,76 @@
1
  <?php
2
  defined('WYSIJA') or die('Restricted access');
3
  class WYSIJA_help_numbers extends WYSIJA_object{
4
-
5
  function WYSIJA_help_numbers(){
6
-
7
  }
8
-
9
-
10
  function format_number($int) {
11
- // strip any commas
12
  $int = (int)(0 + str_replace(',', '', $int));
13
 
14
  // make sure it's a number...
15
  if(!is_numeric($int)){ return false;}
16
 
17
- // filter and format it
18
- if($int>1000000000000){
19
  return round(($int/1000000000000),2).' trillion';
20
- }elseif($int>1000000000){
21
  return round(($int/1000000000),2).' billion';
22
- }elseif($int>1000000){
23
  return round(($int/1000000),2).' million';
24
- }elseif($int>1000){
25
  return round(($int/1000),2).' thousand';
26
  }
27
 
28
  return number_format($int);
29
  }
30
-
31
  /**
32
  * Calculate percetage of $a, based $b; and round down
33
  * @param mixed $a
34
  * @param mixed $b
35
  * @param type $decimal_number
36
- * @return real
37
  */
38
  function calculate_percetage($a, $b, $decimal_number = 2) {
39
- if (!is_numeric($b) || empty($b) || $b == 0 || $b == 0.0)
 
 
 
 
40
  return 0;
41
- else return round(($a/$b)*100,$decimal_number);
 
 
42
  }
43
-
44
  function get_max_file_upload(){
45
- $u_bytes = ini_get( 'upload_max_filesize' );
46
- $p_bytes = ini_get( 'post_max_size' );
 
 
 
 
 
 
 
 
 
47
  $data=array();
48
-
49
- $data['maxbytes']=$this->return_bytes(min($u_bytes, $p_bytes));
50
- $data['maxmegas'] = apply_filters( 'upload_size_limit', min($u_bytes, $p_bytes), $u_bytes, $p_bytes );
51
- $data['maxchars'] =(int)floor(($p_bytes*1024*1024)/200);
52
  return $data;
53
  }
54
-
 
 
 
 
55
  function return_bytes($size_str)
56
  {
57
  switch (substr ($size_str, -1))
@@ -62,5 +81,5 @@ class WYSIJA_help_numbers extends WYSIJA_object{
62
  default: return $size_str;
63
  }
64
  }
65
-
66
  }
1
  <?php
2
  defined('WYSIJA') or die('Restricted access');
3
  class WYSIJA_help_numbers extends WYSIJA_object{
4
+
5
  function WYSIJA_help_numbers(){
6
+
7
  }
8
+
9
+
10
  function format_number($int) {
11
+ // strip any commas
12
  $int = (int)(0 + str_replace(',', '', $int));
13
 
14
  // make sure it's a number...
15
  if(!is_numeric($int)){ return false;}
16
 
17
+ // filter and format it
18
+ if($int>1000000000000){
19
  return round(($int/1000000000000),2).' trillion';
20
+ }elseif($int>1000000000){
21
  return round(($int/1000000000),2).' billion';
22
+ }elseif($int>1000000){
23
  return round(($int/1000000),2).' million';
24
+ }elseif($int>1000){
25
  return round(($int/1000),2).' thousand';
26
  }
27
 
28
  return number_format($int);
29
  }
30
+
31
  /**
32
  * Calculate percetage of $a, based $b; and round down
33
  * @param mixed $a
34
  * @param mixed $b
35
  * @param type $decimal_number
36
+ * @return real
37
  */
38
  function calculate_percetage($a, $b, $decimal_number = 2) {
39
+ // cast values to float
40
+ $a = (float)$a;
41
+ $b = (float)$b;
42
+
43
+ if($b === 0.0) {
44
  return 0;
45
+ } else {
46
+ return round(($a / $b) * 100, $decimal_number);
47
+ }
48
  }
49
+
50
  function get_max_file_upload(){
51
+ if(defined('HHVM_VERSION')) {
52
+ $u_bytes = ini_get('hhvm.server.upload.upload_max_file_size');
53
+ $p_bytes = ini_get('hhvm.server.max_post_size');
54
+ } else {
55
+ $u_bytes = ini_get('upload_max_filesize');
56
+ $p_bytes = ini_get('post_max_size');
57
+ }
58
+ // uniform bytes
59
+ $u_bytes = $this->return_bytes($u_bytes);
60
+ $p_bytes = $this->return_bytes($p_bytes);
61
+
62
  $data=array();
63
+
64
+ $data['maxbytes'] = min($u_bytes, $p_bytes);
65
+ $data['maxmegas'] = $this->return_megas(apply_filters( 'upload_size_limit', min($u_bytes, $p_bytes), $u_bytes, $p_bytes ));
66
+ $data['maxchars'] = (int)floor(($p_bytes*1024*1024)/200);
67
  return $data;
68
  }
69
+
70
+ function return_megas($size_bytes) {
71
+ return ($size_bytes / 1024 / 1024) . 'M';
72
+ }
73
+
74
  function return_bytes($size_str)
75
  {
76
  switch (substr ($size_str, -1))
81
  default: return $size_str;
82
  }
83
  }
84
+
85
  }
helpers/server.php CHANGED
@@ -191,7 +191,7 @@ class WYSIJA_help_server extends WYSIJA_object {
191
  `sub_date` INT unsigned DEFAULT 0,
192
  `unsub_date` INT unsigned DEFAULT 0,
193
  PRIMARY KEY (`list_id`,`user_id`)
194
- ) ENGINE=MyISAM';
195
 
196
  global $wpdb;
197
 
191
  `sub_date` INT unsigned DEFAULT 0,
192
  `unsub_date` INT unsigned DEFAULT 0,
193
  PRIMARY KEY (`list_id`,`user_id`)
194
+ )';
195
 
196
  global $wpdb;
197
 
helpers/update.php CHANGED
@@ -229,7 +229,7 @@ class WYSIJA_help_update extends WYSIJA_object {
229
  '`styles` longtext COLLATE utf8_bin,'.
230
  '`subscribed` int(10) unsigned NOT NULL DEFAULT "0",'.
231
  'PRIMARY KEY (`form_id`)'.
232
- ') ENGINE=MyISAM /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci*/';
233
 
234
  $errors = $this->runUpdateQueries($queries);
235
 
@@ -443,7 +443,7 @@ class WYSIJA_help_update extends WYSIJA_object {
443
  '`required` tinyint(1) DEFAULT "0" NOT NULL,'.
444
  '`settings` text DEFAULT NULL,'.
445
  'PRIMARY KEY (`id`)'.
446
- ') ENGINE=MyISAM /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci*/';
447
 
448
  $errors = $this->runUpdateQueries( $queries );
449
 
229
  '`styles` longtext COLLATE utf8_bin,'.
230
  '`subscribed` int(10) unsigned NOT NULL DEFAULT "0",'.
231
  'PRIMARY KEY (`form_id`)'.
232
+ ') /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci*/';
233
 
234
  $errors = $this->runUpdateQueries($queries);
235
 
443
  '`required` tinyint(1) DEFAULT "0" NOT NULL,'.
444
  '`settings` text DEFAULT NULL,'.
445
  'PRIMARY KEY (`id`)'.
446
+ ') /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci*/';
447
 
448
  $errors = $this->runUpdateQueries( $queries );
449
 
index.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: MailPoet Newsletters
4
  Plugin URI: http://www.mailpoet.com/
5
  Description: Create and send newsletters or automated emails. Capture subscribers with a widget. Import and manage your lists. MailPoet is a sweet plugin maintained and supported with love by <a target="_blank" href="http://www.mailpoet.com/about-the-wysija-team-members/?utm_medium=plugin&utm_campaign=know_team&utm_source=wp_plugins_list">a team of a dozen</a>.
6
- Version: 2.6.15
7
  Author: MailPoet
8
  Author URI: http://www.mailpoet.com/
9
  License: GPLv2 or later
3
  Plugin Name: MailPoet Newsletters
4
  Plugin URI: http://www.mailpoet.com/
5
  Description: Create and send newsletters or automated emails. Capture subscribers with a widget. Import and manage your lists. MailPoet is a sweet plugin maintained and supported with love by <a target="_blank" href="http://www.mailpoet.com/about-the-wysija-team-members/?utm_medium=plugin&utm_campaign=know_team&utm_source=wp_plugins_list">a team of a dozen</a>.
6
+ Version: 2.6.16
7
  Author: MailPoet
8
  Author URI: http://www.mailpoet.com/
9
  License: GPLv2 or later
languages/wysija-newsletters-af.mo CHANGED
Binary file
languages/wysija-newsletters-ar.mo CHANGED
Binary file
languages/wysija-newsletters-be.mo ADDED
Binary file
languages/wysija-newsletters-bg_BG.mo CHANGED
Binary file
languages/wysija-newsletters-ca.mo CHANGED
Binary file
languages/wysija-newsletters-cs_CZ.mo CHANGED
Binary file
languages/wysija-newsletters-de_CH.mo ADDED
Binary file
languages/wysija-newsletters-de_DE.mo CHANGED
Binary file
languages/wysija-newsletters-el.mo CHANGED
Binary file
languages/wysija-newsletters-es.mo CHANGED
Binary file
languages/wysija-newsletters-es_419.mo CHANGED
Binary file
languages/wysija-newsletters-es_ES.mo CHANGED
Binary file
languages/wysija-newsletters-es_MX.mo ADDED
Binary file
languages/wysija-newsletters-eu.mo CHANGED
Binary file
languages/wysija-newsletters-fi.mo CHANGED
Binary file
languages/wysija-newsletters-fr_FR.mo CHANGED
Binary file
languages/wysija-newsletters-hr_HR.mo CHANGED
Binary file
languages/wysija-newsletters-hu_HU.mo CHANGED
Binary file
languages/wysija-newsletters-id.mo CHANGED
Binary file
languages/wysija-newsletters-is_IS.mo ADDED
Binary file
languages/wysija-newsletters-it_IT.mo CHANGED
Binary file
languages/wysija-newsletters-ja.mo CHANGED
Binary file
languages/wysija-newsletters-ko_KR.mo CHANGED
Binary file
languages/wysija-newsletters-lt_LT.mo CHANGED
Binary file
languages/wysija-newsletters-lv.mo CHANGED
Binary file
languages/wysija-newsletters-nb_NO.mo CHANGED
Binary file
languages/wysija-newsletters-nl_NL.mo CHANGED
Binary file
languages/wysija-newsletters-pl_PL.mo CHANGED
Binary file
languages/wysija-newsletters-pt_BR.mo CHANGED
Binary file
languages/wysija-newsletters-pt_PT.mo CHANGED
Binary file
languages/wysija-newsletters-ro_RO.mo CHANGED
Binary file
languages/wysija-newsletters-ru_RU.mo CHANGED
Binary file
languages/wysija-newsletters-sl_SI.mo CHANGED
Binary file
languages/wysija-newsletters-sq.mo CHANGED
Binary file
languages/wysija-newsletters-sv_SE.mo CHANGED
Binary file
languages/wysija-newsletters-tr_TR.mo CHANGED
Binary file
languages/wysija-newsletters-uk.mo CHANGED
Binary file
readme.txt CHANGED
@@ -2,8 +2,8 @@
2
  Contributors: wysija, kgjerstad, benheu, JoN1oP, badshark, rafaehlers, rafaelfunchal, _dorsvenabili, vvaz, keiferski
3
  Tags: newsletter, newsletters, email newsletter, email subscription, newsletter signup, post notification, autoresponder, newsletter alert, auto newsletter, automatic post notification, email newsletters, email signup, auto post notifications, newsletter widget, newsletter builder, subscribe widget, signup widget, email subscription, newsletter plugin, widget, subscription, emailing, mailpoet, wysija, mandrill, sendgrid
4
  Requires at least: 3.3
5
- Tested up to: 4.1
6
- Stable tag: 2.6.15
7
  Send newsletters post notifications or autoresponders from WordPress easily, and beautifully. Start to capture subscribers with our widget now.
8
 
9
  == Description ==
@@ -14,11 +14,7 @@ We built it with the idea that newsletters in WordPress should be easy. Not hard
14
 
15
  = Check out this 2 minute video. =
16
 
17
- http://vimeo.com/35054446
18
-
19
- = Post notifications video. =
20
-
21
- http://vimeo.com/46247528
22
 
23
  = Features =
24
 
@@ -39,7 +35,7 @@ http://vimeo.com/46247528
39
 
40
  = Premium version =
41
 
42
- [MailPoet Premium](http://www.mailpoet.com/wordpress-newsletter-plugin-premium/) offers these nifty extra features:
43
 
44
  * Send to more than 2000 subscribers
45
  * A beautiful statistics dashboard to compare your newsletters, and subscribers
@@ -50,7 +46,7 @@ http://vimeo.com/46247528
50
  * Don't reinstall. Simply install an additional plugin
51
  * Priority support: let us optimize your settings!
52
 
53
- [Visit our Premium page](http://www.mailpoet.com/wordpress-newsletter-plugin-premium/).
54
 
55
  = Support =
56
 
@@ -134,6 +130,12 @@ Our [support site](http://support.mailpoet.com/) has plenty of articles and a ti
134
 
135
  == Changelog ==
136
 
 
 
 
 
 
 
137
  = 2.6.15 - 2015-02-17 =
138
  * Fixed hidden signup confirmation when the theme "Twenty Fifteen" is activated
139
  * Fixed import issue on Windows servers, all valid subscribers CSV files can be imported now
@@ -968,4 +970,4 @@ Our [support site](http://support.mailpoet.com/) has plenty of articles and a ti
968
  * minor bugfixes
969
 
970
  = 0.9 - 2011/12/3 =
971
- * Hello World.
2
  Contributors: wysija, kgjerstad, benheu, JoN1oP, badshark, rafaehlers, rafaelfunchal, _dorsvenabili, vvaz, keiferski
3
  Tags: newsletter, newsletters, email newsletter, email subscription, newsletter signup, post notification, autoresponder, newsletter alert, auto newsletter, automatic post notification, email newsletters, email signup, auto post notifications, newsletter widget, newsletter builder, subscribe widget, signup widget, email subscription, newsletter plugin, widget, subscription, emailing, mailpoet, wysija, mandrill, sendgrid
4
  Requires at least: 3.3
5
+ Tested up to: 4.2
6
+ Stable tag: 2.6.16
7
  Send newsletters post notifications or autoresponders from WordPress easily, and beautifully. Start to capture subscribers with our widget now.
8
 
9
  == Description ==
14
 
15
  = Check out this 2 minute video. =
16
 
17
+ https://vimeo.com/130151897
 
 
 
 
18
 
19
  = Features =
20
 
35
 
36
  = Premium version =
37
 
38
+ [MailPoet Premium](http://www.mailpoet.com/premium/) offers these nifty extra features:
39
 
40
  * Send to more than 2000 subscribers
41
  * A beautiful statistics dashboard to compare your newsletters, and subscribers
46
  * Don't reinstall. Simply install an additional plugin
47
  * Priority support: let us optimize your settings!
48
 
49
+ [Visit our Premium page](http://www.mailpoet.com/premium/).
50
 
51
  = Support =
52
 
130
 
131
  == Changelog ==
132
 
133
+ = 2.6.16 - 2015-06-23 =
134
+ * Added HHVM support
135
+ * Added MariaDB support
136
+ * Fixed import issue where existing subscriber's data was not updated
137
+ * Fixed minor issues
138
+
139
  = 2.6.15 - 2015-02-17 =
140
  * Fixed hidden signup confirmation when the theme "Twenty Fifteen" is activated
141
  * Fixed import issue on Windows servers, all valid subscribers CSV files can be imported now
970
  * minor bugfixes
971
 
972
  = 0.9 - 2011/12/3 =
973
+ * Hello World.
sql/install.sql CHANGED
@@ -4,7 +4,7 @@ CREATE TABLE IF NOT EXISTS `user_list` (
4
  `sub_date` INT unsigned DEFAULT 0,
5
  `unsub_date` INT unsigned DEFAULT 0,
6
  PRIMARY KEY (`list_id`,`user_id`)
7
- ) ENGINE=MyISAM /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci*/;
8
 
9
  -- QUERY ---
10
 
@@ -25,7 +25,7 @@ CREATE TABLE IF NOT EXISTS `user` (
25
  `domain` VARCHAR(255) NULL DEFAULT '',
26
  PRIMARY KEY (`user_id`),
27
  UNIQUE KEY `EMAIL_UNIQUE` (`email`)
28
- ) ENGINE=MyISAM /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci*/;
29
 
30
 
31
  -- QUERY ---
@@ -42,7 +42,7 @@ CREATE TABLE IF NOT EXISTS `list` (
42
  `created_at` INT unsigned NULL,
43
  `ordering` INT unsigned NOT NULL DEFAULT 0,
44
  PRIMARY KEY (`list_id`)
45
- ) ENGINE=MyISAM /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci*/;
46
 
47
  -- QUERY ---
48
 
@@ -51,7 +51,7 @@ CREATE TABLE IF NOT EXISTS `campaign` (
51
  `name` VARCHAR(250) NULL,
52
  `description` TEXT NULL,
53
  PRIMARY KEY (`campaign_id`)
54
- ) ENGINE=MyISAM /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci*/;
55
 
56
  -- QUERY ---
57
 
@@ -60,7 +60,7 @@ CREATE TABLE IF NOT EXISTS `campaign_list` (
60
  `campaign_id` INT unsigned NOT NULL,
61
  `filter` TEXT NULL,
62
  PRIMARY KEY (`list_id`,`campaign_id`)
63
- ) ENGINE=MyISAM /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci*/;
64
 
65
  -- QUERY ---
66
 
@@ -89,7 +89,7 @@ CREATE TABLE IF NOT EXISTS `email` (
89
  `wj_data` LONGTEXT NULL,
90
  `wj_styles` LONGTEXT NULL,
91
  PRIMARY KEY (`email_id`)
92
- ) ENGINE=MyISAM /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci*/;
93
 
94
  -- QUERY ---
95
 
@@ -103,7 +103,7 @@ CREATE TABLE IF NOT EXISTS `user_field` (
103
  `is_required` TINYINT unsigned NOT NULL DEFAULT 0,
104
  `error_message` VARCHAR(250) NOT NULL DEFAULT '',
105
  PRIMARY KEY (`field_id`)
106
- ) ENGINE=MyISAM /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci*/;
107
 
108
  -- QUERY ---
109
 
@@ -115,7 +115,7 @@ CREATE TABLE IF NOT EXISTS `queue` (
115
  `number_try` TINYINT unsigned NOT NULL DEFAULT 0,
116
  PRIMARY KEY (`user_id`,`email_id`),
117
  KEY `SENT_AT_INDEX` (`send_at`)
118
- ) ENGINE=MyISAM /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci*/;
119
 
120
 
121
  -- QUERY ---
@@ -130,7 +130,7 @@ CREATE TABLE IF NOT EXISTS `user_history` (
130
  `executed_by` INT unsigned NULL,
131
  `source` TEXT NULL,
132
  PRIMARY KEY (`history_id`)
133
- ) ENGINE=MyISAM /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci*/;
134
 
135
  -- QUERY ---
136
 
@@ -141,7 +141,7 @@ CREATE TABLE IF NOT EXISTS `email_user_stat` (
141
  `opened_at` INT unsigned NULL,
142
  `status` TINYINT NOT NULL DEFAULT 0,
143
  PRIMARY KEY (`user_id`,`email_id`)
144
- ) ENGINE=MyISAM /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci*/;
145
 
146
  -- QUERY ---
147
 
@@ -150,7 +150,7 @@ CREATE TABLE IF NOT EXISTS `url` (
150
  `name` VARCHAR(250) NULL,
151
  `url` TEXT NULL,
152
  PRIMARY KEY (`url_id`)
153
- ) ENGINE=MyISAM /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci*/;
154
 
155
  -- QUERY ---
156
 
@@ -161,7 +161,7 @@ CREATE TABLE IF NOT EXISTS `email_user_url` (
161
  `clicked_at` INT unsigned NULL,
162
  `number_clicked` INT unsigned NOT NULL DEFAULT 0 ,
163
  PRIMARY KEY (`user_id`,`email_id`,`url_id`)
164
- ) ENGINE=MyISAM /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci*/;
165
 
166
  -- QUERY ---
167
 
@@ -171,7 +171,7 @@ CREATE TABLE IF NOT EXISTS `url_mail` (
171
  `unique_clicked` INT unsigned NOT NULL DEFAULT 0,
172
  `total_clicked` INT unsigned NOT NULL DEFAULT 0,
173
  PRIMARY KEY (`email_id`,`url_id`)
174
- ) ENGINE=MyISAM /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci*/;
175
 
176
  -- QUERY ---
177
 
@@ -182,7 +182,7 @@ CREATE TABLE IF NOT EXISTS `form` (
182
  `styles` longtext COLLATE utf8_bin,
183
  `subscribed` int(10) unsigned NOT NULL DEFAULT '0',
184
  PRIMARY KEY (`form_id`)
185
- ) ENGINE=MyISAM /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci*/;
186
 
187
  -- QUERY ---
188
 
@@ -193,4 +193,4 @@ CREATE TABLE IF NOT EXISTS `custom_field` (
193
  `required` tinyint(1) DEFAULT "0" NOT NULL,
194
  `settings` text DEFAULT NULL,
195
  PRIMARY KEY (`id`)
196
- ) ENGINE=MyISAM /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci*/;
4
  `sub_date` INT unsigned DEFAULT 0,
5
  `unsub_date` INT unsigned DEFAULT 0,
6
  PRIMARY KEY (`list_id`,`user_id`)
7
+ ) /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci*/;
8
 
9
  -- QUERY ---
10
 
25
  `domain` VARCHAR(255) NULL DEFAULT '',
26
  PRIMARY KEY (`user_id`),
27
  UNIQUE KEY `EMAIL_UNIQUE` (`email`)
28
+ ) /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci*/;
29
 
30
 
31
  -- QUERY ---
42
  `created_at` INT unsigned NULL,
43
  `ordering` INT unsigned NOT NULL DEFAULT 0,
44
  PRIMARY KEY (`list_id`)
45
+ ) /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci*/;
46
 
47
  -- QUERY ---
48
 
51
  `name` VARCHAR(250) NULL,
52
  `description` TEXT NULL,
53
  PRIMARY KEY (`campaign_id`)
54
+ ) /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci*/;
55
 
56
  -- QUERY ---
57
 
60
  `campaign_id` INT unsigned NOT NULL,
61
  `filter` TEXT NULL,
62
  PRIMARY KEY (`list_id`,`campaign_id`)
63
+ ) /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci*/;
64
 
65
  -- QUERY ---
66
 
89
  `wj_data` LONGTEXT NULL,
90
  `wj_styles` LONGTEXT NULL,
91
  PRIMARY KEY (`email_id`)
92
+ ) /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci*/;
93
 
94
  -- QUERY ---
95
 
103
  `is_required` TINYINT unsigned NOT NULL DEFAULT 0,
104
  `error_message` VARCHAR(250) NOT NULL DEFAULT '',
105
  PRIMARY KEY (`field_id`)
106
+ ) /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci*/;
107
 
108
  -- QUERY ---
109
 
115
  `number_try` TINYINT unsigned NOT NULL DEFAULT 0,
116
  PRIMARY KEY (`user_id`,`email_id`),
117
  KEY `SENT_AT_INDEX` (`send_at`)
118
+ ) /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci*/;
119
 
120
 
121
  -- QUERY ---
130
  `executed_by` INT unsigned NULL,
131
  `source` TEXT NULL,
132
  PRIMARY KEY (`history_id`)
133
+ ) /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci*/;
134
 
135
  -- QUERY ---
136
 
141
  `opened_at` INT unsigned NULL,
142
  `status` TINYINT NOT NULL DEFAULT 0,
143
  PRIMARY KEY (`user_id`,`email_id`)
144
+ ) /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci*/;
145
 
146
  -- QUERY ---
147
 
150
  `name` VARCHAR(250) NULL,
151
  `url` TEXT NULL,
152
  PRIMARY KEY (`url_id`)
153
+ ) /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci*/;
154
 
155
  -- QUERY ---
156
 
161
  `clicked_at` INT unsigned NULL,
162
  `number_clicked` INT unsigned NOT NULL DEFAULT 0 ,
163
  PRIMARY KEY (`user_id`,`email_id`,`url_id`)
164
+ ) /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci*/;
165
 
166
  -- QUERY ---
167
 
171
  `unique_clicked` INT unsigned NOT NULL DEFAULT 0,
172
  `total_clicked` INT unsigned NOT NULL DEFAULT 0,
173
  PRIMARY KEY (`email_id`,`url_id`)
174
+ ) /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci*/;
175
 
176
  -- QUERY ---
177
 
182
  `styles` longtext COLLATE utf8_bin,
183
  `subscribed` int(10) unsigned NOT NULL DEFAULT '0',
184
  PRIMARY KEY (`form_id`)
185
+ ) /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci*/;
186
 
187
  -- QUERY ---
188
 
193
  `required` tinyint(1) DEFAULT "0" NOT NULL,
194
  `settings` text DEFAULT NULL,
195
  PRIMARY KEY (`id`)
196
+ ) /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci*/;
views/back/campaigns.php CHANGED
@@ -2863,12 +2863,10 @@ class WYSIJA_view_back_campaigns extends WYSIJA_view_back {
2863
 
2864
  default :
2865
  foreach ($section['paragraphs'] as $line) {
2866
- ?>
2867
- <p><?php echo $line ?></p>
2868
- <?php
2869
- }
2870
- }
2871
- ?>
2872
  </div>
2873
  </div>
2874
  <?php
@@ -2932,16 +2930,24 @@ class WYSIJA_view_back_campaigns extends WYSIJA_view_back {
2932
  $sharing_data = $model_config->getValue('analytics');
2933
  if( empty( $sharing_data ) ){
2934
  $data['sections'][] = array(
2935
- 'title' => __('We need your help!',WYSIJA),
2936
 
2937
- 'content' => '<div style="margin-bottom: 14px;"><img src="http://ps.w.org/wysija-newsletters/assets/new-support-team.jpg" width="390px" height="181px" title="'.__('We need your help!',WYSIJA).'" alt="Rafael F., Kim, Rocio and Rafael E. from MailPoet" /></div>
2938
- <div class="mpoet-update-subscribe-left" style="width: 390px;">
2939
- <p>'.__('Here at MailPoet, we want to constantly improve our plugin.',WYSIJA).'</p>
2940
- <p>'. __("If you want to help us better understand your needs, you can do so by sharing some anonymous data with us.",WYSIJA).' '. __( 'Thanks!' ,WYSIJA).'</p>'.
 
 
 
 
 
 
 
 
2941
 
2942
- '<a href="javascript:;" id="share_analytics" class="button-primary">'.__('Share anonymous data',WYSIJA).'</a><div id="update-loading-icon"></div>'.
2943
- '<p><a style="font-size: 12px;" href="http://support.mailpoet.com/knowledgebase/share-your-data/?utm_medium=plugin&utm_campaign=know_data&utm_source=update_page" target="_blank">' . __('Read more about the shared data.',WYSIJA) .'</a></p>'
2944
- .'</div>',
2945
  'format' => 'title-content',
2946
  );
2947
  }
@@ -3072,8 +3078,7 @@ class WYSIJA_view_back_campaigns extends WYSIJA_view_back {
3072
  echo '</div>';
3073
 
3074
 
3075
- echo '<div class="mpoet-update-subscribe" ><h4>3. '.__( 'Subscribe to our newsletters', WYSIJA ).'</h4>'.
3076
- '<div class="mpoet-update-subscribe-left"><p>'.__('We send a monthly newsletter with the following:',WYSIJA).'</p>' .
3077
  '<ul>' .
3078
  '<li>'.__('Important plugin updates',WYSIJA).'</li>' .
3079
  '<li>'.__('Coupons',WYSIJA).'</li>' .
@@ -3081,11 +3086,11 @@ class WYSIJA_view_back_campaigns extends WYSIJA_view_back {
3081
  '<li>'.__('What we’re working on',WYSIJA).'</li>' .
3082
  '<li>'.__('News from us, the team',WYSIJA).'</li>' .
3083
  '</ul>
3084
- <p>View <a target="_blank" href="http://www.mailpoet.com/?wysija-page=1&controller=email&action=view&email_id=64&wysijap=subscriptions-2">an example</a> of a newsletter we sent previously.</p>
3085
  </div>' .
3086
  '<div class="mpoet-update-subscribe-right">' .
3087
 
3088
- '<iframe width="380px" scrolling="no" frameborder="0" src="http://www.mailpoet.com/?wysija-page=1&controller=subscribers&action=wysija_outter&wysija_form=5&external_site=1&wysijap=subscriptions-3" class="iframe-wysija" vspace="0" tabindex="0" style="position: static; top: 0pt; margin: 0px; border-style: none; height: 125px; left: 0pt; visibility: visible; background-color: #f1f1f1!important;" marginwidth="0" marginheight="0" hspace="0" allowtransparency="true" title="Subscription Wysija"></iframe>
3089
  </div>
3090
  <div style="clear:both;"></div>
3091
 
2863
 
2864
  default :
2865
  foreach ($section['paragraphs'] as $line) {
2866
+ echo '<p>'.$line.'</p>';
2867
+ }
2868
+ }
2869
+ ?>
 
 
2870
  </div>
2871
  </div>
2872
  <?php
2930
  $sharing_data = $model_config->getValue('analytics');
2931
  if( empty( $sharing_data ) ){
2932
  $data['sections'][] = array(
2933
+ 'title' => __('One quick question...',WYSIJA),
2934
 
2935
+ 'content' => '<div class="feature-section"><iframe frameborder="0" width="100%" height="370" scrolling="auto" allowtransparency="true" src="//mailpoet.polldaddy.com/s/what-s-new-poll-june-2015?iframe=1"><a href="//mailpoet.polldaddy.com/s/what-s-new-poll-june-2015">View Survey</a></iframe></div>'.
2936
+ '<div class="mpoet-update-subscribe" ><h4>'.__( 'Subscribe to our newsletters', WYSIJA ).'</h4><div class="mpoet-update-subscribe-left"> <p>'.__('We send a monthly newsletter with the following:',WYSIJA).'</p>' .
2937
+ '<ul>' .
2938
+ '<li>'.__('Important plugin updates',WYSIJA).'</li>' .
2939
+ '<li>'.__('Coupons',WYSIJA).'</li>' .
2940
+ '<li>'.__('Tips for you, or your customers',WYSIJA).'</li>' .
2941
+ '<li>'.__('What we’re working on',WYSIJA).'</li>' .
2942
+ '<li>'.__('News from us, the team',WYSIJA).'</li>' .
2943
+ '</ul>
2944
+ <p>View an <a target="_blank" href="http://www.mailpoet.com/?wysija-page=1&controller=email&action=view&email_id=1181&wysijap=subscriptions-3">an example blog post email</a> and <a target="_blank" href="http://www.mailpoet.com/?wysija-page=1&controller=email&action=view&email_id=64&wysijap=subscriptions-2">an example newsletter</a>.</p>
2945
+ </div>' .
2946
+ '<div class="mpoet-update-subscribe-right">' .
2947
 
2948
+ '<iframe width="380" scrolling="no" frameborder="0" src="http://www.mailpoet.com/?wysija-page=1&controller=subscribers&action=wysija_outter&wysija_form=5&external_site=1&wysijap=subscriptions-3" class="iframe-wysija" vspace="0" tabindex="0" style="position: static; top: 0pt; margin: 0px; border-style: none; height: 180px; left: 0pt; visibility: visible; background-color: #f1f1f1!important;" marginwidth="0" marginheight="0" hspace="0" allowtransparency="true" title="Subscription Wysija"></iframe>
2949
+ </div>
2950
+ <div style="clear:both;"></div>',
2951
  'format' => 'title-content',
2952
  );
2953
  }
3078
  echo '</div>';
3079
 
3080
 
3081
+ echo '<div class="mpoet-update-subscribe" ><div class="mpoet-update-subscribe-left"><h4>'.__( 'Subscribe to our newsletters', WYSIJA ).'</h4> <p>'.__('We send a monthly newsletter with the following:',WYSIJA).'</p>' .
 
3082
  '<ul>' .
3083
  '<li>'.__('Important plugin updates',WYSIJA).'</li>' .
3084
  '<li>'.__('Coupons',WYSIJA).'</li>' .
3086
  '<li>'.__('What we’re working on',WYSIJA).'</li>' .
3087
  '<li>'.__('News from us, the team',WYSIJA).'</li>' .
3088
  '</ul>
3089
+ <p>View an <a target="_blank" href="http://www.mailpoet.com/?wysija-page=1&controller=email&action=view&email_id=1181&wysijap=subscriptions-3">an example blog post email</a> and <a target="_blank" href="http://www.mailpoet.com/?wysija-page=1&controller=email&action=view&email_id=64&wysijap=subscriptions-2">an example newsletter</a>.</p>
3090
  </div>' .
3091
  '<div class="mpoet-update-subscribe-right">' .
3092
 
3093
+ '<iframe width="380" scrolling="no" frameborder="0" src="http://www.mailpoet.com/?wysija-page=1&controller=subscribers&action=wysija_outter&wysija_form=5&external_site=1&wysijap=subscriptions-3" class="iframe-wysija" vspace="0" tabindex="0" style="position: static; top: 0pt; margin: 0px; border-style: none; height: 180px; left: 0pt; visibility: visible; background-color: #f1f1f1!important;" marginwidth="0" marginheight="0" hspace="0" allowtransparency="true" title="Subscription Wysija"></iframe>
3094
  </div>
3095
  <div style="clear:both;"></div>
3096
 
views/back/subscribers.php CHANGED
@@ -302,43 +302,47 @@ class WYSIJA_view_back_subscribers extends WYSIJA_view_back
302
  </div>
303
  </td>
304
  </tr>
305
- <?php } ?>
306
-
307
- <tbody class="list:<?php echo $this->model->table_name.' '.$this->model->table_name.'-list" id="wysija-'.$this->model->table_name.'"' ?>>
 
 
308
 
 
309
  <?php
310
- $listingRows = '';
311
- $alt = true;
312
 
313
- $statuses = array('-1' => __('Unsubscribed', WYSIJA), '0' => __('Unconfirmed', WYSIJA), '1' => __('Subscribed', WYSIJA));
314
 
315
- $config = WYSIJA::get('config', 'model');
316
- if (!$config->getValue('confirm_dbleoptin'))
317
- $statuses['0'] = $statuses['1'];
 
318
 
319
- $links_helper = WYSIJA::get('links', 'helper');
320
- foreach ($data['subscribers'] as $row)
321
- {
322
- $classRow = '';
323
- if ($alt)
324
- $classRow = ' class="alternate" ';
325
- ?>
326
- <tr <?php echo $classRow ?> >
327
 
328
- <th scope="col" class="check-column" >
329
- <input type="checkbox" name="wysija[user][user_id][]" id="user_id_<?php echo $row['user_id'] ?>" value="<?php echo esc_attr($row['user_id']) ?>" class="checkboxselec" />
330
- </th>
331
- <td class="username column-username">
332
- <?php
333
- echo get_avatar($row['email'], 32);
334
- echo '<strong>'.$row['email'].'</strong>';
335
- echo '<p style="margin:0;">'.esc_html($row['firstname'].' '.$row['lastname']).'</p>';
336
- ?>
337
- <div class="row-actions">
338
- <span class="edit">
339
- <a href="<?php echo $links_helper->detailed_subscriber($row['user_id']); ?>" class="submitedit"><?php _e('View stats or edit', WYSIJA) ?></a>
340
- </span>
341
- </div>
 
 
342
  </td>
343
  <td><?php
344
  if (isset($row['lists']))
@@ -608,14 +612,14 @@ class WYSIJA_view_back_subscribers extends WYSIJA_view_back
608
  ?>
609
  </td>
610
  </tr>
611
- <?php
612
- /*
613
- Custom Fields.
614
- */
615
- echo WJ_FieldRender::render_all(
616
- $data['user']['details']['user_id']
617
- );
618
- ?>
619
  <tr class='submit_row'>
620
  <td colspan='2'>
621
  <?php $this->secure(array('action' => "save", 'id' => $data['user']['details']['user_id'])); ?>
302
  </div>
303
  </td>
304
  </tr>
305
+ <?php
306
+ }
307
+ $class = 'list:'.$this->model->table_name.' '.$this->model->table_name.'-list';
308
+ $id = 'wysija-'.$this->model->table_name;
309
+ ?>
310
 
311
+ <tbody class="<?php echo $class; ?>" id="<?php echo $id; ?>">
312
  <?php
313
+ $listingRows = '';
314
+ $alt = true;
315
 
316
+ $statuses = array('-1' => __('Unsubscribed', WYSIJA), '0' => __('Unconfirmed', WYSIJA), '1' => __('Subscribed', WYSIJA));
317
 
318
+ $config = WYSIJA::get('config', 'model');
319
+ if(!$config->getValue('confirm_dbleoptin')) {
320
+ $statuses['0'] = $statuses['1'];
321
+ }
322
 
323
+ $links_helper = WYSIJA::get('links', 'helper');
324
+ foreach ($data['subscribers'] as $row) {
325
+ $classRow = '';
326
+ if($alt) {
327
+ $classRow = 'alternate';
328
+ }
 
 
329
 
330
+ ?>
331
+ <tr class="<?php echo $classRow; ?>">
332
+ <th scope="col" class="check-column" >
333
+ <input type="checkbox" name="wysija[user][user_id][]" id="user_id_<?php echo $row['user_id'] ?>" value="<?php echo esc_attr($row['user_id']) ?>" class="checkboxselec" />
334
+ </th>
335
+ <td class="username column-username">
336
+ <?php
337
+ echo get_avatar($row['email'], 32);
338
+ echo '<strong>'.$row['email'].'</strong>';
339
+ echo '<p style="margin:0;">'.esc_html($row['firstname'].' '.$row['lastname']).'</p>';
340
+ ?>
341
+ <div class="row-actions">
342
+ <span class="edit">
343
+ <a href="<?php echo $links_helper->detailed_subscriber($row['user_id']); ?>" class="submitedit"><?php _e('View stats or edit', WYSIJA) ?></a>
344
+ </span>
345
+ </div>
346
  </td>
347
  <td><?php
348
  if (isset($row['lists']))
612
  ?>
613
  </td>
614
  </tr>
615
+ <?php
616
+ /*
617
+ Custom Fields.
618
+ */
619
+ echo WJ_FieldRender::render_all(
620
+ $data['user']['details']['user_id']
621
+ );
622
+ ?>
623
  <tr class='submit_row'>
624
  <td colspan='2'>
625
  <?php $this->secure(array('action' => "save", 'id' => $data['user']['details']['user_id'])); ?>