humhub/MIGRATE-DEV.md
Marc Farré 657ac8e5db
Enh: Add body classes about the current device and methods to the Dev… (#7349)
* Enh: Add body classes about the current device and methods to the DeviceDetectorHelper class

* CHANGELOG

* PR discussions

* Remove useless @since in methods, as already added for the full class
2024-12-17 10:36:23 +00:00

9.1 KiB

Module Migration Guide

Version 1.17 (Unreleased)

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.
  • 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