Path: blob/master/src/applications/macro/controller/PhabricatorMacroAudioController.php
12241 views
<?php12final class PhabricatorMacroAudioController extends PhabricatorMacroController {34public function handleRequest(AphrontRequest $request) {5$viewer = $request->getViewer();6$id = $request->getURIData('id');78$this->requireApplicationCapability(9PhabricatorMacroManageCapability::CAPABILITY);1011$macro = id(new PhabricatorMacroQuery())12->setViewer($viewer)13->requireCapabilities(14array(15PhabricatorPolicyCapability::CAN_VIEW,16))17->withIDs(array($id))18->executeOne();1920if (!$macro) {21return new Aphront404Response();22}2324$errors = array();25$view_uri = $this->getApplicationURI('/view/'.$macro->getID().'/');2627$e_file = null;28$file = null;2930if ($request->isFormPost()) {31$xactions = array();3233if ($request->getBool('behaviorForm')) {34$xactions[] = id(new PhabricatorMacroTransaction())35->setTransactionType(36PhabricatorMacroAudioBehaviorTransaction::TRANSACTIONTYPE)37->setNewValue($request->getStr('audioBehavior'));38} else {39$file = null;40if ($request->getFileExists('file')) {41$file = PhabricatorFile::newFromPHPUpload(42$_FILES['file'],43array(44'name' => $request->getStr('name'),45'authorPHID' => $viewer->getPHID(),46'isExplicitUpload' => true,47));48}4950if ($file) {51if (!$file->isAudio()) {52$errors[] = pht(53'The file you uploaded is invalid: it is not recognizable as '.54'a valid audio file.');55$e_file = pht('Invalid');56} else {57$xactions[] = id(new PhabricatorMacroTransaction())58->setTransactionType(59PhabricatorMacroAudioTransaction::TRANSACTIONTYPE)60->setNewValue($file->getPHID());61}62} else {63$errors[] = pht(64'To change the audio for a macro, you must upload an audio '.65'file.');66$e_file = pht('Required');67}68}6970if (!$errors) {71id(new PhabricatorMacroEditor())72->setActor($viewer)73->setContinueOnNoEffect(true)74->setContentSourceFromRequest($request)75->applyTransactions($macro, $xactions);7677return id(new AphrontRedirectResponse())->setURI($view_uri);78}79}8081$form = id(new AphrontFormView())82->addHiddenInput('behaviorForm', 1)83->setUser($viewer);8485$options = id(new AphrontFormRadioButtonControl())86->setLabel(pht('Audio Behavior'))87->setName('audioBehavior')88->setValue(89nonempty(90$macro->getAudioBehavior(),91PhabricatorFileImageMacro::AUDIO_BEHAVIOR_NONE));9293$options->addButton(94PhabricatorFileImageMacro::AUDIO_BEHAVIOR_NONE,95pht('Do Not Play'),96pht('Do not play audio.'));9798$options->addButton(99PhabricatorFileImageMacro::AUDIO_BEHAVIOR_ONCE,100pht('Play Once'),101pht('Play audio once, when the viewer looks at the macro.'));102103$options->addButton(104PhabricatorFileImageMacro::AUDIO_BEHAVIOR_LOOP,105pht('Play Continuously'),106pht(107'Play audio continuously, treating the macro as an audio source. '.108'Best for ambient sounds.'));109110$form->appendChild($options);111$form->appendChild(112id(new AphrontFormSubmitControl())113->setValue(pht('Save Audio Behavior'))114->addCancelButton($view_uri));115116$crumbs = $this->buildApplicationCrumbs();117118$title = pht('Edit Audio: %s', $macro->getName());119$crumb = pht('Edit Audio');120121$crumbs->addTextCrumb(pht('Macro "%s"', $macro->getName()), $view_uri);122$crumbs->addTextCrumb($crumb, $request->getRequestURI());123$crumbs->setBorder(true);124125$upload_form = id(new AphrontFormView())126->setEncType('multipart/form-data')127->setUser($viewer)128->appendChild(129id(new AphrontFormFileControl())130->setLabel(pht('Audio File'))131->setName('file'))132->appendChild(133id(new AphrontFormSubmitControl())134->setValue(pht('Upload File')));135136$upload = id(new PHUIObjectBoxView())137->setHeaderText(pht('Upload New Audio'))138->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)139->setForm($upload_form);140141$form_box = id(new PHUIObjectBoxView())142->setHeaderText(pht('Behavior'))143->setFormErrors($errors)144->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)145->setForm($form);146147$header = id(new PHUIHeaderView())148->setHeader($title)149->setHeaderIcon('fa-pencil');150151$view = id(new PHUITwoColumnView())152->setHeader($header)153->setFooter(array(154$form_box,155$upload,156));157158return $this->newPage()159->setTitle($title)160->setCrumbs($crumbs)161->appendChild($view);162}163164}165166167