golden hour
/home/godaofbq/oxygenhyperbaric.com/wp-content/plugins/woocommerce/src/Admin/API
⬆️ Go Up
Upload
File/Folder
Size
Actions
AI
-
Del
OK
Coupons.php
2.15 KB
Del
OK
CustomAttributeTraits.php
3.4 KB
Del
OK
Customers.php
2.11 KB
Del
OK
Data.php
939 B
Del
OK
DataCountries.php
1.12 KB
Del
OK
DataDownloadIPs.php
4.15 KB
Del
OK
Experiments.php
1.82 KB
Del
OK
Features.php
1.7 KB
Del
OK
Init.php
8.97 KB
Del
OK
LaunchYourStore.php
5.15 KB
Del
OK
Leaderboards.php
18.22 KB
Del
OK
Marketing.php
4.84 KB
Del
OK
MarketingCampaignTypes.php
6.02 KB
Del
OK
MarketingCampaigns.php
9.64 KB
Del
OK
MarketingChannels.php
5.74 KB
Del
OK
MarketingOverview.php
3.36 KB
Del
OK
MarketingRecommendations.php
5.94 KB
Del
OK
MobileAppMagicLink.php
2.1 KB
Del
OK
NoteActions.php
2.39 KB
Del
OK
Notes.php
25.79 KB
Del
OK
Notice.php
2.38 KB
Del
OK
OnboardingFreeExtensions.php
2.58 KB
Del
OK
OnboardingPlugins.php
12.84 KB
Del
OK
OnboardingProductTypes.php
1.8 KB
Del
OK
OnboardingProducts.php
1.94 KB
Del
OK
OnboardingProfile.php
18.38 KB
Del
OK
OnboardingTasks.php
32.02 KB
Del
OK
OnboardingThemes.php
5.49 KB
Del
OK
Options.php
10 KB
Del
OK
Orders.php
10.13 KB
Del
OK
PaymentGatewaySuggestions.php
5.86 KB
Del
OK
Plugins.php
21.22 KB
Del
OK
ProductAttributeTerms.php
4.36 KB
Del
OK
ProductAttributes.php
4.46 KB
Del
OK
ProductCategories.php
458 B
Del
OK
ProductForm.php
3.06 KB
Del
OK
ProductReviews.php
1.3 KB
Del
OK
ProductVariations.php
6.03 KB
Del
OK
Products.php
9.73 KB
Del
OK
ProductsLowInStock.php
17.56 KB
Del
OK
Reports
-
Del
OK
SettingOptions.php
878 B
Del
OK
Settings.php
4.2 KB
Del
OK
ShippingPartnerSuggestions.php
5.74 KB
Del
OK
Taxes.php
4.9 KB
Del
OK
Templates
-
Del
OK
Themes.php
6.12 KB
Del
OK
Edit: Plugins.php
<?php /** * REST API Plugins Controller * * Handles requests to install and activate dependent plugins. */ namespace Automattic\WooCommerce\Admin\API; use Automattic\WooCommerce\Internal\Admin\Onboarding\OnboardingProfile; use Automattic\WooCommerce\Admin\PluginsHelper; defined( 'ABSPATH' ) || exit; /** * Plugins Controller. * * @internal * @extends \WC_REST_Data_Controller */ class Plugins extends \WC_REST_Data_Controller { /** * Endpoint namespace. * * @var string */ protected $namespace = 'wc-admin'; /** * Route base. * * @var string */ protected $rest_base = 'plugins'; /** * Register routes. */ public function register_routes() { register_rest_route( $this->namespace, '/' . $this->rest_base . '/install', array( array( 'methods' => \WP_REST_Server::EDITABLE, 'callback' => array( $this, 'install_plugins' ), 'permission_callback' => array( $this, 'update_item_permissions_check' ), ), 'schema' => array( $this, 'get_item_schema' ), ) ); register_rest_route( $this->namespace, '/' . $this->rest_base . '/install/status', array( array( 'methods' => \WP_REST_Server::READABLE, 'callback' => array( $this, 'get_installation_status' ), 'permission_callback' => array( $this, 'update_item_permissions_check' ), ), 'schema' => array( $this, 'get_item_schema' ), ) ); register_rest_route( $this->namespace, '/' . $this->rest_base . '/install/status/(?P<job_id>[a-z0-9_\-]+)', array( array( 'methods' => \WP_REST_Server::READABLE, 'callback' => array( $this, 'get_job_installation_status' ), 'permission_callback' => array( $this, 'update_item_permissions_check' ), ), 'schema' => array( $this, 'get_item_schema' ), ) ); register_rest_route( $this->namespace, '/' . $this->rest_base . '/active', array( array( 'methods' => \WP_REST_Server::READABLE, 'callback' => array( $this, 'active_plugins' ), 'permission_callback' => array( $this, 'get_item_permissions_check' ), ), 'schema' => array( $this, 'get_item_schema' ), ) ); register_rest_route( $this->namespace, '/' . $this->rest_base . '/installed', array( array( 'methods' => \WP_REST_Server::READABLE, 'callback' => array( $this, 'installed_plugins' ), 'permission_callback' => array( $this, 'get_item_permissions_check' ), ), 'schema' => array( $this, 'get_item_schema' ), ) ); register_rest_route( $this->namespace, '/' . $this->rest_base . '/activate', array( array( 'methods' => \WP_REST_Server::EDITABLE, 'callback' => array( $this, 'activate_plugins' ), 'permission_callback' => array( $this, 'update_item_permissions_check' ), ), 'schema' => array( $this, 'get_item_schema' ), ) ); register_rest_route( $this->namespace, '/' . $this->rest_base . '/activate/status', array( array( 'methods' => \WP_REST_Server::READABLE, 'callback' => array( $this, 'get_activation_status' ), 'permission_callback' => array( $this, 'update_item_permissions_check' ), ), 'schema' => array( $this, 'get_item_schema' ), ) ); register_rest_route( $this->namespace, '/' . $this->rest_base . '/activate/status/(?P<job_id>[a-z0-9_\-]+)', array( array( 'methods' => \WP_REST_Server::READABLE, 'callback' => array( $this, 'get_job_activation_status' ), 'permission_callback' => array( $this, 'update_item_permissions_check' ), ), 'schema' => array( $this, 'get_item_schema' ), ) ); register_rest_route( $this->namespace, '/' . $this->rest_base . '/connect-jetpack', array( array( 'methods' => \WP_REST_Server::READABLE, 'callback' => array( $this, 'connect_jetpack' ), 'permission_callback' => array( $this, 'update_item_permissions_check' ), ), 'schema' => array( $this, 'get_connect_schema' ), ) ); register_rest_route( $this->namespace, '/' . $this->rest_base . '/request-wccom-connect', array( array( 'methods' => 'POST', 'callback' => array( $this, 'request_wccom_connect' ), 'permission_callback' => array( $this, 'update_item_permissions_check' ), ), 'schema' => array( $this, 'get_connect_schema' ), ) ); register_rest_route( $this->namespace, '/' . $this->rest_base . '/finish-wccom-connect', array( array( 'methods' => 'POST', 'callback' => array( $this, 'finish_wccom_connect' ), 'permission_callback' => array( $this, 'update_item_permissions_check' ), ), 'schema' => array( $this, 'get_connect_schema' ), ) ); register_rest_route( $this->namespace, '/' . $this->rest_base . '/connect-wcpay', array( array( 'methods' => \WP_REST_Server::EDITABLE, 'callback' => array( $this, 'connect_wcpay' ), 'permission_callback' => array( $this, 'update_item_permissions_check' ), ), 'schema' => array( $this, 'get_connect_schema' ), ) ); register_rest_route( $this->namespace, '/' . $this->rest_base . '/connect-square', array( array( 'methods' => \WP_REST_Server::EDITABLE, 'callback' => array( $this, 'connect_square' ), 'permission_callback' => array( $this, 'update_item_permissions_check' ), ), 'schema' => array( $this, 'get_connect_schema' ), ) ); } /** * Check if a given request has access to manage plugins. * * @param \WP_REST_Request $request Full details about the request. * @return \WP_Error|boolean */ public function update_item_permissions_check( $request ) { if ( ! current_user_can( 'install_plugins' ) ) { return new \WP_Error( 'woocommerce_rest_cannot_update', __( 'Sorry, you cannot manage plugins.', 'woocommerce' ), array( 'status' => rest_authorization_required_code() ) ); } return true; } /** * Install the requested plugin. * * @param \WP_REST_Request $request Full details about the request. * @return \WP_Error|array Plugin Status */ public function install_plugin( $request ) { wc_deprecated_function( 'install_plugin', '4.3', '\Automattic\WooCommerce\Admin\API\Plugins()->install_plugins' ); // This method expects a `plugin` argument to be sent, install plugins requires plugins. $request['plugins'] = $request['plugin']; return self::install_plugins( $request ); } /** * Installs the requested plugins. * * @param \WP_REST_Request $request Full details about the request. * @return \WP_Error|array Plugin Status */ public function install_plugins( $request ) { $plugins = explode( ',', $request['plugins'] ); $source = ! empty( $request['source'] ) ? $request['source'] : null; if ( empty( $request['plugins'] ) || ! is_array( $plugins ) ) { return new \WP_Error( 'woocommerce_rest_invalid_plugins', __( 'Plugins must be a non-empty array.', 'woocommerce' ), 404 ); } if ( isset( $request['async'] ) && $request['async'] ) { $job_id = PluginsHelper::schedule_install_plugins( $plugins ); return array( 'data' => array( 'job_id' => $job_id, 'plugins' => $plugins, ), 'message' => __( 'Plugin installation has been scheduled.', 'woocommerce' ), ); } $data = PluginsHelper::install_plugins( $plugins, null, $source ); // Gather some plugin details for each installed plugin. $plugin_details = array(); if ( is_array( $data['installed'] ) ) { foreach ( $data['installed'] as $plugin_slug ) { $plugin_data = PluginsHelper::get_plugin_data( $plugin_slug ); if ( empty( $plugin_data ) ) { continue; } $plugin_details[ $plugin_slug ] = array( 'name' => $plugin_data['Name'], 'description' => $plugin_data['Description'], 'uri' => $plugin_data['PluginURI'], 'version' => $plugin_data['Version'], ); } } return array( 'data' => array( 'installed' => $data['installed'], 'results' => $data['results'], 'install_time' => $data['time'], 'plugin_details' => $plugin_details, ), 'errors' => $data['errors'], 'success' => count( $data['errors']->errors ) === 0, 'message' => count( $data['errors']->errors ) === 0 ? __( 'Plugins were successfully installed.', 'woocommerce' ) : __( 'There was a problem installing some of the requested plugins.', 'woocommerce' ), ); } /** * Returns a list of recently scheduled installation jobs. * * @param \WP_REST_Request $request Full details about the request. * @return array Jobs. */ public function get_installation_status( $request ) { return PluginsHelper::get_installation_status(); } /** * Returns a list of recently scheduled installation jobs. * * @param \WP_REST_Request $request Full details about the request. * @return array Job. */ public function get_job_installation_status( $request ) { $job_id = $request->get_param( 'job_id' ); $jobs = PluginsHelper::get_installation_status( $job_id ); return reset( $jobs ); } /** * Returns a list of active plugins in API format. * * @return array Active plugins */ public static function active_plugins() { return( array( 'plugins' => array_values( PluginsHelper::get_active_plugin_slugs() ), ) ); } /** * Returns a list of active plugins. * * @internal * @return array Active plugins */ public static function get_active_plugins() { $data = self::active_plugins(); return $data['plugins']; } /** * Returns a list of installed plugins. * * @return array Installed plugins */ public function installed_plugins() { return( array( 'plugins' => PluginsHelper::get_installed_plugin_slugs(), ) ); } /** * Activate the requested plugin. * * @param \WP_REST_Request $request Full details about the request. * @return \WP_Error|array Plugin Status */ public function activate_plugins( $request ) { $plugins = explode( ',', $request['plugins'] ); if ( empty( $request['plugins'] ) || ! is_array( $plugins ) ) { return new \WP_Error( 'woocommerce_rest_invalid_plugins', __( 'Plugins must be a non-empty array.', 'woocommerce' ), 404 ); } if ( isset( $request['async'] ) && $request['async'] ) { $job_id = PluginsHelper::schedule_activate_plugins( $plugins ); return array( 'data' => array( 'job_id' => $job_id, 'plugins' => $plugins, ), 'message' => __( 'Plugin activation has been scheduled.', 'woocommerce' ), ); } $data = PluginsHelper::activate_plugins( $plugins ); // Gather some plugin details for each activated plugin. $plugin_details = array(); if ( is_array( $data['activated'] ) ) { foreach ( $data['activated'] as $plugin_slug ) { $plugin_data = PluginsHelper::get_plugin_data( $plugin_slug ); if ( empty( $plugin_data ) ) { continue; } $plugin_details[ $plugin_slug ] = array( 'name' => $plugin_data['Name'], 'description' => $plugin_data['Description'], 'uri' => $plugin_data['PluginURI'], 'version' => $plugin_data['Version'], ); } } return ( array( 'data' => array( 'activated' => $data['activated'], 'active' => $data['active'], 'plugin_details' => $plugin_details, ), 'errors' => $data['errors'], 'success' => count( $data['errors']->errors ) === 0, 'message' => count( $data['errors']->errors ) === 0 ? __( 'Plugins were successfully activated.', 'woocommerce' ) : __( 'There was a problem activating some of the requested plugins.', 'woocommerce' ), ) ); } /** * Returns a list of recently scheduled activation jobs. * * @param \WP_REST_Request $request Full details about the request. * @return array Job. */ public function get_activation_status( $request ) { return PluginsHelper::get_activation_status(); } /** * Returns a list of recently scheduled activation jobs. * * @param \WP_REST_Request $request Full details about the request. * @return array Jobs. */ public function get_job_activation_status( $request ) { $job_id = $request->get_param( 'job_id' ); $jobs = PluginsHelper::get_activation_status( $job_id ); return reset( $jobs ); } /** * Generates a Jetpack Connect URL. * * @param \WP_REST_Request $request Full details about the request. * @return \WP_Error|array Connection URL for Jetpack */ public function connect_jetpack( $request ) { if ( ! class_exists( '\Jetpack' ) ) { return new \WP_Error( 'woocommerce_rest_jetpack_not_active', __( 'Jetpack is not installed or active.', 'woocommerce' ), 404 ); } // phpcs:disable WooCommerce.Commenting.CommentHooks.MissingHookComment $redirect_url = apply_filters( 'woocommerce_admin_onboarding_jetpack_connect_redirect_url', esc_url_raw( $request['redirect_url'] ) ); $connect_url = \Jetpack::init()->build_connect_url( true, $redirect_url, 'woocommerce-onboarding' ); $calypso_env = defined( 'WOOCOMMERCE_CALYPSO_ENVIRONMENT' ) && in_array( WOOCOMMERCE_CALYPSO_ENVIRONMENT, array( 'development', 'wpcalypso', 'horizon', 'stage' ), true ) ? WOOCOMMERCE_CALYPSO_ENVIRONMENT : 'production'; $connect_url = add_query_arg( array( 'calypso_env' => $calypso_env ), $connect_url ); return( array( 'slug' => 'jetpack', 'name' => __( 'Jetpack', 'woocommerce' ), 'connectAction' => $connect_url, ) ); } /** * Kicks off the WCCOM Connect process. * * @return \WP_Error|array Connection URL for WooCommerce.com */ public function request_wccom_connect() { include_once WC_ABSPATH . 'includes/admin/helper/class-wc-helper-api.php'; if ( ! class_exists( 'WC_Helper_API' ) ) { return new \WP_Error( 'woocommerce_rest_helper_not_active', __( 'There was an error loading the WooCommerce.com Helper API.', 'woocommerce' ), 404 ); } $redirect_uri = wc_admin_url( '&task=connect&wccom-connected=1' ); $request = \WC_Helper_API::post( 'oauth/request_token', array( 'body' => array( 'home_url' => home_url(), 'redirect_uri' => $redirect_uri, ), ) ); $code = wp_remote_retrieve_response_code( $request ); if ( 200 !== $code ) { return new \WP_Error( 'woocommerce_rest_helper_connect', __( 'There was an error connecting to WooCommerce.com. Please try again.', 'woocommerce' ), 500 ); } $secret = json_decode( wp_remote_retrieve_body( $request ) ); if ( empty( $secret ) ) { return new \WP_Error( 'woocommerce_rest_helper_connect', __( 'There was an error connecting to WooCommerce.com. Please try again.', 'woocommerce' ), 500 ); } do_action( 'woocommerce_helper_connect_start' ); $connect_url = add_query_arg( array( 'home_url' => rawurlencode( home_url() ), 'redirect_uri' => rawurlencode( $redirect_uri ), 'secret' => rawurlencode( $secret ), 'wccom-from' => 'onboarding', ), \WC_Helper_API::url( 'oauth/authorize' ) ); if ( defined( 'WOOCOMMERCE_CALYPSO_ENVIRONMENT' ) && in_array( WOOCOMMERCE_CALYPSO_ENVIRONMENT, array( 'development', 'wpcalypso', 'horizon', 'stage' ), true ) ) { $connect_url = add_query_arg( array( 'calypso_env' => WOOCOMMERCE_CALYPSO_ENVIRONMENT, ), $connect_url ); } return( array( 'connectAction' => $connect_url, ) ); } /** * Finishes connecting to WooCommerce.com. * * @param object $rest_request Request details. * @return \WP_Error|array Contains success status. */ public function finish_wccom_connect( $rest_request ) { include_once WC_ABSPATH . 'includes/admin/helper/class-wc-helper.php'; include_once WC_ABSPATH . 'includes/admin/helper/class-wc-helper-api.php'; include_once WC_ABSPATH . 'includes/admin/helper/class-wc-helper-updater.php'; include_once WC_ABSPATH . 'includes/admin/helper/class-wc-helper-options.php'; if ( ! class_exists( 'WC_Helper_API' ) ) { return new \WP_Error( 'woocommerce_rest_helper_not_active', __( 'There was an error loading the WooCommerce.com Helper API.', 'woocommerce' ), 404 ); } // Obtain an access token. $request = \WC_Helper_API::post( 'oauth/access_token', array( 'body' => array( 'request_token' => wp_unslash( $rest_request['request_token'] ), // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized 'home_url' => home_url(), ), ) ); $code = wp_remote_retrieve_response_code( $request ); if ( 200 !== $code ) { return new \WP_Error( 'woocommerce_rest_helper_connect', __( 'There was an error connecting to WooCommerce.com. Please try again.', 'woocommerce' ), 500 ); } $access_token = json_decode( wp_remote_retrieve_body( $request ), true ); if ( ! $access_token ) { return new \WP_Error( 'woocommerce_rest_helper_connect', __( 'There was an error connecting to WooCommerce.com. Please try again.', 'woocommerce' ), 500 ); } \WC_Helper_Options::update( 'auth', array( 'access_token' => $access_token['access_token'], 'access_token_secret' => $access_token['access_token_secret'], 'site_id' => $access_token['site_id'], 'user_id' => get_current_user_id(), 'updated' => time(), ) ); if ( ! \WC_Helper::_flush_authentication_cache() ) { \WC_Helper_Options::update( 'auth', array() ); return new \WP_Error( 'woocommerce_rest_helper_connect', __( 'There was an error connecting to WooCommerce.com. Please try again.', 'woocommerce' ), 500 ); } delete_transient( '_woocommerce_helper_subscriptions' ); \WC_Helper_Updater::flush_updates_cache(); do_action( 'woocommerce_helper_connected' ); return array( 'success' => true, ); } /** * Returns a URL that can be used to connect to Square. * * @return \WP_Error|array Connect URL. */ public function connect_square() { if ( ! class_exists( '\WooCommerce\Square\Handlers\Connection' ) ) { return new \WP_Error( 'woocommerce_rest_helper_connect', __( 'There was an error connecting to Square.', 'woocommerce' ), 500 ); } $has_cbd_industry = false; if ( 'US' === WC()->countries->get_base_country() ) { $profile = get_option( OnboardingProfile::DATA_OPTION, array() ); if ( ! empty( $profile['industry'] ) ) { $has_cbd_industry = in_array( 'cbd-other-hemp-derived-products', array_column( $profile['industry'], 'slug' ), true ); } } if ( $has_cbd_industry ) { $url = 'https://squareup.com/t/f_partnerships/d_referrals/p_woocommerce/c_general/o_none/l_us/dt_alldevice/pr_payments/?route=/solutions/cbd'; } else { $url = \WooCommerce\Square\Handlers\Connection::CONNECT_URL_PRODUCTION; } $redirect_url = wp_nonce_url( wc_admin_url( '&task=payments&method=square&square-connect-finish=1' ), 'wc_square_connected' ); $args = array( 'redirect' => rawurlencode( rawurlencode( $redirect_url ) ), 'scopes' => implode( ',', array( 'MERCHANT_PROFILE_READ', 'PAYMENTS_READ', 'PAYMENTS_WRITE', 'ORDERS_READ', 'ORDERS_WRITE', 'CUSTOMERS_READ', 'CUSTOMERS_WRITE', 'SETTLEMENTS_READ', 'ITEMS_READ', 'ITEMS_WRITE', 'INVENTORY_READ', 'INVENTORY_WRITE', ) ), ); $connect_url = add_query_arg( $args, $url ); return( array( 'connectUrl' => $connect_url, ) ); } /** * Returns a URL that can be used to point the merchant to the WooPayments onboarding flow. * * @return \WP_Error|array Connect URL. */ public function connect_wcpay() { if ( ! class_exists( 'WC_Payments' ) ) { return new \WP_Error( 'woocommerce_rest_helper_connect', __( 'There was an error communicating with the WooPayments plugin.', 'woocommerce' ), 500 ); } // Use a WooPayments connect link to let the WooPayments plugin handle the connection flow. return array( 'connectUrl' => add_query_arg( array( 'wcpay-connect' => '1', 'from' => 'WCADMIN_PAYMENT_TASK', '_wpnonce' => wp_create_nonce( 'wcpay-connect' ), ), admin_url( 'admin.php' ) ), ); } /** * Get the schema, conforming to JSON Schema. * * @return array */ public function get_item_schema() { $schema = array( '$schema' => 'http://json-schema.org/draft-04/schema#', 'title' => 'plugins', 'type' => 'object', 'properties' => array( 'slug' => array( 'description' => __( 'Plugin slug.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), 'readonly' => true, ), 'name' => array( 'description' => __( 'Plugin name.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), 'readonly' => true, ), 'status' => array( 'description' => __( 'Plugin status.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), 'readonly' => true, ), ), ); return $this->add_additional_fields_schema( $schema ); } /** * Get the schema, conforming to JSON Schema. * * @return array */ public function get_connect_schema() { $schema = $this->get_item_schema(); unset( $schema['properties']['status'] ); $schema['properties']['connectAction'] = array( 'description' => __( 'Action that should be completed to connect Jetpack.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), 'readonly' => true, ); return $schema; } }
Save