$_params_variable is no longer available in views of email notification templates (see PR #8148)
AltchaCaptchaInput::$showOnFocusElementandYiiCaptchaInput::$showOnFocusElementallowing hiding the Captcha input until a form field is focused- HTML classes in views using the
user/views/layouts/main.phplayout to set the container width (see PR #8054):.container-registration,.container-loginand.container-password
humhub\widgets\bootstrap\Button,humhub\widgets\bootstrap\Link,humhub\widgets\bootstrap\Badge,humhub\modules\ui\menu\widgets\DropdownMenulabels are now HTML encoded by default. SetencodeLabeltofalseif already encoded.
Updated minimum required PHP version to 8.2.
\humhub\components\captcha\CaptchaInterface\humhub\components\captcha\AltchaCaptcha\humhub\components\captcha\AltchaCaptchaInput\humhub\components\captcha\AltchaCaptchaValidator\humhub\components\captcha\AltchaCaptchaAction\humhub\components\captcha\AltchaCaptchaAsset\humhub\components\captcha\YiiCaptcha\humhub\components\captcha\YiiCaptchaInput\humhub\components\captcha\YiiCaptchaValidatorYii::$app->captchacomponent\humhub\assets\DriverJsAsset(driver.js)\humhub\modules\tour\Module::tourConfigFiles(allows customizing the introduction tour)\humhub\modules\tour\Module::driverJsOptions\humhub\widgets\mails\MailHeaderImagewidget for displaying a header image in emailshumhub\helpers\MailStyleHelperto get Sass variable values in email templates\humhub\components\Theme::CORE_THEME_NAME\humhub\modules\user\models\forms\EVENT_AFTER_SET_FORM\humhub\components\Migration::safeAlterColumn()
\humhub\components\Application::isInstalled()use\humhub\components\Application::hasState()instead\humhub\components\Application::isDatabaseInstalled()use\humhub\components\Application::hasState()instead\humhub\components\Application::setInstalled()use\humhub\components\Application::setState()insteadhumhub\modules\ui\mail\DefaultMailStyleusehumhub\helpers\MailStyleHelperinstead
- The following Mailer settings keys have been renamed to work with
.env:
| Old Key | New Key |
|---|---|
mailer.transportType |
mailerTransportType |
mailer.dsn |
mailerDsn |
mailer.hostname |
mailerHostname |
mailer.username |
mailerUsername |
mailer.password |
mailerPassword |
mailer.useSmtps |
mailerUseSmtps |
mailer.port |
mailerPort |
mailer.encryption |
mailerEncryption |
mailer.allowSelfSignedCerts |
mailerAllowSelfSignedCerts |
mailer.systemEmailAddress |
mailerSystemEmailAddress |
mailer.systemEmailName |
mailerSystemEmailName |
mailer.systemEmailReplyTo |
mailerSystemEmailReplyTo |
proxy.* |
proxy* |
tourmodule:- Library bootstrap-tour replaced Wwith driver.js
- Widget view files rewritten
- Widget class
\humhub\widgets\DataSaved, the related codeYii::$app->getSession()->setFlash('data-saved', Yii::t('base', 'Saved'));must be replaced with$this->view->saved();on controllers
- Update the file
tests/codeception.yml:log: codeception/_output=>output: codeception/_output - Update files
tests/codeception/*.suite.yml:class_name: *Tester=>actor: *Tester $I->waitFor*('Text', null)=>$I->waitFor*('Text', 10), the second param can be only integer for the methods:waitForText()waitForElement()waitForElementVisible()waitForElementNotVisible()waitForElementClickable()
- Functional tests:
$I->amOnPage(['/some/page/url', 'id' => 1])=>$I->amOnRoute('/some/page/url', ['id' => 1])
\humhub\modules\user\Module::$invitesTimeToLiveInDaysuse\humhub\modules\admin\Module::$cleanupPendingRegistrationIntervalinstead
-
Method signature changed -
humhub\modules\user\models\fieldtype\BaseType::getUserValue(User $user, bool $raw = true, bool $encode = true): ?string -
Constructor changed -
humhub\modules\user\models\forms\Registrationand properties ($enablePasswordForm,$enableMustChangePassword,$enableEmailField) are now private
- Forms in modal box no longer have focus automatically on the first field. The
autofocusattribute is now required on the field. More info: #7136 - The new "Manage All Content" Group Permission allows managing all content (view, edit, move, archive, pin, etc.) even if the user is not a super administrator. It is disabled by default. It can be enabled via the configuration file, using the
\humhub\modules\admin\Module::$enableManageAllContentPermissionoption. - System admins are allowed, in all cases (even when
enableManageAllContentPermissionis disabled), to edit and delete content in other Profile streams. - Users allowed to "Manage Users" can no longer move all content: they need to be allowed to "Manage All Content".
- CSS variables:
--hh-fixed-header-heightand--hh-fixed-footer-height(see #7131): these variables should be added to custom themes in thevariables.lessfile to overwrite the fixed header (e.g. the top menu + margins) and footer heights with the ones of the custom theme. \humhub\modules\user\Module::enableRegistrationFormCaptchawhich is true by default (can be disabled via file configuration)\humhub\modules\user\Module::$passwordHint(see #5423)- New methods in the
DeviceDetectorHelperclass:isMobile(),isTablet(),getBodyClasses(),isMultiInstanceApp()andappOpenerState() - HTML classes about the current device (see list in
DeviceDetectorHelper::getBodyClasses())
\humhub\modules\ui\menu\MenuEntry::isActiveState()use\humhub\helpers\ControllerHelper::isActivePath()instead\humhub\modules\content\Module::$adminCanViewAllContentand\humhub\modules\content\Module::adminCanEditAllContentuse\humhub\modules\admin\Module::$enableManageAllContentPermissioninstead which enables the "Manage All Content" Group Permission\humhub\modules\user\models\User::canViewAllContent()use\humhub\modules\user\models\User::canManageAllContent()instead
Include captcha in registration formcheckbox removed from "Administration" -> "Users" -> "Settings"- Removed obsolete property
\humhub\modules\content\widgets\richtext\AbstractRichText::$record - Removed
\humhub\widgets\ShowMorePagerwidget
At least PHP 8.0 is required with this version.
\humhub\modules\search\*The existing search module was removed and the related features merged into the 'content', 'user' and 'space' modules.\humhub\modules\user\models\User::getSearchAttributes()and\humhub\modules\space\models\Space::getSearchAttributes()
- New Meta Search API
- Controller route change:
/search/mentioning->/user/mentioning Yii::$app->search()component is not longer available.- Use
(new ContentSearchService($exampleContent->content))->update();instead ofYii::$app->search->update($exampleContent);
- Use
- The method
setCellValueByColumnAndRow()has been replaced withsetCellValue()andsetValueExplicit(). - When rendering xlsx generated data cells, use the
setCellValue()method with the appropriate coordinate obtained usinggetColumnLetter(). - Switch
Module::$resourcesPathtoresources
\humhub\components\Module::getIsActivated()usegetIsEnabled()instead (note: this also affects the virtual instance property\humhub\modules\friendship\Module::$isActivatedwhich should now read$isEnabled!)\humhub\components\Module::migrate()usegetMigrationService()->migrateUp(MigrationService::ACTION_MIGRATE)instead\humhub\libs\BaseSettingsManager::isDatabaseInstalled()useYii::$app->isDatabaseInstalled()instead\humhub\models\Setting::isInstalled()useYii::$app->isInstalled()instead\humhub\modules\content\components\ContentAddonActiveRecord::canRead()usecanView()instead\humhub\modules\content\components\ContentAddonActiveRecord::canWrite()\humhub\modules\file\models\File::canRead()usecanView()instead\humhub\modules\friendship\Module::getIsEnabled()useisFriendshipEnabled()instead (note:\humhub\modules\friendship\Module::getIsEnabled()and the virtual property\humhub\modules\friendship\Module::isEnablednow return the status of the module - which yields always true for core modules.)\humhub\modules\marketplace\Module::isEnabled()useisMarketplaceEnabled()instead\humhub\modules\marketplace\services\ModuleService::activate()useenable()instead
humhub\modules\stream\actions\GlobalContentStreamhumhub\modules\stream\models\GlobalContentStreamQueryhumhub\modules\stream\models\filters\GlobalContentStreamFilter- A new protected function
SpreadsheetExport::getColumnLetter()has been introduced to get the column letter based on the column index.
\humhub\commands\MigrateControllerenforces types on fields, method parameters, & return types\humhub\components\behaviors\PolymorphicRelationenforces types on fields, method parameters, & return types\humhub\components\bootstrap\ModuleAutoLoader::findModules()is enforcing types on method parameters and return value\humhub\components\bootstrap\ModuleAutoLoader::findModulesByPath()is enforcing types on method parameters and return value\humhub\components\bootstrap\ModuleAutoLoader::locateModules()is enforcing return type\humhub\components\ModuleManager::register()is enforcing types on method parameters\humhub\modules\comment\models\CommentoncanDelete()\humhub\modules\content\components\ContentAddonActiveRecordoncanDelete(),canWrite(),canEdit()\humhub\modules\content\models\ContentoncanEdit(),canView()\humhub\modules\file\models\FileoncanRead(),canDelete()
\humhub\modules\ui\form\widgets\BasePickerand\humhub\modules\ui\form\widgets\MultiSelectdo now treat and empty array for the fieldBasePicker::$selectionas a valid selection list and will not attempt to get the list from the model in that case.
\humhub\libs\BaseSettingsManager::deleteAll()no longer uses the$prefixparameter as a full wildcard, but actually as a prefix. Use$prefix = '%pattern%'to get the old behaviour. Or use$parameter = '%suffix'if you want to match against the end of the names.\humhub\libs\BaseSettingsManager::get()now returns a pure int in case the (trimmed) value can be converted- New
PolymorphicRelation::getObjectModel(): should replaceget_class() - Removed deprecated javascript method
setModalLoader() - Javascript CSP Nonces are now required and enabled by default! See: https://docs.humhub.org/docs/develop/javascript/
- Use the verifying
Content->canArchive()before run the methodsContent->archive()andContent->archive(), because it was removed from within there. - Permission to configure modules is now restricted to users allowed to manage settings (was previously restricted to users allowed to manage modules). More info here.
$guidproperties incontentcontainer,file,space, andusermodels are now enforced to be valid UUIDs (SeeUUID::validate()) and unique within the table.
\humhub\libs\BaseSettingsManagerand its child classes on fields, method parameters, & return types\humhub\libs\Helpers::checkClassType()(see #6548)- rather than throwing a
\yii\base\Exception, it now throws some variations ofyii\base\InvalidArgumentExceptionwith different Exception Codes as documented in the function's documentation:\humhub\exceptions\InvalidArgumentClassException\humhub\exceptions\InvalidArgumentTypeException\humhub\exceptions\InvalidArgumentValueException
- the return type has changed from
falsetostring|null - the second parameter
$typeis now mandatory
- rather than throwing a
Content::addTags()andContent::addTag(). UseContentTagServicehumhub\libs\UUID::is_valid(). UseUUID::validate()
humhub\libs\Markdownhumhub\libs\MarkdownPreviewhumhub\modules\content\widgets\richtext\AbstractRichText::$markdownhumhub\modules\content\widgets\richtext\AbstractRichText::$maxLengthhumhub\modules\content\widgets\richtext\AbstractRichText::$minimalhumhub\modules\content\widgets\richtext\PreviewMarkdownhumhub\modules\content\widgets\richtext\ProsemirrorRichText::parseOutputhumhub\modules\content\widgets\richtext\ProsemirrorRichText::replaceLinkExtensionhumhub\modules\content\widgets\richtext\ProsemirrorRichText::scanLinkExtensionhumhub\modules\ui\form\widgets\Markdownhumhub\widgets\AjaxButtonhumhub\widgets\MarkdownEditorhumhub\widgets\MarkdownFieldhumhub\widgets\MarkdownFieldModalshumhub\widgets\ModalConfirm