PluginProbe
Plugin Load Filter / 2.3.1
Plugin Load Filter v2.3.1
trunk 2.0.0 2.0.1 2.1.0 2.2.0 2.2.1 2.3.0 2.3.1 2.4.0 2.4.1 2.5.1 3.3.0 4.0.6 4.1.1 4.2.0 4.3.0 4.3.1 4.4.0
← All changes | plugin-load-filter.php +278 -158 2.2.02.3.1 View file →
@@ -1,9 +1,9 @@
1 1 <?php
2 2 /*
3 3 Plugin Name: plugin load filter
4 4 Description: Dynamically activate the selected plugins for each page. Response will be faster by filtering plugins.
5 - Version: 2.2.0
5 + Version: 2.3.1
6 6 Plugin URI: http://celtislab.net/wp_plugin_load_filter
7 7 Author: enomoto@celtislab
8 8 Author URI: http://celtislab.net/
9 9 License: GPLv2
@@ -23,11 +23,17 @@
23 23 * Style Sheet
24 24 **************************************************************************/
25 25 function plf_css() { ?>
26 26 <style type="text/css">
27 - .plugins-list { max-width : 480px; min-height: 80px; max-height: 320px; overflow: auto; border: 1px solid #CEE1EF; padding:0.5em 0.5em;}
28 - ul.plugins-list ul { margin-left: 20px; }
29 - ul.plugins-list li { margin: 0; padding: 0; line-height: 22px; word-wrap: break-word;}
27 + #activation-table { margin-top: 10px; border: 1px solid #eee;}
28 + #activation-table input[type=checkbox] { height: 25px; width: 25px; opacity: 0;}
29 + thead .plugins-name { background-color: aliceblue;}
30 + thead .device-type { background-color: oldlace;}
31 + thead .plugins-name, tbody .plugins-name { min-width: 172px; max-width: 172px;}
32 + thead .device-type, tbody .device-type { min-width: 36px; max-width: 36px; padding: 0;}
33 + .dashicons-yes:before { font-size: 20px; border: 1px solid #eee; background-color: whitesmoke;}
34 + .device-type label { color: whitesmoke; margin-left: -28px; }
35 + .device-type input[type="checkbox"]:checked + label .dashicons-yes:before { background-color: yellowgreen; }
30 36 </style>
31 37 <?php }
32 38
33 39 function jquery_tab_css() { ?>
@@ -49,17 +55,39 @@
49 55 .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #dddddd; background-color: #0073ea; font-weight: bold; color: #ffffff; }
50 56 .ui-state-hover a, .ui-state-hover a:hover, .ui-state-hover a:link, .ui-state-hover a:visited { color: #ffffff; text-decoration: none; }
51 57 .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #ffffff; text-decoration: none; }
52 58
53 - #registration-table input[type=radio], #activation-table input[type=checkbox] { height: 25px; width: 25px; opacity: 0;}
54 - .dashicons:before { font-size: 24px; }
55 - .radio-green label, .radio-red label, .altcheckbox label { color: #ddd; margin-left: -28px; }
59 + #wrap_registration-table, #wrap_activation-table { overflow-x:auto;}
60 + #registration-table input[type=radio], #activation-table input[type=checkbox] { height: 25px; width: 25px; opacity: 0;}
61 + thead, tbody { display: block;}
62 + .plugins-table-body { overflow-y:scroll; height:500px; }
63 + .widefat td, .widefat th { padding: 8px 4px;}
64 + thead .filter-plugins-name, thead .plugins-name { background-color: aliceblue;}
65 + .filter-none, .filter-admin, .filter-tmpl { background-color: oldlace;}
66 + thead .device-type { background-color: oldlace;}
67 + thead .tmpl-type { background-color: lavender;}
68 + thead .pformat { background-color: honeydew;}
69 + thead .tmpl-embed { background-color: lightyellow;}
70 + thead .tmpl-custom { background-color: lavenderblush;}
71 + thead .filter-plugins-name, tbody .filter-plugins-name { min-width: 260px; max-width: 260px;}
72 + thead .plugins-name, tbody .plugins-name { min-width: 180px; max-width: 180px;}
73 + thead .filter-type, tbody .filter-type { min-width: 100px; max-width: 100px;}
74 + thead .device-type, tbody .device-type, thead .tmpl-type, tbody .tmpl-type { min-width: 40px; max-width: 40px; }
75 + .filter-description { padding: 0 10px 20px 10px;}
76 + .exclude-pformat { padding: 16px 0 20px}
77 + .exclude-pformat label { white-space:nowrap;}
78 + .exclude-pformat span { margin-right: 12px; }
79 + .dashicons:before { font-size: 24px; }
80 + .radio-green label, .radio-red label, .tmpl-type label { color: #ddd; margin-left: -28px; }
56 81 .radio-green input[type="radio"]:checked + label { color: #339966; }
57 82 .radio-red input[type="radio"]:checked + label { color: #ff0000; }
58 - .altcheckbox input[type="checkbox"]:checked + label { color: #339966; }
83 + .tmpl-type input[type="checkbox"]:checked + label { color: #339966; }
84 + .dashicons-yes:before { font-size: 20px; border: 1px solid #eee; background-color: whitesmoke;}
85 + .device-type label { color: whitesmoke; margin-left: -28px; }
86 + .device-type input[type="checkbox"]:checked + label .dashicons-yes:before { background-color: yellowgreen; }
59 87 </style>
60 88 <?php }
61 -
89 +
62 90 /***************************************************************************
63 91 * Plugin Load Filter Option Setting
64 92 **************************************************************************/
65 93
@@ -67,10 +95,25 @@
67 95
68 96 load_plugin_textdomain('plf', false, basename( dirname( __FILE__ ) ).'/languages' );
69 97
70 98 $this->filter = get_option('plf_option');
71 - if(!empty($this->filter['updated'])){
72 - $this->filter['updated'] = null; //v2.2.0 not used option clear
99 + //v2.3.0 option change
100 + if(empty($this->filter['optver']) || $this->filter['optver'] < '2'){
101 + $this->filter['optver'] = '2';
102 +
103 + if(empty($this->filter['group']['desktop']) && empty($this->filter['group']['mobile'])){
104 + //For ver2.2.0 compatibility, set '_pagefilter' data to 'desktop' and 'mobile'
105 + if(!empty($this->filter['_pagefilter'])){
106 + $this->filter['group']['desktop'] = $this->filter['_pagefilter'];
107 + $this->filter['group']['mobile'] = $this->filter['_pagefilter'];
108 + }
109 + if(!empty($this->filter['_desktop'])){
110 + $this->filter['_desktop'] = null;
111 + }
112 + if(!empty($this->filter['_mobile'])){
113 + $this->filter['_mobile'] = null;
114 + }
115 + }
73 116 }
74 117
75 118 if(is_admin()) {
76 119 add_action( 'plugins_loaded', array(&$this, 'plf_admin_start'), 9999 );
@@ -79,8 +122,16 @@
79 122 if(wp_mkdir_p( WPMU_PLUGIN_DIR )){
80 123 if ( !file_exists( WPMU_PLUGIN_DIR . "/plf-filter.php" )) {
81 124 @copy(__DIR__ . '/mu-plugins/plf-filter.php', WPMU_PLUGIN_DIR . '/plf-filter.php');
82 125 }
126 + else {
127 + require_once(ABSPATH . 'wp-admin/includes/plugin.php');
128 + $dp = get_plugin_data( WPMU_PLUGIN_DIR . "/plf-filter.php", false, false );
129 + $sp = get_plugin_data( __DIR__ . '/mu-plugins/plf-filter.php', false, false );
130 + if(version_compare( $dp['Version'], $sp['Version'], '!=')){
131 + @copy(__DIR__ . '/mu-plugins/plf-filter.php', WPMU_PLUGIN_DIR . '/plf-filter.php');
132 + }
133 + }
83 134 }
84 135 register_deactivation_hook( __FILE__, 'Plf_setting::deactivation' );
85 136 register_uninstall_hook(__FILE__, 'Plf_setting::uninstall');
86 137 }
@@ -160,9 +211,9 @@
160 211 if (current_user_can( 'edit_plugins' )) {
161 212 if( isset($_POST['edit_regist_filter']) ) {
162 213 if(isset($_POST['plfregist'])){
163 214 check_admin_referer('plugin_load_filter');
164 - foreach( array('_admin', '_desktop', '_mobile', '_pagefilter') as $item){
215 + foreach( array('_admin', '_pagefilter') as $item){
165 216 $plugins = array();
166 217 foreach ( $_POST['plfregist'] as $p_key => $val ) {
167 218 if($val == $item)
168 219 $plugins[$p_key] = $val;
@@ -193,8 +244,19 @@
193 244 }
194 245 $option["plugins"] = implode(",", array_keys($plugins));
195 246 $this->filter[$item] = $option;
196 247 }
248 + if(isset($_POST['plf_option']['exclude'])){
249 + $exclude = array();
250 + foreach ( $_POST['plf_option']['exclude'] as $ft => $v ) {
251 + if(!empty($v))
252 + $exclude[$ft] = true;
253 + }
254 + $this->filter['exclude'] = $exclude;
255 + }
256 + else {
257 + $this->filter['exclude'] = '';
258 + }
197 259 update_option('plf_option', $this->filter );
198 260 }
199 261 header('Location: ' . admin_url('plugins.php?page=plugin_load_filter_admin_manage_page'));
200 262 exit;
@@ -200,11 +262,12 @@
200 262 exit;
201 263 }
202 264 elseif( isset($_POST['clear_regist_filter']) ) {
203 265 check_admin_referer('plugin_load_filter');
204 - foreach( array('_admin', '_desktop', '_mobile', '_pagefilter') as $item){
266 + foreach( array('_admin', '_pagefilter') as $item){
205 267 $this->filter[$item] = '';
206 268 }
269 + $this->filter['exclude'] = '';
207 270 update_option('plf_option', $this->filter );
208 271 header('Location: ' . admin_url('plugins.php?page=plugin_load_filter_admin_manage_page'));
209 272 exit;
210 273 }
@@ -283,72 +346,17 @@
283 346 static function altcheckbox($name, $value, $label = '') {
284 347 return "<input type='hidden' name='$name' value='0'><input type='checkbox' name='$name' value='1' " . checked( $value, 1, false ). "/><label> $label</label>";
285 348 }
286 349
287 - //Plugin pagefilter Selected Checkbox (plugin and modules list)
288 - // $plugins : array : all active plugins
289 - // $select_cvplugins : csv string : pagefilter selected plugins
290 - // $checked_cvplugins : csv string : checked plugins
291 - function pagefilter_plugins_checklist( $plugins, $select_cvplugins, $checked_cvplugins ) {
292 -
293 - if(empty($select_cvplugins))
294 - return __('Page Filter is not registered', 'plf');
295 -
296 - $nplugins = $jmodules = $cmodules = array();
297 - foreach ( $plugins as $p_key => $p_data ) {
298 - $p_name = $this->pluginkey_to_name($p_key);
299 - if(empty($p_name))
300 - continue;
301 - if(strpos($p_key, 'jetpack_module/') !== false)
302 - $jmodules[] = $p_key;
303 - else if(strpos($p_key, 'celtispack_module/') !== false)
304 - $cmodules[] = $p_key;
305 - else
306 - $nplugins[] = $p_key;
307 - }
308 - $selplugins = array_map("trim", explode(',', $select_cvplugins));
309 - $chkplugins = array_map("trim", explode(',', $checked_cvplugins));
310 - $html = '<ul class="plugins-list">';
311 - foreach ( $nplugins as $p_key ) {
312 - if(strpos($p_key, 'jetpack/') !== false){
313 - foreach ( $jmodules as $p_key ) {
314 - if(in_array( $p_key, $selplugins )){
315 - $p_name = $this->pluginkey_to_name($p_key);
316 - $checked = in_array( $p_key, $chkplugins ) ? true : false;
317 - $html .= '<li>' . self::checkbox("plf_option[plugins][$p_key]", $checked, esc_attr($p_name)) . '</li>';
318 - }
319 - }
320 - }
321 - else if(strpos($p_key, 'celtispack/') !== false){
322 - foreach ( $cmodules as $p_key ) {
323 - if(in_array( $p_key, $selplugins )){
324 - $p_name = $this->pluginkey_to_name($p_key);
325 - $checked = in_array( $p_key, $chkplugins ) ? true : false;
326 - $html .= '<li>' . self::checkbox("plf_option[plugins][$p_key]", $checked, esc_attr($p_name)) . '</li>';
327 - }
328 - }
329 - }
330 - else if(in_array( $p_key, $selplugins )) {
331 - $p_name = $this->pluginkey_to_name($p_key);
332 - $checked = in_array( $p_key, $chkplugins ) ? true : false;
333 - $html .= '<li>' . self::checkbox("plf_option[plugins][$p_key]", $checked, esc_attr($p_name)) . '</li>';
334 - }
335 - }
336 - $html .= '</ul>';
337 - return $html;
338 - }
339 -
340 350 public function plfregist_item($key, $val) {
341 351 $p_name = $this->pluginkey_to_name($key);
342 352 $opt_name = "plfregist[$key]";
343 353 ?>
344 354 <tr id="plfregist_<?php echo $key; ?>">
345 - <td><?php echo $p_name; ?></td>
346 - <td class="radio-green"><input type="radio" name="<?php echo $opt_name; ?>" value='' <?php checked('', $val); ?>/><label><span class="dashicons dashicons-admin-plugins"></span></label></td>
347 - <td class="radio-red"><input type="radio" name="<?php echo $opt_name; ?>" value="_admin" <?php checked('_admin', $val); ?>/><label><span class="dashicons dashicons-admin-plugins"></span></label></td>
348 - <td class="radio-red"><input type="radio" name="<?php echo $opt_name; ?>" value="_desktop" <?php checked('_desktop', $val); ?>/><label><span class="dashicons dashicons-admin-plugins"></span></label></td>
349 - <td class="radio-red"><input type="radio" name="<?php echo $opt_name; ?>" value="_mobile" <?php checked('_mobile', $val); ?>/><label><span class="dashicons dashicons-admin-plugins"></span></label></td>
350 - <td class="radio-red"><input type="radio" name="<?php echo $opt_name; ?>" value="_pagefilter" <?php checked('_pagefilter', $val); ?>/><label><span class="dashicons dashicons-admin-plugins"></span></label></td>
355 + <td class="filter-plugins-name"><?php echo $p_name; ?></td>
356 + <td class="radio-green filter-type"><input type="radio" name="<?php echo $opt_name; ?>" value='' <?php checked('', $val); ?>/><label><span class="dashicons dashicons-admin-plugins"></span></label></td>
357 + <td class="radio-red filter-type"><input type="radio" name="<?php echo $opt_name; ?>" value="_admin" <?php checked('_admin', $val); ?>/><label><span class="dashicons dashicons-admin-plugins"></span></label></td>
358 + <td class="radio-red filter-type"><input type="radio" name="<?php echo $opt_name; ?>" value="_pagefilter" <?php checked('_pagefilter', $val); ?>/><label><span class="dashicons dashicons-admin-plugins"></span></label></td>
351 359 </tr>
352 360 <?php
353 361 }
354 362
@@ -354,19 +362,18 @@
354 362
355 363 //Filterring plugins select
356 364 public function plfregist_table($plugins, $filter) {
357 365 ?>
366 + <div id="wrap_registration-table">
358 367 <table id="registration-table" class="widefat">
359 368 <thead>
360 - <tr><th ><?php _e('Plugins'); ?></th>
361 - <th ><?php _e('Normal Load', 'plf'); ?></th>
362 - <th ><?php _e('Admin', 'plf'); ?></th>
363 - <th ><?php _e('Desktop', 'plf'); ?></th>
364 - <th ><?php _e('Mobile', 'plf'); ?></th>
365 - <th ><?php _e('Page Filter', 'plf'); ?></th>
369 + <tr><th class="filter-plugins-name"><?php _e('Plugins'); ?></th>
370 + <th class="filter-type filter-none"><?php _e('Normal Load', 'plf'); ?></th>
371 + <th class="filter-type filter-admin"><?php _e('Admin Filter', 'plf'); ?></th>
372 + <th class="filter-type filter-tmpl"><?php _e('Page Filter', 'plf'); ?></th>
366 373 </tr>
367 374 </thead>
368 - <tbody>
375 + <tbody class="plugins-table-body">
369 376 <?php
370 377 //plugins filter registoration table
371 378 $plist = array();
372 379 foreach ( $plugins as $p_key => $val ) {
@@ -373,9 +380,9 @@
373 380 $name = $this->pluginkey_to_name($p_key);
374 381 if(!empty($name))
375 382 $plist[$p_key] = '';
376 383 }
377 - foreach( array('_admin', '_desktop', '_mobile', '_pagefilter') as $item){
384 + foreach( array('_admin', '_pagefilter') as $item){
378 385 $parr = (!empty($filter[$item]['plugins'])) ? array_map("trim", explode(',', $filter[$item]['plugins'])) : array();
379 386 foreach ( $plist as $p_key => $val ) {
380 387 if(empty($val) && in_array($p_key, $parr))
381 388 $plist[$p_key] = $item;
@@ -409,47 +416,105 @@
409 416 }
410 417 ?>
411 418 </tbody>
412 419 </table>
420 + <br />
421 + <p><strong>[ Admin Filter ]</strong></p>
422 + <div class="filter-description"><?php _e('Plugins to be used only in admin mode.', 'plf'); ?></div>
423 + <p><strong>[ Page Filter ]</strong></p>
424 + <div class="filter-description">
425 + <?php _e('Plugins for selecting whether to activate each Page type or Post.', 'plf'); ?><br />
426 + <?php _e('Selected page filter plugins are once blocked, but is activated by "Page filter Activation" setting.', 'plf'); ?>
427 + <div class="exclude-pformat">
428 + <p><strong><?php _e( 'Exclude Post Format Type', 'plf' ); ?></strong><br />
429 + <?php _e('Choose Post Format Type you are not using. To exclude from Page Filter item subject.', 'plf'); ?>
430 + </p>
431 + <?php
432 + $html = '<div>';
433 + $pformat = array('image', 'gallery', 'video', 'audio', 'aside', 'status', 'quote', 'link', 'chat' );
434 + foreach ( $pformat as $type ) {
435 + $checked = (!empty($this->filter['exclude'][$type]))? $this->filter['exclude'][$type] : false;
436 + $label = "<span>$type</span>";
437 + $html .= self::checkbox("plf_option[exclude][$type]", $checked, $label);
438 + }
439 + $html .= '</div>';
440 + echo $html;
441 + ?>
442 + </div>
443 + </div>
444 + </div>
413 445 <?php
414 446 }
415 447
416 448 //Activate plugins select from Page Filter
449 + public function _plfactive_checkbox_row($p_key, $select_cvplugins, $chklist, $filter) {
450 +
451 + $selplugins = array_map("trim", explode(',', $select_cvplugins));
452 + $devlist = array('desktop','mobile');
453 + if(in_array( $p_key, $selplugins )){
454 + $p_name = $this->pluginkey_to_name($p_key);
455 + echo "<tr><td class='plugins-name'>$p_name</td>";
456 + foreach($devlist as $devtype){
457 + $checked = (empty($filter['group'][$devtype]['plugins']) || false === strpos($filter['group'][$devtype]['plugins'], $p_key))? false : true;
458 + echo '<td class="device-type">' . self::altcheckbox("plfactive[$devtype][$p_key]", $checked, '<span class="dashicons dashicons-yes"></span>') . '</td>';
459 + }
460 + foreach($chklist as $pgtype){
461 + $checked = (empty($filter['group'][$pgtype]['plugins']) || false === strpos($filter['group'][$pgtype]['plugins'], $p_key))? false : true;
462 + echo '<td class="tmpl-type">' . self::altcheckbox("plfactive[$pgtype][$p_key]", $checked, '<span class="dashicons dashicons-admin-plugins"></span>') . '</td>';
463 + }
464 + echo "</tr>";
465 + }
466 + }
467 +
417 468 public function plfactive_table($plugins, $select_cvplugins, $filter) {
418 469 if(empty($select_cvplugins))
419 470 return;
420 471
421 472 ?>
473 + <div id="wrap_activation-table">
422 474 <table id="activation-table" class="widefat">
423 475 <thead>
424 - <tr><th ><?php _e('Plugins'); ?></th>
425 - <th ><span title="<?php _e('Home/Front-page', 'plf'); ?>" class="dashicons dashicons-admin-home"></span><br /><span style="font-size:xx-small">Home</span></th>
426 - <th ><span title="<?php _e('Archive page', 'plf'); ?>" class="dashicons dashicons-list-view"></span><br /><span style="font-size:xx-small">Archive</span></th>
427 - <th ><span title="<?php _e('Search page', 'plf'); ?>" class="dashicons dashicons-search"></span><br /><span style="font-size:xx-small">Search</span></th>
428 - <th ><span title="<?php _e('Attachment page', 'plf'); ?>" class="dashicons dashicons-media-default"></span><br /><span style="font-size:xx-small">Attach</span></th>
429 - <th ><span title="<?php _e('Page', 'plf'); ?>" class="dashicons dashicons-admin-page"></span><br /><span style="font-size:xx-small">Page</span></th>
430 - <th ><span title="<?php _e('Post : Standard', 'plf'); ?>" class="dashicons dashicons-admin-post"></span><br /><span style="font-size:xx-small">Post</span></th>
431 - <th ><span title="<?php _e('Post : Image', 'plf'); ?>" class="dashicons dashicons-format-image"></span><br /><span style="font-size:xx-small">Image</span></th>
432 - <th ><span title="<?php _e('Post : Gallery', 'plf'); ?>" class="dashicons dashicons-format-gallery"></span><br /><span style="font-size:xx-small">Gallery</span></th>
433 - <th ><span title="<?php _e('Post : Video', 'plf'); ?>" class="dashicons dashicons-format-video"></span><br /><span style="font-size:xx-small">Video</span></th>
434 - <th ><span title="<?php _e('Post : Audio', 'plf'); ?>" class="dashicons dashicons-format-audio"></span><br /><span style="font-size:xx-small">Audio</span></th>
435 - <th ><span title="<?php _e('Post : Aside', 'plf'); ?>" class="dashicons dashicons-format-aside"></span><br /><span style="font-size:xx-small">Aside</span></th>
436 - <th ><span title="<?php _e('Post : Quote', 'plf'); ?>" class="dashicons dashicons-format-quote"></span><br /><span style="font-size:xx-small">Quote</span></th>
437 - <th ><span title="<?php _e('Post : Link', 'plf'); ?>" class="dashicons dashicons-admin-links"></span><br /><span style="font-size:xx-small">Link</span></th>
438 - <th ><span title="<?php _e('Post : Status', 'plf'); ?>" class="dashicons dashicons-format-status"></span><br /><span style="font-size:xx-small">Status</span></th>
439 - <th ><span title="<?php _e('Post : Chat', 'plf'); ?>" class="dashicons dashicons-format-chat"></span><br /><span style="font-size:xx-small">Chat</span></th>
476 + <tr><th class="plugins-name"><?php _e('Plugins'); ?></th>
477 + <th class="device-type"><span title="<?php _e('Desktop Device', 'plf'); ?>" class="dashicons dashicons-desktop"></span><br /><span style="font-size:xx-small">Desktop</span></th>
478 + <th class="device-type"><span title="<?php _e('Mobile Device', 'plf'); ?>" class="dashicons dashicons-smartphone"></span><br /><span style="font-size:xx-small">Mobile</span></th>
479 + <th class="tmpl-type"><span title="<?php _e('Home/Front-page', 'plf'); ?>" class="dashicons dashicons-admin-home"></span><br /><span style="font-size:xx-small">Home</span></th>
480 + <th class="tmpl-type"><span title="<?php _e('Archive page', 'plf'); ?>" class="dashicons dashicons-list-view"></span><br /><span style="font-size:xx-small">Archive</span></th>
481 + <th class="tmpl-type"><span title="<?php _e('Search page', 'plf'); ?>" class="dashicons dashicons-search"></span><br /><span style="font-size:xx-small">Search</span></th>
482 + <th class="tmpl-type"><span title="<?php _e('Attachment page', 'plf'); ?>" class="dashicons dashicons-media-default"></span><br /><span style="font-size:xx-small">Attach</span></th>
483 + <th class="tmpl-type"><span title="<?php _e('Page', 'plf'); ?>" class="dashicons dashicons-admin-page"></span><br /><span style="font-size:xx-small">Page</span></th>
484 + <th class="tmpl-type pformat"><span title="<?php _e('Post : ', 'plf'); _e('Standard', 'plf'); ?>" class="dashicons dashicons-admin-post"></span><br /><span style="font-size:xx-small">Post</span></th>
440 485 <?php
486 + $pformat = array('image', 'gallery', 'video', 'audio', 'aside', 'status', 'quote', 'link', 'chat' );
487 + $exclude = array();
488 + if(!empty($filter['exclude'])){
489 + foreach ( $filter['exclude'] as $type => $v) {
490 + if(!empty($v)){
491 + $exclude[] = $type;
492 + }
493 + }
494 + }
495 + foreach ( $pformat as $type) {
496 + if(!in_array($type, $exclude)){
497 + $title = __('Post : ', 'plf') . $type;
498 + $icon = ($type === "link")? "dashicons-admin-links" : "dashicons-format-$type";
499 + echo '<th class="tmpl-type pformat"><span title="' . $title . '" class="dashicons ' . $icon .'"></span><br /><span style="font-size:xx-small">' . $type .'</span></th>';
500 + }
501 + }
502 + if(function_exists('is_embed')){
503 + $title = __('WordPress Embed Content Card (API)', 'plf');
504 + echo "<th class='tmpl-type tmpl-embed'><span title='$title' style='font-size:xx-small'>Embed Content</span></th>";
505 + }
441 506 $post_types = get_post_types( array('public' => true, '_builtin' => false) );
442 507 foreach ( $post_types as $post_type ) {
443 508 if(!empty($post_type)){
444 509 $title = __('Custom Post : ', 'plf') . $post_type;
445 - echo "<th ><span title='$title' style='font-size:xx-small'>$post_type</span></th>";
510 + echo "<th class='tmpl-type tmpl-custom'><span title='$title' style='font-size:xx-small'>$post_type</span></th>";
446 511 }
447 512 }
448 513 ?>
449 514 </tr>
450 515 </thead>
451 - <tbody>
516 + <tbody class="plugins-table-body">
452 517 <?php
453 518 $nplugins = $jmodules = $cmodules = $allmodule = array();
454 519 foreach ( $plugins as $p_key => $p_data ) {
455 520 $p_name = $this->pluginkey_to_name($p_key);
@@ -461,11 +526,17 @@
461 526 $cmodules[] = $p_key;
462 527 else
463 528 $nplugins[] = $p_key;
464 529 }
465 - $selplugins = array_map("trim", explode(',', $select_cvplugins));
466 - $chklist = array('home', 'archive', 'search', 'attachment', 'page', 'post',
467 - 'post-image', 'post-gallery', 'post-video', 'post-audio', 'post-aside', 'post-quote', 'post-link', 'post-status', 'post-chat');
530 + $chklist = array('home', 'archive', 'search', 'attachment', 'page', 'post');
531 + foreach ( $pformat as $type) {
532 + if(!in_array($type, $exclude)){
533 + $chklist[] = "post-$type";
534 + }
535 + }
536 + if(function_exists('is_embed')){
537 + $chklist[] = 'content-card';
538 + }
468 539 $post_types = get_post_types( array('public' => true, '_builtin' => false) );
469 540 foreach ( $post_types as $post_type ) {
470 541 $chklist[] = $post_type;
471 542 }
@@ -471,45 +542,24 @@
471 542 }
472 543 foreach ( $nplugins as $p_key ) {
473 544 if(strpos($p_key, 'jetpack/') !== false){
474 545 foreach ( $jmodules as $p_key ) {
475 - if(in_array( $p_key, $selplugins )){
476 - $p_name = $this->pluginkey_to_name($p_key);
477 - echo "<tr><td>$p_name</td>";
478 - foreach($chklist as $pgtype){
479 - $checked = (empty($filter['group'][$pgtype]['plugins']) || false === strpos($filter['group'][$pgtype]['plugins'], $p_key))? false : true;
480 - echo '<td class="altcheckbox">' . self::altcheckbox("plfactive[$pgtype][$p_key]", $checked, '<span class="dashicons dashicons-admin-plugins"></span>') . '</td>';
481 - }
482 - echo "</tr>";
483 - }
546 + $this->_plfactive_checkbox_row($p_key, $select_cvplugins, $chklist, $filter);
484 547 }
485 548 }
486 549 else if(strpos($p_key, 'celtispack/') !== false){
487 550 foreach ( $cmodules as $p_key ) {
488 - if(in_array( $p_key, $selplugins )){
489 - $p_name = $this->pluginkey_to_name($p_key);
490 - echo "<tr><td>$p_name</td>";
491 - foreach($chklist as $pgtype){
492 - $checked = (empty($filter['group'][$pgtype]['plugins']) || false === strpos($filter['group'][$pgtype]['plugins'], $p_key))? false : true;
493 - echo '<td class="altcheckbox">' . self::altcheckbox("plfactive[$pgtype][$p_key]", $checked, '<span class="dashicons dashicons-admin-plugins"></span>') . '</td>';
494 - }
495 - echo "</tr>";
496 - }
551 + $this->_plfactive_checkbox_row($p_key, $select_cvplugins, $chklist, $filter);
497 552 }
498 553 }
499 - else if(in_array( $p_key, $selplugins )) {
500 - $p_name = $this->pluginkey_to_name($p_key);
501 - echo "<tr><td>$p_name</td>";
502 - foreach($chklist as $pgtype){
503 - $checked = (empty($filter['group'][$pgtype]['plugins']) || false === strpos($filter['group'][$pgtype]['plugins'], $p_key))? false : true;
504 - echo '<td class="altcheckbox">' . self::altcheckbox("plfactive[$pgtype][$p_key]", $checked, '<span class="dashicons dashicons-admin-plugins"></span>') . '</td>';
505 - }
506 - echo "</tr>";
554 + else {
555 + $this->_plfactive_checkbox_row($p_key, $select_cvplugins, $chklist, $filter);
507 556 }
508 557 }
509 558 ?>
510 559 </tbody>
511 560 </table>
561 + </div>
512 562 <?php
513 563 }
514 564
515 565 //Option Setting Form Display
@@ -523,28 +573,16 @@
523 573 <li><a href="#plf-activation-tab" ><?php _e('Page Filter Activation', 'plf'); ?></a></li>
524 574 </ul>
525 575 <form method="post" >
526 576 <?php wp_nonce_field( 'plugin_load_filter'); ?>
527 - <div id="plf-registration-tab" >
577 + <div id="plf-registration-tab" style="display : none;">
528 578 <?php $this->plfregist_table($this->plugins_inf, $this->filter); ?>
529 - <br />
530 - <p><?php _e('If you want to filter the loading of plugins, click select <span class="dashicons dashicons-admin-plugins"></span> mark of the filter type.', 'plf') ?></p>
531 - <p><strong>[ Admin Filter ]</strong><br />
532 - <?php _e('Plugins to be used only in admin mode.', 'plf'); ?><br />
533 - </p>
534 - <p><strong>[ Desktop/Mobile Filter ]</strong><br />
535 - <?php _e('Plugins to be used only in desktop/moble device. (wp_is_mobile function use)', 'plf'); ?><br />
536 - </p>
537 - <p><strong>[ Page Filter ]</strong><br />
538 - <?php _e('Plugins for selecting whether to activate each Page type or Post.', 'plf'); ?><br />
539 - <?php _e('Selected page filter plugins are once blocked, but is activated by "Page filter Activation" setting.', 'plf'); ?><br />
540 - </p>
541 579 <p class="submit">
542 580 <input type="submit" class="button-primary" name="clear_regist_filter" value="<?php _e('Clear', 'plf'); ?>" />&nbsp;&nbsp;&nbsp;
543 581 <input type="submit" class="button-primary" name="edit_regist_filter" value="<?php _e('Filter Entry &raquo;', 'plf'); ?>" />
544 582 </p>
545 583 </div>
546 - <div id="plf-activation-tab" >
584 + <div id="plf-activation-tab" style="display : none;">
547 585 <?php
548 586 $pgfilter = (!empty($this->filter['_pagefilter']['plugins']))? $this->filter['_pagefilter']['plugins'] : array();
549 587 if(!empty($pgfilter)){
550 588 $this->plfactive_table($this->plugins_inf, $pgfilter, $this->filter);
@@ -577,29 +615,107 @@
577 615 * Individual of the plug-in filter meta box for Post/Page/CustomPost
578 616 **************************************************************************/
579 617 function load_meta_boxes( $post_type, $post ) {
580 618 if ( current_user_can('edit_plugins', $post->ID) ) {
581 - add_meta_box( 'pluginfilterdiv', __( 'Page Filter Plugin', 'plf' ), array(&$this, 'plf_meta_box'), null, 'side' );
619 + add_meta_box( 'pluginfilterdiv', __( 'Page Filter Plugin', 'plf' ), array(&$this, 'plf_meta_box'), null, 'side' );
582 620 add_action( 'admin_head', array(&$this, 'plf_css' ));
583 621 add_action( 'admin_footer', array(&$this, 'plf_meta_script' ));
584 622 }
585 623 }
586 624
625 + //Plugin pagefilter Selected Checkbox (plugin and modules list)
626 + // $p_key
627 + // $select_cvplugins : csv string : pagefilter selected plugins
628 + // $checked_arcvplugins : array csv string : ['desktop']=desktop enable plugins, ['mobile']=mobile enable plugins
629 + function _pagefilter_plugins_checklist( $p_key, $select_cvplugins, $checked_arcvplugins ) {
630 +
631 + $html = '';
632 + $selplugins = array_map("trim", explode(',', $select_cvplugins));
633 + $device['desktop'] = $checked_arcvplugins['desktop'];
634 + $device['mobile'] = $checked_arcvplugins['mobile'];
635 + $devlist = array('desktop','mobile');
636 + if(in_array( $p_key, $selplugins )){
637 + $p_name = $this->pluginkey_to_name($p_key);
638 + $html .= "<tr><td class='plugins-name'>$p_name</td>";
639 + foreach($devlist as $devtype){
640 + $checked = (empty($device[$devtype]) || false === strpos($device[$devtype], $p_key))? false : true;
641 + $html .= "<td class='device-type $devtype'>" . self::altcheckbox("plf_option[$devtype][$p_key]", $checked, '<span class="dashicons dashicons-yes"></span>') . '</td>';
642 + }
643 + $html .= "</tr>";
644 + }
645 + return $html;
646 + }
647 +
648 + //Plugin pagefilter Selected Checkbox (plugin and modules list)
649 + // $plugins : array : all active plugins
650 + // $select_cvplugins : csv string : pagefilter selected plugins
651 + // $checked_arcvplugins : array csv string : ['desktop']=desktop enable plugins, ['mobile']=mobile enable plugins
652 + function pagefilter_plugins_checklist( $plugins, $select_cvplugins, $checked_arcvplugins ) {
653 +
654 + if(empty($select_cvplugins))
655 + return __('Page Filter is not registered', 'plf');
656 +
657 + $html = '<table id="activation-table">';
658 + $html .= '<thead>';
659 + $html .= '<tr><th class="plugins-name">'. __('Plugins') . '</th>';
660 + $html .= '<th class="device-type"><span title="'. __('Desktop Device', 'plf'). '" class="dashicons dashicons-desktop"></span><br /><span style="font-size:xx-small">Desktop</span></th>';
661 + $html .= '<th class="device-type"><span title="'. __('Mobile Device', 'plf'). '" class="dashicons dashicons-smartphone"></span><br /><span style="font-size:xx-small">Mobile</span></th>';
662 + $html .= '</tr>';
663 + $html .= '</thead>';
664 + $html .= '<tbody class="plugins-table-body meta-boxes-plugins-table">';
665 + $nplugins = $jmodules = $cmodules = array();
666 + foreach ( $plugins as $p_key => $p_data ) {
667 + $p_name = $this->pluginkey_to_name($p_key);
668 + if(empty($p_name))
669 + continue;
670 + if(strpos($p_key, 'jetpack_module/') !== false)
671 + $jmodules[] = $p_key;
672 + else if(strpos($p_key, 'celtispack_module/') !== false)
673 + $cmodules[] = $p_key;
674 + else
675 + $nplugins[] = $p_key;
676 + }
677 +
678 + foreach ( $nplugins as $p_key ) {
679 + if(strpos($p_key, 'jetpack/') !== false){
680 + foreach ( $jmodules as $p_key ) {
681 + $html .= $this->_pagefilter_plugins_checklist( $p_key, $select_cvplugins, $checked_arcvplugins );
682 + }
683 + }
684 + else if(strpos($p_key, 'celtispack/') !== false){
685 + foreach ( $cmodules as $p_key ) {
686 + $html .= $this->_pagefilter_plugins_checklist( $p_key, $select_cvplugins, $checked_arcvplugins );
687 + }
688 + }
689 + else {
690 + $html .= $this->_pagefilter_plugins_checklist( $p_key, $select_cvplugins, $checked_arcvplugins );
691 + }
692 + }
693 + $html .= '</tbody>';
694 + $html .= '</table>';
695 + return $html;
696 + }
697 +
587 698 function plf_meta_box( $post, $box ) {
588 699 if(is_object($post)){
589 - $default = array( 'filter' => 'default', 'plugins' => '');
590 700 $myfilter = get_post_meta( $post->ID, '_plugin_load_filter', true );
701 + //ver2.2.0 for compatibility, set 'plugins' data to 'desktop' and 'mobile'
702 + if(!empty($myfilter['plugins'])){
703 + $myfilter['desktop'] = $myfilter['plugins'];
704 + $myfilter['mobile'] = $myfilter['plugins'];
705 + unset($myfilter['plugins']);
706 + }
707 + $default = array( 'filter' => 'default', 'desktop' => '', 'mobile' => '');
591 708 $option = (!empty($myfilter))? $myfilter : $default;
592 709 $option = wp_parse_args( $option, $default);
710 + $pgfilter = (!empty($this->filter['_pagefilter']['plugins']))? $this->filter['_pagefilter']['plugins'] : array();
593 711 $ajax_nonce = wp_create_nonce( 'plugin_load_filter-' . $post->ID );
594 - $pgfilter = (!empty($this->filter['_pagefilter']['plugins']))? $this->filter['_pagefilter']['plugins'] : array();
595 712 ?>
596 713 <div id="plugin-filter-select">
597 714 <label><input type="radio" name="pagefilter" value="default" <?php checked('default', $option['filter']); ?>/><?php _e('Not Use', 'plf' ); ?></label>
598 715 <label><input type="radio" name="pagefilter" value="include" <?php checked('include', $option['filter']); ?>/><?php _e('Activate Plugins', 'plf'); ?></label>
599 - <br />
600 716 <div id="page-filter-stat">
601 - <?php echo $this->pagefilter_plugins_checklist( $this->plugins_inf, $pgfilter, $option['plugins'] ); ?>
717 + <?php echo $this->pagefilter_plugins_checklist( $this->plugins_inf, $pgfilter, $option ); ?>
602 718 </div>
603 719 <?php echo '<p class="hide-if-no-js"><a id="plugin-filter-submit" class="button" href="#pluginfilterdiv" onclick="WPAddPagePluginLoadFilter(\'' . $ajax_nonce . '\');return false;" >'. __('Save') .'</a></p>'; ?>
604 720 </div>
605 721 <?php
@@ -613,27 +729,36 @@
613 729 if ( !current_user_can( 'edit_plugins', $pid ) )
614 730 wp_die( -1 );
615 731 check_ajax_referer( "plugin_load_filter-$pid" );
616 732
733 + $pgfilter = (!empty($this->filter['_pagefilter']['plugins']))? $this->filter['_pagefilter']['plugins'] : array();
617 734 $option["filter"] = (empty($_POST['filter']))? 'default' : $_POST['filter'];
618 - $option["plugins"] = '';
619 - if('default' == $option["filter"])
735 + if('default' == $option["filter"]){
620 736 delete_post_meta( $pid, '_plugin_load_filter');
737 + }
621 738 else {
622 739 $plugins = array();
623 - if( preg_match_all('/plf_option\[plugins\]\[(.+?)\]/u', $_POST['plugins'], $matches)){
740 + if( preg_match_all('/plf_option\[desktop\]\[(.+?)\]/u', $_POST['desktop'], $matches)){
624 741 if(!empty($matches[1])){
625 742 foreach ($matches[1] as $plugin){
626 743 $plugins[] = $plugin;
627 744 }
628 - $option["plugins"] = implode(",", $plugins);
745 + $option["desktop"] = implode(",", $plugins);
629 746 }
630 747 }
748 + $plugins = array();
749 + if( preg_match_all('/plf_option\[mobile\]\[(.+?)\]/u', $_POST['mobile'], $matches)){
750 + if(!empty($matches[1])){
751 + foreach ($matches[1] as $plugin){
752 + $plugins[] = $plugin;
753 + }
754 + $option["mobile"] = implode(",", $plugins);
755 + }
756 + }
631 757 update_post_meta( $pid, '_plugin_load_filter', $option );
632 758 }
633 759
634 - $pgfilter = (!empty($this->filter['_pagefilter']['plugins']))? $this->filter['_pagefilter']['plugins'] : array();
635 - $html = $this->pagefilter_plugins_checklist( $this->plugins_inf, $pgfilter, $option['plugins'] );
760 + $html = $this->pagefilter_plugins_checklist( $this->plugins_inf, $pgfilter, $option );
636 761 wp_send_json_success($html);
637 762 }
638 763 wp_die( 0 );
639 764 }
@@ -651,13 +776,8 @@
651 776 <?php }
652 777
653 778 function plf_meta_script() { ?>
654 779 <script type='text/javascript' >
655 - WPAddPagePluginLoadFilter = function(nonce){
656 - jQuery.ajax({ type: 'POST', url: ajaxurl,
657 - data: {action: "plugin_load_filter", post_id : jQuery( '#post_ID' ).val(), _ajax_nonce: nonce, filter: jQuery("input[name='pagefilter']:checked").val(), plugins: jQuery('.plugins-list li input:checked').map(function(){ return jQuery(this).attr("name"); }).get().join(','), }, dataType: 'json',
658 - success: function(response, dataType) { jQuery('#page-filter-stat').html(response.data); }
659 - });
660 - return false; };
780 + WPAddPagePluginLoadFilter = function(nonce){ jQuery.ajax({ type: 'POST', url: ajaxurl, data: { action: "plugin_load_filter", post_id : jQuery( '#post_ID' ).val(), _ajax_nonce: nonce, filter: jQuery("input[name='pagefilter']:checked").val(), desktop: jQuery('.meta-boxes-plugins-table td.desktop input:checked').map(function(){ return jQuery(this).attr("name"); }).get().join(','), mobile: jQuery('.meta-boxes-plugins-table td.mobile input:checked').map(function(){ return jQuery(this).attr("name"); }).get().join(','),}, dataType: 'json', success: function(response, dataType) { jQuery('#page-filter-stat').html(response.data); }}); return false; };
661 781 </script>
662 782 <?php }
663 783 }