@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
at upstream/main 54 lines 1.5 kB view raw
1<?php 2 3final class PhabricatorProjectCoverController 4 extends PhabricatorProjectController { 5 6 public function handleRequest(AphrontRequest $request) { 7 $viewer = $request->getViewer(); 8 9 $request->validateCSRF(); 10 11 $board_phid = $request->getStr('boardPHID'); 12 $object_phid = $request->getStr('objectPHID'); 13 $file_phid = $request->getStr('filePHID'); 14 15 $object = id(new ManiphestTaskQuery()) 16 ->setViewer($viewer) 17 ->withPHIDs(array($object_phid)) 18 ->requireCapabilities( 19 array( 20 PhabricatorPolicyCapability::CAN_VIEW, 21 PhabricatorPolicyCapability::CAN_EDIT, 22 )) 23 ->executeOne(); 24 if (!$object) { 25 return new Aphront404Response(); 26 } 27 28 $file = id(new PhabricatorFileQuery()) 29 ->setViewer($viewer) 30 ->withPHIDs(array($file_phid)) 31 ->executeOne(); 32 if (!$file) { 33 return new Aphront404Response(); 34 } 35 36 $xactions = array(); 37 38 // Set the new Cover Image. 39 $xactions[] = id(new ManiphestTransaction()) 40 ->setTransactionType(ManiphestTaskCoverImageTransaction::TRANSACTIONTYPE) 41 ->setNewValue($file->getPHID()); 42 43 $editor = id(new ManiphestTransactionEditor()) 44 ->setActor($viewer) 45 ->setContinueOnMissingFields(true) 46 ->setContinueOnNoEffect(true) 47 ->setContentSourceFromRequest($request); 48 49 $editor->applyTransactions($object, $xactions); 50 51 return $this->newCardResponse($board_phid, $object_phid); 52 } 53 54}