Skip to content
Snippets Groups Projects
Commit a475d7ff authored by Erick Hitter's avatar Erick Hitter
Browse files

Enforce post-specific revisions quantities.

Also adds a bit of missing inline documentation.

Fixes #1.
parent d502c2d8
Branches
Tags
No related merge requests found
...@@ -206,17 +206,26 @@ class WP_Revisions_Control { ...@@ -206,17 +206,26 @@ class WP_Revisions_Control {
/** /**
* Override number of revisions to keep using plugin's settings * Override number of revisions to keep using plugin's settings
* *
* Can either be post-specific or universal
*
* @uses get_post_meta
* @uses get_post_type * @uses get_post_type
* @uses this::get_settings * @uses this::get_settings
* @filter wp_revisions_to_keep * @filter wp_revisions_to_keep
* @return mixed * @return mixed
*/ */
public function filter_wp_revisions_to_keep( $qty, $post ) { public function filter_wp_revisions_to_keep( $qty, $post ) {
$post_type = get_post_type( $post ) ? get_post_type( $post ) : $post->post_type; $post_limit = get_post_meta( $post->ID, $this->meta_key_limit, true );
$settings = $this->get_settings();
if ( 0 < strlen( $post_limit ) ) {
$qty = $post_limit;
} else {
$post_type = get_post_type( $post ) ? get_post_type( $post ) : $post->post_type;
$settings = $this->get_settings();
if ( array_key_exists( $post_type, $settings ) ) if ( array_key_exists( $post_type, $settings ) )
return $settings[ $post_type ]; $qty = $settings[ $post_type ];
}
return $qty; return $qty;
} }
...@@ -254,13 +263,17 @@ class WP_Revisions_Control { ...@@ -254,13 +263,17 @@ class WP_Revisions_Control {
/** /**
* Render Revisions metabox with plugin's additions * Render Revisions metabox with plugin's additions
*
* @uses post_revisions_meta_box
* @uses esc_attr
* @uses wp_create_nonce
* @uses this::get_post_revisions_to_keep
* @uses wp_nonce_field
* @return string
*/ */
public function revisions_meta_box( $post ) { public function revisions_meta_box( $post ) {
post_revisions_meta_box( $post ); post_revisions_meta_box( $post );
$limit = get_post_meta( $post->ID, $this->meta_key_limit, true );
$limit = -1 == $limit ? '' : (int) $limit;
?> ?>
<div id="<?php echo esc_attr( $this->settings_section ); ?>"> <div id="<?php echo esc_attr( $this->settings_section ); ?>">
<h4>WP Revisions Control</h4> <h4>WP Revisions Control</h4>
...@@ -268,7 +281,7 @@ class WP_Revisions_Control { ...@@ -268,7 +281,7 @@ class WP_Revisions_Control {
<p class="button purge" data-postid="<?php the_ID(); ?>" data-nonce="<?php echo esc_attr( wp_create_nonce( $this->settings_section . '_purge' ) ); ?>"><?php _e( 'Purge these revisions', 'wp_revisions_control' ); ?></p> <p class="button purge" data-postid="<?php the_ID(); ?>" data-nonce="<?php echo esc_attr( wp_create_nonce( $this->settings_section . '_purge' ) ); ?>"><?php _e( 'Purge these revisions', 'wp_revisions_control' ); ?></p>
<p> <p>
<?php printf( __( 'Limit this post to %s revisions. To retain all revisions, leave this field blank.', 'wp_revisions_control' ), '<input type="text" name="' . $this->settings_section . '_qty" value="' . $limit . '" id="' . $this->settings_section . '_qty" size="2" />' ); ?> <?php printf( __( 'Limit this post to %s revisions. Leave this field blank for default behavior.', 'wp_revisions_control' ), '<input type="text" name="' . $this->settings_section . '_qty" value="' . $this->get_post_revisions_to_keep( $post->ID ) . '" id="' . $this->settings_section . '_qty" size="2" />' ); ?>
<?php wp_nonce_field( $this->settings_section . '_limit', $this->settings_section . '_limit_nonce', false ); ?> <?php wp_nonce_field( $this->settings_section . '_limit', $this->settings_section . '_limit_nonce', false ); ?>
</p> </p>
...@@ -306,9 +319,9 @@ class WP_Revisions_Control { ...@@ -306,9 +319,9 @@ class WP_Revisions_Control {
$count = count( $revisions ); $count = count( $revisions );
foreach ( $revisions as $revision ) { // foreach ( $revisions as $revision ) {
wp_delete_post_revision( $revision->ID ); // wp_delete_post_revision( $revision->ID );
} // }
$response['success'] = sprintf( __( 'Removed %s revisions associated with this post.', 'wp_revisions_control' ), number_format_i18n( $count, 0 ) ); $response['success'] = sprintf( __( 'Removed %s revisions associated with this post.', 'wp_revisions_control' ), number_format_i18n( $count, 0 ) );
$response['count'] = $count; $response['count'] = $count;
...@@ -332,11 +345,9 @@ class WP_Revisions_Control { ...@@ -332,11 +345,9 @@ class WP_Revisions_Control {
$limit = $_POST[ $this->settings_section . '_qty' ]; $limit = $_POST[ $this->settings_section . '_qty' ];
if ( -1 == $limit || empty( $limit ) ) if ( -1 == $limit || empty( $limit ) )
$limit = -1; delete_post_meta( $post_id, $this->meta_key_limit );
else else
$limit = absint( $limit ); update_post_meta( $post_id, $this->meta_key_limit, absint( $limit ) );
update_post_meta( $post_id, $this->meta_key_limit, $limit );
} }
} }
...@@ -419,5 +430,23 @@ class WP_Revisions_Control { ...@@ -419,5 +430,23 @@ class WP_Revisions_Control {
else else
return (int) $to_keep; return (int) $to_keep;
} }
/**
* Retrieve number of revisions to keep for a give post
*
* @param int $post_id
* @uses get_post_meta
* @return mixed
*/
private function get_post_revisions_to_keep( $post_id ) {
$to_keep = get_post_meta( $post_id, $this->meta_key_limit, true );
if ( -1 == $to_keep || empty( $to_keep ) )
$to_keep = '';
else
$to_keep = (int) $to_keep;
return $to_keep;
}
} }
WP_Revisions_Control::get_instance(); WP_Revisions_Control::get_instance();
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment