public function SkipForm::buildForm in Notify 2.0.x
Same name and namespace in other branches
- 8 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 67
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 = Comment::load($row->cid);
$comments[$comment
->get('entity_id')->target_id][$row->cid] = $comment;
$count++;
}
foreach ($res_copub as $row) {
$comment = Comment::load($row->cid);
if (!isset($comments[$row->nid][$row->cid])) {
$comments[$row
->get('entity_id')->target_id][$row->cid] = $comment;
$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'] = [
'#prefix' => '<p>',
'#markup' => $this
->t('The following table shows all messages that are candidates for notification emails:'),
'#suffix' => '</p>',
];
$skpnodes = $config
->get('notify_skip_nodes');
if (NULL == $skpnodes) {
$skpnodes = [];
}
$skpcomts = $config
->get('notify_skip_comments');
if (NULL == $skpcomts) {
$skpcomts = [];
}
$form['settings'] = [
'#type' => 'fieldset',
'#title' => $this
->t('Set skip flags'),
];
$form['settings']['table'] = [
'#tree' => TRUE,
'#type' => 'table',
'#header' => [
$this
->t('NID'),
$this
->t('CID'),
$this
->t('Published'),
$this
->t('Created'),
$this
->t('Updated'),
$this
->t('Title'),
$this
->t('Skip'),
],
];
$ii = 0;
foreach ($nodes as $node) {
$ii++;
$form['settings']['table'][$ii]['nid'] = [
'#markup' => $node
->id(),
];
$form['settings']['table'][$ii]['cid'] = [
'#markup' => '-',
];
$form['settings']['table'][$ii]['published'] = [
'#markup' => $node
->isPublished() ? 'Yes' : 'No',
];
$form['settings']['table'][$ii]['created'] = [
'#markup' => \Drupal::service('date.formatter')
->format($node
->getCreatedTime(), 'short'),
];
$form['settings']['table'][$ii]['updated'] = [
'#markup' => $node
->getChangedTime() != $node
->getCreatedTime() ? \Drupal::service('date.formatter')
->format($node
->getChangedTime(), 'short') : '-',
];
$form['settings']['table'][$ii]['title'] = [
'#markup' => $node
->label(),
];
$flag = in_array($node
->id(), $skpnodes) ? 1 : 0;
$form['settings']['table'][$ii]['dist'] = [
'#type' => 'checkbox',
'#default_value' => $flag,
];
}
foreach ($comments as $thread) {
foreach ($thread as $comment) {
$ii++;
$form['settings']['table'][$ii]['nid'] = [
'#markup' => $comment
->get('entity_id')->target_id,
];
$form['settings']['table'][$ii]['cid'] = [
'#markup' => $comment
->id(),
];
$form['settings']['table'][$ii]['published'] = [
'#markup' => $comment
->isPublished() ? 'Yes' : 'No',
];
$form['settings']['table'][$ii]['created'] = [
'#markup' => \Drupal::service('date.formatter')
->format($comment
->getCreatedTime(), 'short'),
];
$form['settings']['table'][$ii]['updated'] = [
'#markup' => $comment
->getChangedTime() != $comment
->getCreatedTime() ? \Drupal::service('date.formatter')
->format($comment
->getChangedTime(), 'short') : '-',
];
$form['settings']['table'][$ii]['title'] = [
'#markup' => $comment
->label(),
];
$flag = in_array($comment
->id(), $skpcomts) ? 1 : 0;
$form['settings']['table'][$ii]['dist'] = [
'#type' => 'checkbox',
'#default_value' => $flag,
];
}
}
$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);
}