Skip to content

Commit e00a205

Browse files
committed
remove all promoted news other than the latest
1 parent 3646491 commit e00a205

2 files changed

Lines changed: 52 additions & 0 deletions

File tree

oit.install

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -581,3 +581,29 @@ function oit_update_10013() {
581581
$cron_run = json_encode($cron_run);
582582
\Drupal::state()->set('oit_cron_run', $cron_run);
583583
}
584+
585+
/**
586+
* Remove promote from all news.
587+
*/
588+
function oit_update_10014() {
589+
// Entity query to get the most recent node type of 'news' with promote = 1.
590+
$node_storage = \Drupal::entityTypeManager()->getStorage('node');
591+
$query = $node_storage->getQuery();
592+
$query->condition('type', 'news');
593+
$query->condition('promote', 1);
594+
$query->accessCheck(FALSE);
595+
$query->sort('created', 'DESC');
596+
$nids = $query->execute();
597+
598+
$n = 0;
599+
600+
foreach ($nids as $nid) {
601+
if ($n != 0) {
602+
$node = $node_storage->load($nid);
603+
$node->set('promote', 0);
604+
$node->set('field_sympa_send', 0);
605+
$node->save();
606+
}
607+
$n++;
608+
}
609+
}

oit.module

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)