/** * getAllGoogleCalendarCronConfig() * * Cronでの自動更新設定を取得するメソッド * */ public static function getAllGoogleCalendarCronConfig() { $conn = ScheduleMemberTable::getInstance()->getConnection(); $sql = <<<EOT SELECT mc.member_id AS member_id, mc2.value AS public_flag FROM member_config AS mc INNER JOIN member_config AS mc2 ON mc.member_id = mc2.member_id AND mc.name_value_hash = ? AND mc.name = ? AND mc2.name = ? ; EOT; return $conn->fetchAll($sql, array(md5('google_cron_update,1'), 'google_cron_update', 'google_cron_update_public_flag')); }
public function updateApiFromEvent(Google_Service_Calendar_Event $event, Member $member, $publicFlag) { $conn = $this->getConnection(); $conn->beginTransaction(); try { $schedule = $this->findOneByApiIdUnique($event->id); if ('cancelled' === $event->status) { if ($schedule) { $schedule->delete(); } $conn->commit(); return true; } if (!$schedule) { $schedule = new Schedule(); $schedule->setApiIdUnique($event->id); } elseif ($event->etag === $schedule->api_etag) { $conn->rollback(); return $schedule->id; } $schedule->setTitle($event->summary); $schedule->setBody($event->description); $schedule->setMember($member); $schedule->setPublicFlag($this->getEventPublicFlag($event, $publicFlag)); if ($event->start->dateTime) { $startDateTime = new DateTime($event->start->dateTime); $schedule->setStartDate($startDateTime->format('Y-m-d')); $schedule->setStartTime($startDateTime->format('H:i:s')); } elseif ($event->start->date) { $schedule->setStartDate($event->start->date); } if ($event->end->dateTime) { $endDateTime = new DateTime($event->end->dateTime); $schedule->setEndDate($endDateTime->format('Y-m-d')); $schedule->setEndTime($endDateTime->format('H:i:s')); } elseif ($event->end->date) { $schedule->setStartDate($event->end->date); } $schedule->setApiEtag($event->etag); $schedule->save(); ScheduleMemberTable::getInstance()->updateScheduleMember(array('schedule_id' => $schedule->id, 'member_id' => $schedule->member_id)); foreach ($event->attendees as $attendee) { $memberId = opCalendarPluginToolkit::seekEmailAndGetMemberId($attendee->email); if (!$memberId) { continue; } ScheduleMemberTable::getInstance()->updateScheduleMember(array('schedule_id' => $schedule->id, 'member_id' => $memberId)); } $conn->commit(); } catch (Exception $e) { $conn->rollback(); throw $e; } return $schedule->id; }