golden hour
/home/godaofbq/alienhyperbaric.com/wp-content/plugins/woocommerce/src/Admin/API
⬆️ Go Up
Upload
File/Folder
Size
Actions
.htaccess
420 B
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.43 KB
Del
OK
LaunchYourStore.php
5.1 KB
Del
OK
Leaderboards.php
17.7 KB
Del
OK
Marketing.php
4.08 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
NavigationFavorites.php
4.83 KB
Del
OK
NoteActions.php
2.39 KB
Del
OK
Notes.php
25.79 KB
Del
OK
Notice.php
2.07 KB
Del
OK
OnboardingFreeExtensions.php
3.75 KB
Del
OK
OnboardingPlugins.php
11.27 KB
Del
OK
OnboardingProductTypes.php
1.8 KB
Del
OK
OnboardingProducts.php
1.94 KB
Del
OK
OnboardingProfile.php
16.31 KB
Del
OK
OnboardingTasks.php
31.97 KB
Del
OK
OnboardingThemes.php
18.21 KB
Del
OK
Options.php
9.5 KB
Del
OK
Orders.php
10.17 KB
Del
OK
PaymentGatewaySuggestions.php
5.44 KB
Del
OK
Plugins.php
20.25 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
5.97 KB
Del
OK
Products.php
9.7 KB
Del
OK
ProductsLowInStock.php
13.93 KB
Del
OK
Reports
-
Del
OK
SettingOptions.php
878 B
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 depedent plugins. */ namespace Automattic\WooCommerce\Admin\API; use Automattic\WooCommerce\Internal\Admin\Onboarding\OnboardingProfile; use Automattic\WooCommerce\Admin\Features\OnboardingTasks\Tasks\WooCommercePayments; use Automattic\WooCommerce\Admin\PaymentMethodSuggestionsDataSourcePoller; use Automattic\WooCommerce\Admin\PluginsHelper; use Automattic\WooCommerce\Internal\Admin\Notes\InstallJPAndWCSPlugins; 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'] ); 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 ); return array( 'data' => array( 'installed' => $data['installed'], 'results' => $data['results'], 'install_time' => $data['time'], ), '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 ); return( array( 'data' => array( 'activated' => $data['activated'], 'active' => $data['active'], ), '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 ); } $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 by WCPay to verify business details. * * @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 ); } // Redirect to the WooPayments overview page if the merchant started onboarding (aka WooPayments is already connected). // Redirect to the WooPayments connect page if they haven't started onboarding. $path = WooCommercePayments::is_connected() ? '/payments/overview' : '/payments/connect'; // Point to the WooPayments Connect page rather than straight to the onboarding flow. return( array( 'connectUrl' => add_query_arg( 'from', 'WCADMIN_PAYMENT_TASK', admin_url( 'admin.php?page=wc-admin&path=' . $path ) ), ) ); } /** * 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