private function buildPropertySection(PhabricatorCalendarEvent $event) { $viewer = $this->getViewer(); $properties = id(new PHUIPropertyListView())->setUser($viewer); $invitees = $event->getInvitees(); foreach ($invitees as $key => $invitee) { if ($invitee->isUninvited()) { unset($invitees[$key]); } } if ($invitees) { $invitee_list = new PHUIStatusListView(); $icon_invited = PHUIStatusItemView::ICON_OPEN; $icon_attending = PHUIStatusItemView::ICON_ACCEPT; $icon_declined = PHUIStatusItemView::ICON_REJECT; $status_invited = PhabricatorCalendarEventInvitee::STATUS_INVITED; $status_attending = PhabricatorCalendarEventInvitee::STATUS_ATTENDING; $status_declined = PhabricatorCalendarEventInvitee::STATUS_DECLINED; $icon_map = array($status_invited => $icon_invited, $status_attending => $icon_attending, $status_declined => $icon_declined); $icon_color_map = array($status_invited => null, $status_attending => 'green', $status_declined => 'red'); $viewer_phid = $viewer->getPHID(); $is_rsvp_invited = $event->isRSVPInvited($viewer_phid); $type_user = PhabricatorPeopleUserPHIDType::TYPECONST; $head = array(); $tail = array(); foreach ($invitees as $invitee) { $item = new PHUIStatusItemView(); $invitee_phid = $invitee->getInviteePHID(); $status = $invitee->getStatus(); $target = $viewer->renderHandle($invitee_phid); $is_user = phid_get_type($invitee_phid) == $type_user; if (!$is_user) { $icon = 'fa-users'; $icon_color = 'blue'; } else { $icon = $icon_map[$status]; $icon_color = $icon_color_map[$status]; } // Highlight invited groups which you're a member of if you have // not RSVP'd to an event yet. if ($is_rsvp_invited) { if ($invitee_phid != $viewer_phid) { if ($event->hasRSVPAuthority($viewer_phid, $invitee_phid)) { $item->setHighlighted(true); } } } $item->setIcon($icon, $icon_color)->setTarget($target); if ($is_user) { $tail[] = $item; } else { $head[] = $item; } } foreach (array_merge($head, $tail) as $item) { $invitee_list->addItem($item); } } else { $invitee_list = phutil_tag('em', array(), pht('None')); } if ($event->isImportedEvent()) { $properties->addProperty(pht('Imported By'), pht('%s from %s', $viewer->renderHandle($event->getImportAuthorPHID()), $viewer->renderHandle($event->getImportSourcePHID()))); } $properties->addProperty(pht('Invitees'), $invitee_list); $properties->invokeWillRenderEvent(); return $properties; }