This code write out the title and the body of a message depending basically on 3 variables combination.
How could i refactor this nicely?
a factory pattern? how more precisely?
a mapping array ? but how?
- defer the conditions to another function WriteOutMessage($moderation, $moderation_state, $Authorship)?
Try to somehow have the same variable names as the possible combinations values?
switch ($moderation_state) { case 'draft': if ($moderation_state_original == 'draft') { if ($current_user_name != $author_name) { //Envoi à l'auteur $send_to = $author_email; $params['node_title'] = '[DUD] Modifications de ' . $current_user_name . ' pour l\'article ' . $article->label() . ' de ' . $author_name; $params['message'] = $current_user_name . " vient de modifier l'article " . $article->get('title') ->getString() . " sans changer son état. Allez vite voir...\n"; $params['message'] .= "C'est là: " . $base_url . "/node/" . $article->get('nid') ->getString() . "\n"; $params['message'] .= "A Bientôt, \n"; $params['message'] .= "Le Dioude."; break; } else { //pas d'envoi d'e-mails $params['node_title'] = ''; $params['message'] = ''; $send = FALSE; break; } } else { //pas d'envoi d'e-mails $params['node_title'] = ''; $params['message'] = ''; $send = FALSE; break; } break; case 'propose_a_la_relecture': if ($moderation_state_original == 'propose_a_la_relecture') { if ($current_user_name != $author_name) { //Envoi à l'auteur $send_to = $author_email; $params['node_title'] = '[DUD] Modifications de ' . $current_user_name . ' pour l\'article ' . $article->label() . ' de ' . $author_name; $params['message'] = $current_user_name . " vient de modifier l'article " . $article->get('title') ->getString() . " sans changer son état. Allez vite voir...\n"; $params['message'] .= "C'est là: " . $base_url . "/node/" . $article->get('nid') ->getString() . "\n"; $params['message'] .= "A Bientôt, \n"; $params['message'] .= "Le Dioude."; break; } else { //pas d'envoi d'e-mails $params['node_title'] = ''; $params['message'] = ''; $send = FALSE; break; } } else { //TODO replace with dosi list //retrieve all dosi members $send_to = "dd@ue"; $params['node_title'] = '[DUD] Nouvel article proposé à la publication par ' . $author_name . ': ' . $article->label(); $params['message'] = "L'article " . $article->get('title') ->getString(); $params['message'] .= " vient d'être proposé à la publication par " . $author_name . ".\n"; $params['message'] .= "Qu'il en soit remercié pour le temps qu'il contribue ainsi à faire gagner à ses collègues et à tous les AMUsagers.\n"; $params['message'] .= "N'hésitez pas à faire avancer le workflow en assurant une relecture.\n"; $params['message'] .= "Un petit pas pour la DOSI, mais à coup sûr un grand pas pour la qualité du service public français.\n"; $params['message'] .= "C'est là: " . $base_url . "/node/" . $article->get('nid') ->getString() . "\n"; $params['message'] .= "Le Dioude."; break; } case 'relecture_1_ok': if ($moderation_state_original == 'relecture_1_ok') { if ($current_user_name != $author_name) { //Envoi à l'auteur $send_to = $author_email; $params['node_title'] = '[DUD] Modifications de ' . $current_user_name . ' pour l\'article ' . $article->label() . ' de ' . $author_name; $params['message'] = $current_user_name . " vient de modifier l'article " . $article->get('title') ->getString() . " sans changer son état. Allez vite voir...\n"; $params['message'] .= "C'est là: " . $base_url . "/node/" . $article->get('nid') ->getString() . "\n"; $params['message'] .= "A Bientôt, \n"; $params['message'] .= "Le Dioude."; break; } else { //pas d'envoi d'e-mails $params['node_title'] = ''; $params['message'] = ''; $send = FALSE; break; } } else { //TODO replace with dosi list $send_to = "gg@gg.fr"; $params['node_title'] = '[DUD] Relecture 1 validée pour l\'article ' . $article->label() . " de " . $author_name; $params['message'] = "L'article " . $article->get('title') ->getString() . " de " . $author_name . " vient d'être passé dans l'état Relecture 1 ok par le relecteur " . $current_user_name; $params['message'] .= "\nC'est là: " . $base_url . "/node/" . $article->get('nid') ->getString() . "\n"; $params['message'] .= "Merci de poursuivre l'effort en assurant la 2eme relecture, dernière étape avant publication.\n"; $params['message'] .= "Le Dioude."; break; } case 'relecture_2_ok': if ($moderation_state_original == 'relecture_2_ok') { if ($current_user_name != $author_name) { //Envoi à l'auteur $send_to = $author_email; $params['node_title'] = '[DUD] Modifications de ' . $current_user_name . ' pour l\'article ' . $article->label() . ' de ' . $author_name; $params['message'] = $current_user_name . " vient de modifier l'article " . $article->get('title') ->getString() . " sans changer son état. Allez vite voir...\n"; $params['message'] .= "C'est là: " . $base_url . "/node/" . $article->get('nid') ->getString() . "\n"; $params['message'] .= "A Bientôt, \n"; $params['message'] .= "Le Dioude."; break; } else { //pas d'envoi d'e-mails $params['node_title'] = ''; $params['message'] = ''; $send = FALSE; break; } } else { //retrieve all rédacteur en chef $query = \Drupal::entityQuery('user'); $nids = $query->execute(); foreach ($nids as $nid) { $user = \Drupal\user\Entity\User::load($nid); if ($user->hasRole('redacteur_en_chef')) { $emails_redacteur_en_chef[] = $user->getEmail(); } } $send_to = implode(',', $emails_redacteur_en_chef); $params['node_title'] = '[DUD] Relecture 2 ok pour l\'article ' . $article->label() . " de " . $author_name; $params['message'] = "L'article " . $article->get('title') ->getString() . " de " . $author_name . " vient d'être passé dans l'état Relecture 2 ok par le relecteur " . $current_user_name; $params['message'] .= "\nC'est là: " . $base_url . "/node/" . $article->get('nid') ->getString() . "\n"; $params['message'] .= "El Dioudolo."; break; } case 'published': if ($moderation_state_original == 'published') { if ($current_user_name != $author_name) { //retrieve all rédacteur en chef $query = \Drupal::entityQuery('user'); $nids = $query->execute(); foreach ($nids as $nid) { $user = \Drupal\user\Entity\User::load($nid); if ($user->hasRole('redacteur_en_chef')) { $emails_redacteur_en_chef[] = $user->getEmail(); } } $send_to = implode(',', $emails_redacteur_en_chef); $send_to .= ','; $send_to .= $author_email; $params['node_title'] = '[DUD] Modifications de ' . $current_user_name . ' pour l\'article ' . $article->label() . ' de ' . $author_name; $params['message'] = $current_user_name . " vient de modifier l'article " . $article->get('title') ->getString() . " sans changer son état. Allez vite voir...\n"; $params['message'] .= "C'est là: " . $base_url . "/node/" . $article->get('nid') ->getString() . "\n"; $params['message'] .= "A Bientôt, \n"; $params['message'] .= "Le Dioude."; break; } else { //retrieve all rédacteur en chef $query = \Drupal::entityQuery('user'); $nids = $query->execute(); foreach ($nids as $nid) { $user = \Drupal\user\Entity\User::load($nid); if ($user->hasRole('redacteur_en_chef')) { $emails_redacteur_en_chef[] = $user->getEmail(); } } $send_to = implode(',', $emails_redacteur_en_chef); $params['node_title'] = '[DUD] Modifications de ' . $current_user_name . ' pour l\'article ' . $article->label() . ' de ' . $author_name; $params['message'] = $current_user_name . " vient de modifier l'article " . $article->get('title') ->getString() . " sans changer son état. Allez vite voir...\n"; $params['message'] .= "C'est là: " . $base_url . "/node/" . $article->get('nid') ->getString() . "\n"; $params['message'] .= "A Bientôt, \n"; $params['message'] .= "Le Dioude."; break; } } else { // $send_to=$article->getOwner()->getEmail(); //TODO replace with dosi list $send_to = "zz@zz"; $params['node_title'] = '[DUD] Nouvel article publié par ' . $author_name . ": " . $article->label(); $params['message'] = "L'article " . $article->get('title') ->getString() . " de" . $author_name . " vient d'être publié.\n"; $params['message'] = "Un grand merci collectif à l'auteur: " . $author_name . ". La DOSI l'aime. Ses colllègues l'aiment. AMU entière l'aime. Gloire à toi " . $author_name . " !!!"; $params['message'] .= "\nPrécipitez-vous: " . $base_url . "/node/" . $article->get('nid') ->getString() . "\n"; $params['message'] .= "Merci à tous pour votre participation. \n"; $params['message'] .= "Le Dioude."; break; } case 'mise_a_jour_necessaire': //TODO replace with dosi list $send_to = "dd@dd.fr"; $params['node_title'] = '[DUD] Mise à jour souhaitée pour: ' . $article->label(); $params['message'] = "L'article " . $article->get('title')->getString(); $params['message'] .= " crée par " . $author_name . " "; $params['message'] .= "nécessite une mise à jour. \nUn cycle de relecture est nécessaire avant sa remise en publication:\n"; $params['message'] .= "C'est là: " . $base_url . "/node/" . $article->get('nid') ->getString() . "\n"; $params['message'] .= "A Bientôt, \n"; $params['message'] .= "Le Dioude."; break; default: //pas d'envoi d'e-mails $params['node_title'] = ''; $params['message'] = ''; $send = FALSE; break; }