@@ -399,6 +399,8 @@ function oit_form_alter(&$form, FormStateInterface $form_state, $form_id) {
399399 $form['#attached']['library'][] = 'webform/webform.element.select2';
400400 $form['#attached']['library'][] = 'oit/oit_node_news_form';
401401 $form['#validate'][] = 'oit_news_types_categories';
402+ // Add submit handler.
403+ $form['actions']['submit']['#submit'][] = 'news_node_form_submit';
402404 break;
403405
404406 case "user_login_form":
@@ -468,6 +470,30 @@ function oit_form_alter(&$form, FormStateInterface $form_state, $form_id) {
468470 }
469471}
470472
473+ function news_node_form_submit(&$form, FormStateInterface $form_state) {
474+ if ($form_state->getValues()['promote']['value']) {
475+ $node = $form_state->getFormObject()->getEntity();
476+ $node_id = $node->id();
477+
478+ $node_storage = \Drupal::entityTypeManager()->getStorage('node');
479+ $query = $node_storage->getQuery();
480+ $query->condition('type', 'news');
481+ $query->condition('promote', 1);
482+ $query->condition('nid', $node_id, '!=');
483+ $query->accessCheck(TRUE);
484+ $query->sort('created', 'DESC');
485+ $nids = $query->execute();
486+
487+ foreach ($nids as $nid) {
488+ $node = $node_storage->load($nid);
489+ $node->set('promote', 0);
490+ $node->set('field_sympa_send', 0);
491+ $node->save();
492+ }
493+
494+ }
495+ }
496+
471497/**
472498 * Service alert dashboard category add handler.
473499 */
0 commit comments