@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 101 lines 2.8 kB view raw
1<?php 2 3final class PhortuneExternalOverviewController 4 extends PhortuneExternalController { 5 6 protected function handleExternalRequest(AphrontRequest $request) { 7 $xviewer = $this->getExternalViewer(); 8 $email = $this->getAccountEmail(); 9 $account = $email->getAccount(); 10 11 $crumbs = $this->newExternalCrumbs() 12 ->addTextCrumb(pht('Viewing As "%s"', $email->getAddress())) 13 ->setBorder(true); 14 15 $header = id(new PHUIHeaderView()) 16 ->setHeader(pht('Invoices and Receipts: %s', $account->getName())) 17 ->addActionLink( 18 id(new PHUIButtonView()) 19 ->setTag('a') 20 ->setIcon('fa-times') 21 ->setText(pht('Unsubscribe')) 22 ->setHref($email->getUnsubscribeURI()) 23 ->setWorkflow(true)); 24 25 $external_view = $this->newExternalView(); 26 $invoices_view = $this->newInvoicesView(); 27 $receipts_view = $this->newReceiptsView(); 28 29 $column_view = id(new PHUITwoColumnView()) 30 ->setHeader($header) 31 ->setFooter( 32 array( 33 $external_view, 34 $invoices_view, 35 $receipts_view, 36 )); 37 38 return $this->newPage() 39 ->setCrumbs($crumbs) 40 ->setTitle( 41 array( 42 pht('Invoices and Receipts'), 43 $account->getName(), 44 )) 45 ->appendChild($column_view); 46 } 47 48 private function newInvoicesView() { 49 $xviewer = $this->getExternalViewer(); 50 $email = $this->getAccountEmail(); 51 $account = $email->getAccount(); 52 53 $invoices = id(new PhortuneCartQuery()) 54 ->setViewer($xviewer) 55 ->withAccountPHIDs(array($account->getPHID())) 56 ->needPurchases(true) 57 ->withInvoices(true) 58 ->execute(); 59 60 $header = id(new PHUIHeaderView()) 61 ->setHeader(pht('Invoices')); 62 63 $invoices_table = id(new PhortuneOrderTableView()) 64 ->setViewer($xviewer) 65 ->setAccountEmail($email) 66 ->setCarts($invoices) 67 ->setIsInvoices(true); 68 69 return id(new PHUIObjectBoxView()) 70 ->setHeader($header) 71 ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 72 ->setTable($invoices_table); 73 } 74 75 private function newReceiptsView() { 76 $xviewer = $this->getExternalViewer(); 77 $email = $this->getAccountEmail(); 78 $account = $email->getAccount(); 79 80 $receipts = id(new PhortuneCartQuery()) 81 ->setViewer($xviewer) 82 ->withAccountPHIDs(array($account->getPHID())) 83 ->needPurchases(true) 84 ->withInvoices(false) 85 ->execute(); 86 87 $header = id(new PHUIHeaderView()) 88 ->setHeader(pht('Receipts')); 89 90 $receipts_table = id(new PhortuneOrderTableView()) 91 ->setViewer($xviewer) 92 ->setAccountEmail($email) 93 ->setCarts($receipts); 94 95 return id(new PHUIObjectBoxView()) 96 ->setHeader($header) 97 ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 98 ->setTable($receipts_table); 99 } 100 101}