Page Restrict - Version 2.5.0

Version Description

Download this release

Release Info

Developer theandystratton
Plugin Icon wp plugin Page Restrict
Version 2.5.0
Comparing to
See all releases

Code changes from version 2.4.0 to 2.5.0

Files changed (3) hide show
  1. inc/admin.php +32 -0
  2. pagerestrict.php +48 -2
  3. readme.txt +3 -0
inc/admin.php CHANGED
@@ -90,22 +90,32 @@ function pr_admin_page () {
90
  $pr_options['version'] = pr_get_opt ( 'version' );
91
  $pr_message = stripslashes($_POST['message']);
92
  $pr_options['message'] = $pr_message;
 
 
 
93
 
94
  if ( $_POST['loginform'] == 'true' )
95
  $pr_options['loginform'] = true;
96
  else
97
  $pr_options['loginform'] = false;
98
 
 
 
 
 
99
  $pr_options['pr_restrict_home'] = isset( $_POST['pr_restrict_home'] ) ? (int) $_POST['pr_restrict_home'] : 0;
100
  update_option ( 'pr_options' , $pr_options );
101
  echo '<div id="message" class="updated fade"><p><strong>Settings saved.</strong></p></div>';
 
102
  endif;
 
103
  $page_ids = pr_get_opt ( 'pages' );
104
  $post_ids = pr_get_opt ( 'posts' );
105
  if ( ! is_array ( $page_ids ) )
106
  $page_ids = array ();
107
  $pr_method = pr_get_opt ( 'method' );
108
  $pr_message = pr_get_opt ( 'message' );
 
109
  ?>
110
  <div class="wrap">
111
  <h2>Page Restrict Options</h2>
@@ -114,6 +124,27 @@ function pr_admin_page () {
114
  <h3><?php _e( 'General Options', 'pagerestrict' ); ?></h3>
115
  <p><?php _e( 'These options pertain to the general operation of the plugin', 'pagerestrict' ); ?></p>
116
  <table class="form-table">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
117
  <tr valign="top">
118
  <th scope="row">
119
  <?php _e( 'Restriction Message', 'pagerestrict' ); ?>
@@ -260,6 +291,7 @@ function pr_meta_save () {
260
  $pr_options['loginform'] = \pr_get_opt( 'loginform' );
261
  $pr_options['method'] = \pr_get_opt( 'method' );
262
  $pr_options['message'] = \pr_get_opt( 'message' );
 
263
  $pr_options['version'] = \pr_get_opt( 'version' );
264
 
265
  \update_option( 'pr_options' , $pr_options );
90
  $pr_options['version'] = pr_get_opt ( 'version' );
91
  $pr_message = stripslashes($_POST['message']);
92
  $pr_options['message'] = $pr_message;
93
+
94
+ $pr_title = stripslashes($_POST['pr_page_title']);
95
+ $pr_options['restricted_title'] = $pr_title;
96
 
97
  if ( $_POST['loginform'] == 'true' )
98
  $pr_options['loginform'] = true;
99
  else
100
  $pr_options['loginform'] = false;
101
 
102
+ if ( $_POST['restricttitle'] == 'true' )
103
+ $pr_options['restricttitle'] = true;
104
+ else
105
+ $pr_options['restricttitle'] = false;
106
  $pr_options['pr_restrict_home'] = isset( $_POST['pr_restrict_home'] ) ? (int) $_POST['pr_restrict_home'] : 0;
107
  update_option ( 'pr_options' , $pr_options );
108
  echo '<div id="message" class="updated fade"><p><strong>Settings saved.</strong></p></div>';
109
+
110
  endif;
111
+
112
  $page_ids = pr_get_opt ( 'pages' );
113
  $post_ids = pr_get_opt ( 'posts' );
114
  if ( ! is_array ( $page_ids ) )
115
  $page_ids = array ();
116
  $pr_method = pr_get_opt ( 'method' );
117
  $pr_message = pr_get_opt ( 'message' );
118
+ $pr_title = pr_get_opt ( 'restricted_title' );
119
  ?>
120
  <div class="wrap">
121
  <h2>Page Restrict Options</h2>
124
  <h3><?php _e( 'General Options', 'pagerestrict' ); ?></h3>
125
  <p><?php _e( 'These options pertain to the general operation of the plugin', 'pagerestrict' ); ?></p>
126
  <table class="form-table">
127
+ <tr valign="top">
128
+ <th scope="row">
129
+ <?php _e( 'Restriction Title', 'pagerestrict' ); ?>
130
+ </th>
131
+ <td>
132
+ <input type="text" class="widefat" id="pr-title" name="pr_page_title" value="<?php echo \esc_attr( $pr_title ); ?>" placeholder="e.g., %title% is restricted.">
133
+ <br>
134
+ <small>Enter a value here if you choose to also restrict the page title. You can use <code>%title%</code> to insert the actual post/page title back into what outputs.</small>
135
+ </td>
136
+ </tr>
137
+ <tr valign="top">
138
+ <th scope="row">
139
+ <?php _e( 'Restrict Title?', 'pagerestrict' ); ?>
140
+ </th>
141
+ <td>
142
+ <select name="restricttitle">
143
+ <option value="true"<?php \selected( true , pr_get_opt ( 'restricttitle' ) ); ?>><?php _e( 'Yes', 'pagerestrict' ); ?></option>
144
+ <option value="false"<?php \selected( false , pr_get_opt ( 'restricttitle' ) ); ?>><?php _e( 'No', 'pagerestrict' ); ?></option>
145
+ </select>
146
+ </td>
147
+ </tr>
148
  <tr valign="top">
149
  <th scope="row">
150
  <?php _e( 'Restriction Message', 'pagerestrict' ); ?>
291
  $pr_options['loginform'] = \pr_get_opt( 'loginform' );
292
  $pr_options['method'] = \pr_get_opt( 'method' );
293
  $pr_options['message'] = \pr_get_opt( 'message' );
294
+ $pr_options['restricted_title'] = \pr_get_opt( 'restricted_title' );
295
  $pr_options['version'] = \pr_get_opt( 'version' );
296
 
297
  \update_option( 'pr_options' , $pr_options );
pagerestrict.php CHANGED
@@ -5,7 +5,7 @@ Plugin URI: http://theandystratton.com/pagerestrict
5
  Description: Restrict certain pages to logged in users
6
  Author: Matt Martz & Andy Stratton
7
  Author URI: http://theandystratton.com
8
- Version: 2.4.0
9
 
10
  Page Restrict is released under the GNU Lesser General Public License (LGPL)
11
  http://www.gnu.org/licenses/lgpl-3.0.txt
@@ -28,7 +28,7 @@ function pr_get_opt ( $option ) {
28
  $pr_options[$option] = [];
29
  }
30
  }
31
- return $pr_options[$option];
32
  }
33
 
34
  // Add headers to keep browser from caching the pages when user not logged in
@@ -124,6 +124,38 @@ function pr_page_restrict ( $pr_page_content ) {
124
  return $pr_page_content;
125
  }
126
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
127
  function pr_comment_restrict( $pr_comment_array ) {
128
 
129
  global $post;
@@ -140,10 +172,24 @@ function pr_comment_restrict( $pr_comment_array ) {
140
  return $pr_comment_array;
141
  }
142
 
 
 
 
 
 
 
 
 
 
 
 
 
 
143
  // Add Actions
144
  \add_action( 'send_headers' , 'pr_no_cache_headers' );
145
 
146
  // Add Filters
 
147
  \add_filter( 'the_content' , 'pr_page_restrict' , 50 );
148
  \add_filter( 'the_excerpt' , 'pr_page_restrict' , 50 );
149
  \add_filter( 'comments_array' , 'pr_comment_restrict' , 50 );
5
  Description: Restrict certain pages to logged in users
6
  Author: Matt Martz & Andy Stratton
7
  Author URI: http://theandystratton.com
8
+ Version: 2.5.0
9
 
10
  Page Restrict is released under the GNU Lesser General Public License (LGPL)
11
  http://www.gnu.org/licenses/lgpl-3.0.txt
28
  $pr_options[$option] = [];
29
  }
30
  }
31
+ return $pr_options[$option] ?? false;
32
  }
33
 
34
  // Add headers to keep browser from caching the pages when user not logged in
124
  return $pr_page_content;
125
  }
126
 
127
+ // Perform the restriction and if restricted replace the page TITLE with Restricted Content title
128
+ function pr_page_restrict_title( $pr_page_title ) {
129
+ global $post;
130
+ $pr_check = pr_get_opt('method') == 'all';
131
+
132
+ $pr_check = $pr_check || (
133
+ ( \is_array( \pr_get_opt( 'pages' ) ) || \is_array( pr_get_opt('posts') ) )
134
+ && ( \count( \pr_get_opt( 'pages' ) ) + \count( \pr_get_opt( 'posts' ) ) > 0 )
135
+ );
136
+ $pr_check = $pr_check || ( \pr_get_opt( 'pr_restrict_home' ) && \is_home() );
137
+
138
+ if ( !\is_user_logged_in() && $pr_check ) :
139
+
140
+ // current post is in either page / post restriction array
141
+ $is_restricted = ( \in_array( $post->ID, \pr_get_opt( 'pages' ) ) || \in_array( $post->ID, \pr_get_opt( 'posts' ) ) ) && \pr_get_opt( 'method' ) != 'none';
142
+
143
+ // content is restricted OR everything is restricted
144
+ if ( ( \is_single() || \is_page() ) && ( $is_restricted || \pr_get_opt( 'method' ) == 'all' ) ):
145
+
146
+ $pr_page_title = \apply_filters( 'pr_page_title', $pr_page_title, $is_restricted );
147
+
148
+ // home page, archives, search
149
+ elseif ( ( \in_array( $post->ID, \pr_get_opt( 'pages' ) ) || \in_array( $post->ID, \pr_get_opt( 'posts' ) ) || \pr_get_opt( 'method' ) == 'all' )
150
+ && ( \is_archive() || \is_search() || \is_home() )
151
+ ) :
152
+ $pr_page_title = \apply_filters( 'pr_page_title', $pr_page_title, $is_restricted );
153
+ endif;
154
+ endif;
155
+
156
+ return $pr_page_title;
157
+ }
158
+
159
  function pr_comment_restrict( $pr_comment_array ) {
160
 
161
  global $post;
172
  return $pr_comment_array;
173
  }
174
 
175
+ function filter_pr_page_title( $title, $is_restricted )
176
+ {
177
+ if ( !\pr_get_opt( 'restricttitle' ) ) return $title;
178
+
179
+ if ( $is_restricted )
180
+ {
181
+ $new_title = \pr_get_opt( 'restricted_title' );
182
+ $title = \str_replace( '%title%', $title, $new_title );
183
+ }
184
+ return $title;
185
+ }
186
+ \add_action( 'pr_page_title', 'filter_pr_page_title', 10, 2 );
187
+
188
  // Add Actions
189
  \add_action( 'send_headers' , 'pr_no_cache_headers' );
190
 
191
  // Add Filters
192
+ \add_filter( 'the_title' , 'pr_page_restrict_title' , 50 );
193
  \add_filter( 'the_content' , 'pr_page_restrict' , 50 );
194
  \add_filter( 'the_excerpt' , 'pr_page_restrict' , 50 );
195
  \add_filter( 'comments_array' , 'pr_comment_restrict' , 50 );
readme.txt CHANGED
@@ -47,6 +47,9 @@ NOTE: See "Other Notes" for Upgrade and Usage Instructions as well as other pert
47
 
48
  == Changelog ==
49
 
 
 
 
50
  = 2.4.0 =
51
  * Fixes a bug with wp_login_failed action where (string) username was not sent with the WP_Error object.
52
 
47
 
48
  == Changelog ==
49
 
50
+ = 2.4.0 =
51
+ * Adds the ability to restrict the page title and customize, with token replacement for the original title.
52
+
53
  = 2.4.0 =
54
  * Fixes a bug with wp_login_failed action where (string) username was not sent with the WP_Error object.
55