Rechercher uniquement dans langue courante
[drupal/clients/restelae/profiles/restelae.git] / docroot / profiles / restelae / modules / custom / restelae_global / restelae_global.module
1 <?php
2
3 /**
4 * @file
5 * Traitements généraux pour ce site.
6 */
7
8 use Drupal\Core\Database\Query\AlterableInterface;
9 use Drupal\Core\Entity\EntityInterface;
10 use Drupal\Core\Form\FormStateInterface;
11 use Drupal\Core\Url;
12 use Drupal\node\Entity\Node;
13
14 /**
15 * Implements hook_query_TAG_alter().
16 */
17 function restelae_global_query_search_node_search_alter(AlterableInterface $query) {
18 $language = \Drupal::languageManager()->getCurrentLanguage()->getId();
19 $query->condition('n.langcode', $language);
20 }
21
22 /**
23 * Implements hook_language_switch_links_alter().
24 */
25 function restelae_global_language_switch_links_alter(array &$links, $type, $path) {
26 if (($node = \Drupal::routeMatch()->getParameter('node')) && $node instanceof Node) {
27 $translated_languages = $node->getTranslationLanguages(TRUE);
28 foreach ($links as $langcode => $link) {
29 if (!isset($translated_languages[$langcode])) {
30 // Ne pas afficher le lien de cette langue s'il n'existe pas en
31 // réalité de traduction pour ce nœud.
32 unset($links[$langcode]);
33 }
34 }
35 }
36
37 // Utiliser les codes ISO pour désigner les langues.
38 foreach ($links as $langcode => &$link) {
39 $link['attributes']['title'] = $link['title'];
40 $link['title'] = strtoupper($langcode);
41 }
42 }
43
44 /**
45 * Implements hook_entity_insert().
46 */
47 function restelae_global_entity_insert(EntityInterface $entity) {
48 // Ne traiter que les commentaires non publiés.
49 if ($entity->getEntityTypeId() != 'comment' || $entity->getStatus()) {
50 return;
51 }
52
53 $mail_manager = \Drupal::service('plugin.manager.mail');
54 $to = \Drupal::config('system.site')->get('mail');
55 $params = array(
56 'site_name' => \Drupal::config('system.site')->get('name'),
57 'user_name' => $entity->getAuthorName(),
58 'comment_title' => $entity->getSubject(),
59 'node_title' => $entity->getCommentedEntity()->label(),
60 'comment_admin_url' => Url::fromRoute('comment.admin_approval', array(), array('absolute' => TRUE))->toString(),
61 );
62 $mail_manager->mail('restelae_global', 'notif_comment', $to, 'fr', $params);
63 }
64
65 /**
66 * Implements hook_mail().
67 */
68 function restelae_global_mail($key, &$message, $params) {
69 switch ($key) {
70 case 'notif_comment':
71 $message['subject'] = t('Nouveau commentaire à modérer sur @site', array(
72 '@site' => $params['site_name'],
73
74 ));
75 $message['body'][] = t("@name vient de commenter @content (@comment-title) sur @site. La liste de tous les commentaires à approuver est à cette adresse : :url", array(
76 '@name' => $params['user_name'],
77 '@content' => $params['node_title'],
78 '@comment-title' => $params['comment_title'],
79 '@site' => $params['site_name'],
80 ':url' => $params['comment_admin_url'],
81 ));
82 break;
83 }
84 }
85
86 /**
87 * Implements hook_form_FORM_ID_alter().
88 */
89 function restelae_global_form_contact_message_principal_form_alter(&$form, FormStateInterface $form_state, $form_id) {
90 // Supprimer le bouton « Preview » sur le formulaire de contact.
91 if (isset($form['actions']['preview'])) {
92 $form['actions']['preview']['#access'] = FALSE;
93 }
94 }