public function isAlreadyUsedCalendarId(Member $member = null, $token = null) { $member = $this->getMember($member); $id = $this->getPrimaryId($member, $token); $memberId = opCalendarPluginToolkit::seekEmailAndGetMemberId($id); return $memberId && (int) $member->id !== (int) $memberId; }
protected function getContents($id, Google_Service_Calendar $calendar) { $endYear = date('Y', strtotime('+1 month')); $endMonth = date('m', strtotime('+1 month')); $endDay = opCalendarPluginToolkit::getLastDay($endMonth, $endYear); return $calendar->events->listEvents($id, array('timeMin' => date('c', strtotime(sprintf('%s-01 00:00:00', date('Y-m', strtotime('-1 month'))))), 'timeMax' => date('c', strtotime(sprintf('%04d-%02d-%02d 23:59:59', $endYear, $endMonth, $endDay))), 'showDeleted' => true)); }
protected function getContents($src, $token) { // get 3 months data. $api = new opCalendarApi($this->consumer, new OAuthConsumer($token['token'], $token['secret']), opCalendarApiHandler::GET, $src, array('start-min' => date('Y-m-01\\T00:00:00', strtotime('-1 month')), 'start-max' => sprintf(date('Y-m-%02\\d\\T23:59:59', strtotime('+1 month')), opCalendarPluginToolkit::getLastDay(date('m', strtotime('+1 month')))), 'alt' => 'jsonc')); $handler = new opCalendarApiHandler($api, new opCalendarApiResultsJsonEvents()); $results = $handler->execute(); return $results->is200StatusCode() ? $results : false; }
public function validateMonthDay(sfValidatorBase $validator, $values) { $limitedMonths = array(2 => $values['year'] ? opCalendarPluginToolkit::isLeap((int) $values['year']) ? 29 : 28 : 29, 4 => 30, 6 => 30, 9 => 30, 11 => 30); if (isset($limitedMonths[$values['month']]) && $limitedMonths[(int) $values['month']] < (int) $values['day']) { throw new sfValidatorError($validator, 'invalid'); } return $values; }
public function save() { $values = $this->getValues(); $list = $this->getOption('list'); $opGoogleCalendarOAuth = $this->getOption('opGoogleCalendarOAuth'); $entry = $list[$values['choice']]; $result = $opGoogleCalendarOAuth->getContents(str_replace(opGoogleCalendarOAuth::SCOPE, '', $entry['contents']['src']), 'opCalendarApiResultsJsonEvents', opCalendarApiHandler::GET, array('start-min' => sprintf('%04d-%02d-01T00:00:00', date('Y'), $values['months']), 'start-max' => sprintf('%04d-%02d-%02dT23:59:59', date('Y'), $values['months'], opCalendarPluginToolkit::getLastDay($values['months'])), 'alt' => 'jsonc')); if (!$result) { return false; } opCalendarPluginToolkit::updateGoogleCalendarCronFlags($entry['contents']['src'], $values['google_cron_update'][0], $values['public_flag'], $this->member); return opCalendarPluginToolkit::insertSchedules($result->toArray(), $values['public_flag'], true); }
public function save() { $values = $this->getValues(); $id = $this->getOption('id'); $googleCronUpdate = isset($values['google_cron_update']) && (bool) $values['google_cron_update']; $publicFlag = $values['public_flag']; $calendar = $this->getOption('googleCalendar'); $lastDay = opCalendarPluginToolkit::getLastDay($values['months']); $yearMonth = sprintf('%04d-%02d', date('Y'), $values['months']); $events = $calendar->events->listEvents($id, array('timeMin' => date('c', strtotime(sprintf('%s-01 00:00:00', $yearMonth))), 'timeMax' => date('c', strtotime(sprintf('%s-%02d 23:59:59', $yearMonth, $lastDay))), 'showDeleted' => true)); if (!$events) { return false; } opCalendarPluginToolkit::updateGoogleCalendarCronFlags($googleCronUpdate, $publicFlag, $this->member); return opCalendarPluginToolkit::insertSchedules($events, $publicFlag); }
public function save() { if ($this->isOAuthAuthenticate() && array_key_exists(self::IS_GOOGLE_CALENDAR_OAUTH_KEY_REVOKE, $this->values)) { $isDelete = (bool) $this->values[self::IS_GOOGLE_CALENDAR_OAUTH_KEY_REVOKE]; unset($this->values[self::IS_GOOGLE_CALENDAR_OAUTH_KEY_REVOKE]); if ($isDelete) { $con = opDoctrineQuery::getMasterConnection(); $con->beginTransaction(); try { $this->opCalendarOAuth->getClient()->revokeToken(); opCalendarPluginToolkit::deleteMemberGoogleCalendar($this->member); $con->commit(); } catch (Exception $e) { $con->rollback(); return false; } } } return parent::save(); }
public function updateApiFromArray($list) { $scheduleMemberTable = Doctrine_Core::getTable('ScheduleMember'); $conn = $this->getConnection(); $conn->beginTransaction(); try { $sql = 'SELECT id, api_etag FROM ' . $this->getTableName() . ' WHERE api_flag = ? AND api_id_unique = ?'; $params = array($list['api_flag'], $list['api_id_unique']); if ($schedule = $conn->fetchRow($sql, $params)) { $id = $schedule['id']; if ($list['api_etag'] === $schedule['api_etag']) { $conn->rollback(); return $id; } $sql = 'DELETE ' . $scheduleMemberTable->getTableName() . ' FROM ' . $scheduleMemberTable->getTableName() . ' WHERE schedule_id = ?'; $conn->execute($sql, array((int) $id)); } $scheduleMembers = array_unique($list['ScheduleMember']); unset($list['ScheduleMember']); if (!isset($id)) { if (!($id = opCalendarPluginToolkit::insertInto($this->getTableName(), $list, $conn))) { throw new Exception('schedule commit error.'); } } else { if (!opCalendarPluginToolkit::update($this->getTableName(), $list, array('id' => (int) $id), $conn)) { throw new Exception('schedule commit error.'); } } $members = array(); foreach ($scheduleMembers as $member_id) { $members['member_id'] = $member_id; $members['schedule_id'] = $id; opCalendarPluginToolkit::insertInto($scheduleMemberTable->getTableName(), $members, $conn); } $conn->commit(); } catch (Exception $e) { $conn->rollback(); throw $e; } return $id; }
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; }