Path: blob/master/src/infrastructure/export/engine/PhabricatorCustomFieldExportEngineExtension.php
12242 views
<?php12final class PhabricatorCustomFieldExportEngineExtension3extends PhabricatorExportEngineExtension {45const EXTENSIONKEY = 'custom-field';67private $object;89public function supportsObject($object) {10$this->object = $object;11return ($object instanceof PhabricatorCustomFieldInterface);12}1314public function newExportFields() {15$prototype = $this->object;1617$fields = $this->newCustomFields($prototype);1819$results = array();20foreach ($fields as $field) {21$field_key = $field->getModernFieldKey();2223$results[] = $field->newExportField()24->setKey($field_key);25}2627return $results;28}2930public function newExportData(array $objects) {31$viewer = $this->getViewer();3233$field_map = array();34foreach ($objects as $object) {35$object_phid = $object->getPHID();3637$fields = PhabricatorCustomField::getObjectFields(38$object,39PhabricatorCustomField::ROLE_EXPORT);4041$fields42->setViewer($viewer)43->readFieldsFromObject($object);4445$field_map[$object_phid] = $fields;46}4748$all_fields = array();49foreach ($field_map as $field_list) {50foreach ($field_list->getFields() as $field) {51$all_fields[] = $field;52}53}5455id(new PhabricatorCustomFieldStorageQuery())56->addFields($all_fields)57->execute();5859$results = array();60foreach ($objects as $object) {61$object_phid = $object->getPHID();62$object_fields = $field_map[$object_phid];6364$map = array();65foreach ($object_fields->getFields() as $field) {66$key = $field->getModernFieldKey();67$map[$key] = $field->newExportData();68}6970$results[] = $map;71}7273return $results;74}7576private function newCustomFields($object) {77$fields = PhabricatorCustomField::getObjectFields(78$object,79PhabricatorCustomField::ROLE_EXPORT);80$fields->setViewer($this->getViewer());8182return $fields->getFields();83}8485}868788