Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 37 additions & 14 deletions includes/admin/services/class-rop-gmb-service.php
Original file line number Diff line number Diff line change
Expand Up @@ -210,13 +210,11 @@ public function add_account_with_app( $accounts_data ) {
*
* @since 8.5.9
* @access private
* @param array<string, mixed> $arguments Arguments needed by the method.
*
* @return array
*/
private function gmb_refresh_access_token() {

$rop_data = get_option( 'rop_data' );
$rop_services_data = $rop_data['services'];
private function gmb_refresh_access_token( $arguments ) {

$id = '';
$access_token = '';
Expand All @@ -225,26 +223,51 @@ private function gmb_refresh_access_token() {
$gmb_service_id = '';
$refresh_token = '';

$credentials = isset( $arguments['credentials'] ) ? $arguments['credentials'] : array();

if ( ! empty( $credentials ) ) {
$created = isset( $credentials['created'] ) ? $credentials['created'] : '';
$expires_in = isset( $credentials['expires_in'] ) ? $credentials['expires_in'] : '';
$access_token = isset( $credentials['access_token'] ) ? $credentials['access_token'] : '';

// Check if access token will expire in next 30 seconds.
$expired = ( $created + ( $expires_in - 30 ) ) < time();

// If it's not expired then return current access token in DB
if ( ! $expired ) {
// Add an expires_in value to prevent Google Client PHP notice for undefined expires_in index
$access_token = array( 'access_token' => $access_token, 'expires_in' => $expires_in );
return $access_token;
}
}

$rop_data = get_option( 'rop_data' );
$rop_services_data = isset( $rop_data['services'] ) ? $rop_data['services'] : array();
$account_id = isset( $arguments['id'] ) ? $arguments['id'] : '';

foreach ( $rop_services_data as $service => $service_data ) {
if ( $service_data['service'] === 'gmb' ) {
$id = $service_data['id'];
$access_token = $service_data['credentials']['access_token'];
$created = $service_data['credentials']['created'];
$expires_in = $service_data['credentials']['expires_in'];
$gmb_service_id = $service;
$refresh_token = $service_data['credentials']['refresh_token'];
break;
foreach ( $service_data['available_accounts'] as $account ) {
if ( $account_id === $account['id'] ) {
$id = $service_data['id'];
$access_token = $service_data['credentials']['access_token'];
$created = $service_data['credentials']['created'];
$expires_in = $service_data['credentials']['expires_in'];
$gmb_service_id = $service;
$refresh_token = $service_data['credentials']['refresh_token'];
break;
}
}
}
}

// $created = '1593273390';
// Check if access token will expire in next 30 seconds.
$expired = ( $created + ( $expires_in - 30 ) ) < time();

// If it's not expired then return current access token in DB
if ( ! $expired ) {
// Add an expires_in value to prevent Google Client PHP notice for undefined expires_in index
$access_token = array('access_token' => $access_token, 'expires_in' => $expires_in);
$access_token = array( 'access_token' => $access_token, 'expires_in' => $expires_in );
return $access_token;
}

Expand Down Expand Up @@ -488,7 +511,7 @@ public function share( $post_details, $args = array() ) {
}
}

$access_token = $this->gmb_refresh_access_token();
$access_token = $this->gmb_refresh_access_token( $args );
$client->setAccessToken( $access_token );
$client->setApiFormatV2( true );

Expand Down
Loading