public function SkipForm::buildForm in Notify 8
Same name and namespace in other branches
- 2.0.x src/Form/SkipForm.php \Drupal\notify\Form\SkipForm::buildForm()
- 1.0.x src/Form/SkipForm.php \Drupal\notify\Form\SkipForm::buildForm()
Form constructor.
Parameters
array $form: An associative array containing the structure of the form.
\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.
Return value
array The form structure.
Overrides ConfigFormBase::buildForm
File
- src/
Form/ SkipForm.php, line 66
Class
- SkipForm
- Defines a form that configures forms module settings.
Namespace
Drupal\notify\FormCode
public function buildForm(array $form, FormStateInterface $form_state, Request $request = NULL) {
$config = $this
->config('notify.settings');
// Fetch list of nodes and comments scheduled for notification
list($res_nodes, $res_comms, $res_nopub, $res_copub, $res_nounp, $res_counp) = _notify_select_content();
// Get the nodes and comments queued.
$count = 0;
$nodes = $comments = [];
// Ordinary nodes
foreach ($res_nodes as $row) {
$nodes[$row->nid] = \Drupal::entityTypeManager()
->getStorage('node')
->load($row->nid);
$count++;
}
// Ordinary comments
if ($res_comms) {
foreach ($res_nopub as $row) {
if (!isset($nodes[$row->nid])) {
$nodes[$row->nid] = \Drupal::entityTypeManager()
->getStorage('node')
->load($row->nid);
$count++;
}
}
foreach ($res_comms as $row) {
$comment = \Drupal\comment\Entity\Comment::load($row->cid);
$comments[$comment
->get('entity_id')->target_id][$row->cid] = $comment;
$count++;
}
foreach ($res_copub as $row) {
if (!isset($comments[$row->nid][$row->cid])) {
$comments[$row
->get('entity_id')->target_id][$row->cid] = \Drupal\comment\Entity\Comment::load($row->cid);
$count++;
}
}
}
// Published nodes in unpublished queue
foreach ($res_nopub as $row) {
if (!isset($nodes[$row->nid])) {
$nodes[$row->nid] = \Drupal::entityTypeManager()
->getStorage('node')
->load($row->nid);
$count++;
}
}
// Unpublished nodes in unpublished queue
foreach ($res_nounp as $row) {
if (!isset($nodes[$row->nid])) {
$nodes[$row->nid] = \Drupal::entityTypeManager()
->getStorage('node')
->load($row->nid);
$count++;
}
}
$form = [];
$form['#tree'] = TRUE;
$form['info'] = [
'#markup' => '<p>' . $this
->t('The following table shows all messages that are candidates for bulk notifications:' . '</p>'),
];
$skpnodes = $config
->get('notify_skip_nodes');
$skpcomts = $config
->get('notify_skip_comments');
$ii = 0;
$entities = [];
foreach ($nodes as $node) {
$ii++;
$entities[$ii] = [];
$entities[$ii]['nid'] = [
'#markup' => $node
->id(),
];
$entities[$ii]['cid'] = [
'#markup' => '-',
];
$entities[$ii]['created'] = [
'#markup' => \Drupal::service('date.formatter')
->format($node
->getCreatedTime(), 'short'),
];
$entities[$ii]['updated'] = [
'#markup' => $node
->getChangedTime() != $node
->getCreatedTime() ? \Drupal::service('date.formatter')
->format($node
->getChangedTime(), 'short') : '-',
];
$entities[$ii]['title'] = [
'#markup' => $node
->label(),
];
$flag = in_array($node
->id(), $skpnodes) ? 1 : 0;
$entities[$ii]['dist'] = [
'#type' => 'checkbox',
'#default_value' => $flag,
];
}
foreach ($comments as $thread) {
foreach ($thread as $comment) {
$ii++;
$entities[$ii] = [];
$entities[$ii]['nid'] = [
'#markup' => $comment
->get('entity_id')->target_id,
];
$entities[$ii]['cid'] = [
'#markup' => $comment
->id(),
];
$entities[$ii]['created'] = [
'#markup' => \Drupal::service('date.formatter')
->format($comment
->getCreatedTime(), 'short'),
];
$entities[$ii]['updated'] = [
'#markup' => $comment
->getChangedTime() != $comment
->getCreatedTime() ? \Drupal::service('date.formatter')
->format($comment
->getChangedTime(), 'short') : '-',
];
$entities[$ii]['title'] = [
'#markup' => $comment
->label(),
];
$flag = in_array($comment
->id(), $skpcomts) ? 1 : 0;
$entities[$ii]['dist'] = [
'#type' => 'checkbox',
'#default_value' => $flag,
];
}
}
$form['entities'] = $entities;
$users = $config
->get('notify_users');
$batch_remain = $users ? count($users) : 0;
if ($batch_remain) {
$form['info2'] = [
'#markup' => '<p>' . $this
->t('Please note that the list above may be out of sync. Saving an altered list of skip flags is disabled as long as notifications are being processed.') . '</p> ',
];
}
else {
$form['info2'] = [
'#markup' => '<p>' . $this
->t('To flag that <em>no</em> notification about a particular message should be sent, check the checkbox in the “Skip“ column. Press “Save settings“ to save the flags.') . '</p> ',
];
}
return parent::buildForm($form, $form_state);
}