Plugin Directory

Changeset 2766105


Ignore:
Timestamp:
08/04/2022 12:40:37 AM (4 years ago)
Author:
enrico.sorcinelli
Message:

1.4.0 release

Location:
rest-xmlrpc-data-checker/trunk
Files:
5 added
14 edited

Legend:

Unmodified
Added
Removed
  • rest-xmlrpc-data-checker/trunk/assets/css/admin.css

    r2361295 r2766105  
    2828    background-color: #fff;
    2929    border: 1px solid #e5e5e5;
     30    padding: 0 10px;
    3031}
    31 
    32 .form-table .rest-xmlrpc-data-checker-cb-list h2 span {
    33     cursor: pointer;
    34 }
    35 
    36 .form-table .rest-xmlrpc-data-checker-cb-list ul {
    37     display: none;
    38     margin-top: 0;
    39     margin-left: 34px;
    40 }
    41 
    42 .form-table .rest-xmlrpc-data-checker-cb-list h2 span:after,
    43 .form-table .rest-xmlrpc-data-checker-cb-list h2 span.closed:after {
    44     content: "\f142";
    45     display: inline-block;
    46     font: 400 20px / 1 dashicons;
    47     width: 20px;
    48     margin-top: 4px;
    49     vertical-align: bottom;
    50 }
    51 
    52 .form-table .rest-xmlrpc-data-checker-cb-list h2 span:after {
    53     color: #72777c;
    54 }
    55 
    56 .form-table .rest-xmlrpc-data-checker-cb-list h2 span.closed:after {
    57     content: "\f140";
    58 }
    59 
    6032
    6133#xmlrpc_trusted_users {
     
    11688}
    11789
    118 div.rest-xmlrpc-data-checker-cb-list input[type="checkbox"]:indeterminate:before {
    119     content: "\f460";
    120     font-family: dashicons;
    121     color: #1e8cbe;
    122     margin-top: 7px;
    123     display: inline-block;
    124 }
    125 
    12690/* Users list */
    12791th.column-rest-xmlrpc-data-checker-status {
     
    162126    }
    163127}
     128
     129/* Flex tree */
     130ul.flex-tree {
     131    padding-left: 0;
     132}
     133ul.flex-tree li span.closed:after,
     134ul.flex-tree li span.open:after {
     135    content: "\f142";
     136    font-family: dashicons;
     137    color: #72777c;
     138    vertical-align: bottom;
     139}
     140ul.flex-tree li span.open:after {
     141    content: "\f140";
     142}
     143
     144ul.flex-tree input[type="checkbox"]:indeterminate:before {
     145    content: "\f460";
     146    font-family: dashicons;
     147    color: #1e8cbe;
     148    margin-top: 7px;
     149    display: inline-block;
     150}
     151
     152@media screen and ( max-width: 782px ) {
     153
     154    ul.flex-tree input[type="checkbox"]:indeterminate:before {
     155        margin-top: 12px;
     156        font-size: 20px;
     157        font-weight: bold;
     158    }
     159}
  • rest-xmlrpc-data-checker/trunk/assets/css/admin.min.css

    r2361295 r2766105  
    1 .form-table .rest-xmlrpc-data-checker-cb-list h2 span,h2.nav-tab-wrapper a.rest-xmlrpc-data-checker,table.rest-xmlrpc-data-checker-users-list.cb tbody tr td{cursor:pointer}h2.nav-tab-wrapper.rest-xmlrpc-data-checker{padding:inherit!important}section.rest-xmlrpc-data-checker{display:none}section.rest-xmlrpc-data-checker:first-of-type{display:block}.form-table .rest-xmlrpc-data-checker-indent{margin-left:24px}.form-table .rest-xmlrpc-data-checker-cb-list{background-color:#fff;border:1px solid #e5e5e5}.form-table .rest-xmlrpc-data-checker-cb-list ul{display:none;margin-top:0;margin-left:34px}.form-table .rest-xmlrpc-data-checker-cb-list h2 span.closed:after,.form-table .rest-xmlrpc-data-checker-cb-list h2 span:after{content:"\f142";display:inline-block;font:400 20px/1 dashicons;width:20px;margin-top:4px;vertical-align:bottom}.form-table .rest-xmlrpc-data-checker-cb-list h2 span:after{color:#72777c}.form-table .rest-xmlrpc-data-checker-cb-list h2 span.closed:after{content:"\f140"}#xmlrpc_trusted_users{height:200px}div.update-nag.rest_basic_auth_alert,div.update-nag.xmlrpc_enable_alert{margin-top:5px;margin-left:22px;display:none;background-color:#fff;border-left:4px solid #ffba00;box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.prettydropdown>ul{font:inherit!important}div table.rest-xmlrpc-data-checker-users-list{table-layout:initial}div table.rest-xmlrpc-data-checker-users-list th{padding:8px 10px}div table.rest-xmlrpc-data-checker-users-list tbody{display:block;max-height:200px;overflow-y:scroll}table.rest-xmlrpc-data-checker-users-list tbody tr,table.rest-xmlrpc-data-checker-users-list tfoot,table.rest-xmlrpc-data-checker-users-list thead{display:table;width:100%;table-layout:fixed}table.rest-xmlrpc-data-checker-users-list thead{width:calc(100% - 1.1em)}table.rest-xmlrpc-data-checker-users-list.cb tbody tr.selected{background-color:#c6d5ff}input[type=checkbox].indeterminate{background-color:#eee}div.rest-xmlrpc-data-checker-cb-list input[type=checkbox]:indeterminate:before{content:"\f460";font-family:dashicons;color:#1e8cbe;margin-top:7px;display:inline-block}th.column-rest-xmlrpc-data-checker-status{text-align:center}.rest-xmlrpc-data-checker-ok{color:green}.rest-xmlrpc-data-checker-ko{color:#d00}td.column-rest-xmlrpc-data-checker-status div.table{margin:auto;display:table}td.column-rest-xmlrpc-data-checker-status div.row{display:table-row}td.column-rest-xmlrpc-data-checker-status div.cell{display:table-cell;padding-right:10px}@media screen and (max-width:782px){td.column-rest-xmlrpc-data-checker-status,th.column-rest-xmlrpc-data-checker-status{text-align:inherit}td.column-rest-xmlrpc-data-checker-status div.table{margin:inherit}}
     1h2.nav-tab-wrapper a.rest-xmlrpc-data-checker,table.rest-xmlrpc-data-checker-users-list.cb tbody tr td{cursor:pointer}h2.nav-tab-wrapper.rest-xmlrpc-data-checker{padding:inherit!important}section.rest-xmlrpc-data-checker{display:none}section.rest-xmlrpc-data-checker:first-of-type{display:block}.form-table .rest-xmlrpc-data-checker-indent{margin-left:24px}.form-table .rest-xmlrpc-data-checker-cb-list{background-color:#fff;border:1px solid #e5e5e5;padding:0 10px}#xmlrpc_trusted_users{height:200px}div.update-nag.rest_basic_auth_alert,div.update-nag.xmlrpc_enable_alert{margin-top:5px;margin-left:22px;display:none;background-color:#fff;border-left:4px solid #ffba00;box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.prettydropdown>ul{font:inherit!important}div table.rest-xmlrpc-data-checker-users-list{table-layout:initial}div table.rest-xmlrpc-data-checker-users-list th{padding:8px 10px}div table.rest-xmlrpc-data-checker-users-list tbody{display:block;max-height:200px;overflow-y:scroll}table.rest-xmlrpc-data-checker-users-list tbody tr,table.rest-xmlrpc-data-checker-users-list tfoot,table.rest-xmlrpc-data-checker-users-list thead{display:table;width:100%;table-layout:fixed}table.rest-xmlrpc-data-checker-users-list thead{width:calc(100% - 1.1em)}table.rest-xmlrpc-data-checker-users-list.cb tbody tr.selected{background-color:#c6d5ff}input[type=checkbox].indeterminate{background-color:#eee}th.column-rest-xmlrpc-data-checker-status{text-align:center}.rest-xmlrpc-data-checker-ok{color:green}.rest-xmlrpc-data-checker-ko{color:#d00}td.column-rest-xmlrpc-data-checker-status div.table{margin:auto;display:table}td.column-rest-xmlrpc-data-checker-status div.row{display:table-row}td.column-rest-xmlrpc-data-checker-status div.cell{display:table-cell;padding-right:10px}@media screen and (max-width:782px){td.column-rest-xmlrpc-data-checker-status,th.column-rest-xmlrpc-data-checker-status{text-align:inherit}td.column-rest-xmlrpc-data-checker-status div.table{margin:inherit}}ul.flex-tree{padding-left:0}ul.flex-tree li span.closed:after,ul.flex-tree li span.open:after{content:"\f142";font-family:dashicons;color:#72777c;vertical-align:bottom}ul.flex-tree li span.open:after{content:"\f140"}ul.flex-tree input[type=checkbox]:indeterminate:before{content:"\f460";font-family:dashicons;color:#1e8cbe;margin-top:7px;display:inline-block}@media screen and (max-width:782px){ul.flex-tree input[type=checkbox]:indeterminate:before{margin-top:12px;font-size:20px;font-weight:700}}
  • rest-xmlrpc-data-checker/trunk/assets/js/admin.js

    r2361295 r2766105  
    6464        }
    6565
    66         // Handle toggle over methods/end-point.
    67         $( '.rest-xmlrpc-data-checker-cb-list h2 span' ).on( 'click', function() {
    68             $( this )
    69                 .toggleClass( 'closed' )
    70                 .parent().next().toggle( 200 );
     66        // Setup jQuery Flex Tree for REST routes.
     67        $( '#rest-xmlrpc-data-checker-rest-routes' ).flexTree(
     68            {
     69                type: 'checkbox',
     70                name: 'rest_xmlrpc_data_checker_settings[rest][allowed_routes][]',
     71                collapsed: true,
     72                items: rest_xmlrpc_data_checker_jft_items.rest
     73            }
     74        );
    7175
    72         } );
    73 
    74         // Check all/none over methods/end-point.
    75         $( '.rest-xmlrpc-data-checker-cb-list h2' ).find( 'input[type="checkbox"]:first' ).on( 'click', function() {
    76             $( this ).removeClass( 'indeterminate' );
    77             $( this ).parent().next().find( 'input[type="checkbox"]' ).prop( 'checked', $( this ).prop( 'checked' ) );
    78         } );
    79 
    80         // Handle toggle on 'all' checkboxes.
    81         var check_all_checkbox = function() {
    82             var $all_cb = $( this ).parents( 'ul' ).prev().find( 'input[type="checkbox"]:first' );
    83 
    84             // Remove checkall.
    85             if ( ! $( this ).prop( 'checked' ) ) {
    86                 $all_cb.prop( 'checked', false );
     76        // Setup jQuery Flex Tree for XML-RPC methods.
     77        $( '#rest-xmlrpc-data-checker-xmlrpc-methods' ).flexTree(
     78            {
     79                type: 'checkbox',
     80                name: 'rest_xmlrpc_data_checker_settings[xmlrpc][allowed_methods][]',
     81                collapsed: true,
     82                items: rest_xmlrpc_data_checker_jft_items.xmlrpc
    8783            }
    88             var all_is_checked = true,
    89                 some_is_checked = false;
    90 
    91             // Check all childrens.
    92             $( this ).parents( 'ul' ).find( 'input[type="checkbox"]' ).each( function() {
    93                 if ( ! $( this ).prop( 'checked' ) ) {
    94                     all_is_checked = false;
    95                 }
    96                 else {
    97                     some_is_checked = true;
    98                 }
    99             } );
    100 
    101             if ( some_is_checked ) {
    102                 $all_cb.addClass( 'indeterminate' )
    103                     .prop( 'indeterminate', true );
    104             }
    105             else {
    106                 $all_cb.removeClass( 'indeterminate' )
    107                     .prop( 'indeterminate', false );
    108             }
    109 
    110             if ( all_is_checked ) {
    111                 $all_cb.prop( 'checked', true )
    112                     .prop( 'indeterminate', false )
    113                     .removeClass( 'indeterminate' );
    114             }
    115 
    116         };
    117 
    118         // Check parent at run time.
    119         $( '.rest-xmlrpc-data-checker-cb-list ul input[type="checkbox"]' ).on( 'click', check_all_checkbox );
    120 
    121         // Check parent checkbox on load.
    122         $( '.rest-xmlrpc-data-checker-cb-list ul' ).each( function() {
    123             ( $( 'input[type="checkbox"]:first', this ) ).each( check_all_checkbox );
    124         } );
     84        );
    12585
    12686    });
  • rest-xmlrpc-data-checker/trunk/assets/js/admin.min.js

    r2361295 r2766105  
    11/* REST XMLRPC Data Checker */
    2 !function(a){a(document).ready(function(){a(".nav-tab-wrapper.rest-xmlrpc-data-checker a").on("click",function(){return a(".nav-tab.rest-xmlrpc-data-checker").removeClass("nav-tab-active"),a(this).addClass("nav-tab-active"),a("section.rest-xmlrpc-data-checker").hide().eq(a(this).index()).show(),a('input[name="'+rest_xmlrpc_data_checker_i18n.prefix+'active_tab"]').val(a(this).data("section")),document.location.hash=a(this).data("section"),!1}),a('.nav-tab-wrapper.rest-xmlrpc-data-checker a[data-section="'+document.location.hash.replace(/^#+/,"")+'"]').trigger("click"),a("table.rest-xmlrpc-data-checker-users-list.cb tbody tr td").on("click",function(b){a(b.currentTarget).parent().find("th input").first().trigger("click")}),/^https/.test(document.location.protocol)||("basic_auth"===a('input[name="'+rest_xmlrpc_data_checker_i18n.prefix+'settings\\[rest\\]\\[auth_method\\]"]:checked').val()?a("div.update-nag.rest_basic_auth_alert").show():a("."+rest_xmlrpc_data_checker_i18n.prefix+"rest_enable").hide(),a('input[name="'+rest_xmlrpc_data_checker_i18n.prefix+'settings\\[rest\\]\\[auth_method\\]"]').on("click",function(){"basic_auth"===a(this).val()?(a("div.update-nag.rest_basic_auth_alert").show(200),a("."+rest_xmlrpc_data_checker_i18n.prefix+"rest_enable").show(200)):(a("div.update-nag.rest_basic_auth_alert").hide(200),a("."+rest_xmlrpc_data_checker_i18n.prefix+"rest_enable").hide(200))}),!1===a("#"+rest_xmlrpc_data_checker_i18n.prefix+"settings_xmlrpc_disable").prop("checked")&&a("div.update-nag.xmlrpc_enable_alert").show(),a("#"+rest_xmlrpc_data_checker_i18n.prefix+"settings_xmlrpc_disable").on("click",function(){!1===a(this).prop("checked")?a("div.update-nag.xmlrpc_enable_alert").show(200):a("div.update-nag.xmlrpc_enable_alert").hide(200)})),a(".rest-xmlrpc-data-checker-cb-list h2 span").on("click",function(){a(this).toggleClass("closed").parent().next().toggle(200)}),a(".rest-xmlrpc-data-checker-cb-list h2").find('input[type="checkbox"]:first').on("click",function(){a(this).removeClass("indeterminate"),a(this).parent().next().find('input[type="checkbox"]').prop("checked",a(this).prop("checked"))});var b=function(){var b=a(this).parents("ul").prev().find('input[type="checkbox"]:first');a(this).prop("checked")||b.prop("checked",!1);var c=!0,d=!1;a(this).parents("ul").find('input[type="checkbox"]').each(function(){a(this).prop("checked")?d=!0:c=!1}),d?b.addClass("indeterminate").prop("indeterminate",!0):b.removeClass("indeterminate").prop("indeterminate",!1),c&&b.prop("checked",!0).prop("indeterminate",!1).removeClass("indeterminate")};a('.rest-xmlrpc-data-checker-cb-list ul input[type="checkbox"]').on("click",b),a(".rest-xmlrpc-data-checker-cb-list ul").each(function(){a('input[type="checkbox"]:first',this).each(b)})})}(jQuery);
     2!function(a){a(document).ready(function(){a(".nav-tab-wrapper.rest-xmlrpc-data-checker a").on("click",function(){return a(".nav-tab.rest-xmlrpc-data-checker").removeClass("nav-tab-active"),a(this).addClass("nav-tab-active"),a("section.rest-xmlrpc-data-checker").hide().eq(a(this).index()).show(),a('input[name="'+rest_xmlrpc_data_checker_i18n.prefix+'active_tab"]').val(a(this).data("section")),document.location.hash=a(this).data("section"),!1}),a('.nav-tab-wrapper.rest-xmlrpc-data-checker a[data-section="'+document.location.hash.replace(/^#+/,"")+'"]').trigger("click"),a("table.rest-xmlrpc-data-checker-users-list.cb tbody tr td").on("click",function(b){a(b.currentTarget).parent().find("th input").first().trigger("click")}),/^https/.test(document.location.protocol)||("basic_auth"===a('input[name="'+rest_xmlrpc_data_checker_i18n.prefix+'settings\\[rest\\]\\[auth_method\\]"]:checked').val()?a("div.update-nag.rest_basic_auth_alert").show():a("."+rest_xmlrpc_data_checker_i18n.prefix+"rest_enable").hide(),a('input[name="'+rest_xmlrpc_data_checker_i18n.prefix+'settings\\[rest\\]\\[auth_method\\]"]').on("click",function(){"basic_auth"===a(this).val()?(a("div.update-nag.rest_basic_auth_alert").show(200),a("."+rest_xmlrpc_data_checker_i18n.prefix+"rest_enable").show(200)):(a("div.update-nag.rest_basic_auth_alert").hide(200),a("."+rest_xmlrpc_data_checker_i18n.prefix+"rest_enable").hide(200))}),!1===a("#"+rest_xmlrpc_data_checker_i18n.prefix+"settings_xmlrpc_disable").prop("checked")&&a("div.update-nag.xmlrpc_enable_alert").show(),a("#"+rest_xmlrpc_data_checker_i18n.prefix+"settings_xmlrpc_disable").on("click",function(){!1===a(this).prop("checked")?a("div.update-nag.xmlrpc_enable_alert").show(200):a("div.update-nag.xmlrpc_enable_alert").hide(200)})),a("#rest-xmlrpc-data-checker-rest-routes").flexTree({type:"checkbox",name:"rest_xmlrpc_data_checker_settings[rest][allowed_routes][]",collapsed:!0,items:rest_xmlrpc_data_checker_jft_items.rest}),a("#rest-xmlrpc-data-checker-xmlrpc-methods").flexTree({type:"checkbox",name:"rest_xmlrpc_data_checker_settings[xmlrpc][allowed_methods][]",collapsed:!0,items:rest_xmlrpc_data_checker_jft_items.xmlrpc})})}(jQuery);
  • rest-xmlrpc-data-checker/trunk/php/adminpages/settings.php

    r2361295 r2766105  
    99// PHPCS:disable Generic.WhiteSpace.ScopeIndent.Incorrect
    1010
    11 // Global.
    12 global $wp_query, $wp;
    13 
    14 /**
    15  * Build checkbox list.
    16  *
    17  * @param array $args {
    18  *     Arguments list.
    19  *     @type array  $items
    20  *     @type string $name
    21  *     @type array  $checked_items
    22  * }
    23  */
    24 function cb_list( $args = array() ) {
    25     $args = array_merge(
    26         array(
    27             'items'         => array(),
    28             'name'          => '',
    29             'checked_items' => array(),
    30         ),
    31         $args
    32     );
    33 ?>
    34         <div class="rest-xmlrpc-data-checker-cb-list">
    35 <?php
    36     foreach ( $args['items']  as $key => $value ) {
    37 ?>
    38             <h2><input type="checkbox"> <span class="closed"><?php echo esc_html( $key ); ?></span></h2>
    39             <ul>
    40 <?php
    41         foreach ( $value as $item ) {
    42 ?>
    43                 <li>
    44                     <label>
    45                         <input name="<?php echo esc_attr( $args['name'] ); ?>" type="checkbox" value="<?php echo esc_attr( $item ); ?>" <?php checked( 1, in_array( $item, $args['checked_items'], true ) ); ?>">
    46                         <?php echo esc_html( $item ); ?>
    47                     </label>
    48                 </li>
    49 <?php
    50         }
    51 ?>
    52             </ul>
    53 <?php
    54     }
    55 ?>
    56         <div>
    57 <?php
    58 }
     11echo '<script type="text/javascript"> var rest_xmlrpc_data_checker_jft_items = ' . json_encode( $params['jft_items'] ) . ';</script>';
    5912?>
    6013<div class="wrap">
     
    202155                        <?php esc_html_e( 'This will applied only if REST API interface has been disabled for unlogged users.', 'rest-xmlrpc-data-checker' ); ?>
    203156                    </p>
    204                     <?php
    205                         cb_list(
    206                             array(
    207                                 'items'         => $params['rest_routes'],
    208                                 'name'          => $params['prefix'] . 'settings[rest][allowed_routes][]',
    209                                 'checked_items' => $params['settings']['rest']['allowed_routes'],
    210                             )
    211                         );
    212                     ?>
     157                    <div class="rest-xmlrpc-data-checker-cb-list" id="rest-xmlrpc-data-checker-rest-routes"></div>
    213158                </td>
    214159            </tr>
     
    319264                        <?php esc_html_e( 'With this option active, you can selectively allow XML-RPC methods.', 'rest-xmlrpc-data-checker' ); ?>
    320265                    </p>
    321                     <?php
    322                         cb_list(
    323                             array(
    324                                 'items'         => $params['xmlrpc_methods'],
    325                                 'name'          => $params['prefix'] . 'settings[xmlrpc][allowed_methods][]',
    326                                 'checked_items' => $params['settings']['xmlrpc']['allowed_methods'],
    327                             )
    328                         );
    329                     ?>
     266                    <div class="rest-xmlrpc-data-checker-cb-list" id="rest-xmlrpc-data-checker-xmlrpc-methods"></div>
    330267                </td>
    331268            </tr>
  • rest-xmlrpc-data-checker/trunk/php/adminpages/user-fields.php

    r1972559 r2766105  
    11<?php
    22/**
    3  * User fields.
     3 * User fields settings template part.
    44 *
    55 * @package rest-xmlrpc-data-checker
  • rest-xmlrpc-data-checker/trunk/php/class-rest-xmlrpc-data-checker-admin.php

    r2361295 r2766105  
    4949
    5050    /**
    51      * Construct the plugin.
     51     * Plugin Admin constructor.
    5252     *
    5353     * @param array $args {
     
    5656     *     @type boolean $debug
    5757     * }
    58      *
    59      * @return object
    6058     */
    6159    public function __construct( $args = array() ) {
     
    214212     */
    215213    public function load_css() {
    216         global $post_type;
     214
     215        wp_enqueue_style(
     216            $this->prefix . 'jquery-flex-tree-css',
     217            REST_XMLRPC_DATA_CHECKER_BASEURL . 'lib/jquery-flex-tree/flex-tree-minimal.min.css',
     218            array(),
     219            REST_XMLRPC_DATA_CHECKER_VERSION,
     220            'screen'
     221        );
    217222
    218223        wp_enqueue_style(
    219224            $this->prefix . 'css',
    220225            REST_XMLRPC_DATA_CHECKER_BASEURL . '/assets/css/admin' . $this->assets_suffix . '.css',
     226            $this->prefix . 'jquery-flex-tree-css',
     227            REST_XMLRPC_DATA_CHECKER_VERSION,
     228            'screen'
     229        );
     230    }
     231
     232    /**
     233     * Load JavaScript files.
     234     *
     235     * @return void
     236     */
     237    public function load_javascript() {
     238
     239        wp_enqueue_script(
     240            $this->prefix . 'jquery-flex-tree-js',
     241            REST_XMLRPC_DATA_CHECKER_BASEURL . 'lib/jquery-flex-tree/flex-tree.min.js',
    221242            array(),
    222243            REST_XMLRPC_DATA_CHECKER_VERSION,
    223             'screen'
    224         );
    225     }
    226 
    227     /**
    228      * Load JavaScript files.
    229      *
    230      * @return void
    231      */
    232     public function load_javascript() {
    233         global $post_type;
     244            false
     245        );
    234246
    235247        wp_enqueue_script(
    236248            $this->prefix . 'js',
    237249            REST_XMLRPC_DATA_CHECKER_BASEURL . '/assets/js/admin' . $this->assets_suffix . '.js',
    238             array(),
     250            $this->prefix . 'jquery-flex-tree-js',
    239251            REST_XMLRPC_DATA_CHECKER_VERSION,
    240252            false
     
    341353                    )
    342354                ),
     355                'jft_items'         => array(
     356                    'rest'   => $this->build_jft_items(
     357                        array(
     358                            'items'         => $rest_routes_items,
     359                            'checked_items' => $this->plugin_settings['rest']['allowed_routes'],
     360                        )
     361                    ),
     362                    'xmlrpc' => $this->build_jft_items(
     363                        array(
     364                            'items'         => $xmlrpc_methods_items,
     365                            'checked_items' => $this->plugin_settings['xmlrpc']['allowed_methods'],
     366                        )
     367                    ),
     368                ),
    343369            )
    344370        );
     
    642668        return $value;
    643669    }
     670
     671    /**
     672     * Prepare items for use with jQuery Flex Tree.
     673     *
     674     * @param array $args {
     675     *     Arguments list.
     676     *     @type string $id            Element ID.
     677     *     @type array  $items         Items.
     678     *     @type string $name          Element name.
     679     *     @type array  $checked_items Checked elements.
     680     * }
     681     *
     682     * @since 1.3.3
     683     *
     684     * @return array
     685     */
     686    public function build_jft_items( $args = array() ) {
     687
     688        $args = array_merge(
     689            array(
     690                'id'            => null,
     691                'items'         => array(),
     692                'name'          => '',
     693                'checked_items' => array(),
     694            ),
     695            $args
     696        );
     697
     698        $jft_items = array();
     699
     700        foreach ( $args['items'] as $key => $value ) {
     701            if ( is_array( $value ) ) {
     702                $children = array();
     703                foreach ( $value as $item ) {
     704                    array_push(
     705                        $children,
     706                        array(
     707                            'label'   => $item,
     708                            'value'   => $item,
     709                            'checked' => in_array( $item, $args['checked_items'], true ),
     710                        )
     711                    );
     712                }
     713                array_push(
     714                    $jft_items,
     715                    array(
     716                        'label'     => $key,
     717                        'childrens' => $children,
     718                    )
     719                );
     720            }
     721            else {
     722                array_push(
     723                    $jft_items,
     724                    array(
     725                        'label'   => $value,
     726                        'value'   => $value,
     727                        'checked' => in_array( $value, $args['checked_items'], true ),
     728                    )
     729                );
     730            }
     731        }
     732
     733        return $jft_items;
     734    }
    644735}
  • rest-xmlrpc-data-checker/trunk/php/class-rest-xmlrpc-data-checker-rest.php

    r2096749 r2766105  
    3535
    3636    /**
    37      * Construct the plugin.
     37     * Plugin REST constructor.
    3838     *
    3939     * @param array $args {
     
    4242     *     @type boolean $debug
    4343     * }
    44      *
    45      * @return Rest
    4644     */
    4745    public function __construct( $args = array() ) {
  • rest-xmlrpc-data-checker/trunk/php/class-rest-xmlrpc-data-checker-users-wp-list-table.php

    r1972559 r2766105  
    8282
    8383        $columns               = $this->get_columns();
    84         $hidden                = [];
     84        $hidden                = array();
    8585        $sortable              = $this->get_sortable_columns();
    8686        $this->_column_headers = array( $columns, $hidden, $sortable );
  • rest-xmlrpc-data-checker/trunk/php/class-rest-xmlrpc-data-checker-utils.php

    r2096749 r2766105  
    131131     * @return array The new array if the key exists.
    132132     */
    133     public static function array_insert_before( $args = [] ) {
     133    public static function array_insert_before( $args = array() ) {
    134134
    135135        // Check array.
  • rest-xmlrpc-data-checker/trunk/php/class-rest-xmlrpc-data-checker-xmlrpc.php

    r2096749 r2766105  
    134134    /**
    135135     * 'xmlrpc_enabled' filter hook. Check remote IP over trusted IP list
    136      * and turn on/off XML-RPC inteface accordingly.
     136     * and turn on/off XML-RPC interface accordingly.
    137137     *
    138138     * @return boolean
  • rest-xmlrpc-data-checker/trunk/php/class-rest-xmlrpc-data-checker.php

    r2096749 r2766105  
    7474     *     @type boolean $debug Default value is `false`.
    7575     * }
    76      *
    77      *  @return REST_XMLRPC_Data_Checker
    7876     */
    7977    public function __construct( $args = array() ) {
     
    143141            add_action( 'wp', array( $this, 'filter_wp' ), 10 );
    144142        };
     143
     144        // Handle specific plugin caps for multisite superadmin.
     145        add_filter( 'map_meta_cap', array( $this, 'filter_map_meta_cap' ), 10, 3 );
    145146    }
    146147
     
    167168        // PHPCS:ignore
    168169        @header_remove( 'X-Pingback' );
     170    }
     171
     172    /**
     173     * Multisite super admin has all caps by definition unless specifically denied.
     174     *
     175     * @param array   $caps     Capabilities.
     176     * @param string  $cap      Capability.
     177     * @param integer $user_id  User ID.
     178     *
     179     * @return array
     180     */
     181    public function filter_map_meta_cap( $caps, $cap, $user_id ) {
     182
     183        // Only checks for custom_capability.
     184        if (
     185            is_multisite()
     186            && is_super_admin( $user_id )
     187            && ( 'rest_xmlrpc_data_checker_xmlrpc_enable' === $cap || 'rest_xmlrpc_data_checker_rest_enable' === $cap )
     188        ) {
     189            $user      = get_userdata( $user_id );
     190            $user_caps = $user->get_role_caps();
     191
     192            // If the user does not have the capability, or it's denied, then add do_not_allow.
     193            if ( empty( $user_caps[ $cap ] ) ) {
     194                $caps[] = 'do_not_allow';
     195            }
     196        }
     197
     198        return $caps;
    169199    }
    170200
  • rest-xmlrpc-data-checker/trunk/readme.txt

    r2361295 r2766105  
    44Requires at least: 4.4
    55Requires PHP: 5.2.4
    6 Tested up to: 5.5
    7 Stable tag: 1.3.2
     6Tested up to: 6.0
     7Stable tag: 1.4.0
    88License: GPLv2 or later
    99
     
    123123== Upgrade Notice ==
    124124
     125= 1.4.0 =
     126
     127* Multisite support improvement for superadmin plugin's caps.
     128* Tested to the latest WordPress release.
     129
    125130= 1.3.1 =
    126131
    127 Allows to use PHP single line comments in trusted network option; allows to prevent to leave blocks comments in `post_content` via XML-RPC.
     132* Allows to use PHP single line comments in trusted network option; allows to prevent to leave blocks comments in `post_content` via XML-RPC.
    128133
    129134= 1.3.0 =
    130135
    131 Trusted networks check over IP address found in HTTP headers added by proxy or load balancer is now disabled by default. It can be enabled on plugin settings page.
     136* Trusted networks check over IP address found in HTTP headers added by proxy or load balancer is now disabled by default. It can be enabled on plugin settings page.
  • rest-xmlrpc-data-checker/trunk/rest-xmlrpc-data-checker.php

    r2361295 r2766105  
    1212 * Text Domain: rest-xmlrpc-data-checker
    1313 * Domain Path: /languages/
    14  * Version:     1.3.2
     14 * Version:     1.4.0
    1515 * License:     GPLv2 or later
    1616 * License URI: https://www.gnu.org/licenses/gpl-2.0.html
     
    2424
    2525// Plugins constants.
    26 define( 'REST_XMLRPC_DATA_CHECKER_VERSION', '1.3.2' );
     26define( 'REST_XMLRPC_DATA_CHECKER_VERSION', '1.4.0' );
    2727define( 'REST_XMLRPC_DATA_CHECKER_BASEDIR', dirname( __FILE__ ) );
    2828define( 'REST_XMLRPC_DATA_CHECKER_BASEURL', plugin_dir_url( __FILE__ ) );
Note: See TracChangeset for help on using the changeset viewer.