Skip to content

Commit 842f6e1

Browse files
authored
Merge pull request #55 from itk-dev/develop
Release 2021-09-17
2 parents 11ba041 + e3df298 commit 842f6e1

File tree

5 files changed

+69
-3
lines changed

5 files changed

+69
-3
lines changed

web/profiles/custom/os2loop/modules/os2loop_mail_notifications/os2loop_mail_notifications.module

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
* Hooks for OS2Loop Mail notifications.
66
*/
77

8+
use Drupal\Core\Entity\EntityInterface;
89
use Drupal\Core\Render\BubbleableMetadata;
910

1011
/**
@@ -42,3 +43,12 @@ function os2loop_mail_notifications_tokens($type, $tokens, array $data, array $o
4243
function os2loop_mail_notifications_token_info() {
4344
return Drupal::service('os2loop_mail_notifications.mail_helper')->tokenInfo();
4445
}
46+
47+
/**
48+
* Implements hook_user_insert().
49+
*
50+
* @see \Drupal\os2loop_mail_notifications\Helper\Helper::userInsert()
51+
*/
52+
function os2loop_mail_notifications_user_insert(EntityInterface $entity) {
53+
return Drupal::service('os2loop_mail_notifications.helper')->userInsert($entity);
54+
}

web/profiles/custom/os2loop/modules/os2loop_mail_notifications/os2loop_mail_notifications.services.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ services:
22
os2loop_mail_notifications.helper:
33
class: Drupal\os2loop_mail_notifications\Helper\Helper
44
arguments:
5+
- '@Drupal\os2loop_settings\Settings'
56
- '@state'
67
- '@user.data'
78
- '@entity_type.manager'

web/profiles/custom/os2loop/modules/os2loop_mail_notifications/src/Form/SettingsForm.php

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace Drupal\os2loop_mail_notifications\Form;
44

55
use Drupal\Core\Config\ConfigFactoryInterface;
6+
use Drupal\Core\Entity\EntityFieldManagerInterface;
67
use Drupal\Core\Form\ConfigFormBase;
78
use Drupal\Core\Form\FormStateInterface;
89
use Drupal\Core\StringTranslation\StringTranslationTrait;
@@ -29,12 +30,20 @@ class SettingsForm extends ConfigFormBase {
2930
*/
3031
private $settings;
3132

33+
/**
34+
* The entity field manager.
35+
*
36+
* @var \Drupal\Core\Entity\EntityFieldManagerInterface
37+
*/
38+
private $entityFieldManager;
39+
3240
/**
3341
* Constructor.
3442
*/
35-
public function __construct(ConfigFactoryInterface $config_factory, Settings $settings) {
43+
public function __construct(ConfigFactoryInterface $config_factory, Settings $settings, EntityFieldManagerInterface $entityFieldManager) {
3644
parent::__construct($config_factory);
3745
$this->settings = $settings;
46+
$this->entityFieldManager = $entityFieldManager;
3847
}
3948

4049
/**
@@ -43,7 +52,8 @@ public function __construct(ConfigFactoryInterface $config_factory, Settings $se
4352
public static function create(ContainerInterface $container) {
4453
return new static(
4554
$container->get('config.factory'),
46-
$container->get(Settings::class)
55+
$container->get(Settings::class),
56+
$container->get('entity_field.manager')
4757
);
4858
}
4959

@@ -96,6 +106,21 @@ public function buildForm(array $form, FormStateInterface $form_state) {
96106
'#token_types' => ['user', 'node', 'os2loop_mail_notifications'],
97107
];
98108

109+
$userFields = $this->entityFieldManager->getFieldDefinitions('user', 'user');
110+
$notificationIntervalField = $userFields['os2loop_mail_notifications_intvl'] ?? NULL;
111+
if (NULL !== $notificationIntervalField) {
112+
$options = $notificationIntervalField->getSetting('allowed_values');
113+
114+
$form['default_user_notification_interval'] = [
115+
'#type' => 'select',
116+
'#title' => $this->t('Default user notification interval'),
117+
'#options' => $options,
118+
'#empty_option' => $this->t('- None -'),
119+
'#default_value' => $config->get('default_user_notification_interval'),
120+
'#description' => $this->t('Notification interval to use if user has not set a notification interval.'),
121+
];
122+
}
123+
99124
return parent::buildForm($form, $form_state);
100125
}
101126

@@ -117,6 +142,7 @@ public function submitForm(array &$form, FormStateInterface $form_state) {
117142
$this->configFactory->getEditable(static::SETTINGS_NAME)
118143
->set('template_subject', $form_state->getValue('template_subject'))
119144
->set('template_body', $form_state->getValue('template_body'))
145+
->set('default_user_notification_interval', $form_state->getValue('default_user_notification_interval'))
120146
->save();
121147

122148
drupal_flush_all_caches();

web/profiles/custom/os2loop/modules/os2loop_mail_notifications/src/Helper/Helper.php

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,15 @@
44

55
use Drupal\Core\Database\Connection;
66
use Drupal\Core\Datetime\DrupalDateTime;
7+
use Drupal\Core\Entity\EntityInterface;
78
use Drupal\Core\Entity\EntityTypeManagerInterface;
89
use Drupal\Core\Field\EntityReferenceFieldItemListInterface;
910
use Drupal\Core\Logger\LoggerChannelFactoryInterface;
1011
use Drupal\Core\State\StateInterface;
1112
use Drupal\message\Entity\Message;
1213
use Drupal\node\NodeInterface;
14+
use Drupal\os2loop_mail_notifications\Form\SettingsForm;
15+
use Drupal\os2loop_settings\Settings;
1316
use Drupal\user\Entity\User;
1417
use Drupal\user\UserDataInterface;
1518
use Drupal\user\UserInterface;
@@ -59,6 +62,13 @@ class Helper {
5962
'os2loop_subscription_term',
6063
];
6164

65+
/**
66+
* The module config.
67+
*
68+
* @var \Drupal\Core\Config\ImmutableConfig
69+
*/
70+
private $config;
71+
6272
/**
6373
* The state.
6474
*
@@ -104,7 +114,8 @@ class Helper {
104114
/**
105115
* Helper constructor.
106116
*/
107-
public function __construct(StateInterface $state, UserDataInterface $userData, EntityTypeManagerInterface $entityTypeManager, Connection $database, MailHelper $mailHelper, LoggerChannelFactoryInterface $loggerFactory) {
117+
public function __construct(Settings $settings, StateInterface $state, UserDataInterface $userData, EntityTypeManagerInterface $entityTypeManager, Connection $database, MailHelper $mailHelper, LoggerChannelFactoryInterface $loggerFactory) {
118+
$this->config = $settings->getConfig(SettingsForm::SETTINGS_NAME);
108119
$this->state = $state;
109120
$this->userData = $userData;
110121
$this->entityTypeManager = $entityTypeManager;
@@ -164,6 +175,22 @@ public function sendNotifications(DrupalDateTime $now) {
164175
}
165176
}
166177

178+
/**
179+
* Implements hook_user_insert().
180+
*
181+
* Sets default notification interval on new user if requested.
182+
*/
183+
public function userInsert(EntityInterface $entity) {
184+
if ($entity instanceof UserInterface) {
185+
$default_user_notification_interval = $this->config->get('default_user_notification_interval') ?? '';
186+
if ('' !== $default_user_notification_interval) {
187+
$entity
188+
->set('os2loop_mail_notifications_intvl', $default_user_notification_interval)
189+
->save();
190+
}
191+
}
192+
}
193+
167194
/**
168195
* Map from user id to user's last notification time.
169196
*

web/profiles/custom/os2loop/modules/os2loop_media/src/Helper/Helper.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace Drupal\os2loop_media\Helper;
44

5+
use Drupal\Core\DependencyInjection\DependencySerializationTrait;
56
use Drupal\Core\Form\FormStateInterface;
67
use Drupal\Core\Session\AccountProxyInterface;
78
use Drupal\Core\StringTranslation\StringTranslationTrait;
@@ -13,6 +14,7 @@
1314
* The helper.
1415
*/
1516
class Helper {
17+
use DependencySerializationTrait;
1618
use StringTranslationTrait;
1719
/**
1820
* The current user.

0 commit comments

Comments
 (0)