private function closeTasks(PhabricatorUser $actor, $acting_as, PhabricatorRepository $repository, PhabricatorRepositoryCommit $commit, $message)
 {
     $maniphest = 'PhabricatorManiphestApplication';
     if (!PhabricatorApplication::isClassInstalled($maniphest)) {
         return;
     }
     $prefixes = ManiphestTaskStatus::getStatusPrefixMap();
     $suffixes = ManiphestTaskStatus::getStatusSuffixMap();
     $matches = id(new ManiphestCustomFieldStatusParser())->parseCorpus($message);
     $task_statuses = array();
     foreach ($matches as $match) {
         $prefix = phutil_utf8_strtolower($match['prefix']);
         $suffix = phutil_utf8_strtolower($match['suffix']);
         $status = idx($suffixes, $suffix);
         if (!$status) {
             $status = idx($prefixes, $prefix);
         }
         foreach ($match['monograms'] as $task_monogram) {
             $task_id = (int) trim($task_monogram, 'tT');
             $task_statuses[$task_id] = $status;
         }
     }
     if (!$task_statuses) {
         return;
     }
     $tasks = id(new ManiphestTaskQuery())->setViewer($actor)->withIDs(array_keys($task_statuses))->needProjectPHIDs(true)->execute();
     foreach ($tasks as $task_id => $task) {
         $xactions = array();
         $edge_type = ManiphestTaskHasCommitEdgeType::EDGECONST;
         $edge_xaction = id(new ManiphestTransaction())->setTransactionType(PhabricatorTransactions::TYPE_EDGE)->setMetadataValue('edge:type', $edge_type)->setNewValue(array('+' => array($commit->getPHID() => $commit->getPHID())));
         $status = $task_statuses[$task_id];
         if ($status) {
             if ($task->getStatus() != $status) {
                 $xactions[] = id(new ManiphestTransaction())->setTransactionType(ManiphestTransaction::TYPE_STATUS)->setMetadataValue('commitPHID', $commit->getPHID())->setNewValue($status);
                 $edge_xaction->setMetadataValue('commitPHID', $commit->getPHID());
             }
         }
         $xactions[] = $edge_xaction;
         $content_source = PhabricatorContentSource::newForSource(PhabricatorContentSource::SOURCE_DAEMON, array());
         $editor = id(new ManiphestTransactionEditor())->setActor($actor)->setActingAsPHID($acting_as)->setContinueOnNoEffect(true)->setContinueOnMissingFields(true)->setUnmentionablePHIDMap(array($commit->getPHID() => $commit->getPHID()))->setContentSource($content_source);
         $editor->applyTransactions($task, $xactions);
     }
 }
 protected function getSuffixes()
 {
     return array_keys(ManiphestTaskStatus::getStatusSuffixMap());
 }