ShurlyDeactivateForm.php in ShURLy 8
File
src/Form/ShurlyDeactivateForm.php
View source
<?php
namespace Drupal\shurly\Form;
use Drupal\Core\Access\AccessResult;
use Drupal\Core\Session\AccountInterface;
use Drupal\Core\Form\ConfirmFormBase;
use Drupal\Core\Form\FormStateInterface;
class ShurlyDeactivateForm extends ConfirmFormBase {
public function access(AccountInterface $account, $rid) {
if (is_numeric($rid)) {
$row = \Drupal::database()
->query('SELECT uid, source, destination FROM {shurly} WHERE rid = :rid', [
'rid' => $rid,
])
->fetchObject();
return AccessResult::allowedIf($account
->hasPermission('administer short URLs') || $account
->hasPermission('deactivate own URLs') && $row->uid == $account
->id());
}
}
protected $rid;
public function getFormId() {
return 'shurly_deactivate_form';
}
public function getQuestion() {
return t('Are you sure you want to deactivate this short URL?');
}
public function getCancelUrl() {
return new Url('shurly.deactivate');
}
public function getDescription() {
return t('Once this item is deactivated, you will not be able to create another link with the same short URL.');
}
public function getConfirmText() {
return t('Proceed');
}
public function getCancelText() {
return t('Cancel');
}
public function buildForm(array $form, FormStateInterface $form_state, $rid = NULL) {
$this->rid = $rid;
return parent::buildForm($form, $form_state);
}
public function submitForm(array &$form, FormStateInterface $form_state) {
$this
->messenger()
->addStatus($this
->t('Short URL has been deactivated'));
shurly_set_link_active($this->rid, 0);
}
}