Skip to content

Commit e062343

Browse files
authored
Merge pull request #39 from iMattPro/overhaul
Modernize acme demo codebase
2 parents 994152e + 64a26ac commit e062343

26 files changed

+732
-370
lines changed

acp/main_info.php

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,32 @@
11
<?php
22
/**
3-
*
4-
* @package phpBB Extension - Acme Demo
5-
* @copyright (c) 2013 phpBB Group
6-
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
7-
*
8-
*/
3+
*
4+
* Acme Demo Extension. An extension for the phpBB Forum Software package.
5+
*
6+
* @copyright (c) 2013, Joas Schilling, https://github.com/nickvergessen/
7+
* @license GNU General Public License, version 2 (GPL-2.0)
8+
*
9+
*/
910

1011
namespace acme\demo\acp;
1112

13+
/**
14+
* Acme Demo Extension ACP module info.
15+
*/
1216
class main_info
1317
{
14-
function module()
18+
public function module()
1519
{
16-
return array(
20+
return [
1721
'filename' => '\acme\demo\acp\main_module',
1822
'title' => 'ACP_DEMO_TITLE',
19-
'modes' => array(
20-
'settings' => array(
23+
'modes' => [
24+
'settings' => [
2125
'title' => 'ACP_DEMO',
2226
'auth' => 'ext_acme/demo && acl_a_board',
23-
'cat' => array('ACP_DEMO_TITLE')
24-
),
25-
),
26-
);
27+
'cat' => ['ACP_DEMO_TITLE'],
28+
],
29+
],
30+
];
2731
}
2832
}

acp/main_module.php

Lines changed: 33 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,48 @@
11
<?php
22
/**
3-
*
4-
* @package phpBB Extension - Acme Demo
5-
* @copyright (c) 2013 phpBB Group
6-
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
7-
*
8-
*/
3+
*
4+
* Acme Demo Extension. An extension for the phpBB Forum Software package.
5+
*
6+
* @copyright (c) 2013, Joas Schilling, https://github.com/nickvergessen/
7+
* @license GNU General Public License, version 2 (GPL-2.0)
8+
*
9+
*/
910

1011
namespace acme\demo\acp;
1112

13+
/**
14+
* Acme Demo Extension ACP module.
15+
*/
1216
class main_module
1317
{
14-
var $u_action;
15-
16-
function main($id, $mode)
18+
public $page_title;
19+
public $tpl_name;
20+
public $u_action;
21+
22+
/**
23+
* Main ACP module
24+
*
25+
* @param int $id The module ID
26+
* @param string $mode The module mode (for example: manage or settings)
27+
* @throws \Exception
28+
*/
29+
public function main($id, $mode)
1730
{
18-
global $config, $request, $template, $user;
31+
global $phpbb_container;
1932

20-
$user->add_lang('acp/common');
21-
$this->tpl_name = 'demo_body';
22-
$this->page_title = $user->lang('ACP_DEMO_TITLE');
23-
add_form_key('acme/demo');
33+
/** @var \acme\demo\controller\acp_controller $acp_controller */
34+
$acp_controller = $phpbb_container->get('acme.demo.controller.acp');
2435

25-
if ($request->is_set_post('submit'))
26-
{
27-
if (!check_form_key('acme/demo'))
28-
{
29-
trigger_error('FORM_INVALID');
30-
}
36+
// Load a template from adm/style for our ACP page
37+
$this->tpl_name = 'acp_demo_body';
3138

32-
$config->set('acme_demo_goodbye', $request->variable('acme_demo_goodbye', 0));
39+
// Set the page title for our ACP page
40+
$this->page_title = 'ACP_DEMO_TITLE';
3341

34-
trigger_error($user->lang('ACP_DEMO_SETTING_SAVED') . adm_back_link($this->u_action));
35-
}
42+
// Make the $u_action url available in our ACP controller
43+
$acp_controller->set_page_url($this->u_action);
3644

37-
$template->assign_vars(array(
38-
'U_ACTION' => $this->u_action,
39-
'ACME_DEMO_GOODBYE' => $config['acme_demo_goodbye'],
40-
));
45+
// Load the display options handle in our ACP controller
46+
$acp_controller->display_options();
4147
}
4248
}

adm/style/acp_demo_body.html

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
{% include 'overall_header.html' %}
2+
3+
<h1>{{ lang('ACP_DEMO_TITLE') }}</h1>
4+
5+
{% if S_ERROR %}
6+
<div class="errorbox">
7+
<h3>{{ lang('WARNING') }}</h3>
8+
<p>{{ ERROR_MSG }}</p>
9+
</div>
10+
{% endif %}
11+
12+
<form id="acme_demo_acp" name="acme_demo_acp" method="post" action="{{ U_ACTION }}">
13+
14+
<fieldset>
15+
<legend>{{ lang('SETTINGS') }}</legend>
16+
<dl>
17+
<dt><label for="acme_demo_goodbye">{{ lang('ACP_DEMO_GOODBYE') ~ lang('COLON') }}</label></dt>
18+
<dd>
19+
<label><input type="radio" class="radio" name="acme_demo_goodbye" value="1"{% if ACME_DEMO_GOODBYE %} checked="checked"{% endif %}> {{ lang('YES') }}</label>
20+
<label><input type="radio" class="radio" name="acme_demo_goodbye" value="0"{% if not ACME_DEMO_GOODBYE %} checked="checked"{% endif %}> {{ lang('NO') }}</label>
21+
</dd>
22+
</dl>
23+
</fieldset>
24+
25+
<fieldset class="submit-buttons">
26+
<input class="button1" type="submit" id="submit" name="submit" value="{{ lang('SUBMIT') }}">&nbsp;
27+
<input class="button2" type="submit" id="preview" name="preview" value="{{ lang('PREVIEW') }}">
28+
{{ S_FORM_TOKEN }}
29+
</fieldset>
30+
31+
</form>
32+
33+
{% include 'overall_footer.html' %}

adm/style/demo_body.html

Lines changed: 0 additions & 22 deletions
This file was deleted.

composer.json

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,27 @@
11
{
22
"name": "acme/demo",
33
"type": "phpbb-extension",
4-
"description": "Acme Demo Extension for phpBB 3.1",
4+
"description": "Acme Demo Extension for phpBB 3.3",
55
"homepage": "https://github.com/phpbb/phpbb-ext-acme-demo",
6-
"version": "0.1.0",
6+
"version": "0.2.0",
77
"time": "2013-11-05",
8-
"license": "GPL-2.0",
9-
"authors": [{
8+
"license": "GPL-2.0-only",
9+
"authors": [
10+
{
1011
"name": "Joas Schilling",
1112
"email": "nickvergessen@gmx.de",
1213
"homepage": "https://github.com/nickvergessen/",
1314
"role": "Lead Developer"
14-
}],
15+
}
16+
],
1517
"require": {
16-
"php": ">=5.3.3",
17-
"composer/installers": "~1.0"
18-
},
19-
"require-dev": {
20-
"phpbb/epv": "dev-master"
18+
"php": ">=7.2",
19+
"composer/installers": "^1.0 || ^2.0"
2120
},
2221
"extra": {
2322
"display-name": "Acme Demo Extension",
2423
"soft-require": {
25-
"phpbb/phpbb": ">=3.1.0-RC2,<3.2@dev"
24+
"phpbb/phpbb": ">=3.3.0"
2625
}
2726
}
2827
}

config/parameters.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
parameters:
2+
acme.demo.tables.demo_table: '%core.table_prefix%acme_demo_table'

config/routing.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
acme_demo_controller:
22
path: /demo/{name}
3-
defaults: { _controller: acme.demo.controller:handle }
3+
defaults: { _controller: acme.demo.controller.main:handle }

config/services.yml

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,37 @@
1+
imports:
2+
- { resource: parameters.yml }
3+
14
services:
2-
acme.demo.controller:
3-
class: acme\demo\controller\main
5+
acme.demo.controller.main:
6+
class: acme\demo\controller\main_controller
47
arguments:
58
- '@config'
69
- '@controller.helper'
710
- '@template'
11+
- '@language'
12+
13+
acme.demo.controller.acp:
14+
class: acme\demo\controller\acp_controller
15+
arguments:
16+
- '@config'
17+
- '@language'
18+
- '@log'
19+
- '@request'
20+
- '@template'
21+
- '@user'
22+
23+
acme.demo.service:
24+
class: acme\demo\service
25+
arguments:
826
- '@user'
27+
- '%acme.demo.tables.demo_table%'
28+
929
acme.demo.listener:
1030
class: acme\demo\event\main_listener
1131
arguments:
32+
- '@language'
1233
- '@controller.helper'
1334
- '@template'
35+
- '%core.php_ext%'
1436
tags:
1537
- { name: event.listener }

controller/acp_controller.php

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
<?php
2+
/**
3+
*
4+
* Acme Demo Extension. An extension for the phpBB Forum Software package.
5+
*
6+
* @copyright (c) 2026, Joas Schilling, https://github.com/nickvergessen/
7+
* @license GNU General Public License, version 2 (GPL-2.0)
8+
*
9+
*/
10+
11+
namespace acme\demo\controller;
12+
13+
/**
14+
* Acme Demo Extension ACP controller.
15+
*/
16+
class acp_controller
17+
{
18+
/** @var \phpbb\config\config */
19+
protected $config;
20+
21+
/** @var \phpbb\language\language */
22+
protected $language;
23+
24+
/** @var \phpbb\log\log */
25+
protected $log;
26+
27+
/** @var \phpbb\request\request */
28+
protected $request;
29+
30+
/** @var \phpbb\template\template */
31+
protected $template;
32+
33+
/** @var \phpbb\user */
34+
protected $user;
35+
36+
/** @var string Custom form action */
37+
protected $u_action;
38+
39+
/**
40+
* Constructor.
41+
*
42+
* @param \phpbb\config\config $config Config object
43+
* @param \phpbb\language\language $language Language object
44+
* @param \phpbb\log\log $log Log object
45+
* @param \phpbb\request\request $request Request object
46+
* @param \phpbb\template\template $template Template object
47+
* @param \phpbb\user $user User object
48+
*/
49+
public function __construct(\phpbb\config\config $config, \phpbb\language\language $language, \phpbb\log\log $log, \phpbb\request\request $request, \phpbb\template\template $template, \phpbb\user $user)
50+
{
51+
$this->config = $config;
52+
$this->language = $language;
53+
$this->log = $log;
54+
$this->request = $request;
55+
$this->template = $template;
56+
$this->user = $user;
57+
}
58+
59+
/**
60+
* Display the options a user can configure for this extension.
61+
*
62+
* @return void
63+
*/
64+
public function display_options()
65+
{
66+
// Add our common language file
67+
$this->language->add_lang('common', 'acme/demo');
68+
69+
// Create a form key for preventing CSRF attacks
70+
add_form_key('acme_demo_acp');
71+
72+
// Create an array to collect errors that will be output to the user
73+
$errors = [];
74+
75+
// Is the form being submitted to us?
76+
if ($this->request->is_set_post('submit'))
77+
{
78+
// Test if the submitted form is valid
79+
if (!check_form_key('acme_demo_acp'))
80+
{
81+
$errors[] = $this->language->lang('FORM_INVALID');
82+
}
83+
84+
// If no errors, process the form data
85+
if (empty($errors))
86+
{
87+
// Set the options the user configured
88+
$this->config->set('acme_demo_goodbye', $this->request->variable('acme_demo_goodbye', 0));
89+
90+
// Add option settings change action to the admin log
91+
$this->log->add('admin', $this->user->data['user_id'], $this->user->ip, 'LOG_ACP_DEMO_SETTINGS');
92+
93+
// Option settings have been updated and logged
94+
// Confirm this to the user and provide link back to previous page
95+
trigger_error($this->language->lang('ACP_DEMO_SETTING_SAVED') . adm_back_link($this->u_action));
96+
}
97+
}
98+
99+
$s_errors = !empty($errors);
100+
101+
// Set output variables for display in the template
102+
$this->template->assign_vars([
103+
'S_ERROR' => $s_errors,
104+
'ERROR_MSG' => $s_errors ? implode('<br>', $errors) : '',
105+
106+
'U_ACTION' => $this->u_action,
107+
108+
'ACME_DEMO_GOODBYE' => (bool) $this->config['acme_demo_goodbye'],
109+
]);
110+
}
111+
112+
/**
113+
* Set custom form action.
114+
*
115+
* @param string $u_action Custom form action
116+
* @return void
117+
*/
118+
public function set_page_url($u_action)
119+
{
120+
$this->u_action = $u_action;
121+
}
122+
}

0 commit comments

Comments
 (0)