From 24496039e316b4cb5f3581eba54d8432a8dda321 Mon Sep 17 00:00:00 2001 From: Sebastian Zoglowek Date: Sun, 14 Aug 2022 15:18:20 +0200 Subject: [PATCH 01/11] Remove obsolete backend css --- src/Resources/contao/config/config.php | 12 +++--------- src/Resources/public/style.css | 3 --- 2 files changed, 3 insertions(+), 12 deletions(-) delete mode 100644 src/Resources/public/style.css diff --git a/src/Resources/contao/config/config.php b/src/Resources/contao/config/config.php index b8dc38f..dbc6d9e 100644 --- a/src/Resources/contao/config/config.php +++ b/src/Resources/contao/config/config.php @@ -16,14 +16,13 @@ // Back end modules use Contao\System; -$GLOBALS['BE_MOD']['system']['member_settings'] = array -( +$GLOBALS['BE_MOD']['system']['member_settings'] = [ 'tables' => ['tl_member_settings'], 'hideInNavigation' => true, -); +]; // Front end modules -// ToDo: Change to ArrayUtil::arrayInsert in the future +// ToDo: Change to ArrayUtil::arrayInsert when Contao 4.9 support ends array_insert($GLOBALS['FE_MOD']['user'], -1, [ 'avatar' => 'Oveleon\ContaoMemberExtensionBundle\ModuleAvatar', 'deleteAvatar' => 'Oveleon\ContaoMemberExtensionBundle\ModuleDeleteAvatar', @@ -37,8 +36,3 @@ // Style sheet $request = System::getContainer()->get('request_stack')->getCurrentRequest(); - -if ($request && System::getContainer()->get('contao.routing.scope_matcher')->isBackendRequest($request)) -{ - $GLOBALS['TL_CSS'][] = 'bundles/contaomemberextension/style.css|static'; -} diff --git a/src/Resources/public/style.css b/src/Resources/public/style.css deleted file mode 100644 index 1c11b6b..0000000 --- a/src/Resources/public/style.css +++ /dev/null @@ -1,3 +0,0 @@ -.navigation.member_settings { - display: none !important; -} From 977a3f9a79a886adeeef7d675889fa33c88f08a1 Mon Sep 17 00:00:00 2001 From: Sebastian Zoglowek Date: Sun, 14 Aug 2022 15:19:39 +0200 Subject: [PATCH 02/11] Fix potential PHP8 errors --- src/Resources/contao/classes/Member.php | 44 ++--------- src/Resources/contao/dca/tl_member.php | 21 ++--- .../contao/dca/tl_member_settings.php | 3 + src/Resources/contao/dca/tl_module.php | 40 ++-------- .../contao/modules/ModuleMemberList.php | 78 +++++++++---------- 5 files changed, 69 insertions(+), 117 deletions(-) diff --git a/src/Resources/contao/classes/Member.php b/src/Resources/contao/classes/Member.php index 7748c6e..07d7142 100644 --- a/src/Resources/contao/classes/Member.php +++ b/src/Resources/contao/classes/Member.php @@ -41,18 +41,11 @@ class Member extends Frontend /** * MemberAvatar file name - * - * @var string */ - protected $avatarName = 'memberAvatar'; + protected string $avatarName = 'memberAvatar'; /** * Create avatar for a member | Registration - * - * @param int $userId - * @param array $arrData - * - * @return void */ public function createAvatar(int $userId, array $arrData): void { @@ -62,13 +55,8 @@ public function createAvatar(int $userId, array $arrData): void /** * Update avatar of a member | Login - * - * @param FrontendUser $objUser - * @param array $arrData - * - * @return void */ - public function updateAvatar(FrontendUser $objUser, $arrData): void + public function updateAvatar(FrontendUser $objUser, array $arrData): void { $objMember = MemberModel::findById($objUser->id); $this->processAvatar($objMember, $arrData); @@ -76,11 +64,6 @@ public function updateAvatar(FrontendUser $objUser, $arrData): void /** * Process avatar upload for a member - * - * @param MemberModel $objMember - * @param array $arrData - * - * @return void */ protected function processAvatar(MemberModel $objMember, ?array $arrData): void { @@ -173,6 +156,7 @@ protected function processAvatar(MemberModel $objMember, ?array $arrData): void // Upload valid file type with no width and height -> svg // Don't upload if no homedir is assigned + // ToDo: Create homedir? if (!$objMember->assignDir || !$objMember->homeDir) { // ToDo: add error message for no homedir @@ -186,7 +170,7 @@ protected function processAvatar(MemberModel $objMember, ?array $arrData): void // The upload folder could not be found if ($objUploadFolder === null) { - throw new \Exception("Invalid upload folder ID $intUploadFolder"); + throw new Exception("Invalid upload folder ID $intUploadFolder"); } $strUploadFolder = $objUploadFolder->path; @@ -246,7 +230,7 @@ protected function processAvatar(MemberModel $objMember, ?array $arrData): void // Add a log entry $logger = System::getContainer()->get('monolog.logger.contao'); - $logger->log(LogLevel::INFO, 'File "' . $strUploadFolder . '/' . $file['name'] . '" has been uploaded', array('contao' => new ContaoContext(__METHOD__, TL_FILES))); + $logger->log(LogLevel::INFO, 'File "' . $strUploadFolder . '/' . $file['name'] . '" has been uploaded', ['contao' => new ContaoContext(__METHOD__, TL_FILES)]); } unset($_SESSION['FILES']['avatar']); @@ -254,10 +238,8 @@ protected function processAvatar(MemberModel $objMember, ?array $arrData): void /** * Return the maximum upload file size in bytes - * - * @return string */ - protected function getMaximumUploadSize() + protected function getMaximumUploadSize(): string { if ($this->maxlength > 0) { @@ -269,13 +251,8 @@ protected function getMaximumUploadSize() /** * Parses an avatar to the template - * - * @param MemberModel|null $objMember - * @param $objTemplate - * @param $strImgSize - * @return void */ - public static function parseMemberAvatar(?MemberModel $objMember, &$objTemplate, $strImgSize) + public static function parseMemberAvatar(?MemberModel $objMember, &$objTemplate, $strImgSize): void { $objTemplate->addImage= true; @@ -305,9 +282,6 @@ public static function parseMemberAvatar(?MemberModel $objMember, &$objTemplate, /** * Gets the url for a member avatar - * - * @param MemberModel|null $objMember - * @return string */ public static function getMemberAvatarURL(?MemberModel $objMember): string { @@ -329,9 +303,7 @@ public static function getMemberAvatarURL(?MemberModel $objMember): string } /** - * @param MemberModel $objMember - * - * @return void + * Deletes an avatar */ public static function deleteAvatar(MemberModel $objMember): void { diff --git a/src/Resources/contao/dca/tl_member.php b/src/Resources/contao/dca/tl_member.php index 53501b2..9dc152e 100644 --- a/src/Resources/contao/dca/tl_member.php +++ b/src/Resources/contao/dca/tl_member.php @@ -13,21 +13,22 @@ * @copyright Oveleon */ +use Contao\Config; +use Contao\CoreBundle\DataContainer\PaletteManipulator; + // Extend the default palette -Contao\CoreBundle\DataContainer\PaletteManipulator::create() - ->addField(['avatar'], 'personal_legend', Contao\CoreBundle\DataContainer\PaletteManipulator::POSITION_APPEND) +PaletteManipulator::create() + ->addField(['avatar'], 'personal_legend', PaletteManipulator::POSITION_APPEND) ->applyToPalette('default', 'tl_member') ; // Add global operations -array_insert($GLOBALS['TL_DCA']['tl_member']['list']['global_operations'], 0, [ - 'settings' => [ - 'label' => &$GLOBALS['TL_LANG']['tl_member']['settings'], - 'href' => 'do=member_settings', - 'icon' => 'edit.svg', - 'attributes' => 'onclick="Backend.getScrollOffset()" accesskey="e"' - ] -]); +$GLOBALS['TL_DCA']['tl_member']['list']['global_operations']['settings'] = [ + 'label' => &$GLOBALS['TL_LANG']['tl_member']['settings'], + 'href' => 'do=member_settings', + 'icon' => 'edit.svg', + 'attributes' => 'onclick="Backend.getScrollOffset()" accesskey="e"' +]; // Add fields to tl_user $GLOBALS['TL_DCA']['tl_member']['fields']['avatar'] = [ diff --git a/src/Resources/contao/dca/tl_member_settings.php b/src/Resources/contao/dca/tl_member_settings.php index 3b8bc54..948dc12 100644 --- a/src/Resources/contao/dca/tl_member_settings.php +++ b/src/Resources/contao/dca/tl_member_settings.php @@ -12,6 +12,9 @@ * @author Sebastian Zoglowek * @copyright Oveleon */ + +use Contao\Config; + $GLOBALS['TL_DCA']['tl_member_settings'] = [ // Config diff --git a/src/Resources/contao/dca/tl_module.php b/src/Resources/contao/dca/tl_module.php index e332dac..aba44e0 100644 --- a/src/Resources/contao/dca/tl_module.php +++ b/src/Resources/contao/dca/tl_module.php @@ -20,13 +20,10 @@ System::loadLanguageFile('tl_member_settings'); // Add palettes to tl_module -// ToDo: Change to ArrayUtil::arrayInsert in the future -array_insert($GLOBALS['TL_DCA']['tl_module']['palettes'], 0, [ - 'avatar' => '{title_legend},name,headline,type;{source_legend},imgSize;{template_legend:hide},customTpl;{protected_legend:hide},protected;{expert_legend:hide},guests,cssID', - 'deleteAvatar' => '{title_legend},name,headline,type;{template_legend:hide},customTpl;{protected_legend:hide},protected;{expert_legend:hide},guests,cssID', - 'memberList' => '{title_legend},name,headline,type;{config_legend},ext_order,ext_orderField,numberOfItems,perPage,ext_groups,memberFields,imgSize;{redirect_legend},jumpTo;{template_legend:hide},customTpl,memberListTpl;{protected_legend:hide},protected;{expert_legend:hide},guests,cssID', - 'memberReader' => '{title_legend},name,headline,type;{config_legend},ext_groups,memberFields,imgSize;{template_legend:hide},customTpl,memberReaderTpl;{protected_legend:hide},protected;{expert_legend:hide},guests,cssID' -]); +$GLOBALS['TL_DCA']['tl_module']['palettes']['avatar'] = '{title_legend},name,headline,type;{source_legend},imgSize;{template_legend:hide},customTpl;{protected_legend:hide},protected;{expert_legend:hide},guests,cssID'; +$GLOBALS['TL_DCA']['tl_module']['palettes']['deleteAvatar'] = '{title_legend},name,headline,type;{template_legend:hide},customTpl;{protected_legend:hide},protected;{expert_legend:hide},guests,cssID'; +$GLOBALS['TL_DCA']['tl_module']['palettes']['memberList'] = '{title_legend},name,headline,type;{config_legend},ext_order,ext_orderField,numberOfItems,perPage,ext_groups,memberFields,imgSize;{redirect_legend},jumpTo;{template_legend:hide},customTpl,memberListTpl;{protected_legend:hide},protected;{expert_legend:hide},guests,cssID'; +$GLOBALS['TL_DCA']['tl_module']['palettes']['memberReader'] = '{title_legend},name,headline,type;{config_legend},ext_groups,memberFields,imgSize;{template_legend:hide},customTpl,memberReaderTpl;{protected_legend:hide},protected;{expert_legend:hide},guests,cssID'; $GLOBALS['TL_DCA']['tl_module']['fields']['memberListTpl'] = [ 'exclude' => true, @@ -89,29 +86,10 @@ public function __construct() $this->import('Contao\BackendUser', 'User'); } - /** - * Check permissions to edit the table - * - * @throws Contao\CoreBundle\Exception\AccessDeniedException - */ - public function checkPermission() - { - if ($this->User->isAdmin) - { - return; - } - - if (!$this->User->hasAccess('modules', 'themes')) { - throw new Contao\CoreBundle\Exception\AccessDeniedException('Not enough permissions to access the front end modules module.'); - } - } - /** * Return all fields of table tl_member without account data - * - * @return array */ - public function getMemberProperties() + public function getMemberProperties(): array { $return = []; @@ -131,11 +109,9 @@ public function getMemberProperties() /** * Return all sortable fields of table tl_member - * - * @return array */ - public function getViewableMemberFields() - { + public function getViewableMemberFields(): array + { $return = []; Contao\System::loadLanguageFile('tl_member'); @@ -143,7 +119,7 @@ public function getViewableMemberFields() foreach ($GLOBALS['TL_DCA']['tl_member']['fields'] as $k=>$v) { - if (!empty($v['inputType']) && $v['eval']['feViewable'] === true && $k !== 'avatar') + if (!empty($v['inputType']) && $k !== 'avatar' && isset($v['eval']['feViewable']) && $v['eval']['feViewable'] === true) { $return[$k] = $GLOBALS['TL_DCA']['tl_member']['fields'][$k]['label'][0] . ' ['.$k.']'; } diff --git a/src/Resources/contao/modules/ModuleMemberList.php b/src/Resources/contao/modules/ModuleMemberList.php index 30f70c9..19c28a1 100644 --- a/src/Resources/contao/modules/ModuleMemberList.php +++ b/src/Resources/contao/modules/ModuleMemberList.php @@ -39,47 +39,47 @@ class ModuleMemberList extends ModuleMemberExtension { - /** - * Template - * @var string - */ - protected $strTemplate = 'mod_memberList'; - - /** - * Template - * @var string - */ - protected $strMemberTemplate = 'memberExtension_list_default'; - - /** - * Return a wildcard in the back end - * - * @return string - */ - public function generate() - { + /** + * Template + * @var string + */ + protected $strTemplate = 'mod_memberList'; + + /** + * Template + * @var string + */ + protected $strMemberTemplate = 'memberExtension_list_default'; + + /** + * Return a wildcard in the back end + * + * @return string + */ + public function generate() + { $request = System::getContainer()->get('request_stack')->getCurrentRequest(); if ($request && System::getContainer()->get('contao.routing.scope_matcher')->isBackendRequest($request)) { $objTemplate = new BackendTemplate('be_wildcard'); - $objTemplate->wildcard = '### ' . mb_strtoupper($GLOBALS['TL_LANG']['FMD']['memberList'][0], 'UTF-8') . ' ###'; - $objTemplate->title = $this->headline; - $objTemplate->id = $this->id; - $objTemplate->link = $this->name; - $objTemplate->href = 'contao/main.php?do=themes&table=tl_module&act=edit&id=' . $this->id; - - return $objTemplate->parse(); - } - - return parent::generate(); - } - - /** - * Generate the module - */ - protected function compile() - { + $objTemplate->wildcard = '### ' . mb_strtoupper($GLOBALS['TL_LANG']['FMD']['memberList'][0], 'UTF-8') . ' ###'; + $objTemplate->title = $this->headline; + $objTemplate->id = $this->id; + $objTemplate->link = $this->name; + $objTemplate->href = 'contao/main.php?do=themes&table=tl_module&act=edit&id=' . $this->id; + + return $objTemplate->parse(); + } + + return parent::generate(); + } + + /** + * Generate the module + */ + protected function compile() + { $limit = null; $offset = 0; @@ -162,7 +162,7 @@ protected function compile() } $this->Template->members = $arrMembers; - } + } /** * Checks whether a member is in any given group @@ -195,8 +195,8 @@ private function checkMemberGroups(array $arrGroups, MemberModel $objMember): bo */ private function getMembers() { - $arrOptions = []; $t = MemberModel::getTable(); + $arrOptions = ['order' => '']; if (!!$this->ext_orderField) { @@ -206,7 +206,7 @@ private function getMembers() switch ($this->ext_order) { case 'order_random': - $arrOptions['order'] = "RAND()"; + $arrOptions['order'] .= "RAND()"; break; case 'order_desc': From 8a1c2bfdb955abf5ce812e0ffeda6146f6019cea Mon Sep 17 00:00:00 2001 From: Sebastian Zoglowek Date: Sun, 14 Aug 2022 15:51:15 +0200 Subject: [PATCH 03/11] Change bundle structure --- composer.json | 44 +++++++----------- {src/Resources/config => config}/listener.yml | 0 .../contao => contao}/classes/Member.php | 0 .../contao => contao}/config/config.php | 0 .../contao => contao}/dca/tl_member.php | 0 .../dca/tl_member_settings.php | 0 .../contao => contao}/dca/tl_module.php | 0 .../languages/de/default.xlf | 0 .../languages/de/modules.xlf | 0 .../languages/de/tl_member.xlf | 0 .../languages/de/tl_member_settings.xlf | 0 .../languages/de/tl_module.xlf | 0 .../languages/en/default.xlf | 0 .../languages/en/modules.xlf | 0 .../languages/en/tl_member.xlf | 0 .../languages/en/tl_member_settings.xlf | 0 .../languages/en/tl_module.xlf | 0 .../modules/ModuleAvatar.php | 0 .../modules/ModuleDeleteAvatar.php | 0 .../modules/ModuleMemberExtension.php | 0 .../modules/ModuleMemberList.php | 2 +- .../modules/ModuleMemberReader.php | 0 .../image/memberExtension_image.html5 | 0 .../member/memberExtension_avatar.html5 | 0 .../member/memberExtension_deleteAvatar.html5 | 0 .../member/memberExtension_list_default.html5 | 0 .../member/memberExtension_reader_full.html5 | 0 .../templates/modules/mod_memberList.html5 | 0 .../templates/modules/mod_memberReader.html5 | 0 {src/Resources/public => public}/avatar.png | Bin src/ContaoMemberExtensionBundle.php | 6 ++- .../ContaoMemberExtensionExtension.php | 2 +- 32 files changed, 24 insertions(+), 30 deletions(-) rename {src/Resources/config => config}/listener.yml (100%) rename {src/Resources/contao => contao}/classes/Member.php (100%) rename {src/Resources/contao => contao}/config/config.php (100%) rename {src/Resources/contao => contao}/dca/tl_member.php (100%) rename {src/Resources/contao => contao}/dca/tl_member_settings.php (100%) rename {src/Resources/contao => contao}/dca/tl_module.php (100%) rename {src/Resources/contao => contao}/languages/de/default.xlf (100%) rename {src/Resources/contao => contao}/languages/de/modules.xlf (100%) rename {src/Resources/contao => contao}/languages/de/tl_member.xlf (100%) rename {src/Resources/contao => contao}/languages/de/tl_member_settings.xlf (100%) rename {src/Resources/contao => contao}/languages/de/tl_module.xlf (100%) rename {src/Resources/contao => contao}/languages/en/default.xlf (100%) rename {src/Resources/contao => contao}/languages/en/modules.xlf (100%) rename {src/Resources/contao => contao}/languages/en/tl_member.xlf (100%) rename {src/Resources/contao => contao}/languages/en/tl_member_settings.xlf (100%) rename {src/Resources/contao => contao}/languages/en/tl_module.xlf (100%) rename {src/Resources/contao => contao}/modules/ModuleAvatar.php (100%) rename {src/Resources/contao => contao}/modules/ModuleDeleteAvatar.php (100%) rename {src/Resources/contao => contao}/modules/ModuleMemberExtension.php (100%) rename {src/Resources/contao => contao}/modules/ModuleMemberList.php (99%) rename {src/Resources/contao => contao}/modules/ModuleMemberReader.php (100%) rename {src/Resources/contao => contao}/templates/image/memberExtension_image.html5 (100%) rename {src/Resources/contao => contao}/templates/member/memberExtension_avatar.html5 (100%) rename {src/Resources/contao => contao}/templates/member/memberExtension_deleteAvatar.html5 (100%) rename {src/Resources/contao => contao}/templates/member/memberExtension_list_default.html5 (100%) rename {src/Resources/contao => contao}/templates/member/memberExtension_reader_full.html5 (100%) rename {src/Resources/contao => contao}/templates/modules/mod_memberList.html5 (100%) rename {src/Resources/contao => contao}/templates/modules/mod_memberReader.html5 (100%) rename {src/Resources/public => public}/avatar.png (100%) diff --git a/composer.json b/composer.json index 2c5322f..b1e8ca5 100644 --- a/composer.json +++ b/composer.json @@ -2,13 +2,13 @@ "name": "oveleon/contao-member-extension-bundle", "type": "contao-bundle", "description": "Member feature extension for Contao.", + "license": "MIT", "keywords": ["contao","member-extension-bundle"], "homepage": "https://oveleon.de/", - "license": "MIT", "authors": [ { - "name": "Oveleon", - "homepage": "https://oveleon.de/", + "name": "Sebastian Zoglowek", + "homepage": "https://github.com/zoglo", "role": "Developer" }, { @@ -20,11 +20,6 @@ "name": "Fabian Ekert", "homepage": "https://github.com/eki89", "role": "Developer" - }, - { - "name": "Sebastian Zoglowek", - "homepage": "https://github.com/zoglo", - "role": "Developer" } ], "require": { @@ -38,33 +33,28 @@ "contao/core": "*", "contao/manager-plugin": "<2.0 || >=3.0" }, + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + }, + "contao-manager-plugin": "Oveleon\\ContaoMemberExtensionBundle\\ContaoManager\\Plugin" + }, "autoload": { "psr-4": { "Oveleon\\ContaoMemberExtensionBundle\\": "src/" }, "classmap": [ - "src/Resources/contao/" + "contao/" ], "exclude-from-classmap": [ - "src/Resources/contao/config/", - "src/Resources/contao/dca/", - "src/Resources/contao/languages/", - "src/Resources/contao/templates/" + "contao/config/", + "contao/dca/", + "contao/languages/", + "contao/templates/" ] }, - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - }, - "contao-manager-plugin": "Oveleon\\ContaoMemberExtensionBundle\\ContaoManager\\Plugin" - }, - "config": { - "allow-plugins": { - "contao-components/installer": true, - "contao/manager-plugin": true - } - }, "support": { - "issues": "https://github.com/oveleon/contao-member-extension-bundle/issues" + "issues": "https://github.com/oveleon/contao-member-extension-bundle/issues", + "source": "https://github.com/oveleon/contao-member-extension-bundle" } -} \ No newline at end of file +} diff --git a/src/Resources/config/listener.yml b/config/listener.yml similarity index 100% rename from src/Resources/config/listener.yml rename to config/listener.yml diff --git a/src/Resources/contao/classes/Member.php b/contao/classes/Member.php similarity index 100% rename from src/Resources/contao/classes/Member.php rename to contao/classes/Member.php diff --git a/src/Resources/contao/config/config.php b/contao/config/config.php similarity index 100% rename from src/Resources/contao/config/config.php rename to contao/config/config.php diff --git a/src/Resources/contao/dca/tl_member.php b/contao/dca/tl_member.php similarity index 100% rename from src/Resources/contao/dca/tl_member.php rename to contao/dca/tl_member.php diff --git a/src/Resources/contao/dca/tl_member_settings.php b/contao/dca/tl_member_settings.php similarity index 100% rename from src/Resources/contao/dca/tl_member_settings.php rename to contao/dca/tl_member_settings.php diff --git a/src/Resources/contao/dca/tl_module.php b/contao/dca/tl_module.php similarity index 100% rename from src/Resources/contao/dca/tl_module.php rename to contao/dca/tl_module.php diff --git a/src/Resources/contao/languages/de/default.xlf b/contao/languages/de/default.xlf similarity index 100% rename from src/Resources/contao/languages/de/default.xlf rename to contao/languages/de/default.xlf diff --git a/src/Resources/contao/languages/de/modules.xlf b/contao/languages/de/modules.xlf similarity index 100% rename from src/Resources/contao/languages/de/modules.xlf rename to contao/languages/de/modules.xlf diff --git a/src/Resources/contao/languages/de/tl_member.xlf b/contao/languages/de/tl_member.xlf similarity index 100% rename from src/Resources/contao/languages/de/tl_member.xlf rename to contao/languages/de/tl_member.xlf diff --git a/src/Resources/contao/languages/de/tl_member_settings.xlf b/contao/languages/de/tl_member_settings.xlf similarity index 100% rename from src/Resources/contao/languages/de/tl_member_settings.xlf rename to contao/languages/de/tl_member_settings.xlf diff --git a/src/Resources/contao/languages/de/tl_module.xlf b/contao/languages/de/tl_module.xlf similarity index 100% rename from src/Resources/contao/languages/de/tl_module.xlf rename to contao/languages/de/tl_module.xlf diff --git a/src/Resources/contao/languages/en/default.xlf b/contao/languages/en/default.xlf similarity index 100% rename from src/Resources/contao/languages/en/default.xlf rename to contao/languages/en/default.xlf diff --git a/src/Resources/contao/languages/en/modules.xlf b/contao/languages/en/modules.xlf similarity index 100% rename from src/Resources/contao/languages/en/modules.xlf rename to contao/languages/en/modules.xlf diff --git a/src/Resources/contao/languages/en/tl_member.xlf b/contao/languages/en/tl_member.xlf similarity index 100% rename from src/Resources/contao/languages/en/tl_member.xlf rename to contao/languages/en/tl_member.xlf diff --git a/src/Resources/contao/languages/en/tl_member_settings.xlf b/contao/languages/en/tl_member_settings.xlf similarity index 100% rename from src/Resources/contao/languages/en/tl_member_settings.xlf rename to contao/languages/en/tl_member_settings.xlf diff --git a/src/Resources/contao/languages/en/tl_module.xlf b/contao/languages/en/tl_module.xlf similarity index 100% rename from src/Resources/contao/languages/en/tl_module.xlf rename to contao/languages/en/tl_module.xlf diff --git a/src/Resources/contao/modules/ModuleAvatar.php b/contao/modules/ModuleAvatar.php similarity index 100% rename from src/Resources/contao/modules/ModuleAvatar.php rename to contao/modules/ModuleAvatar.php diff --git a/src/Resources/contao/modules/ModuleDeleteAvatar.php b/contao/modules/ModuleDeleteAvatar.php similarity index 100% rename from src/Resources/contao/modules/ModuleDeleteAvatar.php rename to contao/modules/ModuleDeleteAvatar.php diff --git a/src/Resources/contao/modules/ModuleMemberExtension.php b/contao/modules/ModuleMemberExtension.php similarity index 100% rename from src/Resources/contao/modules/ModuleMemberExtension.php rename to contao/modules/ModuleMemberExtension.php diff --git a/src/Resources/contao/modules/ModuleMemberList.php b/contao/modules/ModuleMemberList.php similarity index 99% rename from src/Resources/contao/modules/ModuleMemberList.php rename to contao/modules/ModuleMemberList.php index 19c28a1..94173b6 100644 --- a/src/Resources/contao/modules/ModuleMemberList.php +++ b/contao/modules/ModuleMemberList.php @@ -206,7 +206,7 @@ private function getMembers() switch ($this->ext_order) { case 'order_random': - $arrOptions['order'] .= "RAND()"; + $arrOptions['order'] = "RAND()"; break; case 'order_desc': diff --git a/src/Resources/contao/modules/ModuleMemberReader.php b/contao/modules/ModuleMemberReader.php similarity index 100% rename from src/Resources/contao/modules/ModuleMemberReader.php rename to contao/modules/ModuleMemberReader.php diff --git a/src/Resources/contao/templates/image/memberExtension_image.html5 b/contao/templates/image/memberExtension_image.html5 similarity index 100% rename from src/Resources/contao/templates/image/memberExtension_image.html5 rename to contao/templates/image/memberExtension_image.html5 diff --git a/src/Resources/contao/templates/member/memberExtension_avatar.html5 b/contao/templates/member/memberExtension_avatar.html5 similarity index 100% rename from src/Resources/contao/templates/member/memberExtension_avatar.html5 rename to contao/templates/member/memberExtension_avatar.html5 diff --git a/src/Resources/contao/templates/member/memberExtension_deleteAvatar.html5 b/contao/templates/member/memberExtension_deleteAvatar.html5 similarity index 100% rename from src/Resources/contao/templates/member/memberExtension_deleteAvatar.html5 rename to contao/templates/member/memberExtension_deleteAvatar.html5 diff --git a/src/Resources/contao/templates/member/memberExtension_list_default.html5 b/contao/templates/member/memberExtension_list_default.html5 similarity index 100% rename from src/Resources/contao/templates/member/memberExtension_list_default.html5 rename to contao/templates/member/memberExtension_list_default.html5 diff --git a/src/Resources/contao/templates/member/memberExtension_reader_full.html5 b/contao/templates/member/memberExtension_reader_full.html5 similarity index 100% rename from src/Resources/contao/templates/member/memberExtension_reader_full.html5 rename to contao/templates/member/memberExtension_reader_full.html5 diff --git a/src/Resources/contao/templates/modules/mod_memberList.html5 b/contao/templates/modules/mod_memberList.html5 similarity index 100% rename from src/Resources/contao/templates/modules/mod_memberList.html5 rename to contao/templates/modules/mod_memberList.html5 diff --git a/src/Resources/contao/templates/modules/mod_memberReader.html5 b/contao/templates/modules/mod_memberReader.html5 similarity index 100% rename from src/Resources/contao/templates/modules/mod_memberReader.html5 rename to contao/templates/modules/mod_memberReader.html5 diff --git a/src/Resources/public/avatar.png b/public/avatar.png similarity index 100% rename from src/Resources/public/avatar.png rename to public/avatar.png diff --git a/src/ContaoMemberExtensionBundle.php b/src/ContaoMemberExtensionBundle.php index ee094f7..2db60e3 100644 --- a/src/ContaoMemberExtensionBundle.php +++ b/src/ContaoMemberExtensionBundle.php @@ -19,4 +19,8 @@ class ContaoMemberExtensionBundle extends Bundle { -} \ No newline at end of file + public function getPath(): string + { + return \dirname(__DIR__); + } +} diff --git a/src/DependencyInjection/ContaoMemberExtensionExtension.php b/src/DependencyInjection/ContaoMemberExtensionExtension.php index 9797779..edc1ffe 100644 --- a/src/DependencyInjection/ContaoMemberExtensionExtension.php +++ b/src/DependencyInjection/ContaoMemberExtensionExtension.php @@ -21,7 +21,7 @@ public function load(array $configs, ContainerBuilder $container): void { $loader = new YamlFileLoader( $container, - new FileLocator(__DIR__.'/../Resources/config') + new FileLocator(__DIR__.'/../../config') ); $loader->load('listener.yml'); From 5956590c60193e5fbe6b8e3200b5e06075051040 Mon Sep 17 00:00:00 2001 From: Sebastian Zoglowek Date: Sun, 14 Aug 2022 16:18:52 +0200 Subject: [PATCH 04/11] Update comments --- contao/classes/Member.php | 8 ++++---- contao/config/config.php | 8 ++++---- contao/dca/tl_member.php | 8 ++++---- contao/dca/tl_member_settings.php | 8 ++++---- contao/dca/tl_module.php | 8 ++++---- contao/modules/ModuleAvatar.php | 8 ++++---- contao/modules/ModuleDeleteAvatar.php | 8 ++++---- contao/modules/ModuleMemberExtension.php | 8 ++++---- contao/modules/ModuleMemberList.php | 8 ++++---- contao/modules/ModuleMemberReader.php | 8 ++++---- src/ContaoManager/Plugin.php | 8 ++++---- src/ContaoMemberExtensionBundle.php | 8 ++++---- .../ContaoMemberExtensionExtension.php | 13 ++++++++----- src/EventListener/InsertTagsListener.php | 8 ++++---- 14 files changed, 60 insertions(+), 57 deletions(-) diff --git a/contao/classes/Member.php b/contao/classes/Member.php index 07d7142..e21d38c 100644 --- a/contao/classes/Member.php +++ b/contao/classes/Member.php @@ -7,10 +7,10 @@ * * @package contao-member-extension-bundle * @license MIT - * @author Daniele Sciannimanica - * @author Fabian Ekert - * @author Sebastian Zoglowek - * @copyright Oveleon + * @author Sebastian Zoglowek + * @author Daniele Sciannimanica + * @author Fabian Ekert + * @copyright Oveleon */ namespace Oveleon\ContaoMemberExtensionBundle; diff --git a/contao/config/config.php b/contao/config/config.php index dbc6d9e..8d981f1 100644 --- a/contao/config/config.php +++ b/contao/config/config.php @@ -7,10 +7,10 @@ * * @package contao-member-extension-bundle * @license MIT - * @author Daniele Sciannimanica - * @author Fabian Ekert - * @author Sebastian Zoglowek - * @copyright Oveleon + * @author Sebastian Zoglowek + * @author Daniele Sciannimanica + * @author Fabian Ekert + * @copyright Oveleon */ // Back end modules diff --git a/contao/dca/tl_member.php b/contao/dca/tl_member.php index 9dc152e..4ff97d6 100644 --- a/contao/dca/tl_member.php +++ b/contao/dca/tl_member.php @@ -7,10 +7,10 @@ * * @package contao-member-extension-bundle * @license MIT - * @author Daniele Sciannimanica - * @author Fabian Ekert - * @author Sebastian Zoglowek - * @copyright Oveleon + * @author Sebastian Zoglowek + * @author Daniele Sciannimanica + * @author Fabian Ekert + * @copyright Oveleon */ use Contao\Config; diff --git a/contao/dca/tl_member_settings.php b/contao/dca/tl_member_settings.php index 948dc12..19b1914 100644 --- a/contao/dca/tl_member_settings.php +++ b/contao/dca/tl_member_settings.php @@ -7,10 +7,10 @@ * * @package contao-member-extension-bundle * @license MIT - * @author Daniele Sciannimanica - * @author Fabian Ekert - * @author Sebastian Zoglowek - * @copyright Oveleon + * @author Sebastian Zoglowek + * @author Daniele Sciannimanica + * @author Fabian Ekert + * @copyright Oveleon */ use Contao\Config; diff --git a/contao/dca/tl_module.php b/contao/dca/tl_module.php index aba44e0..68a9f0e 100644 --- a/contao/dca/tl_module.php +++ b/contao/dca/tl_module.php @@ -7,10 +7,10 @@ * * @package contao-member-extension-bundle * @license MIT - * @author Daniele Sciannimanica - * @author Fabian Ekert - * @author Sebastian Zoglowek - * @copyright Oveleon + * @author Sebastian Zoglowek + * @author Daniele Sciannimanica + * @author Fabian Ekert + * @copyright Oveleon */ use Contao\Backend; diff --git a/contao/modules/ModuleAvatar.php b/contao/modules/ModuleAvatar.php index 07c85d5..128daff 100644 --- a/contao/modules/ModuleAvatar.php +++ b/contao/modules/ModuleAvatar.php @@ -7,10 +7,10 @@ * * @package contao-member-extension-bundle * @license MIT - * @author Daniele Sciannimanica - * @author Fabian Ekert - * @author Sebastian Zoglowek - * @copyright Oveleon + * @author Sebastian Zoglowek + * @author Daniele Sciannimanica + * @author Fabian Ekert + * @copyright Oveleon */ namespace Oveleon\ContaoMemberExtensionBundle; diff --git a/contao/modules/ModuleDeleteAvatar.php b/contao/modules/ModuleDeleteAvatar.php index 890c8ac..5ab1684 100644 --- a/contao/modules/ModuleDeleteAvatar.php +++ b/contao/modules/ModuleDeleteAvatar.php @@ -7,10 +7,10 @@ * * @package contao-member-extension-bundle * @license MIT - * @author Daniele Sciannimanica - * @author Fabian Ekert - * @author Sebastian Zoglowek - * @copyright Oveleon + * @author Sebastian Zoglowek + * @author Daniele Sciannimanica + * @author Fabian Ekert + * @copyright Oveleon */ namespace Oveleon\ContaoMemberExtensionBundle; diff --git a/contao/modules/ModuleMemberExtension.php b/contao/modules/ModuleMemberExtension.php index 571df13..1b4d0e2 100644 --- a/contao/modules/ModuleMemberExtension.php +++ b/contao/modules/ModuleMemberExtension.php @@ -7,10 +7,10 @@ * * @package contao-member-extension-bundle * @license MIT - * @author Daniele Sciannimanica - * @author Fabian Ekert - * @author Sebastian Zoglowek - * @copyright Oveleon + * @author Sebastian Zoglowek + * @author Daniele Sciannimanica + * @author Fabian Ekert + * @copyright Oveleon */ namespace Oveleon\ContaoMemberExtensionBundle; diff --git a/contao/modules/ModuleMemberList.php b/contao/modules/ModuleMemberList.php index 94173b6..62644fd 100644 --- a/contao/modules/ModuleMemberList.php +++ b/contao/modules/ModuleMemberList.php @@ -7,10 +7,10 @@ * * @package contao-member-extension-bundle * @license MIT - * @author Daniele Sciannimanica - * @author Fabian Ekert - * @author Sebastian Zoglowek - * @copyright Oveleon + * @author Sebastian Zoglowek + * @author Daniele Sciannimanica + * @author Fabian Ekert + * @copyright Oveleon */ namespace Oveleon\ContaoMemberExtensionBundle; diff --git a/contao/modules/ModuleMemberReader.php b/contao/modules/ModuleMemberReader.php index e3ff4e3..1b49bbb 100644 --- a/contao/modules/ModuleMemberReader.php +++ b/contao/modules/ModuleMemberReader.php @@ -7,10 +7,10 @@ * * @package contao-member-extension-bundle * @license MIT - * @author Daniele Sciannimanica - * @author Fabian Ekert - * @author Sebastian Zoglowek - * @copyright Oveleon + * @author Sebastian Zoglowek + * @author Daniele Sciannimanica + * @author Fabian Ekert + * @copyright Oveleon */ namespace Oveleon\ContaoMemberExtensionBundle; diff --git a/src/ContaoManager/Plugin.php b/src/ContaoManager/Plugin.php index 555f0a4..1e086f1 100644 --- a/src/ContaoManager/Plugin.php +++ b/src/ContaoManager/Plugin.php @@ -7,10 +7,10 @@ * * @package contao-member-extension-bundle * @license MIT - * @author Daniele Sciannimanica - * @author Fabian Ekert - * @author Sebastian Zoglowek - * @copyright Oveleon + * @author Sebastian Zoglowek + * @author Daniele Sciannimanica + * @author Fabian Ekert + * @copyright Oveleon */ namespace Oveleon\ContaoMemberExtensionBundle\ContaoManager; diff --git a/src/ContaoMemberExtensionBundle.php b/src/ContaoMemberExtensionBundle.php index 2db60e3..8fe49f8 100644 --- a/src/ContaoMemberExtensionBundle.php +++ b/src/ContaoMemberExtensionBundle.php @@ -7,10 +7,10 @@ * * @package contao-member-extension-bundle * @license MIT - * @author Daniele Sciannimanica - * @author Fabian Ekert - * @author Sebastian Zoglowek - * @copyright Oveleon + * @author Sebastian Zoglowek + * @author Daniele Sciannimanica + * @author Fabian Ekert + * @copyright Oveleon */ namespace Oveleon\ContaoMemberExtensionBundle; diff --git a/src/DependencyInjection/ContaoMemberExtensionExtension.php b/src/DependencyInjection/ContaoMemberExtensionExtension.php index edc1ffe..e196aea 100644 --- a/src/DependencyInjection/ContaoMemberExtensionExtension.php +++ b/src/DependencyInjection/ContaoMemberExtensionExtension.php @@ -1,13 +1,16 @@ + * @author Daniele Sciannimanica + * @author Fabian Ekert + * @copyright Oveleon */ - namespace Oveleon\ContaoMemberExtensionBundle\DependencyInjection; use Symfony\Component\Config\FileLocator; diff --git a/src/EventListener/InsertTagsListener.php b/src/EventListener/InsertTagsListener.php index 9646216..550f6ea 100644 --- a/src/EventListener/InsertTagsListener.php +++ b/src/EventListener/InsertTagsListener.php @@ -7,10 +7,10 @@ * * @package contao-member-extension-bundle * @license MIT - * @author Daniele Sciannimanica - * @author Fabian Ekert - * @author Sebastian Zoglowek - * @copyright Oveleon + * @author Sebastian Zoglowek + * @author Daniele Sciannimanica + * @author Fabian Ekert + * @copyright Oveleon */ namespace Oveleon\ContaoMemberExtensionBundle\EventListener; From fbd0893f392e117c3e881b3381ce5d1ccd20f581 Mon Sep 17 00:00:00 2001 From: Sebastian Zoglowek Date: Sun, 14 Aug 2022 16:26:53 +0200 Subject: [PATCH 05/11] CS --- contao/dca/tl_member_settings.php | 21 ++++----- contao/dca/tl_module.php | 2 +- contao/modules/ModuleMemberReader.php | 68 +++++++++++++-------------- 3 files changed, 44 insertions(+), 47 deletions(-) diff --git a/contao/dca/tl_member_settings.php b/contao/dca/tl_member_settings.php index 19b1914..63dfb61 100644 --- a/contao/dca/tl_member_settings.php +++ b/contao/dca/tl_member_settings.php @@ -17,21 +17,18 @@ $GLOBALS['TL_DCA']['tl_member_settings'] = [ - // Config - 'config' => [ - 'dataContainer' => 'File', - 'closed' => true - ], + 'config' => [ + 'dataContainer' => 'File', + 'closed' => true + ], - // Palettes - 'palettes' => ['default' =>'{avatar_legend},defaultAvatar;'], + 'palettes' => ['default' =>'{avatar_legend},defaultAvatar;'], - // Fields - 'fields' => [ - 'defaultAvatar' => [ + 'fields' => [ + 'defaultAvatar' => [ 'label' => &$GLOBALS['TL_LANG']['tl_member_settings']['defaultAvatar'], 'inputType' => 'fileTree', 'eval' => array('fieldType'=>'radio', 'filesOnly'=>true, 'isGallery'=>true, 'extensions'=>Config::get('validImageTypes'), 'tl_class'=>'clr') - ] - ] + ] + ] ]; diff --git a/contao/dca/tl_module.php b/contao/dca/tl_module.php index 68a9f0e..746e535 100644 --- a/contao/dca/tl_module.php +++ b/contao/dca/tl_module.php @@ -111,7 +111,7 @@ public function getMemberProperties(): array * Return all sortable fields of table tl_member */ public function getViewableMemberFields(): array - { + { $return = []; Contao\System::loadLanguageFile('tl_member'); diff --git a/contao/modules/ModuleMemberReader.php b/contao/modules/ModuleMemberReader.php index 1b49bbb..0dfd24f 100644 --- a/contao/modules/ModuleMemberReader.php +++ b/contao/modules/ModuleMemberReader.php @@ -35,38 +35,38 @@ class ModuleMemberReader extends ModuleMemberExtension { - /** - * Template - * @var string - */ - protected $strTemplate = 'mod_memberReader'; - - /** - * Template - * @var string - */ - protected $strMemberTemplate = 'memberExtension_reader_full'; - - /** - * Return a wildcard in the back end - * - * @return string - */ - public function generate() - { + /** + * Template + * @var string + */ + protected $strTemplate = 'mod_memberReader'; + + /** + * Template + * @var string + */ + protected $strMemberTemplate = 'memberExtension_reader_full'; + + /** + * Return a wildcard in the back end + * + * @return string + */ + public function generate() + { $request = System::getContainer()->get('request_stack')->getCurrentRequest(); if ($request && System::getContainer()->get('contao.routing.scope_matcher')->isBackendRequest($request)) { $objTemplate = new BackendTemplate('be_wildcard'); - $objTemplate->wildcard = '### ' . mb_strtoupper($GLOBALS['TL_LANG']['FMD']['memberList'][0], 'UTF-8') . ' ###'; - $objTemplate->title = $this->headline; - $objTemplate->id = $this->id; - $objTemplate->link = $this->name; - $objTemplate->href = 'contao/main.php?do=themes&table=tl_module&act=edit&id=' . $this->id; + $objTemplate->wildcard = '### ' . mb_strtoupper($GLOBALS['TL_LANG']['FMD']['memberList'][0], 'UTF-8') . ' ###'; + $objTemplate->title = $this->headline; + $objTemplate->id = $this->id; + $objTemplate->link = $this->name; + $objTemplate->href = 'contao/main.php?do=themes&table=tl_module&act=edit&id=' . $this->id; - return $objTemplate->parse(); - } + return $objTemplate->parse(); + } // Set the item from the auto_item parameter if (!isset($_GET['items']) && isset($_GET['auto_item']) && Config::get('useAutoItem')) @@ -74,14 +74,14 @@ public function generate() Input::setGet('items', Input::get('auto_item')); } - return parent::generate(); - } + return parent::generate(); + } - /** - * Generate the module - */ - protected function compile() - { + /** + * Generate the module + */ + protected function compile() + { $this->Template->referer = 'javascript:history.go(-1)'; $this->Template->back = $GLOBALS['TL_LANG']['MSC']['goBack']; @@ -109,5 +109,5 @@ protected function compile() $objTemplate->setData($objMember->row()); $this->Template->member = $this->parseMemberTemplate($objMember, $objTemplate, $arrMemberFields, $this->imgSize); - } + } } From fe21be7bcdb19d20b669d087caee562f0b20c1d5 Mon Sep 17 00:00:00 2001 From: Sebastian Zoglowek Date: Mon, 15 Aug 2022 20:18:02 +0200 Subject: [PATCH 06/11] [Bugfix] Consider empty imgSize in avatar insert tag --- README.md | 2 +- contao/classes/Member.php | 10 ++++++++-- src/EventListener/InsertTagsListener.php | 8 ++++++-- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index efec13a..dcf5dc0 100644 --- a/README.md +++ b/README.md @@ -72,7 +72,7 @@ detail pages. ![Admin View: Member overview](https://www.oveleon.de/share/github-assets/contao-member-extension-bundle/default_avatar.jpg) ![Admin View: Member settings](https://www.oveleon.de/share/github-assets/contao-member-extension-bundle/default_avatar_setup.jpg) -2. To display your members, you need to setup a memberlist +2. To display your members, you need to set up a memberlist 1. Create the front end module *memberlist* 2. Choose the member groups and the member fields that should be displayed 3. Optionally you can set up a redirect page to your memberreader diff --git a/contao/classes/Member.php b/contao/classes/Member.php index e21d38c..88ccfd6 100644 --- a/contao/classes/Member.php +++ b/contao/classes/Member.php @@ -252,7 +252,7 @@ protected function getMaximumUploadSize(): string /** * Parses an avatar to the template */ - public static function parseMemberAvatar(?MemberModel $objMember, &$objTemplate, $strImgSize): void + public static function parseMemberAvatar(?MemberModel $objMember, &$objTemplate, ?string $strImgSize): void { $objTemplate->addImage= true; @@ -274,7 +274,13 @@ public static function parseMemberAvatar(?MemberModel $objMember, &$objTemplate, } $objTemplate->addFallbackImage = false; - $arrData = ['singleSRC'=>$objFile->path, 'size'=>$strImgSize]; + + $arrData = ['singleSRC'=>$objFile->path]; + + if (null !== $strImgSize) + { + $arrData['size'] = $strImgSize; + } //ToDo: Change to FigureBuilder in the future $objTemplate->addImageToTemplate($objTemplate, $arrData, null, null, $objFile); diff --git a/src/EventListener/InsertTagsListener.php b/src/EventListener/InsertTagsListener.php index 550f6ea..bd3b56f 100644 --- a/src/EventListener/InsertTagsListener.php +++ b/src/EventListener/InsertTagsListener.php @@ -90,10 +90,14 @@ private function replaceMemberInsertTag(string $insertTag, array $elements, arra { case 'avatar': { - $strImgSize = $this->convertImgSize($elements[3]); + if (isset($elements[3])) + { + $strImgSize = $this->convertImgSize($elements[3]); + } + $objTemplate = new FrontendTemplate('memberExtension_image'); - Member::parseMemberAvatar($objMember, $objTemplate, $strImgSize); + Member::parseMemberAvatar($objMember, $objTemplate, $strImgSize ?? null); return $objTemplate->parse(); } From 83b289a4b14838f3d4f9050529be7630ebb9b078 Mon Sep 17 00:00:00 2001 From: Sebastian Zoglowek Date: Tue, 18 Oct 2022 17:06:18 +0200 Subject: [PATCH 07/11] [Update] Change file locations within bundle translations --- contao/languages/de/default.xlf | 2 +- contao/languages/de/modules.xlf | 2 +- contao/languages/de/tl_member.xlf | 2 +- contao/languages/de/tl_member_settings.xlf | 2 +- contao/languages/de/tl_module.xlf | 2 +- contao/languages/en/default.xlf | 2 +- contao/languages/en/modules.xlf | 2 +- contao/languages/en/tl_member.xlf | 2 +- contao/languages/en/tl_member_settings.xlf | 2 +- contao/languages/en/tl_module.xlf | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/contao/languages/de/default.xlf b/contao/languages/de/default.xlf index 9432de6..5696046 100644 --- a/contao/languages/de/default.xlf +++ b/contao/languages/de/default.xlf @@ -1,5 +1,5 @@ - + No members could be found. diff --git a/contao/languages/de/modules.xlf b/contao/languages/de/modules.xlf index 7cd9527..7cca0e8 100644 --- a/contao/languages/de/modules.xlf +++ b/contao/languages/de/modules.xlf @@ -1,5 +1,5 @@ - + Member settings diff --git a/contao/languages/de/tl_member.xlf b/contao/languages/de/tl_member.xlf index a6d85cc..ac692e8 100644 --- a/contao/languages/de/tl_member.xlf +++ b/contao/languages/de/tl_member.xlf @@ -1,5 +1,5 @@ - + Profile picture diff --git a/contao/languages/de/tl_member_settings.xlf b/contao/languages/de/tl_member_settings.xlf index bc93604..dc4ad24 100644 --- a/contao/languages/de/tl_member_settings.xlf +++ b/contao/languages/de/tl_member_settings.xlf @@ -1,5 +1,5 @@ - + Extended member settings diff --git a/contao/languages/de/tl_module.xlf b/contao/languages/de/tl_module.xlf index d559880..0a7055a 100644 --- a/contao/languages/de/tl_module.xlf +++ b/contao/languages/de/tl_module.xlf @@ -1,5 +1,5 @@ - + Sort order diff --git a/contao/languages/en/default.xlf b/contao/languages/en/default.xlf index 50e0cea..fbf79c3 100644 --- a/contao/languages/en/default.xlf +++ b/contao/languages/en/default.xlf @@ -1,5 +1,5 @@ - + No members could be found. diff --git a/contao/languages/en/modules.xlf b/contao/languages/en/modules.xlf index 0cabfcb..15a6597 100644 --- a/contao/languages/en/modules.xlf +++ b/contao/languages/en/modules.xlf @@ -1,5 +1,5 @@ - + Member settings diff --git a/contao/languages/en/tl_member.xlf b/contao/languages/en/tl_member.xlf index 04928b2..fade756 100644 --- a/contao/languages/en/tl_member.xlf +++ b/contao/languages/en/tl_member.xlf @@ -1,5 +1,5 @@ - + Avatar diff --git a/contao/languages/en/tl_member_settings.xlf b/contao/languages/en/tl_member_settings.xlf index 658671f..e494c46 100644 --- a/contao/languages/en/tl_member_settings.xlf +++ b/contao/languages/en/tl_member_settings.xlf @@ -1,5 +1,5 @@ - + Extended member settings diff --git a/contao/languages/en/tl_module.xlf b/contao/languages/en/tl_module.xlf index 2093a72..5f2238e 100644 --- a/contao/languages/en/tl_module.xlf +++ b/contao/languages/en/tl_module.xlf @@ -1,5 +1,5 @@ - + Sort order From ef749203938893307ac852a51546139b2d33d091 Mon Sep 17 00:00:00 2001 From: Sebastian Zoglowek <55794780+zoglo@users.noreply.github.com> Date: Fri, 13 Jan 2023 19:37:52 +0100 Subject: [PATCH 08/11] CS --- contao/classes/Member.php | 7 +++---- contao/modules/ModuleDeleteAvatar.php | 6 +++--- contao/modules/ModuleMemberExtension.php | 6 +++--- contao/modules/ModuleMemberList.php | 12 ++++++------ src/EventListener/InsertTagsListener.php | 11 ++++++----- 5 files changed, 21 insertions(+), 21 deletions(-) diff --git a/contao/classes/Member.php b/contao/classes/Member.php index 88ccfd6..b5369f6 100644 --- a/contao/classes/Member.php +++ b/contao/classes/Member.php @@ -29,7 +29,6 @@ use Contao\Validator; use Psr\Log\LogLevel; - /** * Class Member * @@ -262,7 +261,7 @@ public static function parseMemberAvatar(?MemberModel $objMember, &$objTemplate, $projectDir = System::getContainer()->getParameter('kernel.project_dir'); // Check if member avatar exists - if(null === $objMember || null === $objMember->avatar || null === ($objFile = FilesModel::findByUuid($objMember->avatar)) || !\is_file($projectDir.'/'.$objFile->path)) + if (null === $objMember || null === $objMember->avatar || null === ($objFile = FilesModel::findByUuid($objMember->avatar)) || !\is_file($projectDir.'/'.$objFile->path)) { $objFile = !!($uuidDefault = Config::get('defaultAvatar')) ? FilesModel::findByUuid($uuidDefault) : null; } @@ -294,7 +293,7 @@ public static function getMemberAvatarURL(?MemberModel $objMember): string // ToDo: Merge logic with parseMemberAvatar $projectDir = System::getContainer()->getParameter('kernel.project_dir'); - if(null === $objMember || null === $objMember->avatar || null === ($objFile = FilesModel::findByUuid($objMember->avatar)) || !\is_file($projectDir.'/'. $objFile->path)) + if (null === $objMember || null === $objMember->avatar || null === ($objFile = FilesModel::findByUuid($objMember->avatar)) || !\is_file($projectDir.'/'. $objFile->path)) { $objFile = !!($uuidDefault = Config::get('defaultAvatar')) ? FilesModel::findByUuid($uuidDefault) : null; } @@ -313,7 +312,7 @@ public static function getMemberAvatarURL(?MemberModel $objMember): string */ public static function deleteAvatar(MemberModel $objMember): void { - if(!!$objMember->avatar) + if (!!$objMember->avatar) { $objFile = FilesModel::findByUuid($objMember->avatar) ?: ''; $projectDir = System::getContainer()->getParameter('kernel.project_dir'); diff --git a/contao/modules/ModuleDeleteAvatar.php b/contao/modules/ModuleDeleteAvatar.php index 5ab1684..155a67c 100644 --- a/contao/modules/ModuleDeleteAvatar.php +++ b/contao/modules/ModuleDeleteAvatar.php @@ -76,7 +76,7 @@ public function generate() $this->import(FrontendUser::class, 'User'); $objMember = MemberModel::findByPk($this->User->id); - if(null === $objMember) + if (null === $objMember) { return ''; } @@ -110,7 +110,7 @@ protected function compile() $objMember = MemberModel::findByPk($this->User->id); // Delete avatar if it exists - if(!!$objMember->avatar) + if (!!$objMember->avatar) { Member::deleteAvatar($objMember); // Unset avatar @@ -124,7 +124,7 @@ protected function compile() } // Confirmation message - if($session->isStarted() && $flashBag->has('mod_avatar_deleted')) { + if ($session->isStarted() && $flashBag->has('mod_avatar_deleted')) { $arrMessages = $flashBag->get('mod_avatar_deleted'); $this->Template->message = $arrMessages[0]; } diff --git a/contao/modules/ModuleMemberExtension.php b/contao/modules/ModuleMemberExtension.php index 1b4d0e2..e707754 100644 --- a/contao/modules/ModuleMemberExtension.php +++ b/contao/modules/ModuleMemberExtension.php @@ -52,7 +52,7 @@ protected function parseMemberTemplate($objMember, $objTemplate, $arrMemberField foreach ($arrMemberFields as $field) { - switch($field) + switch ($field) { /*case 'homeDir': case 'assignDir': @@ -63,7 +63,7 @@ protected function parseMemberTemplate($objMember, $objTemplate, $arrMemberField break; default: - if($varValue = $objMember->{$field}) + if ($varValue = $objMember->{$field}) { if (\is_array(($arrValue = StringUtil::deserialize($varValue)))) { @@ -80,7 +80,7 @@ protected function parseMemberTemplate($objMember, $objTemplate, $arrMemberField $objTemplate->fields = $arrFields; - if($this->jumpTo) + if ($this->jumpTo) { $objTemplate->link = $this->generateMemberUrl($objMember); } diff --git a/contao/modules/ModuleMemberList.php b/contao/modules/ModuleMemberList.php index 62644fd..765c749 100644 --- a/contao/modules/ModuleMemberList.php +++ b/contao/modules/ModuleMemberList.php @@ -85,7 +85,7 @@ protected function compile() $arrGroups = StringUtil::deserialize($this->ext_groups); - if(empty($arrGroups) || !\is_array($arrGroups)) + if (empty($arrGroups) || !\is_array($arrGroups)) { $this->Template->empty = $GLOBALS['TL_LANG']['MSC']['emptyMemberList']; return; @@ -99,13 +99,13 @@ protected function compile() $arrMembers = []; - if(null !== $objMembers) + if (null !== $objMembers) { while($objMembers->next()) { $objMember = $objMembers->current(); - if(!$this->checkMemberGroups($arrGroups, $objMember)) + if (!$this->checkMemberGroups($arrGroups, $objMember)) { continue; } @@ -156,7 +156,7 @@ protected function compile() $this->Template->pagination = $objPagination->generate("\n "); } - if(empty($arrMembers)) + if (empty($arrMembers)) { $this->Template->empty = $GLOBALS['TL_LANG']['MSC']['emptyMemberList']; } @@ -173,14 +173,14 @@ protected function compile() */ private function checkMemberGroups(array $arrGroups, MemberModel $objMember): bool { - if(empty($arrGroups)) + if (empty($arrGroups)) { return false; } $arrMemberGroups = StringUtil::deserialize($objMember->groups); - if(!\is_array($arrMemberGroups) || !\count(array_intersect($arrGroups, $arrMemberGroups))) + if (!\is_array($arrMemberGroups) || !\count(array_intersect($arrGroups, $arrMemberGroups))) { return false; } diff --git a/src/EventListener/InsertTagsListener.php b/src/EventListener/InsertTagsListener.php index bd3b56f..5bc6ccf 100644 --- a/src/EventListener/InsertTagsListener.php +++ b/src/EventListener/InsertTagsListener.php @@ -60,15 +60,16 @@ private function replaceMemberInsertTag(string $insertTag, array $elements, arra $this->framework->initialize(); $tokenChecker = System::getContainer()->get('contao.security.token_checker'); - if($elements[1] !== 'member') + if ($elements[1] !== 'member') { return ''; } - switch ($elements[2]) { + switch ($elements[2]) + { case 'current': - if(!$tokenChecker->hasFrontendUser()) + if (!$tokenChecker->hasFrontendUser()) { return ''; } @@ -76,7 +77,7 @@ private function replaceMemberInsertTag(string $insertTag, array $elements, arra break; default: - if(!\is_numeric($elements[2])) + if (!\is_numeric($elements[2])) { return ''; } @@ -128,7 +129,7 @@ private function convertImgSize($strSize): ?string ResizeConfiguration::MODE_CROP, ]; - if(!!$mode && in_array($mode, $arrValidModes, true)) + if (!!$mode && in_array($mode, $arrValidModes, true)) { $arrSizes[] = $mode; } From 61a9d29c5c34c723207eab4bb1d87fda10676486 Mon Sep 17 00:00:00 2001 From: Sebastian Zoglowek <55794780+zoglo@users.noreply.github.com> Date: Fri, 13 Jan 2023 20:04:03 +0100 Subject: [PATCH 09/11] [Update] Never show members that are disabled by "start" and "stop" date --- contao/modules/ModuleMemberList.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/contao/modules/ModuleMemberList.php b/contao/modules/ModuleMemberList.php index 765c749..30cabde 100644 --- a/contao/modules/ModuleMemberList.php +++ b/contao/modules/ModuleMemberList.php @@ -18,6 +18,7 @@ use Contao\BackendTemplate; use Contao\Config; use Contao\CoreBundle\Exception\PageNotFoundException; +use Contao\Date; use Contao\Environment; use Contao\FrontendTemplate; use Contao\Input; @@ -196,6 +197,9 @@ private function checkMemberGroups(array $arrGroups, MemberModel $objMember): bo private function getMembers() { $t = MemberModel::getTable(); + $time = Date::floorToMinute(); + + $arrColumns = ["$t.disable='' AND ($t.start='' OR $t.start<='$time') AND ($t.stop='' OR $t.stop>'$time') "]; $arrOptions = ['order' => '']; if (!!$this->ext_orderField) @@ -218,6 +222,6 @@ private function getMembers() break; } - return MemberModel::findBy(["$t.disable=''"], null, $arrOptions); + return MemberModel::findBy($arrColumns, null, $arrOptions); } } From e39d93771a949754061047b75ca3eb88deb413f2 Mon Sep 17 00:00:00 2001 From: Sebastian Zoglowek <55794780+zoglo@users.noreply.github.com> Date: Sun, 15 Jan 2023 16:55:01 +0100 Subject: [PATCH 10/11] [Change] Change addImageToTemplate to FigureBuilder --- contao/classes/Member.php | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/contao/classes/Member.php b/contao/classes/Member.php index b5369f6..8805cc6 100644 --- a/contao/classes/Member.php +++ b/contao/classes/Member.php @@ -73,6 +73,7 @@ protected function processAvatar(MemberModel $objMember, ?array $arrData): void return; } + // ToDo: remove $_SESSION when contao 4.13 support ends (Contao ^5.* is not possible with Contao 4.* support) $file = $_SESSION['FILES']['avatar']; $maxlength_kb = $this->getMaximumUploadSize(); $maxlength_kb_readable = $this->getReadableSize($maxlength_kb); @@ -118,7 +119,7 @@ protected function processAvatar(MemberModel $objMember, ?array $arrData): void } $objFile = new File($file['name']); - $uploadTypes = StringUtil::trimsplit(',', \Config::get('validImageTypes')); + $uploadTypes = StringUtil::trimsplit(',', Config::get('validImageTypes')); // File type is not allowed if (!\in_array($objFile->extension, $uploadTypes)) @@ -238,7 +239,7 @@ protected function processAvatar(MemberModel $objMember, ?array $arrData): void /** * Return the maximum upload file size in bytes */ - protected function getMaximumUploadSize(): string + protected function getMaximumUploadSize() { if ($this->maxlength > 0) { @@ -251,7 +252,7 @@ protected function getMaximumUploadSize(): string /** * Parses an avatar to the template */ - public static function parseMemberAvatar(?MemberModel $objMember, &$objTemplate, ?string $strImgSize): void + public static function parseMemberAvatar(?MemberModel $objMember, &$objTemplate, ?string $imgSize): void { $objTemplate->addImage= true; @@ -261,7 +262,7 @@ public static function parseMemberAvatar(?MemberModel $objMember, &$objTemplate, $projectDir = System::getContainer()->getParameter('kernel.project_dir'); // Check if member avatar exists - if (null === $objMember || null === $objMember->avatar || null === ($objFile = FilesModel::findByUuid($objMember->avatar)) || !\is_file($projectDir.'/'.$objFile->path)) + if (null === $objMember || null === $objMember->avatar || null === ($objFile = FilesModel::findByUuid($objMember->avatar)) || !\is_file($projectDir.'/'. $objFile->path)) { $objFile = !!($uuidDefault = Config::get('defaultAvatar')) ? FilesModel::findByUuid($uuidDefault) : null; } @@ -273,16 +274,19 @@ public static function parseMemberAvatar(?MemberModel $objMember, &$objTemplate, } $objTemplate->addFallbackImage = false; + $imgSize = $imgSize ?? null; - $arrData = ['singleSRC'=>$objFile->path]; + $figureBuilder = System::getContainer() + ->get('contao.image.studio') + ->createFigureBuilder() + ->from($objFile->path) + ->setSize($imgSize) + ; - if (null !== $strImgSize) + if (null !== ($figure = $figureBuilder->buildIfResourceExists())) { - $arrData['size'] = $strImgSize; + $figure->applyLegacyTemplateData($objTemplate); } - - //ToDo: Change to FigureBuilder in the future - $objTemplate->addImageToTemplate($objTemplate, $arrData, null, null, $objFile); } /** From d8dfda176b587b976ab05ce3a0562a1b53cbd65b Mon Sep 17 00:00:00 2001 From: Sebastian Zoglowek <55794780+zoglo@users.noreply.github.com> Date: Sun, 15 Jan 2023 16:55:51 +0100 Subject: [PATCH 11/11] [Change] Drop contao 4.9 support --- README.md | 10 +++++----- composer.json | 6 +++--- contao/config/config.php | 10 +++------- contao/dca/tl_member.php | 18 +++++++++--------- contao/dca/tl_member_settings.php | 4 ++-- contao/modules/ModuleAvatar.php | 13 ++++++------- contao/modules/ModuleDeleteAvatar.php | 9 ++++----- contao/modules/ModuleMemberExtension.php | 4 ++-- contao/modules/ModuleMemberList.php | 9 +++++---- contao/modules/ModuleMemberReader.php | 9 +++++---- 10 files changed, 44 insertions(+), 48 deletions(-) diff --git a/README.md b/README.md index dcf5dc0..eae22bb 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ --- -> Working with **Contao 4.9** and up to **Contao 4.13** (PHP ^7.4 and PHP 8) +> Working with **Contao 4.13** (PHP ^8.0) --- @@ -20,7 +20,7 @@ Additionally, you can display members with their details in a reader page. + [Features](#features) + [Installation](#installation) - + [Upgrading](#upgrading-to-version-12) + + [Upgrading (v.1.1 to >=v.1.2)](#upgrading-to-version--12) + [Composer](#via-composer) + [Contao Manager](#via-contao-manager) + [Initial Setup](#initial-setup) @@ -36,7 +36,7 @@ Additionally, you can display members with their details in a reader page. ## Features -- Compatible with Contao 4.9 and higher versions (PHP 8 Support) +- Compatible with Contao 4.13 (PHP ^8.0) - Extends members with avatars - Paginated member lists - Member detail pages @@ -46,8 +46,8 @@ Additionally, you can display members with their details in a reader page. ## Installation -#### Upgrading to version 1.2 -> After upgrading from version 1.1 to version 1.2, make sure to edit your modules (memberlist, memberreader and avatar/profile picture) and set up the new templates. +#### Upgrading to version >=1.2 +> After upgrading from version 1.1 to version >=1.2, make sure to edit your modules (memberlist, memberreader and avatar/profile picture) and set up the new templates. #### Via composer ``` diff --git a/composer.json b/composer.json index b1e8ca5..f028924 100644 --- a/composer.json +++ b/composer.json @@ -23,8 +23,8 @@ } ], "require": { - "php": "^7.4 || ^8.0", - "contao/core-bundle":"^4.9" + "php": "^8.0", + "contao/core-bundle": "^4.13" }, "require-dev": { "contao/manager-plugin": "^2.3.1" @@ -35,7 +35,7 @@ }, "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "1.3.x-dev" }, "contao-manager-plugin": "Oveleon\\ContaoMemberExtensionBundle\\ContaoManager\\Plugin" }, diff --git a/contao/config/config.php b/contao/config/config.php index 8d981f1..d38b448 100644 --- a/contao/config/config.php +++ b/contao/config/config.php @@ -14,7 +14,7 @@ */ // Back end modules -use Contao\System; +use Contao\ArrayUtil; $GLOBALS['BE_MOD']['system']['member_settings'] = [ 'tables' => ['tl_member_settings'], @@ -22,8 +22,7 @@ ]; // Front end modules -// ToDo: Change to ArrayUtil::arrayInsert when Contao 4.9 support ends -array_insert($GLOBALS['FE_MOD']['user'], -1, [ +ArrayUtil::arrayInsert($GLOBALS['FE_MOD']['user'], -1, [ 'avatar' => 'Oveleon\ContaoMemberExtensionBundle\ModuleAvatar', 'deleteAvatar' => 'Oveleon\ContaoMemberExtensionBundle\ModuleDeleteAvatar', 'memberList' => 'Oveleon\ContaoMemberExtensionBundle\ModuleMemberList', @@ -31,8 +30,5 @@ ]); // Register hooks -$GLOBALS['TL_HOOKS']['createNewUser'][] = ['Oveleon\ContaoMemberExtensionBundle\Member', 'createAvatar']; +$GLOBALS['TL_HOOKS']['createNewUser'][] = ['Oveleon\ContaoMemberExtensionBundle\Member', 'createAvatar']; $GLOBALS['TL_HOOKS']['updatePersonalData'][] = ['Oveleon\ContaoMemberExtensionBundle\Member', 'updateAvatar']; - -// Style sheet -$request = System::getContainer()->get('request_stack')->getCurrentRequest(); diff --git a/contao/dca/tl_member.php b/contao/dca/tl_member.php index 4ff97d6..b89a609 100644 --- a/contao/dca/tl_member.php +++ b/contao/dca/tl_member.php @@ -24,17 +24,17 @@ // Add global operations $GLOBALS['TL_DCA']['tl_member']['list']['global_operations']['settings'] = [ - 'label' => &$GLOBALS['TL_LANG']['tl_member']['settings'], - 'href' => 'do=member_settings', - 'icon' => 'edit.svg', - 'attributes' => 'onclick="Backend.getScrollOffset()" accesskey="e"' + 'label' => &$GLOBALS['TL_LANG']['tl_member']['settings'], + 'href' => 'do=member_settings', + 'icon' => 'edit.svg', + 'attributes' => 'onclick="Backend.getScrollOffset()" accesskey="e"' ]; // Add fields to tl_user $GLOBALS['TL_DCA']['tl_member']['fields']['avatar'] = [ - 'label' => &$GLOBALS['TL_LANG']['tl_member']['avatar'], - 'exclude' => true, - 'inputType' => 'fileTree', - 'eval' => ['feEditable'=>true, 'feViewable'=>true, 'feGroup'=>'personal', 'fieldType'=>'radio', 'filesOnly'=>true, 'isGallery'=>true, 'extensions'=>Config::get('validImageTypes'), 'tl_class'=>'clr'], - 'sql' => "binary(16) NULL" + 'label' => &$GLOBALS['TL_LANG']['tl_member']['avatar'], + 'exclude' => true, + 'inputType' => 'fileTree', + 'eval' => ['feEditable'=>true, 'feViewable'=>true, 'feGroup'=>'personal', 'fieldType'=>'radio', 'filesOnly'=>true, 'isGallery'=>true, 'extensions'=>Config::get('validImageTypes'), 'tl_class'=>'clr'], + 'sql' => "binary(16) NULL" ]; diff --git a/contao/dca/tl_member_settings.php b/contao/dca/tl_member_settings.php index 63dfb61..5d67dde 100644 --- a/contao/dca/tl_member_settings.php +++ b/contao/dca/tl_member_settings.php @@ -26,9 +26,9 @@ 'fields' => [ 'defaultAvatar' => [ - 'label' => &$GLOBALS['TL_LANG']['tl_member_settings']['defaultAvatar'], + 'label' => &$GLOBALS['TL_LANG']['tl_member_settings']['defaultAvatar'], 'inputType' => 'fileTree', - 'eval' => array('fieldType'=>'radio', 'filesOnly'=>true, 'isGallery'=>true, 'extensions'=>Config::get('validImageTypes'), 'tl_class'=>'clr') + 'eval' => ['fieldType'=>'radio', 'filesOnly'=>true, 'isGallery'=>true, 'extensions'=>Config::get('validImageTypes'), 'tl_class'=>'clr'] ] ] ]; diff --git a/contao/modules/ModuleAvatar.php b/contao/modules/ModuleAvatar.php index 128daff..57fe57b 100644 --- a/contao/modules/ModuleAvatar.php +++ b/contao/modules/ModuleAvatar.php @@ -16,11 +16,9 @@ namespace Oveleon\ContaoMemberExtensionBundle; use Contao\BackendTemplate; -use Contao\Config; -use Contao\FilesModel; use Contao\FrontendUser; use Contao\MemberModel; -use Contao\Module; +use Contao\StringUtil; use Contao\System; /** @@ -39,22 +37,23 @@ class ModuleAvatar extends ModuleMemberExtension protected $strTemplate = 'memberExtension_avatar'; /** - * Return a wildcard in the back end + * Display a wildcard in the back end * * @return string */ public function generate() { + $container = System::getContainer(); $request = System::getContainer()->get('request_stack')->getCurrentRequest(); - if ($request && System::getContainer()->get('contao.routing.scope_matcher')->isBackendRequest($request)) + if ($request && $container->get('contao.routing.scope_matcher')->isBackendRequest($request)) { $objTemplate = new BackendTemplate('be_wildcard'); - $objTemplate->wildcard = '### ' . mb_strtoupper($GLOBALS['TL_LANG']['FMD']['avatar'][0], 'UTF-8') . ' ###'; + $objTemplate->wildcard = '### ' . $GLOBALS['TL_LANG']['FMD']['avatar'][0] . ' ###'; $objTemplate->title = $this->headline; $objTemplate->id = $this->id; $objTemplate->link = $this->name; - $objTemplate->href = 'contao/main.php?do=themes&table=tl_module&act=edit&id=' . $this->id; + $objTemplate->href = StringUtil::specialcharsUrl(System::getContainer()->get('router')->generate('contao_backend', ['do'=>'themes', 'table'=>'tl_module', 'act'=>'edit', 'id'=>$this->id])); return $objTemplate->parse(); } diff --git a/contao/modules/ModuleDeleteAvatar.php b/contao/modules/ModuleDeleteAvatar.php index 155a67c..511cbca 100644 --- a/contao/modules/ModuleDeleteAvatar.php +++ b/contao/modules/ModuleDeleteAvatar.php @@ -39,24 +39,23 @@ class ModuleDeleteAvatar extends Module protected $strTemplate = 'memberExtension_deleteAvatar'; /** - * Return a wildcard in the back end + * Display a wildcard in the back end * * @return string */ public function generate() { $container = System::getContainer(); - $request = System::getContainer()->get('request_stack')->getCurrentRequest(); - if ($request && System::getContainer()->get('contao.routing.scope_matcher')->isBackendRequest($request)) + if ($request && $container->get('contao.routing.scope_matcher')->isBackendRequest($request)) { $objTemplate = new BackendTemplate('be_wildcard'); - $objTemplate->wildcard = '### ' . mb_strtoupper($GLOBALS['TL_LANG']['FMD']['deleteAvatar'][0] ?? '', 'UTF-8') . ' ###'; + $objTemplate->wildcard = '### ' . $GLOBALS['TL_LANG']['FMD']['deleteAvatar'][0] . ' ###'; $objTemplate->title = $this->headline; $objTemplate->id = $this->id; $objTemplate->link = $this->name; - $objTemplate->href = 'contao/main.php?do=themes&table=tl_module&act=edit&id=' . $this->id; + $objTemplate->href = StringUtil::specialcharsUrl(System::getContainer()->get('router')->generate('contao_backend', ['do'=>'themes', 'table'=>'tl_module', 'act'=>'edit', 'id'=>$this->id])); return $objTemplate->parse(); } diff --git a/contao/modules/ModuleMemberExtension.php b/contao/modules/ModuleMemberExtension.php index e707754..0f583cb 100644 --- a/contao/modules/ModuleMemberExtension.php +++ b/contao/modules/ModuleMemberExtension.php @@ -101,12 +101,12 @@ protected function generateMemberUrl(MemberModel $objMember): string if (!$objPage instanceof PageModel) { - $strLink = ampersand(Environment::get('request')); + $strLink = StringUtil::ampersand(Environment::get('request')); } else { $params = (Config::get('useAutoItem') ? '/' : '/items/') . ($objMember->alias ?: $objMember->id); - $strLink = ampersand($objPage->getFrontendUrl($params)); + $strLink = StringUtil::ampersand($objPage->getFrontendUrl($params)); } return $strLink; diff --git a/contao/modules/ModuleMemberList.php b/contao/modules/ModuleMemberList.php index 30cabde..30e2388 100644 --- a/contao/modules/ModuleMemberList.php +++ b/contao/modules/ModuleMemberList.php @@ -53,22 +53,23 @@ class ModuleMemberList extends ModuleMemberExtension protected $strMemberTemplate = 'memberExtension_list_default'; /** - * Return a wildcard in the back end + * Display a wildcard in the back end * * @return string */ public function generate() { + $container = System::getContainer(); $request = System::getContainer()->get('request_stack')->getCurrentRequest(); - if ($request && System::getContainer()->get('contao.routing.scope_matcher')->isBackendRequest($request)) + if ($request && $container->get('contao.routing.scope_matcher')->isBackendRequest($request)) { $objTemplate = new BackendTemplate('be_wildcard'); - $objTemplate->wildcard = '### ' . mb_strtoupper($GLOBALS['TL_LANG']['FMD']['memberList'][0], 'UTF-8') . ' ###'; + $objTemplate->wildcard = '### ' . $GLOBALS['TL_LANG']['FMD']['memberList'][0] . ' ###'; $objTemplate->title = $this->headline; $objTemplate->id = $this->id; $objTemplate->link = $this->name; - $objTemplate->href = 'contao/main.php?do=themes&table=tl_module&act=edit&id=' . $this->id; + $objTemplate->href = StringUtil::specialcharsUrl(System::getContainer()->get('router')->generate('contao_backend', ['do'=>'themes', 'table'=>'tl_module', 'act'=>'edit', 'id'=>$this->id])); return $objTemplate->parse(); } diff --git a/contao/modules/ModuleMemberReader.php b/contao/modules/ModuleMemberReader.php index 0dfd24f..cdb41d1 100644 --- a/contao/modules/ModuleMemberReader.php +++ b/contao/modules/ModuleMemberReader.php @@ -48,22 +48,23 @@ class ModuleMemberReader extends ModuleMemberExtension protected $strMemberTemplate = 'memberExtension_reader_full'; /** - * Return a wildcard in the back end + * Display a wildcard in the back end * * @return string */ public function generate() { + $container = System::getContainer(); $request = System::getContainer()->get('request_stack')->getCurrentRequest(); - if ($request && System::getContainer()->get('contao.routing.scope_matcher')->isBackendRequest($request)) + if ($request && $container->get('contao.routing.scope_matcher')->isBackendRequest($request)) { $objTemplate = new BackendTemplate('be_wildcard'); - $objTemplate->wildcard = '### ' . mb_strtoupper($GLOBALS['TL_LANG']['FMD']['memberList'][0], 'UTF-8') . ' ###'; + $objTemplate->wildcard = '### ' . $GLOBALS['TL_LANG']['FMD']['memberList'][0] . ' ###'; $objTemplate->title = $this->headline; $objTemplate->id = $this->id; $objTemplate->link = $this->name; - $objTemplate->href = 'contao/main.php?do=themes&table=tl_module&act=edit&id=' . $this->id; + $objTemplate->href = StringUtil::specialcharsUrl(System::getContainer()->get('router')->generate('contao_backend', ['do'=>'themes', 'table'=>'tl_module', 'act'=>'edit', 'id'=>$this->id])); return $objTemplate->parse(); }