public function processRequest() { $request = $this->getRequest(); $user = $request->getUser(); $project = id(new PhabricatorProject())->load($this->id); if (!$project) { return new Aphront404Response(); } $affiliation = id(new PhabricatorProjectAffiliation())->loadOneWhere('projectPHID = %s AND userPHID = %s', $project->getPHID(), $user->getPHID()); if (!$affiliation) { $affiliation = new PhabricatorProjectAffiliation(); $affiliation->setUserPHID($user->getPHID()); $affiliation->setProjectPHID($project->getPHID()); } if ($request->isFormPost()) { $affiliation->setRole($request->getStr('role')); $affiliation->setStatus($request->getStr('status')); if (!strlen($affiliation->getRole())) { if ($affiliation->getID()) { if ($affiliation->getIsOwner()) { $affiliation->setRole('Owner'); $affiliation->save(); } else { $affiliation->delete(); } } } else { $affiliation->save(); } return id(new AphrontRedirectResponse())->setURI('/project/view/' . $project->getID() . '/'); } $status_options = array('' => 'Current', 'former' => 'Former'); $form = new AphrontFormView(); $form->setUser($user)->setAction('/project/affiliation/' . $project->getID() . '/')->appendChild(id(new AphrontFormTextControl())->setLabel('Role')->setName('role')->setValue($affiliation->getRole()))->appendChild(id(new AphrontFormSelectControl())->setLabel('Status')->setName('status')->setOptions($status_options)->setValue($affiliation->getStatus()))->appendChild(id(new AphrontFormSubmitControl())->addCancelButton('/project/view/' . $project->getID() . '/')->setValue('Save')); $panel = new AphrontPanelView(); $panel->setHeader('Edit Project Affiliation'); $panel->setWidth(AphrontPanelView::WIDTH_FORM); $panel->appendChild($form); return $this->buildStandardPageResponse($panel, array('title' => 'Edit Project Affiliation')); }