forked from phpbb-extensions/phpbb-ext-skeleton
-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathucp_controller.php.twig
More file actions
127 lines (108 loc) · 3.84 KB
/
ucp_controller.php.twig
File metadata and controls
127 lines (108 loc) · 3.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<?php
/**
*
* {{ EXTENSION.extension_display_name }}. An extension for the phpBB Forum Software package.
*
* @copyright (c) {{ "now"|date("Y") ~ (AUTHORS.0.author_name ? ', ' ~ AUTHORS.0.author_name) ~ (AUTHORS.0.author_homepage ? ', ' ~ AUTHORS.0.author_homepage) }}
* @license GNU General Public License, version 2 (GPL-2.0)
*
*/
namespace {{ EXTENSION.vendor_name }}\{{ EXTENSION.extension_name }}\controller;
/**
* {{ EXTENSION.extension_display_name }} UCP controller.
*/
class ucp_controller
{
/** @var \phpbb\db\driver\driver_interface */
protected $db;
{% if LANGUAGE.object == 'language' %}
/** @var \phpbb\language\language */
protected $language;
{% endif %}
/** @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\db\driver\driver_interface $db Database object
{% if LANGUAGE.object == 'language' %}
* @param \phpbb\language\language $language Language object
{% endif %}
* @param \phpbb\request\request $request Request object
* @param \phpbb\template\template $template Template object
* @param \phpbb\user $user User object
*/
public function __construct(\phpbb\db\driver\driver_interface $db, {% if LANGUAGE.object == 'language' %}\phpbb\language\language $language, {% endif %}\phpbb\request\request $request, \phpbb\template\template $template, \phpbb\user $user)
{
$this->db = $db;
{% if LANGUAGE.object == 'language' %}
$this->language = $language;
{% endif %}
$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()
{
// Create a form key for preventing CSRF attacks
add_form_key('{{ EXTENSION.vendor_name|lower }}_{{ EXTENSION.extension_name|lower }}_ucp');
// Create an array to collect errors that will be output to the user
$errors = [];
// Request the options the user can configure
$data = [
'user_{{ EXTENSION.extension_name|lower }}' => $this->request->variable('user_{{ EXTENSION.extension_name|lower }}', $this->user->data['user_{{ EXTENSION.extension_name|lower }}']),
];
// 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('{{ EXTENSION.vendor_name|lower }}_{{ EXTENSION.extension_name|lower }}_ucp'))
{
$errors[] = $this->{{ LANGUAGE.object }}->lang('FORM_INVALID');
}
// If no errors, process the form data
if (empty($errors))
{
// Set the options the user configured
$sql = 'UPDATE ' . USERS_TABLE . '
SET ' . $this->db->sql_build_array('UPDATE', $data) . '
WHERE user_id = ' . (int) $this->user->data['user_id'];
$this->db->sql_query($sql);
// Option settings have been updated
// Confirm this to the user and provide (automated) link back to previous page
meta_refresh(3, $this->u_action);
$message = $this->{{ LANGUAGE.object }}->lang('UCP_{{ EXTENSION.extension_name|upper }}_SAVED') . '<br><br>' . $this->{{ LANGUAGE.object }}->lang('RETURN_UCP', '<a href="' . $this->u_action . '">', '</a>');
trigger_error($message);
}
}
$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_UCP_ACTION' => $this->u_action,
'S_USER_{{ EXTENSION.extension_name|upper }}' => $data['user_{{ EXTENSION.extension_name|lower }}'],
]);
}
/**
* 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;
}
}