Back to Humhub

MIGRATE DEV

MIGRATE-DEV.md

1.18.214.0 KB
Original Source

Module Migration Guide

Version 1.18.1

New

  • AltchaCaptchaInput::$showOnFocusElement and YiiCaptchaInput::$showOnFocusElement allowing hiding the Captcha input until a form field is focused
  • HTML classes in views using the user/views/layouts/main.php layout to set the container width (see PR #8054): .container-registration, .container-login and .container-password

Changed

  • humhub\widgets\bootstrap\Button, humhub\widgets\bootstrap\Link, humhub\widgets\bootstrap\Badge, humhub\modules\ui\menu\widgets\DropdownMenu labels are now HTML encoded by default. Set encodeLabel to false if already encoded.

Version 1.18

Updated minimum required PHP version to 8.2.

New

  • \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\YiiCaptchaValidator
  • Yii::$app->captcha component
  • \humhub\assets\DriverJsAsset (driver.js)
  • \humhub\modules\tour\Module::tourConfigFiles (allows customizing the introduction tour)
  • \humhub\modules\tour\Module::driverJsOptions
  • \humhub\widgets\mails\MailHeaderImage widget for displaying a header image in emails
  • humhub\helpers\MailStyleHelper to 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()

Deprecated

  • \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() instead
  • humhub\modules\ui\mail\DefaultMailStyle use humhub\helpers\MailStyleHelper instead

Changed

  • The following Mailer settings keys have been renamed to work with .env:
Old KeyNew Key
mailer.transportTypemailerTransportType
mailer.dsnmailerDsn
mailer.hostnamemailerHostname
mailer.usernamemailerUsername
mailer.passwordmailerPassword
mailer.useSmtpsmailerUseSmtps
mailer.portmailerPort
mailer.encryptionmailerEncryption
mailer.allowSelfSignedCertsmailerAllowSelfSignedCerts
mailer.systemEmailAddressmailerSystemEmailAddress
mailer.systemEmailNamemailerSystemEmailName
mailer.systemEmailReplyTomailerSystemEmailReplyTo
proxy.*proxy*

Removed deprecations

  • Widget class \humhub\widgets\DataSaved, the related code Yii::$app->getSession()->setFlash('data-saved', Yii::t('base', 'Saved')); must be replaced with $this->view->saved(); on controllers

Module tests for Codeception v5

  • 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])

Version 1.17.3

Deprecated

  • \humhub\modules\user\Module::$invitesTimeToLiveInDays use \humhub\modules\admin\Module::$cleanupPendingRegistrationInterval instead

Version 1.17.2

Behaviour change

  • 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\Registration and properties ($enablePasswordForm, $enableMustChangePassword, $enableEmailField) are now private

Version 1.17 (January 2024)

Behaviour change

  • Forms in modal box no longer have focus automatically on the first field. The autofocus attribute 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::$enableManageAllContentPermission option.
  • System admins are allowed, in all cases (even when enableManageAllContentPermission is 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".

New

  • CSS variables: --hh-fixed-header-height and --hh-fixed-footer-height (see #7131): these variables should be added to custom themes in the variables.less file 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::enableRegistrationFormCaptcha which is true by default (can be disabled via file configuration)
  • \humhub\modules\user\Module::$passwordHint (see #5423)
  • New methods in the DeviceDetectorHelper class: isMobile(), isTablet(), getBodyClasses(), isMultiInstanceApp() and appOpenerState()
  • HTML classes about the current device (see list in DeviceDetectorHelper::getBodyClasses())

Deprecated

  • \humhub\modules\ui\menu\MenuEntry::isActiveState() use \humhub\helpers\ControllerHelper::isActivePath() instead
  • \humhub\modules\content\Module::$adminCanViewAllContent and \humhub\modules\content\Module::adminCanEditAllContent use \humhub\modules\admin\Module::$enableManageAllContentPermission instead which enables the "Manage All Content" Group Permission
  • \humhub\modules\user\models\User::canViewAllContent() use \humhub\modules\user\models\User::canManageAllContent() instead

Removed

  • Include captcha in registration form checkbox removed from "Administration" -> "Users" -> "Settings"
  • Removed obsolete property \humhub\modules\content\widgets\richtext\AbstractRichText::$record
  • Removed \humhub\widgets\ShowMorePager widget

Version 1.16 (April 2024)

At least PHP 8.0 is required with this version.

Removed

  • \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()

Behaviour change

  • 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 of Yii::$app->search->update($exampleContent);
  • The method setCellValueByColumnAndRow() has been replaced with setCellValue() and setValueExplicit().
  • When rendering xlsx generated data cells, use the setCellValue() method with the appropriate coordinate obtained using getColumnLetter().
  • Switch Module::$resourcesPath to resources

Deprecations

  • \humhub\components\Module::getIsActivated() use getIsEnabled() instead (note: this also affects the virtual instance property \humhub\modules\friendship\Module::$isActivated which should now read $isEnabled!)
  • \humhub\components\Module::migrate() use getMigrationService()->migrateUp(MigrationService::ACTION_MIGRATE) instead
  • \humhub\libs\BaseSettingsManager::isDatabaseInstalled() use Yii::$app->isDatabaseInstalled() instead
  • \humhub\models\Setting::isInstalled() use Yii::$app->isInstalled() instead
  • \humhub\modules\content\components\ContentAddonActiveRecord::canRead() use canView() instead
  • \humhub\modules\content\components\ContentAddonActiveRecord::canWrite()
  • \humhub\modules\file\models\File::canRead() use canView() instead
  • \humhub\modules\friendship\Module::getIsEnabled() use isFriendshipEnabled() instead (note: \humhub\modules\friendship\Module::getIsEnabled() and the virtual property \humhub\modules\friendship\Module::isEnabled now return the status of the module - which yields always true for core modules.)
  • \humhub\modules\marketplace\Module::isEnabled() use isMarketplaceEnabled() instead
  • \humhub\modules\marketplace\services\ModuleService::activate() use enable() instead

New

  • humhub\modules\stream\actions\GlobalContentStream
  • humhub\modules\stream\models\GlobalContentStreamQuery
  • humhub\modules\stream\models\filters\GlobalContentStreamFilter
  • A new protected function SpreadsheetExport::getColumnLetter() has been introduced to get the column letter based on the column index.

Type restrictions

  • \humhub\commands\MigrateController enforces types on fields, method parameters, & return types
  • \humhub\components\behaviors\PolymorphicRelation enforces 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\Comment on canDelete()
  • \humhub\modules\content\components\ContentAddonActiveRecord on canDelete(), canWrite(), canEdit()
  • \humhub\modules\content\models\Content on canEdit(), canView()
  • \humhub\modules\file\models\File on canRead(), canDelete()

Bugfix with potential side-effect

  • \humhub\modules\ui\form\widgets\BasePicker and \humhub\modules\ui\form\widgets\MultiSelect do now treat and empty array for the field BasePicker::$selection as a valid selection list and will not attempt to get the list from the model in that case.

Version 1.15

Behaviour change

  • \humhub\libs\BaseSettingsManager::deleteAll() no longer uses the $prefix parameter 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 replace get_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 methods Content->archive() and Content->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.
  • $guid properties in contentcontainer, file, space, and user models are now enforced to be valid UUIDs (See UUID::validate()) and unique within the table.

Type restrictions

  • \humhub\libs\BaseSettingsManager and 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 of yii\base\InvalidArgumentException with 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 false to string|null
    • the second parameter $type is now mandatory

Deprecations

New

  • Content::addTags() and Content::addTag(). Use ContentTagService
  • humhub\libs\UUID::is_valid(). Use UUID::validate()

Removed

  • humhub\libs\Markdown
  • humhub\libs\MarkdownPreview
  • humhub\modules\content\widgets\richtext\AbstractRichText::$markdown
  • humhub\modules\content\widgets\richtext\AbstractRichText::$maxLength
  • humhub\modules\content\widgets\richtext\AbstractRichText::$minimal
  • humhub\modules\content\widgets\richtext\PreviewMarkdown
  • humhub\modules\content\widgets\richtext\ProsemirrorRichText::parseOutput
  • humhub\modules\content\widgets\richtext\ProsemirrorRichText::replaceLinkExtension
  • humhub\modules\content\widgets\richtext\ProsemirrorRichText::scanLinkExtension
  • humhub\modules\ui\form\widgets\Markdown
  • humhub\widgets\AjaxButton
  • humhub\widgets\MarkdownEditor
  • humhub\widgets\MarkdownField
  • humhub\widgets\MarkdownFieldModals
  • humhub\widgets\ModalConfirm