Completed
Push — master ( fc12da...5e2dd8 )
by Matt
07:52 queued 03:39
created

abbc3_module::save_settings()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 9
rs 9.9666
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
/**
3
 *
4
 * Advanced BBCode Box
5
 *
6
 * @copyright (c) 2020 Matt Friedman
7
 * @license GNU General Public License, version 2 (GPL-2.0)
8
 *
9
 */
10
11
namespace vse\abbc3\acp;
12
13
class abbc3_module
14
{
15
	/** @var \phpbb\cache\driver\driver_interface */
16
	protected $cache;
17
18
	/** @var \phpbb\config\config */
19
	protected $config;
20
21
	/** @var \Symfony\Component\DependencyInjection\ContainerInterface */
22
	protected $container;
23
24
	/** @var \phpbb\db\driver\driver_interface */
25
	protected $db;
26
27
	/** @var \phpbb\language\language */
28
	protected $language;
29
30
	/** @var \phpbb\request\request */
31
	protected $request;
32
33
	/** @var \phpbb\template\template */
34
	protected $template;
35
36
	/** @var string */
37
	public $page_title;
38
39
	/** @var string */
40
	public $tpl_name;
41
42
	/** @var string */
43
	public $u_action;
44
45
	/**
46
	 * Constructor
47
	 */
48
	public function __construct()
49
	{
50
		global $phpbb_container;
51
52
		$this->container = $phpbb_container;
53
		$this->cache     = $this->container->get('cache');
54
		$this->config    = $this->container->get('config');
55
		$this->db        = $this->container->get('dbal.conn');
56
		$this->language  = $this->container->get('language');
57
		$this->request   = $this->container->get('request');
58
		$this->template  = $this->container->get('template');
59
	}
60
61
	/**
62
	 * Main ACP module
63
	 */
64
	public function main()
65
	{
66
		$this->language->add_lang('abbc3', 'vse/abbc3');
67
68
		$this->tpl_name   = 'acp_abbc3_settings';
69
		$this->page_title = $this->language->lang('ACP_ABBC3_SETTINGS');
70
71
		$form_key = 'vse/abbc3';
72
		add_form_key($form_key);
73
74
		if ($this->request->is_set_post('submit'))
75
		{
76
			if (!check_form_key($form_key))
77
			{
78
				trigger_error('FORM_INVALID', E_USER_WARNING);
79
			}
80
81
			$this->save_settings();
82
		}
83
84
		$this->display_settings();
85
	}
86
87
	/**
88
	 * Add settings template vars to the form
89
	 */
90
	protected function display_settings()
91
	{
92
		$this->template->assign_vars([
93
			'S_ABBC3_PIPES'			=> $this->config['abbc3_pipes'],
94
			'S_ABBC3_BBCODE_BAR'	=> $this->config['abbc3_bbcode_bar'],
95
			'S_ABBC3_QR_BBCODES'	=> $this->config['abbc3_qr_bbcodes'],
96
			'S_ABBC3_ICONS_TYPE'	=> build_select(['png' => 'PNG', 'svg' => 'SVG'], $this->config['abbc3_icons_type']),
97
			'U_ACTION'				=> $this->u_action,
98
		]);
99
	}
100
101
	/**
102
	 * Save settings data to the database
103
	 */
104
	protected function save_settings()
105
	{
106
		$this->config->set('abbc3_bbcode_bar', $this->request->variable('abbc3_bbcode_bar', 0));
107
		$this->config->set('abbc3_qr_bbcodes', $this->request->variable('abbc3_qr_bbcodes', 0));
108
		$this->config->set('abbc3_icons_type', $this->request->variable('abbc3_icons_type', 'png'));
109
		$this->save_pipes();
110
111
		trigger_error($this->language->lang('CONFIG_UPDATED') . adm_back_link($this->u_action));
112
	}
113
114
	/**
115
	 * Save the Pipes Table setting.
116
	 * - Set the config
117
	 * - Show or hide the Pipes BBCode button
118
	 * - Purge BBCode caches.
119
	 */
120
	protected function save_pipes()
121
	{
122
		$enable_pipes = $this->request->variable('abbc3_pipes', 0);
123
124
		$this->config->set('abbc3_pipes', $enable_pipes);
125
126
		$sql = 'UPDATE ' . BBCODES_TABLE . '
127
			SET display_on_posting = ' . (int) $enable_pipes . "
128
			WHERE bbcode_tag = 'pipes'";
129
		$this->db->sql_query($sql);
130
131
		$this->cache->destroy($this->container->getParameter('text_formatter.cache.parser.key'));
132
		$this->cache->destroy($this->container->getParameter('text_formatter.cache.renderer.key'));
133
	}
134
}
135