1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-09-20 01:08:50 +02:00

Add an "availaiblity" attachment for user.search

Summary: Ref T13222. See PHI990. The older `user.query` supports availability information, but it isn't currently available in a modern way. Make it available.

Test Plan: {F6048126}

Reviewers: amckinley

Reviewed By: amckinley

Maniphest Tasks: T13222

Differential Revision: https://secure.phabricator.com/D19851
This commit is contained in:
epriestley 2018-12-05 12:40:59 -08:00
parent 1029081b28
commit 1e4bdc39a1
3 changed files with 52 additions and 1 deletions

View file

@ -3761,6 +3761,7 @@ phutil_register_library_map(array(
'PhabricatorPeopleAnyOwnerDatasource' => 'applications/people/typeahead/PhabricatorPeopleAnyOwnerDatasource.php',
'PhabricatorPeopleApplication' => 'applications/people/application/PhabricatorPeopleApplication.php',
'PhabricatorPeopleApproveController' => 'applications/people/controller/PhabricatorPeopleApproveController.php',
'PhabricatorPeopleAvailabilitySearchEngineAttachment' => 'applications/people/engineextension/PhabricatorPeopleAvailabilitySearchEngineAttachment.php',
'PhabricatorPeopleBadgesProfileMenuItem' => 'applications/people/menuitem/PhabricatorPeopleBadgesProfileMenuItem.php',
'PhabricatorPeopleCommitsProfileMenuItem' => 'applications/people/menuitem/PhabricatorPeopleCommitsProfileMenuItem.php',
'PhabricatorPeopleController' => 'applications/people/controller/PhabricatorPeopleController.php',
@ -9640,6 +9641,7 @@ phutil_register_library_map(array(
'PhabricatorPeopleAnyOwnerDatasource' => 'PhabricatorTypeaheadDatasource',
'PhabricatorPeopleApplication' => 'PhabricatorApplication',
'PhabricatorPeopleApproveController' => 'PhabricatorPeopleController',
'PhabricatorPeopleAvailabilitySearchEngineAttachment' => 'PhabricatorSearchEngineAttachment',
'PhabricatorPeopleBadgesProfileMenuItem' => 'PhabricatorProfileMenuItem',
'PhabricatorPeopleCommitsProfileMenuItem' => 'PhabricatorProfileMenuItem',
'PhabricatorPeopleController' => 'PhabricatorController',

View file

@ -0,0 +1,46 @@
<?php
final class PhabricatorPeopleAvailabilitySearchEngineAttachment
extends PhabricatorSearchEngineAttachment {
public function getAttachmentName() {
return pht('User Availability');
}
public function getAttachmentDescription() {
return pht('Get availability information for users.');
}
public function willLoadAttachmentData($query, $spec) {
$query->needAvailability(true);
}
public function getAttachmentForObject($object, $data, $spec) {
$until = $object->getAwayUntil();
if ($until) {
$until = (int)$until;
} else {
$until = null;
}
$value = $object->getDisplayAvailability();
if ($value === null) {
$value = PhabricatorCalendarEventInvitee::AVAILABILITY_AVAILABLE;
}
$name = PhabricatorCalendarEventInvitee::getAvailabilityName($value);
$color = PhabricatorCalendarEventInvitee::getAvailabilityColor($value);
$event_phid = $object->getAvailabilityEventPHID();
return array(
'value' => $value,
'until' => $until,
'name' => $name,
'color' => $color,
'eventPHID' => $event_phid,
);
}
}

View file

@ -1466,7 +1466,10 @@ final class PhabricatorUser
}
public function getConduitSearchAttachments() {
return array();
return array(
id(new PhabricatorPeopleAvailabilitySearchEngineAttachment())
->setAttachmentKey('availability'),
);
}