1515
1616class acp_togglectrl_controller
1717{
18- protected $ language ;
19- protected $ template ;
20- protected $ request ;
21- protected $ config ;
22- protected $ ext_manager ;
23- protected $ metadata ;
18+ protected object $ language ;
19+ protected object $ template ;
20+ protected object $ request ;
21+ protected object $ config ;
22+ protected object $ ext_manager ;
2423
25- public $ u_action ;
24+ protected array $ metadata ;
25+ public string $ u_action ;
2626
2727 public function __construct (
2828 \phpbb \language \language $ language ,
@@ -46,7 +46,7 @@ public function module_settings(): void
4646 $ notes = [];
4747
4848 $ this ->language ->add_lang (['acp_togglectrl ' , 'acp_togglectrl_lang_author ' ], 'lukewcs/togglectrl ' );
49- $ this ->set_meta_template_vars ('TOGGLECTRL ' );
49+ $ this ->set_meta_template_vars ('TOGGLECTRL ' , ' LukeWCS ' );
5050
5151 if ($ this ->request ->is_set_post ('submit ' ))
5252 {
@@ -67,20 +67,19 @@ public function module_settings(): void
6767 $ notes [] = $ lang_outdated_msg ;
6868 }
6969
70- $ this -> template -> assign_vars ( [
70+ $ template_vars = [
7171 'TOGGLECTRL_NOTES ' => $ notes ,
72- 'TOGGLECTRL_ENABLED ' => $ this ->config ['togglectrl_enabled ' ],
73- 'TOGGLECTRL_TYPES ' => $ this ->select_struct ($ this ->config ['togglectrl_type ' ], [
74- [ 'TOGGLECTRL_TYPE_TOGGLE ' , 'toggle ' ] ,
75- [ 'TOGGLECTRL_TYPE_CHECKBOX ' , 'checkbox ' ] ,
76- [ 'TOGGLECTRL_TYPE_RADIO ' , 'radio ' ] ,
72+ 'TOGGLECTRL_ENABLED ' => ( bool ) $ this ->config ['togglectrl_enabled ' ],
73+ 'TOGGLECTRL_TYPES ' => $ this ->select_struct (( string ) $ this ->config ['togglectrl_type ' ], [
74+ 'TOGGLECTRL_TYPE_TOGGLE ' => 'toggle ' ,
75+ 'TOGGLECTRL_TYPE_CHECKBOX ' => 'checkbox ' ,
76+ 'TOGGLECTRL_TYPE_RADIO ' => 'radio ' ,
7777 ]),
78- ]);
79-
80- if (!$ this ->config ['togglectrl_enabled ' ])
81- {
82- $ this ->template ->assign_var ('TOGGLECTRL_TYPE ' , $ this ->config ['togglectrl_type ' ]);
83- }
78+ ];
79+ $ template_vars += !$ this ->config ['togglectrl_enabled ' ] ? [
80+ 'TOGGLECTRL_TYPE ' => (string ) $ this ->config ['togglectrl_type ' ],
81+ ] : [];
82+ $ this ->template ->assign_vars ($ template_vars );
8483
8584 add_form_key ('togglectrl ' );
8685 }
@@ -90,43 +89,60 @@ public function set_page_url(string $u_action): void
9089 $ this ->u_action = $ u_action ;
9190 }
9291
93- private function select_struct ($ value , array $ options_params ): array
92+ private function select_struct ($ cfg_value , array $ options ): array
9493 {
95- $ is_array_value = is_array ( $ value ) ;
96- $ options = [];
97- foreach ($ options_params as $ params )
94+ $ options_tpl = [] ;
95+
96+ foreach ($ options as $ opt_key => $ opt_value )
9897 {
99- $ options [] = [
100- 'label ' => $ params [0 ],
101- 'value ' => $ params [1 ],
102- 'selected ' => $ is_array_value ? in_array ($ params [1 ], $ value ) : $ params [1 ] == $ value ,
103- 'bold ' => $ params [2 ] ?? false ,
98+ if (!is_array ($ opt_value ))
99+ {
100+ $ opt_value = [$ opt_value ];
101+ }
102+ $ options_tpl [] = [
103+ 'label ' => $ opt_key ,
104+ 'value ' => $ opt_value [0 ],
105+ 'bold ' => $ opt_value [1 ] ?? false ,
106+ 'selected ' => is_array ($ cfg_value ) ? in_array ($ opt_value [0 ], $ cfg_value ) : $ opt_value [0 ] == $ cfg_value ,
104107 ];
105108 }
106109
107- return $ options ;
110+ return $ options_tpl ;
111+ }
112+
113+ private function set_meta_template_vars (string $ tpl_prefix , string $ copyright ): void
114+ {
115+ $ template_vars = [
116+ 'ext_name ' => $ this ->metadata ['extra ' ]['display-name ' ],
117+ 'ext_ver ' => $ this ->language ->lang ($ tpl_prefix . '_VERSION_STRING ' , $ this ->metadata ['version ' ]),
118+ 'ext_copyright ' => $ copyright ,
119+ 'class ' => strtolower ($ tpl_prefix ) . '_footer ' ,
120+ ];
121+ $ template_vars += $ this ->language ->is_set ($ tpl_prefix . '_LANG_VER ' ) ? [
122+ 'lang_desc ' => $ this ->language ->lang ($ tpl_prefix . '_LANG_DESC ' ),
123+ 'lang_ver ' => $ this ->language ->lang ($ tpl_prefix . '_VERSION_STRING ' , $ this ->language ->lang ($ tpl_prefix . '_LANG_VER ' )),
124+ 'lang_author ' => $ this ->language ->lang ($ tpl_prefix . '_LANG_AUTHOR ' ),
125+ ] : [];
126+
127+ $ this ->template ->assign_vars ([$ tpl_prefix . '_METADATA ' => $ template_vars ]);
108128 }
109129
110- private function set_meta_template_vars (string $ tpl_prefix ): void
130+ /*
131+ Determine the version of the language pack with fallback to 0.0.0
132+ */
133+ private function get_lang_ver (string $ lang_ext_ver ): string
111134 {
112- $ this ->template ->assign_vars ([
113- $ tpl_prefix . '_METADATA ' => [
114- 'EXT_NAME ' => $ this ->metadata ['extra ' ]['display-name ' ],
115- 'EXT_VER ' => $ this ->language ->lang ($ tpl_prefix . '_VERSION_STRING ' , $ this ->metadata ['version ' ]),
116- 'LANG_DESC ' => $ this ->language ->lang ($ tpl_prefix . '_LANG_DESC ' ),
117- 'LANG_VER ' => $ this ->language ->lang ($ tpl_prefix . '_VERSION_STRING ' , $ this ->language ->lang ($ tpl_prefix . '_LANG_VER ' )),
118- 'LANG_AUTHOR ' => $ this ->language ->lang ($ tpl_prefix . '_LANG_AUTHOR ' ),
119- 'CLASS ' => strtolower ($ tpl_prefix ) . '_footer ' ,
120- ],
121- ]);
135+ preg_match ('/^([0-9]+\.[0-9]+\.[0-9]+.*)/ ' , $ this ->language ->lang ($ lang_ext_ver ), $ matches );
136+ return ($ matches [1 ] ?? '0.0.0 ' );
122137 }
123138
124- // Check the language pack version for the minimum version and generate notice if outdated
139+ /*
140+ Check the language pack version for the minimum version and generate notice if outdated
141+ */
125142 private function lang_ver_check_msg (string $ lang_version_var , string $ lang_outdated_var ): string
126143 {
127144 $ lang_outdated_msg = '' ;
128- preg_match ('/^([0-9]+\.[0-9]+\.[0-9]+)/ ' , $ this ->language ->lang ($ lang_version_var ), $ matches );
129- $ ext_lang_ver = $ matches [1 ] ?? '0.0.0 ' ;
145+ $ ext_lang_ver = $ this ->get_lang_ver ($ lang_version_var );
130146 $ ext_lang_min_ver = $ this ->metadata ['extra ' ]['lang-min-ver ' ];
131147
132148 if (phpbb_version_compare ($ ext_lang_ver , $ ext_lang_min_ver , '< ' ))
@@ -135,7 +151,7 @@ private function lang_ver_check_msg(string $lang_version_var, string $lang_outda
135151 {
136152 $ lang_outdated_msg = $ this ->language ->lang ($ lang_outdated_var );
137153 }
138- else // Fallback if the current language package does not yet have the required variable.
154+ else /* Fallback if the current language package does not yet have the required variable. */
139155 {
140156 $ lang_outdated_msg = 'Note: The language pack for the extension <strong>%1$s</strong> is no longer up-to-date. (installed: %2$s / needed: %3$s) ' ;
141157 }
0 commit comments