@@ -210,13 +210,11 @@ public function add_account_with_app( $accounts_data ) {
210210 *
211211 * @since 8.5.9
212212 * @access private
213+ * @param array<string, mixed> $arguments Arguments needed by the method.
213214 *
214215 * @return array
215216 */
216- private function gmb_refresh_access_token () {
217-
218- $ rop_data = get_option ( 'rop_data ' );
219- $ rop_services_data = $ rop_data ['services ' ];
217+ private function gmb_refresh_access_token ( $ arguments ) {
220218
221219 $ id = '' ;
222220 $ access_token = '' ;
@@ -225,26 +223,51 @@ private function gmb_refresh_access_token() {
225223 $ gmb_service_id = '' ;
226224 $ refresh_token = '' ;
227225
226+ $ credentials = isset ( $ arguments ['credentials ' ] ) ? $ arguments ['credentials ' ] : array ();
227+
228+ if ( ! empty ( $ credentials ) ) {
229+ $ created = isset ( $ credentials ['created ' ] ) ? $ credentials ['created ' ] : '' ;
230+ $ expires_in = isset ( $ credentials ['expires_in ' ] ) ? $ credentials ['expires_in ' ] : '' ;
231+ $ access_token = isset ( $ credentials ['access_token ' ] ) ? $ credentials ['access_token ' ] : '' ;
232+
233+ // Check if access token will expire in next 30 seconds.
234+ $ expired = ( $ created + ( $ expires_in - 30 ) ) < time ();
235+
236+ // If it's not expired then return current access token in DB
237+ if ( ! $ expired ) {
238+ // Add an expires_in value to prevent Google Client PHP notice for undefined expires_in index
239+ $ access_token = array ( 'access_token ' => $ access_token , 'expires_in ' => $ expires_in );
240+ return $ access_token ;
241+ }
242+ }
243+
244+ $ rop_data = get_option ( 'rop_data ' );
245+ $ rop_services_data = isset ( $ rop_data ['services ' ] ) ? $ rop_data ['services ' ] : array ();
246+ $ account_id = isset ( $ arguments ['id ' ] ) ? $ arguments ['id ' ] : '' ;
247+
228248 foreach ( $ rop_services_data as $ service => $ service_data ) {
229249 if ( $ service_data ['service ' ] === 'gmb ' ) {
230- $ id = $ service_data ['id ' ];
231- $ access_token = $ service_data ['credentials ' ]['access_token ' ];
232- $ created = $ service_data ['credentials ' ]['created ' ];
233- $ expires_in = $ service_data ['credentials ' ]['expires_in ' ];
234- $ gmb_service_id = $ service ;
235- $ refresh_token = $ service_data ['credentials ' ]['refresh_token ' ];
236- break ;
250+ foreach ( $ service_data ['available_accounts ' ] as $ account ) {
251+ if ( $ account_id === $ account ['id ' ] ) {
252+ $ id = $ service_data ['id ' ];
253+ $ access_token = $ service_data ['credentials ' ]['access_token ' ];
254+ $ created = $ service_data ['credentials ' ]['created ' ];
255+ $ expires_in = $ service_data ['credentials ' ]['expires_in ' ];
256+ $ gmb_service_id = $ service ;
257+ $ refresh_token = $ service_data ['credentials ' ]['refresh_token ' ];
258+ break ;
259+ }
260+ }
237261 }
238262 }
239263
240- // $created = '1593273390';
241264 // Check if access token will expire in next 30 seconds.
242265 $ expired = ( $ created + ( $ expires_in - 30 ) ) < time ();
243266
244267 // If it's not expired then return current access token in DB
245268 if ( ! $ expired ) {
246269 // Add an expires_in value to prevent Google Client PHP notice for undefined expires_in index
247- $ access_token = array ('access_token ' => $ access_token , 'expires_in ' => $ expires_in );
270+ $ access_token = array ( 'access_token ' => $ access_token , 'expires_in ' => $ expires_in );
248271 return $ access_token ;
249272 }
250273
@@ -488,7 +511,7 @@ public function share( $post_details, $args = array() ) {
488511 }
489512 }
490513
491- $ access_token = $ this ->gmb_refresh_access_token ();
514+ $ access_token = $ this ->gmb_refresh_access_token ( $ args );
492515 $ client ->setAccessToken ( $ access_token );
493516 $ client ->setApiFormatV2 ( true );
494517
0 commit comments