Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 18 additions & 14 deletions acp/main_info.php
Original file line number Diff line number Diff line change
@@ -1,28 +1,32 @@
<?php
/**
*
* @package phpBB Extension - Acme Demo
* @copyright (c) 2013 phpBB Group
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
*
*/
*
* Acme Demo Extension. An extension for the phpBB Forum Software package.
*
* @copyright (c) 2013, Joas Schilling, https://github.com/nickvergessen/
* @license GNU General Public License, version 2 (GPL-2.0)
*
*/

namespace acme\demo\acp;

/**
* Acme Demo Extension ACP module info.
*/
class main_info
{
function module()
public function module()
{
return array(
return [
'filename' => '\acme\demo\acp\main_module',
'title' => 'ACP_DEMO_TITLE',
'modes' => array(
'settings' => array(
'modes' => [
'settings' => [
'title' => 'ACP_DEMO',
'auth' => 'ext_acme/demo && acl_a_board',
'cat' => array('ACP_DEMO_TITLE')
),
),
);
'cat' => ['ACP_DEMO_TITLE'],
],
],
];
}
}
60 changes: 33 additions & 27 deletions acp/main_module.php
Original file line number Diff line number Diff line change
@@ -1,42 +1,48 @@
<?php
/**
*
* @package phpBB Extension - Acme Demo
* @copyright (c) 2013 phpBB Group
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
*
*/
*
* Acme Demo Extension. An extension for the phpBB Forum Software package.
*
* @copyright (c) 2013, Joas Schilling, https://github.com/nickvergessen/
* @license GNU General Public License, version 2 (GPL-2.0)
*
*/

namespace acme\demo\acp;

/**
* Acme Demo Extension ACP module.
*/
class main_module
{
var $u_action;

function main($id, $mode)
public $page_title;
public $tpl_name;
public $u_action;

/**
* Main ACP module
*
* @param int $id The module ID
* @param string $mode The module mode (for example: manage or settings)
* @throws \Exception
*/
public function main($id, $mode)
{
global $config, $request, $template, $user;
global $phpbb_container;

$user->add_lang('acp/common');
$this->tpl_name = 'demo_body';
$this->page_title = $user->lang('ACP_DEMO_TITLE');
add_form_key('acme/demo');
/** @var \acme\demo\controller\acp_controller $acp_controller */
$acp_controller = $phpbb_container->get('acme.demo.controller.acp');

if ($request->is_set_post('submit'))
{
if (!check_form_key('acme/demo'))
{
trigger_error('FORM_INVALID');
}
// Load a template from adm/style for our ACP page
$this->tpl_name = 'acp_demo_body';

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

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

$template->assign_vars(array(
'U_ACTION' => $this->u_action,
'ACME_DEMO_GOODBYE' => $config['acme_demo_goodbye'],
));
// Load the display options handle in our ACP controller
$acp_controller->display_options();
}
}
33 changes: 33 additions & 0 deletions adm/style/acp_demo_body.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{% include 'overall_header.html' %}

<h1>{{ lang('ACP_DEMO_TITLE') }}</h1>

{% if S_ERROR %}
<div class="errorbox">
<h3>{{ lang('WARNING') }}</h3>
<p>{{ ERROR_MSG }}</p>
</div>
{% endif %}

<form id="acme_demo_acp" name="acme_demo_acp" method="post" action="{{ U_ACTION }}">

<fieldset>
<legend>{{ lang('SETTINGS') }}</legend>
<dl>
<dt><label for="acme_demo_goodbye">{{ lang('ACP_DEMO_GOODBYE') ~ lang('COLON') }}</label></dt>
<dd>
<label><input type="radio" class="radio" name="acme_demo_goodbye" value="1"{% if ACME_DEMO_GOODBYE %} checked="checked"{% endif %}> {{ lang('YES') }}</label>
<label><input type="radio" class="radio" name="acme_demo_goodbye" value="0"{% if not ACME_DEMO_GOODBYE %} checked="checked"{% endif %}> {{ lang('NO') }}</label>
</dd>
</dl>
</fieldset>

<fieldset class="submit-buttons">
<input class="button1" type="submit" id="submit" name="submit" value="{{ lang('SUBMIT') }}">&nbsp;
<input class="button2" type="submit" id="preview" name="preview" value="{{ lang('PREVIEW') }}">
{{ S_FORM_TOKEN }}
</fieldset>

</form>

{% include 'overall_footer.html' %}
22 changes: 0 additions & 22 deletions adm/style/demo_body.html

This file was deleted.

21 changes: 10 additions & 11 deletions composer.json
Original file line number Diff line number Diff line change
@@ -1,28 +1,27 @@
{
"name": "acme/demo",
"type": "phpbb-extension",
"description": "Acme Demo Extension for phpBB 3.1",
"description": "Acme Demo Extension for phpBB 3.3",
"homepage": "https://github.com/phpbb/phpbb-ext-acme-demo",
"version": "0.1.0",
"version": "0.2.0",
"time": "2013-11-05",
"license": "GPL-2.0",
"authors": [{
"license": "GPL-2.0-only",
"authors": [
{
"name": "Joas Schilling",
"email": "nickvergessen@gmx.de",
"homepage": "https://github.com/nickvergessen/",
"role": "Lead Developer"
}],
}
],
"require": {
"php": ">=5.3.3",
"composer/installers": "~1.0"
},
"require-dev": {
"phpbb/epv": "dev-master"
"php": ">=7.2",
"composer/installers": "^1.0 || ^2.0"
},
"extra": {
"display-name": "Acme Demo Extension",
"soft-require": {
"phpbb/phpbb": ">=3.1.0-RC2,<3.2@dev"
"phpbb/phpbb": ">=3.3.0"
}
}
}
2 changes: 2 additions & 0 deletions config/parameters.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
parameters:
acme.demo.tables.demo_table: '%core.table_prefix%acme_demo_table'
2 changes: 1 addition & 1 deletion config/routing.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
acme_demo_controller:
path: /demo/{name}
defaults: { _controller: acme.demo.controller:handle }
defaults: { _controller: acme.demo.controller.main:handle }
26 changes: 24 additions & 2 deletions config/services.yml
Original file line number Diff line number Diff line change
@@ -1,15 +1,37 @@
imports:
- { resource: parameters.yml }

services:
acme.demo.controller:
class: acme\demo\controller\main
acme.demo.controller.main:
class: acme\demo\controller\main_controller
arguments:
- '@config'
- '@controller.helper'
- '@template'
- '@language'

acme.demo.controller.acp:
class: acme\demo\controller\acp_controller
arguments:
- '@config'
- '@language'
- '@log'
- '@request'
- '@template'
- '@user'

acme.demo.service:
class: acme\demo\service
arguments:
- '@user'
- '%acme.demo.tables.demo_table%'

acme.demo.listener:
class: acme\demo\event\main_listener
arguments:
- '@language'
- '@controller.helper'
- '@template'
- '%core.php_ext%'
tags:
- { name: event.listener }
122 changes: 122 additions & 0 deletions controller/acp_controller.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
<?php
/**
*
* Acme Demo Extension. An extension for the phpBB Forum Software package.
*
* @copyright (c) 2026, Joas Schilling, https://github.com/nickvergessen/
* @license GNU General Public License, version 2 (GPL-2.0)
*
*/

namespace acme\demo\controller;

/**
* Acme Demo Extension ACP controller.
*/
class acp_controller
{
/** @var \phpbb\config\config */
protected $config;

/** @var \phpbb\language\language */
protected $language;

/** @var \phpbb\log\log */
protected $log;

/** @var \phpbb\request\request */
protected $request;

/** @var \phpbb\template\template */
protected $template;

/** @var \phpbb\user */
protected $user;

/** @var string Custom form action */
protected $u_action;

/**
* Constructor.
*
* @param \phpbb\config\config $config Config object
* @param \phpbb\language\language $language Language object
* @param \phpbb\log\log $log Log object
* @param \phpbb\request\request $request Request object
* @param \phpbb\template\template $template Template object
* @param \phpbb\user $user User object
*/
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)
{
$this->config = $config;
$this->language = $language;
$this->log = $log;
$this->request = $request;
$this->template = $template;
$this->user = $user;
}

/**
* Display the options a user can configure for this extension.
*
* @return void
*/
public function display_options()
{
// Add our common language file
$this->language->add_lang('common', 'acme/demo');

// Create a form key for preventing CSRF attacks
add_form_key('acme_demo_acp');

// Create an array to collect errors that will be output to the user
$errors = [];

// Is the form being submitted to us?
if ($this->request->is_set_post('submit'))
{
// Test if the submitted form is valid
if (!check_form_key('acme_demo_acp'))
{
$errors[] = $this->language->lang('FORM_INVALID');
}

// If no errors, process the form data
if (empty($errors))
{
// Set the options the user configured
$this->config->set('acme_demo_goodbye', $this->request->variable('acme_demo_goodbye', 0));

// Add option settings change action to the admin log
$this->log->add('admin', $this->user->data['user_id'], $this->user->ip, 'LOG_ACP_DEMO_SETTINGS');

// Option settings have been updated and logged
// Confirm this to the user and provide link back to previous page
trigger_error($this->language->lang('ACP_DEMO_SETTING_SAVED') . adm_back_link($this->u_action));
}
}

$s_errors = !empty($errors);

// Set output variables for display in the template
$this->template->assign_vars([
'S_ERROR' => $s_errors,
'ERROR_MSG' => $s_errors ? implode('<br>', $errors) : '',

'U_ACTION' => $this->u_action,

'ACME_DEMO_GOODBYE' => (bool) $this->config['acme_demo_goodbye'],
]);
}

/**
* Set custom form action.
*
* @param string $u_action Custom form action
* @return void
*/
public function set_page_url($u_action)
{
$this->u_action = $u_action;
}
}
Loading