class UsersForm in Notify 8
Same name and namespace in other branches
- 2.0.x src/Form/UsersForm.php \Drupal\notify\Form\UsersForm
- 1.0.x src/Form/UsersForm.php \Drupal\notify\Form\UsersForm
Defines a form that configures forms module settings.
Hierarchy
- class \Drupal\Core\Form\FormBase implements ContainerInjectionInterface, FormInterface uses DependencySerializationTrait, LoggerChannelTrait, MessengerTrait, LinkGeneratorTrait, RedirectDestinationTrait, UrlGeneratorTrait, StringTranslationTrait
- class \Drupal\Core\Form\ConfigFormBase uses ConfigFormBaseTrait
- class \Drupal\notify\Form\UsersForm
- class \Drupal\Core\Form\ConfigFormBase uses ConfigFormBaseTrait
Expanded class hierarchy of UsersForm
1 string reference to 'UsersForm'
File
- src/
Form/ UsersForm.php, line 15
Namespace
Drupal\notify\FormView source
class UsersForm extends ConfigFormBase {
/**
* Drupal\Core\Messenger\MessengerInterface definition.
*
* @var \Drupal\Core\Messenger\MessengerInterface
*/
protected $messenger;
/**
* Class constructor.
*
* @param ConfigFactoryInterface $config_factory
* The config factory.
* @param MessengerInterface $messenger
* The core messenger service.
*/
public function __construct(ConfigFactoryInterface $config_factory, MessengerInterface $messenger) {
parent::__construct($config_factory);
$this->messenger = $messenger;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static($container
->get('config.factory'), $container
->get('messenger'));
}
/**
* {@inheritdoc}
*/
public function getFormId() {
return 'notify_users';
}
/**
* {@inheritdoc}
*/
protected function getEditableConfigNames() {
return [
'notify.settings',
];
}
/**
* {@inheritdoc}
*/
public function buildForm(array $form, FormStateInterface $form_state, Request $request = NULL) {
$config = $this
->config('notify.settings');
$form['#tree'] = TRUE;
$form['info'] = [
'#markup' => '<p>' . $this
->t('The following table shows all users that have notifications enabled:') . '</p>',
];
$form['users'] = [];
// Fetch users with notify enabled.
$q = \Drupal::database()
->select('notify', 'n');
$q
->join('users', 'u', 'n.uid = u.uid');
$q
->join('users_field_data', 'v', 'n.uid = v.uid');
$q
->fields('v', [
'uid',
'name',
'mail',
'langcode',
]);
$q
->fields('n', [
'status',
'node',
'comment',
'attempts',
'teasers',
]);
$q
->condition('n.status', 1);
$q
->condition('v.status', 1);
$q
->orderBy('v.name');
$uresult = $q
->execute();
foreach ($uresult as $user) {
$form['users'][$user->uid] = [];
$form['users'][$user->uid]['name'] = [
'#markup' => $user->name,
];
$form['users'][$user->uid]['mail'] = [
'#markup' => $user->mail,
];
$form['users'][$user->uid]['node'] = [
'#type' => 'checkbox',
'#default_value' => $user->node,
];
$form['users'][$user->uid]['comment'] = [
'#type' => 'checkbox',
'#default_value' => $user->comment,
];
$form['users'][$user->uid]['teasers'] = [
'#type' => 'select',
'#default_value' => $user->teasers,
'#options' => [
$this
->t('Title only'),
$this
->t('Title + Teaser'),
$this
->t('Title + Body'),
$this
->t('Title + Body + Fields'),
],
];
$form['users'][$user->uid]['attempts'] = [
'#markup' => $user->attempts ? intval($user->attempts) : 0,
];
}
$form['info2'] = [
'#markup' => '<p>' . $this
->t('You may check/uncheck the checkboxes and the “How much“-selection to change the users\' subscription. Press “Save settings“ to save the settings.') . '</p>',
];
$form['bulk'] = [
'#title' => $this
->t('Bulk subscribe all users'),
'#type' => 'checkbox',
'#default_value' => FALSE,
'#description' => $this
->t('Subscribe all non-blocked users that do not already subscribe to notifications.'),
];
return parent::buildForm($form, $form_state);
}
/**
* {@inheritdoc}
*/
public function submitForm(array &$form, FormStateInterface $form_state) {
$config = $this
->config('notify.settings');
$values = $form_state
->getValues();
if (isset($values['bulk']) && 1 == $values['bulk']) {
$node = $config
->get('notify_def_node');
$comment = $config
->get('notify_def_comment');
$teasers = $config
->get('notify_def_teasers');
$r = \Drupal::database()
->select('notify', 'n');
$r
->fields('n', [
'uid',
]);
$r
->execute();
$q = \Drupal::database()
->select('users', 'u');
$q
->join('users_field_data', 'v', 'u.uid = v.uid');
$q
->fields('v', [
'uid',
'name',
]);
$q
->condition('u.uid', 0, '>');
$q
->condition('v.status', 1, '=');
$q
->condition('u.uid', $r, 'NOT IN');
$result = $q
->execute();
foreach ($result as $record) {
\Drupal::database()
->insert('notify')
->fields([
'uid' => $record->uid,
'status' => 1,
'node' => $node,
'comment' => $comment,
'teasers' => $teasers,
'attempts' => 0,
])
->execute();
}
}
elseif (!array_key_exists('users', $values)) {
$this->messenger
->addMessage($this
->t('No users have notifications enabled.'), 'warning');
return;
}
if (isset($values['users']) && $values['users']) {
foreach ($values['users'] as $uid => $settings) {
\Drupal::database()
->update('notify')
->fields([
'node' => $settings['node'],
'teasers' => $settings['teasers'],
'comment' => $settings['comment'],
])
->condition('uid', $uid)
->execute();
}
}
$this->messenger
->addMessage($this
->t('Users notify settings saved.'));
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ConfigFormBaseTrait:: |
protected | function | Retrieves a configuration object. | |
DependencySerializationTrait:: |
protected | property | An array of entity type IDs keyed by the property name of their storages. | |
DependencySerializationTrait:: |
protected | property | An array of service IDs keyed by property name used for serialization. | |
DependencySerializationTrait:: |
public | function | 1 | |
DependencySerializationTrait:: |
public | function | 2 | |
FormBase:: |
protected | property | The config factory. | 1 |
FormBase:: |
protected | property | The request stack. | 1 |
FormBase:: |
protected | property | The route match. | |
FormBase:: |
protected | function | Gets the config factory for this form. | 1 |
FormBase:: |
private | function | Returns the service container. | |
FormBase:: |
protected | function | Gets the current user. | |
FormBase:: |
protected | function | Gets the request object. | |
FormBase:: |
protected | function | Gets the route match. | |
FormBase:: |
protected | function | Gets the logger for a specific channel. | |
FormBase:: |
protected | function |
Returns a redirect response object for the specified route. Overrides UrlGeneratorTrait:: |
|
FormBase:: |
public | function | Resets the configuration factory. | |
FormBase:: |
public | function | Sets the config factory for this form. | |
FormBase:: |
public | function | Sets the request stack object to use. | |
FormBase:: |
public | function |
Form validation handler. Overrides FormInterface:: |
62 |
LinkGeneratorTrait:: |
protected | property | The link generator. | 1 |
LinkGeneratorTrait:: |
protected | function | Returns the link generator. | |
LinkGeneratorTrait:: |
protected | function | Renders a link to a route given a route name and its parameters. | |
LinkGeneratorTrait:: |
public | function | Sets the link generator service. | |
LoggerChannelTrait:: |
protected | property | The logger channel factory service. | |
LoggerChannelTrait:: |
protected | function | Gets the logger for a specific channel. | |
LoggerChannelTrait:: |
public | function | Injects the logger channel factory. | |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
RedirectDestinationTrait:: |
protected | property | The redirect destination service. | 1 |
RedirectDestinationTrait:: |
protected | function | Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url. | |
RedirectDestinationTrait:: |
protected | function | Returns the redirect destination service. | |
RedirectDestinationTrait:: |
public | function | Sets the redirect destination service. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. | |
UrlGeneratorTrait:: |
protected | property | The url generator. | |
UrlGeneratorTrait:: |
protected | function | Returns the URL generator service. | |
UrlGeneratorTrait:: |
public | function | Sets the URL generator service. | |
UrlGeneratorTrait:: |
protected | function | Generates a URL or path for a specific route based on the given parameters. | |
UsersForm:: |
protected | property |
Drupal\Core\Messenger\MessengerInterface definition. Overrides MessengerTrait:: |
|
UsersForm:: |
public | function |
Form constructor. Overrides ConfigFormBase:: |
|
UsersForm:: |
public static | function |
Instantiates a new instance of this class. Overrides ConfigFormBase:: |
|
UsersForm:: |
protected | function |
Gets the configuration names that will be editable. Overrides ConfigFormBaseTrait:: |
|
UsersForm:: |
public | function |
Returns a unique string identifying the form. Overrides FormInterface:: |
|
UsersForm:: |
public | function |
Form submission handler. Overrides ConfigFormBase:: |
|
UsersForm:: |
public | function |
Class constructor. Overrides ConfigFormBase:: |