ApplyForRoleConfirmActionForm.php in Apply for role 8
File
src/Form/ApplyForRoleConfirmActionForm.php
View source
<?php
namespace Drupal\apply_for_role\Form;
use Drupal\Core\Form\ConfirmFormBase;
use Drupal\Core\Form\FormStateInterface;
use Drupal\apply_for_role\application_manager;
use Drupal\Core\Url;
class ApplyForRoleConfirmActionForm extends ConfirmFormBase {
private $application_manager;
private $form_action;
private $application;
private $roles;
private $username;
public function __construct() {
$this->application_manager = new application_manager();
$current_uri = \Drupal::request()
->getRequestUri();
if (strpos($current_uri, '/admin/people/role-applications/approve') !== FALSE) {
$this->form_action = 'approve';
}
elseif (strpos($current_uri, '/admin/people/role-applications/deny') !== FALSE) {
$this->form_action = 'deny';
}
}
public function getFormId() {
return 'apply_for_role_confirm_action_form';
}
public function getConfirmText() {
if ($this->form_action == 'approve') {
return $this
->t('Approve Application');
}
else {
return $this
->t('Deny Application');
}
}
public function getQuestion() {
if ($this->form_action == 'approve') {
return $this
->t('Approve Application');
}
else {
return $this
->t('Deny Application');
}
}
public function getDescription() {
if ($this->form_action == 'approve') {
return $this
->t('By approving this application, the user %username above will receive the role(s) %role.', array(
'%role' => $this->roles,
'%username' => $this->username,
));
}
else {
return $this
->t('By denying this application, the user %username will NOT receive the role(s) %role and their application will be marked as denied.', array(
'%role' => $this->roles,
'%username' => $this->username,
));
}
}
public function getCancelUrl() {
return new Url('apply_for_role.applications_listing');
}
public function buildForm(array $form, FormStateInterface $form_state, $aid = NULL) {
if (!($this->application = $this->application_manager
->get_application($aid))) {
return $this
->redirect('apply_for_role.applications_listing');
}
if ($this->application
->get('status') != 0) {
return $this
->redirect('apply_for_role.applications_listing');
}
$this->roles = $this->application_manager
->rids_to_text($this->application
->get('rids'));
$this->username = $this->application_manager
->display_username_for_application($this->application);
return parent::buildForm($form, $form_state);
}
public function getCancelText() {
return $this
->t('Cancel');
}
public function submitForm(array &$form, FormStateInterface $form_state) {
if ($this->form_action == 'approve') {
$this->application_manager
->approve_application($this->application);
$form_state
->setRedirect('apply_for_role.applications_listing');
}
else {
$this->application_manager
->deny_application($this->application);
$form_state
->setRedirect('apply_for_role.applications_listing');
}
}
}