Changeset View
Changeset View
Standalone View
Standalone View
src/applications/owners/phid/PhabricatorOwnersPackagePHIDType.php
| Show All 30 Lines | final class PhabricatorOwnersPackagePHIDType extends PhabricatorPHIDType { | ||||
| public function loadHandles( | public function loadHandles( | ||||
| PhabricatorHandleQuery $query, | PhabricatorHandleQuery $query, | ||||
| array $handles, | array $handles, | ||||
| array $objects) { | array $objects) { | ||||
| foreach ($handles as $phid => $handle) { | foreach ($handles as $phid => $handle) { | ||||
| $package = $objects[$phid]; | $package = $objects[$phid]; | ||||
| $monogram = $package->getMonogram(); | |||||
| $name = $package->getName(); | $name = $package->getName(); | ||||
| $id = $package->getID(); | $id = $package->getID(); | ||||
| $handle->setName($name); | $handle->setName($monogram); | ||||
| $handle->setFullName("{$monogram}: {$name}"); | |||||
| $handle->setURI("/owners/package/{$id}/"); | $handle->setURI("/owners/package/{$id}/"); | ||||
| if ($package->isArchived()) { | |||||
| $handle->setStatus(PhabricatorObjectHandle::STATUS_CLOSED); | |||||
| } | |||||
| } | |||||
| } | |||||
| public function canLoadNamedObject($name) { | |||||
| return preg_match('/^O\d*[1-9]\d*$/i', $name); | |||||
| } | |||||
| public function loadNamedObjects( | |||||
| PhabricatorObjectQuery $query, | |||||
| array $names) { | |||||
| $id_map = array(); | |||||
| foreach ($names as $name) { | |||||
| $id = (int)substr($name, 1); | |||||
| $id_map[$id][] = $name; | |||||
| } | } | ||||
| $objects = id(new PhabricatorOwnersPackageQuery()) | |||||
| ->setViewer($query->getViewer()) | |||||
| ->withIDs(array_keys($id_map)) | |||||
| ->execute(); | |||||
| $results = array(); | |||||
| foreach ($objects as $id => $object) { | |||||
| foreach (idx($id_map, $id, array()) as $name) { | |||||
| $results[$name] = $object; | |||||
| } | |||||
| } | |||||
| return $results; | |||||
| } | } | ||||
| } | } | ||||