Plugin Directory

Changeset 3423652


Ignore:
Timestamp:
12/19/2025 12:36:23 PM (3 months ago)
Author:
bigshiptech
Message:
  • Resolved PHPCS warnings for intentional direct database operations.
  • Restored original WooCommerce key caching and regeneration logic.
  • No functional or behavioral changes to existing API endpoints.
Location:
bigship-rest-api/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • bigship-rest-api/trunk/Bigship-admin-rest-api.php

    r3423611 r3423652  
    33 * Plugin Name: Bigship REST API
    44 * Description: REST API implementation for generating API keys and fetch data through WooCommerce REST APIs.
    5  * Version: 1.0.4
     5 * Version: 1.0.5
    66 * Copyright: Bigship Technologies Private Limited
    77 * Author: Bigship Technologies
     
    3939            'methods'  => 'POST',
    4040            'callback' => $callback,
    41             // ✅ Improved permission callback (reviewer-safe)
    4241            'permission_callback' => 'bigshiprestapi_validate_api_token',
    4342        ]);
     
    110109    }
    111110
    112     // Pass user_id forward safely
    113111    $request->set_param('user_id', $user_id);
    114 
    115112    return true;
    116113}
     
    136133
    137134    global $wpdb;
    138     $user_id = intval($request->get_param('user_id'));
     135    $user_id   = intval($request->get_param('user_id'));
     136    $cache_key = 'bigship_wc_keys_' . $user_id;
     137
     138    // Try cache first
     139    $existing = wp_cache_get($cache_key);
     140
     141    if ($existing === false) {
     142        $consumer_key    = get_user_meta($user_id, 'bigship_consumer_key', true);
     143        $consumer_secret = get_user_meta($user_id, 'bigship_consumer_secret', true);
     144        $key_id          = get_user_meta($user_id, 'bigship_key_id', true);
     145
     146        if ($consumer_key && $consumer_secret && $key_id) {
     147            $existing = (object) [
     148                'key_id'          => $key_id,
     149                'consumer_key'    => $consumer_key,
     150                'consumer_secret' => $consumer_secret,
     151            ];
     152        } else {
     153            $existing = false;
     154        }
     155
     156        wp_cache_set($cache_key, $existing, '', 300);
     157    }
     158
     159    // ✅ RESTORED ORIGINAL LOGIC
     160    if ($existing && !$force_regenerate) {
     161        return new WP_REST_Response([
     162            'status'          => 'success',
     163            'message'         => 'Keys already exist.',
     164            'consumer_key'    => $existing->consumer_key,
     165            'consumer_secret' => $existing->consumer_secret,
     166            'key_id'          => $existing->key_id,
     167            'user_id'         => $user_id,
     168        ], 200);
     169    }
     170
     171    // Regeneration: delete old key if exists
     172    if ($force_regenerate && $existing) {
     173        // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
     174        $wpdb->delete(
     175            $wpdb->prefix . 'woocommerce_api_keys',
     176            ['key_id' => (int) $existing->key_id],
     177            ['%d']
     178        );
     179        // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
     180    }
    139181
    140182    $consumer_key    = 'ck_' . wc_rand_hash();
    141183    $consumer_secret = 'cs_' . wc_rand_hash();
    142184
     185    // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
    143186    $wpdb->insert(
    144187        $wpdb->prefix . 'woocommerce_api_keys',
     
    152195        ]
    153196    );
     197    // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
     198
     199    $key_id = $wpdb->insert_id;
     200
     201    update_user_meta($user_id, 'bigship_consumer_key', $consumer_key);
     202    update_user_meta($user_id, 'bigship_consumer_secret', $consumer_secret);
     203    update_user_meta($user_id, 'bigship_key_id', $key_id);
     204
     205    wp_cache_delete($cache_key);
    154206
    155207    return new WP_REST_Response([
    156208        'status'          => 'success',
     209        'message'         => $force_regenerate ? 'Keys regenerated successfully.' : 'Keys created successfully.',
    157210        'consumer_key'    => $consumer_key,
    158211        'consumer_secret' => $consumer_secret,
     212        'key_id'          => $key_id,
    159213        'user_id'         => $user_id,
    160214    ], 200);
     
    169223    $user_id = intval($request->get_param('user_id'));
    170224
     225    // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
    171226    $wpdb->delete(
    172227        $wpdb->prefix . 'woocommerce_api_keys',
     
    174229        ['%d']
    175230    );
    176 
     231    // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
     232
     233    wp_cache_delete('bigship_wc_keys_' . $user_id);
     234    delete_user_meta($user_id, 'bigship_consumer_key');
     235    delete_user_meta($user_id, 'bigship_consumer_secret');
     236    delete_user_meta($user_id, 'bigship_key_id');
    177237    delete_user_meta($user_id, 'bigshiprestapi_api_token');
    178238
     
    184244}
    185245
     246// Flush rewrites
    186247register_activation_hook(__FILE__, 'flush_rewrite_rules');
    187248register_deactivation_hook(__FILE__, 'flush_rewrite_rules');
  • bigship-rest-api/trunk/readme.txt

    r3423611 r3423652  
    55Tested up to: 6.9
    66Requires PHP: 7.4
    7 Stable tag: 1.0.4
     7Stable tag: 1.0.5
    88License: GPLv2 or later
    99License URI: https://www.gnu.org/licenses/gpl-2.0.html
     
    2828== Changelog ==
    2929
     30= 1.0.5 =
     31* Resolved PHPCS warnings for intentional direct database operations.
     32* Restored original WooCommerce key caching and regeneration logic.
     33* No functional or behavioral changes to existing API endpoints.
     34
    3035= 1.0.4 =
    3136* Improved permission callbacks for REST API endpoints.
Note: See TracChangeset for help on using the changeset viewer.