/**
     * 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;
 }