recruiter/recruiter.module
2023-12-14 11:37:49 -06:00

102 lines
3.4 KiB
Plaintext

<?php
use Drupal\Component\Render\PlainTextOutput;
use Drupal\Core\Routing\RouteMatchInterface;
/**
* Implements hook_form_alter()
*/
function recruiter_form_user_admin_settings_alter(&$form, $form_state) {
$mail_config = \Drupal::config('recruiter.mail');
$form['email_resend_invite'] = [
'#type' => 'details',
'#title' => t('Resend invitation'),
'#open' => FALSE,
'#description' => t('Send a reminder to the users invited via the Delegate module.'),
'#group' => 'email',
];
$form['email_resend_invite']['resend_invitation_subject'] = [
'#type' => 'textfield',
'#title' => t('Subject'),
'#default_value' => $mail_config->get('resend_invitation.subject'),
'#maxlength' => 180,
];
$form['email_resend_invite']['resend_invitation_body'] = [
'#type' => 'textarea',
'#title' => t('Body'),
'#default_value' => $mail_config->get('resend_invitation.body'),
'#rows' => 15,
];
$form['#submit'][] = 'recruiter_save_email_resend_invite';
}
/**
* Save the changes made to the recruiter email.
*/
function recruiter_save_email_resend_invite(&$form, $form_state) {
\Drupal::configFactory()->getEditable('recruiter.mail')
->set('resend_invitation.body', $form_state->getValue('resend_invitation_body'))
->set('resend_invitation.subject', $form_state->getValue('resend_invitation_subject'))
->save();
}
/**
* Implements hook_mail().
*/
function recruiter_mail($key, &$message, $params) {
$token_service = \Drupal::token();
$language_manager = \Drupal::languageManager();
$langcode = $message['langcode'];
$variables = ['user' => $params['account']];
$language = \Drupal::languageManager()->getLanguage($params['account']->getPreferredLangcode());
$original_language = $language_manager->getConfigOverrideLanguage();
$language_manager->setConfigOverrideLanguage($language);
$mail_config = \Drupal::config('recruiter.mail');
$token_options = [
'langcode' => $langcode,
'callback' => 'recruiter_mail_tokens',
'clear' => TRUE,
];
$message['subject'] .= PlainTextOutput::renderFromHtml($token_service->replace($mail_config->get($key . '.subject'), $variables, $token_options));
$message['body'][] = $token_service->replace($mail_config->get($key . '.body'), $variables, $token_options);
$language_manager->setConfigOverrideLanguage($original_language);
}
/**
* Replace the tokens with data.
*
* @param array $replacements
* Tokens.
* @param array $data
* Data where the tokens will be replaced.
* @param array $options
* Options.
*/
function recruiter_mail_tokens(&$replacements, $data, $options = []) {
if (isset($data['user'])) {
$replacements['[user:one-time-login-url]'] = user_pass_reset_url($data['user'], $options);
$replacements['[user:cancel-url]'] = user_cancel_url($data['user'], $options);
}
}
function recruiter_help($route_name, RouteMatchInterface $route_match) {
switch ($route_name) {
case 'help.page.recruiter':
$helpText = <<< EOT
<h2>Disciple Delegater</h2>
<p>This custom module allows disciples to be signed up and assigned to the website team. A Site Architect can invite people to become
Coverings of community pages, and coverings can invite disciples to their communities' pages.<p>
<p>The email template can be <a href="/admin/config/people/accounts#edit-email-admin-created" target="_blank">edited here (new user created
by administrator)</a></p>
EOT;
return($helpText);
}
}