//Retrieve cache object
//XXX: by default stored in /tmp/symfony-cache/@/W/3/6SEhFfeIW4UMDlAII+Dg
//XXX: stored in %kernel.project_dir%/var/cache/airlibre/0/P/IA20X0K4dkMd9-+Ohp9Q
- $cache = new FilesystemAdapter($this->config['cache']['namespace'], $this->config['cache']['lifetime'], $this->config['cache']['directory']);
+ $cache = new FilesystemAdapter($this->config['cache']['namespace'], $this->config['cache']['lifetime'], $this->config['path']['cache']);
//Retrieve calendars
$cacheCalendars = $cache->getItem('calendars');
//Retrieve calendars
$calendars = $cacheCalendars->get();
- //XXX: calendars content
- #var_export($calendars);
- #$debug = [
- # '635317121880-usqucmne71jnmprl8br9khh2om4n8cmh.apps.googleusercontent.com' => [
- # 'project' => 'calendar-317315',
- # 'secret' => 'HRsKd4FIc9gxQHM4IoBWnlbD',
- # 'redirect' => 'https://airlibre.eu/calendar/callback',
- # 'tokens' => [
- # 'ya29.a0ARrdaM_cNpedJ-B3irC76_0-C7cfF-WmMh0smAs4m7cSvBChnniWr-e79q0IfAbh5DSG4FlHbCMvmaYb7xX4V45PujT2U4InZmpHfspiPv-QeR4XeZJp7bLXwnw7A4M0imeeYyQcwCW7GJ8O7dGLBQlBZAvt_Q' => [
- # 'calendar' => 'airlibre',
- # 'expire' => 3599,
- # 'scope' => 'https://www.googleapis.com/auth/calendar https://www.googleapis.com/auth/calendar.events',
- # 'type' => 'Bearer',
- # 'created' => 1625417137,
- # ],
- # ],
- # ],
- #];
-
//Check expired token
foreach($calendars as $clientId => $client) {
//Get google client
//With expired token
if ($exp = $googleClient->isAccessTokenExpired()) {
//Refresh token
- if ($googleClient->getRefreshToken()) {
- //Retrieve refreshed token
- $googleToken = $googleClient->fetchAccessTokenWithRefreshToken($googleClient->getRefreshToken());
-
+ if (($refreshToken = $googleClient->getRefreshToken()) && ($googleToken = $googleClient->fetchAccessTokenWithRefreshToken($refreshToken)) && empty($googleToken['error'])) {
//Add refreshed token
$calendars[$clientId]['tokens'][$googleToken['access_token']] = [
'calendar' => $token['calendar'],
unset($calendars[$clientId]);
}
+ //Save calendars
+ $cacheCalendars->set($calendars);
+
+ //Save calendar
+ $cache->save($cacheCalendars);
+
//Drop token and report
+ //XXX: submit app to avoid expiration
+ //XXX: see https://console.cloud.google.com/apis/credentials/consent?project=calendar-317315
echo 'Token '.$tokenId.' for calendar '.$token['calendar'].' has expired and is not refreshable'."\n";
//Return failure
foreach($sessions as $sessionId => $session) {
//Init shared properties
//TODO: validate for constraints here ??? https://developers.google.com/calendar/api/guides/extended-properties
+ //TODO: drop shared as unused ???
$shared = [
'gps' => $session['l_latitude'].','.$session['l_longitude']
];
$end->setDateTime($session['stop']->format(\DateTime::ISO8601));
try {
- //Insert the event
+ //Update the event
$updatedEvent = $googleCalendar->events->update($token['calendar'], $event->getId(), $event);
//Catch exception
} catch(\Google\Service\Exception $e) {