_suspend_errors = $state; } public function isEmptyCodeErrorsSuspended(): bool { return $this->_suspend_errors; } public function getSandboxEnabled() { $sandbox_enabled = SandboxSetting::findOne(['name' => 'sandbox_enabled']); if (isset($sandbox_enabled)) { return (bool)$sandbox_enabled->value; } else { return false; } } public function getAuthByLoginEnabled() { return (bool)$this->getAuthSetting('abitcode_enabled'); } public function getSignupEmailEnabled() { return (bool)$this->getAuthSetting('use_email'); } public function getSignupEmailConfirm(): bool { return (bool)$this->getAuthSetting('confirm_email'); } public function getSignupPasswordConfirm(): bool { return (bool)$this->getAuthSetting('confirm_password'); } public function getMinimalPasswordLength(): int { $minimalPasswordLength = $this->getAuthSetting('minimal_password_length'); return (int)($minimalPasswordLength ?? 6); } public function getPasswordMustContainNumbers(): bool { return (bool)$this->getAuthSetting('password_must_contain_numbers'); } public function getPasswordMustContainCapitalLetters(): bool { return (bool)$this->getAuthSetting('password_must_contain_capital_letters'); } public function getPasswordMustContainSpecialCharacters(): bool { return (bool)$this->getAuthSetting('password_must_contain_special_characters'); } private function getAuthSetting(string $name) { $setting = AuthSetting::findOne(['name' => $name]); if (isset($setting)) { return $setting->value; } else { return null; } } public function getSignupEmailTokenTTL(): int { $confirmEmailTokenTtl = $this->getAuthSetting('confirm_email_token_ttl'); if (!$confirmEmailTokenTtl) { throw new UserException('Не удалось найти настройку "Время действия ссылки и кода для подтверждения email."'); } return (int)$confirmEmailTokenTtl; } public function getAllowRememberMe(): bool { return (bool)$this->getAuthSetting('allow_remember_me'); } public function getIdentityCookieDuration(): int { if (Yii::$app->configurationManager->getAllowRememberMe()) { return intval($this->getAuthSetting('identity_cookie_duration')); } return 0; } public function getAllTextNames() { return TextSetting::find() ->select(['category', 'name', 'description', 'tooltip_description']) ->groupBy(['category', 'name', 'description', 'tooltip_description']) ->asArray() ->all(); } public function getText($text_name, ?ApplicationType $applicationType = null) { $language = Yii::$app->language; $type_index = $applicationType ? $applicationType->id : 0; $cache_key = crc32("{$language}{$type_index}{$text_name}"); if (isset($this->memorizedTexts[$cache_key])) { return $this->memorizedTexts[$cache_key]; } $text = null; try { $text = TextSetting::find() ->andWhere([ 'name' => $text_name, 'language' => $language, 'application_type' => array_unique([0, $type_index]), ]) ->orderBy(['application_type' => SORT_DESC]) ->one(); } catch (Throwable $e) { Yii::error("Не удалось получить текст: {$e->getMessage()}", 'text_settings'); } if (isset($text)) { $this->memorizedTexts[$cache_key] = $text->value; return $text->value; } else { return ''; } } public function getLink($link_name) { $link = LinkSetting::findOne(['name' => $link_name]); if (isset($link) && $link->isActive()) { return $link; } else { return false; } } public function resetCodesCache() { $this->memorizedCodes = []; } public function resetTextCache() { $this->memorizedTexts = []; } public function getCode($code_name) { if (isset($this->memorizedCodes[$code_name])) { return $this->memorizedCodes[$code_name]; } $code = $this->getCodeEntity($code_name); if ( !$this->_suspend_errors && (!$code || EmptyCheck::isEmpty($code->value)) && !in_array($code_name, CodeSettingsManager::GetAllowEmptyCodes()) ) { throw new CodeNotFilledException("Не заполнен код по умолчанию для настройки: \"{$code->description}\". Обратитесь к администратору. Для исправления ошибки необходимо перейти в интерфейсе администратора на страницу \"Настройки личного кабинета поступающего\" -> \"Коды по умолчанию\" и указать корректное соответствие для всех полей."); } $value = null; if (isset($code, $code->value)) { $value = $code->value; } $this->memorizedCodes[$code_name] = $value; return $value; } public function getCodeEntity($code_name): ?CodeSetting { $code = CodeSetting::findOne(['name' => $code_name]); if (isset($code)) { return $code; } else { if ($this->_suspend_errors) { return null; } throw new UserException("Не найден код по умолчанию с наименованием \"{$code_name}\""); } } public function getMasterSystemManagerSetting($settingName) { if (isset($this->memorizedMasterSetting[$settingName])) { return $this->memorizedMasterSetting[$settingName]; } $setting = MasterSystemManagerInterfaceSetting::findOne(['name' => $settingName]); if (isset($setting)) { $value = $setting->value; if ($setting->type === 'bool') { $value = $value === '1'; } $this->memorizedCodes[$settingName] = $value; return $setting->value; } else { throw new UserException("Не найдена настройка \"{$settingName}\" интерфейса модератора 1С"); } } public function getAllowReturnApprovedApplicationToModerating() { return $this->getCode('allow_return_approved_application_to_sent'); } public function getOrCreateDebuggingSoapModel(): DebuggingSoap { return DebuggingSoap::getInstance(); } public function getPortalManagerSetting(string $settingName): string { if (isset($this->memorizedPortalManagerSetting[$settingName])) { return $this->memorizedPortalManagerSetting[$settingName]; } $setting = PortalManagerInterfaceSetting::findOne(['name' => $settingName]); if ($setting) { $this->memorizedPortalManagerSetting[$settingName] = $setting->value; return $setting->value; } else { throw new UserException("Не найдена настройка \"{$settingName}\" интерфейса модератора портала"); } } public function getParentDataSetting(string $settingName) { if (isset($this->memorizedParentDataSetting[$settingName])) { return $this->memorizedParentDataSetting[$settingName]; } $setting = ParentDataSetting::findOne(['name' => $settingName]); if ($settingName === 'hide_passport_data_block') { $is_required = $this->getParentDataSetting('require_parent_passport_data'); if ($is_required) { return false; } } if ($settingName === 'hide_address_data_block') { $is_required = $this->getParentDataSetting('require_parent_address_data'); if ($is_required) { return false; } } if ($setting) { $this->memorizedParentDataSetting[$settingName] = $setting->value; return $setting->value; } else { throw new UserException("Не найдена настройка \"{$settingName}\""); } } public function fullPackageEntrantProfileAvailable(): bool { $version = Yii::$app->dictionaryManager->GetInterfaceVersion('GetEntrantProfilePackage'); if ($version == '0.0.0.0') { return false; } return true; } }