X-Git-Url: https://git.rapsys.eu/airbundle/blobdiff_plain/15fe5427ff4b326c89a2561847f41db083b6b5a0..65346e639022c6d450357b433c7eeed83c0c4b8a:/Command/CalendarCommand.php?ds=inline diff --git a/Command/CalendarCommand.php b/Command/CalendarCommand.php index 84e096f..f22fb09 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'); @@ -122,25 +122,6 @@ class CalendarCommand extends Command { //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 @@ -163,10 +144,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'], @@ -190,7 +168,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 @@ -294,6 +280,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'] ]; @@ -305,38 +292,37 @@ class CalendarCommand extends Command { ]; //Init description - #$description = '
Description
'.$markdown->convert(strip_tags(str_replace(["\r", "\n\n"], ['', "\n"], $session['p_description']))).'
'; - $description = '
Description
'.$markdown->convert(strip_tags($session['p_description'])).'
'; + $description = 'Description :'."\n".strip_tags(preg_replace('!([^<]+)!', '\1', $markdown->convert(strip_tags($session['p_description'])))); + $shared['description'] = $markdown->convert(strip_tags($session['p_description'])); //Add class when available if (!empty($session['p_class'])) { $shared['class'] = $session['p_class']; - #$description .= '
Classe
'.$markdown->convert(strip_tags(str_replace(["\r", "\n\n"], ['', "\n"], $session['p_class']))).'
'; - $description .= '
Classe

'.$session['p_class'].'

'; + $description .= "\n\n".'Classe :'."\n".$session['p_class']; } //Add contact when available if (!empty($session['p_contact'])) { $shared['contact'] = $session['p_contact']; - $description .= '
Contacter

'.$session['p_contact'].'

'; + $description .= "\n\n".'Contact :'."\n".$session['p_contact']; } //Add donate when available if (!empty($session['p_donate'])) { $shared['donate'] = $session['p_donate']; - $description .= '
Contribuer

'.$session['p_donate'].'

'; + $description .= "\n\n".'Contribuer :'."\n".$session['p_donate']; } //Add link when available if (!empty($session['p_link'])) { $shared['link'] = $session['p_link']; - $description .= '
Site

'.$session['p_link'].'

'; + $description .= "\n\n".'Site :'."\n".$session['p_link']; } //Add profile when available if (!empty($session['p_profile'])) { $shared['profile'] = $session['p_profile']; - $description .= '
Réseau social

'.$session['p_profile'].'

'; + $description .= "\n\n".'Réseau social :'."\n".$session['p_profile']; } //Locked session @@ -404,8 +390,7 @@ class CalendarCommand extends Command { $event = $events[$sessionId]; //With updated event - #if ($session['updated'] >= (new \DateTime($event->getUpdated()))) { - { + if ($session['updated'] >= (new \DateTime($event->getUpdated()))) { //Set summary $event->setSummary($session['au_pseudonym'].' '.$this->translator->trans('at '.$session['l_short'])); @@ -452,7 +437,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) {