Post Expirator - Version 2.1.0

Version Description

Download this release

Release Info

Developer axelseaa
Plugin Icon 128x128 Post Expirator
Version 2.1.0
Comparing to
See all releases

Code changes from version 2.0.1 to 2.1.0

Files changed (3) hide show
  1. post-expirator.php +162 -60
  2. readme.txt +10 -1
  3. style.css +5 -0
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: 2.0.1
8
Author URI: http://postexpirator.tuxdocs.net/
9
Translation: Thierry (http://palijn.info)
10
Text Domain: post-expirator
@@ -18,7 +18,7 @@ function postExpirator_init() {
18
add_action('plugins_loaded', 'postExpirator_init');
19
20
// Default Values
21
- define('POSTEXPIRATOR_VERSION','2.0.1');
22
define('POSTEXPIRATOR_DATEFORMAT',__('l F jS, Y','post-expirator'));
23
define('POSTEXPIRATOR_TIMEFORMAT',__('g:ia','post-expirator'));
24
define('POSTEXPIRATOR_FOOTERCONTENTS',__('Post expires at EXPIRATIONTIME on EXPIRATIONDATE','post-expirator'));
@@ -62,7 +62,7 @@ function expirationdate_show_value ($column_name) {
62
$id = $post->ID;
63
if ($column_name === 'expirationdate') {
64
$ed = get_post_meta($id,'_expiration-date',true);
65
- echo ($ed ? postexpirator_get_date_from_gmt(date('Y-m-d H:i:s',$ed),get_option('date_format').' '.get_option('time_format')) : __("Never",'post-expirator'));
66
}
67
}
68
add_action ('manage_posts_custom_column', 'expirationdate_show_value');
@@ -89,9 +89,8 @@ function expirationdate_meta_box($post) {
89
$firstsave = get_post_meta($post->ID,'_expiration-date-status',true);
90
$default = '';
91
$expireType = '';
92
if (empty($expirationdatets)) {
93
- $defaults = get_option('expirationdateDefaults'.ucfirst($post->post_type));
94
-
95
$default = get_option('expirationdateDefaultDate',POSTEXPIRATOR_EXPIREDEFAULT);
96
if ($default == 'null') {
97
$defaultmonth = date_i18n('m');
@@ -111,11 +110,11 @@ function expirationdate_meta_box($post) {
111
112
if ( $tz ) date_default_timezone_set('UTC');
113
}
114
- $defaultmonth = postexpirator_get_date_from_gmt(date_i18n('Y-m-d H:i:s',$ts),'m');
115
- $defaultday = postexpirator_get_date_from_gmt(date_i18n('Y-m-d H:i:s',$ts),'d');
116
- $defaultyear = postexpirator_get_date_from_gmt(date_i18n('Y-m-d H:i:s',$ts),'Y');;
117
- $defaulthour = postexpirator_get_date_from_gmt(date_i18n('Y-m-d H:i:s',$ts),'H');
118
- $defaultminute = postexpirator_get_date_from_gmt(date_i18n('Y-m-d H:i:s',$ts),'i');
119
}
120
121
$enabled = '';
@@ -131,11 +130,11 @@ function expirationdate_meta_box($post) {
131
$disabled='';
132
}
133
} else {
134
- $defaultmonth = postexpirator_get_date_from_gmt(date_i18n('Y-m-d H:i:s',$expirationdatets),'m');
135
- $defaultday = postexpirator_get_date_from_gmt(date_i18n('Y-m-d H:i:s',$expirationdatets),'d');
136
- $defaultyear = postexpirator_get_date_from_gmt(date_i18n('Y-m-d H:i:s',$expirationdatets),'Y');
137
- $defaulthour = postexpirator_get_date_from_gmt(date_i18n('Y-m-d H:i:s',$expirationdatets),'H');
138
- $defaultminute = postexpirator_get_date_from_gmt(date_i18n('Y-m-d H:i:s',$expirationdatets),'i');
139
$enabled = ' checked="checked"';
140
$disabled = '';
141
$opts = get_post_meta($post->ID,'_expiration-date-options',true);
@@ -209,7 +208,7 @@ function expirationdate_meta_box($post) {
209
echo implode("\n",$rv);
210
211
echo '<br/>'.__('How to expire','post-expirator').': ';
212
- echo _postExpiratorExpireType(array('name'=>'expirationdate_expiretype','selected'=>$expireType,'disabled'=>$disabled,'onchange' => 'expirationdate_toggle_category(this)'));
213
echo '<br/>';
214
215
if ($post->post_type != 'page') {
@@ -225,9 +224,21 @@ function expirationdate_meta_box($post) {
225
echo '<ul id="categorychecklist" class="list:category categorychecklist form-no-clear">';
226
$walker = new Walker_PostExpirator_Category_Checklist();
227
if (!empty($disabled)) $walker->setDisabled();
228
- wp_terms_checklist(0, array( 'taxonomy' => 'category', 'walker' => $walker, 'selected_cats' => $categories, 'checked_ontop' => false ) );
229
echo '</ul>';
230
echo '</div>';
231
echo '</div>';
232
}
233
echo '<div id="expirationdate_ajax_result"></div>';
@@ -357,6 +368,7 @@ function expirationdate_update_post_meta($id) {
357
if (isset($category) && !empty($category)) {
358
if (!empty($category)) {
359
$opts['category'] = $category;
360
}
361
}
362
}
@@ -459,13 +471,26 @@ function postExpiratorExpire($id) {
459
}
460
} elseif ($expireType == 'category') {
461
if (!empty($category)) {
462
- if (wp_update_post(array('ID' => $id, 'post_category' => $category)) == 0) {
463
- if (POSTEXPIRATOR_DEBUG) $debug->save(array('message' => $id.' -> FAILED '.$expireType.' '.print_r($postoptions,true)));
464
} else {
465
- if (POSTEXPIRATOR_DEBUG) {
466
- $debug->save(array('message' => $id.' -> PROCESSED '.$expireType.' '.print_r($postoptions,true)));
467
- $debug->save(array('message' => $id.' -> CATEGORIES REPLACED '.print_r(_postExpiratorGetCatNames($category),true)));
468
- $debug->save(array('message' => $id.' -> CATEGORIES COMPLETE '.print_r(_postExpiratorGetCatNames($category),true)));
469
}
470
}
471
} else {
@@ -473,38 +498,71 @@ function postExpiratorExpire($id) {
473
}
474
} elseif ($expireType == 'category-add') {
475
if (!empty($category)) {
476
- $cats = wp_get_post_categories($id);
477
- $merged = array_merge($cats,$category);
478
- if (wp_update_post(array('ID' => $id, 'post_category' => $merged)) == 0) {
479
- if (POSTEXPIRATOR_DEBUG) $debug->save(array('message' => $id.' -> FAILED '.$expireType.' '.print_r($postoptions,true)));
480
- } else {
481
- if (POSTEXPIRATOR_DEBUG) {
482
- $debug->save(array('message' => $id.' -> PROCESSED '.$expireType.' '.print_r($postoptions,true)));
483
- $debug->save(array('message' => $id.' -> CATEGORIES ADDED '.print_r(_postExpiratorGetCatNames($category),true)));
484
- $debug->save(array('message' => $id.' -> CATEGORIES COMPLETE '.print_r(_postExpiratorGetCatNames($merged),true)));
485
}
486
}
487
} else {
488
if (POSTEXPIRATOR_DEBUG) $debug->save(array('message' => $id.' -> CATEGORIES MISSING '.$expireType.' '.print_r($postoptions,true)));
489
}
490
} elseif ($expireType == 'category-remove') {
491
if (!empty($category)) {
492
- $cats = wp_get_post_categories($id);
493
- $merged = array();
494
- foreach ($cats as $cat) {
495
- if (!in_array($cat,$category)) {
496
- $merged[] = $cat;
497
- }
498
- }
499
- if (wp_update_post(array('ID' => $id, 'post_category' => $merged)) == 0) {
500
- if (POSTEXPIRATOR_DEBUG) $debug->save(array('message' => $id.' -> FAILED '.$expireType.' '.print_r($postoptions,true)));
501
- } else {
502
- if (POSTEXPIRATOR_DEBUG) {
503
- $debug->save(array('message' => $id.' -> PROCESSED '.$expireType.' '.print_r($postoptions,true)));
504
- $debug->save(array('message' => $id.' -> CATEGORIES REPLACED '.print_r(_postExpiratorGetCatNames($category),true)));
505
- $debug->save(array('message' => $id.' -> CATEGORIES COMPLETE '.print_r(_postExpiratorGetCatNames($merged),true)));
506
}
507
- }
508
} else {
509
if (POSTEXPIRATOR_DEBUG) $debug->save(array('message' => $id.' -> CATEGORIES MISSING '.$expireType.' '.print_r($postoptions,true)));
510
}
@@ -712,7 +770,7 @@ function postExpiratorMenuGeneral() {
712
713
function postExpiratorMenuDefaults() {
714
$debug = postExpiratorDebug();
715
- $types = get_post_types(array('_builtin' => false));
716
array_unshift($types,'post','page');
717
718
if (isset($_POST['expirationdateSaveDefaults'])) {
@@ -724,6 +782,9 @@ function postExpiratorMenuDefaults() {
724
if (isset($_POST['expirationdate_autoenable-'.$type])) {
725
$defaults[$type]['autoEnable'] = intval($_POST['expirationdate_autoenable-'.$type]);
726
}
727
728
//Save Settings
729
update_option('expirationdateDefaults'.ucfirst($type),$defaults[$type]);
@@ -734,7 +795,7 @@ function postExpiratorMenuDefaults() {
734
<form method="post">
735
<h3><?php _e('Default Expiration Values','post-expirator');?></h3>
736
<p>
737
- <?php _e('Use the values below to set the default actions/values to be used for each for the corresponding post types. These values can all be overwridden when creating/editing the post/page.','post-expirator'); ?>
738
</p>
739
<?php
740
foreach ($types as $type) {
@@ -767,6 +828,15 @@ function postExpiratorMenuDefaults() {
767
<?php _e('Select whether the post expirator is enabled for all new posts.','post-expirator');?>
768
</td>
769
</tr>
770
</table>
771
<?php
772
}
@@ -911,7 +981,7 @@ function postexpirator_shortcode($atts) {
911
else if ($type == 'time')
912
$format = $timeformat;
913
914
- return postexpirator_get_date_from_gmt(date_i18n('Y-m-d H:i:s',$expirationdatets),$format);
915
}
916
add_shortcode('postexpirator', 'postexpirator_shortcode');
917
@@ -938,9 +1008,9 @@ function postexpirator_add_footer($text) {
938
'EXPIRATIONTIME'
939
);
940
$replace = array(
941
- postexpirator_get_date_from_gmt(date_i18n('Y-m-d H:i:s',$expirationdatets),"$dateformat $timeformat"),
942
- postexpirator_get_date_from_gmt(date_i18n('Y-m-d H:i:s',$expirationdatets),$dateformat),
943
- postexpirator_get_date_from_gmt(date_i18n('Y-m-d H:i:s',$expirationdatets),$timeformat)
944
);
945
946
$add_to_footer = '<p style="'.$expirationdateFooterStyle.'">'.str_replace($search,$replace,$expirationdateFooterContents).'</p>';
@@ -954,11 +1024,11 @@ add_action('the_content','postexpirator_add_footer',0);
954
function postExpiratorDebug() {
955
$debug = get_option('expirationdateDebug');
956
if ($debug == 1) {
957
- define('POSTEXPIRATOR_DEBUG',1);
958
require_once(plugin_dir_path(__FILE__).'post-expirator-debug.php'); // Load Class
959
return new postExpiratorDebug();
960
} else {
961
- define('POSTEXPIRATOR_DEBUG',0);
962
return false;
963
}
964
}
@@ -1048,6 +1118,11 @@ function postexpirator_upgrade() {
1048
1049
update_option('postexpiratorVersion',POSTEXPIRATOR_VERSION);
1050
}
1051
}
1052
}
1053
add_action('admin_init','postexpirator_upgrade');
@@ -1140,18 +1215,45 @@ function _postExpiratorExpireType($opts) {
1140
extract($opts);
1141
if (!isset($name)) return false;
1142
if (!isset($id)) $id = $name;
1143
- if (!isset($disabled)) $disabled = '';
1144
if (!isset($onchange)) $onchange = '';
1145
if (!isset($type)) $type = '';
1146
1147
$rv = array();
1148
- $rv[] = '<select name="'.$name.'" id="'.$id.'"'.$disabled.' onchange="'.$onchange.'">';
1149
$rv[] = '<option value="draft" '. ($selected == 'draft' ? 'selected="selected"' : '') . '>'.__('Draft','post-expirator').'</option>';
1150
$rv[] = '<option value="delete" '. ($selected == 'delete' ? 'selected="selected"' : '') . '>'.__('Delete','post-expirator').'</option>';
1151
$rv[] = '<option value="private" '. ($selected == 'private' ? 'selected="selected"' : '') . '>'.__('Private','post-expirator').'</option>';
1152
- $rv[] = '<option value="category" '. ($selected == 'category' ? 'selected="selected"' : '') . '>'.__('Category: Replace','post-expirator').'</option>';
1153
- $rv[] = '<option value="category-add" '. ($selected == 'category-add' ? 'selected="selected"' : '') . '>'.__('Category: Add','post-expirator').'</option>';
1154
- $rv[] = '<option value="category-remove" '. ($selected == 'category-remove' ? 'selected="selected"' : '') . '>'.__('Category: Remove','post-expirator').'</option>';
1155
$rv[] = '</select>';
1156
return implode("<br/>/n",$rv);
1157
}
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: 2.1.0
8
Author URI: http://postexpirator.tuxdocs.net/
9
Translation: Thierry (http://palijn.info)
10
Text Domain: post-expirator
18
add_action('plugins_loaded', 'postExpirator_init');
19
20
// Default Values
21
+ define('POSTEXPIRATOR_VERSION','2.1.0');
22
define('POSTEXPIRATOR_DATEFORMAT',__('l F jS, Y','post-expirator'));
23
define('POSTEXPIRATOR_TIMEFORMAT',__('g:ia','post-expirator'));
24
define('POSTEXPIRATOR_FOOTERCONTENTS',__('Post expires at EXPIRATIONTIME on EXPIRATIONDATE','post-expirator'));
62
$id = $post->ID;
63
if ($column_name === 'expirationdate') {
64
$ed = get_post_meta($id,'_expiration-date',true);
65
+ echo ($ed ? postexpirator_get_date_from_gmt(gmdate('Y-m-d H:i:s',$ed),get_option('date_format').' '.get_option('time_format')) : __("Never",'post-expirator'));
66
}
67
}
68
add_action ('manage_posts_custom_column', 'expirationdate_show_value');
89
$firstsave = get_post_meta($post->ID,'_expiration-date-status',true);
90
$default = '';
91
$expireType = '';
92
+ $defaults = get_option('expirationdateDefaults'.ucfirst($post->post_type));
93
if (empty($expirationdatets)) {
94
$default = get_option('expirationdateDefaultDate',POSTEXPIRATOR_EXPIREDEFAULT);
95
if ($default == 'null') {
96
$defaultmonth = date_i18n('m');
110
111
if ( $tz ) date_default_timezone_set('UTC');
112
}
113
+ $defaultmonth = postexpirator_get_date_from_gmt(gmdate('Y-m-d H:i:s',$ts),'m');
114
+ $defaultday = postexpirator_get_date_from_gmt(gmdate('Y-m-d H:i:s',$ts),'d');
115
+ $defaultyear = postexpirator_get_date_from_gmt(gmdate('Y-m-d H:i:s',$ts),'Y');;
116
+ $defaulthour = postexpirator_get_date_from_gmt(gmdate('Y-m-d H:i:s',$ts),'H');
117
+ $defaultminute = postexpirator_get_date_from_gmt(gmdate('Y-m-d H:i:s',$ts),'i');
118
}
119
120
$enabled = '';
130
$disabled='';
131
}
132
} else {
133
+ $defaultmonth = postexpirator_get_date_from_gmt(gmdate('Y-m-d H:i:s',$expirationdatets),'m');
134
+ $defaultday = postexpirator_get_date_from_gmt(gmdate('Y-m-d H:i:s',$expirationdatets),'d');
135
+ $defaultyear = postexpirator_get_date_from_gmt(gmdate('Y-m-d H:i:s',$expirationdatets),'Y');
136
+ $defaulthour = postexpirator_get_date_from_gmt(gmdate('Y-m-d H:i:s',$expirationdatets),'H');
137
+ $defaultminute = postexpirator_get_date_from_gmt(gmdate('Y-m-d H:i:s',$expirationdatets),'i');
138
$enabled = ' checked="checked"';
139
$disabled = '';
140
$opts = get_post_meta($post->ID,'_expiration-date-options',true);
208
echo implode("\n",$rv);
209
210
echo '<br/>'.__('How to expire','post-expirator').': ';
211
+ echo _postExpiratorExpireType(array('type' => $post->post_type, 'name'=>'expirationdate_expiretype','selected'=>$expireType,'disabled'=>$disabled,'onchange' => 'expirationdate_toggle_category(this)'));
212
echo '<br/>';
213
214
if ($post->post_type != 'page') {
224
echo '<ul id="categorychecklist" class="list:category categorychecklist form-no-clear">';
225
$walker = new Walker_PostExpirator_Category_Checklist();
226
if (!empty($disabled)) $walker->setDisabled();
227
+ $taxonomies = get_object_taxonomies($post->post_type,'object');
228
+ $taxonomies = wp_filter_object_list($taxonomies, array('hierarchical' => true));
229
+ if (sizeof($taxonomies) == 0) {
230
+ echo '<p>'.__('You must assign a heirarchical taxonomy to this post type to use this feature.','post-expirator').'</p>';
231
+ } elseif (sizeof($taxonomies) > 1 && !isset($defaults['taxonomy'])) {
232
+ echo '<p>'.__('More than 1 heirachical taxonomy detected. You must assign a default taxonomy on the settings screen.','post-expirator').'</p>';
233
+ } else {
234
+ $taxonomy = isset($defaults['taxonomy']) ? $defaults['taxonomy'] : $taxonomies[0];
235
+ wp_terms_checklist(0, array( 'taxonomy' => $taxonomy, 'walker' => $walker, 'selected_cats' => $categories, 'checked_ontop' => false ) );
236
+ echo '<input type="hidden" name="taxonomy-heirarchical" value="'.$taxonomy.'" />';
237
+ }
238
echo '</ul>';
239
echo '</div>';
240
+ if (isset($taxonomy))
241
+ echo '<p class="post-expirator-taxonomy-name">'.__('Taxonomy Name','post-expirator').': '.$taxonomy.'</p>';
242
echo '</div>';
243
}
244
echo '<div id="expirationdate_ajax_result"></div>';
368
if (isset($category) && !empty($category)) {
369
if (!empty($category)) {
370
$opts['category'] = $category;
371
+ $opts['categoryTaxonomy'] = $_POST['taxonomy-heirarchical'];
372
}
373
}
374
}
471
}
472
} elseif ($expireType == 'category') {
473
if (!empty($category)) {
474
+ if (!isset($categoryTaxonomy) || $categoryTaxonomy == 'category') {
475
+ if (wp_update_post(array('ID' => $id, 'post_category' => $category)) == 0) {
476
+ if (POSTEXPIRATOR_DEBUG) $debug->save(array('message' => $id.' -> FAILED '.$expireType.' '.print_r($postoptions,true)));
477
+ } else {
478
+ if (POSTEXPIRATOR_DEBUG) {
479
+ $debug->save(array('message' => $id.' -> PROCESSED '.$expireType.' '.print_r($postoptions,true)));
480
+ $debug->save(array('message' => $id.' -> CATEGORIES REPLACED '.print_r(_postExpiratorGetCatNames($category),true)));
481
+ $debug->save(array('message' => $id.' -> CATEGORIES COMPLETE '.print_r(_postExpiratorGetCatNames($category),true)));
482
+ }
483
+ }
484
} else {
485
+ $terms = array_map('intval', $category);
486
+ if (is_wp_error(wp_set_object_terms($id,$terms,$categoryTaxonomy,false))) {
487
+ if (POSTEXPIRATOR_DEBUG) $debug->save(array('message' => $id.' -> FAILED '.$expireType.' '.print_r($postoptions,true)));
488
+ } else {
489
+ if (POSTEXPIRATOR_DEBUG) {
490
+ $debug->save(array('message' => $id.' -> PROCESSED '.$expireType.' '.print_r($postoptions,true)));
491
+ $debug->save(array('message' => $id.' -> CATEGORIES REPLACED '.print_r(_postExpiratorGetCatNames($category),true)));
492
+ $debug->save(array('message' => $id.' -> CATEGORIES COMPLETE '.print_r(_postExpiratorGetCatNames($category),true)));
493
+ }
494
}
495
}
496
} else {
498
}
499
} elseif ($expireType == 'category-add') {
500
if (!empty($category)) {
501
+ if (!isset($categoryTaxonomy) || $categoryTaxonomy == 'category') {
502
+ $cats = wp_get_post_categories($id);
503
+ $merged = array_merge($cats,$category);
504
+ if (wp_update_post(array('ID' => $id, 'post_category' => $merged)) == 0) {
505
+ if (POSTEXPIRATOR_DEBUG) $debug->save(array('message' => $id.' -> FAILED '.$expireType.' '.print_r($postoptions,true)));
506
+ } else {
507
+ if (POSTEXPIRATOR_DEBUG) {
508
+ $debug->save(array('message' => $id.' -> PROCESSED '.$expireType.' '.print_r($postoptions,true)));
509
+ $debug->save(array('message' => $id.' -> CATEGORIES ADDED '.print_r(_postExpiratorGetCatNames($category),true)));
510
+ $debug->save(array('message' => $id.' -> CATEGORIES COMPLETE '.print_r(_postExpiratorGetCatNames($merged),true)));
511
+ }
512
}
513
+ } else {
514
+ $terms = array_map('intval', $category);
515
+ if (is_wp_error(wp_set_object_terms($id,$terms,$categoryTaxonomy,true))) {
516
+ if (POSTEXPIRATOR_DEBUG) $debug->save(array('message' => $id.' -> FAILED '.$expireType.' '.print_r($postoptions,true)));
517
+ } else {
518
+ if (POSTEXPIRATOR_DEBUG) {
519
+ $debug->save(array('message' => $id.' -> PROCESSED '.$expireType.' '.print_r($postoptions,true)));
520
+ $debug->save(array('message' => $id.' -> CATEGORIES ADDED '.print_r(_postExpiratorGetCatNames($category),true)));
521
+ $debug->save(array('message' => $id.' -> CATEGORIES COMPLETE '.print_r(_postExpiratorGetCatNames($category),true)));
522
+ }
523
+ }
524
}
525
} else {
526
if (POSTEXPIRATOR_DEBUG) $debug->save(array('message' => $id.' -> CATEGORIES MISSING '.$expireType.' '.print_r($postoptions,true)));
527
}
528
} elseif ($expireType == 'category-remove') {
529
if (!empty($category)) {
530
+ if (!isset($categoryTaxonomy) || $categoryTaxonomy == 'category') {
531
+ $cats = wp_get_post_categories($id);
532
+ $merged = array();
533
+ foreach ($cats as $cat) {
534
+ if (!in_array($cat,$category)) {
535
+ $merged[] = $cat;
536
+ }
537
}
538
+ if (wp_update_post(array('ID' => $id, 'post_category' => $merged)) == 0) {
539
+ if (POSTEXPIRATOR_DEBUG) $debug->save(array('message' => $id.' -> FAILED '.$expireType.' '.print_r($postoptions,true)));
540
+ } else {
541
+ if (POSTEXPIRATOR_DEBUG) {
542
+ $debug->save(array('message' => $id.' -> PROCESSED '.$expireType.' '.print_r($postoptions,true)));
543
+ $debug->save(array('message' => $id.' -> CATEGORIES REMOVED '.print_r(_postExpiratorGetCatNames($category),true)));
544
+ $debug->save(array('message' => $id.' -> CATEGORIES COMPLETE '.print_r(_postExpiratorGetCatNames($merged),true)));
545
+ }
546
+ }
547
+ } else {
548
+ $terms = wp_get_object_terms($id, $categoryTaxonomy, array('fields' => 'ids'));
549
+ $merged = array();
550
+ foreach ($terms as $term) {
551
+ if (!in_array($term,$category)) {
552
+ $merged[] = $term;
553
+ }
554
+ }
555
+ $terms = array_map('intval', $merged);
556
+ if (is_wp_error(wp_set_object_terms($id,$terms,$categoryTaxonomy,false))) {
557
+ if (POSTEXPIRATOR_DEBUG) $debug->save(array('message' => $id.' -> FAILED '.$expireType.' '.print_r($postoptions,true)));
558
+ } else {
559
+ if (POSTEXPIRATOR_DEBUG) {
560
+ $debug->save(array('message' => $id.' -> PROCESSED '.$expireType.' '.print_r($postoptions,true)));
561
+ $debug->save(array('message' => $id.' -> CATEGORIES REMOVED '.print_r(_postExpiratorGetCatNames($category),true)));
562
+ $debug->save(array('message' => $id.' -> CATEGORIES COMPLETE '.print_r(_postExpiratorGetCatNames($category),true)));
563
+ }
564
+ }
565
+ }
566
} else {
567
if (POSTEXPIRATOR_DEBUG) $debug->save(array('message' => $id.' -> CATEGORIES MISSING '.$expireType.' '.print_r($postoptions,true)));
568
}
770
771
function postExpiratorMenuDefaults() {
772
$debug = postExpiratorDebug();
773
+ $types = get_post_types(array('public' => true, '_builtin' => false));
774
array_unshift($types,'post','page');
775
776
if (isset($_POST['expirationdateSaveDefaults'])) {
782
if (isset($_POST['expirationdate_autoenable-'.$type])) {
783
$defaults[$type]['autoEnable'] = intval($_POST['expirationdate_autoenable-'.$type]);
784
}
785
+ if (isset($_POST['expirationdate_taxonomy-'.$type])) {
786
+ $defaults[$type]['taxonomy'] = $_POST['expirationdate_taxonomy-'.$type];
787
+ }
788
789
//Save Settings
790
update_option('expirationdateDefaults'.ucfirst($type),$defaults[$type]);
795
<form method="post">
796
<h3><?php _e('Default Expiration Values','post-expirator');?></h3>
797
<p>
798
+ <?php _e('Use the values below to set the default actions/values to be used for each for the corresponding post types. These values can all be overwritten when creating/editing the post/page.','post-expirator'); ?>
799
</p>
800
<?php
801
foreach ($types as $type) {
828
<?php _e('Select whether the post expirator is enabled for all new posts.','post-expirator');?>
829
</td>
830
</tr>
831
+ <tr valign-"top">
832
+ <th scope="row"><label for="expirationdate_taxonomy-<?php echo $type ?>"><?php _e('Taxonomy (hierarchical):','post-expirator'); ?></label></th>
833
+ <td>
834
+ <?php echo _postExpiratorTaxonomy(array('type' => $type, 'name'=>'expirationdate_taxonomy-'.$type,'selected' => $defaults['taxonomy'])); ?>
835
+ </select>
836
+ <br/>
837
+ <?php _e('Select the hierarchical taxonomy to be used for "category" based expiration.','post-expirator');?>
838
+ </td>
839
+ </tr>
840
</table>
841
<?php
842
}
981
else if ($type == 'time')
982
$format = $timeformat;
983
984
+ return postexpirator_get_date_from_gmt(gmdate('Y-m-d H:i:s',$expirationdatets),$format);
985
}
986
add_shortcode('postexpirator', 'postexpirator_shortcode');
987
1008
'EXPIRATIONTIME'
1009
);
1010
$replace = array(
1011
+ postexpirator_get_date_from_gmt(gmdate('Y-m-d H:i:s',$expirationdatets),"$dateformat $timeformat"),
1012
+ postexpirator_get_date_from_gmt(gmdate('Y-m-d H:i:s',$expirationdatets),$dateformat),
1013
+ postexpirator_get_date_from_gmt(gmdate('Y-m-d H:i:s',$expirationdatets),$timeformat)
1014
);
1015
1016
$add_to_footer = '<p style="'.$expirationdateFooterStyle.'">'.str_replace($search,$replace,$expirationdateFooterContents).'</p>';
1024
function postExpiratorDebug() {
1025
$debug = get_option('expirationdateDebug');
1026
if ($debug == 1) {
1027
+ if (!defined('POSTEXPIRATOR_DEBUG')) define('POSTEXPIRATOR_DEBUG',1);
1028
require_once(plugin_dir_path(__FILE__).'post-expirator-debug.php'); // Load Class
1029
return new postExpiratorDebug();
1030
} else {
1031
+ if (!defined('POSTEXPIRATOR_DEBUG')) define('POSTEXPIRATOR_DEBUG',0);
1032
return false;
1033
}
1034
}
1118
1119
update_option('postexpiratorVersion',POSTEXPIRATOR_VERSION);
1120
}
1121
+
1122
+ if (version_compare($version,'2.1.0') == -1) {
1123
+
1124
+ update_option('postexpiratorVersion',POSTEXPIRATOR_VERSION);
1125
+ }
1126
}
1127
}
1128
add_action('admin_init','postexpirator_upgrade');
1215
extract($opts);
1216
if (!isset($name)) return false;
1217
if (!isset($id)) $id = $name;
1218
+ if (!isset($disabled)) $disabled = false;
1219
if (!isset($onchange)) $onchange = '';
1220
if (!isset($type)) $type = '';
1221
1222
$rv = array();
1223
+ $rv[] = '<select name="'.$name.'" id="'.$id.'"'.($disabled == true ? ' disabled="disabled"' : '').' onchange="'.$onchange.'">';
1224
$rv[] = '<option value="draft" '. ($selected == 'draft' ? 'selected="selected"' : '') . '>'.__('Draft','post-expirator').'</option>';
1225
$rv[] = '<option value="delete" '. ($selected == 'delete' ? 'selected="selected"' : '') . '>'.__('Delete','post-expirator').'</option>';
1226
$rv[] = '<option value="private" '. ($selected == 'private' ? 'selected="selected"' : '') . '>'.__('Private','post-expirator').'</option>';
1227
+ if ($type != 'page') {
1228
+ $rv[] = '<option value="category" '. ($selected == 'category' ? 'selected="selected"' : '') . '>'.__('Category: Replace','post-expirator').'</option>';
1229
+ $rv[] = '<option value="category-add" '. ($selected == 'category-add' ? 'selected="selected"' : '') . '>'.__('Category: Add','post-expirator').'</option>';
1230
+ $rv[] = '<option value="category-remove" '. ($selected == 'category-remove' ? 'selected="selected"' : '') . '>'.__('Category: Remove','post-expirator').'</option>';
1231
+ }
1232
+ $rv[] = '</select>';
1233
+ return implode("<br/>/n",$rv);
1234
+ }
1235
+
1236
+ function _postExpiratorTaxonomy($opts) {
1237
+ if (empty($opts)) return false;
1238
+
1239
+ extract($opts);
1240
+ if (!isset($name)) return false;
1241
+ if (!isset($id)) $id = $name;
1242
+ if (!isset($disabled)) $disabled = false;
1243
+ if (!isset($onchange)) $onchange = '';
1244
+ if (!isset($type)) $type = '';
1245
+
1246
+ $taxonomies = get_object_taxonomies($type,'object');
1247
+ $taxonomies = wp_filter_object_list($taxonomies, array('hierarchical' => true));
1248
+
1249
+ if (empty($taxonomies)) $disabled = true;
1250
+
1251
+ $rv = array();
1252
+ $rv[] = '<select name="'.$name.'" id="'.$id.'"'.($disabled == true ? ' disabled="disabled"' : '').' onchange="'.$onchange.'">';
1253
+ foreach ($taxonomies as $taxonomy) {
1254
+ $rv[] = '<option value="'.$taxonomy->name.'" '. ($selected == $taxonomy->name ? 'selected="selected"' : '') . '>'.$taxonomy->name.'</option>';
1255
+ }
1256
+
1257
$rv[] = '</select>';
1258
return implode("<br/>/n",$rv);
1259
}
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.5.1
6
- Stable tag: 2.0.1
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,15 @@ This section describes how to install the plugin and get it working.
47
48
== Changelog ==
49
50
**Version 2.0.1**
51
52
* Removes old scheduled hook - this was not done completely in the 2.0.0 upgrade
3
Tags: expire, posts, pages, schedule
4
Requires at least: 3.2
5
Tested up to: 3.5.1
6
+ Stable tag: 2.1.0
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 2.1.0**
51
+
52
+ * New: Added support for heirarchical custom taxonomy
53
+ * New: Enhanced custom post type support
54
+ * Fix: Updated debug function to be friendly for scripted calls
55
+ * Fix: Change to only show public custom post types on defaults screen
56
+ * Fix: Removed category expiration options for 'pages', which is currently unsupported
57
+ * Fix: Some date calls were getting "double" converted for the timezone pending how other plugins handled date - this issue should now be resolved
58
+
59
**Version 2.0.1**
60
61
* Removes old scheduled hook - this was not done completely in the 2.0.0 upgrade
style.css CHANGED
@@ -21,3 +21,8 @@
21
.post-expirator-timestamp {
22
width: 150px;
23
}
21
.post-expirator-timestamp {
22
width: 150px;
23
}
24
+ .post-expirator-taxonomy-name {
25
+ margin: 0px;
26
+ font-style: italic;
27
+ font-size: x-small;
28
+ }