Skip to content

Commit f4a383a

Browse files
committed
v1.5.0
- Fixed Language variables are lost when 'Create thumbnail' is deactivated. - Fixed Error message from Composer Validator - Fixed Each PHP statement must be on a line by itself - Set max php version to 8.4, min version to 7.4 - Changed PHP code has been updated to include data types for the variable - Changed security query in the Ajax controller - Changed sql query from string to array - Revised language files - Moved twig macros in separate file
1 parent c279f06 commit f4a383a

24 files changed

+317
-643
lines changed

.github/workflows/tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,4 @@ jobs:
2121
RUN_PGSQL_JOBS: 0
2222
RUN_MSSQL_JOBS: 0
2323
RUN_WINDOWS_JOBS: 0
24-
PRIMARY_PHP_VERSION: '8.3'
24+
PRIMARY_PHP_VERSION: '8.4'

imcger/imgupload/acp/main_module.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@
1515
*/
1616
class main_module
1717
{
18-
public $page_title;
19-
public $tpl_name;
20-
public $u_action;
18+
public string $page_title;
19+
public string $tpl_name;
20+
public string $u_action;
2121

22-
public function main($id, $mode)
22+
public function main(string $id, string $mode): void
2323
{
2424
global $phpbb_container;
2525

Lines changed: 26 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,18 @@
1+
{#
2+
* Image upload use ImageMagick
3+
* An extension for the phpBB Forum Software package.
4+
*
5+
* @copyright (c) 2022, Thorsten Ahlers
6+
* @license GNU General Public License, version 2 (GPL-2.0)
7+
*
8+
#}
9+
10+
{% INCLUDECSS '@imcger_imgupload/acp_toggle.css' %}
11+
{% INCLUDECSS '@imcger_imgupload/acp_imgupload.css' %}
12+
{% INCLUDEJS '@imcger_imgupload/acp_imgupload.js' %}
13+
114
{% INCLUDE 'overall_header.html' %}
15+
{% import '@imcger_imgupload/twig_macros.html' as common %}
216
{% set switch_type = TOGGLECTRL_TYPE ?? 'toggle' %}
317

418
<h1>{{ lang('ACP_IMCGER_IMGUPLOAD_TITLE') }}</h1>
@@ -12,25 +26,25 @@ <h1>{{ lang('ACP_IMCGER_IMGUPLOAD_TITLE') }}</h1>
1226
<dl>
1327
<dt><label for="img_create_thumbnail">{{ lang('CREATE_THUMBNAIL') ~ lang('COLON') }}</label><br><span>{{ lang('CREATE_THUMBNAIL_EXPLAIN') }}</span></dt>
1428
<dd>
15-
{{ _self.switch('img_create_thumbnail', CREATE_THUMBNAIL, switch_type) }}
29+
{{ common.switch('img_create_thumbnail', CREATE_THUMBNAIL, switch_type) }}
1630
</dd>
1731
</dl>
1832
<dl>
1933
<dt><label for="imcger_imgupload_tum_quality">{{ lang('ACP_IMCGER_THUMB_QUALITY') ~ lang('COLON') }}</label><br><span>{{ lang('ACP_IMCGER_THUMB_QUALITY_DESC') }}</span></dt>
2034
<dd>
21-
{{ _self.number('imcger_imgupload_tum_quality', IMCGER_TUM_QUALITY, 50, 90) }}
35+
{{ common.number('imcger_imgupload_tum_quality', IMCGER_TUM_QUALITY, 50, 90) }}
2236
</dd>
2337
</dl>
2438
<dl>
2539
<dt><label for="imcger_imgupload_image_inline">{{ lang('ACP_IMCGER_IMAGE_INLINE') ~ lang('COLON') }}</label><br><span>{{ lang('ACP_IMCGER_IMAGE_INLINE_DESC') }}</span></dt>
2640
<dd>
27-
{{ _self.switch('imcger_imgupload_image_inline', IMCGER_IMGUPLOAD_IMAGE_INLINE, switch_type) }}
41+
{{ common.switch('imcger_imgupload_image_inline', IMCGER_IMGUPLOAD_IMAGE_INLINE, switch_type) }}
2842
</dd>
2943
</dl>
3044
<dl>
3145
<dt><label for="imcger_imgupload_img_max_thumb_width">{{ lang('ACP_IMCGER_IMG_MAX_THUMB_WIDTH') ~ lang('COLON') }}</label><br><span>{{ lang('ACP_IMCGER_IMG_MAX_THUMB_WIDTH_DESC') }}</span></dt>
3246
<dd>
33-
{{ _self.number('imcger_imgupload_img_max_thumb_width', IMCGER_IMG_MAX_THUMB_WIDTH, 0, 99999) }}
47+
{{ common.number('imcger_imgupload_img_max_thumb_width', IMCGER_IMG_MAX_THUMB_WIDTH, 0, 99999) }}
3448
</dd>
3549
</dl>
3650
</fieldset>
@@ -40,28 +54,30 @@ <h1>{{ lang('ACP_IMCGER_IMGUPLOAD_TITLE') }}</h1>
4054
<dl>
4155
<dt><label for="imcger_imgupload_img_quality">{{ lang('ACP_IMCGER_IMAGE_QUALITY') ~ lang('COLON') }}</label><br><span>{{ lang('ACP_IMCGER_IMAGE_QUALITY_DESC') }}</span></dt>
4256
<dd>
43-
{{ _self.number('imcger_imgupload_img_quality', IMCGER_IMG_QUALITY, 50, 90) }}
57+
{{ common.number('imcger_imgupload_img_quality', IMCGER_IMG_QUALITY, 50, 90) }}
4458
</dd>
4559
</dl>
4660

4761
<dl>
4862
<dt><label for="imcger_imgupload_max_width">{{ lang('ACP_IMCGER_MAX_SIZE') ~ lang('COLON') }}</label><br><span>{{ lang('ACP_IMCGER_MAX_SIZE_DESC') }}</span></dt>
4963
<dd>
50-
{{ _self.number('imcger_imgupload_max_width', IMCGER_MAX_WIDTH, 0, 99999) }} x {{ _self.number('imcger_imgupload_max_height', IMCGER_MAX_HEIGHT, 0, 99999) }}
64+
{{ common.number('imcger_imgupload_max_width', IMCGER_MAX_WIDTH, 0, 99999) }} x {{ common.number('imcger_imgupload_max_height', IMCGER_MAX_HEIGHT, 0, 99999) }}
5165
</dd>
5266
</dl>
5367

5468
<dl>
55-
<dt><label for="imcger_imgupload_max_filesize">{{ lang('ACP_IMCGER_MAX_FILESIZE') ~ lang('COLON') }}</label><br><span>{{ lang('ACP_IMCGER_MAX_FILESIZE_DESC') }}</span></dt>
69+
<dt><label for="imcger_imgupload_max_filesize">{{ lang('ACP_IMCGER_FILESIZE_MAX') ~ lang('COLON') }}</label><br><span>{{ lang('ACP_IMCGER_FILESIZE_MAX_DESC') }}</span></dt>
5670
<dd>
57-
{{ _self.number('imcger_imgupload_max_filesize', IMCGER_MAX_FILESIZE, 0, 9999999999) }} <select name="size_select"><option value="b" {% if IMCGER_UNIT == 'b' %} selected{% endif %}>Bytes</option><option value="kb" {% if IMCGER_UNIT == 'kb' %} selected{% endif %}>KiB</option><option value="mb" {% if IMCGER_UNIT == 'mb' %} selected{% endif %}>MiB</option></select>
71+
{{ common.number('imcger_imgupload_max_filesize', IMCGER_FILESIZE_MAX, 0, 9999999999) }}
72+
{% set units = {'BYTES': 'b', 'KIB': 'kb', 'MBI': 'mb', } %}
73+
{{ common.select('unit_select', IMCGER_FILESIZE_UNIT, units) }}
5874
</dd>
5975
</dl>
6076

6177
<dl>
6278
<dt><label for="imcger_imgupload_del_exif">{{ lang('ACP_IMCGER_DEL_EXIF') ~ lang('COLON') }}</label><br><span>{{ lang('ACP_IMCGER_DEL_EXIF_DESC') }}</span></dt>
6379
<dd>
64-
{{ _self.switch('imcger_imgupload_del_exif', IMCGER_DEL_EXIF, switch_type) }}
80+
{{ common.switch('imcger_imgupload_del_exif', IMCGER_DEL_EXIF, switch_type) }}
6581
</dd>
6682
</dl>
6783
</fieldset>
@@ -72,7 +88,7 @@ <h1>{{ lang('ACP_IMCGER_IMGUPLOAD_TITLE') }}</h1>
7288
<dt><label for="imcger_imgupload_avatar_resize">{{ lang('ACP_IMCGER_AVATAR_RESIZE') ~ lang('COLON') }}</label><br><span>{{ lang('ACP_IMCGER_AVATAR_RESIZE_DESC') }}</span>
7389
{% if IMCGER_AVATAR_FILESIZE_ISSET %}<br><span style="color: red">{{ lang('ACP_IMCGER_AVATAR_FILESIZE_ISSET') }}</span>{% endif %}</dt>
7490
<dd>
75-
{{ _self.switch('imcger_imgupload_avatar_resize', IMCGER_AVATAR_RESIZE, switch_type) }}
91+
{{ common.switch('imcger_imgupload_avatar_resize', IMCGER_AVATAR_RESIZE, switch_type) }}
7692
</dd>
7793
</dl>
7894
</fieldset>
@@ -94,37 +110,3 @@ <h1>{{ lang('ACP_IMCGER_IMGUPLOAD_TITLE') }}</h1>
94110
</p>
95111

96112
{% INCLUDE 'overall_footer.html' %}
97-
98-
{% INCLUDECSS '@imcger_imgupload/acp_toggle.css' %}
99-
{% INCLUDECSS '@imcger_imgupload/acp_imgupload.css' %}
100-
{% INCLUDEJS '@imcger_imgupload/acp_imgupload.js' %}
101-
102-
{#
103-
Twig Macros
104-
@copyright (c) 2023 LukeWCS, https://github.com/LukeWCS
105-
#}
106-
107-
{% macro switch(name, checked = false, type = 'toggle') -%}
108-
{% if type == 'toggle' || type == 'checkbox' -%}
109-
<input type="checkbox"{{ type == 'toggle' ? ' class="toggle"' }} name="{{ name }}" value="1"{{ checked ? ' checked' }}>
110-
{%- elseif type == 'radio' -%}
111-
<label><input type="radio" class="radio" name="{{ name }}" value="1"{{ checked ? ' checked' }}> {{ lang('YES') }}</label>
112-
<label><input type="radio" class="radio" name="{{ name }}" value="0"{{ !checked ? ' checked' }}> {{ lang('NO') }}</label>
113-
{%- endif %}
114-
{%- endmacro %}
115-
116-
{% macro select(name, value, options) -%}
117-
<select name="{{ name }}">
118-
{% for opt_lang_var, opt_value in options %}
119-
<option value="{{ opt_value }}"{{ opt_value == value ? ' selected' }}>{{ lang(opt_lang_var) }}</option>
120-
{% endfor %}
121-
</select>
122-
{%- endmacro %}
123-
124-
{% macro number(name, value, min, max, step = 1, placeholder = '') -%}
125-
<input type="number" name="{{ name }}" value="{{ value }}" min="{{ min }}" max="{{ max }}" step="{{ step }}"{{ placeholder ? ' placeholder="' ~ placeholder ~ '"' }}>
126-
{%- endmacro %}
127-
128-
{% macro text(name, value, size = 10, placeholder = '', pattern = '') -%}
129-
<input type="text" name="{{ name }}" value="{{ value }}" size="{{ size }}"{{ placeholder ? ' placeholder="' ~ placeholder ~ '"' }}{{ pattern ? ' pattern="' ~ pattern ~ '"' }}>
130-
{%- endmacro %}

imcger/imgupload/composer.json

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,12 @@
33
"type": "phpbb-extension",
44
"description": "Using ImageMagick php librarie for resize image attachments and creating thumbnails.",
55
"homepage": "https://github.com/IMC-GER/phpBB-Image-upload-use-ImageMagick/tags",
6-
"version": "1.4.6",
7-
"time": "2024-07-14",
6+
"version": "1.5.0",
7+
"time": "2025-06-16",
88
"license": "GPL-2.0-only",
99
"authors": [
1010
{
1111
"name": "Thorsten Ahlers",
12-
"email": "",
1312
"homepage": "https://github.com/IMC-GER",
1413
"role": "Developer"
1514
},
@@ -19,7 +18,7 @@
1918
}
2019
],
2120
"require": {
22-
"php": ">=7.1.0",
21+
"php": ">=7.4.0",
2322
"phpbb/phpbb": "^3.3.0",
2423
"composer/installers": "~1.0",
2524
"ext-imagick": "*"

imcger/imgupload/controller/admin_controller.php

Lines changed: 13 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -10,39 +10,15 @@
1010

1111
namespace imcger\imgupload\controller;
1212

13-
/**
14-
* ACP Controller
15-
*/
1613
class admin_controller
1714
{
18-
/** @var config */
19-
protected $config;
20-
21-
/** @var template */
22-
protected $template;
23-
24-
/** @var language */
25-
protected $language;
26-
27-
/** @var request */
28-
protected $request;
15+
protected object $config;
16+
protected object $template;
17+
protected object $language;
18+
protected object $request;
19+
protected object $ext_manager;
20+
protected string $u_action;
2921

30-
/** @var \phpbb\extension\manager */
31-
protected $ext_manager;
32-
33-
/** @var string Custom form action */
34-
protected $u_action;
35-
36-
/**
37-
* Constructor
38-
*
39-
* @param \phpbb\config\config $config
40-
* @param \phpbb\template\template $template
41-
* @param \phpbb\language\language $language
42-
* @param \phpbb\request\request $request
43-
* @param \phpbb\extension\manager $ext_manager
44-
*
45-
*/
4622
public function __construct(
4723
\phpbb\config\config $config,
4824
\phpbb\template\template $template,
@@ -60,14 +36,10 @@ public function __construct(
6036

6137
/**
6238
* Display the options a user can configure for this extension
63-
*
64-
* @return null
65-
* @access public
6639
*/
67-
public function display_options()
40+
public function display_options(): void
6841
{
6942
// Add ACP lang file
70-
$this->language->add_lang('common', 'imcger/imgupload');
7143
$this->language->add_lang('acp/attachments');
7244

7345
add_form_key('imcger/imgupload');
@@ -98,8 +70,8 @@ public function display_options()
9870
'IMCGER_IMG_QUALITY' => $this->config['imcger_imgupload_img_quality'],
9971
'IMCGER_MAX_WIDTH' => $this->config['imcger_imgupload_max_width'],
10072
'IMCGER_MAX_HEIGHT' => $this->config['imcger_imgupload_max_height'],
101-
'IMCGER_MAX_FILESIZE' => $filesize['value'],
102-
'IMCGER_UNIT' => $filesize['si_identifier'],
73+
'IMCGER_FILESIZE_MAX' => $filesize['value'],
74+
'IMCGER_FILESIZE_UNIT' => $filesize['si_identifier'],
10375
'IMCGER_DEL_EXIF' => (bool) $this->config['img_strip_metadata'],
10476
'IMCGER_AVATAR_RESIZE' => (bool) $this->config['imcger_imgupload_avatar_resize'],
10577
'IMCGER_AVATAR_FILESIZE_ISSET' => (bool) $this->config['avatar_filesize'],
@@ -111,15 +83,12 @@ public function display_options()
11183

11284
/**
11385
* Store the variable to the db
114-
*
115-
* @return null
116-
* @access protected
11786
*/
118-
protected function set_variable()
87+
protected function set_variable(): void
11988
{
120-
$size_select = $this->request->variable('size_select', 'b');
89+
$unit_select = $this->request->variable('unit_select', 'b');
12190
$max_filesize = $this->request->variable('imcger_imgupload_max_filesize', 0);
122-
$max_filesize = ($size_select == 'kb') ? round($max_filesize * 1024) : (($size_select == 'mb') ? round($max_filesize * 1048576) : $max_filesize);
91+
$max_filesize = ($unit_select == 'kb') ? round($max_filesize * 1024) : (($unit_select == 'mb') ? round($max_filesize * 1048576) : $max_filesize);
12392

12493
$this->config->set('imcger_imgupload_tum_quality', $this->request->variable('imcger_imgupload_tum_quality', 80));
12594
$this->config->set('imcger_imgupload_img_quality', $this->request->variable('imcger_imgupload_img_quality', 80));
@@ -135,12 +104,8 @@ protected function set_variable()
135104

136105
/**
137106
* Set page url
138-
*
139-
* @param string $u_action Custom form action
140-
* @return null
141-
* @access public
142107
*/
143-
public function set_page_url($u_action)
108+
public function set_page_url(string $u_action): void
144109
{
145110
$this->u_action = $u_action;
146111
}

0 commit comments

Comments
 (0)