ProShell v2.0
Dashboard
Server Info
Server: 158.106.128.192
PHP: 8.2.33
home
planet5
public_html
bansibaba.com
wp-includes
2026-09-15 15:33:27
Editing: client.php
Cancel
Save Changes
<?php /** * Yoast extension of the Model class. * * @package Yoast\WP\SEO\Oauth */ namespace Yoast\WP\SEO\Oauth; use WPSEO_Options; use WPSEO_Utils; use YoastSEO_Vendor\League\OAuth2\Client\Provider\GenericProvider; use YoastSEO_Vendor\League\OAuth2\Client\Token\AccessToken; /** * Represents the oAuth client. */ class Client { /** * Contains the configuration. * * @var array */ private $config; /** * Contains the set access tokens. * * @var \YoastSEO_Vendor\League\OAuth2\Client\Token\AccessTokenInterface[] */ private $access_tokens; /** * Instance of this class. * * @var static */ private static $instance; /** * Client constructor. * * @codeCoverageIgnore */ public function __construct() { $oauth = $this->get_option(); $this->config = $oauth['config']; $this->access_tokens = $this->format_access_tokens( $oauth['access_tokens'] ); } /** * Retrieves the instance of this class. * * @codeCoverageIgnore * * @return \Yoast\WP\SEO\Oauth\Client Instance of this class. */ public static function get_instance() { if ( static::$instance === null ) { static::$instance = new static(); } return static::$instance; } /** * Saves the configuration. * * @param array $config The configuration to use. * * @return void */ public function save_configuration( array $config ) { $allowed_config_keys = [ 'clientId', 'secret' ]; foreach ( $allowed_config_keys as $allowed_config_key ) { if ( ! \array_key_exists( $allowed_config_key, $config ) ) { continue; } $this->config[ $allowed_config_key ] = $config[ $allowed_config_key ]; } $this->update_option(); } /** * Retrieves the value of the config. * * @return array The config. */ public function get_configuration() { return $this->config; } /** * Checks if the configuration is set correctly. * * @return bool True when clientId and secret are set. */ public function has_configuration() { if ( $this->config['clientId'] === null ) { return false; } if ( $this->config['secret'] === null ) { return false; } return true; } /** * Clears the current configuration. * * @return void */ public function clear_configuration() { $this->config = $this->get_default_option()['config']; $this->update_option(); } /** * Saves the access token for the given user. * * @param int $user_id User ID to receive token for. * @param \YoastSEO_Vendor\League\OAuth2\Client\Token\AccessTokenInterface $access_token The access token to save. * * @return void */ public function save_access_token( $user_id, $access_token ) { $this->access_tokens[ $user_id ] = $access_token; $this->update_option(); } /** * Retrieves an access token. * * @param null|int $user_id User ID to receive token for. * * @return bool|\YoastSEO_Vendor\League\OAuth2\Client\Token\AccessTokenInterface False if not found. Token when found. */ public function get_access_token( $user_id = null ) { if ( $user_id === null ) { return \reset( $this->access_tokens ); } if ( ! isset( $this->access_tokens[ $user_id ] ) ) { return false; } return $this->access_tokens[ $user_id ]; } /** * Removes an access token from the list of access token. * * @param int $user_id The user ID to remove the access token for. * * @return void */ public function remove_access_token( $user_id ) { if ( ! isset( $this->access_tokens[ $user_id ] ) ) { return; } unset( $this->access_tokens[ $user_id ] ); $this->update_option(); } /** * Returns an instance of the oAuth provider. * * @return \YoastSEO_Vendor\League\OAuth2\Client\Provider\GenericProvider The provider. */ public function get_provider() { return new GenericProvider( [ 'clientId' => $this->config['clientId'], 'clientSecret' => $this->config['secret'], 'redirectUri' => ( WPSEO_Utils::is_plugin_network_active() ) ? \home_url( 'yoast/oauth/callback' ) : \network_home_url( 'yoast/oauth/callback' ), 'urlAuthorize' => 'https://yoast.com/login/oauth/authorize', 'urlAccessToken' => 'https://yoast.com/login/oauth/token', 'urlResourceOwnerDetails' => 'https://my.yoast.com/api/sites/current', ] ); } /** * Formats the access tokens. * * @param array $access_tokens The access tokens to format. * * @return \YoastSEO_Vendor\League\OAuth2\Client\Token\AccessTokenInterface[] The formatted access tokens. */ protected function format_access_tokens( $access_tokens ) { if ( ! \is_array( $access_tokens ) || $access_tokens === [] ) { return []; } $formatted_access_tokens = []; foreach ( $access_tokens as $user_id => $access_token ) { $formatted_access_tokens[ $user_id ] = new AccessToken( $access_token ); } return $formatted_access_tokens; } /** * Retrieves the myyoast oauth value from the options. * * @codeCoverageIgnore * * @return array */ protected function get_option() { $option_value = WPSEO_Options::get( 'myyoast_oauth', false ); if ( $option_value ) { return \wp_parse_args( \json_decode( $option_value, true ), $this->get_default_option() ); } return $this->get_default_option(); } /** * Exports the settings to the options. * * @codeCoverageIgnore * * @return void */ protected function update_option() { WPSEO_Options::set( 'myyoast_oauth', WPSEO_Utils::format_json_encode( [ 'config' => $this->config, 'access_tokens' => $this->access_tokens, ] ) ); } /** * Retrieves the default option value. * * @codeCoverageIgnore * * @return array The default option value. */ protected function get_default_option() { return [ 'config' => [ 'clientId' => null, 'secret' => null, ], 'access_tokens' => [], ]; } }
Upload Files
Cancel
Upload
Create New
Cancel
Create
Change Permissions
Cancel
Save
Change Date
Cancel
Save
Rename Item
Cancel
Save
Confirm Delete
Are you sure you want to delete the selected items?
Cancel
Delete