MailPoet Newsletters (Previous) - Version 2.6.15

Version Description

  • 2015-02-17 =
  • Fixed hidden signup confirmation when the theme "Twenty Fifteen" is activated
  • Fixed import issue on Windows servers, all valid subscribers CSV files can be imported now
  • Fixed the filter "Subscribers in no list" in the Subscribers' listing in the backend
  • Fixed bug in the frontend subscriptions page with the shortcode [wysija_page] not being replaced
  • Fixed rendering issue when sending WordPress Post notifications including multiple levels of nested HTML lists(ul & ol)
  • Improved performance in the Subscribers' listing
  • Improved scheduled tasks process responses for greater reliability
  • Added "WBounce" to our list of compatible plugins in Settings > Add-ons
  • Added non-translated strings for the subscribe and unsubscribe admin notifications
Download this release

Release Info

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

Code changes from version 2.6.14 to 2.6.15

Files changed (73) hide show
  1. add-ons/add-ons-list.php +15 -0
  2. classes/WJ_Analytics.php +64 -0
  3. classes/WJ_Import.php +2 -1
  4. core/base.php +2 -1
  5. css/admin-campaigns.css +1 -1
  6. css/validationEngine.jquery.css +292 -1
  7. helpers/back.php +1 -0
  8. helpers/cron.php +21 -4
  9. helpers/front.php +1 -18
  10. helpers/update.php +19 -1
  11. helpers/user.php +2 -2
  12. helpers/wj_engine.php +27 -88
  13. index.php +2 -2
  14. js/admin-wysija.js +1 -1
  15. js/analytics.js +1 -1
  16. languages/wysija-newsletters-af.mo +0 -0
  17. languages/wysija-newsletters-ar.mo +0 -0
  18. languages/wysija-newsletters-bg_BG.mo +0 -0
  19. languages/wysija-newsletters-bn_BD.mo +0 -0
  20. languages/wysija-newsletters-bs_BA.mo +0 -0
  21. languages/wysija-newsletters-ca.mo +0 -0
  22. languages/wysija-newsletters-ca@valencia.mo +0 -0
  23. languages/wysija-newsletters-ca_ES.mo +0 -0
  24. languages/wysija-newsletters-cs_CZ.mo +0 -0
  25. languages/wysija-newsletters-da_DK.mo +0 -0
  26. languages/wysija-newsletters-de_DE.mo +0 -0
  27. languages/wysija-newsletters-el.mo +0 -0
  28. languages/wysija-newsletters-en_GB.mo +0 -0
  29. languages/wysija-newsletters-es.mo +0 -0
  30. languages/wysija-newsletters-es_419.mo +0 -0
  31. languages/wysija-newsletters-es_AR.mo +0 -0
  32. languages/wysija-newsletters-es_ES.mo +0 -0
  33. languages/wysija-newsletters-et.mo +0 -0
  34. languages/wysija-newsletters-eu.mo +0 -0
  35. languages/wysija-newsletters-fa.mo +0 -0
  36. languages/wysija-newsletters-fa_IR.mo +0 -0
  37. languages/wysija-newsletters-fi.mo +0 -0
  38. languages/wysija-newsletters-fr_FR.mo +0 -0
  39. languages/wysija-newsletters-gl_ES.mo +0 -0
  40. languages/wysija-newsletters-he_IL.mo +0 -0
  41. languages/wysija-newsletters-hi_IN.mo +0 -0
  42. languages/wysija-newsletters-hr_HR.mo +0 -0
  43. languages/wysija-newsletters-hu_HU.mo +0 -0
  44. languages/wysija-newsletters-hy_AM.mo +0 -0
  45. languages/wysija-newsletters-id.mo +0 -0
  46. languages/wysija-newsletters-it_IT.mo +0 -0
  47. languages/wysija-newsletters-ja.mo +0 -0
  48. languages/wysija-newsletters-ko_KR.mo +0 -0
  49. languages/wysija-newsletters-lt_LT.mo +0 -0
  50. languages/wysija-newsletters-lv.mo +0 -0
  51. languages/wysija-newsletters-mk_MK.mo +0 -0
  52. languages/wysija-newsletters-nb_NO.mo +0 -0
  53. languages/wysija-newsletters-nl_NL.mo +0 -0
  54. languages/wysija-newsletters-pl_PL.mo +0 -0
  55. languages/wysija-newsletters-pt_BR.mo +0 -0
  56. languages/wysija-newsletters-pt_PT.mo +0 -0
  57. languages/wysija-newsletters-ro_RO.mo +0 -0
  58. languages/wysija-newsletters-ru_RU.mo +0 -0
  59. languages/wysija-newsletters-sk_SK.mo +0 -0
  60. languages/wysija-newsletters-sl_SI.mo +0 -0
  61. languages/wysija-newsletters-sq.mo +0 -0
  62. languages/wysija-newsletters-sr_RS.mo +0 -0
  63. languages/wysija-newsletters-sr_RS@latin.mo +0 -0
  64. languages/wysija-newsletters-sv_SE.mo +0 -0
  65. languages/wysija-newsletters-tr_TR.mo +0 -0
  66. languages/wysija-newsletters-uk.mo +0 -0
  67. languages/wysija-newsletters-ur_PK.mo +0 -0
  68. languages/wysija-newsletters-vi.mo +0 -0
  69. languages/wysija-newsletters-zh_CN.mo +0 -0
  70. languages/wysija-newsletters-zh_TW.mo +0 -0
  71. models/user.php +15 -17
  72. readme.txt +27 -15
  73. views/back/campaigns.php +43 -6
add-ons/add-ons-list.php CHANGED
@@ -231,6 +231,21 @@ function add_ons_list(){
231
  'premium_offer' => '',
232
  ),
233
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
234
  array(
235
  'name' => 'Optin Revolution: Popup form',
236
  'search' => 'Optin Revolution: popup form',
231
  'premium_offer' => '',
232
  ),
233
 
234
+ array(
235
+ 'name' => 'wBounce: Exit popup forms',
236
+ 'search' => 'wBounce',
237
+ 'thumbnail' => 'wbounce-forms.jpg',
238
+ 'description' => __( 'Exit popups are not only "in vogue", they are provably increasing conversions and therefore boost marketing, signups and sales. wBounce displays an inline popup before the user leaves your site.', WYSIJA ),
239
+ 'review' => __( 'Exit popup will appear when your cursor leaves the window.', WYSIJA ),
240
+ 'plugin_url' => 'wbounce/wbounce.php',
241
+ 'author_url' => 'http://clicky.me/wbounce',
242
+ 'version' => '1.4',
243
+ 'official' => true,
244
+ 'on_wordpress.org' => true,
245
+ 'free' => true,
246
+ 'service' => false,
247
+ 'requires' => '',
248
+ ),
249
  array(
250
  'name' => 'Optin Revolution: Popup form',
251
  'search' => 'Optin Revolution: popup form',
classes/WJ_Analytics.php CHANGED
@@ -28,6 +28,10 @@ class WJ_Analytics {
28
  'label' => 'Confirmed subscribers',
29
  'value' => ''
30
  ),
 
 
 
 
31
  'unconfirmed_subscribers' => array(
32
  'label' => 'Unconfirmed subscribers',
33
  'value' => ''
@@ -305,6 +309,66 @@ class WJ_Analytics {
305
  return $confirmed_percentage;
306
  }
307
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
308
  /**
309
  * Calculate unconfirmed subscribers.
310
  * @return Int
28
  'label' => 'Confirmed subscribers',
29
  'value' => ''
30
  ),
31
+ 'range_confirmed_subscribers' => array(
32
+ 'label' => 'Range Confirmed subscribers',
33
+ 'value' => ''
34
+ ),
35
  'unconfirmed_subscribers' => array(
36
  'label' => 'Unconfirmed subscribers',
37
  'value' => ''
309
  return $confirmed_percentage;
310
  }
311
 
312
+ /**
313
+ *
314
+ * @return string range eg: 0-100 101-200 2001-500
315
+ */
316
+ private function range_confirmed_subscribers(){
317
+ $model_user = WYSIJA::get('user', 'model');
318
+ $query = 'SELECT COUNT(*) as confirmed_subscribers
319
+ FROM ' . '[wysija]' . $model_user->table_name . '
320
+ WHERE status = 1';
321
+ $result = $model_user->query('get_res', $query);
322
+
323
+ $confirmed_subscribers = (int) $result[0]['confirmed_subscribers'];
324
+
325
+ $ranges_increment = array( 2000 => 100, 10000 => 500, 20000 => 1000, 40000 => 2000, 100000 => 5000, 200000 => 10000, 500000 => 25000, 1000000 => 50000);
326
+
327
+ $found_range = $this->range_finder( $confirmed_subscribers, $ranges_increment );
328
+
329
+ return $found_range['lower'].' - '.$found_range['upper'];
330
+ }
331
+
332
+ private function range_finder($value, $ranges_increment){
333
+
334
+ $limit_max = 0;
335
+ foreach( $ranges_increment as $limit => $range_increment ){
336
+ $small_limit = $limit_max + $range_increment;
337
+ $limit_max = $limit;
338
+
339
+ if( $value > $limit_max){
340
+ continue;
341
+ }
342
+
343
+ while( $value >= $small_limit && $small_limit <= $limit_max ){
344
+
345
+ if( $value > $small_limit ){
346
+ $min_value = $small_limit - $range_increment + 1;
347
+ }
348
+ if( $value == $small_limit ){
349
+ break;
350
+ }
351
+ $small_limit += $range_increment;
352
+ }
353
+
354
+ if( $value <= $small_limit){
355
+ break;
356
+ }
357
+ }
358
+
359
+ if( $value > $limit_max){
360
+ return array( 'lower' => $limit_max , 'upper' => 'above' );
361
+ }else{
362
+ if( $value < 1 ){
363
+ return array( 'lower' => 0 , 'upper' => 'or undefined' );
364
+ }else{
365
+ $min_value = $small_limit - $range_increment + 1;
366
+ return array( 'lower' => $min_value , 'upper' => $small_limit );
367
+ }
368
+ }
369
+
370
+ }
371
+
372
  /**
373
  * Calculate unconfirmed subscribers.
374
  * @return Int
classes/WJ_Import.php CHANGED
@@ -338,10 +338,11 @@ class WJ_Import extends WYSIJA_object {
338
  if($rows_to_read!=0 && $i> $rows_to_read) return $data;
339
 
340
  // str_getcsv only exists in php5 and is a faster and cleaner function than our csv_explode
341
- if (!function_exists('str_getcsv')) {
342
  $data[] = $this->_lines_explode($csv_line, $delimiter, $enclosure);
343
  } else {
344
  $data[] = str_getcsv($csv_line, $delimiter, $enclosure);
 
345
  }
346
 
347
  $i++;
338
  if($rows_to_read!=0 && $i> $rows_to_read) return $data;
339
 
340
  // str_getcsv only exists in php5 and is a faster and cleaner function than our csv_explode
341
+ if (!function_exists('str_getcsv') || strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
342
  $data[] = $this->_lines_explode($csv_line, $delimiter, $enclosure);
343
  } else {
344
  $data[] = str_getcsv($csv_line, $delimiter, $enclosure);
345
+
346
  }
347
 
348
  $i++;
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.14';
23
 
24
  function WYSIJA_object(){
25
 
@@ -1398,6 +1398,7 @@ class WYSIJA extends WYSIJA_object{
1398
  $processesToRun = array();
1399
  foreach($cron_schedules as $schedule => $scheduled_times){
1400
  if(strpos($schedule, '(bounce handling not activated)')!==false) continue;
 
1401
  $process_frequency = $processes[$schedule];
1402
  if( ( !$scheduled_times['running'] || (int)$scheduled_times['running'] + $process_frequency < $time_now ) && $scheduled_times['next_schedule'] < $time_now){
1403
  $processesToRun[] = $schedule;
19
  * Static variable holding core MailPoet's version
20
  * @var array
21
  */
22
+ static $version = '2.6.15';
23
 
24
  function WYSIJA_object(){
25
 
1398
  $processesToRun = array();
1399
  foreach($cron_schedules as $schedule => $scheduled_times){
1400
  if(strpos($schedule, '(bounce handling not activated)')!==false) continue;
1401
+ if( !isset($processes[$schedule]) ) continue;
1402
  $process_frequency = $processes[$schedule];
1403
  if( ( !$scheduled_times['running'] || (int)$scheduled_times['running'] + $process_frequency < $time_now ) && $scheduled_times['next_schedule'] < $time_now){
1404
  $processesToRun[] = $schedule;
css/admin-campaigns.css CHANGED
@@ -1 +1 @@
1
- #wysija-app{padding-top:10px}.icon32{margin-top:0px !important}#posts-filter{clear:both}#wysija-app h2{display:inline}#icon-edit-news{background:url(../img/mail-big.png) no-repeat scroll 0 5px transparent}#TB_window{display:block}.moredetails{display:none}.sending,.scheduled{background-color:#d5f0e6}.autonl.sending{background-color:#D7E6F2}#wysija-campaign .listmissing{background-color:#EFD5D5}#preview-receiver{width:230px;vertical-align:middle;margin:0 5px 0 0}.ml-submit{margin:15px 15px 0 15px}.automatic-nl{display:none}#titlediv .titlebox{font-size:1.7em;background-color:#FFFFFF;border-color:#CCCCCC;line-height:100%;outline:medium none;padding:3px 8px;width:100%}label .description{cursor:auto}.about-wrap .feature-section.three-col div{float:left;width:28%}#socials-block div{float:none;margin:5px 5px 2px 0;width:100%}.progress_bar{padding-bottom:10px}.progress_bar .bar{display:block;width:100%;height:22px;float:left;margin-right:10px;background:#eef6fc;border:1px solid #bbbbbb;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;line-height:22px;position:relative}.progress_bar .progress{display:block;background:#69b1e9;height:100%}.progress_bar .percent{height:100%;position:absolute;top:0px;left:10px}#wysija-badge{position:absolute;top:0;right:0;color:#fff;text-shadow:0 1px 0 rgba(0,0,0,0.3);padding-top:91px;height:50px;width:173px;font-weight:bold;font-size:14px;text-align:center;margin:0 -5px;background:url("http://s-plugins.wordpress.org/wysija-newsletters/assets/wysija-badge.png") no-repeat}#review-follow{position:relative;height:177px}#review-follow div{float:left;top:0}#review-follow .review-left{background:url("http://s-plugins.wordpress.org/wysija-newsletters/assets/update_page/save-the-kitten.jpg") no-repeat;height:175px;background-color:#f8f8f8;border-top:1px solid #efefef;border-bottom:1px solid #efefef;padding-right:10px}#review-follow h4{margin:0 !important}#review-follow .review-left.small{width:450px}#review-follow .review-left.medium{width:490px}#review-follow .review-left.large{width:540px}#review-follow .small .description{margin-top:24px}#review-follow .medium .description{margin-top:20px}#review-follow .large .description{margin-top:18px}#review-follow .review-left p{margin-left:20px}#review-follow .review-right{background:url("http://s-plugins.wordpress.org/wysija-newsletters/assets/update_page/arrow_middle.jpg") no-repeat scroll -30px 0 #f8f8f8;border-bottom:1px solid #EFEFEF;border-top:1px solid #EFEFEF;height:175px;width:24px}#review-follow #mailpoet-subscribe{margin-left:0px;margin-top:10px}#review-follow .subscribe-middle{width:220px;height:175px;background-color:#f8f8f8;border-top:1px solid #efefef;border-bottom:1px solid #efefef}#review-follow .socials{margin-left:30px}#review-follow .follow-left{width:220px;height:175px;background-color:#f8f8f8;border-top:1px solid #efefef;border-bottom:1px solid #efefef}#review-follow .follow-right{background:url("http://s-plugins.wordpress.org/wysija-newsletters/assets/update_page/arrow_right.jpg") no-repeat;width:100px;height:175px}#review-follow .follow-right38{background:url("http://s-plugins.wordpress.org/wysija-newsletters/assets/update_page/arrow-right-38.jpg") no-repeat;width:100px;height:175px}#review-follow .review-left .description{margin-left:146px}#review-follow .link-cat-review{height:140px;left:20px;position:absolute;top:21px;width:120px;outline:medium none}a.ctaupdate,span.ctaupdate{font-size:12px}.pds-links,.pds-totalvotes-outer{display:none !important}#polldaddy_embed_0{width:680px;margin-left:-30px}span.local_time{margin-left:10px}#hook_newsletter_top .hook-column{width:50%}.card-title{font-weight:bold}.report-card{padding-top:10px}.googletrackingcode .action_buttons{padding-left:44px;padding-top:5px}.googletrackingcode span{font-weight:bold}.mpoet-page h1{font-size:34px}.mpoet-page h1,.mpoet-page h2,.mpoet-page h3,.mpoet-page h4{color:#626262;font-weight:bold}.mpoet-page h1 span.version{color:#5e869b}.mpoet-update-subscribe p{font-size:12px}.mpoet-update-subscribe li{font-size:12px;line-height:10px}.mpoet-update-subscribe-left,.mpoet-update-subscribe-right{float:left}.mpoet-update-subscribe-left{margin-right:50px}.about-wrap .feature-section .mpoet-update-subscribe-left p{margin-top:0;margin-bottom:5px}.about-wrap .feature-section .mpoet-update-subscribe-left ul{margin-top:5px;margin-bottom:5px}#update-page{margin-top:0px}.mp_php_alert{margin:5px 0 15px;background-color:#fff;border-left:4px solid #7ad03a;box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);padding:1px 12px;outline:0 none}
1
+ #wysija-app{padding-top:10px}.icon32{margin-top:0px !important}#posts-filter{clear:both}#wysija-app h2{display:inline}#icon-edit-news{background:url(../img/mail-big.png) no-repeat scroll 0 5px transparent}#TB_window{display:block}.moredetails{display:none}.sending,.scheduled{background-color:#d5f0e6}.autonl.sending{background-color:#D7E6F2}#wysija-campaign .listmissing{background-color:#EFD5D5}#preview-receiver{width:230px;vertical-align:middle;margin:0 5px 0 0}.ml-submit{margin:15px 15px 0 15px}.automatic-nl{display:none}#titlediv .titlebox{font-size:1.7em;background-color:#FFFFFF;border-color:#CCCCCC;line-height:100%;outline:medium none;padding:3px 8px;width:100%}label .description{cursor:auto}.about-wrap .feature-section.three-col div{float:left;width:28%}#socials-block div{float:none;margin:5px 5px 2px 0;width:100%}.progress_bar{padding-bottom:10px}.progress_bar .bar{display:block;width:100%;height:22px;float:left;margin-right:10px;background:#eef6fc;border:1px solid #bbbbbb;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;line-height:22px;position:relative}.progress_bar .progress{display:block;background:#69b1e9;height:100%}.progress_bar .percent{height:100%;position:absolute;top:0px;left:10px}#wysija-badge{position:absolute;top:0;right:0;color:#fff;text-shadow:0 1px 0 rgba(0,0,0,0.3);padding-top:91px;height:50px;width:173px;font-weight:bold;font-size:14px;text-align:center;margin:0 -5px;background:url("http://s-plugins.wordpress.org/wysija-newsletters/assets/wysija-badge.png") no-repeat}#review-follow{position:relative;height:177px}#review-follow div{float:left;top:0}#review-follow .review-left{background:url("http://s-plugins.wordpress.org/wysija-newsletters/assets/update_page/save-the-kitten.jpg") no-repeat;height:175px;background-color:#f8f8f8;border-top:1px solid #efefef;border-bottom:1px solid #efefef;padding-right:10px}#review-follow h4{margin:0 !important}#review-follow .review-left.small{width:450px}#review-follow .review-left.medium{width:490px}#review-follow .review-left.large{width:540px}#review-follow .small .description{margin-top:24px}#review-follow .medium .description{margin-top:20px}#review-follow .large .description{margin-top:18px}#review-follow .review-left p{margin-left:20px}#review-follow .review-right{background:url("http://s-plugins.wordpress.org/wysija-newsletters/assets/update_page/arrow_middle.jpg") no-repeat scroll -30px 0 #f8f8f8;border-bottom:1px solid #EFEFEF;border-top:1px solid #EFEFEF;height:175px;width:24px}#review-follow #mailpoet-subscribe{margin-left:0px;margin-top:10px}#review-follow .subscribe-middle{width:220px;height:175px;background-color:#f8f8f8;border-top:1px solid #efefef;border-bottom:1px solid #efefef}#review-follow .socials{margin-left:30px}#review-follow .follow-left{width:220px;height:175px;background-color:#f8f8f8;border-top:1px solid #efefef;border-bottom:1px solid #efefef}#review-follow .follow-right{background:url("http://s-plugins.wordpress.org/wysija-newsletters/assets/update_page/arrow_right.jpg") no-repeat;width:100px;height:175px}#review-follow .follow-right38{background:url("http://s-plugins.wordpress.org/wysija-newsletters/assets/update_page/arrow-right-38.jpg") no-repeat;width:100px;height:175px}#review-follow .review-left .description{margin-left:146px}#review-follow .link-cat-review{height:140px;left:20px;position:absolute;top:21px;width:120px;outline:medium none}a.ctaupdate,span.ctaupdate{font-size:12px}.pds-links,.pds-totalvotes-outer{display:none !important}#polldaddy_embed_0{width:680px;margin-left:-30px}span.local_time{margin-left:10px}#hook_newsletter_top .hook-column{width:50%}.card-title{font-weight:bold}.report-card{padding-top:10px}.googletrackingcode .action_buttons{padding-left:44px;padding-top:5px}.googletrackingcode span{font-weight:bold}.mpoet-page h1{font-size:34px}.mpoet-page h1,.mpoet-page h2,.mpoet-page h3,.mpoet-page h4{color:#626262;font-weight:bold}.mpoet-page h1 span.version{color:#5e869b}.mpoet-update-subscribe p{font-size:12px}.mpoet-update-subscribe li{font-size:12px;line-height:10px}.mpoet-update-subscribe-left,.mpoet-update-subscribe-right{float:left}.mpoet-update-subscribe-left{margin-right:50px}.about-wrap .feature-section .mpoet-update-subscribe-left p{margin-top:0;margin-bottom:5px}.about-wrap .feature-section .mpoet-update-subscribe-left ul{margin-top:5px;margin-bottom:5px}#update-page{margin-top:0px}.mp_php_alert{margin:5px 0 15px;background-color:#fff;border-left:4px solid #7ad03a;box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);padding:1px 12px;outline:0 none}.feature-section ul{list-style:disc inside none}#update-page .about-text{margin-bottom:1em;margin-top:0;min-height:20px}.mpoet-update-subscribe-left .button-primary{font-size:18px;height:32px}#update-loading-icon{background:url("../img/wpspin_light.gif") no-repeat scroll 0 0 transparent;height:20px;margin-left:26%;margin-top:6px;width:20px;display:none}
css/validationEngine.jquery.css CHANGED
@@ -1 +1,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}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ }
helpers/back.php CHANGED
@@ -529,6 +529,7 @@ class WYSIJA_help_back extends WYSIJA_help{
529
  }
530
  $jstrans['newsletters']=__('Newsletters',WYSIJA);
531
  $jstrans['urlpremium']='admin.php?page=wysija_config#tab-premium';
 
532
  if(isset($_REQUEST['page']) && $_REQUEST['page']=='wysija_config'){
533
  $jstrans['urlpremium']='#tab-premium';
534
  }
529
  }
530
  $jstrans['newsletters']=__('Newsletters',WYSIJA);
531
  $jstrans['urlpremium']='admin.php?page=wysija_config#tab-premium';
532
+ $jstrans['premium_activating'] = __('Checking license', WYSIJA);
533
  if(isset($_REQUEST['page']) && $_REQUEST['page']=='wysija_config'){
534
  $jstrans['urlpremium']='#tab-premium';
535
  }
helpers/cron.php CHANGED
@@ -33,10 +33,15 @@ class WYSIJA_help_cron extends WYSIJA_object{
33
  $this->report = $_SERVER['argv'][3];
34
  }
35
 
36
- if($process){
37
  //include the needed parts of wp plus wysija
38
  if(isset($_REQUEST[WYSIJA_CRON]) || ( isset($_SERVER['argv'][1]) && $_SERVER['argv'][1]==WYSIJA_CRON )) echo '';
39
- else exit;
 
 
 
 
 
40
  $cron_schedules = get_option('wysija_schedules');
41
 
42
  $processes = array();
@@ -44,11 +49,18 @@ class WYSIJA_help_cron extends WYSIJA_object{
44
  $processes = explode(',', $process);
45
  }else $processes[] = $process;
46
 
 
47
  foreach($processes as $scheduleprocess){
48
  if($scheduleprocess!='all'){
49
- $this->check_scheduled_task($cron_schedules,$scheduleprocess);
 
 
 
 
 
 
 
50
  }else{
51
- $allProcesses = array('queue','bounce','daily','weekly','monthly');
52
  foreach($allProcesses as $processNK){
53
  $this->check_scheduled_task($cron_schedules,$processNK);
54
  }
@@ -57,6 +69,11 @@ class WYSIJA_help_cron extends WYSIJA_object{
57
  exit;
58
  }
59
  }
 
 
 
 
 
60
  }
61
  if(!isset($_REQUEST['silent'])) echo '"MailPoet\'s cron is ready. Simply setup a CRON job on your server (cpanel or other) to trigger this page.' ;
62
  if($process) exit;
33
  $this->report = $_SERVER['argv'][3];
34
  }
35
 
36
+ if( !empty($process) ){
37
  //include the needed parts of wp plus wysija
38
  if(isset($_REQUEST[WYSIJA_CRON]) || ( isset($_SERVER['argv'][1]) && $_SERVER['argv'][1]==WYSIJA_CRON )) echo '';
39
+ else{
40
+ wp_die("<h2>" . 'Invalid token' . "</h2>", "MailPoet CRON error", array(
41
+ 'response' => 404,
42
+ 'back_link' => false
43
+ ));
44
+ }
45
  $cron_schedules = get_option('wysija_schedules');
46
 
47
  $processes = array();
49
  $processes = explode(',', $process);
50
  }else $processes[] = $process;
51
 
52
+ $allProcesses = array('queue','bounce','daily','weekly','monthly');
53
  foreach($processes as $scheduleprocess){
54
  if($scheduleprocess!='all'){
55
+ if( in_array( $scheduleprocess, $allProcesses ) ){
56
+ $this->check_scheduled_task($cron_schedules,$scheduleprocess);
57
+ }else{
58
+ wp_die("<h2>" . 'Invalid process' . "</h2>", "MailPoet CRON error", array(
59
+ 'response' => 404,
60
+ 'back_link' => false
61
+ ));
62
+ }
63
  }else{
 
64
  foreach($allProcesses as $processNK){
65
  $this->check_scheduled_task($cron_schedules,$processNK);
66
  }
69
  exit;
70
  }
71
  }
72
+ }else{
73
+ wp_die("<h2>" . 'Missing process' . "</h2>", "MailPoet CRON error", array(
74
+ 'response' => 404,
75
+ 'back_link' => false
76
+ ));
77
  }
78
  if(!isset($_REQUEST['silent'])) echo '"MailPoet\'s cron is ready. Simply setup a CRON job on your server (cpanel or other) to trigger this page.' ;
79
  if($process) exit;
helpers/front.php CHANGED
@@ -8,23 +8,6 @@ class WYSIJA_help_front extends WYSIJA_help{
8
  function WYSIJA_help_front(){
9
  parent::WYSIJA_help();
10
 
11
-
12
- /*if(defined('WYSIJA_DBG_ALL')){
13
- $config=WYSIJA::get('config','model');
14
- define('WYSIJA_DBG',(int)$config->getValue('debug_new'));
15
-
16
- if(WYSIJA_DBG>0) include_once(WYSIJA_INC.'debug.php');
17
-
18
- if(!function_exists('dbg')) {
19
- function dbg($mixed,$exit=true){}
20
- }
21
- }*/
22
- /* the controller is frontend if there is any wysija data requested */
23
-
24
- /*$config=WYSIJA::get("config","model");
25
- if($config->getValue("debug_on")) include_once(WYSIJA_INC."debug.php");*/
26
- //include_once(WYSIJA_INC."debug.php");
27
-
28
  // wysija form shortcode
29
  add_shortcode('wysija_form', array($this,'scan_form_shortcode'));
30
  // wysija total of subscribers shortcode
@@ -238,7 +221,7 @@ class WYSIJA_help_front extends WYSIJA_help{
238
 
239
  // only force our edit subscription screen at the bottom of the content of the page
240
  // if it's the right action and there is no wysija_page shortcode in teh page
241
- if(!empty($_REQUEST['action']) && $_REQUEST['action'] == 'subscriptions' && strpos($content, '[wysija_page]') == false){
242
  // we append the subscription form at the bottom of the page if we can't detect it
243
  return $content.'<div class="mpoet_profile_edit">'.$wysija_content.'</div>';
244
  }else{
8
  function WYSIJA_help_front(){
9
  parent::WYSIJA_help();
10
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  // wysija form shortcode
12
  add_shortcode('wysija_form', array($this,'scan_form_shortcode'));
13
  // wysija total of subscribers shortcode
221
 
222
  // only force our edit subscription screen at the bottom of the content of the page
223
  // if it's the right action and there is no wysija_page shortcode in teh page
224
+ if(!empty($_REQUEST['action']) && $_REQUEST['action'] == 'subscriptions' && strpos($content, '[wysija_page]') === false){
225
  // we append the subscription form at the bottom of the page if we can't detect it
226
  return $content.'<div class="mpoet_profile_edit">'.$wysija_content.'</div>';
227
  }else{
helpers/update.php CHANGED
@@ -14,7 +14,7 @@ class WYSIJA_help_update extends WYSIJA_object {
14
  '2.3.3','2.3.4',
15
  '2.4', '2.4.1', '2.4.3','2.4.4',
16
  '2.5','2.5.2','2.5.5','2.5.9.6', '2.5.9.7',
17
- '2.6', '2.6.0.8',
18
  );
19
  }
20
 
@@ -480,6 +480,24 @@ class WYSIJA_help_update extends WYSIJA_object {
480
  return true;
481
  break;
482
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
483
  default:
484
  return false;
485
  }
14
  '2.3.3','2.3.4',
15
  '2.4', '2.4.1', '2.4.3','2.4.4',
16
  '2.5','2.5.2','2.5.5','2.5.9.6', '2.5.9.7',
17
+ '2.6', '2.6.0.8', '2.6.15'
18
  );
19
  }
20
 
480
  return true;
481
  break;
482
 
483
+ case '2.6.15':
484
+ global $wpdb;
485
+ $sql = "SHOW INDEX FROM [wysija]user_list WHERE Key_name = 'user_id'";
486
+ $result_index = $wpdb->get_results(str_replace('[wysija]',$this->modelWysija->getPrefix(),$sql));
487
+
488
+ $queries = array();
489
+ //create an INDEX only if it doesn't exist already
490
+ if( empty( $result_index ) ){
491
+ $queries[] = 'ALTER TABLE [wysija]user_list ADD INDEX `user_id` ( `user_id` ) ';
492
+ $errors = $this->run_update_queries( $queries );
493
+
494
+ if( !empty($errors) ){
495
+ $this->error( implode( $errors, "\n" ) );
496
+ }
497
+ }
498
+ return true;
499
+ break;
500
+
501
  default:
502
  return false;
503
  }
helpers/user.php CHANGED
@@ -870,10 +870,10 @@ class WYSIJA_help_user extends WYSIJA_object {
870
 
871
  if ($subscribed) {
872
  $title = sprintf(__('New subscriber to %1$s', WYSIJA), implode(',', $list_names));
873
- $body = sprintf(__('Howdy,' . "\n\n" . 'The subscriber %1$s has just subscribed to your list "%2$s".' . "\n\n" . 'Cheers,' . "\n\n" . 'The MailPoet Plugin', WYSIJA), "<strong>" . $email . "</strong>", "<strong>" . implode(',', $list_names) . "</strong>");
874
  } else {
875
  $title = sprintf(__('One less subscriber to %1$s', WYSIJA), implode(',', $list_names));
876
- $body = sprintf(__('Howdy,' . "\n\n" . 'The subscriber : %1$s has just unsubscribed from your list "%2$s".' . "\n\n" . 'Cheers,' . "\n\n" . 'The MailPoet Plugin', WYSIJA), "<strong>" . $email . "</strong>", "<strong>" . implode(',', $list_names) . "</strong>");
877
  }
878
 
879
  $model_config = WYSIJA::get('config', 'model');
870
 
871
  if ($subscribed) {
872
  $title = sprintf(__('New subscriber to %1$s', WYSIJA), implode(',', $list_names));
873
+ $body = sprintf(__("Howdy,\n\n The subscriber %1\$s has just subscribed to your list '%2\$s' \n\n Cheers,\n\n The MailPoet Plugin", WYSIJA), "<strong>" . $email . "</strong>", "<strong>" . implode(',', $list_names) . "</strong>");
874
  } else {
875
  $title = sprintf(__('One less subscriber to %1$s', WYSIJA), implode(',', $list_names));
876
+ $body = sprintf(__("Howdy,\n\n The subscriber %1\$s has just unsubscribed to your list '%2\$s' \n\n Cheers,\n\n The MailPoet Plugin", WYSIJA), "<strong>" . $email . "</strong>", "<strong>" . implode(',', $list_names) . "</strong>");
877
  }
878
 
879
  $model_config = WYSIJA::get('config', 'model');
helpers/wj_engine.php CHANGED
@@ -482,15 +482,9 @@ class WYSIJA_help_wj_engine extends WYSIJA_object {
482
  // convert lists
483
  $blockHTML = $this->convertLists($blockHTML);
484
 
485
- // apply specific classes on titles and children (strong, em, a)
486
- $blockHTML = $this->applyTitleClasses($blockHTML);
487
-
488
  // apply inline styles
489
  $blockHTML = $this->applyInlineStyles('body', $blockHTML, array('background_color' => $background_color));
490
 
491
- // convert titles in block
492
- $blockHTML = $this->convertTitles($blockHTML);
493
-
494
  return $blockHTML;
495
  }
496
 
@@ -1258,14 +1252,8 @@ class WYSIJA_help_wj_engine extends WYSIJA_object {
1258
  // convert lists in block
1259
  $blockHTML = $this->convertLists($blockHTML);
1260
 
1261
- // apply specific classes on titles and children (strong, em, a)
1262
- $blockHTML = $this->applyTitleClasses($blockHTML);
1263
-
1264
  // apply inline styles
1265
  $blockHTML = $this->applyInlineStyles('body', $blockHTML, array('background_color' => $block_background_color));
1266
-
1267
- // convert titles in block
1268
- $blockHTML = $this->convertTitles($blockHTML);
1269
  }
1270
  }
1271
 
@@ -1414,6 +1402,7 @@ class WYSIJA_help_wj_engine extends WYSIJA_object {
1414
  'h2' => array_merge($styles['titles'], $this->getStyles('h2')),
1415
  'h3' => array_merge($styles['titles'], $this->getStyles('h3')),
1416
  'p' => array_merge($this->getStyles('body'), array('word-wrap' => true, 'padding' => '0', 'margin' => '1em 0', 'line-height' => '1.5em', 'vertical-align' => 'top', 'letter-spacing' => 'normal')),
 
1417
  'a' => array_merge($this->getStyles('a'), array('word-wrap' => true)),
1418
  'br' => array('margin' => '0', 'padding' => '0', 'line-height' => '150%')
1419
  ));
@@ -1593,86 +1582,36 @@ class WYSIJA_help_wj_engine extends WYSIJA_object {
1593
  }
1594
  }
1595
 
1596
- // TODO: remove this method?
1597
- function convertTitles($html) {
1598
-
1599
- // TEMPORARY returning original content without changing anything
1600
- return $html;
1601
-
1602
-
1603
- $patterns = array(
1604
- '/<h[1|2|3](.*?)>/',
1605
- '/<\/h[1|2|3]>/',
1606
- );
1607
-
1608
- $replacements = array(
1609
- '<p$1>',
1610
- '</p>'
1611
- );
1612
-
1613
- return preg_replace($patterns, $replacements, $html);
1614
- }
1615
-
1616
- // TODO: remove this method?
1617
- function applyTitleClasses($html) {
1618
-
1619
- // TEMPORARY returning original content without changing anything
1620
- return $html;
1621
-
1622
- // set class for links in titles
1623
- $html = preg_replace_callback('#(<h([1|2|3]) ?((?:(?!>|class).)*)(?:class="([^"]*)")?((?:(?!>|class).)*)>(.*)<\/h[1|2|3]>)#Ui',
1624
- create_function('$matches',
1625
- '$output = $matches[0];'.
1626
- '$title_class = \'wysija_title_\'.(int)$matches[2];'.
1627
- '$link_class = $title_class.\'_link\';'.
1628
- '$strong_class = $title_class.\'_strong\';'.
1629
- '$italic_class = $title_class.\'_italic\';'.
1630
- '$output = str_replace(\'<a\', \'<a class="\'.$link_class.\'"\', $output);'.
1631
- '$output = str_replace(\'<strong\', \'<strong class="\'.$strong_class.\'"\', $output);'.
1632
- '$output = str_replace(\'<em\', \'<em class="\'.$italic_class.\'"\', $output);'.
1633
- //'$output = str_replace(\'<h\'.(int)$matches[2], \'<h\'.(int)$matches[2].\' class="\'.$title_class.\'"\', $output);'.
1634
- 'return $output;'
1635
- ),
1636
- $html
1637
- );
1638
-
1639
- return $html;
1640
  }
1641
 
1642
- // converts lists (ul, ol, li) into paragraphs for email compatibility
1643
  function convertLists($html) {
1644
- $patterns = array(
1645
- '/<ul.*?>/',
1646
- '/<ol.*?>/',
1647
- '/<\/ul>/',
1648
- '/<\/ol>/',
1649
- '/<li ?((?:(?!>|class).)*)(?:class="([^"]*)")?((?:(?!>|class).)*)>/',
1650
- '/<\/li>/'
1651
- );
1652
-
1653
- $replacements = array(
1654
- '',
1655
- '',
1656
- '',
1657
- '',
1658
- '<p class="wysija_list_item $2">&bull;&nbsp;',
1659
- '</p>'
1660
- );
1661
 
1662
- $html = preg_replace_callback('#(<ul ?((?:(?!>|class).)*)(?:class="([^"]*)")?((?:(?!>|class).)*)>(.*)<\/ul>)#Ui',
1663
- create_function('$matches',
1664
- '$output = $matches[5];'.
1665
- '$alignment = ( isset($matches[3]) && strlen(trim($matches[3])) ) ? trim($matches[3]) : "align-left";'.
1666
- '$output = preg_replace(\'/<li ?((?:(?!>|class).)*)(?:class="([^"]*)")?((?:(?!>|class).)*)>/\', \'<p class="wysija_list_item \'.$alignment.\'">&bull;&nbsp;\', $output);'.
1667
- '$output = preg_replace(\'/<\/li>/\', \'</p>\', $output);'.
1668
- 'return $output;'
1669
- ),
1670
- $html
1671
- );
1672
  return $html;
1673
-
1674
- //return preg_replace($patterns, $replacements, $html);
1675
-
1676
  }
1677
-
1678
  }
482
  // convert lists
483
  $blockHTML = $this->convertLists($blockHTML);
484
 
 
 
 
485
  // apply inline styles
486
  $blockHTML = $this->applyInlineStyles('body', $blockHTML, array('background_color' => $background_color));
487
 
 
 
 
488
  return $blockHTML;
489
  }
490
 
1252
  // convert lists in block
1253
  $blockHTML = $this->convertLists($blockHTML);
1254
 
 
 
 
1255
  // apply inline styles
1256
  $blockHTML = $this->applyInlineStyles('body', $blockHTML, array('background_color' => $block_background_color));
 
 
 
1257
  }
1258
  }
1259
 
1402
  'h2' => array_merge($styles['titles'], $this->getStyles('h2')),
1403
  'h3' => array_merge($styles['titles'], $this->getStyles('h3')),
1404
  'p' => array_merge($this->getStyles('body'), array('word-wrap' => true, 'padding' => '0', 'margin' => '1em 0', 'line-height' => '1.5em', 'vertical-align' => 'top', 'letter-spacing' => 'normal')),
1405
+ 'li' => array_merge($this->getStyles('body'), array('word-wrap' => true, 'padding' => '0', 'margin' => '0', 'line-height' => '1.5em', 'vertical-align' => 'top', 'letter-spacing' => 'normal')),
1406
  'a' => array_merge($this->getStyles('a'), array('word-wrap' => true)),
1407
  'br' => array('margin' => '0', 'padding' => '0', 'line-height' => '150%')
1408
  ));
1582
  }
1583
  }
1584
 
1585
+ // converts lists (ul, ol, li) into paragraphs for email compatibility
1586
+ function convertList($matches) {
1587
+ $output = $matches[5];
1588
+ // get alignment from ul tag and make sure it's a valid value
1589
+ $alignment = (isset($matches[3]) && in_array($matches[3], array('align-left', 'align-center', 'align-right'))) ? trim($matches[3]) : 'align-left';
1590
+ // convert opening li tag to paragraph
1591
+ $output = preg_replace('#<li ?((?:(?!>|class).)*)(?:class="([^"]*)")?((?:(?!>|class).)*)>#Uis', "\n".'<p class="wysija_list_item '.$alignment.'">&bull;&nbsp;', $output);
1592
+ // replace all closing li tags by p
1593
+ $output = str_replace('</li>', "</p>\n", $output);
1594
+ return $output;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1595
  }
1596
 
 
1597
  function convertLists($html) {
1598
+ $model_config = WYSIJA::get('config', 'model');
1599
+ if((bool)$model_config->getValue('disable_list_conversion') === true) {
1600
+ return $html;
1601
+ }
1602
+ // define maximum recursion level
1603
+ $max_recursion = 100;
1604
+ $recursion_count = 0;
1605
+ // as long as there are ul tags in the content and we haven't reached the maximum recursion value
1606
+ while(strpos($html, '<ul') !== false && $recursion_count < $max_recursion) {
1607
+ $html = preg_replace_callback(
1608
+ '#(<ul ?((?:(?!>|class).)*)(?:class="([^"]*)")?((?:(?!>|class).)*)>((?:(?!<ul).)*)<\/ul>)#Uis',
1609
+ array($this, 'convertList'),
1610
+ $html
1611
+ );
1612
+ $recursion_count++;
1613
+ }
 
1614
 
 
 
 
 
 
 
 
 
 
 
1615
  return $html;
 
 
 
1616
  }
 
1617
  }
index.php CHANGED
@@ -2,8 +2,8 @@
2
  /*
3
  Plugin Name: MailPoet Newsletters
4
  Plugin URI: http://www.mailpoet.com/
5
- Description: Create and send newsletters. Import and manage your lists. Add subscription forms in widgets, articles and pages. MailPoet (formerly Wysija) is a freemium plugin updated regularly with new features.
6
- Version: 2.6.14
7
  Author: MailPoet
8
  Author URI: http://www.mailpoet.com/
9
  License: GPLv2 or later
2
  /*
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
js/admin-wysija.js CHANGED
@@ -1 +1 @@
1
- jQuery(function(a){function i(i){i?(a(".wysija-premium-activate").addClass("wysija-button-loading"),a(".wysija-premium-activate").html(wysijatrans.premium_activating+"<span>.</span><span>.</span><span>.</span>")):(a(".wysija-premium-activate").removeClass("wysija-button-loading"),a(".wysija-premium-activate").html(wysijatrans.premium_activate))}a("#wysija-app .submitdelete").click(function(){return confirm(wysijatrans.suredelete)}),a("#wysija-app .linkignore, .wysija-version .linkignore").click(function(){var i=this;return wysijaAJAX.controller="config",wysijaAJAX.task="linkignore",wysijaAJAX.ignorewhat=a.trim(a(this).attr("class").replace(/linkignore/g,"")),wysijaAJAX._wpnonce=wysijanonces.config.linkignore,a.ajax({type:"POST",url:wysijaAJAX.ajaxurl,data:wysijaAJAX,success:function(){a(i).parents(".removeme").length>0?a(i).parents(".removeme").fadeOut():a(i).parents("li").siblings().size()>0?a(i).parents("li").fadeOut():a(i).parents("div.updated").fadeOut()},error:function(a){alert("Request error not JSON:"+a.responseText),wysijaAJAXcallback.onSuccess=""},dataType:"json"}),!0}),a(document).on("click","#wysija-app .premium-tab, .wysija-msg .premium-tab, #theme-view .premium-tab",function(){a("#wysija-app .wysija-premium img").hide(),a(this).hasClass("ispopup")?(window.parent.tb_remove(),window.parent.location.href=wysijatrans.urlpremium):a("#wysija-tabs").length>0?a('#wysija-tabs a[href="#premium"]').trigger("click"):window.location.href=wysijatrans.urlpremium}),a(".wysija-premium-activate").click(function(){wysijaAJAX.controller="config",wysijaAJAX.task="validate",wysijaAJAX._wpnonce=wysijanonces.config.validate,i(!0);var e=this;return a.ajax({type:"POST",url:wysijaAJAX.ajaxurl,data:wysijaAJAX,success:function(t){t.result.result?window.location.href="admin.php?page=wysija_campaigns&sp=1":(t.result.nocontact?window.location.href="admin.php?page=wysija_campaigns&nocontact=1":(displaychange=0,a.WYSIJA_HANDLE_RESPONSE(t)),i(!1)),a(e).removeClass("wysija-button-loading")},error:function(a){alert(a.responseText),delete wysijaAJAXcallback.onSuccess,i(!1)},dataType:"json"}),!1}),a("#install-wjp").click(function(){return confirm(a(this).data("warn"))?(tb_show(a(this).attr("title"),a(this).attr("href")+"&KeepThis=true&TB_iframe=true&height=400&width=600",null),tb_showIframe(),!1):!1}),a("#share_analytics").click(function(){var i=this;return wysijaAJAX.controller="config",wysijaAJAX.task="share_analytics",wysijaAJAX._wpnonce=wysijanonces.config.share_analytics,a.ajax({type:"POST",url:wysijaAJAX.ajaxurl,data:wysijaAJAX,success:function(){a(i).text("Thanks!").contents().unwrap()},error:function(a){alert("Request error not JSON:"+a.responseText),wysijaAJAXcallback.onSuccess=""},dataType:"json"}),!0})});
1
+ jQuery(function(a){function i(i){i?(a(".wysija-premium-activate").addClass("wysija-button-loading"),a(".wysija-premium-activate").html(wysijatrans.premium_activating+"<span>.</span><span>.</span><span>.</span>")):(a(".wysija-premium-activate").removeClass("wysija-button-loading"),a(".wysija-premium-activate").html(wysijatrans.premium_activate))}a("#wysija-app .submitdelete").click(function(){return confirm(wysijatrans.suredelete)}),a("#wysija-app .linkignore, .wysija-version .linkignore").click(function(){var i=this;return wysijaAJAX.controller="config",wysijaAJAX.task="linkignore",wysijaAJAX.ignorewhat=a.trim(a(this).attr("class").replace(/linkignore/g,"")),wysijaAJAX._wpnonce=wysijanonces.config.linkignore,a.ajax({type:"POST",url:wysijaAJAX.ajaxurl,data:wysijaAJAX,success:function(){a(i).parents(".removeme").length>0?a(i).parents(".removeme").fadeOut():a(i).parents("li").siblings().size()>0?a(i).parents("li").fadeOut():a(i).parents("div.updated").fadeOut()},error:function(a){alert("Request error not JSON:"+a.responseText),wysijaAJAXcallback.onSuccess=""},dataType:"json"}),!0}),a(document).on("click","#wysija-app .premium-tab, .wysija-msg .premium-tab, #theme-view .premium-tab",function(){a("#wysija-app .wysija-premium img").hide(),a(this).hasClass("ispopup")?(window.parent.tb_remove(),window.parent.location.href=wysijatrans.urlpremium):a("#wysija-tabs").length>0?a('#wysija-tabs a[href="#premium"]').trigger("click"):window.location.href=wysijatrans.urlpremium}),a(".wysija-premium-activate").click(function(){wysijaAJAX.controller="config",wysijaAJAX.task="validate",wysijaAJAX._wpnonce=wysijanonces.config.validate,i(!0);var e=this;return a.ajax({type:"POST",url:wysijaAJAX.ajaxurl,data:wysijaAJAX,success:function(s){s.result.result?window.location.href="admin.php?page=wysija_campaigns&sp=1":(s.result.nocontact?window.location.href="admin.php?page=wysija_campaigns&nocontact=1":(displaychange=0,a.WYSIJA_HANDLE_RESPONSE(s)),i(!1)),a(e).removeClass("wysija-button-loading")},error:function(a){alert(a.responseText),delete wysijaAJAXcallback.onSuccess,i(!1)},dataType:"json"}),!1}),a("#install-wjp").click(function(){return confirm(a(this).data("warn"))?(tb_show(a(this).attr("title"),a(this).attr("href")+"&KeepThis=true&TB_iframe=true&height=400&width=600",null),tb_showIframe(),!1):!1}),a("#share_analytics").click(function(){var i=this;return wysijaAJAX.controller="config",wysijaAJAX.task="share_analytics",wysijaAJAX._wpnonce=wysijanonces.config.share_analytics,a(i).addClass("disabled"),a("#update-loading-icon").show(),a.ajax({type:"POST",url:wysijaAJAX.ajaxurl,data:wysijaAJAX,success:function(){a(i).after("<h2>Thanks!</h2>"),a(i).hide(),a("#update-loading-icon").hide()},error:function(e){alert("Request error not JSON:"+e.responseText),wysijaAJAXcallback.onSuccess="",a(i).removeClass("disabled")},dataType:"json"}),!0})});
js/analytics.js CHANGED
@@ -1 +1 @@
1
- !function(e,t){if(!t.__SV){var a,n,i,l;window.mixpanel=t,a=e.createElement("script"),a.type="text/javascript",a.async=!0,a.src=("https:"===e.location.protocol?"https:":"http:")+"//cdn.mxpnl.com/libs/mixpanel-2.2.min.js",n=e.getElementsByTagName("script")[0],n.parentNode.insertBefore(a,n),t._i=[],t.init=function(e,a,n){function p(e,t){var a=t.split(".");2==a.length&&(e=e[a[0]],t=a[1]),e[t]=function(){e.push([t].concat(Array.prototype.slice.call(arguments,0)))}}var r=t;for("undefined"!=typeof n?r=t[n]=[]:n="mixpanel",r.people=r.people||[],r.toString=function(e){var t="mixpanel";return"mixpanel"!==n&&(t+="."+n),e||(t+=" (stub)"),t},r.people.toString=function(){return r.toString(1)+".people (stub)"},i="disable track track_pageview track_links track_forms register register_once alias unregister identify name_tag set_config people.set people.increment people.append people.track_charge people.clear_charges people.delete_user".split(" "),l=0;l<i.length;l++)p(r,i[l]);t._i.push([e,a,n])},t.__SV=1.2}}(document,window.mixpanel||[]),mixpanel.init("f683d388fb25fcf331f1b2b5c4449798");var mixpanel_set={},mx_length=analytics_data.length,label="",value="";for(key in analytics_data)label=analytics_data[key].label,value=analytics_data[key].value,mixpanel_set[label]=value;mixpanel.track("Wysija Usage",mixpanel_set);
1
+ !function(e,t){if(!t.__SV){var a,n,i,l;window.mixpanel=t,t._i=[],t.init=function(e,a,n){function p(e,t){var a=t.split(".");2==a.length&&(e=e[a[0]],t=a[1]),e[t]=function(){e.push([t].concat(Array.prototype.slice.call(arguments,0)))}}var r=t;for("undefined"!=typeof n?r=t[n]=[]:n="mixpanel",r.people=r.people||[],r.toString=function(e){var t="mixpanel";return"mixpanel"!==n&&(t+="."+n),e||(t+=" (stub)"),t},r.people.toString=function(){return r.toString(1)+".people (stub)"},i="disable track track_pageview track_links track_forms register register_once alias unregister identify name_tag set_config people.set people.set_once people.increment people.append people.track_charge people.clear_charges people.delete_user".split(" "),l=0;l<i.length;l++)p(r,i[l]);t._i.push([e,a,n])},t.__SV=1.2,a=e.createElement("script"),a.type="text/javascript",a.async=!0,a.src="//cdn.mxpnl.com/libs/mixpanel-2-latest.min.js",n=e.getElementsByTagName("script")[0],n.parentNode.insertBefore(a,n)}}(document,window.mixpanel||[]),mixpanel.init("f683d388fb25fcf331f1b2b5c4449798",{api_host:"https://api.mixpanel.com"});var mixpanel_set={},mx_length=analytics_data.length,label="",value="";for(key in analytics_data)label=analytics_data[key].label,value=analytics_data[key].value,mixpanel_set[label]=value;mixpanel.track("Wysija Usage",mixpanel_set);
languages/wysija-newsletters-af.mo CHANGED
Binary file
languages/wysija-newsletters-ar.mo CHANGED
Binary file
languages/wysija-newsletters-bg_BG.mo CHANGED
Binary file
languages/wysija-newsletters-bn_BD.mo CHANGED
Binary file
languages/wysija-newsletters-bs_BA.mo CHANGED
Binary file
languages/wysija-newsletters-ca.mo CHANGED
Binary file
languages/wysija-newsletters-ca@valencia.mo CHANGED
Binary file
languages/wysija-newsletters-ca_ES.mo CHANGED
Binary file
languages/wysija-newsletters-cs_CZ.mo CHANGED
Binary file
languages/wysija-newsletters-da_DK.mo CHANGED
Binary file
languages/wysija-newsletters-de_DE.mo CHANGED
Binary file
languages/wysija-newsletters-el.mo CHANGED
Binary file
languages/wysija-newsletters-en_GB.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_AR.mo CHANGED
Binary file
languages/wysija-newsletters-es_ES.mo CHANGED
Binary file
languages/wysija-newsletters-et.mo CHANGED
Binary file
languages/wysija-newsletters-eu.mo CHANGED
Binary file
languages/wysija-newsletters-fa.mo CHANGED
Binary file
languages/wysija-newsletters-fa_IR.mo CHANGED
Binary file
languages/wysija-newsletters-fi.mo CHANGED
Binary file
languages/wysija-newsletters-fr_FR.mo CHANGED
Binary file
languages/wysija-newsletters-gl_ES.mo CHANGED
Binary file
languages/wysija-newsletters-he_IL.mo CHANGED
Binary file
languages/wysija-newsletters-hi_IN.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-hy_AM.mo CHANGED
Binary file
languages/wysija-newsletters-id.mo CHANGED
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-mk_MK.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-sk_SK.mo CHANGED
Binary file
languages/wysija-newsletters-sl_SI.mo CHANGED
Binary file
languages/wysija-newsletters-sq.mo CHANGED
Binary file
languages/wysija-newsletters-sr_RS.mo CHANGED
Binary file
languages/wysija-newsletters-sr_RS@latin.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
languages/wysija-newsletters-ur_PK.mo CHANGED
Binary file
languages/wysija-newsletters-vi.mo CHANGED
Binary file
languages/wysija-newsletters-zh_CN.mo CHANGED
Binary file
languages/wysija-newsletters-zh_TW.mo CHANGED
Binary file
models/user.php CHANGED
@@ -536,25 +536,19 @@ class WYSIJA_model_user extends WYSIJA_model{
536
  // orphans are selected with this kind of join
537
  if($filters['equal']['list_id']=== 0) {
538
  // reset all prefixes. We are selecting from only 1 table - [wysija]user
539
- $select_string = str_replace(array('[wysija]user.', '[wysija]user_list.', 'A.','B.'), array('','','',''), implode(', ', $select));
 
 
 
 
 
540
  $is_count = strpos($select_string, 'COUNT(') !== false;
541
 
542
- // this approach is not so good! Refactoring is needed.
543
- if ($is_count) {
544
- $query = '
545
- SELECT
546
- '.$select_string.'
547
- FROM [wysija]user
548
- WHERE `user_id` NOT IN (SELECT DISTINCT user_id FROM [wysija]user_list)
549
- ';
550
- } else {
551
- $query = '
552
- SELECT
553
- '.$select_string.'
554
- FROM [wysija]user
555
- WHERE `user_id` NOT IN (SELECT DISTINCT user_id FROM [wysija]user_list)
556
- ';
557
- }
558
 
559
  $this->conditions=array(); // reset all conditions
560
  $filters = array(); // reset all conditions
@@ -590,7 +584,11 @@ class WYSIJA_model_user extends WYSIJA_model{
590
  if($return_query) return $query;
591
 
592
  if( empty($_REQUEST['orderby']) || !is_string($_REQUEST['orderby']) || preg_match('|[^a-z0-9#_.-]|i',$_REQUEST['orderby']) !== 0 ){
 
 
 
593
  $order_by = ' ORDER BY A.user_id DESC';
 
594
  }else{
595
 
596
  if(!in_array(strtoupper($_REQUEST['ordert']),array('DESC','ASC'))){
536
  // orphans are selected with this kind of join
537
  if($filters['equal']['list_id']=== 0) {
538
  // reset all prefixes. We are selecting from only 1 table - [wysija]user
539
+ $select_string = implode(', ', $select);
540
+
541
+ // make sure we select the user_id from the table that has that information not from user_list which will return NULL
542
+ $select_string = str_replace('B.user_id','A.user_id',$select_string);
543
+
544
+ // we need to make the difference between the count query useful for pagination etc and the rest
545
  $is_count = strpos($select_string, 'COUNT(') !== false;
546
 
547
+ // this query left joins on null values of user_list, allows us to display the subscribers not belonging to any list
548
+ $query = 'SELECT '.$select_string.'
549
+ FROM [wysija]user as A
550
+ LEFT OUTER JOIN [wysija]user_list as B on A.user_id = B.user_id
551
+ WHERE B.`user_id` is NULL';
 
 
 
 
 
 
 
 
 
 
 
552
 
553
  $this->conditions=array(); // reset all conditions
554
  $filters = array(); // reset all conditions
584
  if($return_query) return $query;
585
 
586
  if( empty($_REQUEST['orderby']) || !is_string($_REQUEST['orderby']) || preg_match('|[^a-z0-9#_.-]|i',$_REQUEST['orderby']) !== 0 ){
587
+ if(!empty($_REQUEST['wysija']['filter']['filter_list']) && $_REQUEST['wysija']['filter']['filter_list'] == 'orphaned'){
588
+ $order_by = '';
589
+ }else{
590
  $order_by = ' ORDER BY A.user_id DESC';
591
+ }
592
  }else{
593
 
594
  if(!in_array(strtoupper($_REQUEST['ordert']),array('DESC','ASC'))){
readme.txt CHANGED
@@ -1,14 +1,14 @@
1
  === MailPoet Newsletters ===
2
- Contributors: wysija, kgjerstad, benheu, JoN1oP, badshark
3
- Tags: newsletter, newsletters, email, subscribe newsletter, newsletter signup, post notification, newsletter subscription, newsletter alert, auto newsletter, autoresponder, follow up email, dunning email, drip campaign, marketing email, mailpoet, wysija, mandrill, sendgrid
4
  Requires at least: 3.3
5
  Tested up to: 4.1
6
- Stable tag: 2.6.14
7
- Send newsletters, post notifications or autoresponders from WordPress easily, and beautifully.
8
 
9
  == Description ==
10
 
11
- Create newsletters, post notifications and autoresponders. Drop your posts, images, social icons in your newsletter. Change fonts and colors on the fly. Manage all your subscribers. A simple newsletter solution for WordPress. Finally!
12
 
13
  We built it with the idea that newsletters in WordPress should be easy. Not hard. Forget MailChimp, Aweber, etc. We're the good guys inside your WordPress.
14
 
@@ -25,16 +25,17 @@ http://vimeo.com/46247528
25
  * Drag & drop newsletter editor
26
  * Send your latest posts automatically
27
  * Autoresponders, i.e. "Send email 3 days after someone subscribes"
28
- * [Selection of over 30 themes](http://www.mailpoet.com/newsletter-templates-wordpress/). Photoshop files included
 
 
 
29
  * Get stats for your newsletter: opens, clicks, unsubscribes
30
  * Drag and drop subscription form designer
31
  * Your newsletters look the same in Gmail, iPhone, Android, Outlook, Yahoo, Hotmail, etc.
32
- * Send emails to your WordPress users
33
- * Import subscribers in 2 steps
34
- * Single or double opt-in, your choice
35
- * Send with your web host, Gmail, any SMTP, like Amazon SES or Mandrill
36
- * Segment your lists based on opened, clicked & bounced
37
- * Sending in free version is limited to 2000 subscribers
38
 
39
  = Premium version =
40
 
@@ -43,8 +44,8 @@ http://vimeo.com/46247528
43
  * Send to more than 2000 subscribers
44
  * A beautiful statistics dashboard to compare your newsletters, and subscribers
45
  * Detailed stats for each subscriber and newsletter
46
- * Automated bounce handling
47
- * Test your spam score before you send
48
  * Improve deliverability with DKIM signature
49
  * Don't reinstall. Simply install an additional plugin
50
  * Priority support: let us optimize your settings!
@@ -59,7 +60,7 @@ Find over 80 articles in our documentation:
59
 
60
  = Translations in your language =
61
 
62
- [Get a Premium license in exchange for your help in translation](http://support.mailpoet.com/knowledgebase/translations-in-your-language/)
63
 
64
  * Arabic
65
  * Basque
@@ -133,6 +134,17 @@ Our [support site](http://support.mailpoet.com/) has plenty of articles and a ti
133
 
134
  == Changelog ==
135
 
 
 
 
 
 
 
 
 
 
 
 
136
  = 2.6.14 - 2014-11-26 =
137
  * Fixed all of the RTL issues on delivered newsletters and their web version
138
  * Fixed issue when importing subscribers with new custom fields
1
  === MailPoet Newsletters ===
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 ==
10
 
11
+ Create newsletters, automated emails, post notifications and autoresponders. Capture subscribers with our signup widget. Drop your posts, images, social icons in your newsletter. Change fonts and colors on the fly. A simple newsletter solution for WordPress. Finally!
12
 
13
  We built it with the idea that newsletters in WordPress should be easy. Not hard. Forget MailChimp, Aweber, etc. We're the good guys inside your WordPress.
14
 
25
  * Drag & drop newsletter editor
26
  * Send your latest posts automatically
27
  * Autoresponders, i.e. "Send email 3 days after someone subscribes"
28
+ * Send emails to your WordPress users
29
+ * Start collecting subscribers in 2-clicks with our sign up widget
30
+ * Single or double opt-in, your choice
31
+ * Import subscribers in 2 steps
32
  * Get stats for your newsletter: opens, clicks, unsubscribes
33
  * Drag and drop subscription form designer
34
  * Your newsletters look the same in Gmail, iPhone, Android, Outlook, Yahoo, Hotmail, etc.
35
+ * Send with your web host, Gmail, any SMTP, like SendGrid, Amazon SES Mandrill, etc...
36
+ * Segment your lists based on unopened, opened and clicked
37
+ * [Selection of over 70 themes](http://www.mailpoet.com/newsletter-templates-wordpress/). Photoshop files included
38
+ * Sending newsletters in the free version is limited to 2000 subscribers
 
 
39
 
40
  = Premium version =
41
 
44
  * Send to more than 2000 subscribers
45
  * A beautiful statistics dashboard to compare your newsletters, and subscribers
46
  * Detailed stats for each subscriber and newsletter
47
+ * Automated bounce handling, keep your subscribers' list clean
48
+ * Test your spam score before you send a newsletter to your subscribers
49
  * Improve deliverability with DKIM signature
50
  * Don't reinstall. Simply install an additional plugin
51
  * Priority support: let us optimize your settings!
60
 
61
  = Translations in your language =
62
 
63
+ [Get a Premium plugin license in exchange for your help in translation](http://support.mailpoet.com/knowledgebase/translations-in-your-language/)
64
 
65
  * Arabic
66
  * Basque
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
140
+ * Fixed the filter "Subscribers in no list" in the Subscribers' listing in the backend
141
+ * Fixed bug in the frontend subscriptions page with the shortcode [wysija_page] not being replaced
142
+ * Fixed rendering issue when sending WordPress Post notifications including multiple levels of nested HTML lists(ul & ol)
143
+ * Improved performance in the Subscribers' listing
144
+ * Improved scheduled tasks process responses for greater reliability
145
+ * Added "WBounce" to our list of compatible plugins in Settings > Add-ons
146
+ * Added non-translated strings for the subscribe and unsubscribe admin notifications
147
+
148
  = 2.6.14 - 2014-11-26 =
149
  * Fixed all of the RTL issues on delivered newsletters and their web version
150
  * Fixed issue when importing subscribers with new custom fields
views/back/campaigns.php CHANGED
@@ -2888,14 +2888,36 @@ class WYSIJA_view_back_campaigns extends WYSIJA_view_back {
2888
  $helper_readme = WYSIJA::get('readme', 'helper');
2889
  $helper_readme->scan();
2890
  $helper_licence = WYSIJA::get('licence', 'helper');
 
2891
  $data = array();
2892
- $data['abouttext'] = __('You updated! It\'s like having the next gadget, but better.', WYSIJA);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2893
  // this is a flag to have a pretty clean update page where teh only call to action is our survey
2894
- $show_survey = true;
2895
 
2896
  $is_multisite = is_multisite();
2897
  $is_network_admin = WYSIJA::current_user_can('manage_network');
2898
- $model_config = WYSIJA::get('config', 'model');
2899
 
2900
  if ($is_multisite) {
2901
  if ($is_network_admin) {
@@ -2907,11 +2929,25 @@ class WYSIJA_view_back_campaigns extends WYSIJA_view_back {
2907
 
2908
  $data = $this->_inject_alert( $data );
2909
 
2910
- // inject a poll in the what's new page
2911
- if($show_survey === false){
2912
- $data = $this->_inject_poll( $data );
 
 
 
 
 
 
 
 
 
 
 
 
2913
  }
2914
 
 
 
2915
  $msg = $model_config->getValue('ignore_msgs');
2916
  if ( !isset($msg['ctaupdate']) && $show_survey === false ) {
2917
  $data['sections'][] = array(
@@ -3056,6 +3092,7 @@ class WYSIJA_view_back_campaigns extends WYSIJA_view_back {
3056
  </div>';
3057
 
3058
  break;
 
3059
  default :
3060
  foreach ($section['paragraphs'] as $line) {
3061
  ?>
2888
  $helper_readme = WYSIJA::get('readme', 'helper');
2889
  $helper_readme->scan();
2890
  $helper_licence = WYSIJA::get('licence', 'helper');
2891
+ $model_config = WYSIJA::get('config', 'model');
2892
  $data = array();
2893
+ //
2894
+
2895
+ $installed_time = (int)$model_config->getValue('installed_time');
2896
+ $usage = time() - $installed_time;
2897
+
2898
+ $helper_toolbox = WYSIJA::get('toolbox', 'helper');
2899
+ $usage_string = $helper_toolbox->duration_string($usage, true, 1);
2900
+
2901
+ $onemonth = 3600*24*31;
2902
+ $twomonths = 3600*24*62;
2903
+ $year = 3600*24*365;
2904
+ if( $usage > $twomonths){
2905
+ $data['abouttext'] = sprintf(__('You have been a MailPoet user for %s.', WYSIJA), '<strong>'.trim($usage_string).'</strong>');
2906
+ if( $usage > $twomonths){
2907
+ $data['abouttext'] .= '<br/>'.__( 'Wow! Thanks for being part of our community for so long.' , WYSIJA ) ;
2908
+ }
2909
+
2910
+ }else{
2911
+ $data['abouttext'] = __('You updated! It\'s like having the next gadget, but better.', WYSIJA);
2912
+ }
2913
+
2914
+
2915
  // this is a flag to have a pretty clean update page where teh only call to action is our survey
2916
+ $show_survey = false;
2917
 
2918
  $is_multisite = is_multisite();
2919
  $is_network_admin = WYSIJA::current_user_can('manage_network');
2920
+
2921
 
2922
  if ($is_multisite) {
2923
  if ($is_network_admin) {
2929
 
2930
  $data = $this->_inject_alert( $data );
2931
 
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
  }
2948
 
2949
+
2950
+
2951
  $msg = $model_config->getValue('ignore_msgs');
2952
  if ( !isset($msg['ctaupdate']) && $show_survey === false ) {
2953
  $data['sections'][] = array(
3092
  </div>';
3093
 
3094
  break;
3095
+
3096
  default :
3097
  foreach ($section['paragraphs'] as $line) {
3098
  ?>