X-Git-Url: https://git.rapsys.eu/airbundle/blobdiff_plain/43e41ea4716c341aad3c983ddd0c4860100f7184..ff9e7c39f22c3a65b416c8f00a7a0f1f83e16758:/Command/CalendarCommand.php diff --git a/Command/CalendarCommand.php b/Command/CalendarCommand.php index 34b1005..2968f48 100644 --- a/Command/CalendarCommand.php +++ b/Command/CalendarCommand.php @@ -108,7 +108,7 @@ class CalendarCommand extends Command { //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'); @@ -147,10 +147,7 @@ class CalendarCommand extends Command { //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'], @@ -174,7 +171,15 @@ class CalendarCommand extends Command { 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 @@ -278,6 +283,7 @@ class CalendarCommand extends Command { 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'] ]; @@ -348,7 +354,7 @@ class CalendarCommand extends Command { //TODO: replace 'airlibre' with $this->config['calendar']['prefix'] when possible with prefix validating [a-v0-9]{5,} //XXX: see https://developers.google.com/calendar/api/v3/reference/events/insert#id 'id' => $token['prefix'].$sessionId, - 'summary' => $session['au_pseudonym'].' '.$this->translator->trans('at '.$session['l_short']), + 'summary' => $session['au_pseudonym'].' '.$this->translator->trans('at '.$session['l_title']), #'description' => $markdown->convert(strip_tags($session['p_description'])), 'description' => $description, 'status' => empty($session['a_canceled'])?'confirmed':'cancelled', @@ -389,7 +395,7 @@ class CalendarCommand extends Command { //With updated event if ($session['updated'] >= (new \DateTime($event->getUpdated()))) { //Set summary - $event->setSummary($session['au_pseudonym'].' '.$this->translator->trans('at '.$session['l_short'])); + $event->setSummary($session['au_pseudonym'].' '.$this->translator->trans('at '.$session['l_title'])); //Set description $event->setDescription($description); @@ -434,7 +440,7 @@ class CalendarCommand extends Command { $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) {