19 declare(strict_types=1);
51 return $this->
language ?? $this->languageHelper->getCurrentLanguage();
54 abstract public function getId(): string;
56 abstract public function getTitle(): string;
66 'mail_salutation' => [
67 'placeholder' =>
'MAIL_SALUTATION',
68 'label' => $this->
getLanguage()->txt(
'mail_nacc_salutation'),
69 'supportsNestedPlaceholders' =>
true,
72 'placeholder' =>
'FIRST_NAME',
76 'placeholder' =>
'LAST_NAME',
80 'placeholder' =>
'LOGIN',
81 'label' => $this->
getLanguage()->txt(
'mail_nacc_login'),
84 'placeholder' =>
'TITLE',
85 'label' => $this->
getLanguage()->txt(
'mail_nacc_title'),
86 'supportsCondition' =>
true,
88 'firstname_lastname_superior' => [
89 'placeholder' =>
'FIRSTNAME_LASTNAME_SUPERIOR',
90 'label' => $this->
getLanguage()->txt(
'mail_firstname_last_name_superior'),
93 'placeholder' =>
'ILIAS_URL',
94 'label' => $this->
getLanguage()->txt(
'mail_nacc_ilias_url'),
96 'installation_name' => [
97 'placeholder' =>
'INSTALLATION_NAME',
98 'label' => $this->
getLanguage()->txt(
'mail_nacc_installation_name'),
108 $nested_placeholders = [];
110 if (isset($ph[
'supportsNestedPlaceholders']) && $ph[
'supportsNestedPlaceholders']) {
111 $nested_placeholders[] = $ph[
'placeholder'];
115 return $nested_placeholders;
123 return array_merge($placeholders, $specific);
129 string $placeholder_id,
130 array $context_parameters,
135 string $placeholder_id,
136 array $context_parameters,
139 if ($recipient !== null) {
143 $placeholder_id = strtolower($placeholder_id);
146 case (
'mail_salutation' === $placeholder_id && $recipient !== null):
147 $resolved = $this->
getLanguage()->txt(
'mail_salutation_n');
148 switch ($recipient->getGender()) {
150 $resolved = $this->
getLanguage()->txt(
'mail_salutation_f');
154 $resolved = $this->
getLanguage()->txt(
'mail_salutation_m');
158 $resolved = $this->
getLanguage()->txt(
'mail_salutation_n');
163 case (
'first_name' === $placeholder_id && $recipient !== null):
164 $resolved = $recipient->getFirstname();
167 case (
'last_name' === $placeholder_id && $recipient !== null):
168 $resolved = $recipient->getLastname();
171 case (
'login' === $placeholder_id && $recipient !== null):
172 $resolved = $recipient->getLogin();
175 case (
'title' === $placeholder_id && $recipient !== null):
176 $resolved = $recipient->getUTitle();
179 case 'ilias_url' === $placeholder_id:
180 $resolved = $this->envHelper->getHttpPath() .
' ';
183 case 'installation_name' === $placeholder_id:
184 $resolved = $this->envHelper->getClientId();
187 case 'firstname_lastname_superior' === $placeholder_id && $recipient !== null:
188 $ouUsers = $this->orgUnitUserService->getUsers([$recipient->getId()],
true);
189 foreach ($ouUsers as $ouUser) {
190 $superiors = $ouUser->getSuperiors();
192 $superiorUsrIds = array_map(
static function (
ilOrgUnitUser $ouUser):
int {
196 $usrIdByNameMap = $this->userHelper->getUsernameMapForIds($superiorUsrIds);
198 $resolved = implode(
', ', $usrIdByNameMap);
227 $this->
language = $this->languageHelper->getLanguageByIsoCode($isoCode);
228 $this->
language->loadLanguageModule(
'mail');
OrgUnitUserService $orgUnitUserService
initLanguageByIso2Code(string $isoCode)
getSpecificPlaceholders()
resolvePlaceholder(string $placeholder_id, array $context_parameters, ilObjUser $recipient=null)
Class ilMailEnvironmentHelper.
static setLanguage(ilLanguage $a_lng)
ilMailLanguageHelper $languageHelper
initLanguage(ilObjUser $user)
resolveSpecificPlaceholder(string $placeholder_id, array $context_parameters, ilObjUser $recipient=null)
Class ilMailLanguageHelper.
Class ilMailTemplateContext.
__construct(OrgUnitUserService $orgUnitUserService=null, ilMailEnvironmentHelper $envHelper=null, ilMailUserHelper $usernameHelper=null, ilMailLanguageHelper $languageHelper=null)
ilMailUserHelper $userHelper
ilMailEnvironmentHelper $envHelper