Page MenuHomePhabricator
Paste P65048

T144041 PoC
ActivePublic

Authored by Aklapper on Jun 16 2024, 5:34 PM.
Tags
None
Referenced Files
F55382665: T144041 PoC
Jun 16 2024, 5:47 PM
F55382655: T144041 PoC
Jun 16 2024, 5:45 PM
F55382491: T144041 PoC
Jun 16 2024, 5:38 PM
F55382366: T144041 PoC
Jun 16 2024, 5:34 PM
Subscribers
None
<?php
final class PhabricatorProjectTagsIncludingMilestonesField
extends PhabricatorProjectTagsField {
const FIELDCONST = 'projects.milestones';
public function getHeraldFieldName() {
return pht('Project tags (incl. their milestones)');
}
// If some project PHIDs are milestones, also return their resp parent PHIDs
public function getHeraldFieldValue($object) {
// get project PHIDs which currently have an edge with our task $object
$project_phids = PhabricatorEdgeQuery::loadDestinationPHIDs(
$object->getPHID(),
PhabricatorProjectObjectHasProjectEdgeType::EDGECONST);
// get only those of our current projects which are milestones
$current_milestones = id(new PhabricatorProjectQuery())
->setViewer(PhabricatorUser::getOmnipotentUser())
->withIsMilestone(true)
->withPHIDs($project_phids)
->execute();
// pull the parent projects of our milestones
$parent_project_phids = mpull($current_milestones, 'getParentProjectPHID');
// fake return that our task has _all_ those projects set as edges
return array_merge($project_phids, $parent_project_phids);
}
}