@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 recaptime-dev/main 76 lines 2.0 kB view raw
1<?php 2 3final class PhamePostMoveController extends PhamePostController { 4 5 public function handleRequest(AphrontRequest $request) { 6 $viewer = $request->getViewer(); 7 $id = $request->getURIData('id'); 8 9 $post = id(new PhamePostQuery()) 10 ->setViewer($viewer) 11 ->withIDs(array($id)) 12 ->requireCapabilities( 13 array( 14 PhabricatorPolicyCapability::CAN_EDIT, 15 PhabricatorPolicyCapability::CAN_VIEW, 16 )) 17 ->executeOne(); 18 19 if (!$post) { 20 return new Aphront404Response(); 21 } 22 23 $view_uri = $post->getViewURI(); 24 $v_blog = $post->getBlog()->getPHID(); 25 26 if ($request->isFormPost()) { 27 $v_blog = $request->getStr('blogPHID'); 28 29 $xactions = array(); 30 $xactions[] = id(new PhamePostTransaction()) 31 ->setTransactionType(PhamePostBlogTransaction::TRANSACTIONTYPE) 32 ->setNewValue($v_blog); 33 34 $editor = id(new PhamePostEditor()) 35 ->setActor($viewer) 36 ->setContentSourceFromRequest($request) 37 ->setContinueOnMissingFields(true) 38 ->setContinueOnNoEffect(true); 39 40 $editor->applyTransactions($post, $xactions); 41 42 $view_uri = $post->getViewURI(); 43 44 return id(new AphrontRedirectResponse()) 45 ->setURI($view_uri.'?moved=1'); 46 } 47 48 $blogs = id(new PhameBlogQuery()) 49 ->setViewer($viewer) 50 ->requireCapabilities( 51 array( 52 PhabricatorPolicyCapability::CAN_VIEW, 53 PhabricatorPolicyCapability::CAN_EDIT, 54 )) 55 ->execute(); 56 57 $options = mpull($blogs, 'getName', 'getPHID'); 58 asort($options); 59 60 $form = id(new PHUIFormLayoutView()) 61 ->setUser($viewer) 62 ->appendChild( 63 id(new AphrontFormSelectControl()) 64 ->setLabel(pht('Blog')) 65 ->setName('blogPHID') 66 ->setOptions($options) 67 ->setValue($v_blog)); 68 69 return $this->newDialog() 70 ->setTitle(pht('Move Post')) 71 ->appendChild($form) 72 ->addSubmitButton(pht('Move Post')) 73 ->addCancelButton($view_uri); 74 } 75 76}