]> Raphaƫl G. Git Repositories - airbundle/blobdiff - Command/CalendarCommand.php
Remove location short
[airbundle] / Command / CalendarCommand.php
index 34b1005c8606c16ed506c9fba60bfb76ae5ca11d..2968f4800196059e794d6510c74ed01fff2e6620 100644 (file)
@@ -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) {