Version Description
Download this release
Release Info
Developer | axelseaa |
Plugin | Post Expirator |
Version | 1.6.2 |
Comparing to | |
See all releases |
Code changes from version 1.6.1 to 1.6.2
- post-expirator.php +63 -35
- readme.txt +7 -1
post-expirator.php
CHANGED
@@ -4,7 +4,7 @@ Plugin Name: Post Expirator
|
|
4 |
Plugin URI: http://wordpress.org/extend/plugins/post-expirator/
|
5 |
Description: Allows you to add an expiration date (minute) to posts which you can configure to either delete the post, change it to a draft, or update the post categories at expiration time.
|
6 |
Author: Aaron Axelsen
|
7 |
-
Version: 1.6.
|
8 |
Author URI: http://postexpirator.tuxdocs.net/
|
9 |
Translation: Thierry (http://palijn.info)
|
10 |
Text Domain: post-expirator
|
@@ -19,7 +19,7 @@ add_action('plugins_loaded', 'postExpirator_init');
|
|
19 |
|
20 |
|
21 |
// Default Values
|
22 |
-
define('POSTEXPIRATOR_VERSION','1.6.
|
23 |
define('POSTEXPIRATOR_DATEFORMAT',__('l F jS, Y','post-expirator'));
|
24 |
define('POSTEXPIRATOR_TIMEFORMAT',__('g:ia','post-expirator'));
|
25 |
define('POSTEXPIRATOR_FOOTERCONTENTS',__('Post expires at EXPIRATIONTIME on EXPIRATIONDATE','post-expirator'));
|
@@ -28,6 +28,7 @@ define('POSTEXPIRATOR_POSTSTATUS','Draft');
|
|
28 |
define('POSTEXPIRATOR_PAGESTATUS','Draft');
|
29 |
define('POSTEXPIRATOR_FOOTERDISPLAY','0');
|
30 |
define('POSTEXPIRATOR_CATEGORY','1');
|
|
|
31 |
define('POSTEXPIRATOR_DEBUG','0');
|
32 |
define('POSTEXPIRATOR_CRONSCHEDULE','postexpiratorminute');
|
33 |
define('POSTEXPIRATOR_EXPIREDEFAULT','null');
|
@@ -100,15 +101,15 @@ function expirationdate_delete_expired_posts() {
|
|
100 |
require_once(plugin_dir_path(__FILE__).'post-expirator-debug.php');
|
101 |
|
102 |
$debug = new postExpiratorDebug();
|
103 |
-
$startts =
|
104 |
$debug->save(array('timestamp' => $startts,'message' => 'START'));
|
105 |
$debug->save(array('timestamp' => $startts,'message' => 'SQL EXPIRE: '.$sql));
|
106 |
}
|
107 |
|
108 |
$processsql = 'select post_id from '.$wpdb->postmeta.' where meta_key = "_expiration-date-processed" AND meta_value = "1"';
|
109 |
-
if ($debugEnabled) $debug->save(array('timestamp' =>
|
110 |
$processresult = $wpdb->get_col($processsql);
|
111 |
-
if ($debugEnabled) $debug->save(array('timestamp' =>
|
112 |
|
113 |
if (!empty($result)) foreach ($result as $a) {
|
114 |
// Check to see if already proccessed
|
@@ -128,28 +129,29 @@ function expirationdate_delete_expired_posts() {
|
|
128 |
$cat = get_post_meta($a->post_id,'_expiration-date-category');
|
129 |
if (($catEnabled === false || $catEnabled == 1) && (isset($cat) && !empty($cat[0]))) {
|
130 |
wp_update_post(array('ID' => $a->post_id, 'post_category' => $cat[0]));
|
131 |
-
if ($debugEnabled) $debug->save(array('timestamp' =>
|
132 |
} else {
|
133 |
if ($expiredStatus == 'delete') {
|
134 |
wp_delete_post($a->post_id);
|
135 |
-
if ($debugEnabled) $debug->save(array('timestamp' =>
|
136 |
} else {
|
137 |
wp_update_post(array('ID' => $a->post_id, 'post_status' => 'draft'));
|
138 |
delete_post_meta($a->post_id, 'expiration-date');
|
139 |
update_post_meta($a->post_id, 'expiration-date', $a->meta_value);
|
140 |
-
if ($debugEnabled) $debug->save(array('timestamp' =>
|
141 |
}
|
142 |
}
|
143 |
|
144 |
// Mark as Processed
|
145 |
update_post_meta($a->post_id, '_expiration-date-processed', 1);
|
146 |
-
if ($debugEnabled) $debug->save(array('timestamp' =>
|
147 |
}
|
148 |
-
if ($debugEnabled) $debug->save(array('timestamp' =>
|
149 |
}
|
150 |
-
if (postExpirator_is_wpmu())
|
|
|
151 |
add_action ('expirationdate_delete_'.$current_blog->blog_id, 'expirationdate_delete_expired_posts');
|
152 |
-
else
|
153 |
add_action ('expirationdate_delete', 'expirationdate_delete_expired_posts');
|
154 |
|
155 |
/**
|
@@ -222,6 +224,12 @@ function expirationdate_meta_box($post) {
|
|
222 |
$enabled = '';
|
223 |
$disabled = ' disabled="disabled"';
|
224 |
$categories = get_option('expirationdateCategoryDefaults');
|
|
|
|
|
|
|
|
|
|
|
|
|
225 |
} else {
|
226 |
$defaultmonth = date('F',$expirationdatets);
|
227 |
$defaultday = date('d',$expirationdatets);
|
@@ -483,6 +491,7 @@ function postExpiratorMenuGeneral() {
|
|
483 |
update_option('expirationdateCategoryDefaults',$_POST['expirationdate_category']);
|
484 |
update_option('expirationdateCronSchedule',$_POST['expired-default-cron-schedule']);
|
485 |
update_option('expirationdateDefaultDate',$_POST['expired-default-expiration-date']);
|
|
|
486 |
if ($_POST['expired-custom-expiration-date']) update_option('expirationdateDefaultDateCustom',$_POST['expired-custom-expiration-date']);
|
487 |
postExpiratorResetCronEvent();
|
488 |
echo "<div id='message' class='updated fade'><p>";
|
@@ -497,6 +506,7 @@ function postExpiratorMenuGeneral() {
|
|
497 |
$expirationdateDefaultDateFormat = get_option('expirationdateDefaultDateFormat',POSTEXPIRATOR_DATEFORMAT);
|
498 |
$expirationdateDefaultTimeFormat = get_option('expirationdateDefaultTimeFormat',POSTEXPIRATOR_TIMEFORMAT);
|
499 |
$expiredcategory = get_option('expirationdateCategory',POSTEXPIRATOR_CATEGORY);
|
|
|
500 |
$expireddisplayfooter = get_option('expirationdateDisplayFooter',POSTEXPIRATOR_FOOTERDISPLAY);
|
501 |
$expirationdateFooterContents = get_option('expirationdateFooterContents',POSTEXPIRATOR_FOOTERCONTENTS);
|
502 |
$expirationdateFooterStyle = get_option('expirationdateFooterStyle',POSTEXPIRATOR_FOOTERSTYLE);
|
@@ -520,6 +530,12 @@ function postExpiratorMenuGeneral() {
|
|
520 |
else if ($expiredcategory == 1)
|
521 |
$expiredcategoryenabled = 'checked="checked"';
|
522 |
|
|
|
|
|
|
|
|
|
|
|
|
|
523 |
|
524 |
?>
|
525 |
<p>
|
@@ -558,6 +574,15 @@ function postExpiratorMenuGeneral() {
|
|
558 |
<?php _e('Select whether the page should be deleted or changed to a draft at expiration time.','post-expirator');?>
|
559 |
</td>
|
560 |
</tr>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
561 |
<tr valign-"top">
|
562 |
<th scope="row"><label for="expired-default-date-format"><?php _e('Date Format:','post-expirator');?></label></th>
|
563 |
<td>
|
@@ -945,7 +970,10 @@ function postexpirator_upgrade() {
|
|
945 |
update_option('postexpiratorVersion',POSTEXPIRATOR_VERSION);
|
946 |
update_option('expirationdateDefaultDate',POSTEXPIRATOR_EXPIREDEFAULT);
|
947 |
break;
|
948 |
-
|
|
|
|
|
|
|
949 |
}
|
950 |
}
|
951 |
}
|
@@ -992,6 +1020,7 @@ function expirationdate_deactivate () {
|
|
992 |
delete_option('expirationdateCronSchedule');
|
993 |
delete_option('expirationdateDefaultDate');
|
994 |
delete_option('expirationdateDefaultDateCustom');
|
|
|
995 |
if (postExpirator_is_wpmu())
|
996 |
wp_clear_scheduled_hook('expirationdate_delete_'.$current_blog->blog_id);
|
997 |
else
|
@@ -1003,8 +1032,8 @@ function expirationdate_deactivate () {
|
|
1003 |
register_deactivation_hook (__FILE__, 'expirationdate_deactivate');
|
1004 |
|
1005 |
class Walker_PostExpirator_Category_Checklist extends Walker {
|
1006 |
-
|
1007 |
-
|
1008 |
|
1009 |
var $disabled = '';
|
1010 |
|
@@ -1012,29 +1041,28 @@ class Walker_PostExpirator_Category_Checklist extends Walker {
|
|
1012 |
$this->disabled = 'disabled="disabled"';
|
1013 |
}
|
1014 |
|
1015 |
-
|
1016 |
-
|
1017 |
-
|
1018 |
-
|
1019 |
|
1020 |
-
|
1021 |
-
|
1022 |
-
|
1023 |
-
|
1024 |
|
1025 |
-
|
1026 |
-
|
1027 |
-
|
1028 |
-
|
1029 |
|
1030 |
$name = 'expirationdate_category';
|
1031 |
|
1032 |
-
|
1033 |
-
|
1034 |
-
|
1035 |
-
|
1036 |
-
|
1037 |
-
|
1038 |
-
|
1039 |
}
|
1040 |
-
|
4 |
Plugin URI: http://wordpress.org/extend/plugins/post-expirator/
|
5 |
Description: Allows you to add an expiration date (minute) to posts which you can configure to either delete the post, change it to a draft, or update the post categories at expiration time.
|
6 |
Author: Aaron Axelsen
|
7 |
+
Version: 1.6.2
|
8 |
Author URI: http://postexpirator.tuxdocs.net/
|
9 |
Translation: Thierry (http://palijn.info)
|
10 |
Text Domain: post-expirator
|
19 |
|
20 |
|
21 |
// Default Values
|
22 |
+
define('POSTEXPIRATOR_VERSION','1.6.2');
|
23 |
define('POSTEXPIRATOR_DATEFORMAT',__('l F jS, Y','post-expirator'));
|
24 |
define('POSTEXPIRATOR_TIMEFORMAT',__('g:ia','post-expirator'));
|
25 |
define('POSTEXPIRATOR_FOOTERCONTENTS',__('Post expires at EXPIRATIONTIME on EXPIRATIONDATE','post-expirator'));
|
28 |
define('POSTEXPIRATOR_PAGESTATUS','Draft');
|
29 |
define('POSTEXPIRATOR_FOOTERDISPLAY','0');
|
30 |
define('POSTEXPIRATOR_CATEGORY','1');
|
31 |
+
define('POSTEXPIRATOR_AUTOENABLE','0');
|
32 |
define('POSTEXPIRATOR_DEBUG','0');
|
33 |
define('POSTEXPIRATOR_CRONSCHEDULE','postexpiratorminute');
|
34 |
define('POSTEXPIRATOR_EXPIREDEFAULT','null');
|
101 |
require_once(plugin_dir_path(__FILE__).'post-expirator-debug.php');
|
102 |
|
103 |
$debug = new postExpiratorDebug();
|
104 |
+
$startts = time();
|
105 |
$debug->save(array('timestamp' => $startts,'message' => 'START'));
|
106 |
$debug->save(array('timestamp' => $startts,'message' => 'SQL EXPIRE: '.$sql));
|
107 |
}
|
108 |
|
109 |
$processsql = 'select post_id from '.$wpdb->postmeta.' where meta_key = "_expiration-date-processed" AND meta_value = "1"';
|
110 |
+
if ($debugEnabled) $debug->save(array('timestamp' => time(),'message' => 'SQL PROCESSED: '.$processsql));
|
111 |
$processresult = $wpdb->get_col($processsql);
|
112 |
+
if ($debugEnabled) $debug->save(array('timestamp' => time(),'message' => 'PROCESSED POST IDS: '.print_r($processresult,true)));
|
113 |
|
114 |
if (!empty($result)) foreach ($result as $a) {
|
115 |
// Check to see if already proccessed
|
129 |
$cat = get_post_meta($a->post_id,'_expiration-date-category');
|
130 |
if (($catEnabled === false || $catEnabled == 1) && (isset($cat) && !empty($cat[0]))) {
|
131 |
wp_update_post(array('ID' => $a->post_id, 'post_category' => $cat[0]));
|
132 |
+
if ($debugEnabled) $debug->save(array('timestamp' => time(),'message' => 'EXPIRE: ID:'.$a->post_id.' CATEGORY:'.print_r($cat[0],true)));
|
133 |
} else {
|
134 |
if ($expiredStatus == 'delete') {
|
135 |
wp_delete_post($a->post_id);
|
136 |
+
if ($debugEnabled) $debug->save(array('timestamp' => time(),'message' => 'EXPIRE: ID:'.$a->post_id.' DELETE'));
|
137 |
} else {
|
138 |
wp_update_post(array('ID' => $a->post_id, 'post_status' => 'draft'));
|
139 |
delete_post_meta($a->post_id, 'expiration-date');
|
140 |
update_post_meta($a->post_id, 'expiration-date', $a->meta_value);
|
141 |
+
if ($debugEnabled) $debug->save(array('timestamp' => time(),'message' => 'EXPIRE: ID:'.$a->post_id.' DRAFT'));
|
142 |
}
|
143 |
}
|
144 |
|
145 |
// Mark as Processed
|
146 |
update_post_meta($a->post_id, '_expiration-date-processed', 1);
|
147 |
+
if ($debugEnabled) $debug->save(array('timestamp' => time(),'message' => 'PROCESSED: ID:'.$a->post_id));
|
148 |
}
|
149 |
+
if ($debugEnabled) $debug->save(array('timestamp' => time(),'message' => 'END - DURATION: '.(time() - $startts)));
|
150 |
}
|
151 |
+
if (postExpirator_is_wpmu()) {
|
152 |
+
global $current_blog;
|
153 |
add_action ('expirationdate_delete_'.$current_blog->blog_id, 'expirationdate_delete_expired_posts');
|
154 |
+
} else
|
155 |
add_action ('expirationdate_delete', 'expirationdate_delete_expired_posts');
|
156 |
|
157 |
/**
|
224 |
$enabled = '';
|
225 |
$disabled = ' disabled="disabled"';
|
226 |
$categories = get_option('expirationdateCategoryDefaults');
|
227 |
+
|
228 |
+
$expiredauto = get_option('expirationdateAutoEnabled',POSTEXPIRATOR_AUTOENABLE);
|
229 |
+
if ($expiredauto === true || $expiredauto == 1) {
|
230 |
+
$enabled = ' checked="checked"';
|
231 |
+
$disabled='';
|
232 |
+
}
|
233 |
} else {
|
234 |
$defaultmonth = date('F',$expirationdatets);
|
235 |
$defaultday = date('d',$expirationdatets);
|
491 |
update_option('expirationdateCategoryDefaults',$_POST['expirationdate_category']);
|
492 |
update_option('expirationdateCronSchedule',$_POST['expired-default-cron-schedule']);
|
493 |
update_option('expirationdateDefaultDate',$_POST['expired-default-expiration-date']);
|
494 |
+
update_option('expirationdateAutoEnabled',$_POST['expired-auto-enable']);
|
495 |
if ($_POST['expired-custom-expiration-date']) update_option('expirationdateDefaultDateCustom',$_POST['expired-custom-expiration-date']);
|
496 |
postExpiratorResetCronEvent();
|
497 |
echo "<div id='message' class='updated fade'><p>";
|
506 |
$expirationdateDefaultDateFormat = get_option('expirationdateDefaultDateFormat',POSTEXPIRATOR_DATEFORMAT);
|
507 |
$expirationdateDefaultTimeFormat = get_option('expirationdateDefaultTimeFormat',POSTEXPIRATOR_TIMEFORMAT);
|
508 |
$expiredcategory = get_option('expirationdateCategory',POSTEXPIRATOR_CATEGORY);
|
509 |
+
$expiredauto = get_option('expirationdateAutoEnabled',POSTEXPIRATOR_AUTOENABLE);
|
510 |
$expireddisplayfooter = get_option('expirationdateDisplayFooter',POSTEXPIRATOR_FOOTERDISPLAY);
|
511 |
$expirationdateFooterContents = get_option('expirationdateFooterContents',POSTEXPIRATOR_FOOTERCONTENTS);
|
512 |
$expirationdateFooterStyle = get_option('expirationdateFooterStyle',POSTEXPIRATOR_FOOTERSTYLE);
|
530 |
else if ($expiredcategory == 1)
|
531 |
$expiredcategoryenabled = 'checked="checked"';
|
532 |
|
533 |
+
$expiredautoenabled = '';
|
534 |
+
$expiredautodisabled = '';
|
535 |
+
if ($expiredauto == 0)
|
536 |
+
$expiredautodisabled = 'checked="checked"';
|
537 |
+
else if ($expiredauto == 1)
|
538 |
+
$expiredautoenabled= 'checked="checked"';
|
539 |
|
540 |
?>
|
541 |
<p>
|
574 |
<?php _e('Select whether the page should be deleted or changed to a draft at expiration time.','post-expirator');?>
|
575 |
</td>
|
576 |
</tr>
|
577 |
+
<tr valign-"top">
|
578 |
+
<th scope="row"><label for="expired-auto-enable"><?php _e('Auto-Enable Post Expirator:','post-expirator');?></label></th>
|
579 |
+
<td>
|
580 |
+
<input type="radio" name="expired-auto-enable" id="expired-auto-enable-true" value="1" <?php echo $expiredautoenabled ?>/> <label for="expired-auto-enable-true"><?php _e('Enabled','post-expirator');?></label>
|
581 |
+
<input type="radio" name="expired-auto-enable" id="expired-auto-enable-false" value="0" <?php echo $expiredautodisabled ?>/> <label for="expired-auto-enable-false"><?php _e('Disabled','post-expirator');?></label>
|
582 |
+
<br/>
|
583 |
+
<?php _e('Select whether the post expirator is enabled for all new posts.','post-expirator');?>
|
584 |
+
</td>
|
585 |
+
</tr>
|
586 |
<tr valign-"top">
|
587 |
<th scope="row"><label for="expired-default-date-format"><?php _e('Date Format:','post-expirator');?></label></th>
|
588 |
<td>
|
970 |
update_option('postexpiratorVersion',POSTEXPIRATOR_VERSION);
|
971 |
update_option('expirationdateDefaultDate',POSTEXPIRATOR_EXPIREDEFAULT);
|
972 |
break;
|
973 |
+
case '1.6.2':
|
974 |
+
update_option('postexpiratorVersion',POSTEXPIRATOR_VERSION);
|
975 |
+
update_option('expirationdateAutoEnabled',POSTEXPIRATOR_AUTOENABLE);
|
976 |
+
break;
|
977 |
}
|
978 |
}
|
979 |
}
|
1020 |
delete_option('expirationdateCronSchedule');
|
1021 |
delete_option('expirationdateDefaultDate');
|
1022 |
delete_option('expirationdateDefaultDateCustom');
|
1023 |
+
delete_option('expirationdateAutoEnabled');
|
1024 |
if (postExpirator_is_wpmu())
|
1025 |
wp_clear_scheduled_hook('expirationdate_delete_'.$current_blog->blog_id);
|
1026 |
else
|
1032 |
register_deactivation_hook (__FILE__, 'expirationdate_deactivate');
|
1033 |
|
1034 |
class Walker_PostExpirator_Category_Checklist extends Walker {
|
1035 |
+
var $tree_type = 'category';
|
1036 |
+
var $db_fields = array ('parent' => 'parent', 'id' => 'term_id'); //TODO: decouple this
|
1037 |
|
1038 |
var $disabled = '';
|
1039 |
|
1041 |
$this->disabled = 'disabled="disabled"';
|
1042 |
}
|
1043 |
|
1044 |
+
function start_lvl(&$output, $depth, $args) {
|
1045 |
+
$indent = str_repeat("\t", $depth);
|
1046 |
+
$output .= "$indent<ul class='children'>\n";
|
1047 |
+
}
|
1048 |
|
1049 |
+
function end_lvl(&$output, $depth, $args) {
|
1050 |
+
$indent = str_repeat("\t", $depth);
|
1051 |
+
$output .= "$indent</ul>\n";
|
1052 |
+
}
|
1053 |
|
1054 |
+
function start_el(&$output, $category, $depth, $args) {
|
1055 |
+
extract($args);
|
1056 |
+
if ( empty($taxonomy) )
|
1057 |
+
$taxonomy = 'category';
|
1058 |
|
1059 |
$name = 'expirationdate_category';
|
1060 |
|
1061 |
+
$class = in_array( $category->term_id, $popular_cats ) ? ' class="popular-category"' : '';
|
1062 |
+
$output .= "\n<li id='{$taxonomy}-{$category->term_id}'$class>" . '<label class="selectit"><input value="' . $category->term_id . '" type="checkbox" name="'.$name.'[]" id="in-'.$taxonomy.'-' . $category->term_id . '"' . checked( in_array( $category->term_id, $selected_cats ), true, false ) . disabled( empty( $args['disabled'] ), false, false ) . ' '.$this->disabled.'/> ' . esc_html( apply_filters('the_category', $category->name )) . '</label>';
|
1063 |
+
}
|
1064 |
+
|
1065 |
+
function end_el(&$output, $category, $depth, $args) {
|
1066 |
+
$output .= "</li>\n";
|
1067 |
+
}
|
1068 |
}
|
|
readme.txt
CHANGED
@@ -3,7 +3,7 @@ Contributors: axelseaa
|
|
3 |
Tags: expire, posts, pages, schedule
|
4 |
Requires at least: 3.2
|
5 |
Tested up to: 3.4
|
6 |
-
Stable tag: 1.6.
|
7 |
|
8 |
Allows you to add an expiration date to posts which you can configure to either delete the post, change it to a draft, or update the
|
9 |
post categories.
|
@@ -47,6 +47,12 @@ This section describes how to install the plugin and get it working.
|
|
47 |
|
48 |
== Changelog ==
|
49 |
|
|
|
|
|
|
|
|
|
|
|
|
|
50 |
**Version 1.6.1**
|
51 |
|
52 |
* Tweaked error messages, removed clicks for reset cron event
|
3 |
Tags: expire, posts, pages, schedule
|
4 |
Requires at least: 3.2
|
5 |
Tested up to: 3.4
|
6 |
+
Stable tag: 1.6.2
|
7 |
|
8 |
Allows you to add an expiration date to posts which you can configure to either delete the post, change it to a draft, or update the
|
9 |
post categories.
|
47 |
|
48 |
== Changelog ==
|
49 |
|
50 |
+
**Version 1.6.2**
|
51 |
+
|
52 |
+
* Added the ability to configure the post expirator to be enabled by default for all new posts
|
53 |
+
* Changed some instances of mktime to time
|
54 |
+
* Fixed missing global call for MS installs
|
55 |
+
|
56 |
**Version 1.6.1**
|
57 |
|
58 |
* Tweaked error messages, removed clicks for reset cron event
|