Subscribe2 - Version 2.15

Version Description

Download this release

Release Info

Developer MattyRob
Plugin Icon 128x128 Subscribe2
Version 2.15
Comparing to
See all releases

Code changes from version 3.0 to 2.15

ReadMe.txt CHANGED
@@ -77,10 +77,22 @@ Batches will occur for each group of message as described above. A site on Drea
77
78
== Version History ==
79
80
Version 3.0 by Matthew Robinson
81
82
* Updated for WordPress 2.1 Branch
83
84
Version 2.14 by Matthew Robinson
85
86
* Amended DREAMHOST setting to BCCLIMIT as more hosts are limiting emails
77
78
== Version History ==
79
80
+ Version 3.1 by Matthew Robinson
81
+
82
+ * Amended code to use core cron functionality for future posts and digest notifications, no longer need WP-Cron
83
+ * Improved HTML code generated for admin pages
84
+ * Removed sending of emails for WordPress Pages
85
+ * Fixed display issues if S2PAGE is not defined
86
+
87
Version 3.0 by Matthew Robinson
88
89
* Updated for WordPress 2.1 Branch
90
91
+ Version 2.15 by Matthew Robinson
92
+
93
+ * Improved HTML code generated for admin pages
94
+ * Fixed display issues if S2PAGE is not defined
95
+
96
Version 2.14 by Matthew Robinson
97
98
* Amended DREAMHOST setting to BCCLIMIT as more hosts are limiting emails
subscribe2/include.php CHANGED
@@ -31,10 +31,6 @@ if (!isset($this->subscribe2_options['barred'])) {
31
$this->subscribe2_options['barred'] = '';
32
} // option containing domains barred from public registration
33
34
- if (!isset($this->subscribe2_options['email_freq'])) {
35
- $this->subscribe2_options['email_freq'] = "never";
36
- } // option for sending emails periodically or per-post
37
-
38
if (!isset($this->subscribe2_options['mailtext'])) {
39
$this->subscribe2_options['mailtext'] = "BLOGNAME has posted a new item, 'TITLE'\r\nPOST\r\nYou may view the latest post at\r\nPERMALINK\r\nYou received this e-mail because you asked to be notified when new updates are posted.\r\nBest regards,\r\nMYNAME\r\nEMAIL";
40
} // Default notification email text
31
$this->subscribe2_options['barred'] = '';
32
} // option containing domains barred from public registration
33
34
if (!isset($this->subscribe2_options['mailtext'])) {
35
$this->subscribe2_options['mailtext'] = "BLOGNAME has posted a new item, 'TITLE'\r\nPOST\r\nYou may view the latest post at\r\nPERMALINK\r\nYou received this e-mail because you asked to be notified when new updates are posted.\r\nBest regards,\r\nMYNAME\r\nEMAIL";
36
} // Default notification email text
subscribe2/subscribe2.php CHANGED
@@ -3,13 +3,13 @@
3
Plugin Name: Subscribe2
4
Plugin URI: http://subscribe2.wordpress.com
5
Description: Notifies an email list when new entries are posted.
6
- Version: 2.3.1 for WP2.1
7
Author: Matthew Robinson
8
Author URI: http://subscribe2.wordpress.com
9
*/
10
11
/*
12
- Copyright (C) 2006-7 Matthew Robinson
13
Based on the Original Subscribe2 plugin by
14
Copyright (C) 2005 Scott Merrill (skippy@skippy.net)
15
@@ -29,18 +29,23 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
29
http://www.gnu.org/licenses/gpl.html
30
*/
31
32
- // If you are on a host that limits the numner of recipients
33
// permitted on each outgoing email message
34
- // change this value to your hosts limit
35
define('BCCLIMIT', '0');
36
37
// by default, subscribe2 grabs the first page from your database for use
38
// when displaying the confirmation screen to public subscribers.
39
- // You can override this by specifying a page ID below.
40
define('S2PAGE', '0');
41
42
- // our version number. Don't touch.
43
- define('S2VERSION', '2.3.1');
44
45
// Add the Subscribe code into the WP API
46
add_action('init', 's2init');
@@ -102,9 +107,7 @@ class subscribe2 {
102
103
$this->please_log_in = "<p>" . __('To manage your subscription options please ', 'subscribe2') . "<a href=\"" . get_settings('siteurl') . "/wp-login.php\">login</a>.</p>";
104
105
- $this->use_profile_admin = "<p>" . __('You may manage your subscription options from your ', 'subscribe2') . "<a href=\"" . get_settings('siteurl') . "/wp-admin/users.php?page=" . plugin_basename(__FILE__) . "\">profile</a>.</p>";
106
-
107
- $this->use_profile_users = "<p>" . __('You may manage your subscription options from your ', 'subscribe2') . "<a href=\"" . get_settings('siteurl') . "/wp-admin/profile.php?page=" . plugin_basename(__FILE__) . "\">profile</a>.</p>";
108
109
$this->confirmation_sent = "<p>" . __('A confirmation message is on its way!', 'subscribe2') . "</p>";
110
@@ -147,12 +150,8 @@ class subscribe2 {
147
function admin_menu() {
148
add_management_page(__('Subscribers', 'subscribe2'), __('Subscribers', 'subscribe2'), "manage_options", __FILE__, array(&$this, 'manage_menu'));
149
add_options_page(__('Subscribe2 Options', 'subscribe2'), __('Subscribe2','subscribe2'), "manage_options", __FILE__, array(&$this, 'options_menu'));
150
- if (current_user_can('manage_options')) {
151
- add_submenu_page('users.php', __('Subscriptions', 'subscribe2'), __('Subscriptions', 'subscribe2'), "read", __FILE__, array(&$this, 'user_menu'));
152
- } else {
153
- add_submenu_page('profile.php', __('Subscriptions', 'subscribe2'), __('Subscriptions', 'subscribe2'), "read", __FILE__, array(&$this, 'user_menu'));
154
- }
155
- add_submenu_page('post-new.php', __('Mail Subscribers','subscribe2'), __('Mail Subscribers', 'subscribe2'),"manage_options", __FILE__, array(&$this, 'write_menu'));
156
$s2nonce = md5('subscribe2');
157
}
158
@@ -174,11 +173,6 @@ class subscribe2 {
174
echo "</script>\r\n";
175
}
176
177
- function add_weekly_sched($sched) {
178
- $sched['weekly'] = array('interval' => 604800, 'display' => __('Once Weekly','subscribe2'));
179
- return $sched;
180
- }
181
-
182
/* ===== Install, upgrade, reset ===== */
183
/**
184
Install our table
@@ -364,18 +358,21 @@ class subscribe2 {
364
/**
365
Sends an email notification of a new post
366
*/
367
- function publish($id = 0) {
368
- if ( (!$id) || is_page($id) ) { return $id; }
369
370
// are we doing daily digests? If so, don't send anything now
371
- if ($this->subscribe2_options['email_freq'] != 'never') { return; }
372
373
// we need to determine whether this is a new post, or an edit
374
- if ($this->private) {
375
- // this post was published from draft status
376
- // OR is an edit of an existing post
377
- // so send no notification
378
- return $id;
379
}
380
381
$post_cats = wp_get_post_cats('1', $id);
@@ -383,7 +380,7 @@ class subscribe2 {
383
$check = false;
384
// is the current post assigned to any categories
385
// which should not generate a notification email?
386
- foreach (explode(',', $this->get_excluded_cats()) as $cat) {
387
if (in_array($cat, $post_cats)) {
388
$check = true;
389
}
@@ -402,6 +399,19 @@ class subscribe2 {
402
$post =& get_post($id);
403
// is this post set in the future?
404
if ($post->post_date > current_time('mysql')) {
405
// bail out
406
return $id;
407
}
@@ -568,19 +578,6 @@ class subscribe2 {
568
} // end send_confirm()
569
570
/* ===== Category functions ===== */
571
- /**
572
- Returns a comma-separated list of category IDs which should not generate notifications
573
- */
574
- function get_excluded_cats() {
575
- if ('' != $this->excluded_cats) {
576
- return $this->excluded_cats;
577
- } else {
578
- global $wpdb;
579
- $this->excluded_cats = $this->subscribe2_options['exclude'];
580
- return $this->excluded_cats;
581
- }
582
- } // end get_excluded_cats()
583
-
584
/**
585
Return either a comma-separated list of all the category IDs in the blog or an array of cat_ID => cat_name
586
*/
@@ -931,18 +928,14 @@ class subscribe2 {
931
932
if (0 == $user_id) { return $user_id; }
933
$user = get_userdata($user_id);
934
- $all_cats = get_categories('type=post&hide_empty=1&hierarchical=0');
935
- foreach ($all_cats as $cat) {
936
- ('' == $cats) ? $cats = "$cat->cat_ID" : $cats .= ",$cat->cat_ID";
937
- }
938
939
// has this user previously signed up for email notification?
940
if (false !== $this->is_public($user->user_email)) {
941
// delete this user from the public table, and subscribe them to all the categories
942
$this->delete($user->user_email);
943
- update_usermeta($user_id, 's2_subscribed', $cats);
944
- foreach(explode(',', $cats) as $cat) {
945
- update_usermeta($user_id, 's2_cat' . $all_cats->cat_ID, "$all_cats->cat_ID");
946
}
947
update_usermeta($user_id, 's2_format', 'text');
948
update_usermeta($user_id, 's2_excerpt', 'excerpt');
@@ -1320,24 +1313,6 @@ class subscribe2 {
1320
}
1321
$this->subscribe2_options['sender'] = $sender;
1322
1323
- // send per-post or digest emails
1324
- $email_freq = $_POST['email_freq'];
1325
- $this->subscribe2_options['email_freq'] = $email_freq;
1326
- wp_clear_scheduled_hook('s2_digest_cron');
1327
- $scheds = (array) wp_get_schedules();
1328
- $interval = ( isset($scheds[$email_freq]['interval']) ) ? (int) $scheds[$email_freq]['interval'] : 0;
1329
- if ($interval == 0) {
1330
- // if we are on per-post emails remove last_cron entry
1331
- unset($this->subscribe2_options['last_s2cron']);
1332
- } else {
1333
- if (!wp_next_scheduled('s2_digest_cron')) {
1334
- // if we are using digest schedule the event and prime last_cron as now
1335
- wp_schedule_event(time() + $interval, $email_freq, 's2_digest_cron');
1336
- $now = date('Y-m-d H:i:s', time());
1337
- $this->subscribe2_options['last_s2cron'] = $now;
1338
- }
1339
- }
1340
-
1341
// email templates
1342
$mailtext = $_POST['mailtext'];
1343
$this->subscribe2_options['mailtext'] = $mailtext;
@@ -1377,12 +1352,7 @@ class subscribe2 {
1377
if ('admin' == $this->subscribe2_options['sender']) {
1378
echo "checked=\"checked\" ";
1379
}
1380
- echo " /> " . __('Blog Admin', 'subscribe2') . "<br /><br />\r\n";
1381
- if (function_exists('wp_schedule_event')) {
1382
- echo __('Send Email as Digest', 'subscribe2') . ": <br /><br />\r\n";
1383
- $this->display_digest_choices();
1384
- echo "<br />\r\n";
1385
- }
1386
echo "<h2>" . __('Email Templates', 'subscribe2') . "</h2>\r\n";
1387
echo "<table width=\"100%\" cellspacing=\"2\" cellpadding=\"1\" class=\"editform\">\r\n";
1388
echo "<tr><td>";
@@ -1412,7 +1382,7 @@ class subscribe2 {
1412
1413
// excluded categories
1414
echo "<h2>" . __('Excluded Categories', 'subscribe2') . "</h2>\r\n";
1415
- $this->display_category_form(explode(',', $this->get_excluded_cats()));
1416
echo "<center><input type=\"checkbox\" name=\"reg_override\" value=\"1\"";
1417
if ('1' == $this->subscribe2_options['reg_override']) {
1418
echo " checked=\"checked\"";
@@ -1547,7 +1517,7 @@ class subscribe2 {
1547
wp_nonce_field('subscribe2-user_subscribers' . $s2nonce);
1548
}
1549
echo "<input type=\"hidden\" name=\"s2_admin\" value=\"user\" />";
1550
- if ($this->subscribe2_options['email_freq'] == 'never') {
1551
echo __('Receive email as', 'subscribe2') . ": &nbsp;&nbsp;";
1552
echo "<input type=\"radio\" name=\"s2_format\" value=\"html\"";
1553
if ('html' == get_usermeta($user_ID, 's2_format')) {
@@ -1673,12 +1643,11 @@ class subscribe2 {
1673
function display_category_form($selected = array(), $override = 1) {
1674
global $wpdb;
1675
1676
- $all_cats = get_categories('type=post&hide_empty=1&hierarchical=0');
1677
-
1678
if (0 == $override) {
1679
// registered users are not allowed to subscribe to
1680
// excluded categories
1681
- foreach (explode(',', $this->get_excluded_cats()) as $cat) {
1682
$category = get_category($cat);
1683
$excluded[$cat] = $category->cat_name;
1684
}
@@ -1688,26 +1657,26 @@ class subscribe2 {
1688
$half = (count($all_cats) / 2);
1689
$i = 0;
1690
$j = 0;
1691
- echo "<table width=\"100%\" cellspacing=\"2\" cellpadding=\"5\" class=\"editform\">\r\n";
1692
- echo "<tr valign=\"top\"><td width=\"50%\" align=\"left\">\r\n";
1693
- foreach ($all_cats as $cat) {
1694
if ( ($i >= $half) && (0 == $j) ){
1695
- echo "</td><td width=\"50%\" align=\"left\">\r\n";
1696
$j++;
1697
}
1698
if (0 == $j) {
1699
- echo "<input type=\"checkbox\" name=\"category[]\" value=\"" . $cat->cat_ID . "\"";
1700
- if (in_array($cat->cat_ID, $selected)) {
1701
echo " checked=\"checked\" ";
1702
}
1703
- echo " /> " . $cat->cat_name . "<br />\r\n";
1704
} else {
1705
1706
- echo "<input type=\"checkbox\" name=\"category[]\" value=\"" . $cat->cat_ID . "\"";
1707
- if (in_array($cat->cat_ID, $selected)) {
1708
echo " checked=\"checked\" ";
1709
}
1710
- echo " /> " . $cat->cat_name . "<br />\r\n";
1711
}
1712
$i++;
1713
}
@@ -1732,8 +1701,6 @@ class subscribe2 {
1732
'unconfirmed' => ' &nbsp;&nbsp;' . __('Unconfirmed', 'subscribe2'),
1733
'registered' => __('Registered Subscribers', 'subscribe2'));
1734
1735
- $all_cats = get_categories('type=post&hide_empty=1&hierarchical=0');
1736
-
1737
// count the number of subscribers
1738
$count['confirmed'] = $wpdb->get_var("SELECT COUNT(id) FROM $this->public WHERE active='1'");
1739
$count['unconfirmed'] = $wpdb->get_var("SELECT COUNT(id) FROM $this->public WHERE active='0'");
@@ -1746,8 +1713,8 @@ class subscribe2 {
1746
}
1747
$count['registered'] = $wpdb->get_var("SELECT COUNT(meta_key) FROM $wpdb->usermeta WHERE meta_key='s2_subscribed'");
1748
$count['all'] = ($count['confirmed'] + $count['unconfirmed'] + $count['registered']);
1749
- foreach ($all_cats as $cat) {
1750
- $count[$cat->cat_name] = $wpdb->get_var("SELECT COUNT(meta_value) FROM $wpdb->usermeta WHERE meta_key='s2_cat$cat->cat_ID'");
1751
}
1752
1753
// do have actually have some subscribers?
@@ -1770,11 +1737,12 @@ class subscribe2 {
1770
}
1771
1772
if ($count['registered'] > 0) {
1773
- foreach ($all_cats as $cat) {
1774
- if (in_array($cat->cat_ID, $exclude)) { continue; }
1775
- echo "<option value=\"" . $cat->cat_ID . "\"";
1776
- if ($cat->cat_ID == $selected) { echo " selected=\"selected\" "; }
1777
- echo "> &nbsp;&nbsp;" . $cat->cat_name . "&nbsp;(" . $count[$cat->cat_name] . ") </option>\r\n";
1778
}
1779
}
1780
echo "</select>";
@@ -1783,31 +1751,6 @@ class subscribe2 {
1783
}
1784
} // end display_subscriber_dropdown()
1785
1786
- function display_digest_choices() {
1787
- global $wpdb;
1788
- $schedule = (array)wp_get_schedules();
1789
- $schedule = array_merge(array('never' => array('interval' => 0, 'display' => __('Per Post Email','subscribe2'))), $schedule);
1790
- $sort = array();
1791
- foreach ( (array)$schedule as $key => $value ) $sort[$key] = $value['interval'];
1792
- asort($sort);
1793
- $schedule_sorted = array();
1794
- foreach ($sort as $key => $value) {
1795
- $schedule_sorted[$key] = $schedule[$key];
1796
- }
1797
- foreach ($schedule_sorted as $key => $value) {
1798
- echo "<input type=\"radio\" name=\"email_freq\" value=\"" . $key . "\"";
1799
- if ($key == $this->subscribe2_options['email_freq']) {
1800
- echo " checked=\"checked\" ";
1801
- }
1802
- echo " /> " . $value['display'] . "<br />\r\n";
1803
- }
1804
- if (wp_next_scheduled('s2_digest_cron')) {
1805
- $datetime = get_option('date_format') . ' @ ' . get_option('time_format');
1806
- echo "<p>" . __('Next email notification will be sent', 'subscribe2') . ": \r\n";
1807
- echo "<strong>" . gmdate($datetime, wp_next_scheduled('s2_digest_cron') + (get_option('gmt_offset') * 3600)) . "</strong></p>\r\n";
1808
- }
1809
- } // end display_digest_choices()
1810
-
1811
/* ===== template and filter functions ===== */
1812
/**
1813
Display our form; also handles (un)subscribe requests
@@ -1819,11 +1762,7 @@ class subscribe2 {
1819
global $user_ID;
1820
get_currentuserinfo();
1821
if ($user_ID) {
1822
- if (current_user_can('manage_options')) {
1823
- $this->s2form = $this->use_profile_admin;
1824
- } else {
1825
- $this->s2form = $this->use_profile_users;
1826
- }
1827
}
1828
if (isset($_POST['s2_action'])) {
1829
global $wpdb, $user_email;
@@ -1876,8 +1815,8 @@ class subscribe2 {
1876
1877
/**
1878
Overrides the default query when handling a (un)subscription confirmation
1879
- This is basically a trick: if the s2 variable is in the query string, just grab the first static page
1880
- and override it's contents later with title_filter() and template_filter()
1881
*/
1882
function query_filter() {
1883
// don't interfere if we've already done our thing
@@ -1885,7 +1824,7 @@ class subscribe2 {
1885
1886
global $wpdb;
1887
1888
- if ( (defined('S2PAGE')) && (0 !== S2PAGE) ) {
1889
return "page_id=" . S2PAGE;
1890
} else {
1891
$id = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_status='static' LIMIT 1");
@@ -1906,33 +1845,50 @@ class subscribe2 {
1906
return __('Subscription Confirmation', 'subscribe2');
1907
} // end title_filter()
1908
1909
/**
1910
- Override the template filter to make sure a special template is not used
1911
*/
1912
- function template_filter() {
1913
- // don't interfere if we've already done our thing
1914
- if (1 == $this->filtered) { return; }
1915
- return;
1916
- } // end template_filter()
1917
1918
- /* ===== wp-cron functions ===== */
1919
/**
1920
Send a daily digest of today's new posts
1921
*/
1922
- function subscribe2_cron() {
1923
global $wpdb;
1924
1925
- // collect posts
1926
- $now = date('Y-m-d H:i:s', time());
1927
- $prev = $this->subscribe2_options['last_s2cron'];
1928
- $posts = $wpdb->get_results("SELECT ID, post_title, post_excerpt, post_content FROM $wpdb->posts WHERE post_date >= '$prev' AND post_date < '$now' AND post_status='publish' AND post_type='post'");
1929
1930
- // update last_s2cron execution time before completing or bailing
1931
- $this->subscribe2_options['last_s2cron'] = $now;
1932
- update_option('subscribe2_options', $this->subscribe2_options);
1933
-
1934
// do we have any posts?
1935
- if (empty($posts)) { return; }
1936
1937
// if we have posts, let's prepare the digest
1938
foreach ($posts as $post) {
@@ -1941,7 +1897,7 @@ class subscribe2 {
1941
$check = false;
1942
// is the current post assigned to any categories
1943
// which should not generate a notification email?
1944
- foreach (explode(',', $this->get_excluded_cats()) as $cat) {
1945
if (in_array($cat, $post_cats)) {
1946
$check = true;
1947
}
@@ -1974,6 +1930,7 @@ class subscribe2 {
1974
}
1975
1976
$author = get_userdata($post->post_author);
1977
1978
// do we send as admin, or post author?
1979
if ('author' == $this->subscribe2_options['sender']) {
@@ -1985,18 +1942,41 @@ class subscribe2 {
1985
}
1986
$this->myemail = $user->user_email;
1987
$this->myname = $user->display_name;
1988
-
1989
- $scheds = (array) wp_get_schedules();
1990
- $email_freq = $this->subscribe2_options['email_freq'];
1991
- $display = $scheds[$email_freq]['display'];
1992
- $subject = '[' . stripslashes(get_settings('blogname')) . '] ' . $display . ' ' . __('Digest Email', 'subscribe2');
1993
$public = $this->get_public();
1994
$registered = $this->get_registered();
1995
$recipients = array_merge((array)$public, (array)$registered);
1996
$mailtext = $this->substitute(stripslashes($this->subscribe2_options['mailtext']));
1997
$body = str_replace('POST', $message, $mailtext);
1998
$this->mail($recipients, $subject, $body);
1999
- } // end subscribe2_cron
2000
2001
/* ===== Our constructor ===== */
2002
/**
@@ -2013,7 +1993,7 @@ class subscribe2 {
2013
2014
// do we need to install anything?
2015
$this->public = $table_prefix . "subscribe2";
2016
- if(mysql_query("SELECT COUNT(*) FROM ".$this->public)==FALSE) { $this->install(); }
2017
//do we need to upgrade anything?
2018
if ($this->subscribe2_options['version'] !== S2VERSION) {
2019
$this->upgrade();
@@ -2028,18 +2008,17 @@ class subscribe2 {
2028
2029
add_action('admin_head', array(&$this, 'admin_head'));
2030
add_action('admin_menu', array(&$this, 'admin_menu'));
2031
add_action('user_register', array(&$this, 'register'));
2032
add_action('create_category', array(&$this, 'autosub_new_category'));
2033
add_filter('the_content', array(&$this, 'filter'));
2034
- add_filter('cron_schedules', array(&$this, 'add_weekly_sched'));
2035
-
2036
- if ($this->subscribe2_options['email_freq'] != 'never') {
2037
- add_action('s2_digest_cron', array(&$this, 'subscribe2_cron'));
2038
- } else {
2039
- add_action('publish_post', array(&$this, 'publish'));
2040
- add_action('edit_post', array(&$this, 'edit'));
2041
- add_action('private_to_published', array(&$this, 'private2publish'));
2042
}
2043
2044
// load our strings
2045
$this->load_strings();
3
Plugin Name: Subscribe2
4
Plugin URI: http://subscribe2.wordpress.com
5
Description: Notifies an email list when new entries are posted.
6
+ Version: 2.2.15
7
Author: Matthew Robinson
8
Author URI: http://subscribe2.wordpress.com
9
*/
10
11
/*
12
+ Copyright (C) 2006 Matthew Robinson
13
Based on the Original Subscribe2 plugin by
14
Copyright (C) 2005 Scott Merrill (skippy@skippy.net)
15
29
http://www.gnu.org/licenses/gpl.html
30
*/
31
32
+ // If you are on a host that limits the number of recipients
33
// permitted on each outgoing email message
34
+ // change the value in the line below to your hosts limit
35
define('BCCLIMIT', '0');
36
37
// by default, subscribe2 grabs the first page from your database for use
38
// when displaying the confirmation screen to public subscribers.
39
+ // You can override this by specifying a page ID in the line below.
40
define('S2PAGE', '0');
41
42
+ // change the value below to TRUE if you want a daily digest
43
+ // of the days posts sent to your subscribers
44
+ define('S2DIGEST', false);
45
+
46
+ // our version number. Don't touch this or any line below
47
+ // unless you know exacly what you are doing
48
+ define('S2VERSION', '2.2.15');
49
50
// Add the Subscribe code into the WP API
51
add_action('init', 's2init');
107
108
$this->please_log_in = "<p>" . __('To manage your subscription options please ', 'subscribe2') . "<a href=\"" . get_settings('siteurl') . "/wp-login.php\">login</a>.</p>";
109
110
+ $this->use_profile = "<p>" . __('You may manage your subscription options from your ', 'subscribe2') . "<a href=\"" . get_settings('siteurl') . "/wp-admin/profile.php?page=" . plugin_basename(__FILE__) . "\">profile</a>.</p>";
111
112
$this->confirmation_sent = "<p>" . __('A confirmation message is on its way!', 'subscribe2') . "</p>";
113
150
function admin_menu() {
151
add_management_page(__('Subscribers', 'subscribe2'), __('Subscribers', 'subscribe2'), "manage_options", __FILE__, array(&$this, 'manage_menu'));
152
add_options_page(__('Subscribe2 Options', 'subscribe2'), __('Subscribe2','subscribe2'), "manage_options", __FILE__, array(&$this, 'options_menu'));
153
+ add_submenu_page('profile.php', __('Subscriptions', 'subscribe2'), __('Subscriptions', 'subscribe2'), "read", __FILE__, array(&$this, 'user_menu'));
154
+ add_submenu_page('post.php', __('Mail Subscribers','subscribe2'), __('Mail Subscribers', 'subscribe2'),"manage_options", __FILE__, array(&$this, 'write_menu'));
155
$s2nonce = md5('subscribe2');
156
}
157
173
echo "</script>\r\n";
174
}
175
176
/* ===== Install, upgrade, reset ===== */
177
/**
178
Install our table
358
/**
359
Sends an email notification of a new post
360
*/
361
+ function publish($id = 0, $cron = 0) {
362
+ if (!$id) { return $id; }
363
364
// are we doing daily digests? If so, don't send anything now
365
+ if ( (defined('S2DIGEST')) && (true == S2DIGEST) ) { return; }
366
367
// we need to determine whether this is a new post, or an edit
368
+ if (0 == $cron) {
369
+ // we're not being called from WP-Cron
370
+ if ($this->private) {
371
+ // this post was published from draft status
372
+ // OR is an edit of an existing post
373
+ // so send no notification
374
+ return $id;
375
+ }
376
}
377
378
$post_cats = wp_get_post_cats('1', $id);
380
$check = false;
381
// is the current post assigned to any categories
382
// which should not generate a notification email?
383
+ foreach (explode(',', $this->subscribe2_options['exclude']) as $cat) {
384
if (in_array($cat, $post_cats)) {
385
$check = true;
386
}
399
$post =& get_post($id);
400
// is this post set in the future?
401
if ($post->post_date > current_time('mysql')) {
402
+ // is wp-cron installed?
403
+ if (function_exists('wp_cron_init')) {
404
+ // are we doing daily digests?
405
+ if ( (defined('S2DIGEST')) && (false == S2DIGEST) ) {
406
+ // not doing daily digests, so
407
+ // add this post to the list of
408
+ // future posts
409
+ $our_post = array('id' => $id, 'date' => $post->post_date);
410
+ $future_posts = get_option('s2_future_posts');
411
+ $future_posts[] = $our_post;
412
+ update_option('s2_future_posts', $future_posts);
413
+ }
414
+ }
415
// bail out
416
return $id;
417
}
578
} // end send_confirm()
579
580
/* ===== Category functions ===== */
581
/**
582
Return either a comma-separated list of all the category IDs in the blog or an array of cat_ID => cat_name
583
*/
928
929
if (0 == $user_id) { return $user_id; }
930
$user = get_userdata($user_id);
931
932
// has this user previously signed up for email notification?
933
if (false !== $this->is_public($user->user_email)) {
934
// delete this user from the public table, and subscribe them to all the categories
935
$this->delete($user->user_email);
936
+ update_usermeta($user_id, 's2_subscribed', $this->get_all_categories());
937
+ foreach(explode(',', $this->get_all_categories()) as $cat) {
938
+ update_usermeta($user_id, 's2_cat' . $cat, "$cat");
939
}
940
update_usermeta($user_id, 's2_format', 'text');
941
update_usermeta($user_id, 's2_excerpt', 'excerpt');
1313
}
1314
$this->subscribe2_options['sender'] = $sender;
1315
1316
// email templates
1317
$mailtext = $_POST['mailtext'];
1318
$this->subscribe2_options['mailtext'] = $mailtext;
1352
if ('admin' == $this->subscribe2_options['sender']) {
1353
echo "checked=\"checked\" ";
1354
}
1355
+ echo " /> " . __('Blog Admin', 'subscribe2') . "<br />\r\n";
1356
echo "<h2>" . __('Email Templates', 'subscribe2') . "</h2>\r\n";
1357
echo "<table width=\"100%\" cellspacing=\"2\" cellpadding=\"1\" class=\"editform\">\r\n";
1358
echo "<tr><td>";
1382
1383
// excluded categories
1384
echo "<h2>" . __('Excluded Categories', 'subscribe2') . "</h2>\r\n";
1385
+ $this->display_category_form(explode(',', $this->subscribe2_options['exclude']));
1386
echo "<center><input type=\"checkbox\" name=\"reg_override\" value=\"1\"";
1387
if ('1' == $this->subscribe2_options['reg_override']) {
1388
echo " checked=\"checked\"";
1517
wp_nonce_field('subscribe2-user_subscribers' . $s2nonce);
1518
}
1519
echo "<input type=\"hidden\" name=\"s2_admin\" value=\"user\" />";
1520
+ if ( (defined('S2DIGEST')) && (FALSE == S2DIGEST) ) {
1521
echo __('Receive email as', 'subscribe2') . ": &nbsp;&nbsp;";
1522
echo "<input type=\"radio\" name=\"s2_format\" value=\"html\"";
1523
if ('html' == get_usermeta($user_ID, 's2_format')) {
1643
function display_category_form($selected = array(), $override = 1) {
1644
global $wpdb;
1645
1646
+ $all_cats = $this->get_all_categories('array');
1647
if (0 == $override) {
1648
// registered users are not allowed to subscribe to
1649
// excluded categories
1650
+ foreach (explode(',', $this->subscribe2_options['exclude']) as $cat) {
1651
$category = get_category($cat);
1652
$excluded[$cat] = $category->cat_name;
1653
}
1657
$half = (count($all_cats) / 2);
1658
$i = 0;
1659
$j = 0;
1660
+ echo "<table width=\"100%\" cellspacing=\"2\" cellpadding=\"5\" class=\"editform\">";
1661
+ echo "<tr valign=\"top\"><td width=\"50%\" align=\"left\">";
1662
+ foreach ($all_cats as $cat_ID => $cat_name) {
1663
if ( ($i >= $half) && (0 == $j) ){
1664
+ echo "</td><td width=\"50%\" align=\"left\">";
1665
$j++;
1666
}
1667
if (0 == $j) {
1668
+ echo "<input type=\"checkbox\" name=\"category[]\" value=\"" . $cat_ID . "\"";
1669
+ if (in_array($cat_ID, $selected)) {
1670
echo " checked=\"checked\" ";
1671
}
1672
+ echo " /> " . $cat_name . "<br />\r\n";
1673
} else {
1674
1675
+ echo "<input type=\"checkbox\" name=\"category[]\" value=\"" . $cat_ID . "\"";
1676
+ if (in_array($cat_ID, $selected)) {
1677
echo " checked=\"checked\" ";
1678
}
1679
+ echo " /> " . $cat_name . "<br />\r\n";
1680
}
1681
$i++;
1682
}
1701
'unconfirmed' => ' &nbsp;&nbsp;' . __('Unconfirmed', 'subscribe2'),
1702
'registered' => __('Registered Subscribers', 'subscribe2'));
1703
1704
// count the number of subscribers
1705
$count['confirmed'] = $wpdb->get_var("SELECT COUNT(id) FROM $this->public WHERE active='1'");
1706
$count['unconfirmed'] = $wpdb->get_var("SELECT COUNT(id) FROM $this->public WHERE active='0'");
1713
}
1714
$count['registered'] = $wpdb->get_var("SELECT COUNT(meta_key) FROM $wpdb->usermeta WHERE meta_key='s2_subscribed'");
1715
$count['all'] = ($count['confirmed'] + $count['unconfirmed'] + $count['registered']);
1716
+ foreach ($this->get_all_categories('array') as $cat_ID => $cat_name) {
1717
+ $count[$cat_name] = $wpdb->get_var("SELECT COUNT(meta_value) FROM $wpdb->usermeta WHERE meta_key='s2_cat$cat_ID'");
1718
}
1719
1720
// do have actually have some subscribers?
1737
}
1738
1739
if ($count['registered'] > 0) {
1740
+ foreach ($this->get_all_categories('array') as $cat_ID => $cat_name) {
1741
+ if (in_array($cat_ID, $exclude)) { continue; }
1742
+ if (0 == $count[$cat_name]) { continue; }
1743
+ echo "<option value=\"$cat_ID\"";
1744
+ if ($cat_ID == $selected) { echo " selected=\"selected\" "; }
1745
+ echo "> &nbsp;&nbsp;$cat_name (" . $count[$cat_name] . ") </option>\r\n";
1746
}
1747
}
1748
echo "</select>";
1751
}
1752
} // end display_subscriber_dropdown()
1753
1754
/* ===== template and filter functions ===== */
1755
/**
1756
Display our form; also handles (un)subscribe requests
1762
global $user_ID;
1763
get_currentuserinfo();
1764
if ($user_ID) {
1765
+ $this->s2form = $this->use_profile;
1766
}
1767
if (isset($_POST['s2_action'])) {
1768
global $wpdb, $user_email;
1815
1816
/**
1817
Overrides the default query when handling a (un)subscription confirmation
1818
+ This is basically a trick: if the s2 variable is in the query string grab the
1819
+ S2PAGE or the first static page and override it's contents later with title_filter()
1820
*/
1821
function query_filter() {
1822
// don't interfere if we've already done our thing
1824
1825
global $wpdb;
1826
1827
+ if ( (defined('S2PAGE')) && (0 != S2PAGE) ) {
1828
return "page_id=" . S2PAGE;
1829
} else {
1830
$id = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_status='static' LIMIT 1");
1845
return __('Subscription Confirmation', 'subscribe2');
1846
} // end title_filter()
1847
1848
+ /* ===== wp-cron functions ===== */
1849
/**
1850
+ Send notifications for any posts that are now visible
1851
*/
1852
+ function subscribe2_hourly() {
1853
+ $future_posts = get_option('s2_future_posts');
1854
+
1855
+ // if we have no future posts, bail out
1856
+ if (!$future_posts) { return; }
1857
+
1858
+ // this will hold the posts that aren't yet visible
1859
+ $not_yet = array();
1860
+
1861
+ foreach ($future_posts as $post) {
1862
+ if ( (current_time('mysql')) > ($post['date']) ) {
1863
+ // this post is now visible, so let's
1864
+ // send a notification
1865
+ $this->publish($post['id'], 1);
1866
+ } else {
1867
+ array_push($not_yet, $post);
1868
+ }
1869
+ }
1870
+ // are the number of elements in $not_yet
1871
+ // the same as in $future posts?
1872
+ if ( (count($not_yet)) != (count($future_posts)) ) {
1873
+ // if not, then some posts have been removed
1874
+ // from $future_posts, and the remainder need
1875
+ // to be recorded back to the database
1876
+ update_option('s2_future_posts', $not_yet);
1877
+ }
1878
+ } // end subscribe2_hourly
1879
1880
/**
1881
Send a daily digest of today's new posts
1882
*/
1883
+ function subscribe2_daily() {
1884
global $wpdb;
1885
1886
+ // collect yesterday's posts
1887
+ $yesterday = date('Y-m-d', (get_option('wp_cron_daily_lastrun')-60));
1888
+ $posts = $wpdb->get_results("SELECT ID, post_title, post_excerpt, post_content FROM $wpdb->posts WHERE post_date > '$yesterday 00:00:00' AND post_date < '$yesterday 23:59:59' AND post_status='publish'");
1889
1890
// do we have any posts?
1891
+ if (!$posts) { return; }
1892
1893
// if we have posts, let's prepare the digest
1894
foreach ($posts as $post) {
1897
$check = false;
1898
// is the current post assigned to any categories
1899
// which should not generate a notification email?
1900
+ foreach (explode(',', $this->subscribe2_options['exclude']) as $cat) {
1901
if (in_array($cat, $post_cats)) {
1902
$check = true;
1903
}
1930
}
1931
1932
$author = get_userdata($post->post_author);
1933
+ $this->authorname = $author->display_name;
1934
1935
// do we send as admin, or post author?
1936
if ('author' == $this->subscribe2_options['sender']) {
1942
}
1943
$this->myemail = $user->user_email;
1944
$this->myname = $user->display_name;
1945
+
1946
+ $subject = '[' . stripslashes(get_settings('blogname')) . '] ' . __('Daily Digest', 'subscribe2') . ' ' . $yesterday;
1947
$public = $this->get_public();
1948
$registered = $this->get_registered();
1949
$recipients = array_merge((array)$public, (array)$registered);
1950
$mailtext = $this->substitute(stripslashes($this->subscribe2_options['mailtext']));
1951
$body = str_replace('POST', $message, $mailtext);
1952
$this->mail($recipients, $subject, $body);
1953
+ } // end subscribe2_daily
1954
+
1955
+ /**
1956
+ If the to-be-deleted post was future-dated, remove it from the list of future-dated posts
1957
+ */
1958
+ function delete_future($id = 0) {
1959
+ if (0 == $id) { return $id; }
1960
+
1961
+ $future = get_settings('s2_future_posts');
1962
+ // if we have no future-dated posts scheduled, bail out
1963
+ if (!$future) {
1964
+ return $id;
1965
+ }
1966
+ foreach ($future as $post) {
1967
+ // is the deleted post in the list of future posts?
1968
+ if ($id == $post['id']) {
1969
+ // skip it
1970
+ continue;
1971
+ } else {
1972
+ // add this to the new list of future posts
1973
+ $new_future[] = $post;
1974
+ }
1975
+ }
1976
+ if ($new_future != $future) {
1977
+ update_option('s2_future_posts', $new_future);
1978
+ }
1979
+ } // end delete_future()
1980
1981
/* ===== Our constructor ===== */
1982
/**
1993
1994
// do we need to install anything?
1995
$this->public = $table_prefix . "subscribe2";
1996
+ if(mysql_query("SELECT COUNT(*) FROM ".$this->public)==FALSE) { $this->install(); }
1997
//do we need to upgrade anything?
1998
if ($this->subscribe2_options['version'] !== S2VERSION) {
1999
$this->upgrade();
2008
2009
add_action('admin_head', array(&$this, 'admin_head'));
2010
add_action('admin_menu', array(&$this, 'admin_menu'));
2011
+ add_action('publish_post', array(&$this, 'publish'));
2012
+ add_action('edit_post', array(&$this, 'edit'));
2013
+ add_action('private_to_published', array(&$this, 'private2publish'));
2014
add_action('user_register', array(&$this, 'register'));
2015
add_action('create_category', array(&$this, 'autosub_new_category'));
2016
add_filter('the_content', array(&$this, 'filter'));
2017
+ add_action('wp_cron_hourly', array(&$this, 'subscribe2_hourly'));
2018
+ if ( (defined('S2DIGEST')) && (TRUE == S2DIGEST) ) {
2019
+ add_action('wp_cron_daily', array(&$this, 'subscribe2_daily'));
2020
}
2021
+ add_action('delete_post', array(&$this, 'delete_future'));
2022
2023
// load our strings
2024
$this->load_strings();
subscribe2/subscribe2.pot CHANGED
@@ -8,7 +8,7 @@ msgid ""
8
msgstr ""
9
"Project-Id-Version: PACKAGE VERSION\n"
10
"Report-Msgid-Bugs-To: \n"
11
- "POT-Creation-Date: 2007-03-19 19:24+0000\n"
12
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -16,449 +16,433 @@ msgstr ""
16
"Content-Type: text/plain; charset=CHARSET\n"
17
"Content-Transfer-Encoding: 8bit\n"
18
19
- #: subscribe2.php:103
20
msgid "To manage your subscription options please "
21
msgstr ""
22
23
- #: subscribe2.php:105 subscribe2.php:107
24
msgid "You may manage your subscription options from your "
25
msgstr ""
26
27
- #: subscribe2.php:109
28
msgid "A confirmation message is on its way!"
29
msgstr ""
30
31
- #: subscribe2.php:111
32
msgid "That email address is already subscribed."
33
msgstr ""
34
35
- #: subscribe2.php:113
36
msgid "That email address is not subscribed."
37
msgstr ""
38
39
- #: subscribe2.php:115
40
msgid "Sorry, but that does not look like an email address to me."
41
msgstr ""
42
43
- #: subscribe2.php:117
44
msgid ""
45
"Sorry, email addresses at that domain are currently barred due to spam, "
46
"please use an alternative email address."
47
msgstr ""
48
49
- #: subscribe2.php:119
50
msgid "Message sent!"
51
msgstr ""
52
53
- #: subscribe2.php:121
54
msgid "Your email:"
55
msgstr ""
56
57
- #: subscribe2.php:121 subscribe2.php:1185 subscribe2.php:1277
58
msgid "Subscribe"
59
msgstr ""
60
61
- #: subscribe2.php:121 subscribe2.php:1278
62
msgid "Unsubscribe"
63
msgstr ""
64
65
- #: subscribe2.php:121 subscribe2.php:1659
66
msgid "Send"
67
msgstr ""
68
69
- #: subscribe2.php:124
70
msgid "No such email address is registered."
71
msgstr ""
72
73
- #: subscribe2.php:126
74
msgid "You have successfully subscribed!"
75
msgstr ""
76
77
- #: subscribe2.php:128
78
msgid "You have successfully unsubscribed."
79
msgstr ""
80
81
- #: subscribe2.php:130
82
msgid "Please confirm your request"
83
msgstr ""
84
85
- #: subscribe2.php:132
86
msgid "Subscription Reminder"
87
msgstr ""
88
89
- #: subscribe2.php:134
90
msgid "subscribe"
91
msgstr ""
92
93
- #: subscribe2.php:136
94
msgid "unsubscribe"
95
msgstr ""
96
97
- #: subscribe2.php:139
98
msgid "Options saved!"
99
msgstr ""
100
101
- #: subscribe2.php:140
102
msgid "Options reset!"
103
msgstr ""
104
105
- #: subscribe2.php:148 subscribe2.php:1190
106
msgid "Subscribers"
107
msgstr ""
108
109
- #: subscribe2.php:149
110
msgid "Subscribe2 Options"
111
msgstr ""
112
113
- #: subscribe2.php:149
114
msgid "Subscribe2"
115
msgstr ""
116
117
- #: subscribe2.php:151 subscribe2.php:153
118
msgid "Subscriptions"
119
msgstr ""
120
121
- #: subscribe2.php:155
122
msgid "Mail Subscribers"
123
msgstr ""
124
125
- #: subscribe2.php:178
126
- msgid "Once Weekly"
127
- msgstr ""
128
-
129
- #: subscribe2.php:780
130
msgid "New subscriber"
131
msgstr ""
132
133
- #: subscribe2.php:781
134
msgid "subscribed to email notifications!"
135
msgstr ""
136
137
- #: subscribe2.php:1098
138
msgid "Address(es) subscribed!"
139
msgstr ""
140
141
- #: subscribe2.php:1101
142
msgid "deleted!"
143
msgstr ""
144
145
- #: subscribe2.php:1104
146
msgid "status changed!"
147
msgstr ""
148
149
- #: subscribe2.php:1107
150
msgid "Reminder Email(s) Sent!"
151
msgstr ""
152
153
- #: subscribe2.php:1110
154
msgid "CSV File Created in wp-content"
155
msgstr ""
156
157
- #: subscribe2.php:1113
158
msgid "Registered Users Subscribed!"
159
msgstr ""
160
161
- #: subscribe2.php:1116
162
msgid "Registered Users Unsubscribed!"
163
msgstr ""
164
165
- #: subscribe2.php:1178
166
msgid "Subscribe Addresses"
167
msgstr ""
168
169
- #: subscribe2.php:1183
170
msgid "Enter addresses, one per line or comma-seperated"
171
msgstr ""
172
173
- #: subscribe2.php:1192
174
msgid "Filter"
175
msgstr ""
176
177
- #: subscribe2.php:1196
178
msgid ""
179
"Registered on the left, confirmed in the middle, unconfirmed on the right"
180
msgstr ""
181
182
- #: subscribe2.php:1205
183
msgid "Save Emails to CSV File"
184
msgstr ""
185
186
- #: subscribe2.php:1251
187
msgid "NONE"
188
msgstr ""
189
190
- #: subscribe2.php:1261
191
msgid "Send Reminder Email"
192
msgstr ""
193
194
- #: subscribe2.php:1268
195
msgid "Categories"
196
msgstr ""
197
198
- #: subscribe2.php:1269
199
msgid ""
200
"Existing Registered Users can be automatically (un)subscribed to categories "
201
"using this section."
202
msgstr ""
203
204
- #: subscribe2.php:1270
205
msgid "Consider User Privacy as changes cannot be undone"
206
msgstr ""
207
208
- #: subscribe2.php:1369
209
msgid "Delivery Options"
210
msgstr ""
211
212
- #: subscribe2.php:1370
213
msgid "Send Email From"
214
msgstr ""
215
216
- #: subscribe2.php:1375
217
msgid "Author of the post"
218
msgstr ""
219
220
- #: subscribe2.php:1380
221
msgid "Blog Admin"
222
msgstr ""
223
224
- #: subscribe2.php:1382
225
- msgid "Send Email as Digest"
226
- msgstr ""
227
-
228
- #: subscribe2.php:1386
229
msgid "Email Templates"
230
msgstr ""
231
232
- #: subscribe2.php:1389
233
msgid "New Post email (must not be empty)"
234
msgstr ""
235
236
- #: subscribe2.php:1393
237
msgid "Message substitions"
238
msgstr ""
239
240
- #: subscribe2.php:1397
241
msgid "the post's title"
242
msgstr ""
243
244
- #: subscribe2.php:1398
245
msgid ""
246
"the excerpt or the entire post<br />(<i>based on the subscriber's "
247
"preferences</i>)"
248
msgstr ""
249
250
- #: subscribe2.php:1399
251
msgid "the post's permalink"
252
msgstr ""
253
254
- #: subscribe2.php:1400
255
msgid "the admin or post author's name"
256
msgstr ""
257
258
- #: subscribe2.php:1401
259
msgid "the admin or post author's email"
260
msgstr ""
261
262
- #: subscribe2.php:1402
263
msgid "the post author's name"
264
msgstr ""
265
266
- #: subscribe2.php:1403
267
msgid ""
268
"the generated link to confirm a request<br />(<i>only used in the "
269
"confirmation email template</i>)"
270
msgstr ""
271
272
- #: subscribe2.php:1404
273
msgid ""
274
"Action performed by LINK in confirmation email<br />(<i>only used in the "
275
"confirmation email template</i>)"
276
msgstr ""
277
278
- #: subscribe2.php:1406
279
msgid "Subscribe / Unsubscribe confirmation email"
280
msgstr ""
281
282
- #: subscribe2.php:1409
283
msgid "Reminder email to Unconfirmed Subscribers"
284
msgstr ""
285
286
- #: subscribe2.php:1414
287
msgid "Excluded Categories"
288
msgstr ""
289
290
- #: subscribe2.php:1420
291
msgid "Allow registered users to subscribe to excluded categories?"
292
msgstr ""
293
294
- #: subscribe2.php:1421
295
msgid "Writing Options"
296
msgstr ""
297
298
- #: subscribe2.php:1426
299
msgid "Show the Subscribe2 button on the Write toolbar?"
300
msgstr ""
301
302
- #: subscribe2.php:1429
303
msgid "Auto Subscribe"
304
msgstr ""
305
306
- #: subscribe2.php:1430
307
msgid "Automatically subscribe new users registering with your blog."
308
msgstr ""
309
310
- #: subscribe2.php:1435
311
msgid "Yes"
312
msgstr ""
313
314
- #: subscribe2.php:1440
315
msgid "No"
316
msgstr ""
317
318
- #: subscribe2.php:1441
319
msgid "Auto-subscribe users to receive email as"
320
msgstr ""
321
322
- #: subscribe2.php:1446 subscribe2.php:1556
323
msgid "HTML"
324
msgstr ""
325
326
- #: subscribe2.php:1451
327
msgid "Plain Text - Full"
328
msgstr ""
329
330
- #: subscribe2.php:1456
331
msgid "Plain Text - Excerpt"
332
msgstr ""
333
334
- #: subscribe2.php:1459
335
msgid "Barred Domains"
336
msgstr ""
337
338
- #: subscribe2.php:1460
339
msgid ""
340
"Enter domains to bar from public subscriptions: <br /> (Use a new line for "
341
"each entry and omit the \"@\" symbol, for example email.com)"
342
msgstr ""
343
344
- #: subscribe2.php:1464
345
msgid "Submit"
346
msgstr ""
347
348
- #: subscribe2.php:1469
349
msgid "Reset Default"
350
msgstr ""
351
352
- #: subscribe2.php:1470
353
msgid ""
354
"Use this to reset all options to their defaults. This <strong><em>will not</"
355
"em></strong> modify your list of subscribers."
356
msgstr ""
357
358
- #: subscribe2.php:1477
359
msgid "RESET"
360
msgstr ""
361
362
- #: subscribe2.php:1497
363
msgid "Subscription preferences updated."
364
msgstr ""
365
366
- #: subscribe2.php:1544
367
msgid "Notification Settings"
368
msgstr ""
369
370
- #: subscribe2.php:1551
371
msgid "Receive email as"
372
msgstr ""
373
374
- #: subscribe2.php:1561
375
msgid "Plain Text"
376
msgstr ""
377
378
- #: subscribe2.php:1563
379
msgid "Email contains"
380
msgstr ""
381
382
- #: subscribe2.php:1564
383
msgid "Excerpt Only"
384
msgstr ""
385
386
- #: subscribe2.php:1564
387
msgid "Full Post"
388
msgstr ""
389
390
- #: subscribe2.php:1572
391
msgid "Note: HTML format will always deliver the full post."
392
msgstr ""
393
394
- #: subscribe2.php:1573
395
msgid "Automatically subscribe me to newly created categories"
396
msgstr ""
397
398
- #: subscribe2.php:1585
399
msgid "Subscribed Categories"
400
msgstr ""
401
402
- #: subscribe2.php:1590
403
msgid "Receive daily summary of new posts?"
404
msgstr ""
405
406
- #: subscribe2.php:1603
407
msgid "Update Preferences &raquo;"
408
msgstr ""
409
410
- #: subscribe2.php:1648
411
msgid "Send email to all subscribers"
412
msgstr ""
413
414
- #: subscribe2.php:1653
415
msgid "Subject"
416
msgstr ""
417
418
- #: subscribe2.php:1653
419
msgid "A message from "
420
msgstr ""
421
422
- #: subscribe2.php:1656
423
msgid "Recipients: "
424
msgstr ""
425
426
- #: subscribe2.php:1716
427
msgid "Select / Unselect All"
428
msgstr ""
429
430
- #: subscribe2.php:1729
431
msgid "All Subscribers"
432
msgstr ""
433
434
- #: subscribe2.php:1730
435
msgid "Public Subscribers"
436
msgstr ""
437
438
- #: subscribe2.php:1731
439
msgid "Confirmed"
440
msgstr ""
441
442
- #: subscribe2.php:1732
443
msgid "Unconfirmed"
444
msgstr ""
445
446
- #: subscribe2.php:1733
447
msgid "Registered Subscribers"
448
msgstr ""
449
450
- #: subscribe2.php:1789
451
- msgid "Per Post Email"
452
- msgstr ""
453
-
454
- #: subscribe2.php:1806
455
- msgid "Next email notification will be sent"
456
- msgstr ""
457
-
458
- #: subscribe2.php:1906
459
msgid "Subscription Confirmation"
460
msgstr ""
461
462
- #: subscribe2.php:1992
463
- msgid "Digest Email"
464
msgstr ""
8
msgstr ""
9
"Project-Id-Version: PACKAGE VERSION\n"
10
"Report-Msgid-Bugs-To: \n"
11
+ "POT-Creation-Date: 2007-04-08 18:10+0100\n"
12
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
"Language-Team: LANGUAGE <LL@li.org>\n"
16
"Content-Type: text/plain; charset=CHARSET\n"
17
"Content-Transfer-Encoding: 8bit\n"
18
19
+ #: subscribe2.php:108
20
msgid "To manage your subscription options please "
21
msgstr ""
22
23
+ #: subscribe2.php:110
24
msgid "You may manage your subscription options from your "
25
msgstr ""
26
27
+ #: subscribe2.php:112
28
msgid "A confirmation message is on its way!"
29
msgstr ""
30
31
+ #: subscribe2.php:114
32
msgid "That email address is already subscribed."
33
msgstr ""
34
35
+ #: subscribe2.php:116
36
msgid "That email address is not subscribed."
37
msgstr ""
38
39
+ #: subscribe2.php:118
40
msgid "Sorry, but that does not look like an email address to me."
41
msgstr ""
42
43
+ #: subscribe2.php:120
44
msgid ""
45
"Sorry, email addresses at that domain are currently barred due to spam, "
46
"please use an alternative email address."
47
msgstr ""
48
49
+ #: subscribe2.php:122
50
msgid "Message sent!"
51
msgstr ""
52
53
+ #: subscribe2.php:124
54
msgid "Your email:"
55
msgstr ""
56
57
+ #: subscribe2.php:124 subscribe2.php:1178 subscribe2.php:1270
58
msgid "Subscribe"
59
msgstr ""
60
61
+ #: subscribe2.php:124 subscribe2.php:1271
62
msgid "Unsubscribe"
63
msgstr ""
64
65
+ #: subscribe2.php:124 subscribe2.php:1629
66
msgid "Send"
67
msgstr ""
68
69
+ #: subscribe2.php:127
70
msgid "No such email address is registered."
71
msgstr ""
72
73
+ #: subscribe2.php:129
74
msgid "You have successfully subscribed!"
75
msgstr ""
76
77
+ #: subscribe2.php:131
78
msgid "You have successfully unsubscribed."
79
msgstr ""
80
81
+ #: subscribe2.php:133
82
msgid "Please confirm your request"
83
msgstr ""
84
85
+ #: subscribe2.php:135
86
msgid "Subscription Reminder"
87
msgstr ""
88
89
+ #: subscribe2.php:137
90
msgid "subscribe"
91
msgstr ""
92
93
+ #: subscribe2.php:139
94
msgid "unsubscribe"
95
msgstr ""
96
97
+ #: subscribe2.php:142
98
msgid "Options saved!"
99
msgstr ""
100
101
+ #: subscribe2.php:143
102
msgid "Options reset!"
103
msgstr ""
104
105
+ #: subscribe2.php:151 subscribe2.php:1183
106
msgid "Subscribers"
107
msgstr ""
108
109
+ #: subscribe2.php:152
110
msgid "Subscribe2 Options"
111
msgstr ""
112
113
+ #: subscribe2.php:152
114
msgid "Subscribe2"
115
msgstr ""
116
117
+ #: subscribe2.php:153
118
msgid "Subscriptions"
119
msgstr ""
120
121
+ #: subscribe2.php:154
122
msgid "Mail Subscribers"
123
msgstr ""
124
125
+ #: subscribe2.php:777
126
msgid "New subscriber"
127
msgstr ""
128
129
+ #: subscribe2.php:778
130
msgid "subscribed to email notifications!"
131
msgstr ""
132
133
+ #: subscribe2.php:1091
134
msgid "Address(es) subscribed!"
135
msgstr ""
136
137
+ #: subscribe2.php:1094
138
msgid "deleted!"
139
msgstr ""
140
141
+ #: subscribe2.php:1097
142
msgid "status changed!"
143
msgstr ""
144
145
+ #: subscribe2.php:1100
146
msgid "Reminder Email(s) Sent!"
147
msgstr ""
148
149
+ #: subscribe2.php:1103
150
msgid "CSV File Created in wp-content"
151
msgstr ""
152
153
+ #: subscribe2.php:1106
154
msgid "Registered Users Subscribed!"
155
msgstr ""
156
157
+ #: subscribe2.php:1109
158
msgid "Registered Users Unsubscribed!"
159
msgstr ""
160
161
+ #: subscribe2.php:1171
162
msgid "Subscribe Addresses"
163
msgstr ""
164
165
+ #: subscribe2.php:1176
166
msgid "Enter addresses, one per line or comma-seperated"
167
msgstr ""
168
169
+ #: subscribe2.php:1185
170
msgid "Filter"
171
msgstr ""
172
173
+ #: subscribe2.php:1189
174
msgid ""
175
"Registered on the left, confirmed in the middle, unconfirmed on the right"
176
msgstr ""
177
178
+ #: subscribe2.php:1198
179
msgid "Save Emails to CSV File"
180
msgstr ""
181
182
+ #: subscribe2.php:1244
183
msgid "NONE"
184
msgstr ""
185
186
+ #: subscribe2.php:1254
187
msgid "Send Reminder Email"
188
msgstr ""
189
190
+ #: subscribe2.php:1261
191
msgid "Categories"
192
msgstr ""
193
194
+ #: subscribe2.php:1262
195
msgid ""
196
"Existing Registered Users can be automatically (un)subscribed to categories "
197
"using this section."
198
msgstr ""
199
200
+ #: subscribe2.php:1263
201
msgid "Consider User Privacy as changes cannot be undone"
202
msgstr ""
203
204
+ #: subscribe2.php:1344
205
msgid "Delivery Options"
206
msgstr ""
207
208
+ #: subscribe2.php:1345
209
msgid "Send Email From"
210
msgstr ""
211
212
+ #: subscribe2.php:1350
213
msgid "Author of the post"
214
msgstr ""
215
216
+ #: subscribe2.php:1355
217
msgid "Blog Admin"
218
msgstr ""
219
220
+ #: subscribe2.php:1356
221
msgid "Email Templates"
222
msgstr ""
223
224
+ #: subscribe2.php:1359
225
msgid "New Post email (must not be empty)"
226
msgstr ""
227
228
+ #: subscribe2.php:1363
229
msgid "Message substitions"
230
msgstr ""
231
232
+ #: subscribe2.php:1367
233
msgid "the post's title"
234
msgstr ""
235
236
+ #: subscribe2.php:1368
237
msgid ""
238
"the excerpt or the entire post<br />(<i>based on the subscriber's "
239
"preferences</i>)"
240
msgstr ""
241
242
+ #: subscribe2.php:1369
243
msgid "the post's permalink"
244
msgstr ""
245
246
+ #: subscribe2.php:1370
247
msgid "the admin or post author's name"
248
msgstr ""
249
250
+ #: subscribe2.php:1371
251
msgid "the admin or post author's email"
252
msgstr ""
253
254
+ #: subscribe2.php:1372
255
msgid "the post author's name"
256
msgstr ""
257
258
+ #: subscribe2.php:1373
259
msgid ""
260
"the generated link to confirm a request<br />(<i>only used in the "
261
"confirmation email template</i>)"
262
msgstr ""
263
264
+ #: subscribe2.php:1374
265
msgid ""
266
"Action performed by LINK in confirmation email<br />(<i>only used in the "
267
"confirmation email template</i>)"
268
msgstr ""
269
270
+ #: subscribe2.php:1376
271
msgid "Subscribe / Unsubscribe confirmation email"
272
msgstr ""
273
274
+ #: subscribe2.php:1379
275
msgid "Reminder email to Unconfirmed Subscribers"
276
msgstr ""
277
278
+ #: subscribe2.php:1384
279
msgid "Excluded Categories"
280
msgstr ""
281
282
+ #: subscribe2.php:1390
283
msgid "Allow registered users to subscribe to excluded categories?"
284
msgstr ""
285
286
+ #: subscribe2.php:1391
287
msgid "Writing Options"
288
msgstr ""
289
290
+ #: subscribe2.php:1396
291
msgid "Show the Subscribe2 button on the Write toolbar?"
292
msgstr ""
293
294
+ #: subscribe2.php:1399
295
msgid "Auto Subscribe"
296
msgstr ""
297
298
+ #: subscribe2.php:1400
299
msgid "Automatically subscribe new users registering with your blog."
300
msgstr ""
301
302
+ #: subscribe2.php:1405
303
msgid "Yes"
304
msgstr ""
305
306
+ #: subscribe2.php:1410
307
msgid "No"
308
msgstr ""
309
310
+ #: subscribe2.php:1411
311
msgid "Auto-subscribe users to receive email as"
312
msgstr ""
313
314
+ #: subscribe2.php:1416 subscribe2.php:1526
315
msgid "HTML"
316
msgstr ""
317
318
+ #: subscribe2.php:1421
319
msgid "Plain Text - Full"
320
msgstr ""
321
322
+ #: subscribe2.php:1426
323
msgid "Plain Text - Excerpt"
324
msgstr ""
325
326
+ #: subscribe2.php:1429
327
msgid "Barred Domains"
328
msgstr ""
329
330
+ #: subscribe2.php:1430
331
msgid ""
332
"Enter domains to bar from public subscriptions: <br /> (Use a new line for "
333
"each entry and omit the \"@\" symbol, for example email.com)"
334
msgstr ""
335
336
+ #: subscribe2.php:1434
337
msgid "Submit"
338
msgstr ""
339
340
+ #: subscribe2.php:1439
341
msgid "Reset Default"
342
msgstr ""
343
344
+ #: subscribe2.php:1440
345
msgid ""
346
"Use this to reset all options to their defaults. This <strong><em>will not</"
347
"em></strong> modify your list of subscribers."
348
msgstr ""
349
350
+ #: subscribe2.php:1447
351
msgid "RESET"
352
msgstr ""
353
354
+ #: subscribe2.php:1467
355
msgid "Subscription preferences updated."
356
msgstr ""
357
358
+ #: subscribe2.php:1514
359
msgid "Notification Settings"
360
msgstr ""
361
362
+ #: subscribe2.php:1521
363
msgid "Receive email as"
364
msgstr ""
365
366
+ #: subscribe2.php:1531
367
msgid "Plain Text"
368
msgstr ""
369
370
+ #: subscribe2.php:1533
371
msgid "Email contains"
372
msgstr ""
373
374
+ #: subscribe2.php:1534
375
msgid "Excerpt Only"
376
msgstr ""
377
378
+ #: subscribe2.php:1534
379
msgid "Full Post"
380
msgstr ""
381
382
+ #: subscribe2.php:1542
383
msgid "Note: HTML format will always deliver the full post."
384
msgstr ""
385
386
+ #: subscribe2.php:1543
387
msgid "Automatically subscribe me to newly created categories"
388
msgstr ""
389
390
+ #: subscribe2.php:1555
391
msgid "Subscribed Categories"
392
msgstr ""
393
394
+ #: subscribe2.php:1560
395
msgid "Receive daily summary of new posts?"
396
msgstr ""
397
398
+ #: subscribe2.php:1573
399
msgid "Update Preferences &raquo;"
400
msgstr ""
401
402
+ #: subscribe2.php:1618
403
msgid "Send email to all subscribers"
404
msgstr ""
405
406
+ #: subscribe2.php:1623
407
msgid "Subject"
408
msgstr ""
409
410
+ #: subscribe2.php:1623
411
msgid "A message from "
412
msgstr ""
413
414
+ #: subscribe2.php:1626
415
msgid "Recipients: "
416
msgstr ""
417
418
+ #: subscribe2.php:1685
419
msgid "Select / Unselect All"
420
msgstr ""
421
422
+ #: subscribe2.php:1698
423
msgid "All Subscribers"
424
msgstr ""
425
426
+ #: subscribe2.php:1699
427
msgid "Public Subscribers"
428
msgstr ""
429
430
+ #: subscribe2.php:1700
431
msgid "Confirmed"
432
msgstr ""
433
434
+ #: subscribe2.php:1701
435
msgid "Unconfirmed"
436
msgstr ""
437
438
+ #: subscribe2.php:1702
439
msgid "Registered Subscribers"
440
msgstr ""
441
442
+ #: subscribe2.php:1845
443
msgid "Subscription Confirmation"
444
msgstr ""
445
446
+ #: subscribe2.php:1946
447
+ msgid "Daily Digest"
448
msgstr ""