Exemplo n.º 1
0
 protected function loadPage()
 {
     $table = new NuanceRequestor();
     $conn_r = $table->establishConnection('r');
     $data = queryfx_all($conn_r, 'SELECT FROM %T %Q %Q %Q', $table->getTableName(), $this->buildWhereClause($conn_r), $this->buildOrderClause($conn_r), $this->buildLimitClause($conn_r));
     return $table->loadAllFromArray($data);
 }
 public function handleActionRequest(AphrontRequest $request)
 {
     $viewer = $request->getViewer();
     // TODO: As above, this would eventually be driven by custom logic.
     if ($request->isFormPost()) {
         $properties = array('complaint' => (string) $request->getStr('complaint'));
         $content_source = PhabricatorContentSource::newFromRequest($request);
         $requestor = NuanceRequestor::newFromPhabricatorUser($viewer, $content_source);
         $item = $this->newItemFromProperties($requestor, $properties, $content_source);
         $uri = $item->getURI();
         return id(new AphrontRedirectResponse())->setURI($uri);
     }
     $form = id(new AphrontFormView())->setUser($viewer)->appendRemarkupInstructions(pht('IMPORTANT: This is a very rough prototype.'))->appendRemarkupInstructions(pht('Got a complaint? Complain here! We love complaints.'))->appendChild(id(new AphrontFormTextAreaControl())->setName('complaint')->setLabel(pht('Complaint')))->appendChild(id(new AphrontFormSubmitControl())->setValue(pht('Submit Complaint')));
     $box = id(new PHUIObjectBoxView())->setHeaderText(pht('Complaint Form'))->appendChild($form);
     return $box;
 }
 protected function newItemFromProperties(NuanceRequestor $requestor, array $properties, PhabricatorContentSource $content_source)
 {
     // TODO: Should we have a tighter actor/viewer model? Requestors will
     // often have no real user associated with them...
     $actor = PhabricatorUser::getOmnipotentUser();
     $source = $this->requireSourceObject();
     $item = NuanceItem::initializeNewItem();
     $xactions = array();
     $xactions[] = id(new NuanceItemTransaction())->setTransactionType(NuanceItemTransaction::TYPE_SOURCE)->setNewValue($source->getPHID());
     $xactions[] = id(new NuanceItemTransaction())->setTransactionType(NuanceItemTransaction::TYPE_REQUESTOR)->setNewValue($requestor->getPHID());
     foreach ($properties as $key => $property) {
         $xactions[] = id(new NuanceItemTransaction())->setTransactionType(NuanceItemTransaction::TYPE_PROPERTY)->setMetadataValue(NuanceItemTransaction::PROPERTY_KEY, $key)->setNewValue($property);
     }
     $editor = id(new NuanceItemEditor())->setActor($actor)->setActingAsPHID($requestor->getActingAsPHID())->setContentSource($content_source);
     $editor->applyTransactions($item, $xactions);
     return $item;
 }