Post Expirator - Version 1.3

Version Description

Download this release

Release Info

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

Code changes from version 1.2.1 to 1.3

Files changed (2) hide show
  1. post-expirator.php +181 -13
  2. readme.txt +13 -1
post-expirator.php CHANGED
@@ -4,12 +4,15 @@ Plugin Name: Post Expirator
4
Plugin URI: http://wordpress.org/extend/plugins/post-expirator/
5
Description: Allows you to add an expiration date (hourly) to posts which you can configure to either delete the post or change it to a draft.
6
Author: Aaron Axelsen
7
- Version: 1.2.1
8
Author URI: http://www.frozenpc.net
9
*/
10
11
// Default Values
12
- $expirationdateDefaultDateFormat = 'l F jS, Y g:ia';
13
14
/**
15
* Function that does the actualy deleting - called by wp_cron
@@ -42,10 +45,15 @@ add_action ('expirationdate_delete_'.$current_blog->blog_id, 'expirationdate_del
42
* Called at plugin activation
43
*/
44
function expirationdate_activate () {
45
- global $current_blog,$expirationdateDefaultDateFormat;
46
update_option('expirationdateExpiredPostStatus','Draft');
47
update_option('expirationdateExpiredPageStatus','Draft');
48
update_option('expirationdateDefaultDateFormat',$expirationdateDefaultDateFormat);
49
wp_schedule_event(mktime(date('H'),0,0,date('m'),date('d'),date('Y')), 'hourly', 'expirationdate_delete_'.$current_blog->blog_id);
50
}
51
register_activation_hook (__FILE__, 'expirationdate_activate');
@@ -58,6 +66,10 @@ function expirationdate_deactivate () {
58
delete_option('expirationdateExpiredPostStatus');
59
delete_option('expirationdateExpiredPageStatus');
60
delete_option('expirationdateDefaultDateFormat');
61
wp_clear_scheduled_hook('expirationdate_delete_'.$current_blog->blog_id);
62
}
63
register_deactivation_hook (__FILE__, 'expirationdate_deactivate');
@@ -162,6 +174,7 @@ function expirationdate_meta_box($post) {
162
$rv[] = '</select>';
163
$rv[] = '</td><td>@</td><td>';
164
$rv[] = '<input type="text" id="expirationdate_hour" name="expirationdate_hour" value="'.$defaulthour.'" size="2"'.$disabled.'" />';
165
$rv[] = '</td></tr></table>';
166
167
$rv[] = '<div id="expirationdate_ajax_result"></div>';
@@ -240,8 +253,8 @@ function expirationdate_get_blog_url() {
240
* Called when post is saved - stores expiration-date meta value
241
*/
242
function expirationdate_update_post_meta($id) {
243
- if ( 'autosave' == $_POST['action'] )
244
- return;
245
246
$month = $_POST['expirationdate_month'];
247
$day = $_POST['expirationdate_day'];
@@ -277,6 +290,10 @@ function expirationdate_show_options() {
277
update_option('expirationdateExpiredPostStatus',$_POST['expired-post-status']);
278
update_option('expirationdateExpiredPageStatus',$_POST['expired-page-status']);
279
update_option('expirationdateDefaultDateFormat',$_POST['expired-default-date-format']);
280
echo "<div id='message' class='updated fade'><p>Saved Options!</p></div>";
281
}
282
@@ -295,6 +312,35 @@ function expirationdate_show_options() {
295
$expirationdateDefaultDateFormat = $expirationdateDefaultDateFormat;
296
}
297
298
?>
299
<div class="wrap">
300
<h2><?php _e('Post Expirator Options'); ?></h2>
@@ -302,7 +348,15 @@ function expirationdate_show_options() {
302
The post expirator plugin sets a custom meta value, and then optionally allows you to select if you want the post
303
changed to a draft status or deleted when it expires.
304
</p>
305
<form method="post" id="expirationdate_save_options">
306
<table class="form-table">
307
<tr valign-"top">
308
<th scope="row"><label for="expired-post-status">Set Post To:</label></th>
@@ -327,12 +381,57 @@ function expirationdate_show_options() {
327
</td>
328
</tr>
329
<tr valign-"top">
330
- <th scope="row"><label for="expired-default-date-format">Default Date Format:</label></th>
331
<td>
332
<input type="text" name="expired-default-date-format" id="expired-default-date-format" value="<?php echo $expirationdateDefaultDateFormat ?>" size="25" /> (<?php echo date("$expirationdateDefaultDateFormat") ?>)
333
<br/>
334
The default format to use when displaying the expiration date within a post using the [postexpirator]
335
- shortcode. For information on valid formatting options, see: <a href="http://us2.php.net/manual/en/function.date.php" target="_blank">PHP Date Function</a>.
336
</td>
337
</tr>
338
</table>
@@ -346,19 +445,88 @@ function expirationdate_show_options() {
346
347
// [postexpirator format="l F jS, Y g:ia" tz="foo"]
348
function postexpirator_shortcode($atts) {
349
- global $post,$expirationdateDefaultDateFormat;
350
$expirationdatets = get_post_meta($post->ID,'expiration-date',true);
351
if (empty($expirationdatets))
352
return false;
353
extract(shortcode_atts(array(
354
- 'format' => get_option('expirationdateDefaultDateFormat'),
355
- 'tz' => date('T'),
356
), $atts));
357
358
- $postexpirator_date_display = get_option('expirationdateDefaultDateFormat');
359
- if (empty($format))
360
- $format = $expirationdateDefaultDateFormat;
361
362
return date("$format",$expirationdatets);
363
}
364
add_shortcode('postexpirator', 'postexpirator_shortcode');
4
Plugin URI: http://wordpress.org/extend/plugins/post-expirator/
5
Description: Allows you to add an expiration date (hourly) to posts which you can configure to either delete the post or change it to a draft.
6
Author: Aaron Axelsen
7
+ Version: 1.3
8
Author URI: http://www.frozenpc.net
9
*/
10
11
// Default Values
12
+ $expirationdateDefaultDateFormat = 'l F jS, Y';
13
+ $expirationdateDefaultTimeFormat = 'g:ia';
14
+ $expirationdateDefaultFooterContents = 'Post expires at EXPIRATIONTIME on EXPIRATIONDATE';
15
+ $expirationdateDefaultFooterStyle = 'font-style: italic;';
16
17
/**
18
* Function that does the actualy deleting - called by wp_cron
45
* Called at plugin activation
46
*/
47
function expirationdate_activate () {
48
+ global $current_blog,$expirationdateDefaultDateFormat,$expirationdateDefaultTimeFormat,$expirationdateDefaultFooterContents,$expirationdateDefaultFooterStyle;
49
update_option('expirationdateExpiredPostStatus','Draft');
50
update_option('expirationdateExpiredPageStatus','Draft');
51
update_option('expirationdateDefaultDateFormat',$expirationdateDefaultDateFormat);
52
+ update_option('expirationdateDefaultTimeFormat',$expirationdateDefaultTimeFormat);
53
+ update_option('expirationdateFooterContents',$expirationdateDefaultFooterContents);
54
+ update_option('expirationdateFooterStyle',$expirationdateDefaultFooterStyle);
55
+ update_option('expirationdateDisplayFooter',0);
56
+
57
wp_schedule_event(mktime(date('H'),0,0,date('m'),date('d'),date('Y')), 'hourly', 'expirationdate_delete_'.$current_blog->blog_id);
58
}
59
register_activation_hook (__FILE__, 'expirationdate_activate');
66
delete_option('expirationdateExpiredPostStatus');
67
delete_option('expirationdateExpiredPageStatus');
68
delete_option('expirationdateDefaultDateFormat');
69
+ delete_option('expirationdateDefaultTimeFormat');
70
+ delete_option('expirationdateDisplayFooter');
71
+ delete_option('expirationdateFooterContents');
72
+ delete_option('expirationdateFooterStyle');
73
wp_clear_scheduled_hook('expirationdate_delete_'.$current_blog->blog_id);
74
}
75
register_deactivation_hook (__FILE__, 'expirationdate_deactivate');
174
$rv[] = '</select>';
175
$rv[] = '</td><td>@</td><td>';
176
$rv[] = '<input type="text" id="expirationdate_hour" name="expirationdate_hour" value="'.$defaulthour.'" size="2"'.$disabled.'" />';
177
+ $rv[] = '<input type="hidden" name="expirationdate_formcheck" value="true" />';
178
$rv[] = '</td></tr></table>';
179
180
$rv[] = '<div id="expirationdate_ajax_result"></div>';
253
* Called when post is saved - stores expiration-date meta value
254
*/
255
function expirationdate_update_post_meta($id) {
256
+ if (!isset($_POST['expirationdate_formcheck']))
257
+ return false;
258
259
$month = $_POST['expirationdate_month'];
260
$day = $_POST['expirationdate_day'];
290
update_option('expirationdateExpiredPostStatus',$_POST['expired-post-status']);
291
update_option('expirationdateExpiredPageStatus',$_POST['expired-page-status']);
292
update_option('expirationdateDefaultDateFormat',$_POST['expired-default-date-format']);
293
+ update_option('expirationdateDefaultTimeFormat',$_POST['expired-default-time-format']);
294
+ update_option('expirationdateDisplayFooter',$_POST['expired-display-footer']);
295
+ update_option('expirationdateFooterContents',$_POST['expired-footer-contents']);
296
+ update_option('expirationdateFooterStyle',$_POST['expired-footer-style']);
297
echo "<div id='message' class='updated fade'><p>Saved Options!</p></div>";
298
}
299
312
$expirationdateDefaultDateFormat = $expirationdateDefaultDateFormat;
313
}
314
315
+ $expirationdateDefaultTimeFormat = get_option('expirationdateDefaultTimeFormat');
316
+ if (empty($expirationdateDefaultTimeFormat)) {
317
+ global $expirationdateDefaultTimeFormat;
318
+ $expirationdateDefaultTimeFormat = $expirationdateDefaultTimeFormat;
319
+ }
320
+
321
+ $expireddisplayfooter = get_option('expirationdateDisplayFooter');
322
+ if (empty($expireddisplayfooter))
323
+ $expireddisplayfooter = 0;
324
+
325
+ $expireddisplayfooterenabled = '';
326
+ $expireddisplayfooterdisabled = '';
327
+ if ($expireddisplayfooter == 0)
328
+ $expireddisplayfooterdisabled = 'checked="checked"';
329
+ else if ($expireddisplayfooter == 1)
330
+ $expireddisplayfooterenabled = 'checked="checked"';
331
+
332
+ $expirationdateFooterContents = get_option('expirationdateFooterContents');
333
+ if (empty($expirationdateFooterContents)) {
334
+ global $expirationdateDefaultFooterContents;
335
+ $expirationdateFooterContents = $expirationdateDefaultFooterContents;
336
+ }
337
+
338
+ $expirationdateFooterStyle = get_option('expirationdateFooterStyle');
339
+ if (empty($expirationdateFooterStyle)) {
340
+ global $expirationdateDefaultFooterStyle;
341
+ $expirationdateFooterStyle = $expirationdateDefaultFooterStyle;
342
+ }
343
+
344
?>
345
<div class="wrap">
346
<h2><?php _e('Post Expirator Options'); ?></h2>
348
The post expirator plugin sets a custom meta value, and then optionally allows you to select if you want the post
349
changed to a draft status or deleted when it expires.
350
</p>
351
+ <p>Valid [postexpiration] attributes:
352
+ <ul>
353
+ <li>type - defaults to full - valid options are full,date,time</li>
354
+ <li>dateformat - format set here will override the value set on the settings page</li>
355
+ <li>timeformat - format set here will override the value set on the settings page</li>
356
+ </ul>
357
+ </p>
358
<form method="post" id="expirationdate_save_options">
359
+ <h3>Defaults</h3>
360
<table class="form-table">
361
<tr valign-"top">
362
<th scope="row"><label for="expired-post-status">Set Post To:</label></th>
381
</td>
382
</tr>
383
<tr valign-"top">
384
+ <th scope="row"><label for="expired-default-date-format">Date Format:</label></th>
385
<td>
386
<input type="text" name="expired-default-date-format" id="expired-default-date-format" value="<?php echo $expirationdateDefaultDateFormat ?>" size="25" /> (<?php echo date("$expirationdateDefaultDateFormat") ?>)
387
<br/>
388
The default format to use when displaying the expiration date within a post using the [postexpirator]
389
+ shortcode or within the footer. For information on valid formatting options, see: <a href="http://us2.php.net/manual/en/function.date.php" target="_blank">PHP Date Function</a>.
390
+ </td>
391
+ </tr>
392
+ <tr valign-"top">
393
+ <th scope="row"><label for="expired-default-time-format">Time Format:</label></th>
394
+ <td>
395
+ <input type="text" name="expired-default-time-format" id="expired-default-time-format" value="<?php echo $expirationdateDefaultTimeFormat ?>" size="25" /> (<?php echo date("$expirationdateDefaultTimeFormat") ?>)
396
+ <br/>
397
+ The default format to use when displaying the expiration time within a post using the [postexpirator]
398
+ shortcode or within the footer. For information on valid formatting options, see: <a href="http://us2.php.net/manual/en/function.date.php" target="_blank">PHP Date Function</a>.
399
+ </td>
400
+ </tr>
401
+ </table>
402
+ <h3>Post Footer Display</h3>
403
+ <p>Enabling this below will display the expiration date automatically at the end of any post which is set to expire.</p>
404
+ <table class="form-table">
405
+ <tr valign-"top">
406
+ <th scope="row">Show in post footer?</th>
407
+ <td>
408
+ <input type="radio" name="expired-display-footer" id="expired-display-footer-true" value="1" <?php echo $expireddisplayfooterenabled ?>/> <label for="expired-display-footer-true">Enabled</label>
409
+ <input type="radio" name="expired-display-footer" id="expired-display-footer-false" value="0" <?php echo $expireddisplayfooterdisabled ?>/> <label for="expired-display-footer-false">Disabled</label>
410
+ <br/>
411
+ This will enable or disable displaying the post expiration date in the post footer.
412
+ </td>
413
+ </tr>
414
+ <tr valign-"top">
415
+ <th scope="row"><label for="expired-footer-contents">Footer Contents:</label></th>
416
+ <td>
417
+ <textarea id="expired-footer-contents" name="expired-footer-contents" rows="3" cols="50"><?php echo $expirationdateFooterContents; ?></textarea>
418
+ <br/>
419
+ Enter the text you would like to appear at the bottom of every post that will expire. The following placeholders will be replaced
420
+ with the post expiration date in the following format:
421
+ <ul>
422
+ <li>EXPIRATIONFULL -> <?php echo date("$expirationdateDefaultDateFormat $expirationdateDefaultTimeFormat") ?></li>
423
+ <li>EXPIRATIONDATE -> <?php echo date("$expirationdateDefaultDateFormat") ?></li>
424
+ <li>EXPIRATIONTIME -> <?php echo date("$expirationdateDefaultTimeFormat") ?></li>
425
+ </ul>
426
+ </td>
427
+ </tr>
428
+ <tr valign-"top">
429
+ <th scope="row"><label for="expired-footer-style">Footer Style:</label></th>
430
+ <td>
431
+ <input type="text" name="expired-footer-style" id="expired-footer-style" value="<?php echo $expirationdateFooterStyle ?>" size="25" />
432
+ (<span style="<?php echo $expirationdateFooterStyle ?>">This post will expire on <?php echo date("$expirationdateDefaultDateFormat $expirationdateDefaultTimeFormat"); ?></span>)
433
+ <br/>
434
+ The inline css which will be used to style the footer text.
435
</td>
436
</tr>
437
</table>
445
446
// [postexpirator format="l F jS, Y g:ia" tz="foo"]
447
function postexpirator_shortcode($atts) {
448
+ global $post;
449
+
450
$expirationdatets = get_post_meta($post->ID,'expiration-date',true);
451
if (empty($expirationdatets))
452
return false;
453
+
454
extract(shortcode_atts(array(
455
+ 'dateformat' => get_option('expirationdateDefaultDateFormat'),
456
+ 'timeformat' => get_option('expirationdateDefaultTimeFormat'),
457
+ 'type' => full,
458
+ 'tz' => date('T')
459
), $atts));
460
461
+ if (empty($dateformat)) {
462
+ global $expirationdateDefaultDateFormat;
463
+ $dateformat = $expirationdateDefaultDateFormat;
464
+ }
465
+
466
+ if (empty($timeformat)) {
467
+ global $expirationdateDefaultTimeFormat;
468
+ $timeformat = $expirationdateDefaultTimeFormat;
469
+ }
470
+
471
+ if ($type == 'full')
472
+ $format = $dateformat.' '.$timeformat;
473
+ else if ($type == 'date')
474
+ $format = $dateformat;
475
+ else if ($type == 'time')
476
+ $format = $timeformat;
477
478
return date("$format",$expirationdatets);
479
}
480
add_shortcode('postexpirator', 'postexpirator_shortcode');
481
+
482
+ function postexpirator_add_footer($text) {
483
+ global $post;
484
+
485
+ // Check to see if its enabled
486
+ $displayFooter = get_option('expirationdateDisplayFooter');
487
+ if ($displayFooter === false || $displayFooter == 0)
488
+ return $text;
489
+
490
+ $expirationdatets = get_post_meta($post->ID,'expiration-date',true);
491
+ if (!is_numeric($expirationdatets))
492
+ return $text;
493
+
494
+ $dateformat = get_option('expirationdateDefaultDateFormat');
495
+ if (empty($dateformat)) {
496
+ global $expirationdateDefaultDateFormat;
497
+ $dateformat = $expirationdateDefaultDateFormat;
498
+ }
499
+
500
+ $timeformat = get_option('expirationdateDefaultTimeFormat');
501
+ if (empty($timeformat)) {
502
+ global $expirationdateDefaultTimeFormat;
503
+ $timeformat = $expirationdateDefaultTimeFormat;
504
+ }
505
+
506
+ $expirationdateFooterContents = get_option('expirationdateFooterContents');
507
+ if (empty($expirationdateFooterContents)) {
508
+ global $expirationdateDefaultFooterContents;
509
+ $expirationdateFooterContents = $expirationdateDefaultFooterContents;
510
+ }
511
+
512
+ $expirationdateFooterStyle = get_option('expirationdateFooterStyle');
513
+ if (empty($expirationdateFooterStyle)) {
514
+ global $expirationdateDefaultFooterStyle;
515
+ $expirationdateFooterStyle = $expirationdateDefaultFooterStyle;
516
+ }
517
+
518
+ $search = array(
519
+ 'EXPIRATIONFULL',
520
+ 'EXPIRATIONDATE',
521
+ 'EXPIRATIONTIME'
522
+ );
523
+ $replace = array(
524
+ date("$dateformat $timeformat",$expirationdatets),
525
+ date("$dateformat",$expirationdatets),
526
+ date("$timeformat",$expirationdatets)
527
+ );
528
+
529
+ $add_to_footer = '<p style="'.$expirationdateFooterStyle.'">'.str_replace($search,$replace,$expirationdateFooterContents).'</p>';
530
+ return $text.$add_to_footer;
531
+ }
532
+ add_action('the_content','postexpirator_add_footer',0);
readme.txt CHANGED
@@ -15,7 +15,13 @@ area that will allow you to seperataly control whether or not posts/pages are wi
15
The plugin hooks into the wp cron processes and runs every hour.
16
17
The expiration date can be displayed within the actual post by using the [postexpirator] tag. The format attribute will override the plugin
18
- default display format. See the [PHP Date Function](http://us2.php.net/manual/en/function.date.php) for valid format options.
19
20
== Wordpress MU ==
21
@@ -35,6 +41,12 @@ This section describes how to install the plugin and get it working.
35
36
== Changelog ==
37
38
**Version 1.2.1**
39
40
* Fixed issue with display date format not being recognized after upgrade
15
The plugin hooks into the wp cron processes and runs every hour.
16
17
The expiration date can be displayed within the actual post by using the [postexpirator] tag. The format attribute will override the plugin
18
+ default display format. See the [PHP Date Function](http://us2.php.net/manual/en/function.date.php) for valid date/time format options.
19
+
20
+ **[postexpirator] shortcode attributes**
21
+
22
+ * type - defaults to full - valid options are full,date,time
23
+ * dateformat - format set here will override the value set on the settings page
24
+ * timeformat - format set here will override the value set on the settings page
25
26
== Wordpress MU ==
27
41
42
== Changelog ==
43
44
+ **Version 1.3**
45
+
46
+ * Expiration date is now retained across all post status changes
47
+ * Modified date/time format options for shortcode postexpirator tag
48
+ * Added the ability to add text automatically to the post footer if expiration date is set
49
+
50
**Version 1.2.1**
51
52
* Fixed issue with display date format not being recognized after upgrade