Forum Replies Created

Viewing 1 replies (of 1 total)
  • Thread Starter chrisburge

    (@chrisburge)

    Patch is below:

    From ff56242192f8f824adcddfac08d18cdcb3319af7 Mon Sep 17 00:00:00 2001
    From: Chris Burge
    Date: Wed, 6 Sep 2017 12:43:16 -0500
    Subject: [PATCH] Support external increment
    
    ---
     tmpl/menu.php                           | 24 +++++++++++++++++
     wp-version-in-query-string-modifier.php | 48 ++++++++++++++++++++++++++++++++-
     2 files changed, 71 insertions(+), 1 deletion(-)
    
    diff --git a/tmpl/menu.php b/tmpl/menu.php
    index 0c553c8..d089839 100644
    --- a/tmpl/menu.php
    +++ b/tmpl/menu.php
    @@ -16,6 +16,10 @@
                 $check_i = ' checked="checked"';
                 $disable_increment = false;
         }
    +    if (!isset($options['externalKey'])) {
    +        $options['externalKey'] = md5(uniqid(rand(), true));
    +    }
    +
     ?>
     <div class='wrap'>
         <h2><?php echo WPVQSM_LONG_NAME; ?></h2>
    @@ -34,6 +38,10 @@
                         <th><label><input type='radio' <?php echo $check_i; ?> value='i' name='selection'>Cache Buster</label></th>
                         <td><code><?php echo $site_url; ?>/wp-includes/js/jquery/jquery.js?ver=<span id='inc_index'><?php echo $ndx; ?></span></code> <input type='button' value='Increment' id='increment' class='button-primary'></td>
                     </tr>
    +                <tr class="external-key">
    +                    <th></th>
    +                    <td><label for="external-key">External Key: </label><input type="text" name="externalKey" size="32" value="<?php print $options['externalKey']; ?>"/><br /><br />The cache buster can be externally incremented using the URL below:<br /><br /><code><?php print get_site_url() . 'wp-json/wpvqsm/v1/increment?key=<span class="external-key-inline">' . $options['externalKey'] . '</span>'; ?></code></td>
    +                </tr>
                     <tr>
                         <th><label><input type='radio' <?php echo $check_r; ?> value='r' name='selection'> Remove Version</label></th>
                         <td><code><?php echo $site_url; ?>/wp-includes/js/jquery/jquery.js</code></td>
    @@ -87,5 +95,21 @@
                 }
     		});
         });
    +    var selection = $('input:radio[name=selection]');
    +    selection.change(function () {
    +        var value = this.value;
    +        if (value != "i") {
    +            $('.external-key').hide();
    +        }
    +        else {
    +            $('.external-key').show();
    +        }
    +    });
    +    var externalKey = $('input:text[name=externalKey]');
    +    externalKey.change(function () {
    +        var value = this.value;
    +        console.log(value);
    +        $('.external-key-inline').text(value);
    +    });
     })(jQuery);
     </script>
    \ No newline at end of file
    diff --git a/wp-version-in-query-string-modifier.php b/wp-version-in-query-string-modifier.php
    index 537d17f..1eb5b88 100644
    --- a/wp-version-in-query-string-modifier.php
    +++ b/wp-version-in-query-string-modifier.php
    @@ -134,6 +134,7 @@ function wpvqsm_update_callback() {
         $options = wpvqsm_get_options();
         $options['selection'] = $_POST['selection'];
         $options['addTime'] = $_POST['addTime'];
    +    $options['externalKey'] = $_POST['externalKey'];
         wpvqsm_update_options( $options );
         wp_safe_redirect( 'options-general.php?settings-updated=true&page=' . WPVQSM );
     }
    @@ -162,6 +163,49 @@ function wpvqsm_ajax_callback() {
         die( 1 );
     }
     
    +/**
    + * Callback function for REST API.
    + *
    + * @since 1.x
    + *
    + */
    +function wpvqsm_external_increment_callback(WP_REST_Request $data) {
    +
    +    // Get options.
    +    $options = wpvqsm_get_options();
    +
    +    if ($options['selection'] != 'i') {
    +        return rest_ensure_response( array("enabled"=>false));
    +    }
    +
    +    // Get key from query string and validate.
    +    $query_string = $data->get_query_params();
    +    $key = $query_string['key'];
    +    if (is_null($options['externalKey']) || $key != $options['externalKey']) {
    +        return rest_ensure_response( array("authorized"=>false));
    +    }
    +
    +    // Update Increment value.
    +    ++$options['increment'];
    +    wpvqsm_update_options( $options );
    +
    +    // rest_ensure_response() wraps the data we want to return into a WP_REST_Response, and ensures it will be properly returned.
    +    return rest_ensure_response( array("authorized"=>true, "increment"=>$options['increment']) );
    +}
    +
    +/**
    + * Register REST route for endpoint.
    + *
    + * @since 1.x
    + *
    + */
    +function wpvqsm_external_increment() {
    +    register_rest_route( 'wpvqsm/v1', '/increment', array(
    +       'methods'  => 'GET',
    +       'callback' => 'wpvqsm_external_increment_callback',
    +   ) );
    +}
    +
     /**
      * plugin activation process
      *
    @@ -224,4 +268,6 @@ if ( is_admin() ){
     }
     
     add_filter( 'script_loader_src', WPVQSM. 'modify_version' );
    -add_filter( 'style_loader_src', WPVQSM. 'modify_version' );   
    \ No newline at end of file
    +add_filter( 'style_loader_src', WPVQSM. 'modify_version' );
    +
    +add_action( 'rest_api_init', WPVQSM . 'external_increment' );
    \ No newline at end of file
    -- 
    2.14.1.windows.1
Viewing 1 replies (of 1 total)