Newsletter - Version 3.3.6

Version Description

  • Fixed a caching blocking on short code
  • New way to create a newsletter
Download this release

Release Info

Developer satollo
Plugin Icon 128x128 Newsletter
Version 3.3.6
Comparing to
See all releases

Code changes from version 3.3.5 to 3.3.6

emails/emails.php CHANGED
@@ -19,7 +19,7 @@ class NewsletterEmails extends NewsletterModule {
19
 
20
  function __construct() {
21
  $this->themes = new NewsletterThemes('emails');
22
- parent::__construct('emails', '1.0.9');
23
  }
24
 
25
  function upgrade() {
@@ -44,7 +44,7 @@ class NewsletterEmails extends NewsletterModule {
44
  $this->add_admin_page('list', 'Email List');
45
  $this->add_admin_page('new', 'Email New');
46
  $this->add_admin_page('edit', 'Email Edit');
47
- $this->add_admin_page('theme', 'Email List');
48
  }
49
 
50
  /**
19
 
20
  function __construct() {
21
  $this->themes = new NewsletterThemes('emails');
22
+ parent::__construct('emails', '1.1.0');
23
  }
24
 
25
  function upgrade() {
44
  $this->add_admin_page('list', 'Email List');
45
  $this->add_admin_page('new', 'Email New');
46
  $this->add_admin_page('edit', 'Email Edit');
47
+ $this->add_admin_page('theme', 'Email Themes');
48
  }
49
 
50
  /**
emails/index.php CHANGED
@@ -75,7 +75,7 @@ $emails = Newsletter::instance()->get_emails('message');
75
  <?php } ?>
76
 
77
  <p>
78
- <a href="<?php echo $module->get_admin_page_url('new'); ?>" class="button">New message</a>
79
  <?php $controls->button_confirm('delete_selected', 'Delete selected messages', 'Proceed?'); ?>
80
  <?php $controls->button('send', 'Trigger the delivery engine'); ?>
81
  </p>
75
  <?php } ?>
76
 
77
  <p>
78
+ <a href="<?php echo $module->get_admin_page_url('theme'); ?>" class="button">New message</a>
79
  <?php $controls->button_confirm('delete_selected', 'Delete selected messages', 'Proceed?'); ?>
80
  <?php $controls->button('send', 'Trigger the delivery engine'); ?>
81
  </p>
emails/new.php CHANGED
@@ -3,7 +3,6 @@ require_once NEWSLETTER_INCLUDES_DIR . '/controls.php';
3
  $controls = new NewsletterControls();
4
  $module = NewsletterEmails::instance();
5
 
6
-
7
  if ($controls->is_action('theme')) {
8
  $controls->merge($module->themes->get_options($controls->data['theme']));
9
  $module->save_options($controls->data);
@@ -100,74 +99,28 @@ function newsletter_emails_get_theme_options($theme) {
100
 
101
  <form method="post" action="<?php echo $module->get_admin_page_url('new'); ?>">
102
  <?php $controls->init(); ?>
103
-
104
- <div class="newsletter-box">
105
- <h3>Choose a theme</h3>
106
- <?php //$controls->select('theme', NewsletterEmails::instance()->themes->get_all()); ?>
107
- <?php //$controls->button('change', 'Change theme'); ?>
108
-
109
- <?php $controls->themes('theme', $module->themes->get_all_with_data()); ?>
110
- </div>
111
-
112
- <!--
113
- <div id="tabs">
114
- <ul>
115
- <li><a href="#tabs-2">Preview</a></li>
116
- <li><a href="#tabs-options">Theme options</a></li>
117
- <li><a href="#tabs-3">Preview (textual)</a></li>
118
- </ul>
119
-
120
- -->
121
- <div>
122
-
123
-
124
- </div>
125
- <table style="width: 100%">
126
- <tr>
127
- <td><?php $controls->button('save', 'Save options and refresh'); ?>
128
- To create custom theme <a href="http://www.satollo.net/plugins/newsletter/newsletter-themes" target="_blank">read here</a>
129
-
130
- </td>
131
- <td>
132
- <?php $controls->button_primary('create', 'Go to edit this message'); ?>
133
- </td>
134
- </tr>
135
- <tr>
136
-
137
- <td style="vertical-align: top"><div class="newsletter-box">
138
-
139
- <h3>Set the theme options</h3>
140
- <?php @include $module->get_current_theme_file_path('theme-options.php'); ?>
141
-
142
-
143
-
144
- <!--<div class="hints">Theme options are saved for next time you'll use it!</div>-->
145
- </div></td>
146
- <td style="width: 600px; vertical-align: top"><iframe src="<?php echo wp_nonce_url(plugins_url('newsletter') . '/emails/preview.php?' . time()); ?>" width="100%" height="700" style="border: 1px solid #ccc"></iframe>
147
- </td>
148
- </tr>
149
- </table>
150
-
151
-
152
- <!--
153
- <div id="tabs-2">
154
-
155
- <div class="tab-preamble">
156
- <p>After the email is created, you can edit every part of this message.</p>
157
- </div>
158
- <iframe src="<?php echo wp_nonce_url(plugins_url('newsletter') . '/emails/preview.php?' . time()); ?>" width="100%" height="700"></iframe>
159
-
160
- </div>
161
- -->
162
- <!--
163
- <div id="tabs-3">
164
- <iframe src="<?php echo wp_nonce_url(plugins_url('newsletter') . '/emails/preview-text.php?' . time()); ?>" width="100%" height="500"></iframe>
165
- </div>
166
- -->
167
- <!--</div>-->
168
-
169
- <h3>Preview</h3>
170
-
171
-
172
  </form>
173
  </div>
3
  $controls = new NewsletterControls();
4
  $module = NewsletterEmails::instance();
5
 
 
6
  if ($controls->is_action('theme')) {
7
  $controls->merge($module->themes->get_options($controls->data['theme']));
8
  $module->save_options($controls->data);
99
 
100
  <form method="post" action="<?php echo $module->get_admin_page_url('new'); ?>">
101
  <?php $controls->init(); ?>
102
+ <?php $controls->hidden('theme'); ?>
103
+
104
+ <table style="width: 100%">
105
+ <tr>
106
+ <td><?php $controls->button_primary('save', 'Save options and refresh'); ?>
107
+ To create custom theme <a href="http://www.satollo.net/plugins/newsletter/newsletter-themes" target="_blank">read here</a>
108
+ </td>
109
+ <td>
110
+ <?php $controls->button_primary('create', 'Go to edit this message'); ?>
111
+ </td>
112
+ </tr>
113
+ <tr>
114
+ <td style="width: 600px; vertical-align: top">
115
+ <?php @include $module->get_current_theme_file_path('theme-options.php'); ?>
116
+
117
+ This theme options are saved for next time you'll use it!
118
+ </td>
119
+ <td style="vertical-align: top">
120
+ <iframe src="<?php echo wp_nonce_url(plugins_url('newsletter') . '/emails/preview.php?' . time()); ?>" width="100%" height="700" style="border: 1px solid #ccc"></iframe>
121
+ </td>
122
+ </tr>
123
+ </table>
124
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
125
  </form>
126
  </div>
emails/theme.php ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ require_once NEWSLETTER_INCLUDES_DIR . '/controls.php';
3
+ $controls = new NewsletterControls();
4
+ $module = NewsletterEmails::instance();
5
+
6
+
7
+ if ($controls->is_action('theme')) {
8
+ $controls->merge($module->themes->get_options($controls->data['theme']));
9
+ $module->save_options($controls->data);
10
+ }
11
+
12
+
13
+ if ($controls->data == null) {
14
+ $controls->data = $module->get_options();
15
+ }
16
+
17
+
18
+
19
+ function newsletter_emails_update_options($options) {
20
+ add_option('newsletter_emails', '', null, 'no');
21
+ update_option('newsletter_emails', $options);
22
+ }
23
+
24
+ function newsletter_emails_update_theme_options($theme, $options) {
25
+ $x = strrpos($theme, '/');
26
+ if ($x !== false) {
27
+ $theme = substr($theme, $x+1);
28
+ }
29
+ add_option('newsletter_emails_' . $theme, '', null, 'no');
30
+ update_option('newsletter_emails_' . $theme, $options);
31
+ }
32
+
33
+ function newsletter_emails_get_options() {
34
+ $options = get_option('newsletter_emails', array());
35
+ return $options;
36
+ }
37
+
38
+ function newsletter_emails_get_theme_options($theme) {
39
+ $x = strrpos($theme, '/');
40
+ if ($x !== false) {
41
+ $theme = substr($theme, $x+1);
42
+ }
43
+ $options = get_option('newsletter_emails_' . $theme, array());
44
+ return $options;
45
+ }
46
+
47
+ $themes = $module->themes->get_all_with_data();
48
+ ?>
49
+
50
+ <div class="wrap">
51
+
52
+ <?php $help_url = 'http://www.satollo.net/plugins/newsletter/newsletters-module'; ?>
53
+ <?php include NEWSLETTER_DIR . '/header.php'; ?>
54
+
55
+ <h2>New Newsletter</h2>
56
+
57
+ <?php $controls->show(); ?>
58
+
59
+ <form method="post" id="newsletter-form" action="<?php echo $module->get_admin_page_url('new'); ?>">
60
+ <?php $controls->init(); ?>
61
+ <?php $controls->hidden('theme'); ?>
62
+ <?php foreach ($themes as $key => &$data) { ?>
63
+ <div style="display: block; float: left; text-align: center; margin-right: 10px;">
64
+ <?php echo $key; ?><br>
65
+ <a href="#" onclick="var f = document.getElementById('newsletter-form'); f.act.value='theme'; f.elements['options[theme]'].value='<?php echo $key; ?>'; f.submit(); return false"><img src="<?php echo $data['screenshot'] ?>" width="200" height="200" style="border: 1px solid #666; padding: 5px"></a>
66
+ </div>
67
+ <?php } ?>
68
+ </form>
69
+ </div>
emails/themes/default/images/facebook.png ADDED
Binary file
emails/themes/default/images/googleplus.png ADDED
Binary file
emails/themes/default/images/linkedin.png ADDED
Binary file
emails/themes/default/images/pinterest.png ADDED
Binary file
emails/themes/default/images/twitter.png ADDED
Binary file
emails/themes/default/theme-options.php CHANGED
@@ -1,30 +1,65 @@
 
 
 
 
 
 
1
 
2
- Base color
3
- <?php $controls->color('theme_color'); ?> (format #RRGGBB)
4
- <br><br>
5
- Banner/Title
6
- <?php $controls->wp_editor('theme_banner'); ?>
7
- <div class="hints">
8
- Create a content with an image (500 pixel wide) that will be your newsletter banner and that will replace the
9
- title with your blog name.
10
- </div>
11
- <br>
12
- <?php $controls->checkbox('theme_posts', 'Add latest posts'); ?>
13
- <br>
14
- <?php $controls->checkbox('theme_thumbnails', 'Add post thumbnails'); ?>
15
- <br>
16
- <?php $controls->checkbox('theme_excerpts', 'Add post excerpts'); ?>
17
- <br><br>
18
- Categories
19
- <?php $controls->categories_group('theme_categories'); ?>
20
- <br><br>
21
- Tags
22
- <?php $controls->text('theme_tags', 30); ?> (comma separated)
23
- <br><br>
24
- Max posts
25
- <?php $controls->text('theme_max_posts', 5); ?>
26
- <br><br>
27
- Post types to include
28
- <br>
29
- <?php $controls->post_types('theme_post_types'); ?>
30
- <div class="hints">Leave all uncheck for a default behavior.</div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div id="tabs">
2
+ <ul>
3
+ <li><a href="#tab-general">General</a></li>
4
+ <li><a href="#tab-posts">Posts</a></li>
5
+ <li><a href="#tab-social">Social</a></li>
6
+ </ul>
7
 
8
+ <div id="tab-general">
9
+ Base color
10
+ <?php $controls->color('theme_color'); ?> (format #RRGGBB)
11
+ <br><br>
12
+ Banner/Title
13
+ <?php $controls->wp_editor('theme_banner'); ?>
14
+ <div class="hints">
15
+ Create a content with an image (500 pixel wide) that will be your newsletter banner and that will replace the
16
+ title with your blog name.
17
+ </div>
18
+ </div>
19
+ <div id="tab-posts">
20
+ <?php $controls->checkbox('theme_posts', 'Add latest posts'); ?>
21
+ <br>
22
+ <?php $controls->checkbox('theme_thumbnails', 'Add post thumbnails'); ?>
23
+ <br>
24
+ <?php $controls->checkbox('theme_excerpts', 'Add post excerpts'); ?>
25
+ <br><br>
26
+ Categories
27
+ <?php $controls->categories_group('theme_categories'); ?>
28
+ <br><br>
29
+ Tags
30
+ <?php $controls->text('theme_tags', 30); ?> (comma separated)
31
+ <br><br>
32
+ Max posts
33
+ <?php $controls->text('theme_max_posts', 5); ?>
34
+ <br><br>
35
+ Post types to include
36
+ <br>
37
+ <?php $controls->post_types('theme_post_types'); ?>
38
+ <div class="hints">Leave all uncheck for a default behavior.</div>
39
+ </div>
40
+ <div id="tab-social">
41
+ <table class="form-table">
42
+ <tr>
43
+ <th>Facebook</th>
44
+ <td><?php $controls->text_url('theme_facebook',30); ?></td>
45
+ </tr>
46
+ <tr>
47
+ <th>Twitter</th>
48
+ <td><?php $controls->text_url('theme_twitter',30); ?></td>
49
+ </tr>
50
+ <tr>
51
+ <th>Pinterest</th>
52
+ <td><?php $controls->text_url('theme_pinterest',30); ?></td>
53
+ </tr>
54
+ <tr>
55
+ <th>Google+</th>
56
+ <td><?php $controls->text_url('theme_googleplus',30); ?></td>
57
+ </tr>
58
+ <tr>
59
+ <th>LinkedIn</th>
60
+ <td><?php $controls->text_url('theme_linkedin',30); ?></td>
61
+ </tr>
62
+ </table>
63
+
64
+ </div>
65
+ </div>
emails/themes/default/theme.php CHANGED
@@ -82,6 +82,62 @@ if (isset($theme_options['theme_posts'])) {
82
  <?php } ?>
83
  </table>
84
  <?php } ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
85
 
86
  <p>To change your subscription, <a target="_blank" href="{profile_url}">click here</a>.
87
  </div>
82
  <?php } ?>
83
  </table>
84
  <?php } ?>
85
+
86
+ <!-- Social -->
87
+ <table cellpadding="5" align="center">
88
+ <tr>
89
+ <?php if (!empty($theme_options['theme_facebook'])) { ?>
90
+ <td style="text-align: center; vertical-align: top" align="center" valign="top">
91
+ <a href="<?php echo $theme_options['theme_facebook']?>">
92
+ <img src="<?php echo $theme_url?>/images/facebook.png">
93
+ <br>
94
+ Facebook
95
+ </a>
96
+ </td>
97
+ <?php } ?>
98
+
99
+ <?php if (!empty($theme_options['theme_twitter'])) { ?>
100
+ <td style="text-align: center; vertical-align: top" align="center" valign="top">
101
+ <a href="<?php echo $theme_options['theme_twitter']?>">
102
+ <img src="<?php echo $theme_url?>/images/twitter.png">
103
+ <br>
104
+ Twitter
105
+ </a>
106
+ </td>
107
+ <?php } ?>
108
+
109
+ <?php if (!empty($theme_options['theme_googleplus'])) { ?>
110
+ <td style="text-align: center; vertical-align: top" align="center" valign="top">
111
+ <a href="<?php echo $theme_options['theme_googleplus']?>">
112
+ <img src="<?php echo $theme_url?>/images/googleplus.png">
113
+ <br>
114
+ Google+
115
+ </a>
116
+ </td>
117
+ <?php } ?>
118
+
119
+ <?php if (!empty($theme_options['theme_pinterest'])) { ?>
120
+ <td style="text-align: center; vertical-align: top" align="center" valign="top">
121
+ <a href="<?php echo $theme_options['theme_pinterest']?>">
122
+ <img src="<?php echo $theme_url?>/images/pinterest.png">
123
+ <br>
124
+ Pinterest
125
+ </a>
126
+ </td>
127
+ <?php } ?>
128
+
129
+ <?php if (!empty($theme_options['theme_linkedin'])) { ?>
130
+ <td style="text-align: center; vertical-align: top" align="center" valign="top">
131
+ <a href="<?php echo $theme_options['theme_linkedin']?>">
132
+ <img src="<?php echo $theme_url?>/images/linkedin.png">
133
+ <br>
134
+ LinkedIn
135
+ </a>
136
+ </td>
137
+ <?php } ?>
138
+
139
+ </tr>
140
+ </table>
141
 
142
  <p>To change your subscription, <a target="_blank" href="{profile_url}">click here</a>.
143
  </div>
includes/controls.php CHANGED
@@ -256,18 +256,28 @@ class NewsletterControls {
256
  }
257
 
258
  function text($name, $size = 20, $placeholder = '') {
 
259
  echo '<input placeholder="' . htmlspecialchars($placeholder) . '" name="options[' . $name . ']" type="text" size="' . $size . '" value="';
260
  echo htmlspecialchars($this->data[$name]);
261
  echo '"/>';
262
  }
263
 
264
  function text_email($name, $size = 40) {
 
265
  echo '<input name="options[' . $name . ']" type="email" placeholder="Valid email address" size="' . $size . '" value="';
266
  echo htmlspecialchars($this->data[$name]);
267
  echo '"/>';
268
  }
 
 
 
 
 
 
 
269
 
270
  function hidden($name) {
 
271
  echo '<input name="options[' . $name . ']" type="hidden" value="';
272
  echo htmlspecialchars($this->data[$name]);
273
  echo '"/>';
256
  }
257
 
258
  function text($name, $size = 20, $placeholder = '') {
259
+ if (!isset($this->data[$name])) $this->data[$name] = '';
260
  echo '<input placeholder="' . htmlspecialchars($placeholder) . '" name="options[' . $name . ']" type="text" size="' . $size . '" value="';
261
  echo htmlspecialchars($this->data[$name]);
262
  echo '"/>';
263
  }
264
 
265
  function text_email($name, $size = 40) {
266
+ if (!isset($this->data[$name])) $this->data[$name] = '';
267
  echo '<input name="options[' . $name . ']" type="email" placeholder="Valid email address" size="' . $size . '" value="';
268
  echo htmlspecialchars($this->data[$name]);
269
  echo '"/>';
270
  }
271
+
272
+ function text_url($name, $size = 40) {
273
+ if (!isset($this->data[$name])) $this->data[$name] = '';
274
+ echo '<input name="options[' . $name . ']" type="url" placeholder="http://..." size="' . $size . '" value="';
275
+ echo htmlspecialchars($this->data[$name]);
276
+ echo '"/>';
277
+ }
278
 
279
  function hidden($name) {
280
+ if (!isset($this->data[$name])) $this->data[$name] = '';
281
  echo '<input name="options[' . $name . ']" type="hidden" value="';
282
  echo htmlspecialchars($this->data[$name]);
283
  echo '"/>';
plugin.php CHANGED
@@ -4,7 +4,7 @@
4
  Plugin Name: Newsletter
5
  Plugin URI: http://www.satollo.net/plugins/newsletter
6
  Description: Newsletter is a cool plugin to create your own subscriber list, to send newsletters, to build your business. <strong>Before update give a look to <a href="http://www.satollo.net/plugins/newsletter#update">this page</a> to know what's changed.</strong>
7
- Version: 3.3.5
8
  Author: Stefano Lissa
9
  Author URI: http://www.satollo.net
10
  Disclaimer: Use at your own risk. No warranty expressed or implied is provided.
@@ -13,7 +13,7 @@
13
  */
14
 
15
  // Useed as dummy parameter on css and js links
16
- define('NEWSLETTER_VERSION', '3.3.5');
17
 
18
  global $wpdb, $newsletter;
19
 
4
  Plugin Name: Newsletter
5
  Plugin URI: http://www.satollo.net/plugins/newsletter
6
  Description: Newsletter is a cool plugin to create your own subscriber list, to send newsletters, to build your business. <strong>Before update give a look to <a href="http://www.satollo.net/plugins/newsletter#update">this page</a> to know what's changed.</strong>
7
+ Version: 3.3.6
8
  Author: Stefano Lissa
9
  Author URI: http://www.satollo.net
10
  Disclaimer: Use at your own risk. No warranty expressed or implied is provided.
13
  */
14
 
15
  // Useed as dummy parameter on css and js links
16
+ define('NEWSLETTER_VERSION', '3.3.6');
17
 
18
  global $wpdb, $newsletter;
19
 
readme.txt CHANGED
@@ -2,7 +2,7 @@
2
  Tags: newsletter,email,subscription,mass mail,list build,email marketing,direct mailing
3
  Requires at least: 3.3.0
4
  Tested up to: 3.5.2
5
- Stable tag: 3.3.5
6
  Donate link: http://www.satollo.net/donations
7
 
8
  Add a real newsletter to your blog. In seconds. For free. With unlimited emails and subscribers.
@@ -55,6 +55,11 @@ No screen shots are available at this time.
55
 
56
  == Changelog ==
57
 
 
 
 
 
 
58
  = 3.3.5 =
59
 
60
  * Fixed the mailto rewriting
2
  Tags: newsletter,email,subscription,mass mail,list build,email marketing,direct mailing
3
  Requires at least: 3.3.0
4
  Tested up to: 3.5.2
5
+ Stable tag: 3.3.6
6
  Donate link: http://www.satollo.net/donations
7
 
8
  Add a real newsletter to your blog. In seconds. For free. With unlimited emails and subscribers.
55
 
56
  == Changelog ==
57
 
58
+ = 3.3.6 =
59
+
60
+ * Fixed a caching blocking on short code
61
+ * New way to create a newsletter
62
+
63
  = 3.3.5 =
64
 
65
  * Fixed the mailto rewriting
subscription/subscription.php CHANGED
@@ -886,8 +886,6 @@ add_shortcode('newsletter_embed', 'newsletter_shortcode_form');
886
  add_shortcode('newsletter_form', 'newsletter_shortcode_form');
887
 
888
  function newsletter_shortcode_form($attrs, $content) {
889
- global $cache_stop;
890
- $cache_stop = true;
891
  if (isset($attrs['form'])) {
892
  return NewsletterSubscription::instance()->get_form($attrs['form']);
893
  } else {
886
  add_shortcode('newsletter_form', 'newsletter_shortcode_form');
887
 
888
  function newsletter_shortcode_form($attrs, $content) {
 
 
889
  if (isset($attrs['form'])) {
890
  return NewsletterSubscription::instance()->get_form($attrs['form']);
891
  } else {