Newsletter - Version 1.5.9

Version Description

Download this release

Release Info

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

Code changes from version 1.5.0 to 1.5.9

commons.php ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if (!isset($newsletter_options_main['no_translation'])) {
4
+ $plugin_dir = basename(dirname(__FILE__));
5
+ load_plugin_textdomain('newsletter', 'wp-content/plugins/' . $plugin_dir . '/languages/');
6
+ }
7
+
8
+ $action = $_REQUEST['act'];
9
+ if (isset($action) && !check_admin_referer()) die('Invalid call');
10
+
11
+ /**
12
+ * Utility class to generate HTML form fields.
13
+ */
14
+ class NewsletterControls {
15
+
16
+ var $data;
17
+ var $action = false;
18
+
19
+ function NewsletterControls($options=null) {
20
+ $this->data = $options;
21
+ }
22
+
23
+ function yesno($name) {
24
+ $value = isset($this->data[$name])?(int)$this->data[$name]:0;
25
+
26
+ echo '<select style="width: 60px" name="options[' . $name . ']">';
27
+ echo '<option value="0"';
28
+ if ($value == 0) echo ' selected';
29
+ echo '>No</option>';
30
+ echo '<option value="1"';
31
+ if ($value == 1) echo ' selected';
32
+ echo '>Yes</option>';
33
+ echo '</select>';
34
+ }
35
+
36
+ function select($name, $options) {
37
+ $value = $this->data[$name];
38
+
39
+ echo '<select name="options[' . $name . ']">';
40
+ foreach($options as $key=>$label) {
41
+ echo '<option value="' . $key . '"';
42
+ if ($value == $key) echo ' selected';
43
+ echo '>' . htmlspecialchars($label) . '</option>';
44
+ }
45
+ echo '</select>';
46
+ }
47
+
48
+ function text($name, $size) {
49
+ echo '<input name="options[' . $name . ']" type="text" size="' . $size . '" value="';
50
+ echo htmlspecialchars($this->data[$name]);
51
+ echo '"/>';
52
+ }
53
+
54
+ function button($action, $label, $function=null) {
55
+ if (!$this->action) echo '<input name="act" type="hidden" value=""/>';
56
+ $this->action = true;
57
+ if ($function != null) {
58
+ echo '<input type="button" value="' . $label . '" onclick="this.form.act.value=\'' . $action . '\';' . $function . '"/>';
59
+ }
60
+ else {
61
+ echo '<input type="button" value="' . $label . '" onclick="this.form.act.value=\'' . $action . '\';this.form.submit()"/>';
62
+ }
63
+ }
64
+
65
+ function editor($name, $rows=5, $cols=75) {
66
+ echo '<textarea class="visual" name="options[' . $name . ']" wrap="off" rows="' . $rows . '" cols="' . $cols . '">';
67
+ echo htmlspecialchars($this->data[$name]);
68
+ echo '</textarea>';
69
+ }
70
+
71
+ function textarea($name, $rows=5, $cols=75) {
72
+ echo '<textarea name="options[' . $name . ']" wrap="off" rows="' . $rows . '" cols="' . $cols . '">';
73
+ echo htmlspecialchars($this->data[$name]);
74
+ echo '</textarea>';
75
+ }
76
+
77
+ function email($prefix) {
78
+ echo 'Subject:<br />';
79
+ $this->text($prefix . '_subject', 70);
80
+ echo '<br />Message:<br />';
81
+ $this->editor($prefix . '_message');
82
+ }
83
+
84
+ function checkbox($name, $label='') {
85
+ echo '<input type="checkbox" id="' . $name . '" name="options[' . $name . ']" value="1"';
86
+ if (isset($this->data[$name])) echo ' checked="checked"';
87
+ echo '/>';
88
+ if ($label != '') echo ' <label for="' . $name . '">' . $label . '</label>';
89
+ }
90
+ }
91
+
92
+ ?>
convert.php CHANGED
@@ -1,4 +1,6 @@
1
-
 
 
2
  <div class="wrap">
3
  <form method="post" action="">
4
  <h2>Conversion</h2>
1
+ <?php
2
+ @include_once 'commons.php';
3
+ ?>
4
  <div class="wrap">
5
  <form method="post" action="">
6
  <h2>Conversion</h2>
export.php CHANGED
@@ -1,15 +1,15 @@
1
  <?php
2
- $plugin_dir = basename(dirname(__FILE__));
3
- load_plugin_textdomain('newsletter', 'wp-content/plugins/' . $plugin_dir . '/languages/');
4
  ?>
5
 
6
  <div class="wrap">
7
- <h2><?php _e('Subscribers Export', 'newsletter'); ?></h2>
8
 
9
- <p><?php _e('The text below is a list of all your subscribers (confirmed and not) in cvs format. You can copy, save and edit it with Excel or other software. Status column has 2 values: S - subscribed but not confirmed, C - confirmed.', 'newsletter'); ?></p>
 
10
 
11
- <textarea wrap="off" style="width: 100%; height: 300px; font-size: 11px; font-family: monospace"><?php _e('Email', 'newsletter'); ?>,<?php _e('Name', 'newsletter'); ?>,<?php _e('Status', 'newsletter'); ?>,<?php _e('Token', 'newsletter'); ?>
12
- <?php
13
  $query = "select * from " . $wpdb->prefix . "newsletter";
14
  $recipients = $wpdb->get_results($query . " order by email");
15
  for ($i=0; $i<count($recipients); $i++) {
1
  <?php
2
+ @include_once 'commons.php';
3
+
4
  ?>
5
 
6
  <div class="wrap">
7
+ <h2><?php _e('Newsletter Export', 'newsletter'); ?> <a target="_blank" href="http://www.satollo.net/plugins/newsletter#export"><img src="<?php echo get_option('siteurl'); ?>/wp-content/plugins/newsletter/help.png"/></a></h2>
8
 
9
+ <textarea wrap="off" style="width: 100%; height: 400px; font-size: 11px; font-family: monospace">
10
+ email;name;status;token
11
 
12
+ <?php
 
13
  $query = "select * from " . $wpdb->prefix . "newsletter";
14
  $recipients = $wpdb->get_results($query . " order by email");
15
  for ($i=0; $i<count($recipients); $i++) {
forms.php CHANGED
@@ -1,9 +1,13 @@
 
 
 
 
1
  <div class="wrap">
2
 
3
- <h2>Forms</h2>
4
 
5
  <?php if (!defined('NEWSLETTER_EXTRAS')) { ?>
6
- <strong>You need the <a href="http://www.satollo.net/plugins/newsletter/extras">Newsletter Extras</a> installed to use this panel</strong>
7
  <?php } else { ?>
8
  <?php require_once ABSPATH . 'wp-content/plugins/newsletter-extras/forms.php'; ?>
9
  <?php } ?>
1
+ <?php
2
+ @include_once 'commons.php';
3
+ ?>
4
+
5
  <div class="wrap">
6
 
7
+ <h2>Newsletter Forms</h2>
8
 
9
  <?php if (!defined('NEWSLETTER_EXTRAS')) { ?>
10
+ <strong>You need the <a href="http://www.satollo.net/plugins/newsletter-extras">Newsletter Extras</a> installed to use this panel</strong>
11
  <?php } else { ?>
12
  <?php require_once ABSPATH . 'wp-content/plugins/newsletter-extras/forms.php'; ?>
13
  <?php } ?>
header.php CHANGED
@@ -1,4 +1,8 @@
1
- <iframe width="100%" height="100" src="http://www.satollo.net/services/newsletter?extras=<?php echo NEWSLETTER_EXTRAS; ?>" style="border: 1px solid #ccc"></iframe>
2
- <?php if (newsletter_has_extras()) { ?>
3
- <p>You have Newsletter Extras package version <?php echo NEWSLETTER_EXTRAS; ?> installed. Thank you!</strong></p>
 
 
4
  <?php } ?>
 
 
1
+
2
+ <?php if (defined('NEWSLETTER_EXTRAS')) { ?>
3
+ <iframe width="100%" height="50" src="http://www.satollo.net/services/newsletter?extras=<?php echo NEWSLETTER_EXTRAS; ?>" style="border: 1px solid #ccc"></iframe>
4
+ <?php } else { ?>
5
+ <iframe width="100%" height="100" src="http://www.satollo.net/services/newsletter" style="border: 1px solid #ccc"></iframe>
6
  <?php } ?>
7
+
8
+
help.png ADDED
Binary file
import.php CHANGED
@@ -1,16 +1,13 @@
1
  <?php
2
 
 
 
3
  $options = get_option('newsletter');
4
 
5
- if (!isset($options['no_translation'])) {
6
- $plugin_dir = basename(dirname(__FILE__));
7
- load_plugin_textdomain('newsletter', 'wp-content/plugins/' . $plugin_dir . '/languages/');
8
- }
9
 
10
- if (isset($_POST['import'])) {
11
- if (!check_admin_referer()) die('No hacking please');
12
  @set_time_limit(100000);
13
- $csv = newsletter_request('csv');
14
  $lines = explode("\n", $csv);
15
 
16
  $errors = array();
@@ -19,12 +16,13 @@ if (isset($_POST['import'])) {
19
  if ($line == '') continue;
20
  if ($line[0] == '#') continue;
21
  $data = explode(';', $line);
22
- if (!newsletter_is_email($data[0])) {
 
 
23
  $errors[] = $line;
24
  continue;
25
  }
26
- $email = newsletter_normalize_email($data[0]);
27
- $name = $data[1];
28
  $token = md5(rand());
29
  $r = $wpdb->query("insert into " . $wpdb->prefix . "newsletter (status, email, name, token) values ('C', '" . $wpdb->escape($email) . "','" . $wpdb->escape($name) . "','" . $token . "')");
30
  // Zero or false mean no row inserted
@@ -32,31 +30,31 @@ if (isset($_POST['import'])) {
32
  }
33
  }
34
 
 
35
  ?>
36
 
37
  <div class="wrap">
38
 
39
- <h2><?php _e('Subscribers Import', 'newsletter'); ?></h2>
40
 
41
- <?php require_once 'header.php'; ?>
42
 
43
- <?php if ($errors) { ?>
44
 
45
  <h3><?php _e('Rows with errors', 'newsletter'); ?></h3>
 
46
  <textarea wrap="off" style="width: 100%; height: 150px; font-size: 11px; font-family: monospace"><?php echo htmlspecialchars(implode("\n", $errors))?></textarea>
47
 
48
- <?php } ?>
49
 
50
- <form method="post">
51
- <?php wp_nonce_field(); ?>
52
- <h3><?php _e('Import', 'newsletter'); ?></h3>
53
- <p><?php _e('On the textarea below you can copy a text in CSV (comma separated values) with format:<br /><br /> <pre>user email;user name</pre><br /><br />and then import them. If an email is already stored, it won\'t be imported. If an email is wrong it won\'t be imported. Even when there are errors on CSV lines, the import will continue to the end. After the import process has ended, a box will appear with all the line not imported due to duplications or errors. Imported subscriber will be set as confirmed.', 'newsletter'); ?>
54
- </p>
55
- <p><?php _e('Empty rows and rows staring with sharp (#) are skipped. Emails will be normalized and a subscriber token generated for each imported email.', 'newsletter'); ?></p>
56
 
57
  <textarea name="csv" wrap="off" style="width: 100%; height: 300px; font-size: 11px; font-family: monospace"></textarea>
58
  <p class="submit">
59
- <input class="button" type="submit" name="import" value="<?php _e('Import', 'newsletter'); ?>"/>
60
  </p>
61
  </form>
62
 
1
  <?php
2
 
3
+ @include_once 'commons.php';
4
+
5
  $options = get_option('newsletter');
6
 
 
 
 
 
7
 
8
+ if ($action == 'import') {
 
9
  @set_time_limit(100000);
10
+ $csv = stripslashes($_POST['csv']);
11
  $lines = explode("\n", $csv);
12
 
13
  $errors = array();
16
  if ($line == '') continue;
17
  if ($line[0] == '#') continue;
18
  $data = explode(';', $line);
19
+ $email = newsletter_normalize_email($data[0]);
20
+ if (!newsletter_is_email($email))
21
+ {
22
  $errors[] = $line;
23
  continue;
24
  }
25
+ $name = newsletter_normalize_name($data[1]);
 
26
  $token = md5(rand());
27
  $r = $wpdb->query("insert into " . $wpdb->prefix . "newsletter (status, email, name, token) values ('C', '" . $wpdb->escape($email) . "','" . $wpdb->escape($name) . "','" . $token . "')");
28
  // Zero or false mean no row inserted
30
  }
31
  }
32
 
33
+ $nc = new NewsletterControls();
34
  ?>
35
 
36
  <div class="wrap">
37
 
38
+ <h2><?php _e('Newsletter Import', 'newsletter'); ?> <a target="_blank" href="http://www.satollo.net/plugins/newsletter#import"><img src="<?php echo get_option('siteurl'); ?>/wp-content/plugins/newsletter/help.png"/></a></h2>
39
 
40
+ <?php require_once 'header.php'; ?>
41
 
42
+ <?php if (!empty($errors)) { ?>
43
 
44
  <h3><?php _e('Rows with errors', 'newsletter'); ?></h3>
45
+
46
  <textarea wrap="off" style="width: 100%; height: 150px; font-size: 11px; font-family: monospace"><?php echo htmlspecialchars(implode("\n", $errors))?></textarea>
47
 
48
+ <?php } ?>
49
 
50
+ <form method="post" action="">
51
+ <?php wp_nonce_field(); ?>
52
+
53
+ <h3><?php _e('CSV text with subscribers', 'newsletter'); ?></h3>
 
 
54
 
55
  <textarea name="csv" wrap="off" style="width: 100%; height: 300px; font-size: 11px; font-family: monospace"></textarea>
56
  <p class="submit">
57
+ <?php $nc->button('import', __('Import', 'newsletter')); ?>
58
  </p>
59
  </form>
60
 
languages/newsletter-1.5.2.pot ADDED
@@ -0,0 +1,419 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Translation of the WordPress plugin by .
2
+ # Copyright (C) 2010
3
+ # This file is distributed under the same license as the package.
4
+ # FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
5
+ #
6
+ #, fuzzy
7
+ msgid ""
8
+ msgstr ""
9
+ "Project-Id-Version: \n"
10
+ "Report-Msgid-Bugs-To: http://wordpress.org/tag/newsletter\n"
11
+ "POT-Creation-Date: 2010-03-03 13:44+0000\n"
12
+ "PO-Revision-Date: 2010-MO-DA HO:MI+ZONE\n"
13
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
+ "Language-Team: LANGUAGE <LL@li.org>\n"
15
+ "MIME-Version: 1.0\n"
16
+ "Content-Type: text/plain; charset=utf-8\n"
17
+ "Content-Transfer-Encoding: 8bit\n"
18
+
19
+ #: export.php:7
20
+ msgid "Newsletter Export"
21
+ msgstr ""
22
+
23
+ #: feed.php:6
24
+ msgid "Newsletter feed by mail"
25
+ msgstr ""
26
+
27
+ #: import.php:38
28
+ msgid "Newsletter Import"
29
+ msgstr ""
30
+
31
+ #: import.php:44
32
+ msgid "Rows with errors"
33
+ msgstr ""
34
+
35
+ #: import.php:53
36
+ msgid "CSV text with subscribers"
37
+ msgstr ""
38
+
39
+ #: import.php:57
40
+ msgid "Import"
41
+ msgstr ""
42
+
43
+ #: main.php:18
44
+ msgid "Newsletter Configuration"
45
+ msgstr ""
46
+
47
+ #: main.php:26
48
+ msgid "General parameters"
49
+ msgstr ""
50
+
51
+ #: main.php:29
52
+ msgid "Enable access to editors?"
53
+ msgstr ""
54
+
55
+ #: main.php:35
56
+ msgid "Always show panels in english?"
57
+ msgstr ""
58
+
59
+ #: main.php:39
60
+ msgid ""
61
+ "The author does NOT mainatin translations, so if you have a doubt about some "
62
+ "texts, disable the translations"
63
+ msgstr ""
64
+
65
+ #: main.php:43
66
+ msgid "Logging"
67
+ msgstr ""
68
+
69
+ #: main.php:47
70
+ msgid "Debug level saves user data on file system, use only to debug problems."
71
+ msgstr ""
72
+
73
+ #: main.php:52 newsletter.php:412 options.php:105 options.php:141
74
+ #: options.php:174 options.php:226 options.php:272 options.php:288
75
+ msgid "Save"
76
+ msgstr ""
77
+
78
+ #: manage.php:82
79
+ msgid "Resend the subscription confirmation email?"
80
+ msgstr ""
81
+
82
+ #: manage.php:91
83
+ msgid "Newsletter Subscribers"
84
+ msgstr ""
85
+
86
+ #: manage.php:104 manage.php:107
87
+ msgid "Search"
88
+ msgstr ""
89
+
90
+ #: manage.php:109
91
+ msgid ""
92
+ "Press without filter to show all. Max 100 results will be shown. Use export "
93
+ "panel to get all subscribers."
94
+ msgstr ""
95
+
96
+ #: manage.php:116
97
+ msgid "Only not yet confirmed"
98
+ msgstr ""
99
+
100
+ #: manage.php:120
101
+ msgid "Order"
102
+ msgstr ""
103
+
104
+ #: manage.php:162
105
+ msgid "Remove all unconfirmed"
106
+ msgstr ""
107
+
108
+ #: manage.php:162
109
+ msgid "Are your sure, really sure?"
110
+ msgstr ""
111
+
112
+ #: manage.php:168
113
+ msgid "Subscriber's statistics"
114
+ msgstr ""
115
+
116
+ #: manage.php:169
117
+ msgid "Confirmed subscriber"
118
+ msgstr ""
119
+
120
+ #: manage.php:171
121
+ msgid "Unconfirmed subscriber"
122
+ msgstr ""
123
+
124
+ #: manage.php:173
125
+ msgid "Results"
126
+ msgstr ""
127
+
128
+ #: manage.php:178
129
+ msgid "Email"
130
+ msgstr ""
131
+
132
+ #: manage.php:178
133
+ msgid "Name"
134
+ msgstr ""
135
+
136
+ #: manage.php:178
137
+ msgid "Status"
138
+ msgstr ""
139
+
140
+ #: manage.php:178
141
+ msgid "Actions"
142
+ msgstr ""
143
+
144
+ #: manage.php:178
145
+ msgid "Profile"
146
+ msgstr ""
147
+
148
+ #: manage.php:186
149
+ msgid "edit"
150
+ msgstr ""
151
+
152
+ #: manage.php:187
153
+ msgid "remove"
154
+ msgstr ""
155
+
156
+ #: manage.php:188
157
+ msgid "confirm"
158
+ msgstr ""
159
+
160
+ #: manage.php:189
161
+ msgid "unconfirm"
162
+ msgstr ""
163
+
164
+ #: manage.php:190
165
+ msgid "resend confirmation"
166
+ msgstr ""
167
+
168
+ #: newsletter.php:297
169
+ msgid "Tags: <strong>{name}</strong> receiver name."
170
+ msgstr ""
171
+
172
+ #: newsletter.php:309
173
+ msgid ""
174
+ "Tags: <strong>{name}</strong> receiver name;\r\n"
175
+ "<strong>{unsubscription_url}</strong> unsubscription URL;\r\n"
176
+ "<strong>{token}</strong> the subscriber token."
177
+ msgstr ""
178
+
179
+ #: newsletter.php:397
180
+ msgid ""
181
+ "When you simulate a sending process, emails are really sent but all to this"
182
+ "\r\n"
183
+ "email address. That helps to test out problems with mail server."
184
+ msgstr ""
185
+
186
+ #: newsletter.php:406
187
+ msgid ""
188
+ "Force the return path to this email address. Return path is used from mail "
189
+ "server to\r\n"
190
+ "send back messages with delivery errors."
191
+ msgstr ""
192
+
193
+ #: options.php:35
194
+ msgid "Newsletter Subscription and Unsubscription"
195
+ msgstr ""
196
+
197
+ #: options.php:42
198
+ msgid "Sender and subscription page"
199
+ msgstr ""
200
+
201
+ #: options.php:44
202
+ msgid "<p><strong>It's REQUIRED to complete such configuration.</strong></p>"
203
+ msgstr ""
204
+
205
+ #: options.php:48
206
+ msgid "Sender email"
207
+ msgstr ""
208
+
209
+ #: options.php:52
210
+ msgid ""
211
+ "Newsletter sender email address: the address subscribers will see the "
212
+ "newsletters coming from."
213
+ msgstr ""
214
+
215
+ #: options.php:56
216
+ msgid "Sender name"
217
+ msgstr ""
218
+
219
+ #: options.php:60
220
+ msgid ""
221
+ "The name of the newsletter sender subscribers will see on incoming email."
222
+ msgstr ""
223
+
224
+ #: options.php:64
225
+ msgid "Subscription page URL"
226
+ msgstr ""
227
+
228
+ #: options.php:68
229
+ msgid ""
230
+ "This is the page where you placed the <strong>[newsletter]</strong> short "
231
+ "tag. (<a href=\"http://www.satollo.net/plugins/newsletter\">Read more on "
232
+ "plugin official page</a>)"
233
+ msgstr ""
234
+
235
+ #: options.php:73
236
+ msgid "Theme to use for emails"
237
+ msgstr ""
238
+
239
+ #: options.php:100
240
+ msgid ""
241
+ "Selected theme has to be one with {message} tag inside, tag that will be "
242
+ "replaced with messages. Use the blank theme to send messages as you see them "
243
+ "in the editor."
244
+ msgstr ""
245
+
246
+ #: options.php:111
247
+ msgid "Subscription"
248
+ msgstr ""
249
+
250
+ #: options.php:116
251
+ msgid "Do not ask the user name, only email."
252
+ msgstr ""
253
+
254
+ #: options.php:120
255
+ msgid "Subscription form page"
256
+ msgstr ""
257
+
258
+ #: options.php:124
259
+ msgid ""
260
+ "This is the text showed to subscriber before the subscription form which is "
261
+ "added automatically."
262
+ msgstr ""
263
+
264
+ #: options.php:128
265
+ msgid "Successfully subscription page"
266
+ msgstr ""
267
+
268
+ #: options.php:132
269
+ msgid ""
270
+ "This is the text showed to a user who has pressed \"subscribe me\" on the "
271
+ "previous\r\n"
272
+ "step informing that an email to confirm subscription has just been sent. "
273
+ "Remeber\r\n"
274
+ "the user to check the spam folder and to follow the email instructions.<br />"
275
+ "\r\n"
276
+ "Tags: <strong>{name}</strong> the user name; <strong>{email}</strong> the "
277
+ "user email."
278
+ msgstr ""
279
+
280
+ #: options.php:146
281
+ msgid "Confirmation (double opt-in)"
282
+ msgstr ""
283
+
284
+ #: options.php:148
285
+ msgid ""
286
+ "<p>Email sent to the user to confirm his subscription, the successful "
287
+ "confirmation\r\n"
288
+ "page, the welcome email.</p>"
289
+ msgstr ""
290
+
291
+ #: options.php:155
292
+ msgid ""
293
+ "Do not use double opt-in. If checked the subscription is direct, so "
294
+ "subscribers will be immediately confirmed and will receive the welcome email."
295
+ msgstr ""
296
+
297
+ #: options.php:161
298
+ msgid "Confirmation email"
299
+ msgstr ""
300
+
301
+ #: options.php:165
302
+ msgid ""
303
+ "Tags: <strong>{name}</strong> the user name; <strong>"
304
+ "{subscription_confirm_url}</strong>\r\n"
305
+ "confirmation URL to be clicked by the user to confirm his subscription;\r\n"
306
+ "<strong>{unsubscription_url}</strong> the unsubscription link"
307
+ msgstr ""
308
+
309
+ #: options.php:179 options.php:184
310
+ msgid "Welcome message"
311
+ msgstr ""
312
+
313
+ #: options.php:180
314
+ msgid ""
315
+ "<p>Users jump directly to this step if you disabled the double opt-in step.</"
316
+ "p>"
317
+ msgstr ""
318
+
319
+ #: options.php:188
320
+ msgid ""
321
+ "Showed when the user follow the confirmation URL sent to him with previous "
322
+ "email\r\n"
323
+ "settings or if signed up directly with no double opt-in process.\r\n"
324
+ "<br />\r\n"
325
+ "Tags: <strong>{name}</strong> the user name; <strong>{email}</strong> for the"
326
+ "\r\n"
327
+ "user email; <strong>{token}</strong> the subscriber unique token"
328
+ msgstr ""
329
+
330
+ #: options.php:197
331
+ msgid "Conversion tracking code"
332
+ msgstr ""
333
+
334
+ #: options.php:201
335
+ msgid "<strong>Works only with Newsletter Extras installed</strong>"
336
+ msgstr ""
337
+
338
+ #: options.php:203
339
+ msgid ""
340
+ "The code is injected AS-IS in welcome page and can be used to track "
341
+ "conversion\r\n"
342
+ "(you can use PHP if needed). Conversion code is usually supply by tracking "
343
+ "services,\r\n"
344
+ "like Google AdWords, Google Analytics and so on."
345
+ msgstr ""
346
+
347
+ #: options.php:212
348
+ msgid ""
349
+ "Welcome email<br /><small>The right place where to put bonus content link</"
350
+ "small>"
351
+ msgstr ""
352
+
353
+ #: options.php:217
354
+ msgid ""
355
+ "Tags: <strong>{id}</strong> user id; <strong>{name}</strong> user name;\r\n"
356
+ "<strong>{token}</strong> the subscriber unique token; <strong>"
357
+ "{unsubscription_url}</strong>\r\n"
358
+ "unsubscription link"
359
+ msgstr ""
360
+
361
+ #: options.php:231
362
+ msgid "Unsubscription"
363
+ msgstr ""
364
+
365
+ #: options.php:232
366
+ msgid ""
367
+ "<p>A user starts the unsubscription process clicking the unsubscription link "
368
+ "in\r\n"
369
+ "a newsletter. This link contains the email to unsubscribe and some unique "
370
+ "information\r\n"
371
+ "to avoid hacking. The user are requird to confirm the unsubscription: this "
372
+ "is the last\r\n"
373
+ "step where YOU can communicate with you almost missed user.</p>"
374
+ msgstr ""
375
+
376
+ #: options.php:239
377
+ msgid "Unsubscription message"
378
+ msgstr ""
379
+
380
+ #: options.php:243
381
+ msgid ""
382
+ "This text is show to users who click on a \"unsubscription link\" in a "
383
+ "newsletter\r\n"
384
+ "email. You have to insert a link in the text that user can follow to confirm "
385
+ "the\r\n"
386
+ "unsubscription request (see tags).\r\n"
387
+ "<br />\r\n"
388
+ "Tags: <strong>{name}</strong> user name; <strong>{email}</strong> user email;"
389
+ "\r\n"
390
+ "<strong>{unsubscription_confirm_url}</strong> URL to confirm unsubscription."
391
+ msgstr ""
392
+
393
+ #: options.php:254
394
+ msgid "Goodbye message"
395
+ msgstr ""
396
+
397
+ #: options.php:262
398
+ msgid "Goodbye email"
399
+ msgstr ""
400
+
401
+ #: options.php:266
402
+ msgid "Tags: <strong>{name}</strong> user name."
403
+ msgstr ""
404
+
405
+ #: options.php:277
406
+ msgid "Advanced"
407
+ msgstr ""
408
+
409
+ #: options.php:281
410
+ msgid "Disable visual editors?"
411
+ msgstr ""
412
+
413
+ #: smtp.php:7
414
+ msgid "Newsletter SMTP"
415
+ msgstr ""
416
+
417
+ #: statistics.php:7
418
+ msgid "Newsletter Statistics"
419
+ msgstr ""
languages/newsletter.pot DELETED
@@ -1,767 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: Russian Lang for Newsletter\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2010-01-22 20:52+0300\n"
6
- "PO-Revision-Date: \n"
7
- "Last-Translator: M.O.Z.G <mozg@mozg-studio.org>\n"
8
- "Language-Team: M.O.Z.G Studio | http://mozg-studio.org <mozg@mozg-studio.org>\n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "X-Poedit-Language: Russian\n"
13
- "X-Poedit-Country: RUSSIAN FEDERATION\n"
14
- "X-Poedit-SourceCharset: utf-8\n"
15
- "X-Poedit-KeywordsList: _e;__;_c;_n\n"
16
- "X-Poedit-Basepath: ..\n"
17
- "X-Poedit-SearchPath-0: .\n"
18
-
19
- #: export.php:8
20
- msgid "Subscribers Export"
21
- msgstr ""
22
-
23
-
24
- #: export.php:10
25
- msgid "The text below is a list of all your subscribers (confirmed and not) in cvs format. You can copy, save and edit it with Excel or other software. Status column has 2 values: S - subscribed but not confirmed, C - confirmed."
26
- msgstr ""
27
-
28
- #: export.php:12
29
- #: manage.php:148
30
- msgid "Email"
31
- msgstr ""
32
-
33
- #: export.php:12
34
- #: manage.php:148
35
- msgid "Name"
36
- msgstr ""
37
-
38
- #: export.php:12
39
- #: manage.php:148
40
- msgid "Status"
41
- msgstr ""
42
-
43
- #: export.php:12
44
- #: manage.php:148
45
- msgid "Token"
46
- msgstr ""
47
-
48
- #: import.php:34
49
- msgid "Subscribers Import"
50
- msgstr ""
51
-
52
- #: import.php:40
53
- msgid "Rows with errors"
54
- msgstr ""
55
-
56
- #: import.php:47
57
- #: import.php:54
58
- #: plugin.php:934
59
- msgid "Import"
60
- msgstr ""
61
-
62
- #: import.php:48
63
- msgid "On the textarea below you can copy a text in CSV (comma separated values) with format:<br /><br /> <pre>user email;user name</pre><br /><br />and then import them. If an email is already stored, it won't be imported. If an email is wrong it won't be imported. Even when there are errors on CSV lines, the import will continue to the end. After the import process has ended, a box will appear with all the line not imported due to duplications or errors. Imported subscriber will be set as confirmed."
64
- msgstr ""
65
-
66
- #: import.php:50
67
- msgid "Empty rows and rows staring with sharp (#) are skipped. Emails will be normalized and a subscriber token generated for each imported email."
68
- msgstr ""
69
-
70
- #: manage.php:95
71
- msgid "Subscribers Management"
72
- msgstr ""
73
-
74
- #: manage.php:106
75
- #: manage.php:109
76
- msgid "Search"
77
- msgstr "Поиск"
78
-
79
- #: manage.php:109
80
- msgid "press without filter to show all"
81
- msgstr ""
82
-
83
- #: manage.php:116
84
- msgid "Only not yet confirmed"
85
- msgstr ""
86
-
87
- #: manage.php:120
88
- msgid "Order"
89
- msgstr ""
90
-
91
- #: manage.php:134
92
- msgid "Remove all unconfirmed"
93
- msgstr ""
94
-
95
- #: manage.php:134
96
- msgid "Are your sure, really sure?"
97
- msgstr ""
98
-
99
- #: manage.php:138
100
- msgid "Subscriber's statistics"
101
- msgstr ""
102
-
103
- #: manage.php:139
104
- #: manage_.php:114
105
- msgid "Confirmed subscriber"
106
- msgstr ""
107
-
108
- #: manage.php:141
109
- msgid "Unconfirmed subscriber"
110
- msgstr ""
111
-
112
- #: manage.php:143
113
- msgid "Results"
114
- msgstr ""
115
-
116
- #: manage.php:148
117
- msgid "Profile"
118
- msgstr ""
119
-
120
- #: manage.php:148
121
- msgid "Actions"
122
- msgstr ""
123
-
124
- #: manage.php:166
125
- msgid "remove"
126
- msgstr ""
127
-
128
- #: manage.php:167
129
- msgid "confirm"
130
- msgstr ""
131
-
132
- #: manage.php:168
133
- msgid "unconfirm"
134
- msgstr ""
135
-
136
- #: manage.php:169
137
- msgid "resend confirmation"
138
- msgstr ""
139
-
140
- #: newsletter.php:79
141
- msgid "Newsletter Composer"
142
- msgstr ""
143
-
144
- #: newsletter.php:89
145
- msgid "Continuing with previous batch"
146
- msgstr ""
147
-
148
- #: newsletter.php:95
149
- #: newsletter.php:113
150
- #: newsletter.php:130
151
- msgid "Batch not completed, see more below."
152
- msgstr ""
153
-
154
- #: newsletter.php:104
155
- msgid "Simulation"
156
- msgstr ""
157
-
158
- #: newsletter.php:123
159
- msgid "Sending"
160
- msgstr ""
161
-
162
- #: newsletter.php:140
163
- msgid "Sending to test subscribers"
164
- msgstr "Отправка тестовым подписчикам"
165
-
166
- #: newsletter.php:160
167
- msgid "Last batch info"
168
- msgstr ""
169
-
170
- #: newsletter.php:161
171
- msgid "Here you find information about last batch. A sending batch may have completed or not and may be a simulation or not. When a batch is not complete you can use the \"restart\" button and the batch starts again from the last email address processed."
172
- msgstr ""
173
-
174
- #: newsletter.php:166
175
- msgid "No batch info found, it's ok!"
176
- msgstr ""
177
-
178
- #: newsletter.php:172
179
- msgid "Total emails to send"
180
- msgstr ""
181
-
182
- #: newsletter.php:176
183
- msgid "Emails sent till now"
184
- msgstr ""
185
-
186
- #: newsletter.php:181
187
- #: options.php:353
188
- msgid "List"
189
- msgstr ""
190
- #: newsletter.php:186
191
- msgid "Sending type"
192
- msgstr ""
193
-
194
- #: newsletter.php:190
195
- msgid "Scheduled"
196
- msgstr ""
197
-
198
- #: newsletter.php:193
199
- msgid "next"
200
- msgstr ""
201
-
202
- #: newsletter.php:194
203
- msgid "now"
204
- msgstr ""
205
-
206
- #: newsletter.php:199
207
- msgid "Last subscriber"
208
- msgstr ""
209
-
210
- #: newsletter.php:203
211
- msgid "Last id"
212
- msgstr ""
213
-
214
- #: newsletter.php:204
215
- msgid "debug info"
216
- msgstr ""
217
-
218
- #: newsletter.php:207
219
- #: newsletter.php:263
220
- msgid "Message"
221
- msgstr ""
222
-
223
- #: newsletter.php:214
224
- msgid "Restart batch"
225
- msgstr ""
226
-
227
- #: newsletter.php:214
228
- msgid "Continue with this batch?"
229
- msgstr ""
230
-
231
- #: newsletter.php:216
232
- msgid "Reset batch"
233
- msgstr ""
234
-
235
- #: newsletter.php:216
236
- msgid "Reset the batch status?"
237
- msgstr ""
238
-
239
- #: newsletter.php:226
240
- msgid "Newsletter message"
241
- msgstr ""
242
-
243
- #: newsletter.php:231
244
- msgid "Newsletter name"
245
- msgstr ""
246
-
247
- #: newsletter.php:235
248
- msgid "This symbolic name will be used to track the link clicks and associate them to a specific newsletter. Keep the name compact and significative."
249
- msgstr ""
250
-
251
- #: newsletter.php:239
252
- #: newsletter.php:249
253
- msgid "Tracking"
254
- msgstr ""
255
-
256
- #: newsletter.php:242
257
- msgid "Track link clicks"
258
- msgstr "Отслеживать клики"
259
-
260
- #: newsletter.php:244
261
- msgid "When this option is enabled, each link in the email text will be rewritten and clicks on them intercepted."
262
- msgstr ""
263
-
264
- #: newsletter.php:250
265
- msgid "Tracking options available with Newsletter Extras package"
266
- msgstr ""
267
-
268
- #: newsletter.php:255
269
- msgid "Subject"
270
- msgstr ""
271
-
272
- #: newsletter.php:259
273
- msgid "Tags: <strong>{name}</strong> receiver name."
274
- msgstr ""
275
-
276
- #: newsletter.php:267
277
- msgid "Tags: <strong>{name}</strong> receiver name; <strong>{unsubscription_url}</strong> unsubscription URL; <strong>{token}</strong> the subscriber token."
278
- msgstr ""
279
-
280
- #: newsletter.php:272
281
- msgid "Theme"
282
- msgstr ""
283
-
284
- #: newsletter.php:275
285
- msgid "Included themes"
286
- msgstr ""
287
-
288
- #: newsletter.php:276
289
- msgid "Default"
290
- msgstr ""
291
-
292
- #: newsletter.php:277
293
- msgid "With picture"
294
- msgstr ""
295
-
296
- #: newsletter.php:279
297
- msgid "Custom themes"
298
- msgstr ""
299
-
300
- #: newsletter.php:289
301
- msgid "Auto compose"
302
- msgstr ""
303
-
304
- #: newsletter.php:293
305
- msgid "Number of posts on theme"
306
- msgstr ""
307
-
308
- #: newsletter.php:301
309
- #: newsletter.php:332
310
- #: newsletter.php:369
311
- #: newsletter.php:399
312
- #: options.php:99
313
- #: options.php:133
314
- #: options.php:169
315
- #: options.php:222
316
- #: options.php:273
317
- #: options.php:388
318
- #: options.php:406
319
- #: options.php:443
320
- msgid "Save"
321
- msgstr ""
322
-
323
- #: newsletter.php:302
324
- msgid "Test"
325
- msgstr ""
326
-
327
- #: newsletter.php:303
328
- msgid "Simulate"
329
- msgstr ""
330
-
331
- #: newsletter.php:303
332
- msgid "Simulate? The test address will receive all emails!"
333
- msgstr ""
334
-
335
- #: newsletter.php:304
336
- msgid "Send"
337
- msgstr ""
338
- #: newsletter.php:304
339
- msgid "Start a real newsletter sending batch?"
340
- msgstr ""
341
-
342
- #: newsletter.php:306
343
- msgid "Scheduled simulation"
344
- msgstr ""
345
-
346
- #: newsletter.php:306
347
- msgid "Start a scheduled simulation?"
348
- msgstr ""
349
-
350
- #: newsletter.php:307
351
- msgid "Scheduled send"
352
- msgstr ""
353
-
354
- #: newsletter.php:307
355
- msgid "Start a scheduled real send?"
356
- msgstr ""
357
-
358
- #: newsletter.php:312
359
- msgid "Scheduler"
360
- msgstr ""
361
-
362
- #: newsletter.php:313
363
- msgid "Scheduler helps to send out a long list of emails slowly to not overload the server."
364
- msgstr ""
365
-
366
- #: newsletter.php:317
367
- msgid "Interval between sending tasks"
368
- msgstr ""
369
-
370
- #: newsletter.php:320
371
- msgid "minutes, minimum value is 10"
372
- msgstr ""
373
-
374
- #: newsletter.php:324
375
- msgid "Max number of emails per task"
376
- msgstr ""
377
-
378
- #: newsletter.php:327
379
- msgid "good value is 20 but if you use an external SMTP go with 5"
380
- msgstr ""
381
-
382
- #: newsletter.php:335
383
- msgid "Available only with Newsletter Extras package"
384
- msgstr ""
385
-
386
- #: newsletter.php:342
387
- msgid "General"
388
- msgstr ""
389
-
390
- #: newsletter.php:350
391
- msgid "Sending options"
392
- msgstr ""
393
-
394
- #: newsletter.php:351
395
- msgid "Configuration for not scheduled sending process."
396
- msgstr ""
397
-
398
- #: newsletter.php:354
399
- msgid "Max emails in a single batch"
400
- msgstr ""
401
-
402
- #: newsletter.php:360
403
- msgid "Receiver address for simulation"
404
- msgstr ""
405
-
406
- #: newsletter.php:363
407
- msgid "When you simulate a sending process, emails are really sent but all to this email address. That helps to test out problems with mail server."
408
- msgstr ""
409
-
410
- #: newsletter.php:374
411
- msgid "Filter"
412
- msgstr ""
413
-
414
- #: newsletter.php:381
415
- msgid "Test subscribers"
416
- msgstr ""
417
-
418
- #: newsletter.php:383
419
- msgid "Define more test subscriber to see how your email looks on different clients: GMail, Outlook, Thunderbird, Hotmail, ..."
420
- msgstr ""
421
-
422
- #: newsletter.php:389
423
- msgid "Subscriber"
424
- msgstr ""
425
-
426
- #: newsletter.php:391
427
- msgid "name"
428
- msgstr ""
429
-
430
- #: newsletter.php:393
431
- msgid "email"
432
- msgstr ""
433
-
434
- #: options.php:58
435
- msgid "Newsletter"
436
- msgstr ""
437
-
438
- #: options.php:63
439
- msgid "Questions, help, critiques and whatever else <a target=\"_blank\" href=\"http://www.satollo.net/plugins/newsletter\">click here</a>!"
440
- msgstr ""
441
-
442
- #: options.php:70
443
- msgid "Sender and subscription page"
444
- msgstr ""
445
-
446
- #: options.php:73
447
- msgid "Sender email"
448
- msgstr ""
449
-
450
- #: options.php:77
451
- msgid "Newsletter sender email address: the address subscribers will see the newsletters coming from."
452
- msgstr ""
453
-
454
- #: options.php:81
455
- msgid "Sender name"
456
- msgstr ""
457
-
458
- #: options.php:85
459
- msgid "The name of the newsletter sender subscribers will see on incoming email."
460
- msgstr ""
461
-
462
- #: options.php:89
463
- msgid "Subscription page URL"
464
- msgstr ""
465
-
466
- #: options.php:93
467
- msgid "This is the page where you placed the <strong>[newsletter]</strong> short tag."
468
- msgstr ""
469
-
470
- #: options.php:94
471
- msgid "Read more on plugin official page"
472
- msgstr ""
473
-
474
- #: options.php:105
475
- msgid "Subscription form"
476
- msgstr ""
477
-
478
- #: options.php:111
479
- msgid "Do not ask the user name, only email."
480
- msgstr ""
481
-
482
- #: options.php:115
483
- msgid "Subscription form page"
484
- msgstr ""
485
-
486
- #: options.php:119
487
- msgid "This is the text showed to subscriber before the subscription form which is added automatically."
488
- msgstr ""
489
-
490
- #: options.php:123
491
- msgid "Successfully subscription page"
492
- msgstr ""
493
-
494
- #: options.php:127
495
- msgid "This is the text showed to a user who has pressed \"subscribe me\" on the previous step informing that an email to confirm subscription has just been sent. Remeber the user to check the spam folder and to follow the email instructions.<br />Tags: <strong>{name}</strong> the user name; <strong>{email}</strong> the user email."
496
- msgstr ""
497
-
498
- #: options.php:138
499
- msgid "Confirmation"
500
- msgstr ""
501
- #: options.php:138
502
- msgid "double opt-in"
503
- msgstr ""
504
-
505
- #: options.php:140
506
- msgid "Email sent to the user to confirm his subscription, the successful confirmation page, the welcome email."
507
- msgstr ""
508
-
509
- #: options.php:147
510
- msgid "Do not use double opt-in. If checked the subscription is direct, so subscribers will be immediately confirmed and will receive the welcome email."
511
- msgstr ""
512
-
513
- #: options.php:151
514
- msgid "Confirmation email subject"
515
- msgstr ""
516
-
517
- #: options.php:155
518
- msgid "Tags: <strong>{name}</strong> the user name."
519
- msgstr ""
520
-
521
- #: options.php:159
522
- msgid "Confirmation email message"
523
- msgstr ""
524
-
525
- #: options.php:163
526
- msgid "Tags: <strong>{name}</strong> the user name; <strong>{subscription_confirm_url}</strong>confirmation URL to be clicked by the user to confirm his subscription."
527
- msgstr ""
528
-
529
- #: options.php:174
530
- msgid "Welcome message"
531
- msgstr ""
532
-
533
- #: options.php:176
534
- msgid "Users jump directly to this step if you disabled the double opt-in step."
535
- msgstr ""
536
-
537
- #: options.php:180
538
- msgid "Successful confirmation page"
539
- msgstr ""
540
-
541
- #: options.php:184
542
- msgid "Showed when the user follow the confirmation URL sent to him with previous email settings or if signed up directly with no double opt-in process."
543
- msgstr ""
544
-
545
- #: options.php:186
546
- msgid "Tags: <strong>{name}</strong> the user name; <strong>{email}</strong> for the user email; <strong>{token}</strong> the subscriber unique token"
547
- msgstr ""
548
-
549
- #: options.php:191
550
- msgid "Conversion tracking code"
551
- msgstr ""
552
-
553
- #: options.php:196
554
- msgid "Available with Newsletter Extras package"
555
- msgstr ""
556
-
557
- #: options.php:199
558
- msgid "That code is injected AS-IS in welcome page and can be used to track conversion (you can use PHP if needed). Conversion code is usually supply by tracking services, like Google AdWords, Google Analytics and so on."
559
- msgstr ""
560
-
561
- #: options.php:202
562
- msgid "Welcome email"
563
- msgstr ""
564
-
565
- #: options.php:204
566
- msgid "Welcome email subject"
567
- msgstr ""
568
-
569
- #: options.php:208
570
- #: options.php:259
571
- #: options.php:267
572
- msgid "Tags: <strong>{name}</strong> user name."
573
- msgstr ""
574
-
575
- #: options.php:212
576
- msgid "Welcome email message"
577
- msgstr ""
578
-
579
- #: options.php:216
580
- msgid "Tags: <strong>{name}</strong> user name; <strong>{token}</strong> the subscriber unique token"
581
- msgstr ""
582
-
583
- #: options.php:227
584
- msgid "Unsubscription"
585
- msgstr ""
586
-
587
- #: options.php:229
588
- msgid "A user starts the unsubscription process clicking the unsubscription link in a newsletter. This lkink contains the email to unsubscribe and some unique information to avoid hacking. The user are requird to confirm the unsubscription: this is the last step where YOU can communicate with you almost missed user."
589
- msgstr ""
590
-
591
- #: options.php:233
592
- #: options.php:282
593
- msgid "Unsubscription text"
594
- msgstr ""
595
-
596
- #: options.php:237
597
- msgid "This text is show to users who click on a \"unsubscription link\" in a newsletter email. You have to insert a link in the text that user can follow to confirm the unsubscription request (see tags)."
598
- msgstr ""
599
-
600
- #: options.php:239
601
- msgid "Tags: <strong>{name}</strong> user name; <strong>{email}</strong> user email; <strong>{unsubscription_confirm_url}</strong> URL to confirm unsubscription."
602
- msgstr ""
603
-
604
- #: options.php:245
605
- msgid "Good bye text"
606
- msgstr ""
607
-
608
- #: options.php:248
609
- msgid "Latest message showed to the user to say \"good bye\"."
610
- msgstr ""
611
-
612
- #: options.php:250
613
- msgid "Tags: none."
614
- msgstr ""
615
-
616
- #: options.php:255
617
- msgid "Goodbye email subject"
618
- msgstr ""
619
-
620
- #: options.php:263
621
- msgid "Goodbye email message"
622
- msgstr ""
623
-
624
- #: options.php:277
625
- msgid "Unsubscription for mass mail mode"
626
- msgstr ""
627
-
628
- #: options.php:278
629
- msgid "This section is not working!"
630
- msgstr ""
631
-
632
- #: options.php:289
633
- msgid "Unsubscription error"
634
- msgstr ""
635
-
636
- #: options.php:293
637
- msgid "Shown with the unsubscription message then the email to unsubscribe is not found."
638
- msgstr ""
639
-
640
- #: options.php:297
641
- msgid "\"Email to unsubscribe\" label"
642
- msgstr ""
643
-
644
- #: options.php:305
645
- msgid "\"Confirm unsubscription\" label"
646
- msgstr ""
647
-
648
- #: options.php:309
649
- msgid "The button text to confirm unsubscription or to send an unsubscription request for the specified email address when \"mass mail\" mode is used for sending newsletters."
650
- msgstr ""
651
-
652
- #: options.php:313
653
- msgid "Unsubscription end text"
654
- msgstr ""
655
-
656
- #: options.php:317
657
- msgid "This text is shown when a user type in an email to be removed and the confirmation email has been sent."
658
- msgstr ""
659
-
660
- #: options.php:322
661
- msgid "Unsubscription email subject"
662
- msgstr ""
663
-
664
- #: options.php:328
665
- msgid "Unsubscription email message"
666
- msgstr ""
667
-
668
- #: options.php:332
669
- msgid "Email sent to confirm unsubscription when the request is made specifying an email address to remove. Use {unsubscription_link} to place the link where the user has to click on; use {unsubscription_url} toplace the plain unsubscription URL."
670
- msgstr ""
671
-
672
- #: options.php:336
673
- msgid "Unsubscription link text"
674
- msgstr ""
675
-
676
- #: options.php:340
677
- msgid "The text of the link for unsubscription to be placed in the unsubscription email."
678
- msgstr ""
679
-
680
- #: options.php:346
681
- msgid "Lists"
682
- msgstr ""
683
-
684
- #: options.php:351
685
- msgid "List 0 is the general one"
686
- msgstr ""
687
-
688
- #: options.php:362
689
- msgid "Advanced"
690
- msgstr ""
691
-
692
- #: options.php:369
693
- msgid "write logs"
694
- msgstr ""
695
-
696
- #: options.php:376
697
- msgid "do not use visual editors"
698
- msgstr ""
699
-
700
- #: options.php:383
701
- msgid "allow editors to user the newsletter plugin"
702
- msgstr ""
703
-
704
- #: options.php:392
705
- msgid "Really advanced options"
706
- msgstr ""
707
-
708
- #: options.php:399
709
- msgid "Use the custom subscription form below"
710
- msgstr ""
711
-
712
- #: options.php:411
713
- msgid "Zanzara client"
714
- msgstr ""
715
- #: options.php:412
716
- msgid "Obsolete"
717
- msgstr ""
718
-
719
- #: options.php:415
720
- msgid "Export key"
721
- msgstr ""
722
-
723
- #: options.php:419
724
- msgid "Do not search for Zanzara, is a my private software"
725
- msgstr ""
726
-
727
- #: options.php:423
728
- msgid "SMTP address"
729
- msgstr ""
730
-
731
- #: options.php:429
732
- msgid "SMTP user"
733
- msgstr ""
734
-
735
- #: options.php:435
736
- msgid "SMTP password"
737
- msgstr ""
738
-
739
- #: options.php:444
740
- msgid "Revert to defaults"
741
- msgstr ""
742
-
743
- #: plugin.php:932
744
- msgid "Configuration"
745
- msgstr ""
746
-
747
- #: plugin.php:933
748
- msgid "Composer"
749
- msgstr ""
750
-
751
- #: plugin.php:935
752
- msgid "Export"
753
- msgstr ""
754
-
755
- #: plugin.php:936
756
- msgid "Manage"
757
- msgstr ""
758
-
759
- #: plugin.php:937
760
- #: statistics.php:8
761
- msgid "Statistics"
762
- msgstr ""
763
-
764
- #: statistics.php:11
765
- msgid "You need the Newsletter Extras installed to view statistics"
766
- msgstr ""
767
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/nl_NL.php ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // Subscription form (traslate "your name", "your email" and the button "subscribe me")
4
+ $newsletter_labels['subscription_form'] =
5
+ '<form method="post" action="" style="text-align: center">
6
+ <input type="hidden" name="na" value="s"/>
7
+ <table cellspacing="3" cellpadding="3" border="0" width="50%">
8
+ <tr><td>Jouw&nbsp;naam</td><td><input type="text" name="nn" size="30"/></td></tr>
9
+ <tr><td>Jouw&nbsp;email</td><td><input type="text" name="ne" size="30"/></td></tr>
10
+ <tr><td colspan="2" style="text-align: center"><input type="submit" value="Inschrijven"/></td></tr>
11
+ </table>
12
+ </form>';
13
+
14
+
15
+ $newsletter_labels['subscription_form_noname'] =
16
+ '<form method="post" action="" style="text-align: center">
17
+ <input type="hidden" name="na" value="s"/>
18
+ <table cellspacing="3" cellpadding="3" border="0" width="50%">
19
+ <tr><td>Jouw&nbsp;email</td><td><input type="text" name="ne" size="30"/></td></tr>
20
+ <tr><td colspan="2" style="text-align: center"><input type="submit" value="Inschrijven"/></td></tr>
21
+ </table>
22
+ </form>';
23
+
24
+ $newsletter_labels['widget_form'] =
25
+ '<form action="{newsletter_url}" method="post">
26
+ {text}
27
+ <p><input type="text" name="nn" value="Jouw naam" onclick="if (this.defaultValue==this.value) this.value=\'\'" onblur="if (this.value==\'\') this.value=this.defaultValue"/></p>
28
+ <p><input type="text" name="ne" value="Jouw email" onclick="if (this.defaultValue==this.value) this.value=\'\'" onblur="if (this.value==\'\') this.value=this.defaultValue"/></p>
29
+ <p><input type="submit" value="Inschrijven"/></p>
30
+ <input type="hidden" name="na" value="s"/>
31
+ </form>';
32
+
33
+
34
+ $newsletter_labels['widget_form_noname'] =
35
+ '<form action="{newsletter_url}" method="post">
36
+ {text}
37
+ <p><input type="text" name="ne" value="Jouw email" onclick="if (this.defaultValue==this.value) this.value=\'\'" onblur="if (this.value==\'\') this.value=this.defaultValue"/></p>
38
+ <p><input type="submit" value="Inschrijven"/></p>
39
+ <input type="hidden" name="na" value="s"/>
40
+ </form>';
41
+
42
+
43
+
44
+ $newsletter_labels['embedded_form'] =
45
+ '<form action="{newsletter_url}" method="post">
46
+ <p><input type="text" name="ne" value="Jouw email" onclick="if (this.defaultValue==this.value) this.value=\'\'" onblur="if (this.value==\'\') this.value=this.defaultValue"/>
47
+ &nbsp;<input type="text" name="nn" value="Jouw naam" onclick="if (this.defaultValue==this.value) this.value=\'\'" onblur="if (this.value==\'\') this.value=this.defaultValue"/>
48
+ <input type="submit" value="Inschrijven"/>
49
+ <input type="hidden" name="na" value="s"/></p>
50
+ </form>';
51
+
52
+ // Example of embedded form without name
53
+
54
+ $newsletter_labels['embedded_form_noname'] =
55
+ '<form action="{newsletter_url}" method="post">
56
+ <p><input type="text" name="ne" value="Jouw email" onclick="if (this.defaultValue==this.value) this.value=\'\'" onblur="if (this.value==\'\') this.value=this.defaultValue"/>
57
+ <input type="submit" value="Inschrijven"/>
58
+ <input type="hidden" name="na" value="s"/></p>
59
+ </form>';
60
+
61
+
62
+ // Errors on subscription
63
+ $newsletter_labels['error_email'] = 'Foutief email-adres. <a href="javascript:history.back()">Ga terug</a>.';
64
+ $newsletter_labels['error_name'] = 'Gelieve jouw naam in te vullen. <a href="javascript:history.back()">Ga terug</a>.';
65
+
66
+ ?>
languages/nl_NL_options.php ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ // This file contains the default options values
3
+ $newsletter_default_options['from_email'] = get_option('admin_email');
4
+ $newsletter_default_options['from_name'] = get_option('blogname');
5
+
6
+ // Subscription page introductory text (befor the subscription form)
7
+ $newsletter_default_options['subscription_text'] =
8
+ "<p>Via onderstaand formuliertje kan je je inschrijven voor onze nieuwsbrief. Via deze nieuwsbrief houden we je op de hoogte van komende activiteiten.</p>
9
+ <p>Nadat je het formuliertje verstuurd hebt, zal je een bevestigingsmail ontvangen. Lees deze mail aandachtig om jouw inschrijving te bevestigen.</p>";
10
+
11
+ // Message show after a subbscription request has made.
12
+ $newsletter_default_options['subscribed_text'] =
13
+ "<p>Je hebt je ingeschreven op de nieuwsbrief.</p>
14
+ <p>Binnen enkele minuten zal je een bevestigingsmail ontvangen. Volg de link in die mail om jouw inschrijving te bevestigen. Indien je problemen hebt met het ontvangen van de bevestigingsmail kan je ons via het contactformulier bereiken.</p>";
15
+
16
+ // Confirmation email subject (double opt-in)
17
+ $newsletter_default_options['confirmation_subject'] =
18
+ "{name}, Bevestig jouw inschrijving op de nieuwsbrief van {blog_title}";
19
+
20
+ // Confirmation email body (double opt-in)
21
+ $newsletter_default_options['confirmation_message'] =
22
+ "<p>Hallo {name},</p>
23
+ <p>We ontvingen jouw inschrijving op onze nieuwsbrief. Gelieve de inschrijving te bevestigen door <a href=\"{subscription_confirm_url}\"><strong>hier</strong></a> te klikken. Als het klikken op de link voor jou niet werkt, kan je de volgende link in jouw browser copieren.</p>
24
+ <p>{subscription_confirm_url}</p>
25
+ <p>Indien je deze mail ontvangt en toch geen inschrijving gevraagd hebt, hoef je niets te doen. De inschrijving wordt dan automatisch geannuleerd.</p>
26
+ <p>Dank u wel.</p>";
27
+
28
+ // Subscription confirmed text (after a user clicked the confirmation link
29
+ // on the email he received
30
+ $newsletter_default_options['confirmed_text'] =
31
+ "<p>Je hebt zonet jouw inschrijving bevestigd.</p><p>bedankt {name} !</p>";
32
+
33
+ $newsletter_default_options['confirmed_subject'] =
34
+ "Welkom, {name}";
35
+
36
+ $newsletter_default_options['confirmed_message'] =
37
+ "<p>Uw inschrijving op de niewsbrief van {blog_title} is bevestigd.</p>
38
+ <p>Bedankt !</p>";
39
+
40
+ // Unsubscription request introductory text
41
+ $newsletter_default_options['unsubscription_text'] =
42
+ "<p>Gelieve uw uitschrijving te bevestigen door <a href=\"{unsubscription_confirm_url}\">hier</a> te klikken.";
43
+
44
+ // When you finally loosed your subscriber
45
+ $newsletter_default_options['unsubscribed_text'] =
46
+ "<p>U bent uit onze lijst verwijderd.</p>";
47
+
48
+ $newsletter_default_options['unsubscribed_subject'] =
49
+ "Tot ziens, {name}";
50
+
51
+ $newsletter_default_options['unsubscribed_message'] =
52
+ "<p>Uw uitschrijving op de nieuwsbrief van {blog_title} is bevestigd.</p>
53
+ <p>Tot ziens.</p>";
54
+
55
+ $newsletter_default_options['subscription_form'] =
56
+ '<form method="post" action="" style="text-align: center">
57
+ <input type="hidden" name="na" value="s"/>
58
+ <table cellspacing="3" cellpadding="3" border="0" width="50%">
59
+ <tr><td>Jouw&nbsp;naam</td><td><input type="text" name="nn" size="30"/></td></tr>
60
+ <tr><td>Jouw&nbsp;email</td><td><input type="text" name="ne" size="30"/></td></tr>
61
+ <tr><td colspan="2" style="text-align: center"><input type="submit" value="Inschrijven"/></td></tr>
62
+ </table>
63
+ </form>';
64
+ ?>
main.php ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ @include_once 'commons.php';
4
+
5
+ $options = get_option('newsletter_main');
6
+
7
+ if ($action == 'save') {
8
+ $options = stripslashes_deep($_POST['options']);
9
+ update_option('newsletter_main', $options);
10
+ }
11
+
12
+ $nc = new NewsletterControls($options);
13
+
14
+ ?>
15
+
16
+ <div class="wrap">
17
+
18
+ <h2><?php _e('Newsletter Configuration', 'newsletter'); ?></h2>
19
+
20
+ <?php require_once 'header.php'; ?>
21
+
22
+ <p>
23
+ <strong>Newsletter has an <a href="http://www.satollo.net/plugins/newsletter">official page</a> where
24
+ to find documentation on how it
25
+ works and how to configure it. Version history and tips are located on
26
+ <a href="http://www.satollo.net/tag/newsletter">this archive</a>. Questions can be submitted
27
+ on <a href="http://www.satollo.net/newsletter-help">this help page</a>.</strong>
28
+ </p>
29
+
30
+ <form method="post" action="">
31
+ <?php wp_nonce_field(); ?>
32
+ <input type="hidden" value="<?php echo NEWSLETTER; ?>" name="options[version]"/>
33
+
34
+ <h3><?php _e('General parameters', 'newsletter'); ?></h3>
35
+ <table class="form-table">
36
+ <tr valign="top">
37
+ <th><?php _e('Enable access to editors?', 'newsletter'); ?></th>
38
+ <td>
39
+ <?php $nc->yesno('editor'); ?>
40
+ </td>
41
+ </tr>
42
+ <tr valign="top">
43
+ <th><?php _e('Always show panels in english?', 'newsletter'); ?></th>
44
+ <td>
45
+ <?php $nc->yesno('no_translation'); ?>
46
+ <br />
47
+ <?php _e('The author does NOT maintain translations, so if you have a doubt about some texts, disable the translations', 'newsletter'); ?>
48
+ </td>
49
+ </tr>
50
+ <tr valign="top">
51
+ <th><?php _e('Logging', 'newsletter'); ?></th>
52
+ <td>
53
+ <?php $nc->select('logs', array(0=>'None', 1=>'Normal', 2=>'Debug')); ?>
54
+ <br />
55
+ <?php _e('Debug level saves user data on file system, use only to debug problems.', 'newsletter'); ?>
56
+ </td>
57
+ </tr>
58
+ </table>
59
+ <p class="submit">
60
+ <?php $nc->button('save', __('Save', 'newsletter')); ?>
61
+ </p>
62
+ </form>
63
+ </div>
manage.php CHANGED
@@ -1,10 +1,8 @@
1
  <?php
2
- $options = get_option('newsletter');
3
 
4
- if (!isset($options['no_translation'])) {
5
- $plugin_dir = basename(dirname(__FILE__));
6
- load_plugin_textdomain('newsletter', 'wp-content/plugins/' . $plugin_dir . '/languages/');
7
- }
8
 
9
  if ($_POST['a'] == 'resend' && check_admin_referer()) {
10
  newsletter_send_confirmation(newsletter_get_subscriber(newsletter_request('id')));
@@ -44,6 +42,9 @@ if ($_POST['a'] == 'search' && check_admin_referer()) {
44
  $list = newsletter_search(newsletter_request('text'), $status, $order);
45
  }
46
 
 
 
 
47
  ?>
48
  <script type="text/javascript">
49
  function newsletter_detail(id)
@@ -78,29 +79,16 @@ if ($_POST['a'] == 'search' && check_admin_referer()) {
78
  }
79
  function newsletter_resend(id)
80
  {
81
- if (!confirm("Resend the subscription confirmation email?")) return;
82
  document.getElementById("action").value = "resend";
83
  document.getElementById("id").value = id;
84
  document.getElementById("channel").submit();
85
  }
86
 
87
  </script>
88
- <style type="text/css">
89
- .newsletter-results {
90
- border-collapse: collapse;
91
- }
92
- .newsletter-results td, .newsletter-results th {
93
- border: 1px solid #999;
94
- padding: 5px;
95
- }
96
- #newsletter .form-table {
97
- border: 1px solid #999;
98
- background-color: #fff;
99
- }
100
- </style>
101
 
102
- <div class="wrap" id="newsletter">
103
- <h2><?php _e('Subscribers Management', 'newsletter'); ?></h2>
104
 
105
  <?php require_once 'header.php'; ?>
106
 
@@ -113,12 +101,12 @@ if ($_POST['a'] == 'search' && check_admin_referer()) {
113
  <div style="display: <?php if ($_POST['a'] == 'edit') echo 'none'; else echo 'block'; ?>">
114
  <table class="form-table">
115
  <tr valign="top">
116
- <th scope="row"><label><?php _e('Search', 'newsletter'); ?></label></th>
117
  <td>
118
  <input name="text" type="text" size="50" value="<?php echo htmlspecialchars(newsletter_request('text'))?>"/>
119
- <input type="submit" value="<?php _e('Search', 'newsletter'); ?>" /> (press without filter to show all)
120
  <br />
121
- Max 100 results will be shown
122
  </td>
123
  </tr>
124
  <tr valign="top">
@@ -129,7 +117,7 @@ if ($_POST['a'] == 'search' && check_admin_referer()) {
129
  </td>
130
  </tr>
131
  <tr valign="top">
132
- <th scope="row"><?php _e('Order', 'newsletter'); ?></th>
133
  <td>
134
  <select name="order">
135
  <option value="id">id</option>
@@ -144,7 +132,7 @@ if ($_POST['a'] == 'search' && check_admin_referer()) {
144
  if ($_POST['a'] == 'edit' && check_admin_referer()) {
145
  $subscriber = newsletter_get_subscriber($_POST['id']);
146
  ?>
147
- <input type="hidden" name="subscriber[id]" value="<?php echo $subscriber->id; ?>"/></td>
148
  <table class="form-table">
149
  <tr valign="top">
150
  <th>Name</th>
@@ -155,7 +143,7 @@ if ($_POST['a'] == 'search' && check_admin_referer()) {
155
  <td><input type="text" name="subscriber[email]" size="40" value="<?php echo htmlspecialchars($subscriber->email); ?>"/></td>
156
  </tr>
157
  </table>
158
- <p class="submit"><input type="button" value="Save" onclick="newsletter_save()"/></a>
159
 
160
  <?php } ?>
161
 
@@ -186,35 +174,31 @@ if ($_POST['a'] == 'search' && check_admin_referer()) {
186
 
187
  <?php
188
  if ($list) {
189
- echo '<table class="newsletter-results" border="1" cellspacing="5">';
190
- echo '<tr><th>Id</th><th>' . __('Email', 'newsletter') . '</th><th>' . __('Name', 'newsletter') . '</th><th>' . __('Status', 'newsletter') . '</th><th>' . __('Profile', 'newsletter') . '</th><th>' . __('Token', 'newsletter') . '</th><th>' . __('Actions', 'newsletter') . '</th></tr>';
191
  foreach($list as $s) {
192
  echo '<tr>';
193
  echo '<td>' . $s->id . '</td>';
194
  echo '<td>' . $s->email . '</td>';
195
  echo '<td>' . $s->name . '</td>';
196
- echo '<td>' . ($s->status=='S'?'Not confirmed':'Confirmed') . '</td>';
 
 
 
 
 
 
 
197
  echo '<td><small>';
198
  $query = $wpdb->prepare("select name,value from " . $wpdb->prefix . "newsletter_profiles where newsletter_id=%d", $s->id);
199
  $profile = $wpdb->get_results($query);
200
  foreach ($profile as $field) {
201
  echo htmlspecialchars($field->name) . ': ' . htmlspecialchars($field->value) . '<br />';
202
  }
203
- // $profile = unserialize($s->profile);
204
- // if (is_array($profile)) {
205
- // foreach ($profile as $key=>$value) {
206
- // echo htmlspecialchars($key) . ': ' . htmlspecialchars($value) . '<br />';
207
- // }
208
- // }
209
  echo '</small></td>';
210
- echo '<td><small>' . $s->token . '</small></td>';
211
- echo '<td>';
212
- echo '<a href="javascript:void(newsletter_edit(' . $s->id . '))">' . __('edit', 'newsletter') . '</a>';
213
- echo ' | <a href="javascript:void(newsletter_remove(' . $s->id . '))">' . __('remove', 'newsletter') . '</a>';
214
- echo ' | <a href="javascript:void(newsletter_set_status(' . $s->id . ', \'C\'))">' . __('confirm', 'newsletter') . '</a>';
215
- echo ' | <a href="javascript:void(newsletter_set_status(' . $s->id . ', \'S\'))">' . __('unconfirm', 'newsletter') . '</a>';
216
- echo ' | <a href="javascript:void(newsletter_resend(' . $s->id . '))">' . __('resend confirmation', 'newsletter') . '</a>';
217
- echo '</td>';
218
  echo '</tr>';
219
  }
220
  echo '</table>';
1
  <?php
 
2
 
3
+ @include_once 'commons.php';
4
+
5
+ $options = get_option('newsletter');
 
6
 
7
  if ($_POST['a'] == 'resend' && check_admin_referer()) {
8
  newsletter_send_confirmation(newsletter_get_subscriber(newsletter_request('id')));
42
  $list = newsletter_search(newsletter_request('text'), $status, $order);
43
  }
44
 
45
+ $options = null;
46
+ $nc = new NewsletterControls($options, 'manage');
47
+
48
  ?>
49
  <script type="text/javascript">
50
  function newsletter_detail(id)
79
  }
80
  function newsletter_resend(id)
81
  {
82
+ if (!confirm("<?php _e('Resend the subscription confirmation email?', 'newsletter'); ?>")) return;
83
  document.getElementById("action").value = "resend";
84
  document.getElementById("id").value = id;
85
  document.getElementById("channel").submit();
86
  }
87
 
88
  </script>
 
 
 
 
 
 
 
 
 
 
 
 
 
89
 
90
+ <div class="wrap">
91
+ <h2><?php _e('Newsletter Subscribers', 'newsletter'); ?></h2>
92
 
93
  <?php require_once 'header.php'; ?>
94
 
101
  <div style="display: <?php if ($_POST['a'] == 'edit') echo 'none'; else echo 'block'; ?>">
102
  <table class="form-table">
103
  <tr valign="top">
104
+ <th><?php _e('Search', 'newsletter'); ?></th>
105
  <td>
106
  <input name="text" type="text" size="50" value="<?php echo htmlspecialchars(newsletter_request('text'))?>"/>
107
+ <input type="submit" value="<?php _e('Search', 'newsletter'); ?>" />
108
  <br />
109
+ <?php _e('Press without filter to show all. Max 100 results will be shown. Use export panel to get all subscribers.', 'newsletter'); ?>
110
  </td>
111
  </tr>
112
  <tr valign="top">
117
  </td>
118
  </tr>
119
  <tr valign="top">
120
+ <th><?php _e('Order', 'newsletter'); ?></th>
121
  <td>
122
  <select name="order">
123
  <option value="id">id</option>
132
  if ($_POST['a'] == 'edit' && check_admin_referer()) {
133
  $subscriber = newsletter_get_subscriber($_POST['id']);
134
  ?>
135
+ <input type="hidden" name="subscriber[id]" value="<?php echo $subscriber->id; ?>"/>
136
  <table class="form-table">
137
  <tr valign="top">
138
  <th>Name</th>
143
  <td><input type="text" name="subscriber[email]" size="40" value="<?php echo htmlspecialchars($subscriber->email); ?>"/></td>
144
  </tr>
145
  </table>
146
+ <p class="submit"><input type="button" value="Save" onclick="newsletter_save()"/></p>
147
 
148
  <?php } ?>
149
 
174
 
175
  <?php
176
  if ($list) {
177
+ echo '<table class="bordered-table" border="1" cellspacing="5">';
178
+ echo '<tr><th>Id</th><th>' . __('Email', 'newsletter') . '</th><th>' . __('Name', 'newsletter') . '</th><th>' . __('Status', 'newsletter') . '</th><th>' . __('Actions', 'newsletter') . '</th><th>' . __('Profile', 'newsletter') . '</th></tr>';
179
  foreach($list as $s) {
180
  echo '<tr>';
181
  echo '<td>' . $s->id . '</td>';
182
  echo '<td>' . $s->email . '</td>';
183
  echo '<td>' . $s->name . '</td>';
184
+ echo '<td><small>' . ($s->status=='S'?'Not confirmed':'Confirmed') . '</small></td>';
185
+ echo '<td><small>';
186
+ echo '<a href="javascript:void(newsletter_edit(' . $s->id . '))">' . __('edit', 'newsletter') . '</a>';
187
+ echo ' | <a href="javascript:void(newsletter_remove(' . $s->id . '))">' . __('remove', 'newsletter') . '</a>';
188
+ echo ' | <a href="javascript:void(newsletter_set_status(' . $s->id . ', \'C\'))">' . __('confirm', 'newsletter') . '</a>';
189
+ echo ' | <a href="javascript:void(newsletter_set_status(' . $s->id . ', \'S\'))">' . __('unconfirm', 'newsletter') . '</a>';
190
+ echo ' | <a href="javascript:void(newsletter_resend(' . $s->id . '))">' . __('resend confirmation', 'newsletter') . '</a>';
191
+ echo '</small></td>';
192
  echo '<td><small>';
193
  $query = $wpdb->prepare("select name,value from " . $wpdb->prefix . "newsletter_profiles where newsletter_id=%d", $s->id);
194
  $profile = $wpdb->get_results($query);
195
  foreach ($profile as $field) {
196
  echo htmlspecialchars($field->name) . ': ' . htmlspecialchars($field->value) . '<br />';
197
  }
198
+ echo 'Token: ' . $s->token;
199
+
 
 
 
 
200
  echo '</small></td>';
201
+
 
 
 
 
 
 
 
202
  echo '</tr>';
203
  }
204
  echo '</table>';
newsletter.php CHANGED
@@ -1,4 +1,7 @@
1
  <?php
 
 
 
2
  $options = get_option('newsletter_email');
3
  $options_newsletter = get_option('newsletter');
4
 
@@ -59,6 +62,8 @@ if (file_exists($theme_dir . '/style.css')) {
59
  $css_url = newsletter_get_theme_url($options['theme']) . '/style.css';
60
  }
61
 
 
 
62
  ?>
63
  <?php if (!isset($options['novisual'])) { ?>
64
  <script type="text/javascript" src="<?php echo get_option('siteurl'); ?>/wp-content/plugins/newsletter/tiny_mce/tiny_mce.js"></script>
@@ -83,20 +88,10 @@ if (file_exists($theme_dir . '/style.css')) {
83
  </script>
84
  <?php } ?>
85
 
86
- <style>
87
- #newsletter h3 {
88
- margin-bottom: 0px;
89
- margin-top: 30px;
90
- }
91
- #newsletter .form-table {
92
- border: 1px solid #ccc;
93
- background-color: #ffffff;
94
- }
95
- </style>
96
-
97
- <div class="wrap" id="newsletter">
98
 
99
  <h2>Newsletter Composer</h2>
 
100
  <?php if (!touch(dirname(__FILE__) . '/test.tmp')) { ?>
101
  <div class="error fade" style="background-color:red;"><p><strong>It seems that Newsletter plugin folder is not writable. Make it writable to let
102
  Newsletter write logs and save date when errors occour.</strong></p></div>
@@ -272,66 +267,51 @@ if (file_exists($theme_dir . '/style.css')) {
272
 
273
 
274
 
275
-
276
-
277
-
278
  <h3>Newsletter message</h3>
279
 
280
  <table class="form-table">
281
- <?php if (defined('NEWSLETTER_EXTRAS')) { ?>
282
  <tr valign="top">
283
- <th>Newsletter name</th>
284
- <td>
285
- <input name="options[name]" type="text" size="20" value="<?php echo htmlspecialchars($options['name'])?>"/>
286
- <br />
287
- This symbolic name will be used to track the link clicks and associate them to a specific newsletter.
288
- Keep the name compact and significative.
289
- </td>
290
- </tr>
291
- <tr valign="top">
292
- <th>Tracking</th>
293
  <td>
 
294
  <input name="options[track]" value="1" type="checkbox" <?php echo $options['track']?'checked':''; ?>/>
295
  Track link clicks
296
  <br />
297
  When this option is enabled, each link in the email text will be rewritten and clicks
298
  on them intercepted.
 
 
299
  </td>
300
- </tr>
301
  <?php } else { ?>
302
- <tr valign="top">
303
- <th>Tracking</th>
304
  <td>Tracking options available with Newsletter Extras package</td>
305
- </tr>
306
  <?php } ?>
 
307
 
308
  <tr valign="top">
309
  <th>Subject</th>
310
  <td>
311
- <input name="options[subject]" type="text" size="70" value="<?php echo htmlspecialchars($options['subject'])?>"/>
312
  <br />
313
- Tags: <strong>{name}</strong> receiver name.
314
  </td>
315
  </tr>
 
316
  <tr valign="top">
317
  <th>Message</th>
318
  <td>
 
 
 
319
  <textarea name="options[message]" wrap="off" rows="20" style="font-family: monospace; width: 100%"><?php echo htmlspecialchars($options['message'])?></textarea>
320
  <br />
321
- Tags:
322
- <strong>{name}</strong> receiver name;
323
- <strong>{unsubscription_url}</strong> unsubscription URL;
324
- <strong>{token}</strong> the subscriber token.
325
- <pre><?php //echo htmlspecialchars(newsletter_relink($options['message']))?></pre>
326
  </td>
327
  </tr>
328
- <tr valign="top">
329
- <th>Disable visual editor</th>
330
- <td>
331
- <input name="options[novisual]" value="1" type="checkbox" <?php echo $options['novisual']?'checked':''; ?>/>
332
- (save to apply and be sure to <a href="http://www.satollo.net/plugins/newsletter#composer">read here</a>)
333
- </td>
334
- </tr>
335
  <tr valign="top">
336
  <th>Theme</th>
337
  <td>
@@ -363,12 +343,6 @@ if (file_exists($theme_dir . '/style.css')) {
363
  <input class="button" type="submit" name="auto" value="Auto compose"/>
364
  </td>
365
  </tr>
366
- <tr valign="top">
367
- <th>Number of posts on theme</th>
368
- <td>
369
- <input name="options[theme_posts]" type="text" size="5" value="<?php echo htmlspecialchars($options['theme_posts'])?>"/>
370
- </td>
371
- </tr>
372
  </table>
373
 
374
  <p class="submit">
@@ -382,32 +356,18 @@ if (file_exists($theme_dir . '/style.css')) {
382
  <?php } ?>
383
  </p>
384
 
385
-
386
- <h3>Scheduler</h3>
387
- <p>Scheduler helps to send out a long list of emails slowly to not overload the server.</p>
388
- <?php if (defined('NEWSLETTER_EXTRAS')) { ?>
389
  <table class="form-table">
390
  <tr valign="top">
391
- <th>Interval between sending tasks</th>
392
- <td>
393
- <input name="options[scheduler_interval]" type="text" size="5" value="<?php echo htmlspecialchars($options['scheduler_interval'])?>"/>
394
- (minutes, minimum value is 1)
395
- </td>
396
- </tr>
397
- <tr valign="top">
398
- <th>Max number of emails per task</th>
399
  <td>
400
- <input name="options[scheduler_max]" type="text" size="5" value="<?php echo htmlspecialchars($options['scheduler_max'])?>"/>
401
- (good value is 20 to 50)
402
  </td>
403
  </tr>
404
  </table>
405
- <p class="submit">
406
- <input class="button" type="submit" name="save" value="Save"/>
407
- </p>
408
- <?php } else { ?>
409
- <p><strong>Available only with <a href="http://www.satollo.net/plugins/newsletter#extras">Newsletter Extras</a> package</strong></p>
410
- <?php } ?>
411
 
412
  <!--
413
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@@ -422,26 +382,34 @@ if (file_exists($theme_dir . '/style.css')) {
422
 
423
 
424
  <h3>Sending options</h3>
425
- <p>Configuration for not scheduled sending process.</p>
426
  <table class="form-table">
427
  <tr valign="top">
428
  <th>Max emails in a single batch</th>
429
  <td>
430
- <input name="options[max]" type="text" size="5" value="<?php echo htmlspecialchars($options['max'])?>"/>
431
  </td>
432
  </tr>
433
  <tr valign="top">
434
  <th>Receiver address for simulation</th>
435
  <td>
436
- <input name="options[simulate_email]" type="text" size="40" value="<?php echo htmlspecialchars($options['simulate_email'])?>"/>
437
- <br />When you simulate a sending process, emails are really sent but all to this
438
- email address. That helps to test out problems with mail server.
 
 
 
 
 
 
 
 
 
 
439
  </td>
440
  </tr>
441
-
442
  </table>
443
  <p class="submit">
444
- <input class="button" type="submit" name="save" value="Save"/>
445
  </p>
446
  <!--
447
  <tr valign="top">
@@ -452,6 +420,33 @@ if (file_exists($theme_dir . '/style.css')) {
452
  </tr>
453
  -->
454
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
455
 
456
  <h3>Test subscribers</h3>
457
  <p>
1
  <?php
2
+
3
+ @include_once 'commons.php';
4
+
5
  $options = get_option('newsletter_email');
6
  $options_newsletter = get_option('newsletter');
7
 
62
  $css_url = newsletter_get_theme_url($options['theme']) . '/style.css';
63
  }
64
 
65
+ $nc = new NewsletterControls($options, 'composer');
66
+
67
  ?>
68
  <?php if (!isset($options['novisual'])) { ?>
69
  <script type="text/javascript" src="<?php echo get_option('siteurl'); ?>/wp-content/plugins/newsletter/tiny_mce/tiny_mce.js"></script>
88
  </script>
89
  <?php } ?>
90
 
91
+ <div class="wrap">
 
 
 
 
 
 
 
 
 
 
 
92
 
93
  <h2>Newsletter Composer</h2>
94
+
95
  <?php if (!touch(dirname(__FILE__) . '/test.tmp')) { ?>
96
  <div class="error fade" style="background-color:red;"><p><strong>It seems that Newsletter plugin folder is not writable. Make it writable to let
97
  Newsletter write logs and save date when errors occour.</strong></p></div>
267
 
268
 
269
 
 
 
 
270
  <h3>Newsletter message</h3>
271
 
272
  <table class="form-table">
 
273
  <tr valign="top">
274
+ <th>Newsletter name and tracking</th>
275
+ <?php if (defined('NEWSLETTER_EXTRAS')) { ?>
 
 
 
 
 
 
 
 
276
  <td>
277
+ <input name="options[name]" type="text" size="25" value="<?php echo htmlspecialchars($options['name'])?>"/>
278
  <input name="options[track]" value="1" type="checkbox" <?php echo $options['track']?'checked':''; ?>/>
279
  Track link clicks
280
  <br />
281
  When this option is enabled, each link in the email text will be rewritten and clicks
282
  on them intercepted.
283
+ The symbolic name will be used to track the link clicks and associate them to a specific newsletter.
284
+ Keep the name compact and significative.
285
  </td>
286
+
287
  <?php } else { ?>
 
 
288
  <td>Tracking options available with Newsletter Extras package</td>
 
289
  <?php } ?>
290
+ </tr>
291
 
292
  <tr valign="top">
293
  <th>Subject</th>
294
  <td>
295
+ <?php $nc->text('subject', 70); ?>
296
  <br />
297
+ <?php _e('Tags: <strong>{name}</strong> receiver name.', 'newsletter'); ?>
298
  </td>
299
  </tr>
300
+
301
  <tr valign="top">
302
  <th>Message</th>
303
  <td>
304
+ <?php $nc->checkbox('novisual', 'disable the visual editor'); ?>
305
+ (save to apply and be sure to <a href="http://www.satollo.net/plugins/newsletter#composer">read here</a>)
306
+ <br />
307
  <textarea name="options[message]" wrap="off" rows="20" style="font-family: monospace; width: 100%"><?php echo htmlspecialchars($options['message'])?></textarea>
308
  <br />
309
+ <?php _e('Tags: <strong>{name}</strong> receiver name;
310
+ <strong>{unsubscription_url}</strong> unsubscription URL;
311
+ <strong>{token}</strong> the subscriber token.', 'newsletter'); ?>
 
 
312
  </td>
313
  </tr>
314
+
 
 
 
 
 
 
315
  <tr valign="top">
316
  <th>Theme</th>
317
  <td>
343
  <input class="button" type="submit" name="auto" value="Auto compose"/>
344
  </td>
345
  </tr>
 
 
 
 
 
 
346
  </table>
347
 
348
  <p class="submit">
356
  <?php } ?>
357
  </p>
358
 
359
+ <h3>Theme parameters</h3>
360
+ <p>Themes may not use such parameters!</p>
 
 
361
  <table class="form-table">
362
  <tr valign="top">
363
+ <th>Number of posts on theme</th>
 
 
 
 
 
 
 
364
  <td>
365
+ <input name="options[theme_posts]" type="text" size="5" value="<?php echo htmlspecialchars($options['theme_posts'])?>"/>
 
366
  </td>
367
  </tr>
368
  </table>
369
+
370
+
 
 
 
 
371
 
372
  <!--
373
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
382
 
383
 
384
  <h3>Sending options</h3>
 
385
  <table class="form-table">
386
  <tr valign="top">
387
  <th>Max emails in a single batch</th>
388
  <td>
389
+ <?php $nc->text('max', 5); ?>
390
  </td>
391
  </tr>
392
  <tr valign="top">
393
  <th>Receiver address for simulation</th>
394
  <td>
395
+ <?php $nc->text('simulate_email', 50); ?>
396
+ <br />
397
+ <?php _e('When you simulate a sending process, emails are really sent but all to this
398
+ email address. That helps to test out problems with mail server.', 'newsletter'); ?>
399
+ </td>
400
+ </tr>
401
+ <tr valign="top">
402
+ <th>Return path</th>
403
+ <td>
404
+ <?php $nc->text('return_path', 50); ?>
405
+ <br />
406
+ <?php _e('Force the return path to this email address. Return path is used from mail server to
407
+ send back messages with delivery errors.', 'newsletter'); ?>
408
  </td>
409
  </tr>
 
410
  </table>
411
  <p class="submit">
412
+ <input class="button" type="submit" name="save" value="<?php _e('Save', 'newsletter'); ?>"/>
413
  </p>
414
  <!--
415
  <tr valign="top">
420
  </tr>
421
  -->
422
 
423
+ <h3>Sending options for scheduler</h3>
424
+
425
+ <?php if (defined('NEWSLETTER_EXTRAS')) { ?>
426
+ <p>Scheduler is described <a href="http://www.satollo.net/plugins/newsletter-extras">here</a>.</p>
427
+ <table class="form-table">
428
+ <tr valign="top">
429
+ <th>Interval between sending tasks</th>
430
+ <td>
431
+ <?php $nc->text('scheduler_interval', 5); ?>
432
+ (minutes, minimum value is 1)
433
+ </td>
434
+ </tr>
435
+ <tr valign="top">
436
+ <th>Max number of emails per task</th>
437
+ <td>
438
+ <?php $nc->text('scheduler_max', 5); ?>
439
+ (good value is 20 to 50)
440
+ </td>
441
+ </tr>
442
+ </table>
443
+ <p class="submit">
444
+ <input class="button" type="submit" name="save" value="Save"/>
445
+ </p>
446
+ <?php } else { ?>
447
+ <p><strong>Available only with <a href="http://www.satollo.net/plugins/newsletter-extras">Newsletter Extras</a> package</strong></p>
448
+ <?php } ?>
449
+
450
 
451
  <h3>Test subscribers</h3>
452
  <p>
options.php CHANGED
@@ -1,31 +1,22 @@
1
  <?php
2
 
3
- $options = get_option('newsletter');
4
-
5
- if (!isset($options['no_translation'])) {
6
- $plugin_dir = basename(dirname(__FILE__));
7
- load_plugin_textdomain('newsletter', 'wp-content/plugins/' . $plugin_dir . '/languages/');
8
- }
9
 
10
- if (isset($_POST['defaults'])) {
11
- @include(dirname(__FILE__) . '/languages/en_US_options.php');
12
- if (WPLANG != '') @include(dirname(__FILE__) . '/languages/' . WPLANG . '_options.php');
13
- update_option('newsletter', $newsletter_default_options);
14
- }
15
 
16
- if (isset($_POST['save'])) {
17
- $options = newsletter_request('options');
18
  update_option('newsletter', $options);
19
  }
20
 
 
21
  ?>
22
 
23
- <?php if (!$options['novisual']) { ?>
24
  <script type="text/javascript" src="<?php echo get_option('siteurl'); ?>/wp-content/plugins/newsletter/tiny_mce/tiny_mce.js"></script>
25
 
26
  <script type="text/javascript">
27
  tinyMCE.init({
28
- //mode : "textareas",
29
  mode : "specific_textareas",
30
  editor_selector : "visual",
31
  theme : "advanced",
@@ -37,51 +28,34 @@ if (isset($_POST['save'])) {
37
  document_base_url : "<?php echo get_option('home'); ?>/"
38
  });
39
  </script>
40
- <?php } ?>
41
-
42
- <style>
43
- #newsletter h3 {
44
- margin-bottom: 0px;
45
- margin-top: 30px;
46
- }
47
- #newsletter h4 {
48
- font-size: 1.3em;
49
- border-bottom: 1px solid #999;
50
- }
51
- #newsletter .form-table {
52
- border: 1px solid #999;
53
- background-color: #fff;
54
- }
55
- </style>
56
-
57
- <div class="wrap" id="newsletter">
58
-
59
- <h2><?php _e('Newsletter', 'newsletter'); ?></h2>
60
 
61
- <?php require_once 'header.php'; ?>
62
 
63
- <p>
64
- <?php _e('Questions, help, critiques and whatever else <a target="_blank" href="http://www.satollo.net/plugins/newsletter">click here</a>!', 'newsletter'); ?>
65
- </p>
66
 
67
- <form method="post" action="">
68
- <input type="hidden" value="<?php echo NEWSLETTER; ?>" name="version"/>
69
 
 
 
70
 
71
  <h3><?php _e('Sender and subscription page', 'newsletter'); ?></h3>
 
 
 
72
  <table class="form-table">
73
  <tr valign="top">
74
- <th><?php _e('Sender email', 'newsletter'); ?></label></th>
75
  <td>
76
- <input name="options[from_email]" type="text" size="50" value="<?php echo htmlspecialchars($options['from_email'])?>"/>
77
  <br />
78
  <?php _e('Newsletter sender email address: the address subscribers will see the newsletters coming from.', 'newsletter'); ?>
79
  </td>
80
  </tr>
81
  <tr valign="top">
82
- <th><?php _e('Sender name', 'newsletter'); ?></th>
83
  <td>
84
- <input name="options[from_name]" type="text" size="50" value="<?php echo htmlspecialchars($options['from_name'])?>"/>
85
  <br />
86
  <?php _e('The name of the newsletter sender subscribers will see on incoming email.', 'newsletter'); ?>
87
  </td>
@@ -89,14 +63,14 @@ if (isset($_POST['save'])) {
89
  <tr valign="top">
90
  <th><?php _e('Subscription page URL', 'newsletter'); ?></th>
91
  <td>
92
- <input name="options[url]" type="text" size="50" value="<?php echo htmlspecialchars($options['url'])?>"/>
93
  <br />
94
- <?php _e('This is the page where you placed the <strong>[newsletter]</strong> short tag.','newsletter'); ?>
95
- (<a href="http://www.satollo.net/plugins/newsletter"><?php _e('Read more on plugin official page', 'newsletter'); ?></a>)
96
  </td>
97
  </tr>
 
98
  <tr valign="top">
99
- <th>Theme to use for messages</th>
100
  <td>
101
  <select name="options[theme]">
102
  <optgroup label="Included themes">
@@ -123,31 +97,29 @@ if (isset($_POST['save'])) {
123
  </optgroup>
124
  </select>
125
  <br />
126
- Selected theme has to be one with {message} tag inside, tag that will be replaced
127
- with messages. Use the blank theme to send messages as you see them in the editor.
128
  </td>
129
  </tr>
130
  </table>
131
  <p class="submit">
132
- <input class="button" type="submit" name="save" value="<?php _e('Save','newsletter'); ?>"/>
133
  </p>
134
 
135
 
136
 
137
 
138
- <h3><?php _e('Subscription form', 'newsletter'); ?></h3>
139
  <table class="form-table">
140
  <tr valign="top">
141
  <th>&nbsp;</th>
142
  <td>
143
- <input type="checkbox" name="options[noname]" value="1" <?php echo isset($options['noname'])?'checked':''; ?> />
144
- <?php _e('Do not ask the user name, only email.', 'newsletter'); ?>
145
  </td>
146
  </tr>
147
  <tr valign="top">
148
  <th><?php _e('Subscription form page', 'newsletter'); ?></th>
149
  <td>
150
- <textarea class="visual" id="subscription_text" name="options[subscription_text]" wrap="off" rows="5" cols="75"><?php echo htmlspecialchars($options['subscription_text'])?></textarea>
151
  <br />
152
  <?php _e('This is the text showed to subscriber before the subscription form which is added automatically.', 'newsletter'); ?>
153
  </td>
@@ -155,147 +127,141 @@ if (isset($_POST['save'])) {
155
  <tr valign="top">
156
  <th><?php _e('Successfully subscription page', 'newsletter'); ?></th>
157
  <td>
158
- <textarea class="visual" name="options[subscribed_text]" wrap="off" rows="5" cols="75"><?php echo htmlspecialchars($options['subscribed_text'])?></textarea>
159
  <br />
160
- <?php _e('This is the text showed to a user who has pressed "subscribe me" on the previous step informing that an email to confirm subscription has just been sent. Remeber the user to check the spam folder and to follow the email instructions.<br />Tags: <strong>{name}</strong> the user name; <strong>{email}</strong> the user email.', 'newsletter'); ?>
 
 
 
161
  </td>
162
  </tr>
163
  </table>
164
 
165
  <p class="submit">
166
- <input class="button" type="submit" name="save" value="<?php _e('Save','newsletter'); ?>"/>
167
  </p>
168
 
169
 
170
 
171
- <h3><?php _e('Confirmation', 'newsletter'); ?> (<?php _e('double opt-in', 'newsletter'); ?>)</h3>
172
 
173
- <p><?php _e('Email sent to the user to confirm his subscription, the successful confirmation page, the welcome email.', 'newsletter'); ?></p>
 
174
 
175
  <table class="form-table">
176
  <tr valign="top">
177
  <th>&nbsp;</th>
178
  <td>
179
- <input type="checkbox" name="options[noconfirmation]" value="1" <?php echo isset($options['noconfirmation'])?'checked':''; ?> />
180
- <?php _e('Do not use double opt-in. If checked the subscription is direct, so subscribers will be immediately confirmed and will receive the welcome email.', 'newsletter'); ?>
181
- </td>
182
- </tr>
183
- <tr valign="top">
184
- <th><label for="options[confirmation_subject]"><?php _e('Confirmation email subject', 'newsletter'); ?></label></th>
185
- <td>
186
- <input name="options[confirmation_subject]" type="text" size="50" value="<?php echo htmlspecialchars($options['confirmation_subject'])?>"/>
187
- <br />
188
- <?php _e('Tags: <strong>{name}</strong> the user name.', 'newsletter'); ?>
189
  </td>
190
  </tr>
 
 
191
  <tr valign="top">
192
- <th><label for="options[confirmation_message]"><?php _e('Confirmation email message', 'newsletter'); ?></label></th>
193
  <td>
194
- <textarea class="visual" name="options[confirmation_message]" wrap="off" rows="5" cols="75"><?php echo htmlspecialchars($options['confirmation_message'])?></textarea>
195
  <br />
196
- <?php _e('Tags: <strong>{name}</strong> the user name; <strong>{subscription_confirm_url}</strong>confirmation URL to be clicked by the user to confirm his subscription.', 'newsletter'); ?>
 
 
197
  </td>
198
  </tr>
 
199
  </table>
200
 
201
  <p class="submit">
202
- <input class="button" type="submit" name="save" value="<?php _e('Save', 'newsletter'); ?>"/>
203
  </p>
204
 
205
 
206
 
207
  <h3><?php _e('Welcome message', 'newsletter'); ?></h3>
208
-
209
- <p><?php _e('Users jump directly to this step if you disabled the double opt-in step.', 'newsletter'); ?></p>
210
 
211
  <table class="form-table">
212
  <tr valign="top">
213
- <th><label for="options[confirmed_text]"><?php _e('Successful confirmation page', 'newsletter'); ?></label></th>
214
  <td>
215
- <textarea class="visual" name="options[confirmed_text]" wrap="off" rows="5" cols="75"><?php echo htmlspecialchars($options['confirmed_text'])?></textarea>
216
  <br />
217
- <?php _e('Showed when the user follow the confirmation URL sent to him with previous email settings or if signed up directly with no double opt-in process.', 'newsletter'); ?>
218
- <br />
219
- <?php _e('Tags: <strong>{name}</strong> the user name; <strong>{email}</strong> for the user email; <strong>{token}</strong> the subscriber unique token', 'newsletter'); ?>
 
 
220
  </td>
221
  </tr>
222
 
223
  <tr valign="top">
224
  <th><?php _e('Conversion tracking code', 'newsletter'); ?></th>
225
  <td>
226
- <?php if (newsletter_has_extras()) { ?>
227
- <textarea name="options[confirmed_tracking]" wrap="off" rows="5" cols="75"><?php echo htmlspecialchars($options['confirmed_tracking'])?></textarea>
228
- <?php } else { ?>
229
- <p><strong><?php _e('Available with Newsletter Extras package', 'newsletter'); ?></strong></p>
230
- <?php } ?>
231
  <br />
232
- <?php _e('That code is injected AS-IS in welcome page and can be used to track conversion (you can use PHP if needed). Conversion code is usually supply by tracking services, like Google AdWords, Google Analytics and so on.', 'newsletter'); ?>
233
- </td>
234
- </tr>
235
- <tr valign="top"><td colspan="2"><h4><?php _e('Welcome email', 'newsletter'); ?></h4></td></tr>
236
- <tr valign="top">
237
- <th><?php _e('Welcome email subject', 'newsletter'); ?></th>
238
- <td>
239
- <input name="options[confirmed_subject]" type="text" size="50" value="<?php echo htmlspecialchars($options['confirmed_subject'])?>"/>
240
  <br />
241
- <?php _e('Tags: <strong>{name}</strong> user name.', 'newsletter'); ?>
 
 
242
  </td>
243
  </tr>
 
 
244
  <tr valign="top">
245
- <th><label><?php _e('Welcome email message', 'newsletter'); ?></label></th>
 
 
246
  <td>
247
- <textarea class="visual" name="options[confirmed_message]" wrap="off" rows="5" cols="75"><?php echo htmlspecialchars($options['confirmed_message'])?></textarea>
248
  <br />
249
- <?php _e('Tags: <strong>{name}</strong> user name; <strong>{token}</strong> the subscriber unique token', 'newsletter'); ?>
 
 
250
  </td>
251
  </tr>
 
252
  </table>
253
 
254
  <p class="submit">
255
- <input class="button" type="submit" name="save" value="<?php _e('Save', 'newsletter'); ?>"/>
256
  </p>
257
 
258
 
259
 
260
  <h3><?php _e('Unsubscription', 'newsletter'); ?></h3>
261
-
262
- <p><?php _e('A user starts the unsubscription process clicking the unsubscription link in a newsletter. This lkink contains the email to unsubscribe and some unique information to avoid hacking. The user are requird to confirm the unsubscription: this is the last step where YOU can communicate with you almost missed user.', 'newsletter'); ?></p>
 
 
263
 
264
  <table class="form-table">
265
  <tr valign="top">
266
- <th><label for="options[unsubscription_text]"><?php _e('Unsubscription text', 'newsletter'); ?></label></th>
267
  <td>
268
- <textarea class="visual" name="options[unsubscription_text]" wrap="off" rows="5" cols="75"><?php echo htmlspecialchars($options['unsubscription_text'])?></textarea>
269
  <br />
270
- <?php _e('This text is show to users who click on a "unsubscription link" in a newsletter email. You have to insert a link in the text that user can follow to confirm the unsubscription request (see tags).', 'newsletter'); ?>
271
- <br />
272
- <?php _e('Tags: <strong>{name}</strong> user name; <strong>{email}</strong> user email; <strong>{unsubscription_confirm_url}</strong> URL to confirm unsubscription.', 'newsletter'); ?>
 
 
 
273
  </td>
274
  </tr>
275
 
276
  <!-- Text showed to the user on successful unsubscription -->
277
  <tr valign="top">
278
- <th><label for="options[unsubscribed_text]"><?php _e('Good bye text', 'newsletter'); ?></label></th>
279
  <td>
280
- <textarea class="visual" name="options[unsubscribed_text]" wrap="off" rows="5" cols="75"><?php echo htmlspecialchars($options['unsubscribed_text'])?></textarea><br />
281
- <?php _e('Latest message showed to the user to say "good bye".', 'newsletter'); ?>
282
- <br />
283
- <?php _e('Tags: none.', 'newsletter'); ?>
284
  </td>
285
  </tr>
286
 
 
287
  <tr valign="top">
288
- <th><label><?php _e('Goodbye email subject', 'newsletter'); ?></label></th>
289
- <td>
290
- <input name="options[unsubscribed_subject]" type="text" size="50" value="<?php echo htmlspecialchars($options['unsubscribed_subject'])?>"/>
291
- <br />
292
- <?php _e('Tags: <strong>{name}</strong> user name.', 'newsletter'); ?>
293
- </td>
294
- </tr>
295
- <tr valign="top">
296
- <th><label><?php _e('Goodbye email message', 'newsletter'); ?></label></th>
297
  <td>
298
- <textarea class="visual" name="options[unsubscribed_message]" wrap="off" rows="5" cols="75"><?php echo htmlspecialchars($options['unsubscribed_message'])?></textarea>
299
  <br />
300
  <?php _e('Tags: <strong>{name}</strong> user name.', 'newsletter'); ?>
301
  </td>
@@ -303,191 +269,24 @@ if (isset($_POST['save'])) {
303
  </table>
304
 
305
  <p class="submit">
306
- <input class="button" type="submit" name="save" value="<?php _e('Save', 'newsletter'); ?>"/>
307
  </p>
308
 
309
- <!--
310
- <h2><?php _e('Unsubscription for mass mail mode', 'newsletter'); ?></h2>
311
- <p><?php _e('This section is not working!', 'newsletter'); ?></p>
312
-
313
- <table class="form-table">
314
- <tr valign="top">
315
- <th><label><?php _e('Unsubscription text', 'newsletter'); ?></label></th>
316
- <td>
317
- <textarea name="options[unsubscription_mm_text]" wrap="off" rows="5" cols="75"><?php echo htmlspecialchars($options['unsubscription_mm_text'])?></textarea>
318
- </td>
319
- </tr>
320
-
321
- <tr valign="top">
322
- <th><label><?php _e('Unsubscription error', 'newsletter'); ?></label></th>
323
- <td>
324
- <input name="options[unsubscription_mm_error]" type="text" size="50" value="<?php echo htmlspecialchars($options['unsubscription_mm_error'])?>"/>
325
- <br />
326
- <?php _e('Shown with the unsubscription message then the email to unsubscribe is not found.', 'newsletter'); ?>
327
- </td>
328
- </tr>
329
- <tr valign="top">
330
- <th><label><?php _e('"Email to unsubscribe" label', 'newsletter'); ?></label></th>
331
- <td>
332
- <input name="options[unsubscription_mm_email_label]" type="text" size="50" value="<?php echo htmlspecialchars($options['unsubscription_mm_email_label'])?>"/>
333
- <br />
334
- Used when the newsletter is sent with "mass mail" mode.
335
- </td>
336
- </tr>
337
- <tr valign="top">
338
- <th><label><?php _e('"Confirm unsubscription" label', 'newsletter'); ?></label></th>
339
- <td>
340
- <input name="options[unsubscription_mm_label]" type="text" size="50" value="<?php echo htmlspecialchars($options['unsubscription_mm_label'])?>"/>
341
- <br />
342
- <?php _e('The button text to confirm unsubscription or to send an unsubscription request for the specified email address when "mass mail" mode is used for sending newsletters.', 'newsletter'); ?>
343
- </td>
344
- </tr>
345
- <tr valign="top">
346
- <th><label><?php _e('Unsubscription end text', 'newsletter'); ?></label></th>
347
- <td>
348
- <textarea name="options[unsubscription_mm_end_text]" wrap="off" rows="5" cols="75"><?php echo htmlspecialchars($options['unsubscription_mm_end_text'])?></textarea>
349
- <br />
350
- <?php _e('This text is shown when a user type in an email to be removed and the confirmation email has been sent.', 'newsletter'); ?>
351
- </td>
352
- </tr>
353
-
354
- <tr valign="top">
355
- <th><label for="options[unsubscription_subject]"><?php _e('Unsubscription email subject', 'newsletter'); ?></label></th>
356
- <td>
357
- <input name="options[unsubscription_subject]" type="text" size="50" value="<?php echo htmlspecialchars($options['unsubscription_subject'])?>"/>
358
- </td>
359
- </tr>
360
- <tr valign="top">
361
- <th><label for="options[unsubscription_message]"><?php _e('Unsubscription email message', 'newsletter'); ?></label></th>
362
- <td>
363
- <textarea name="options[unsubscription_message]" wrap="off" rows="5" cols="75"><?php echo htmlspecialchars($options['unsubscription_message'])?></textarea>
364
- <br />
365
- <?php _e('Email sent to confirm unsubscription when the request is made specifying an email address to remove. Use {unsubscription_link} to place the link where the user has to click on; use {unsubscription_url} toplace the plain unsubscription URL.', 'newsletter'); ?>
366
- </td>
367
- </tr>
368
- <tr valign="top">
369
- <th><label for="options[unsubscription_link]"><?php _e('Unsubscription link text', 'newsletter'); ?></label></th>
370
- <td>
371
- <input name="options[unsubscription_link]" type="text" size="50" value="<?php echo htmlspecialchars($options['unsubscription_link'])?>"/>
372
- <br />
373
- <?php _e('The text of the link for unsubscription to be placed in the unsubscription email.', 'newsletter'); ?>
374
- </td>
375
- </tr>
376
- </table>
377
- -->
378
- <!--
379
- <h2><?php _e('Lists', 'newsletter'); ?></h2>
380
- <table class="form-table">
381
- <tr valign="top">
382
- <th>&nbsp;</th>
383
- <td>
384
- <?php _e('List 0 is the general one', 'newsletter'); ?><br />
385
- <?php for ($i=1; $i<=10; $i++) { ?>
386
- <?php _e('List', 'newsletter'); ?> <?php echo $i; ?> <input name="options[list_<?php echo $i; ?>]" type="text" size="50" value="<?php echo htmlspecialchars($options['list_' . $i])?>"/>
387
- <br />
388
- <?php } ?>
389
-
390
- </td>
391
- </tr>
392
- </table>
393
- -->
394
 
395
- <h3><?php _e('Advanced', 'newsletter'); ?></h3>
396
 
397
- <table class="form-table">
398
- <tr valign="top">
399
- <th>&nbsp;</th>
400
- <td>
401
- <input type="checkbox" name="options[no_translation]" value="1" <?php echo $options['no_translation']!= null?'checked':''; ?> />
402
- Show always in original english
403
- </td>
404
- </tr>
405
- <tr valign="top">
406
- <th>Logging</th>
407
- <td>
408
- <select name="options[logs]">
409
- <option <?php echo (0==$options['logs'])?'selected':''; ?> value="0">None</option>
410
- <option <?php echo (1==$options['logs'])?'selected':''; ?> value="1">Normal</option>
411
- <option <?php echo (2==$options['logs'])?'selected':''; ?> value="2">Debug</option>
412
- </select>
413
- (debug level saves user data on file system, use only to debug problems)
414
- </td>
415
- </tr>
416
- <tr valign="top">
417
- <th>&nbsp;</th>
418
- <td>
419
- <input type="checkbox" name="options[novisual]" value="1" <?php echo $options['novisual']!= null?'checked':''; ?> />
420
- <label for="options[novisual]"><?php _e('do not use visual editors', 'newsletter'); ?></label>
421
- </td>
422
- </tr>
423
- <tr valign="top">
424
- <th>&nbsp;</th>
425
- <td>
426
- <input type="checkbox" name="options[editor]" value="1" <?php echo $options['editor']!= null?'checked':''; ?> />
427
- <label for="options[editor]"><?php _e('allow editors to user the newsletter plugin', 'newsletter'); ?></label>
428
- </td>
429
- </tr>
430
- </table>
431
- <p class="submit">
432
- <input class="button" type="submit" name="save" value="<?php _e('Save', 'newsletter'); ?>"/>
433
- </p>
434
 
435
- <!--
436
- <h2><?php _e('Really advanced options', 'newsletter'); ?></h2>
437
-
438
- <table class="form-table">
439
- <tr valign="top">
440
- <th>&nbsp;</th>
441
- <td>
442
- <input type="checkbox" name="options[subscription_form_enabled]" value="1" <?php echo $options['subscription_form_enabled']!= null?'checked':''; ?> />
443
- <label for="options[subscription_form]"><?php _e('Use the custom subscription form below', 'newsletter'); ?></label>
444
- <br />
445
- <textarea cols="75" rows="5" name="options[subscription_form]"><?php echo htmlspecialchars($options['subscription_form'])?></textarea>
446
- </td>
447
- </tr>
448
- </table>
449
- <p class="submit">
450
- <input class="button" type="submit" name="save" value="<?php _e('Save', 'newsletter'); ?>"/>
451
- </p>
452
- -->
453
-
454
- <!--
455
- <h2><?php _e('Zanzara client', 'newsletter'); ?></h2>
456
- <p><?php _e('Obsolete', 'newsletter'); ?></p>
457
  <table class="form-table">
458
  <tr valign="top">
459
- <th><label><?php _e('Export key', 'newsletter'); ?></label></th>
460
- <td>
461
- <input name="options[key]" type="text" size="50" value="<?php echo htmlspecialchars($options['key'])?>"/>
462
- <br />
463
- <?php _e('Do not search for Zanzara, is a my private software', 'newsletter'); ?>
464
- </td>
465
- </tr>
466
- <tr>
467
- <th><label><?php _e('SMTP address', 'newsletter'); ?></label></th>
468
- <td>
469
- <input name="options[smtp_host]" type="text" size="50" value="<?php echo htmlspecialchars($options['smtp_host'])?>"/>
470
- </td>
471
- </tr>
472
- <tr>
473
- <th><label><?php _e('SMTP user', 'newsletter'); ?></label></th>
474
  <td>
475
- <input name="options[smtp_user]" type="text" size="50" value="<?php echo htmlspecialchars($options['smtp_user'])?>"/>
476
- </td>
477
- </tr>
478
- <tr>
479
- <th><label><?php _e('SMTP password', 'newsletter'); ?></label></th>
480
- <td>
481
- <input name="options[smtp_password]" type="text" size="50" value="<?php echo htmlspecialchars($options['smtp_password'])?>"/>
482
- </td>
483
  </tr>
484
  </table>
485
-
486
  <p class="submit">
487
- <input class="button" type="submit" name="save" value="<?php _e('Save', 'newsletter'); ?>"/>
488
- <input class="button" type="submit" name="defaults" value="<?php _e('Revert to defaults', 'newsletter'); ?>"/>
489
  </p>
490
- -->
491
 
492
  </form>
493
  </div>
1
  <?php
2
 
3
+ @include_once 'commons.php';
 
 
 
 
 
4
 
5
+ $options = get_option('newsletter');
 
 
 
 
6
 
7
+ if ($action == 'save') {
8
+ $options = stripslashes_deep($_POST['options']);
9
  update_option('newsletter', $options);
10
  }
11
 
12
+ $nc = new NewsletterControls($options);
13
  ?>
14
 
15
+ <?php if ($options['novisual'] != 1) { ?>
16
  <script type="text/javascript" src="<?php echo get_option('siteurl'); ?>/wp-content/plugins/newsletter/tiny_mce/tiny_mce.js"></script>
17
 
18
  <script type="text/javascript">
19
  tinyMCE.init({
 
20
  mode : "specific_textareas",
21
  editor_selector : "visual",
22
  theme : "advanced",
28
  document_base_url : "<?php echo get_option('home'); ?>/"
29
  });
30
  </script>
31
+ <?php } ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
 
33
+ <div class="wrap">
34
 
35
+ <h2><?php _e('Newsletter Subscription and Unsubscription', 'newsletter'); ?></h2>
 
 
36
 
37
+ <?php require_once 'header.php'; ?>
 
38
 
39
+ <form method="post" action="">
40
+ <?php wp_nonce_field(); ?>
41
 
42
  <h3><?php _e('Sender and subscription page', 'newsletter'); ?></h3>
43
+
44
+ <?php _e('<p><strong>It\'s REQUIRED to complete such configuration.</strong></p>', 'newsletter'); ?>
45
+
46
  <table class="form-table">
47
  <tr valign="top">
48
+ <th><?php _e('Sender email', 'newsletter'); ?></th>
49
  <td>
50
+ <?php $nc->text('from_email', 50); ?>
51
  <br />
52
  <?php _e('Newsletter sender email address: the address subscribers will see the newsletters coming from.', 'newsletter'); ?>
53
  </td>
54
  </tr>
55
  <tr valign="top">
56
+ <th><?php _e('Sender name'); ?></th>
57
  <td>
58
+ <?php $nc->text('from_name', 50); ?>
59
  <br />
60
  <?php _e('The name of the newsletter sender subscribers will see on incoming email.', 'newsletter'); ?>
61
  </td>
63
  <tr valign="top">
64
  <th><?php _e('Subscription page URL', 'newsletter'); ?></th>
65
  <td>
66
+ <?php $nc->text('url', 70); ?>
67
  <br />
68
+ <?php _e('This is the page where you placed the <strong>[newsletter]</strong> short tag. (<a href="http://www.satollo.net/plugins/newsletter">Read more on plugin official page</a>)', 'newsleetter'); ?>
 
69
  </td>
70
  </tr>
71
+
72
  <tr valign="top">
73
+ <th><?php _e('Theme to use for emails', 'newsletter'); ?></th>
74
  <td>
75
  <select name="options[theme]">
76
  <optgroup label="Included themes">
97
  </optgroup>
98
  </select>
99
  <br />
100
+ <?php _e('Selected theme has to be one with {message} tag inside, tag that will be replaced with messages. Use the blank theme to send messages as you see them in the editor.', 'newsletter'); ?>
 
101
  </td>
102
  </tr>
103
  </table>
104
  <p class="submit">
105
+ <?php $nc->button('save', __('Save', 'newsletter')); ?>
106
  </p>
107
 
108
 
109
 
110
 
111
+ <h3><?php _e('Subscription', 'newsletter'); ?></h3>
112
  <table class="form-table">
113
  <tr valign="top">
114
  <th>&nbsp;</th>
115
  <td>
116
+ <?php $nc->checkbox('noname', __('Do not ask the user name, only email.', 'newsletter')); ?>
 
117
  </td>
118
  </tr>
119
  <tr valign="top">
120
  <th><?php _e('Subscription form page', 'newsletter'); ?></th>
121
  <td>
122
+ <?php $nc->editor('subscription_text'); ?>
123
  <br />
124
  <?php _e('This is the text showed to subscriber before the subscription form which is added automatically.', 'newsletter'); ?>
125
  </td>
127
  <tr valign="top">
128
  <th><?php _e('Successfully subscription page', 'newsletter'); ?></th>
129
  <td>
130
+ <?php $nc->editor('subscribed_text'); ?>
131
  <br />
132
+ <?php _e('This is the text showed to a user who has pressed "subscribe me" on the previous
133
+ step informing that an email to confirm subscription has just been sent. Remeber
134
+ the user to check the spam folder and to follow the email instructions.<br />
135
+ Tags: <strong>{name}</strong> the user name; <strong>{email}</strong> the user email.', 'newsletter'); ?>
136
  </td>
137
  </tr>
138
  </table>
139
 
140
  <p class="submit">
141
+ <?php $nc->button('save', __('Save', 'newsletter')); ?>
142
  </p>
143
 
144
 
145
 
146
+ <h3><?php _e('Confirmation (double opt-in)', 'newsletter'); ?></h3>
147
 
148
+ <?php _e('<p>Email sent to the user to confirm his subscription, the successful confirmation
149
+ page, the welcome email.</p>', 'newsletter'); ?>
150
 
151
  <table class="form-table">
152
  <tr valign="top">
153
  <th>&nbsp;</th>
154
  <td>
155
+ <?php $nc->checkbox('noconfirmation', __('Do not use double opt-in. If checked the subscription is direct, so subscribers will be immediately confirmed and will receive the welcome email.', 'newsletter')); ?>
 
 
 
 
 
 
 
 
 
156
  </td>
157
  </tr>
158
+
159
+ <!-- CONFIRMATION EMAIL -->
160
  <tr valign="top">
161
+ <th><?php _e('Confirmation email', 'newsletter'); ?></th>
162
  <td>
163
+ <?php $nc->email('confirmation'); ?>
164
  <br />
165
+ <?php _e('Tags: <strong>{name}</strong> the user name; <strong>{subscription_confirm_url}</strong>
166
+ confirmation URL to be clicked by the user to confirm his subscription;
167
+ <strong>{unsubscription_url}</strong> the unsubscription link', 'newsletter'); ?>
168
  </td>
169
  </tr>
170
+
171
  </table>
172
 
173
  <p class="submit">
174
+ <?php $nc->button('save', __('Save', 'newsletter')); ?>
175
  </p>
176
 
177
 
178
 
179
  <h3><?php _e('Welcome message', 'newsletter'); ?></h3>
180
+ <?php _e('<p>Users jump directly to this step if you disabled the double opt-in step.</p>', 'newsletter'); ?>
 
181
 
182
  <table class="form-table">
183
  <tr valign="top">
184
+ <th><?php _e('Welcome message', 'newsletter'); ?></th>
185
  <td>
186
+ <?php $nc->editor('confirmed_text'); ?>
187
  <br />
188
+ <?php _e('Showed when the user follow the confirmation URL sent to him with previous email
189
+ settings or if signed up directly with no double opt-in process.
190
+ <br />
191
+ Tags: <strong>{name}</strong> the user name; <strong>{email}</strong> for the
192
+ user email; <strong>{token}</strong> the subscriber unique token', 'newsletter'); ?>
193
  </td>
194
  </tr>
195
 
196
  <tr valign="top">
197
  <th><?php _e('Conversion tracking code', 'newsletter'); ?></th>
198
  <td>
199
+ <?php $nc->textarea('confirmed_tracking'); ?>
 
 
 
 
200
  <br />
201
+ <?php _e('<strong>Works only with Newsletter Extras installed</strong>', 'newsletter'); ?>
 
 
 
 
 
 
 
202
  <br />
203
+ <?php _e('The code is injected AS-IS in welcome page and can be used to track conversion
204
+ (you can use PHP if needed). Conversion code is usually supply by tracking services,
205
+ like Google AdWords, Google Analytics and so on.', 'newsletter'); ?>
206
  </td>
207
  </tr>
208
+
209
+ <!-- WELCOME/CONFIRMED EMAIL -->
210
  <tr valign="top">
211
+ <th>
212
+ <?php _e('Welcome email<br /><small>The right place where to put bonus content link</small>', 'newsletter'); ?>
213
+ </th>
214
  <td>
215
+ <?php $nc->email('confirmed'); ?>
216
  <br />
217
+ <?php _e('Tags: <strong>{id}</strong> user id; <strong>{name}</strong> user name;
218
+ <strong>{token}</strong> the subscriber unique token; <strong>{unsubscription_url}</strong>
219
+ unsubscription link', 'newsletter'); ?>
220
  </td>
221
  </tr>
222
+
223
  </table>
224
 
225
  <p class="submit">
226
+ <?php $nc->button('save', __('Save', 'newsletter')); ?>
227
  </p>
228
 
229
 
230
 
231
  <h3><?php _e('Unsubscription', 'newsletter'); ?></h3>
232
+ <?php _e('<p>A user starts the unsubscription process clicking the unsubscription link in
233
+ a newsletter. This link contains the email to unsubscribe and some unique information
234
+ to avoid hacking. The user are requird to confirm the unsubscription: this is the last
235
+ step where YOU can communicate with you almost missed user.</p>', 'newsletter'); ?>
236
 
237
  <table class="form-table">
238
  <tr valign="top">
239
+ <th><?php _e('Unsubscription message', 'newsletter'); ?></th>
240
  <td>
241
+ <?php $nc->editor('unsubscription_text'); ?>
242
  <br />
243
+ <?php _e('This text is show to users who click on a "unsubscription link" in a newsletter
244
+ email. You have to insert a link in the text that user can follow to confirm the
245
+ unsubscription request (see tags).
246
+ <br />
247
+ Tags: <strong>{name}</strong> user name; <strong>{email}</strong> user email;
248
+ <strong>{unsubscription_confirm_url}</strong> URL to confirm unsubscription.', 'newsletter'); ?>
249
  </td>
250
  </tr>
251
 
252
  <!-- Text showed to the user on successful unsubscription -->
253
  <tr valign="top">
254
+ <th><?php _e('Goodbye message', 'newsletter'); ?></th>
255
  <td>
256
+ <?php $nc->editor('unsubscribed_text'); ?>
 
 
 
257
  </td>
258
  </tr>
259
 
260
+ <!-- GOODBYE EMAIL -->
261
  <tr valign="top">
262
+ <th><?php _e('Goodbye email', 'newsletter'); ?></th>
 
 
 
 
 
 
 
 
263
  <td>
264
+ <?php $nc->email('unsubscribed'); ?>
265
  <br />
266
  <?php _e('Tags: <strong>{name}</strong> user name.', 'newsletter'); ?>
267
  </td>
269
  </table>
270
 
271
  <p class="submit">
272
+ <?php $nc->button('save', __('Save', 'newsletter')); ?>
273
  </p>
274
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
275
 
 
276
 
277
+ <h3><?php _e('Advanced', 'newsletter'); ?></h3>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
278
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
279
  <table class="form-table">
280
  <tr valign="top">
281
+ <th><?php _e('Disable visual editors?', 'newsletter')?></th>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
282
  <td>
283
+ <?php $nc->yesno('novisual'); ?>
284
+ </td>
 
 
 
 
 
 
285
  </tr>
286
  </table>
 
287
  <p class="submit">
288
+ <?php $nc->button('save', __('Save', 'newsletter')); ?>
 
289
  </p>
 
290
 
291
  </form>
292
  </div>
plugin.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Newsletter
4
  Plugin URI: http://www.satollo.net/plugins/newsletter
5
  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>
6
- Version: 1.5.0
7
  Author: Satollo
8
  Author URI: http://www.satollo.net
9
  Disclaimer: Use at your own risk. No warranty expressed or implied is provided.
@@ -26,35 +26,37 @@ Disclaimer: Use at your own risk. No warranty expressed or implied is provided.
26
  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
27
  */
28
 
29
- define('NEWSLETTER', '1.5.0');
30
 
 
 
 
 
 
 
 
 
 
 
31
  @include(ABSPATH . 'wp-content/plugins/newsletter-extras/newsletter-extras.php');
32
 
33
  require_once(dirname(__FILE__) . '/widget.php');
34
 
35
- global $newsletter_labels;
36
  $newsletter_step = 'subscription';
37
- global $newsletter_subscriber;
38
 
39
  function newsletter_init_labels() {
40
- global $newsletter_labels;
41
-
42
- @include_once(dirname(__FILE__) . '/languages/en_US.php');
43
- if (WPLANG != '') @include_once(dirname(__FILE__) . '/languages/' . WPLANG . '.php');
44
- @include_once(ABSPATH . 'wp-content/plugins/newsletter-custom/languages/en_US.php');
45
- if (WPLANG != '') @include_once(ABSPATH . 'wp-content/plugins/newsletter-custom/languages/' . WPLANG . '.php');
46
  }
47
 
48
- function newsletter_label($name) {
49
  global $newsletter_labels;
50
 
51
- if ($newsletter_labels) return $newsletter_labels[$name];
52
- newsletter_init_labels();
53
- return $newsletter_labels[$name];
54
  }
55
 
56
- function newsletter_echo($name) {
57
- echo newsletter_label($name);
58
  }
59
 
60
  function newsletter_request($name, $default=null ) {
@@ -130,8 +132,8 @@ function newsletter_call($attrs, $content=null) {
130
  else {
131
  $buffer .= newsletter_label('subscription_form');
132
  }
133
- if (!defined('NEWSLETTER_EXTRAS'))
134
- $buffer .= '<div style="text-align:right;padding:0 10px;margin:0;"><a style="font-size:9px;color:#bbb;text-decoration:none" href="http://www.satollo.net">by satollo.net</a></div>';
135
  }
136
 
137
  }
@@ -172,31 +174,14 @@ function newsletter_call($attrs, $content=null) {
172
  $buffer .= $text;
173
  }
174
 
175
- // if ($newsletter_step == 'unsubscription_mm' || $newsletter_step == 'unsubscription_mm_error')
176
- // {
177
- // if ($newsletter_step == 'unsubscription_mm_error')
178
- // {
179
- // $buffer .= '<p>' . $options['unsubscription_mm_error'] . '</p>';
180
- // }
181
- // $buffer .= $options['unsubscription_mm_text'];
182
- // $buffer .= '<form method="post" action="?">';
183
- // $buffer .= '<input type="hidden" name="na" value="ue"/>';
184
- // $buffer .= '<table cellspacing="3" cellpadding="3" border="0">';
185
- // $buffer .= '<tr><td>' . $options['unsubscription_mm_email_label'] . '</td><td><input type="text" name="ne" size="20"/></td></tr>';
186
- // $buffer .= '<tr><td colspan="2" style="text-align: center"><input type="submit" value="' . $options['unsubscription_mm_label'] . '"/></td></tr></table>';
187
- // $buffer .= '</form>';
188
- // }
189
-
190
- // if ($newsletter_step == 'unsubscription_mm_end')
191
- // {
192
- // $text = $options['unsubscription_mm_end'];
193
- // $text = str_replace('{name}', $newsletter_subscriber->name, $text);
194
- // $buffer .= $text;
195
- // }
196
-
197
  return '<div class="newsletter">' . $buffer . '</div>';
198
  }
199
 
 
 
 
 
 
200
  /**
201
  * Sends out newsletters.
202
  *
@@ -257,8 +242,20 @@ function newsletter_send_batch() {
257
  $simulate = (bool)$batch['simulate'];
258
  $scheduled = (bool)$batch['scheduled']; // Used to avoid echo
259
 
 
 
 
 
 
 
 
 
 
260
  $query = "select * from " . $wpdb->prefix . "newsletter where status='C' and list=" . $list .
261
  " and id>" . $id . " order by id";
 
 
 
262
 
263
  $recipients = $wpdb->get_results($query);
264
 
@@ -266,7 +263,7 @@ function newsletter_send_batch() {
266
  if ($id == 0) {
267
  newsletter_delete_batch_file();
268
  wp_clear_scheduled_hook('newsletter_cron_hook');
269
- $batch['total'] = count($recipients);
270
  $batch['sent'] = 0;
271
  $batch['completed'] = false;
272
  $batch['message'] = '';
@@ -279,14 +276,7 @@ function newsletter_send_batch() {
279
  $max_time = (int)(ini_get('max_execution_time') * 0.8);
280
  $db_time = time();
281
 
282
- if ($scheduled) {
283
- $max = $options_email['scheduler_max'];
284
- if (!is_numeric($max)) $max = 10;
285
- }
286
- else {
287
- $max = $options_email['max'];
288
- if (!is_numeric($max)) $max = 0;
289
- }
290
 
291
  if (!$scheduled) {
292
  echo 'Sending to: <br />';
@@ -303,6 +293,8 @@ function newsletter_send_batch() {
303
 
304
  $idx = 0;
305
 
 
 
306
  foreach ($recipients as $r) {
307
 
308
  $url = newsletter_add_qs($options['url'],
@@ -349,9 +341,11 @@ function newsletter_send_batch() {
349
  $batch['message'] = 'Temporary saved batch to avoid database timeout';
350
  if (!update_option('newsletter_batch', $batch)) {
351
  newsletter_error(__FUNCTION__, 'Unable to save to database, saving on file system');
352
- newsletter_error(__FUNCTION__, "Batch:\n" . print_r($last, true));
353
 
354
  newsletter_save_batch_file($batch);
 
 
355
  return false;
356
  }
357
  }
@@ -362,11 +356,18 @@ function newsletter_send_batch() {
362
  $batch['message'] = 'Batch max emails limit reached (it is ok)';
363
  if (!update_option('newsletter_batch', $batch)) {
364
  newsletter_error(__FUNCTION__, 'Unable to save to database, saving on file system');
365
- newsletter_error(__FUNCTION__, "Batch:\n" . print_r($last, true));
366
 
367
  newsletter_save_batch_file($batch);
 
 
 
368
  return false;
369
  }
 
 
 
 
370
  return true;
371
  }
372
 
@@ -379,8 +380,14 @@ function newsletter_send_batch() {
379
  newsletter_error(__FUNCTION__, "Batch:\n" . print_r($last, true));
380
 
381
  newsletter_save_batch_file($batch);
 
 
 
382
  return false;
383
  }
 
 
 
384
  return true;
385
  }
386
  }
@@ -388,14 +395,20 @@ function newsletter_send_batch() {
388
  // All right (incredible!)
389
  newsletter_info(__FUNCTION__, 'Sending completed!');
390
  $batch['completed'] = true;
 
391
  if (!update_option('newsletter_batch', $batch)) {
392
  newsletter_error(__FUNCTION__, 'Unable to save to database, saving on file system');
393
  newsletter_error(__FUNCTION__, "Batch:\n" . print_r($last, true));
394
 
395
  newsletter_save_batch_file($batch);
 
 
 
396
  return false;
397
  }
398
 
 
 
399
  return true;
400
  }
401
 
@@ -423,6 +436,7 @@ function newsletter_send_test($recipients) {
423
  '</style></head><body>' . $options_email['message'] . '</body></html>';
424
  }
425
 
 
426
  foreach ($recipients as $r) {
427
 
428
  $url = newsletter_add_qs($options['url'],
@@ -444,13 +458,14 @@ function newsletter_send_test($recipients) {
444
 
445
  if ($x) {
446
  echo '[OK] -- ';
447
- newsletter_debug(__FUNCTION__, 'Sent to ' . $r->id . ' failed');
448
  } else {
449
  echo '[KO] -- ';
450
- newsletter_debug(__FUNCTION__, 'Sent to ' . $r->id . ' success');
451
  }
452
-
453
  }
 
 
454
  }
455
 
456
 
@@ -554,7 +569,7 @@ function newsletter_send_confirmation($subscriber) {
554
  if ($html == null) $html = '{message}';
555
 
556
  $message = str_replace('{message}', $message, $html);
557
-
558
  // The full URL to the confirmation page
559
  $url = newsletter_add_qs($options['url'], 'na=c&amp;ni=' . $subscriber->id .
560
  '&amp;nt=' . $subscriber->token);
@@ -569,7 +584,10 @@ function newsletter_send_confirmation($subscriber) {
569
 
570
  $subject = newsletter_replace($options['confirmation_subject'], $subscriber);
571
 
 
572
  newsletter_mail($subscriber->email, $subject, $message);
 
 
573
  }
574
 
575
  /**
@@ -709,7 +727,7 @@ function newsletter_init() {
709
  if ($action == 'c') {
710
  $id = $_REQUEST['ni'];
711
  newsletter_confirm($id, $_REQUEST['nt']);
712
- header('Location: ' . newsletter_add_qs($options['url'], 'na=cs&ni=' . $id, false));
713
  die();
714
  }
715
 
@@ -717,6 +735,7 @@ function newsletter_init() {
717
  // Redirect is sent by action "c".
718
  if ($action == 'cs') {
719
  $newsletter_subscriber = newsletter_get_subscriber($_REQUEST['ni']);
 
720
  $newsletter_step = 'confirmed';
721
  }
722
 
@@ -727,79 +746,6 @@ function newsletter_init() {
727
  $newsletter_step = 'unsubscription';
728
  }
729
 
730
- /*
731
- // Export for Zanzara
732
- if ($action == 'z') {
733
- if (!$_GET['nk'] || $_GET['nk'] != $options['key']) return;
734
-
735
- $options_email = get_option('newsletter_email');
736
- header('Content-Type: text/xml;charset=UTF-8');
737
-
738
- echo '<' . '?xml version="1.0" encoding="UTF-8"?' . '>' . "\n";
739
- echo '<java version="1.6.0_12" class="java.beans.XMLDecoder">' . "\n";
740
- echo '<object class="zanzara.Newsletter">' . "\n";
741
-
742
- echo '<void property="message">' . "\n";
743
- echo '<string><![CDATA['. $options_email['message'] . ']]></string>' . "\n";
744
- echo '</void>' . "\n";
745
- echo '<void property="newsletterUrl">' . "\n";
746
- echo '<string><![CDATA['. $options['url'] . ']]></string>' . "\n";
747
- echo '</void>' . "\n";
748
- echo '<void property="fromEmail">' . "\n";
749
- echo '<string><![CDATA['. $options['from_email'] . ']]></string>' . "\n";
750
- echo '</void>' . "\n";
751
- echo '<void property="fromName">' . "\n";
752
- echo '<string><![CDATA['. $options['from_name'] . ']]></string>' . "\n";
753
- echo '</void>' . "\n";
754
- echo '<void property="homeUrl">' . "\n";
755
- echo '<string><![CDATA['. get_option('home') . ']]></string>' . "\n";
756
- echo '</void>' . "\n";
757
- echo '<void property="blogTitle">' . "\n";
758
- echo '<string><![CDATA['. get_option('blogname') . ']]></string>' . "\n";
759
- echo '</void>' . "\n";
760
-
761
- echo '<void property="subject">' . "\n";
762
- echo '<string><![CDATA[' . $options_email['subject'] . ']]></string>' . "\n";
763
- echo '</void>' . "\n";
764
-
765
- echo '<void property="smtpHost">' . "\n";
766
- echo '<string><![CDATA[' . $options['smtp_host'] . ']]></string>' . "\n";
767
- echo '</void>' . "\n";
768
- echo '<void property="smtpUser">' . "\n";
769
- echo '<string><![CDATA[' . $options['smtp_user'] . ']]></string>' . "\n";
770
- echo '</void>' . "\n";
771
- echo '<void property="smtpPassword">' . "\n";
772
- echo '<string><![CDATA[' . $options['smtp_password'] . ']]></string>' . "\n";
773
- echo '</void>' . "\n";
774
-
775
- echo '<void property="recipients">' . "\n";
776
- echo '<string><![CDATA[';
777
-
778
- $query = "select * from " . $wpdb->prefix . "newsletter where status='C'";
779
- $recipients = $wpdb->get_results($query . " order by email");
780
- for ($i=0; $i<count($recipients); $i++) {
781
- echo $recipients[$i]->email . ';' . $recipients[$i]->name .
782
- ';' . $recipients[$i]->token . ';' . $recipients[$i]->id . ';' . $recipients[$i]->group . "\n";
783
- }
784
- echo ']]></string>' . "\n";
785
- echo '</void>' . "\n";
786
-
787
- echo '<void property="testRecipients">' . "\n";
788
- echo '<string><![CDATA[';
789
- for ($i=1; $i<=10; $i++) {
790
- if (!$options_email['test_email_' . $i]) continue;
791
- echo $options_email['test_email_' . $i] . ';' . $options_email['test_name_' . $i] .
792
- ';FAKETOKEN;0;0' . "\n";
793
- }
794
- echo ']]></string>' . "\n";
795
- echo '</void>' . "\n";
796
-
797
- echo '</object>' . "\n";
798
- echo '</java>' . "\n";
799
- die();
800
- }
801
- */
802
-
803
  // User confirmed he want to unsubscribe clicking the link on unsubscription
804
  // page
805
  if ($action == 'uc') {
@@ -822,6 +768,8 @@ function newsletter_unsubscribe($id, $token) {
822
  $wpdb->query($wpdb->prepare("delete from " . $wpdb->prefix . "newsletter where id=%d" .
823
  " and token=%s", $id, $token));
824
 
 
 
825
  $html = newsletter_get_theme_html($options['theme']);
826
  if ($html == null) $html = '{message}';
827
  $message = str_replace('{message}', $options['unsubscribed_message'], $html);
@@ -835,7 +783,10 @@ function newsletter_unsubscribe($id, $token) {
835
 
836
  $subject = newsletter_replace($options['unsubscribed_subject'], $newsletter_subscriber);
837
 
 
838
  newsletter_mail($newsletter_subscriber->email, $subject, $message);
 
 
839
 
840
 
841
  // Admin notification
@@ -918,8 +869,9 @@ function newsletter_send_welcome($subscriber) {
918
  $message = newsletter_replace_url($message, 'UNSUBSCRIPTION_URL', $url);
919
 
920
  $subject = newsletter_replace($options['confirmed_subject'], $subscriber);
921
-
922
  newsletter_mail($subscriber->email, $subject, $message);
 
923
  }
924
 
925
  /*
@@ -947,15 +899,19 @@ function newsletter_notify_admin(&$subject, &$message) {
947
  * The function uses wp_mail() to really send the message.
948
  */
949
  function newsletter_mail($to, &$subject, &$message, $html=true) {
950
- global $wpdb;
951
 
952
  if ($subject == '') {
953
  newsletter_debug(__FUNCTION__, 'Subject empty, skipped');
954
  return true;
955
  }
956
 
957
- $options = get_option('newsletter');
 
 
958
 
 
 
959
  $headers = "MIME-Version: 1.0\n";
960
  if ($html) $headers .= "Content-type: text/html; charset=UTF-8\n";
961
  else $headers .= "Content-type: text/plain; charset=UTF-8\n";
@@ -973,17 +929,23 @@ function newsletter_mail($to, &$subject, &$message, $html=true) {
973
 
974
  add_action('activate_newsletter/plugin.php', 'newsletter_activate');
975
  function newsletter_activate() {
976
- global $wpdb;
977
 
978
- $options = get_option('newsletter');
 
 
 
 
 
 
 
979
 
980
  // Load the default options
981
  @include_once(dirname(__FILE__) . '/languages/en_US_options.php');
982
  if (WPLANG != '') @include_once(dirname(__FILE__) . '/languages/' . WPLANG . '_options.php');
983
  //@include_once(ABSPATH . 'wp-content/newsletter/languages/custom_options.php');
984
 
985
- if (is_array($options)) $options = array_merge($newsletter_default_options, $options);
986
- else $options = $newsletter_default_options;
987
 
988
  // SQL to create the table
989
  $sql = 'create table if not exists ' . $wpdb->prefix . 'newsletter (
@@ -998,7 +960,7 @@ function newsletter_activate() {
998
 
999
  @$wpdb->query($sql);
1000
 
1001
- if (!isset($options['version']) || $options['version'] < '1.4.0') {
1002
 
1003
  $sql = "alter table " . $wpdb->prefix . "newsletter drop primary key";
1004
  @$wpdb->query($sql);
@@ -1019,7 +981,7 @@ function newsletter_activate() {
1019
  @$wpdb->query($sql);
1020
  }
1021
 
1022
- if (!isset($options['version']) || $options['version'] < '1.4.1') {
1023
  $sql = "alter table " . $wpdb->prefix . "newsletter add column created timestamp not null default current_timestamp";
1024
  @$wpdb->query($sql);
1025
  }
@@ -1035,7 +997,8 @@ function newsletter_activate() {
1035
 
1036
  newsletter_info(__FUNCTION__, 'Activated');
1037
 
1038
- $options['version'] = NEWSLETTER;
 
1039
  update_option('newsletter', $options);
1040
 
1041
  if (defined('NEWSLETTER_EXTRAS')) newsletter_extra_activate();
@@ -1044,22 +1007,33 @@ function newsletter_activate() {
1044
  if (is_admin()) {
1045
  add_action('admin_menu', 'newsletter_admin_menu');
1046
  function newsletter_admin_menu() {
 
1047
  $options = get_option('newsletter');
1048
- $level = $options['editor']?7:10;
1049
 
1050
  if (function_exists('add_menu_page')) {
1051
- add_menu_page('Newsletter', 'Newsletter', $level, 'newsletter/options.php', '', '');
1052
  }
1053
 
1054
  if (function_exists('add_submenu_page')) {
1055
- add_submenu_page('newsletter/options.php', 'Configuration', 'Configuration', $level, 'newsletter/options.php');
1056
- add_submenu_page('newsletter/options.php', 'Composer', 'Composer', $level, 'newsletter/newsletter.php');
1057
- add_submenu_page('newsletter/options.php', 'Import', 'Import', $level, 'newsletter/import.php');
1058
- add_submenu_page('newsletter/options.php', 'Export', 'Export', $level, 'newsletter/export.php');
1059
- add_submenu_page('newsletter/options.php', 'Manage', 'Manage', $level, 'newsletter/manage.php');
1060
- add_submenu_page('newsletter/options.php', 'Statistics', 'Statistics', $level, 'newsletter/statistics.php');
1061
- add_submenu_page('newsletter/options.php', 'Forms', 'Forms', $level, 'newsletter/forms.php');
1062
- add_submenu_page('newsletter/options.php', 'Update', 'Update', $level, 'newsletter/convert.php');
 
 
 
 
 
 
 
 
 
 
1063
  }
1064
  }
1065
  }
@@ -1074,6 +1048,9 @@ function newsletter_replace($text, $subscriber) {
1074
  $text = str_replace('{id}', $subscriber->id, $text);
1075
  $text = str_replace('{name}', $subscriber->name, $text);
1076
  $text = str_replace('{token}', $subscriber->token, $text);
 
 
 
1077
  return $text;
1078
  }
1079
 
@@ -1136,20 +1113,18 @@ function newsletter_log($text) {
1136
  }
1137
 
1138
  function newsletter_debug($fn, $text) {
1139
- $options = get_option('newsletter');
1140
- if ($options['logs'] < 2) return;
1141
  newsletter_log('- DEBUG - ' . $fn . ' - ' . $text);
1142
  }
1143
 
1144
  function newsletter_info($fn, $text) {
1145
- $options = get_option('newsletter');
1146
- if ($options['logs'] < 1) return;
1147
  newsletter_log('- INFO - ' . $fn . ' - ' . $text);
1148
  }
1149
 
1150
  function newsletter_error($fn, $text) {
1151
- $options = get_option('newsletter');
1152
- if ($options['logs'] < 1) return;
1153
  newsletter_log('- ERROR - ' . $fn . ' - ' . $text);
1154
  }
1155
 
@@ -1195,7 +1170,7 @@ function newsletter_reset_batch() {
1195
  function newsletter_has_extras($version=null) {
1196
  if (!defined('NEWSLETTER_EXTRAS')) return false;
1197
  if ($version == null) return true;
1198
- if ($version >= NEWSLETTER_EXTRAS) return true;
1199
  return false;
1200
  }
1201
 
@@ -1213,13 +1188,16 @@ function nt_post_image($post_id, $size='thumbnail', $alternative=null) {
1213
 
1214
  foreach ($attachments as $id=>$attachment) {
1215
  $image = wp_get_attachment_image_src($id, $size);
1216
- //$image = $image[0];
1217
  return $image[0];
1218
  }
1219
  return null;
1220
  }
1221
 
1222
  function nt_option($name, $def = null) {
 
 
 
 
1223
  $options = get_option('newsletter_email');
1224
  $option = $options['theme_' . $name];
1225
  if (!isset($option)) return $def;
@@ -1264,8 +1242,7 @@ function newsletter_get_theme_css($theme) {
1264
  return @file_get_contents(newsletter_get_theme_dir($theme) . '/style.css');
1265
  }
1266
 
1267
- function newsletter_get_theme_html($theme)
1268
- {
1269
  if ($theme == 'blank') return '';
1270
  $file = newsletter_get_theme_dir($theme) . '/theme.php';
1271
 
@@ -1276,4 +1253,5 @@ function newsletter_get_theme_html($theme)
1276
  ob_end_clean();
1277
  return $html;
1278
  }
 
1279
  ?>
3
  Plugin Name: Newsletter
4
  Plugin URI: http://www.satollo.net/plugins/newsletter
5
  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>
6
+ Version: 1.5.9
7
  Author: Satollo
8
  Author URI: http://www.satollo.net
9
  Disclaimer: Use at your own risk. No warranty expressed or implied is provided.
26
  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
27
  */
28
 
29
+ define('NEWSLETTER', '1.5.9');
30
 
31
+ $newsletter_options_main = get_option('newsletter_main', array());
32
+
33
+ // Labels loading, after that $newsletter_labels is filled
34
+ $newsletter_labels = null;
35
+ @include_once(dirname(__FILE__) . '/languages/en_US.php');
36
+ if (WPLANG != '') @include_once(dirname(__FILE__) . '/languages/' . WPLANG . '.php');
37
+ @include_once(ABSPATH . 'wp-content/plugins/newsletter-custom/languages/en_US.php');
38
+ if (WPLANG != '') @include_once(ABSPATH . 'wp-content/plugins/newsletter-custom/languages/' . WPLANG . '.php');
39
+
40
+ // Don't try to hack that, Newsletter will badly fail
41
  @include(ABSPATH . 'wp-content/plugins/newsletter-extras/newsletter-extras.php');
42
 
43
  require_once(dirname(__FILE__) . '/widget.php');
44
 
 
45
  $newsletter_step = 'subscription';
46
+ $newsletter_subscriber;
47
 
48
  function newsletter_init_labels() {
 
 
 
 
 
 
49
  }
50
 
51
+ function newsletter_label($name, $default='') {
52
  global $newsletter_labels;
53
 
54
+ if (isset($newsletter_labels[$name])) return $newsletter_labels[$name];
55
+ return $default;
 
56
  }
57
 
58
+ function newsletter_echo($name, $default) {
59
+ echo newsletter_label($name, $default);
60
  }
61
 
62
  function newsletter_request($name, $default=null ) {
132
  else {
133
  $buffer .= newsletter_label('subscription_form');
134
  }
135
+ //if (!defined('NEWSLETTER_EXTRAS'))
136
+ // $buffer .= '<div style="text-align:right;padding:0 10px;margin:0;"><a style="font-size:9px;color:#bbb;text-decoration:none" href="http://www.satollo.net">by satollo.net</a></div>';
137
  }
138
 
139
  }
174
  $buffer .= $text;
175
  }
176
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
177
  return '<div class="newsletter">' . $buffer . '</div>';
178
  }
179
 
180
+ function newsletter_phpmailer_init($phpmailer) {
181
+ $options_email = get_option('newsletter_email');
182
+ $phpmailer->Sender = $options_email['return_path'];
183
+ }
184
+
185
  /**
186
  * Sends out newsletters.
187
  *
242
  $simulate = (bool)$batch['simulate'];
243
  $scheduled = (bool)$batch['scheduled']; // Used to avoid echo
244
 
245
+ if ($scheduled) {
246
+ $max = $options_email['scheduler_max'];
247
+ if (!is_numeric($max)) $max = 10;
248
+ }
249
+ else {
250
+ $max = $options_email['max'];
251
+ if (!is_numeric($max)) $max = 0;
252
+ }
253
+
254
  $query = "select * from " . $wpdb->prefix . "newsletter where status='C' and list=" . $list .
255
  " and id>" . $id . " order by id";
256
+ if ($max > 0) {
257
+ $query .= " limit " . $max;
258
+ }
259
 
260
  $recipients = $wpdb->get_results($query);
261
 
263
  if ($id == 0) {
264
  newsletter_delete_batch_file();
265
  wp_clear_scheduled_hook('newsletter_cron_hook');
266
+ $batch['total'] = $wpdb->get_var("select count(*) from " . $wpdb->prefix . "newsletter where status='C' and list=" . $list);
267
  $batch['sent'] = 0;
268
  $batch['completed'] = false;
269
  $batch['message'] = '';
276
  $max_time = (int)(ini_get('max_execution_time') * 0.8);
277
  $db_time = time();
278
 
279
+
 
 
 
 
 
 
 
280
 
281
  if (!$scheduled) {
282
  echo 'Sending to: <br />';
293
 
294
  $idx = 0;
295
 
296
+ add_action('phpmailer_init','newsletter_phpmailer_init');
297
+ if (newsletter_has_extras('1.0.4')) newsletter_init_mail();
298
  foreach ($recipients as $r) {
299
 
300
  $url = newsletter_add_qs($options['url'],
341
  $batch['message'] = 'Temporary saved batch to avoid database timeout';
342
  if (!update_option('newsletter_batch', $batch)) {
343
  newsletter_error(__FUNCTION__, 'Unable to save to database, saving on file system');
344
+ newsletter_error(__FUNCTION__, "Batch:\n" . print_r($batch, true));
345
 
346
  newsletter_save_batch_file($batch);
347
+ remove_action('phpmailer_init','newsletter_phpmailer_init');
348
+ if (newsletter_has_extras('1.0.4')) newsletter_close_mail();
349
  return false;
350
  }
351
  }
356
  $batch['message'] = 'Batch max emails limit reached (it is ok)';
357
  if (!update_option('newsletter_batch', $batch)) {
358
  newsletter_error(__FUNCTION__, 'Unable to save to database, saving on file system');
359
+ newsletter_error(__FUNCTION__, "Batch:\n" . print_r($batch, true));
360
 
361
  newsletter_save_batch_file($batch);
362
+ remove_action('phpmailer_init','newsletter_phpmailer_init');
363
+ if (newsletter_has_extras('1.0.4')) newsletter_close_mail();
364
+
365
  return false;
366
  }
367
+
368
+ remove_action('phpmailer_init','newsletter_phpmailer_init');
369
+ if (newsletter_has_extras('1.0.4')) newsletter_close_mail();
370
+
371
  return true;
372
  }
373
 
380
  newsletter_error(__FUNCTION__, "Batch:\n" . print_r($last, true));
381
 
382
  newsletter_save_batch_file($batch);
383
+ remove_action('phpmailer_init','newsletter_phpmailer_init');
384
+ if (newsletter_has_extras('1.0.4')) newsletter_close_mail();
385
+
386
  return false;
387
  }
388
+
389
+ remove_action('phpmailer_init','newsletter_phpmailer_init');
390
+ if (newsletter_has_extras('1.0.4')) newsletter_close_mail();
391
  return true;
392
  }
393
  }
395
  // All right (incredible!)
396
  newsletter_info(__FUNCTION__, 'Sending completed!');
397
  $batch['completed'] = true;
398
+ $batch['message'] = '';
399
  if (!update_option('newsletter_batch', $batch)) {
400
  newsletter_error(__FUNCTION__, 'Unable to save to database, saving on file system');
401
  newsletter_error(__FUNCTION__, "Batch:\n" . print_r($last, true));
402
 
403
  newsletter_save_batch_file($batch);
404
+ remove_action('phpmailer_init','newsletter_phpmailer_init');
405
+ if (newsletter_has_extras('1.0.4')) newsletter_close_mail();
406
+
407
  return false;
408
  }
409
 
410
+ remove_action('phpmailer_init','newsletter_phpmailer_init');
411
+ if (newsletter_has_extras('1.0.4')) newsletter_close_mail();
412
  return true;
413
  }
414
 
436
  '</style></head><body>' . $options_email['message'] . '</body></html>';
437
  }
438
 
439
+ if (newsletter_has_extras('1.0.4')) newsletter_init_mail();
440
  foreach ($recipients as $r) {
441
 
442
  $url = newsletter_add_qs($options['url'],
458
 
459
  if ($x) {
460
  echo '[OK] -- ';
461
+ newsletter_debug(__FUNCTION__, 'Sent to ' . $r->id . ' success');
462
  } else {
463
  echo '[KO] -- ';
464
+ newsletter_debug(__FUNCTION__, 'Sent to ' . $r->id . ' failed');
465
  }
 
466
  }
467
+ if (newsletter_has_extras('1.0.4')) newsletter_close_mail();
468
+
469
  }
470
 
471
 
569
  if ($html == null) $html = '{message}';
570
 
571
  $message = str_replace('{message}', $message, $html);
572
+
573
  // The full URL to the confirmation page
574
  $url = newsletter_add_qs($options['url'], 'na=c&amp;ni=' . $subscriber->id .
575
  '&amp;nt=' . $subscriber->token);
584
 
585
  $subject = newsletter_replace($options['confirmation_subject'], $subscriber);
586
 
587
+ if (newsletter_has_extras('1.0.4')) newsletter_init_mail();
588
  newsletter_mail($subscriber->email, $subject, $message);
589
+ if (newsletter_has_extras('1.0.4')) newsletter_close_mail();
590
+
591
  }
592
 
593
  /**
727
  if ($action == 'c') {
728
  $id = $_REQUEST['ni'];
729
  newsletter_confirm($id, $_REQUEST['nt']);
730
+ header('Location: ' . newsletter_add_qs($options['url'], 'na=cs&ni=' . $id . '&nt=' . $_REQUEST['nt'], false));
731
  die();
732
  }
733
 
735
  // Redirect is sent by action "c".
736
  if ($action == 'cs') {
737
  $newsletter_subscriber = newsletter_get_subscriber($_REQUEST['ni']);
738
+ if ($newsletter_subscriber->token != $_REQUEST['nt']) die('Ivalid token');
739
  $newsletter_step = 'confirmed';
740
  }
741
 
746
  $newsletter_step = 'unsubscription';
747
  }
748
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
749
  // User confirmed he want to unsubscribe clicking the link on unsubscription
750
  // page
751
  if ($action == 'uc') {
768
  $wpdb->query($wpdb->prepare("delete from " . $wpdb->prefix . "newsletter where id=%d" .
769
  " and token=%s", $id, $token));
770
 
771
+ $options = get_option('newsletter');
772
+
773
  $html = newsletter_get_theme_html($options['theme']);
774
  if ($html == null) $html = '{message}';
775
  $message = str_replace('{message}', $options['unsubscribed_message'], $html);
783
 
784
  $subject = newsletter_replace($options['unsubscribed_subject'], $newsletter_subscriber);
785
 
786
+ if (newsletter_has_extras('1.0.4')) newsletter_init_mail();
787
  newsletter_mail($newsletter_subscriber->email, $subject, $message);
788
+ if (newsletter_has_extras('1.0.4')) newsletter_close_mail();
789
+
790
 
791
 
792
  // Admin notification
869
  $message = newsletter_replace_url($message, 'UNSUBSCRIPTION_URL', $url);
870
 
871
  $subject = newsletter_replace($options['confirmed_subject'], $subscriber);
872
+ if (newsletter_has_extras('1.0.4')) newsletter_init_mail();
873
  newsletter_mail($subscriber->email, $subject, $message);
874
+ if (newsletter_has_extras('1.0.4')) newsletter_close_mail();
875
  }
876
 
877
  /*
899
  * The function uses wp_mail() to really send the message.
900
  */
901
  function newsletter_mail($to, &$subject, &$message, $html=true) {
902
+ global $newsletter_mailer, $newsletter_options_main;
903
 
904
  if ($subject == '') {
905
  newsletter_debug(__FUNCTION__, 'Subject empty, skipped');
906
  return true;
907
  }
908
 
909
+ if (newsletter_has_extras('1.0.4')) {
910
+ return newsletter_extra_mail($to, &$subject, &$message, $html);
911
+ }
912
 
913
+ $options = get_option('newsletter');
914
+
915
  $headers = "MIME-Version: 1.0\n";
916
  if ($html) $headers .= "Content-type: text/html; charset=UTF-8\n";
917
  else $headers .= "Content-type: text/plain; charset=UTF-8\n";
929
 
930
  add_action('activate_newsletter/plugin.php', 'newsletter_activate');
931
  function newsletter_activate() {
932
+ global $wpdb, $newsletter_options_main;
933
 
934
+ $options = get_option('newsletter', array());
935
+
936
+ if (NEWSLETTER >= '1.5.2') {
937
+ if (isset($options['logs'])) $newsletter_options_main['logs'] = $options['logs'];
938
+ if (isset($options['editor'])) $newsletter_options_main['editor'] = $options['editor'];
939
+ if (isset($options['version'])) $newsletter_options_main['version'] = $options['version'];
940
+ if (isset($options['no_translation'])) $newsletter_options_main['no_translation'] = $options['no_translation'];
941
+ }
942
 
943
  // Load the default options
944
  @include_once(dirname(__FILE__) . '/languages/en_US_options.php');
945
  if (WPLANG != '') @include_once(dirname(__FILE__) . '/languages/' . WPLANG . '_options.php');
946
  //@include_once(ABSPATH . 'wp-content/newsletter/languages/custom_options.php');
947
 
948
+ $options = array_merge($newsletter_default_options, $options);
 
949
 
950
  // SQL to create the table
951
  $sql = 'create table if not exists ' . $wpdb->prefix . 'newsletter (
960
 
961
  @$wpdb->query($sql);
962
 
963
+ if (!isset($newsletter_options_main['version']) || $newsletter_options_main['version'] < '1.4.0') {
964
 
965
  $sql = "alter table " . $wpdb->prefix . "newsletter drop primary key";
966
  @$wpdb->query($sql);
981
  @$wpdb->query($sql);
982
  }
983
 
984
+ if (!isset($newsletter_options_main['version']) || $newsletter_options_main['version'] < '1.4.1') {
985
  $sql = "alter table " . $wpdb->prefix . "newsletter add column created timestamp not null default current_timestamp";
986
  @$wpdb->query($sql);
987
  }
997
 
998
  newsletter_info(__FUNCTION__, 'Activated');
999
 
1000
+ $newsletter_options_main['version'] = NEWSLETTER;
1001
+ update_option('newsletter_main', $newsletter_options_main);
1002
  update_option('newsletter', $options);
1003
 
1004
  if (defined('NEWSLETTER_EXTRAS')) newsletter_extra_activate();
1007
  if (is_admin()) {
1008
  add_action('admin_menu', 'newsletter_admin_menu');
1009
  function newsletter_admin_menu() {
1010
+ global $newsletter_options_main;
1011
  $options = get_option('newsletter');
1012
+ $level = ($newsletter_options_main['editor']==1)?7:10;
1013
 
1014
  if (function_exists('add_menu_page')) {
1015
+ add_menu_page('Newsletter', 'Newsletter', $level, 'newsletter/main.php', '', '');
1016
  }
1017
 
1018
  if (function_exists('add_submenu_page')) {
1019
+ add_submenu_page('newsletter/main.php', 'Configuration', 'Configuration', $level, 'newsletter/main.php');
1020
+ add_submenu_page('newsletter/main.php', 'Subscription', 'Subscription', $level, 'newsletter/options.php');
1021
+ add_submenu_page('newsletter/main.php', 'Composer', 'Composer', $level, 'newsletter/newsletter.php');
1022
+ add_submenu_page('newsletter/main.php', 'Statistics', 'Statistics', $level, 'newsletter/statistics.php');
1023
+ add_submenu_page('newsletter/main.php', 'Subscribers', 'Subscribers', $level, 'newsletter/manage.php');
1024
+ add_submenu_page('newsletter/main.php', 'Import', 'Import', $level, 'newsletter/import.php');
1025
+ add_submenu_page('newsletter/main.php', 'Export', 'Export', $level, 'newsletter/export.php');
1026
+ add_submenu_page('newsletter/main.php', 'Forms', 'Forms', $level, 'newsletter/forms.php');
1027
+ add_submenu_page('newsletter/main.php', 'SMTP', 'SMTP', $level, 'newsletter/smtp.php');
1028
+ add_submenu_page('newsletter/main.php', 'Update', 'Update', $level, 'newsletter/convert.php');
1029
+ }
1030
+ }
1031
+
1032
+ add_action('admin_head', 'newsletter_admin_head');
1033
+ function newsletter_admin_head() {
1034
+ if (strpos($_GET['page'], 'newsletter/') === 0) {
1035
+ echo '<link type="text/css" rel="stylesheet" href="' .
1036
+ get_option('siteurl') . '/wp-content/plugins/newsletter/style.css"/>';
1037
  }
1038
  }
1039
  }
1048
  $text = str_replace('{id}', $subscriber->id, $text);
1049
  $text = str_replace('{name}', $subscriber->name, $text);
1050
  $text = str_replace('{token}', $subscriber->token, $text);
1051
+ $text = str_replace('%7Btoken%7D', $subscriber->token, $text);
1052
+ $text = str_replace('%7Bid%7D', $subscriber->id, $text);
1053
+
1054
  return $text;
1055
  }
1056
 
1113
  }
1114
 
1115
  function newsletter_debug($fn, $text) {
1116
+ global $newsletter_options_main;
1117
+ if ($newsletter_options_main['logs'] < 2) return;
1118
  newsletter_log('- DEBUG - ' . $fn . ' - ' . $text);
1119
  }
1120
 
1121
  function newsletter_info($fn, $text) {
1122
+ if ($newsletter_options_main['logs'] < 1) return;
 
1123
  newsletter_log('- INFO - ' . $fn . ' - ' . $text);
1124
  }
1125
 
1126
  function newsletter_error($fn, $text) {
1127
+ if ($newsletter_options_main['logs'] < 1) return;
 
1128
  newsletter_log('- ERROR - ' . $fn . ' - ' . $text);
1129
  }
1130
 
1170
  function newsletter_has_extras($version=null) {
1171
  if (!defined('NEWSLETTER_EXTRAS')) return false;
1172
  if ($version == null) return true;
1173
+ if ($version <= NEWSLETTER_EXTRAS) return true;
1174
  return false;
1175
  }
1176
 
1188
 
1189
  foreach ($attachments as $id=>$attachment) {
1190
  $image = wp_get_attachment_image_src($id, $size);
 
1191
  return $image[0];
1192
  }
1193
  return null;
1194
  }
1195
 
1196
  function nt_option($name, $def = null) {
1197
+ // if ($newsletter_is_feed && $name == 'posts') {
1198
+ // $options = get_option('newsletter_feed');
1199
+ // return $options['posts'];
1200
+ // }
1201
  $options = get_option('newsletter_email');
1202
  $option = $options['theme_' . $name];
1203
  if (!isset($option)) return $def;
1242
  return @file_get_contents(newsletter_get_theme_dir($theme) . '/style.css');
1243
  }
1244
 
1245
+ function newsletter_get_theme_html($theme) {
 
1246
  if ($theme == 'blank') return '';
1247
  $file = newsletter_get_theme_dir($theme) . '/theme.php';
1248
 
1253
  ob_end_clean();
1254
  return $html;
1255
  }
1256
+
1257
  ?>
readme.txt CHANGED
@@ -2,7 +2,7 @@
2
  === Newsletter ===
3
  Tags: newsletter,email,subscription,mass mail
4
  Requires at least: 2.7
5
- Tested up to: 2.9.1
6
  Stable tag: trunk
7
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=2545483
8
  Contributors: satollo
@@ -26,17 +26,6 @@ with subscriber name.
26
 
27
  More on Newsletter plug-in official page (http://www.satollo.net/plugins/newsletter).
28
 
29
-
30
-
31
- **Check out my other plug-ins**:
32
-
33
- * [Hyper Cache](http://www.satollo.net/plugins/hyper-cache)
34
- * [Post Layout](http://www.satollo.net/plugins/post-layout)
35
- * [Post Layout Pro](http://www.satollo.net/plugins/post-layout-pro)
36
- * [Other Posts](http://www.satollo.net/plugins/other-posts)
37
- * [Feed Layout](http://www.satollo.com/english/wordpress/feed-layout "Feed Layout WordPress plug-in: the easy way to enrich your feed contents")
38
- * [Dynatags](http://www.satollo.net/plugins/dynatags "Dynatags WordPress plug-in: Create your own custom short tag in seconds")
39
-
40
  == Installation ==
41
 
42
  1. Put the plug-in folder into [wordpress_dir]/wp-content/plugins/
@@ -47,11 +36,7 @@ More on Newsletter plug-in official page (http://www.satollo.net/plugins/newslet
47
 
48
  **How can I submit a bug?**
49
 
50
- Write me at info@satollo.com, please. It is the most expedient way to get a bug fixed. You can write on the WordPress forum also, but I read it rarely.
51
-
52
- **Do you give support?**
53
-
54
- Sorry, not at this time. Not even if you try to tempt me with money. I do not have enough spare time to provide answers without a lengthy delay.
55
 
56
  == Screen shots ==
57
 
2
  === Newsletter ===
3
  Tags: newsletter,email,subscription,mass mail
4
  Requires at least: 2.7
5
+ Tested up to: 2.9.2
6
  Stable tag: trunk
7
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=2545483
8
  Contributors: satollo
26
 
27
  More on Newsletter plug-in official page (http://www.satollo.net/plugins/newsletter).
28
 
 
 
 
 
 
 
 
 
 
 
 
29
  == Installation ==
30
 
31
  1. Put the plug-in folder into [wordpress_dir]/wp-content/plugins/
36
 
37
  **How can I submit a bug?**
38
 
39
+ This is your page: (http://www.satollo.net/newsletter-help)
 
 
 
 
40
 
41
  == Screen shots ==
42
 
smtp.php ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ @include_once 'commons.php';
3
+ ?>
4
+
5
+ <div class="wrap">
6
+
7
+ <h2><?php _e('Newsletter SMTP', 'newsletter'); ?></h2>
8
+
9
+ <?php if (newsletter_has_extras('1.0.4')) { ?>
10
+ <?php require_once ABSPATH . 'wp-content/plugins/newsletter-extras/smtp.php'; ?>
11
+ <?php } else { ?>
12
+ <strong>You need <a href="http://www.satollo.net/plugins/newsletter-extras">Newsletter Extras 1.0.4+</a> installed to configure SMTP</strong>
13
+ <?php } ?>
14
+
15
+ </div>
statistics.php CHANGED
@@ -1,11 +1,15 @@
 
 
 
 
1
  <div class="wrap">
2
 
3
- <h2>Statistics</h2>
4
 
5
- <?php if (!defined('NEWSLETTER_EXTRAS')) { ?>
6
- <strong>You need the <a href="http://www.satollo.net/plugins/newsletter/extras">Newsletter Extras</a> installed to view statistics</strong>
7
- <?php } else { ?>
8
- <?php require_once ABSPATH . 'wp-content/plugins/newsletter-extras/statistics.php'; ?>
9
- <?php } ?>
10
 
11
  </div>
1
+ <?php
2
+ @include_once 'commons.php';
3
+ ?>
4
+
5
  <div class="wrap">
6
 
7
+ <h2><?php _e('Newsletter Statistics', 'newsletter'); ?></h2>
8
 
9
+ <?php if (!defined('NEWSLETTER_EXTRAS')) { ?>
10
+ <strong>You need the <a href="http://www.satollo.net/plugins/newsletter-extras">Newsletter Extras</a> installed to view statistics</strong>
11
+ <?php } else { ?>
12
+ <?php require_once ABSPATH . 'wp-content/plugins/newsletter-extras/statistics.php'; ?>
13
+ <?php } ?>
14
 
15
  </div>
style.css ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ h3 {
3
+ margin-bottom: 0px;
4
+ margin-top: 30px;
5
+ font-family: Georgia;
6
+ font-size: 15px;
7
+ }
8
+ h4 {
9
+ font-size: 1.3em;
10
+ border-bottom: 1px solid #999;
11
+ }
12
+ .form-table {
13
+ border: 1px solid #ccc;
14
+ background-color: #fff;
15
+ }
16
+
17
+ .form-table th {
18
+ text-align: right;
19
+ font-weight: bold;
20
+ border-right: 1px solid #ccc;
21
+ }
22
+ .form-table th small {
23
+ font-weight: normal;
24
+ }
25
+
26
+ p.submit {
27
+ margin-top: 5px;
28
+ padding: 5px;
29
+ }
30
+
31
+ .bordered-table {
32
+ border-collapse: collapse;
33
+ }
34
+
35
+ .bordered-table td, .bordered-table th {
36
+ border: 1px solid #ccc;
37
+ padding: 3px;
38
+ }
39
+
40
+ table.clicks td {
41
+ border: 1px solid #666;
42
+ padding: 2px;
43
+ font-size: 10px;
44
+ }
45
+
46
+ table.clicks {
47
+ border-collapse: collapse;
48
+ }
themes/feed-by-mail/style.css ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ body, td {
2
+ font-family: verdana;
3
+ font-size: 12px;
4
+ }
5
+
themes/feed-by-mail/theme.php ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $posts = new WP_Query();
3
+ $posts->query(array('showposts'=>10, 'post_status'=>'publish'));
4
+ ?>
5
+
6
+ <h1><?php echo get_option('blogname'); ?></h1>
7
+
8
+ <?php
9
+ while ($posts->have_posts())
10
+ {
11
+ $posts->the_post();
12
+ $image = nt_post_image(get_the_ID());
13
+ ?>
14
+ <h2><a href="<?php echo get_permalink(); ?>"><?php the_title(); ?></a></h2>
15
+ <?php if ($image != null) { ?>
16
+ <img src="<?php echo $image; ?>" alt="COOL PHOTO" align="left" width="100" hspace="10"/>
17
+ <?php } ?>
18
+ <?php the_excerpt(); ?>
19
+ <br clear="both"/>
20
+ <?php
21
+ }
22
+ ?>
23
+
24
+ <p><small>To unsubscribe this newsletter, <a href="{unsubscription_url}">click here</a>.</small></p>
tiny_mce/langs/en.js CHANGED
@@ -120,7 +120,9 @@ col:"Column",
120
  cell:"Cell"
121
  },
122
  autosave:{
123
- unload_msg:"The changes you made will be lost if you navigate away from this page."
 
 
124
  },
125
  fullscreen:{
126
  desc:"Toggle fullscreen mode"
@@ -151,4 +153,17 @@ no_mpell:"No misspellings found."
151
  },
152
  pagebreak:{
153
  desc:"Insert page break."
154
- }}});
 
 
 
 
 
 
 
 
 
 
 
 
 
120
  cell:"Cell"
121
  },
122
  autosave:{
123
+ unload_msg:"The changes you made will be lost if you navigate away from this page.",
124
+ restore_content: "Restore auto-saved content",
125
+ warning_message: "If you restore the saved content, you will lose all the content that is currently in the editor.\n\nAre you sure you want to restore the saved content?"
126
  },
127
  fullscreen:{
128
  desc:"Toggle fullscreen mode"
153
  },
154
  pagebreak:{
155
  desc:"Insert page break."
156
+ },
157
+ advlist : {
158
+ types : 'Types',
159
+ def : 'Default',
160
+ lower_alpha : "Lower alpha",
161
+ lower_greek : "Lower greek",
162
+ lower_roman : "Lower roman",
163
+ upper_alpha : "Upper alpha",
164
+ upper_roman : "Upper roman",
165
+ circle : "Circle",
166
+ disc : "Disc",
167
+ square : "Square"
168
+ }
169
+ }});
tiny_mce/themes/advanced/img/icons.gif CHANGED
Binary file
tiny_mce/themes/advanced/js/anchor.js CHANGED
@@ -26,7 +26,7 @@ var AnchorDialog = {
26
 
27
  // Webkit acts weird if empty inline element is inserted so we need to use a image instead
28
  if (tinymce.isWebKit)
29
- ed.execCommand('mceInsertContent', 0, ed.dom.createHTML('img', {mce_name : 'a', name : document.forms[0].anchorName.value, 'class' : 'mceItemAnchor'}));
30
  else
31
  ed.execCommand('mceInsertContent', 0, ed.dom.createHTML('a', {name : document.forms[0].anchorName.value, 'class' : 'mceItemAnchor'}, ''));
32
 
26
 
27
  // Webkit acts weird if empty inline element is inserted so we need to use a image instead
28
  if (tinymce.isWebKit)
29
+ ed.execCommand('mceInsertContent', 0, ed.dom.createHTML('img', {_mce_name : 'a', name : document.forms[0].anchorName.value, 'class' : 'mceItemAnchor'}));
30
  else
31
  ed.execCommand('mceInsertContent', 0, ed.dom.createHTML('a', {name : document.forms[0].anchorName.value, 'class' : 'mceItemAnchor'}, ''));
32
 
tiny_mce/themes/advanced/js/charmap.js CHANGED
@@ -1,3 +1,13 @@
 
 
 
 
 
 
 
 
 
 
1
  tinyMCEPopup.requireLangPack();
2
 
3
  var charmap = [
1
+ /**
2
+ * charmap.js
3
+ *
4
+ * Copyright 2009, Moxiecode Systems AB
5
+ * Released under LGPL License.
6
+ *
7
+ * License: http://tinymce.moxiecode.com/license
8
+ * Contributing: http://tinymce.moxiecode.com/contributing
9
+ */
10
+
11
  tinyMCEPopup.requireLangPack();
12
 
13
  var charmap = [
tiny_mce/themes/advanced/js/image.js CHANGED
@@ -151,8 +151,8 @@ var ImageDialog = {
151
  }
152
 
153
  // Merge
154
- st = tinyMCEPopup.dom.parseStyle(dom.serializeStyle(st));
155
- this.styleVal = dom.serializeStyle(st);
156
  }
157
  },
158
 
151
  }
152
 
153
  // Merge
154
+ st = tinyMCEPopup.dom.parseStyle(dom.serializeStyle(st), 'img');
155
+ this.styleVal = dom.serializeStyle(st, 'img');
156
  }
157
  },
158
 
tiny_mce/themes/advanced/js/link.js CHANGED
@@ -63,8 +63,8 @@ var LinkDialog = {
63
  ed.dom.setAttribs(e, {
64
  href : f.href.value,
65
  title : f.linktitle.value,
66
- target : f.target_list ? f.target_list.options[f.target_list.selectedIndex].value : null,
67
- 'class' : f.class_list ? f.class_list.options[f.class_list.selectedIndex].value : null
68
  });
69
  }
70
  });
@@ -72,8 +72,8 @@ var LinkDialog = {
72
  ed.dom.setAttribs(e, {
73
  href : f.href.value,
74
  title : f.linktitle.value,
75
- target : f.target_list ? f.target_list.options[f.target_list.selectedIndex].value : null,
76
- 'class' : f.class_list ? f.class_list.options[f.class_list.selectedIndex].value : null
77
  });
78
  }
79
 
63
  ed.dom.setAttribs(e, {
64
  href : f.href.value,
65
  title : f.linktitle.value,
66
+ target : f.target_list ? getSelectValue(f, "target_list") : null,
67
+ 'class' : f.class_list ? getSelectValue(f, "class_list") : null
68
  });
69
  }
70
  });
72
  ed.dom.setAttribs(e, {
73
  href : f.href.value,
74
  title : f.linktitle.value,
75
+ target : f.target_list ? getSelectValue(f, "target_list") : null,
76
+ 'class' : f.class_list ? getSelectValue(f, "class_list") : null
77
  });
78
  }
79
 
tiny_mce/utils/editable_selects.js CHANGED
@@ -1,10 +1,11 @@
1
  /**
2
- * $Id: editable_selects.js 867 2008-06-09 20:33:40Z spocke $
3
  *
4
- * Makes select boxes editable.
 
5
  *
6
- * @author Moxiecode
7
- * @copyright Copyright � 2004-2008, Moxiecode Systems AB, All rights reserved.
8
  */
9
 
10
  var TinyMCE_EditableSelects = {
1
  /**
2
+ * editable_selects.js
3
  *
4
+ * Copyright 2009, Moxiecode Systems AB
5
+ * Released under LGPL License.
6
  *
7
+ * License: http://tinymce.moxiecode.com/license
8
+ * Contributing: http://tinymce.moxiecode.com/contributing
9
  */
10
 
11
  var TinyMCE_EditableSelects = {
tiny_mce/utils/form_utils.js CHANGED
@@ -1,10 +1,11 @@
1
  /**
2
- * $Id: form_utils.js 996 2009-02-06 17:32:20Z spocke $
3
  *
4
- * Various form utilitiy functions.
 
5
  *
6
- * @author Moxiecode
7
- * @copyright Copyright � 2004-2008, Moxiecode Systems AB, All rights reserved.
8
  */
9
 
10
  var themeBaseURL = tinyMCEPopup.editor.baseURI.toAbsolute('themes/' + tinyMCEPopup.getParam("theme"));
@@ -92,7 +93,7 @@ function selectByValue(form_obj, field_name, value, add_custom, ignore_case) {
92
  function getSelectValue(form_obj, field_name) {
93
  var elm = form_obj.elements[field_name];
94
 
95
- if (elm == null || elm.options == null)
96
  return "";
97
 
98
  return elm.options[elm.selectedIndex].value;
1
  /**
2
+ * form_utils.js
3
  *
4
+ * Copyright 2009, Moxiecode Systems AB
5
+ * Released under LGPL License.
6
  *
7
+ * License: http://tinymce.moxiecode.com/license
8
+ * Contributing: http://tinymce.moxiecode.com/contributing
9
  */
10
 
11
  var themeBaseURL = tinyMCEPopup.editor.baseURI.toAbsolute('themes/' + tinyMCEPopup.getParam("theme"));
93
  function getSelectValue(form_obj, field_name) {
94
  var elm = form_obj.elements[field_name];
95
 
96
+ if (elm == null || elm.options == null || elm.selectedIndex === -1)
97
  return "";
98
 
99
  return elm.options[elm.selectedIndex].value;
tiny_mce/utils/mctabs.js CHANGED
@@ -1,10 +1,11 @@
1
  /**
2
- * $Id: mctabs.js 758 2008-03-30 13:53:29Z spocke $
3
  *
4
- * Moxiecode DHTML Tabs script.
 
5
  *
6
- * @author Moxiecode
7
- * @copyright Copyright � 2004-2008, Moxiecode Systems AB, All rights reserved.
8
  */
9
 
10
  function MCTabs() {
1
  /**
2
+ * mctabs.js
3
  *
4
+ * Copyright 2009, Moxiecode Systems AB
5
+ * Released under LGPL License.
6
  *
7
+ * License: http://tinymce.moxiecode.com/license
8
+ * Contributing: http://tinymce.moxiecode.com/contributing
9
  */
10
 
11
  function MCTabs() {
tiny_mce/utils/validate.js CHANGED
@@ -1,10 +1,11 @@
1
  /**
2
- * $Id: validate.js 758 2008-03-30 13:53:29Z spocke $
3
  *
4
- * Various form validation methods.
 
5
  *
6
- * @author Moxiecode
7
- * @copyright Copyright � 2004-2008, Moxiecode Systems AB, All rights reserved.
8
  */
9
 
10
  /**
1
  /**
2
+ * validate.js
3
  *
4
+ * Copyright 2009, Moxiecode Systems AB
5
+ * Released under LGPL License.
6
  *
7
+ * License: http://tinymce.moxiecode.com/license
8
+ * Contributing: http://tinymce.moxiecode.com/contributing
9
  */
10
 
11
  /**
widget.php CHANGED
@@ -32,8 +32,11 @@ function widget_newsletter_init() {
32
  }
33
  $buffer = str_replace('{text}', $optionsw['text'], $buffer);
34
  $buffer = str_replace('{count}', newsletter_subscribers_count(), $buffer);
35
- if (defined('NEWSLETTER_EXTRAS')) echo $buffer;
36
- else echo $buffer . '<div style="text-align:right;padding:0 10px;margin:0;"><a style="font-size:9px;color:#bbb;text-decoration:none" href="http://www.satollo.net">by satollo.net</a></div>';
 
 
 
37
 
38
  echo $after_widget;
39
  }
32
  }
33
  $buffer = str_replace('{text}', $optionsw['text'], $buffer);
34
  $buffer = str_replace('{count}', newsletter_subscribers_count(), $buffer);
35
+
36
+ //if (defined('NEWSLETTER_EXTRAS')) echo $buffer;
37
+ //else echo $buffer . '<div style="text-align:right;padding:0 10px;margin:0;"><a style="font-size:9px;color:#bbb;text-decoration:none" href="http://www.satollo.net">by satollo.net</a></div>';
38
+
39
+ echo $buffer;
40
 
41
  echo $after_widget;
42
  }