public function execute($_options = array()) { try { $oAgenda = new GoogleAgenda($this->getConfiguration('calendarUrl')); // Le tableau d'options suivant contient les valeurs par défaut $aEvents = $oAgenda->getEvents(array('startmin' => date('Y-m-d'), 'startmax' => '', 'sortorder' => 'ascending', 'orderby' => 'starttime', 'maxresults' => '5', 'startindex' => '1', 'search' => '', 'singleevents' => 'true', 'futureevents' => 'false', 'timezone' => 'Europe/Paris', 'showdeleted' => 'false')); $date = date('Y-m-d H:i:s'); $result = ''; foreach ($aEvents as $oEvent) { if ($oEvent->getStartDate() < $date && $oEvent->getEndDate() > $date) { $result .= $oEvent->getTitle() . ' - '; } } return trim($result, ' - '); } catch (GoogleAgendaException $e) { throw $e; } return false; }
/** * {Complément Jeedom} Crée un nouvel objet GoogleAgendaEvent et l'affecte au tableau d'évènements * Même param et return que la class initiale * - permet de gérer les StartDate et EndDate, par rapport à ce qui a été retourné par la class initiale */ protected function setEvent(SimpleXMLElement $oData) { // traitement initial // parent::setEvent($oData); $nNbEvent = count($this->_aEvents); // actions compémentaires uniquement s'il y a des données dans le tableau // if ($nNbEvent > 0) { $oDataChild = $oData->children('http://schemas.google.com/g/2005'); $oEvent = $this->_aEvents[$nNbEvent - 1]; $sEventStartDate = (string) $oEvent->getStartDate(); $sEventEndDate = (string) $oEvent->getEndDate(); // verifie si le traitement est valide // if (!isset($oDataChild->when) || empty($sEventStartDate) && empty($sEventEndDate)) { // permet de gérer StartDate et EndDate à partir de la Description (tag <content>), si tag <when> absent du flux // $eventDesciption = $this->changeString($oEvent->getDescription()); log::add('gCalendar', 'debug', '[' . $oEvent->getTitle() . '] setEvent().description:/Start/' . $eventDesciption . '/End/'); if (!empty($eventDesciption)) { // (1 journée entière, sans horaires) | Date : Lun. 26 Janv. 2015<br /> ... // if (preg_match('@Date : (\\w+)[.]{0,1} (\\d{1,2}) (\\w+)[.]{0,1} (\\d{4})<br@i', $eventDesciption, $resMatsh) == 1) { $oEvent->setStartDate(date($resMatsh[4] . '-' . $this->getMonthNumber($resMatsh[3]) . '-' . $resMatsh[2] . ' 00:00:00')); $oEvent->setEndDate(date($resMatsh[4] . '-' . $this->getMonthNumber($resMatsh[3]) . '-' . $resMatsh[2] . ' 23:59:59')); log::add('gCalendar', 'debug', '[' . $oEvent->getTitle() . '] setEvent() (1j full) start:' . date($resMatsh[4] . '-' . $this->getMonthNumber($resMatsh[3]) . '-' . $resMatsh[2] . ' 00:00:00') . ' - end:' . date($resMatsh[4] . '-' . $this->getMonthNumber($resMatsh[3]) . '-' . $resMatsh[2] . ' 23:59:59')); } elseif (preg_match('@Date : (\\w+)[.]{0,1} (\\d{1,2}) (\\w+)[.]{0,1} (\\d{4}) (\\d{2}:\\d{2}) \\w+ (\\d{2}:\\d{2})@i', $eventDesciption, $resMatsh) == 1) { $resMatsh[6] = $resMatsh[6] == '00:00' ? '23:59:59' : $resMatsh[6] . ':00'; $oEvent->setStartDate(date($resMatsh[4] . '-' . $this->getMonthNumber($resMatsh[3]) . '-' . $resMatsh[2] . ' ' . $resMatsh[5] . ':00')); $oEvent->setEndDate(date($resMatsh[4] . '-' . $this->getMonthNumber($resMatsh[3]) . '-' . $resMatsh[2] . ' ' . $resMatsh[6])); log::add('gCalendar', 'debug', '[' . $oEvent->getTitle() . '] setEvent() (1j heure) start:' . date($resMatsh[4] . '-' . $this->getMonthNumber($resMatsh[3]) . '-' . $resMatsh[2] . ' ' . $resMatsh[5] . ':00') . ' - end:' . date($resMatsh[4] . '-' . $this->getMonthNumber($resMatsh[3]) . '-' . $resMatsh[2] . ' ' . $resMatsh[6])); } elseif (preg_match('@Date : (\\w+)[.]{0,1} (\\d{1,2}) (\\w+)[.]{0,1} (\\d{4}) (\\d{2}:\\d{2}) \\w+ (\\w+)[.]{0,1} (\\d{1,2}) (\\w+)[.]{0,1} (\\d{4}) (\\d{2}:\\d{2})@i', $eventDesciption, $resMatsh) == 1) { $resMatsh[10] = $resMatsh[10] == '00:00' ? '23:59:59' : $resMatsh[10] . ':00'; $oEvent->setStartDate(date($resMatsh[4] . '-' . $this->getMonthNumber($resMatsh[3]) . '-' . $resMatsh[2] . ' ' . $resMatsh[5] . ':00')); $oEvent->setEndDate(date($resMatsh[9] . '-' . $this->getMonthNumber($resMatsh[8]) . '-' . $resMatsh[7] . ' ' . $resMatsh[10])); log::add('gCalendar', 'debug', '[' . $oEvent->getTitle() . '] setEvent() (xj heure) start:' . date($resMatsh[4] . '-' . $this->getMonthNumber($resMatsh[3]) . '-' . $resMatsh[2] . ' ' . $resMatsh[5] . ':00') . ' - end:' . date($resMatsh[9] . '-' . $this->getMonthNumber($resMatsh[8]) . '-' . $resMatsh[7] . ' ' . $resMatsh[10])); } elseif (preg_match('@Date : (\\w+)[.]{0,1} (\\d{1,2}) (\\w+)[.]{0,1} (\\d{4}) \\w+ (\\w+)[.]{0,1} (\\d{1,2}) (\\w+)[.]{0,1} (\\d{4})@i', $eventDesciption, $resMatsh) == 1) { $oEvent->setStartDate(date($resMatsh[4] . '-' . $this->getMonthNumber($resMatsh[3]) . '-' . $resMatsh[2] . ' 00:00:00')); $oEvent->setEndDate(date($resMatsh[8] . '-' . $this->getMonthNumber($resMatsh[7]) . '-' . $resMatsh[6] . ' 23:59:59')); log::add('gCalendar', 'debug', '[' . $oEvent->getTitle() . '] setEvent() (xj) start:' . date($resMatsh[4] . '-' . $this->getMonthNumber($resMatsh[3]) . '-' . $resMatsh[2] . ' 00:00:00') . ' - end:' . date($resMatsh[8] . '-' . $this->getMonthNumber($resMatsh[7]) . '-' . $resMatsh[6] . ' 23:59:59')); } else { log::add('gCalendar', 'info', '[' . $oEvent->getTitle() . '] setEvent(): ' . __("Le champ description(content) n'est pas correctement formaté (impossible de déterminer les dates de l'événement)", __FILE__)); } //log::add('gCalendar','debug','['.$oEvent->getTitle().'] setEvent().preg_match='.print_r($resMatsh,true)); } } $this->_aEvents[$nNbEvent - 1] = $oEvent; } }