private function buildTransformedFileResponse(PhabricatorTransformedFile $xform)
 {
     $file = id(new PhabricatorFile())->loadOneWhere('phid = %s', $xform->getTransformedPHID());
     if ($file) {
         $uri = $file->getBestURI();
     } else {
         $bad_phid = $xform->getTransformedPHID();
         throw new Exception("Unable to load file with phid {$bad_phid}.");
     }
     // TODO: We could just delegate to the file view controller instead,
     // which would save the client a roundtrip, but is slightly more complex.
     return id(new AphrontRedirectResponse())->setURI($uri);
 }
 private function buildTransformedFileResponse(PhabricatorTransformedFile $xform)
 {
     // TODO: We could just delegate to the file view controller instead,
     // which would save the client a roundtrip, but is slightly more complex.
     return id(new AphrontRedirectResponse())->setURI(PhabricatorFileURI::getViewURIForPHID($xform->getTransformedPHID()));
 }
 private function buildTransformedFileResponse(PhabricatorTransformedFile $xform)
 {
     $file = id(new PhabricatorFileQuery())->setViewer(PhabricatorUser::getOmnipotentUser())->withPHIDs(array($xform->getTransformedPHID()))->executeOne();
     if (!$file) {
         return new Aphront404Response();
     }
     // TODO: We could just delegate to the file view controller instead,
     // which would save the client a roundtrip, but is slightly more complex.
     return $file->getRedirectResponse();
 }
 private function destroyTransform(PhabricatorTransformedFile $xform)
 {
     $engine = new PhabricatorDestructionEngine();
     $file = id(new PhabricatorFileQuery())->setViewer($engine->getViewer())->withPHIDs(array($xform->getTransformedPHID()))->executeOne();
     $unguarded = AphrontWriteGuard::beginScopedUnguardedWrites();
     if (!$file) {
         if ($xform->getID()) {
             $xform->delete();
         }
     } else {
         $engine->destroyObject($file);
     }
     unset($unguarded);
 }