Path: blob/master/src/applications/calendar/storage/PhabricatorCalendarEventInvitee.php
12253 views
<?php12final class PhabricatorCalendarEventInvitee extends PhabricatorCalendarDAO3implements PhabricatorPolicyInterface {45protected $eventPHID;6protected $inviteePHID;7protected $inviterPHID;8protected $status;9protected $availability = self::AVAILABILITY_DEFAULT;1011const STATUS_INVITED = 'invited';12const STATUS_ATTENDING = 'attending';13const STATUS_DECLINED = 'declined';14const STATUS_UNINVITED = 'uninvited';1516const AVAILABILITY_DEFAULT = 'default';17const AVAILABILITY_AVAILABLE = 'available';18const AVAILABILITY_BUSY = 'busy';19const AVAILABILITY_AWAY = 'away';2021public static function initializeNewCalendarEventInvitee(22PhabricatorUser $actor, $event) {23return id(new PhabricatorCalendarEventInvitee())24->setInviterPHID($actor->getPHID())25->setStatus(self::STATUS_INVITED)26->setEventPHID($event->getPHID());27}2829protected function getConfiguration() {30return array(31self::CONFIG_COLUMN_SCHEMA => array(32'status' => 'text64',33'availability' => 'text64',34),35self::CONFIG_KEY_SCHEMA => array(36'key_event' => array(37'columns' => array('eventPHID', 'inviteePHID'),38'unique' => true,39),40'key_invitee' => array(41'columns' => array('inviteePHID'),42),43),44) + parent::getConfiguration();45}4647public function isAttending() {48return ($this->getStatus() == self::STATUS_ATTENDING);49}5051public function isUninvited() {52if ($this->getStatus() == self::STATUS_UNINVITED) {53return true;54} else {55return false;56}57}5859public function getDisplayAvailability(PhabricatorCalendarEvent $event) {60switch ($this->getAvailability()) {61case self::AVAILABILITY_DEFAULT:62case self::AVAILABILITY_BUSY:63return self::AVAILABILITY_BUSY;64case self::AVAILABILITY_AWAY:65return self::AVAILABILITY_AWAY;66default:67return null;68}69}7071public static function getAvailabilityMap() {72return array(73self::AVAILABILITY_AVAILABLE => array(74'color' => 'green',75'name' => pht('Available'),76),77self::AVAILABILITY_BUSY => array(78'color' => 'orange',79'name' => pht('Busy'),80),81self::AVAILABILITY_AWAY => array(82'color' => 'red',83'name' => pht('Away'),84),85);86}8788public static function getAvailabilitySpec($const) {89return idx(self::getAvailabilityMap(), $const, array());90}9192public static function getAvailabilityName($const) {93$spec = self::getAvailabilitySpec($const);94return idx($spec, 'name', $const);95}9697public static function getAvailabilityColor($const) {98$spec = self::getAvailabilitySpec($const);99return idx($spec, 'color', 'indigo');100}101102103/* -( PhabricatorPolicyInterface )----------------------------------------- */104105106public function getCapabilities() {107return array(108PhabricatorPolicyCapability::CAN_VIEW,109);110}111112public function getPolicy($capability) {113switch ($capability) {114case PhabricatorPolicyCapability::CAN_VIEW:115return PhabricatorPolicies::getMostOpenPolicy();116}117}118119public function hasAutomaticCapability($capability, PhabricatorUser $viewer) {120return false;121}122123}124125126