Browse code

[Change] Drop contao 4.9 support

Sebastian Zoglowek authored on15/01/2023 16:55:51
Showing10 changed files
... ...
@@ -10,7 +10,7 @@
10 10
 
11 11
 ---
12 12
 
13
-> Working with **Contao 4.9** and up to **Contao 4.13** (PHP ^7.4 and PHP 8)
13
+> Working with **Contao 4.13** (PHP ^8.0)
14 14
 
15 15
 ---
16 16
 
... ...
@@ -20,7 +20,7 @@ Additionally, you can display members with their details in a reader page.
20 20
 
21 21
 + [Features](#features)
22 22
 + [Installation](#installation)
23
-   + [Upgrading](#upgrading-to-version-12)
23
+   + [Upgrading (v.1.1 to >=v.1.2)](#upgrading-to-version--12)
24 24
    + [Composer](#via-composer)
25 25
    + [Contao Manager](#via-contao-manager)
26 26
 + [Initial Setup](#initial-setup)
... ...
@@ -36,7 +36,7 @@ Additionally, you can display members with their details in a reader page.
36 36
 
37 37
 ## Features
38 38
 
39
-- Compatible with Contao 4.9 and higher versions (PHP 8 Support)
39
+- Compatible with Contao 4.13 (PHP ^8.0)
40 40
 - Extends members with avatars
41 41
 - Paginated member lists
42 42
 - Member detail pages
... ...
@@ -46,8 +46,8 @@ Additionally, you can display members with their details in a reader page.
46 46
 
47 47
 ## Installation
48 48
 
49
-#### Upgrading to version 1.2
50
-> 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.
49
+#### Upgrading to version >=1.2
50
+> 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.
51 51
 
52 52
 #### Via composer
53 53
 ```
... ...
@@ -23,8 +23,8 @@
23 23
         }
24 24
     ],
25 25
     "require": {
26
-        "php": "^7.4 || ^8.0",
27
-        "contao/core-bundle":"^4.9"
26
+        "php": "^8.0",
27
+        "contao/core-bundle": "^4.13"
28 28
     },
29 29
     "require-dev": {
30 30
         "contao/manager-plugin": "^2.3.1"
... ...
@@ -35,7 +35,7 @@
35 35
     },
36 36
     "extra": {
37 37
         "branch-alias": {
38
-            "dev-master": "1.2.x-dev"
38
+            "dev-master": "1.3.x-dev"
39 39
         },
40 40
         "contao-manager-plugin": "Oveleon\\ContaoMemberExtensionBundle\\ContaoManager\\Plugin"
41 41
     },
... ...
@@ -14,7 +14,7 @@ declare(strict_types=1);
14 14
  */
15 15
 
16 16
 // Back end modules
17
-use Contao\System;
17
+use Contao\ArrayUtil;
18 18
 
19 19
 $GLOBALS['BE_MOD']['system']['member_settings'] = [
20 20
     'tables'            => ['tl_member_settings'],
... ...
@@ -22,8 +22,7 @@ $GLOBALS['BE_MOD']['system']['member_settings'] = [
22 22
 ];
23 23
 
24 24
 // Front end modules
25
-// ToDo: Change to ArrayUtil::arrayInsert when Contao 4.9 support ends
26
-array_insert($GLOBALS['FE_MOD']['user'], -1, [
25
+ArrayUtil::arrayInsert($GLOBALS['FE_MOD']['user'], -1, [
27 26
     'avatar'       => 'Oveleon\ContaoMemberExtensionBundle\ModuleAvatar',
28 27
     'deleteAvatar' => 'Oveleon\ContaoMemberExtensionBundle\ModuleDeleteAvatar',
29 28
     'memberList'   => 'Oveleon\ContaoMemberExtensionBundle\ModuleMemberList',
... ...
@@ -31,8 +30,5 @@ array_insert($GLOBALS['FE_MOD']['user'], -1, [
31 30
 ]);
32 31
 
33 32
 // Register hooks
34
-$GLOBALS['TL_HOOKS']['createNewUser'][] = ['Oveleon\ContaoMemberExtensionBundle\Member', 'createAvatar'];
33
+$GLOBALS['TL_HOOKS']['createNewUser'][] =      ['Oveleon\ContaoMemberExtensionBundle\Member', 'createAvatar'];
35 34
 $GLOBALS['TL_HOOKS']['updatePersonalData'][] = ['Oveleon\ContaoMemberExtensionBundle\Member', 'updateAvatar'];
36
-
37
-// Style sheet
38
-$request = System::getContainer()->get('request_stack')->getCurrentRequest();
... ...
@@ -24,17 +24,17 @@ PaletteManipulator::create()
24 24
 
25 25
 // Add global operations
26 26
 $GLOBALS['TL_DCA']['tl_member']['list']['global_operations']['settings'] = [
27
-    'label' => &$GLOBALS['TL_LANG']['tl_member']['settings'],
28
-    'href' => 'do=member_settings',
29
-    'icon' => 'edit.svg',
30
-    'attributes' => 'onclick="Backend.getScrollOffset()" accesskey="e"'
27
+    'label'         => &$GLOBALS['TL_LANG']['tl_member']['settings'],
28
+    'href'          => 'do=member_settings',
29
+    'icon'          => 'edit.svg',
30
+    'attributes'    => 'onclick="Backend.getScrollOffset()" accesskey="e"'
31 31
 ];
32 32
 
33 33
 // Add fields to tl_user
34 34
 $GLOBALS['TL_DCA']['tl_member']['fields']['avatar'] = [
35
-    'label' => &$GLOBALS['TL_LANG']['tl_member']['avatar'],
36
-    'exclude' => true,
37
-    'inputType' => 'fileTree',
38
-    'eval' => ['feEditable'=>true, 'feViewable'=>true, 'feGroup'=>'personal', 'fieldType'=>'radio', 'filesOnly'=>true, 'isGallery'=>true, 'extensions'=>Config::get('validImageTypes'), 'tl_class'=>'clr'],
39
-    'sql' => "binary(16) NULL"
35
+    'label'         => &$GLOBALS['TL_LANG']['tl_member']['avatar'],
36
+    'exclude'       => true,
37
+    'inputType'     => 'fileTree',
38
+    'eval'          => ['feEditable'=>true, 'feViewable'=>true, 'feGroup'=>'personal', 'fieldType'=>'radio', 'filesOnly'=>true, 'isGallery'=>true, 'extensions'=>Config::get('validImageTypes'), 'tl_class'=>'clr'],
39
+    'sql'           => "binary(16) NULL"
40 40
 ];
... ...
@@ -26,9 +26,9 @@ $GLOBALS['TL_DCA']['tl_member_settings'] = [
26 26
 
27 27
     'fields' => [
28 28
         'defaultAvatar' => [
29
-            'label' => &$GLOBALS['TL_LANG']['tl_member_settings']['defaultAvatar'],
29
+            'label'     => &$GLOBALS['TL_LANG']['tl_member_settings']['defaultAvatar'],
30 30
             'inputType' => 'fileTree',
31
-            'eval' => array('fieldType'=>'radio', 'filesOnly'=>true, 'isGallery'=>true, 'extensions'=>Config::get('validImageTypes'), 'tl_class'=>'clr')
31
+            'eval'      => ['fieldType'=>'radio', 'filesOnly'=>true, 'isGallery'=>true, 'extensions'=>Config::get('validImageTypes'), 'tl_class'=>'clr']
32 32
         ]
33 33
     ]
34 34
 ];
... ...
@@ -16,11 +16,9 @@ declare(strict_types=1);
16 16
 namespace Oveleon\ContaoMemberExtensionBundle;
17 17
 
18 18
 use Contao\BackendTemplate;
19
-use Contao\Config;
20
-use Contao\FilesModel;
21 19
 use Contao\FrontendUser;
22 20
 use Contao\MemberModel;
23
-use Contao\Module;
21
+use Contao\StringUtil;
24 22
 use Contao\System;
25 23
 
26 24
 /**
... ...
@@ -39,22 +37,23 @@ class ModuleAvatar extends ModuleMemberExtension
39 37
     protected $strTemplate = 'memberExtension_avatar';
40 38
 
41 39
     /**
42
-     * Return a wildcard in the back end
40
+     * Display a wildcard in the back end
43 41
      *
44 42
      * @return string
45 43
      */
46 44
     public function generate()
47 45
     {
46
+        $container = System::getContainer();
48 47
         $request = System::getContainer()->get('request_stack')->getCurrentRequest();
49 48
 
50
-        if ($request && System::getContainer()->get('contao.routing.scope_matcher')->isBackendRequest($request))
49
+        if ($request && $container->get('contao.routing.scope_matcher')->isBackendRequest($request))
51 50
         {
52 51
             $objTemplate = new BackendTemplate('be_wildcard');
53
-            $objTemplate->wildcard = '### ' . mb_strtoupper($GLOBALS['TL_LANG']['FMD']['avatar'][0], 'UTF-8') . ' ###';
52
+            $objTemplate->wildcard = '### ' . $GLOBALS['TL_LANG']['FMD']['avatar'][0] . ' ###';
54 53
             $objTemplate->title = $this->headline;
55 54
             $objTemplate->id = $this->id;
56 55
             $objTemplate->link = $this->name;
57
-            $objTemplate->href = 'contao/main.php?do=themes&table=tl_module&act=edit&id=' . $this->id;
56
+            $objTemplate->href = StringUtil::specialcharsUrl(System::getContainer()->get('router')->generate('contao_backend', ['do'=>'themes', 'table'=>'tl_module', 'act'=>'edit', 'id'=>$this->id]));
58 57
 
59 58
             return $objTemplate->parse();
60 59
         }
... ...
@@ -39,24 +39,23 @@ class ModuleDeleteAvatar extends Module
39 39
     protected $strTemplate = 'memberExtension_deleteAvatar';
40 40
 
41 41
     /**
42
-     * Return a wildcard in the back end
42
+     * Display a wildcard in the back end
43 43
      *
44 44
      * @return string
45 45
      */
46 46
     public function generate()
47 47
     {
48 48
         $container = System::getContainer();
49
-
50 49
         $request = System::getContainer()->get('request_stack')->getCurrentRequest();
51 50
 
52
-        if ($request && System::getContainer()->get('contao.routing.scope_matcher')->isBackendRequest($request))
51
+        if ($request && $container->get('contao.routing.scope_matcher')->isBackendRequest($request))
53 52
         {
54 53
             $objTemplate = new BackendTemplate('be_wildcard');
55
-            $objTemplate->wildcard = '### ' . mb_strtoupper($GLOBALS['TL_LANG']['FMD']['deleteAvatar'][0] ?? '', 'UTF-8') . ' ###';
54
+            $objTemplate->wildcard = '### ' . $GLOBALS['TL_LANG']['FMD']['deleteAvatar'][0] . ' ###';
56 55
             $objTemplate->title = $this->headline;
57 56
             $objTemplate->id = $this->id;
58 57
             $objTemplate->link = $this->name;
59
-            $objTemplate->href = 'contao/main.php?do=themes&table=tl_module&act=edit&id=' . $this->id;
58
+            $objTemplate->href = StringUtil::specialcharsUrl(System::getContainer()->get('router')->generate('contao_backend', ['do'=>'themes', 'table'=>'tl_module', 'act'=>'edit', 'id'=>$this->id]));
60 59
 
61 60
             return $objTemplate->parse();
62 61
         }
... ...
@@ -101,12 +101,12 @@ abstract class ModuleMemberExtension extends Module
101 101
 
102 102
         if (!$objPage instanceof PageModel)
103 103
         {
104
-            $strLink = ampersand(Environment::get('request'));
104
+            $strLink = StringUtil::ampersand(Environment::get('request'));
105 105
         }
106 106
         else
107 107
         {
108 108
             $params = (Config::get('useAutoItem') ? '/' : '/items/') . ($objMember->alias ?: $objMember->id);
109
-            $strLink = ampersand($objPage->getFrontendUrl($params));
109
+            $strLink = StringUtil::ampersand($objPage->getFrontendUrl($params));
110 110
         }
111 111
 
112 112
         return $strLink;
... ...
@@ -53,22 +53,23 @@ class ModuleMemberList extends ModuleMemberExtension
53 53
     protected $strMemberTemplate = 'memberExtension_list_default';
54 54
 
55 55
     /**
56
-     * Return a wildcard in the back end
56
+     * Display a wildcard in the back end
57 57
      *
58 58
      * @return string
59 59
      */
60 60
     public function generate()
61 61
     {
62
+        $container = System::getContainer();
62 63
         $request = System::getContainer()->get('request_stack')->getCurrentRequest();
63 64
 
64
-        if ($request && System::getContainer()->get('contao.routing.scope_matcher')->isBackendRequest($request))
65
+        if ($request && $container->get('contao.routing.scope_matcher')->isBackendRequest($request))
65 66
         {
66 67
             $objTemplate = new BackendTemplate('be_wildcard');
67
-            $objTemplate->wildcard = '### ' . mb_strtoupper($GLOBALS['TL_LANG']['FMD']['memberList'][0], 'UTF-8') . ' ###';
68
+            $objTemplate->wildcard = '### ' . $GLOBALS['TL_LANG']['FMD']['memberList'][0] . ' ###';
68 69
             $objTemplate->title = $this->headline;
69 70
             $objTemplate->id = $this->id;
70 71
             $objTemplate->link = $this->name;
71
-            $objTemplate->href = 'contao/main.php?do=themes&table=tl_module&act=edit&id=' . $this->id;
72
+            $objTemplate->href = StringUtil::specialcharsUrl(System::getContainer()->get('router')->generate('contao_backend', ['do'=>'themes', 'table'=>'tl_module', 'act'=>'edit', 'id'=>$this->id]));
72 73
 
73 74
             return $objTemplate->parse();
74 75
         }
... ...
@@ -48,22 +48,23 @@ class ModuleMemberReader extends ModuleMemberExtension
48 48
     protected $strMemberTemplate = 'memberExtension_reader_full';
49 49
 
50 50
     /**
51
-     * Return a wildcard in the back end
51
+     * Display a wildcard in the back end
52 52
      *
53 53
      * @return string
54 54
      */
55 55
     public function generate()
56 56
     {
57
+        $container = System::getContainer();
57 58
         $request = System::getContainer()->get('request_stack')->getCurrentRequest();
58 59
 
59
-        if ($request && System::getContainer()->get('contao.routing.scope_matcher')->isBackendRequest($request))
60
+        if ($request && $container->get('contao.routing.scope_matcher')->isBackendRequest($request))
60 61
         {
61 62
             $objTemplate = new BackendTemplate('be_wildcard');
62
-            $objTemplate->wildcard = '### ' . mb_strtoupper($GLOBALS['TL_LANG']['FMD']['memberList'][0], 'UTF-8') . ' ###';
63
+            $objTemplate->wildcard = '### ' . $GLOBALS['TL_LANG']['FMD']['memberList'][0] . ' ###';
63 64
             $objTemplate->title = $this->headline;
64 65
             $objTemplate->id = $this->id;
65 66
             $objTemplate->link = $this->name;
66
-            $objTemplate->href = 'contao/main.php?do=themes&table=tl_module&act=edit&id=' . $this->id;
67
+            $objTemplate->href = StringUtil::specialcharsUrl(System::getContainer()->get('router')->generate('contao_backend', ['do'=>'themes', 'table'=>'tl_module', 'act'=>'edit', 'id'=>$this->id]));
67 68
 
68 69
             return $objTemplate->parse();
69 70
         }