Completed
Pull Request — master (#37)
by
unknown
02:10
created
event/base.php 1 patch
Indentation   +118 added lines, -118 removed lines patch added patch discarded remove patch
@@ -15,134 +15,134 @@
 block discarded – undo
15 15
 class base
16 16
 {
17 17
 
18
-	/** @var \phpbb\auth\auth */
19
-	protected $auth;
18
+    /** @var \phpbb\auth\auth */
19
+    protected $auth;
20 20
 
21
-	/** @var \phpbb\config\config */
22
-	protected $config;
21
+    /** @var \phpbb\config\config */
22
+    protected $config;
23 23
 
24
-	/** @var string phpbb_root_path */
25
-	protected $phpbb_root_path;
24
+    /** @var string phpbb_root_path */
25
+    protected $phpbb_root_path;
26 26
 
27
-	/**
28
-	 * Constructor
29
-	 *
30
-	 * @param \phpbb\auth\auth				auth					Authentication object
31
-	 * @param \phpbb\config\config			$config					Config Object
32
-	 * @param string						$phpbb_root_path		phpbb_root_path
33
-	 * @access public
34
-	 */
35
-	public function __construct(\phpbb\auth\auth $auth, \phpbb\config\config $config, $phpbb_root_path)
36
-	{
37
-		$this->auth = $auth;
38
-		$this->config = $config;
39
-		$this->phpbb_root_path = $phpbb_root_path;
40
-	}
27
+    /**
28
+     * Constructor
29
+     *
30
+     * @param \phpbb\auth\auth				auth					Authentication object
31
+     * @param \phpbb\config\config			$config					Config Object
32
+     * @param string						$phpbb_root_path		phpbb_root_path
33
+     * @access public
34
+     */
35
+    public function __construct(\phpbb\auth\auth $auth, \phpbb\config\config $config, $phpbb_root_path)
36
+    {
37
+        $this->auth = $auth;
38
+        $this->config = $config;
39
+        $this->phpbb_root_path = $phpbb_root_path;
40
+    }
41 41
 
42
-	/**
43
-	 * Generate the SEO link for a topic
44
-	 *
45
-	 * @param	int		$forum_id		The ID of the forum
46
-	 * @param	string	$forum_name		The title of the forum
47
-	 * @param	int		$topic_id		The ID if the topic
48
-	 * @param	string	$topic_title	The title of the topic
49
-	 * @param	int		$start			Optional start parameter
50
-	 * @param	bool	$full			Return the full URL
51
-	 * @return	string	The SEO URL
52
-	 * @access private
53
-	 */
54
-	public function generate_topic_link($forum_id, $forum_name, $topic_id, $topic_title, $start = 0, $full = false)
55
-	{
56
-		if ($full)
57
-		{
58
-			return generate_board_url() . '/' . $this->title_to_url($forum_name) . '-f' . $forum_id . '/' . $this->title_to_url($topic_title) . '-t' . $topic_id . ($start ? '-s' . $start : '') . '.html';
59
-		}
60
-		return $this->phpbb_root_path . $this->title_to_url($forum_name) . '-f' . $forum_id . '/' . $this->title_to_url($topic_title) . '-t' . $topic_id . ($start ? '-s' . $start : '') . '.html';
61
-	}
42
+    /**
43
+     * Generate the SEO link for a topic
44
+     *
45
+     * @param	int		$forum_id		The ID of the forum
46
+     * @param	string	$forum_name		The title of the forum
47
+     * @param	int		$topic_id		The ID if the topic
48
+     * @param	string	$topic_title	The title of the topic
49
+     * @param	int		$start			Optional start parameter
50
+     * @param	bool	$full			Return the full URL
51
+     * @return	string	The SEO URL
52
+     * @access private
53
+     */
54
+    public function generate_topic_link($forum_id, $forum_name, $topic_id, $topic_title, $start = 0, $full = false)
55
+    {
56
+        if ($full)
57
+        {
58
+            return generate_board_url() . '/' . $this->title_to_url($forum_name) . '-f' . $forum_id . '/' . $this->title_to_url($topic_title) . '-t' . $topic_id . ($start ? '-s' . $start : '') . '.html';
59
+        }
60
+        return $this->phpbb_root_path . $this->title_to_url($forum_name) . '-f' . $forum_id . '/' . $this->title_to_url($topic_title) . '-t' . $topic_id . ($start ? '-s' . $start : '') . '.html';
61
+    }
62 62
 
63
-	/**
64
-	 * Generate the SEO link for a forum
65
-	 *
66
-	 * @param	int		$forum_id		The ID of the forum
67
-	 * @param	string	$forum_name		The title of the forum
68
-	 * @param	int		$start			Optional start parameter
69
-	 * @param	bool	$full			Return the full URL
70
-	 * @return	string	The SEO URL
71
-	 * @access private
72
-	 */
73
-	public function generate_forum_link($forum_id, $forum_name, $start = 0, $full = false)
74
-	{
75
-		if ($full)
76
-		{
77
-			return generate_board_url() . '/' . $this->title_to_url($forum_name) . '-f' . $forum_id . '/' . ($start ? 'index-s' . $start . '.html' : '');
78
-		}
79
-		return $this->phpbb_root_path . $this->title_to_url($forum_name) . '-f' . $forum_id . '/' . ($start ? 'index-s' . $start . '.html' : '');
80
-	}
63
+    /**
64
+     * Generate the SEO link for a forum
65
+     *
66
+     * @param	int		$forum_id		The ID of the forum
67
+     * @param	string	$forum_name		The title of the forum
68
+     * @param	int		$start			Optional start parameter
69
+     * @param	bool	$full			Return the full URL
70
+     * @return	string	The SEO URL
71
+     * @access private
72
+     */
73
+    public function generate_forum_link($forum_id, $forum_name, $start = 0, $full = false)
74
+    {
75
+        if ($full)
76
+        {
77
+            return generate_board_url() . '/' . $this->title_to_url($forum_name) . '-f' . $forum_id . '/' . ($start ? 'index-s' . $start . '.html' : '');
78
+        }
79
+        return $this->phpbb_root_path . $this->title_to_url($forum_name) . '-f' . $forum_id . '/' . ($start ? 'index-s' . $start . '.html' : '');
80
+    }
81 81
 
82
-	/**
83
-	 *
84
-	 * @global	type	$_SID
85
-	 * @param	int		$replies	Replays in the topic
86
-	 * @param	string	$url		URL oft the topic
87
-	 * @return	string				The URL with start included
88
-	 */
89
-	public function generate_lastpost_link($replies, $url)
90
-	{
91
-		$url = str_replace('.html', '', $url);
92
-		$per_page = ($this->config['posts_per_page'] <= 0) ? 1 : $this->config['posts_per_page'];
93
-		$last_post_link = '';
94
-		if (($replies + 1) > $per_page)
95
-		{
96
-			for ($j = 0; $j < $replies + 1; $j += $per_page)
97
-			{
98
-				$last_post_link = $url . '-s' . $j . '.html';
99
-			}
100
-		}
101
-		else
102
-		{
103
-			$last_post_link = $url . '.html';
104
-		}
105
-		return $last_post_link;
106
-	}
82
+    /**
83
+     *
84
+     * @global	type	$_SID
85
+     * @param	int		$replies	Replays in the topic
86
+     * @param	string	$url		URL oft the topic
87
+     * @return	string				The URL with start included
88
+     */
89
+    public function generate_lastpost_link($replies, $url)
90
+    {
91
+        $url = str_replace('.html', '', $url);
92
+        $per_page = ($this->config['posts_per_page'] <= 0) ? 1 : $this->config['posts_per_page'];
93
+        $last_post_link = '';
94
+        if (($replies + 1) > $per_page)
95
+        {
96
+            for ($j = 0; $j < $replies + 1; $j += $per_page)
97
+            {
98
+                $last_post_link = $url . '-s' . $j . '.html';
99
+            }
100
+        }
101
+        else
102
+        {
103
+            $last_post_link = $url . '.html';
104
+        }
105
+        return $last_post_link;
106
+    }
107 107
 
108
-	/**
109
-	 * Replace letters to use title in URL
110
-	 *
111
-	 * @param	string	$title	The title to use in the URL
112
-	 * @return	string	Title to use in URLs
113
-	 */
114
-	public static function title_to_url($title)
115
-	{
116
-		$url = strtolower(censor_text(utf8_normalize_nfc(html_entity_decode(strip_tags($title)))));
108
+    /**
109
+     * Replace letters to use title in URL
110
+     *
111
+     * @param	string	$title	The title to use in the URL
112
+     * @return	string	Title to use in URLs
113
+     */
114
+    public static function title_to_url($title)
115
+    {
116
+        $url = strtolower(censor_text(utf8_normalize_nfc(html_entity_decode(strip_tags($title)))));
117 117
 
118
-		// Let's replace
119
-		$url_search = array(' ', 'í', 'ý', 'ß', 'ö', 'ô', 'ó', 'ò', 'ä', 'â', 'à', 'á', 'é', 'è', 'ü', 'ú', 'ù', 'ñ', 'ß', '²', '³', '@', '€', '$');
120
-		$url_replace = array('-', 'i', 'y', 's', 'oe', 'o', 'o', 'o', 'ae', 'a', 'a', 'a', 'e', 'e', 'ue', 'u', 'u', 'n', 'ss', '2', '3', 'at', 'eur', 'usd');
121
-		$url = str_replace($url_search, $url_replace, $url);
118
+        // Let's replace
119
+        $url_search = array(' ', 'í', 'ý', 'ß', 'ö', 'ô', 'ó', 'ò', 'ä', 'â', 'à', 'á', 'é', 'è', 'ü', 'ú', 'ù', 'ñ', 'ß', '²', '³', '@', '€', '$');
120
+        $url_replace = array('-', 'i', 'y', 's', 'oe', 'o', 'o', 'o', 'ae', 'a', 'a', 'a', 'e', 'e', 'ue', 'u', 'u', 'n', 'ss', '2', '3', 'at', 'eur', 'usd');
121
+        $url = str_replace($url_search, $url_replace, $url);
122 122
 
123
-		$url = preg_replace('/[^\w\d]/', '-', $url);
124
-		$url = preg_replace('/[-]{2,}/', '-', $url);
125
-		$url = trim($url, '-');
123
+        $url = preg_replace('/[^\w\d]/', '-', $url);
124
+        $url = preg_replace('/[-]{2,}/', '-', $url);
125
+        $url = trim($url, '-');
126 126
 
127
-		$url = substr($url, 0, 50); // Max length for a title in URL
128
-		return urlencode($url);
129
-	}
127
+        $url = substr($url, 0, 50); // Max length for a title in URL
128
+        return urlencode($url);
129
+    }
130 130
 
131
-	/**
132
-	 * Get the topics post count or the forums post/topic count based on permissions
133
-	 *
134
-	 * @param $mode            string    One of topic_posts, forum_posts or forum_topics
135
-	 * @param $data            array    Array with the topic/forum data to calculate from
136
-	 * @param $forum_id        int        The forum id is used for permission checks
137
-	 * @return int    Number of posts/topics the user can see in the topic/forum
138
-	 */
139
-	public function get_count($mode, $data, $forum_id)
140
-	{
141
-		if (!$this->auth->acl_get('m_approve', $forum_id))
142
-		{
143
-			return (int) $data[$mode . '_approved'];
144
-		}
131
+    /**
132
+     * Get the topics post count or the forums post/topic count based on permissions
133
+     *
134
+     * @param $mode            string    One of topic_posts, forum_posts or forum_topics
135
+     * @param $data            array    Array with the topic/forum data to calculate from
136
+     * @param $forum_id        int        The forum id is used for permission checks
137
+     * @return int    Number of posts/topics the user can see in the topic/forum
138
+     */
139
+    public function get_count($mode, $data, $forum_id)
140
+    {
141
+        if (!$this->auth->acl_get('m_approve', $forum_id))
142
+        {
143
+            return (int) $data[$mode . '_approved'];
144
+        }
145 145
 
146
-		return (int) $data[$mode . '_approved'] + (int) $data[$mode . '_unapproved'] + (int) $data[$mode . '_softdeleted'];
147
-	}
146
+        return (int) $data[$mode . '_approved'] + (int) $data[$mode . '_unapproved'] + (int) $data[$mode . '_softdeleted'];
147
+    }
148 148
 }
Please login to merge, or discard this patch.
event/listener.php 1 patch
Indentation   +389 added lines, -389 removed lines patch added patch discarded remove patch
@@ -16,393 +16,393 @@
 block discarded – undo
16 16
  */
17 17
 class listener implements EventSubscriberInterface
18 18
 {
19
-	/** @var \tas2580\seourls\event\base */
20
-	protected $base;
21
-
22
-	/** @var \phpbb\template\template */
23
-	protected $template;
24
-
25
-	/** @var \phpbb\request\request */
26
-	protected $request;
27
-
28
-	/** @var \phpbb\path_helper */
29
-	protected $path_helper;
30
-
31
-	/** @var string phpbb_root_path */
32
-	protected $phpbb_root_path;
33
-
34
-	/** @var string php_ext */
35
-	protected $php_ext;
36
-
37
-	private $in_viewforum;
38
-
39
-	/**
40
-	 * Constructor
41
-	 *
42
-	 * @param \tas2580\seourls\event\base	$base
43
-	 * @param \phpbb\template\template		$template				Template object
44
-	 * @param \phpbb\request\request		$request				Request object
45
-	 * @param \phpbb\path_helper			$path_helper			Controller helper object
46
-	 * @param string						$phpbb_root_path		phpbb_root_path
47
-	 * @param string						$php_ext				php_ext
48
-	 * @access public
49
-	 */
50
-	public function __construct(\tas2580\seourls\event\base $base, \phpbb\template\template $template, \phpbb\request\request $request, \phpbb\path_helper $path_helper, $phpbb_root_path, $php_ext)
51
-	{
52
-		$this->base = $base;
53
-		$this->template = $template;
54
-		$this->request = $request;
55
-		$this->path_helper = $path_helper;
56
-		$this->phpbb_root_path = $phpbb_root_path;
57
-		$this->php_ext = $php_ext;
58
-
59
-		$this->in_viewtopic = false;
60
-	}
61
-
62
-	/**
63
-	 * Assign functions defined in this class to event listeners in the core
64
-	 *
65
-	 * @return array
66
-	 * @static
67
-	 * @access public
68
-	 */
69
-	public static function getSubscribedEvents()
70
-	{
71
-		return array(
72
-			'core.append_sid'										=> 'append_sid',
73
-			'core.display_forums_modify_sql'						=> 'display_forums_modify_sql',
74
-			'core.display_forums_modify_template_vars'				=> 'display_forums_modify_template_vars',
75
-			'core.display_forums_modify_forum_rows'					=> 'display_forums_modify_forum_rows',
76
-			'core.display_forums_modify_category_template_vars'		=> 'display_forums_modify_category_template_vars',
77
-			'core.generate_forum_nav'								=> 'generate_forum_nav',
78
-			'core.make_jumpbox_modify_tpl_ary'						=> 'make_jumpbox_modify_tpl_ary',				// Not in phpBB
79
-			'core.pagination_generate_page_link'					=> 'pagination_generate_page_link',
80
-			'core.search_modify_tpl_ary'							=> 'search_modify_tpl_ary',
81
-			'core.viewforum_modify_topicrow'						=> 'viewforum_modify_topicrow',
82
-			'core.viewforum_get_topic_data'							=> 'viewforum_get_topic_data',
83
-			'core.viewtopic_assign_template_vars_before'			=> 'viewtopic_assign_template_vars_before',
84
-			'core.viewtopic_before_f_read_check'					=> 'viewtopic_before_f_read_check',
85
-			'core.viewtopic_modify_page_title'						=> 'viewtopic_modify_page_title',
86
-			'core.viewtopic_modify_post_row'						=> 'viewtopic_modify_post_row',
87
-			'core.viewtopic_get_post_data'							=> 'viewtopic_get_post_data',
88
-		);
89
-	}
90
-
91
-	/**
92
-	 * Correct the path of $viewtopic_url
93
-	 *
94
-	 * @param	object	$event	The event object
95
-	 * @return	null
96
-	 * @access	public
97
-	 */
98
-	public function append_sid($event)
99
-	{
100
-		if ($this->in_viewtopic && preg_match('#./../viewtopic.' . $this->php_ext  . '#', $event['url']))
101
-		{
102
-			$url = '../viewtopic.' . $this->php_ext ;
103
-			$event['url'] = $url;
104
-		}
105
-		if (isset($event['params']['redirect']))
106
-		{
107
-			$params = $event['params'];
108
-			$params['redirect'] = str_replace('..', '.', $event['params']['redirect']);
109
-			$event['params'] = $params;
110
-		}
111
-	}
112
-
113
-	/**
114
-	 * Get informations for the last post from Database
115
-	 *
116
-	 * @param	object	$event	The event object
117
-	 * @return	null
118
-	 * @access	public
119
-	 */
120
-	public function display_forums_modify_sql($event)
121
-	{
122
-		$sql_array = $event['sql_ary'];
123
-		$sql_array['LEFT_JOIN'][] = array(
124
-			'FROM' => array(TOPICS_TABLE => 't'),
125
-			'ON' => "f.forum_last_post_id = t.topic_last_post_id"
126
-		);
127
-		$sql_array['SELECT'] .= ', t.topic_title, t.topic_id, t.topic_posts_approved, t.topic_posts_unapproved, t.topic_posts_softdeleted';
128
-		$event['sql_ary'] = $sql_array;
129
-	}
130
-
131
-	/**
132
-	 * Store informations for the last post in forum_rows array
133
-	 *
134
-	 * @param	object	$event	The event object
135
-	 * @return	null
136
-	 * @access	public
137
-	 */
138
-	public function display_forums_modify_forum_rows($event)
139
-	{
140
-		$forum_rows = $event['forum_rows'];
141
-		if ($event['row']['forum_last_post_time'] == $forum_rows[$event['parent_id']]['forum_last_post_time'])
142
-		{
143
-			$forum_rows[$event['parent_id']]['forum_name_last_post'] =$event['row']['forum_name'];
144
-			$forum_rows[$event['parent_id']]['topic_id_last_post'] =$event['row']['topic_id'];
145
-			$forum_rows[$event['parent_id']]['topic_title_last_post'] =$event['row']['topic_title'];
146
-			$event['forum_rows'] = $forum_rows;
147
-		}
148
-	}
149
-
150
-	/**
151
-	 * Rewrite links to forums and subforums in forum index
152
-	 * also correct the path of the forum images if we are in a forum
153
-	 *
154
-	 * @param	object	$event	The event object
155
-	 * @return	null
156
-	 * @access	public
157
-	 */
158
-	public function display_forums_modify_template_vars($event)
159
-	{
160
-		$subforums_row = $event['subforums_row'];
161
-		$forum_row = $event['forum_row'];
162
-
163
-		// Rewrite URLs of sub forums
164
-		foreach ($subforums_row as $i => $subforum)
165
-		{
166
-			// A little bit a dirty way, but there is no better solution
167
-			$query = str_replace('&amp;', '&', parse_url($subforum['U_SUBFORUM'], PHP_URL_QUERY));
168
-			parse_str($query, $id);
169
-			$subforums_row[$i]['U_SUBFORUM'] = append_sid($this->base->generate_forum_link($id['f'], $subforum['SUBFORUM_NAME']));
170
-		}
171
-
172
-		// Update the image source in forums
173
-		$img = $this->path_helper->update_web_root_path($forum_row['FORUM_IMAGE_SRC']);
174
-		$forum_row['FORUM_IMAGE'] = preg_replace('#img src=\"(.*)\" alt#', 'img src="' . $img . '" alt', $forum_row['FORUM_IMAGE']);
175
-
176
-		// Rewrite links to topics, posts and forums
177
-		$replies = $this->base->get_count('topic_posts', $event['row'], $event['row']['forum_id']) - 1;
178
-		$url = $this->base->generate_topic_link($event['row']['forum_id_last_post'], $event['row']['forum_name_last_post'], $event['row']['topic_id_last_post'], $event['row']['topic_title_last_post']);
179
-		$forum_row['U_LAST_POST'] = append_sid($this->base->generate_lastpost_link($replies, $url) . '#p' . $event['row']['forum_last_post_id']);
180
-		$forum_row['U_VIEWFORUM'] = append_sid($this->base->generate_forum_link($forum_row['FORUM_ID'], $forum_row['FORUM_NAME']));
181
-		$forum_row['U_NEWEST_POST'] = append_sid($this->base->generate_lastpost_link($replies, $url) . '#unread');
182
-
183
-		$event['subforums_row'] = $subforums_row;
184
-		$event['forum_row'] = $forum_row;
185
-	}
186
-
187
-	/**
188
-	 * Rewrite the categorie links
189
-	 *
190
-	 * @param	object	$event	The event object
191
-	 * @return	null
192
-	 * @access	public
193
-	 */
194
-	public function display_forums_modify_category_template_vars($event)
195
-	{
196
-		$cat_row = $event['cat_row'];
197
-		$row = $event['row'];
198
-		$cat_row['U_VIEWFORUM'] = append_sid($this->base->generate_forum_link($row['forum_id'], $row['forum_name']));
199
-		$event['cat_row'] = $cat_row;
200
-	}
201
-
202
-	/**
203
-	 * Rewrite links in breadcrumbs
204
-	 *
205
-	 * @param	object	$event	The event object
206
-	 * @return	null
207
-	 * @access	public
208
-	 */
209
-	public function generate_forum_nav($event)
210
-	{
211
-		$forum_data = $event['forum_data'];
212
-		$navlinks = $event['navlinks'];
213
-		$navlinks_parents = $event['navlinks_parents'];
214
-
215
-		foreach ($navlinks_parents as $id => $data)
216
-		{
217
-			$navlinks_parents[$id]['U_VIEW_FORUM'] = append_sid($this->base->generate_forum_link($data['FORUM_ID'] , $data['FORUM_NAME']));
218
-		}
219
-
220
-		$navlinks['U_VIEW_FORUM'] = append_sid($this->base->generate_forum_link($forum_data['forum_id'], $forum_data['forum_name']));
221
-		$event['navlinks'] = $navlinks;
222
-		$event['navlinks_parents'] = $navlinks_parents;
223
-	}
224
-
225
-	// Not in phpBB
226
-	public function make_jumpbox_modify_tpl_ary($event)
227
-	{
228
-		$tpl_ary = $event['tpl_ary'];
229
-		$row = $event['row'];
230
-		foreach ($tpl_ary as $id => $data)
231
-		{
232
-			$tpl_ary[$id]['LINK']	 = append_sid($this->base->generate_forum_link($row['forum_id'], $row['forum_name']));
233
-		}
234
-
235
-		$event['tpl_ary'] = $tpl_ary;
236
-	}
237
-
238
-	/**
239
-	 * Rewrite pagination links
240
-	 *
241
-	 * @param	object	$event	The event object
242
-	 * @return	null
243
-	 * @access	public
244
-	 */
245
-	public function pagination_generate_page_link($event)
246
-	{
247
-		// If we have a sort key we do not rewrite the URL
248
-		$query = str_replace('&amp;', '&', parse_url($event['base_url'], PHP_URL_QUERY));
249
-		parse_str($query, $param);
250
-		if (isset($param['sd']) || isset($param['sk']) || isset($param['st']))
251
-		{
252
-			return;
253
-		}
254
-
255
-		$start = (($event['on_page'] - 1) * $event['per_page']);
256
-		if (!empty($this->topic_data) && isset($param['f']) && isset($param['t']))
257
-		{
258
-			$event['generate_page_link_override'] = append_sid($this->base->generate_topic_link($this->topic_data['forum_id'], $this->topic_data['forum_name'], $this->topic_data['topic_id'], $this->topic_data['topic_title'], $start));
259
-		}
260
-		else if (!empty($this->forum_data) && isset($param['f']))
261
-		{
262
-			$event['generate_page_link_override'] = append_sid($this->base->generate_forum_link($this->forum_data['forum_id'], $this->forum_data['forum_name'], $start));
263
-		}
264
-	}
265
-
266
-	/**
267
-	 * Rewrite links in the search result
268
-	 *
269
-	 * @param	object	$event	The event object
270
-	 * @return	null
271
-	 * @access	public
272
-	 */
273
-	public function search_modify_tpl_ary($event)
274
-	{
275
-		$replies = $this->base->get_count('topic_posts', $event['row'], $event['row']['forum_id']) - 1;
276
-		$u_view_topic = $this->base->generate_topic_link($event['row']['forum_id'], $event['row']['forum_name'], $event['row']['topic_id'], $event['row']['topic_title']);
277
-
278
-		$tpl_ary = $event['tpl_ary'];
279
-		$tpl_ary['U_LAST_POST'] = append_sid($this->base->generate_lastpost_link($replies, $u_view_topic) . '#p' . $event['row']['topic_last_post_id']);
280
-		$tpl_ary['U_VIEW_TOPIC'] = append_sid($u_view_topic);
281
-		$tpl_ary['U_VIEW_FORUM'] = append_sid($this->base->generate_forum_link($event['row']['forum_id'], $event['row']['forum_name']));
282
-		$tpl_ary['U_NEWEST_POST'] = append_sid($this->base->generate_lastpost_link($replies, $u_view_topic) . '#unread');
283
-
284
-		$event['tpl_ary'] = $tpl_ary;
285
-	}
286
-
287
-	/**
288
-	 * Rewrite links to topics in forum view
289
-	 *
290
-	 * @param	object	$event	The event object
291
-	 * @return	null
292
-	 * @access	public
293
-	 */
294
-	public function viewforum_modify_topicrow($event)
295
-	{
296
-		// assign to be used in pagination_generate_page_link
297
-		$this->topic_data = array(
298
-			'forum_id' => $event['topic_row']['FORUM_ID'],
299
-			'forum_name' => $event['topic_row']['FORUM_NAME'],
300
-			'topic_id' => $event['topic_row']['TOPIC_ID'],
301
-			'topic_title' => $event['topic_row']['TOPIC_TITLE']
302
-		);
303
-
304
-		$topic_row = $event['topic_row'];
305
-
306
-		$u_view_topic = $this->base->generate_topic_link($topic_row['FORUM_ID'], $topic_row['FORUM_TITLE'], $topic_row['TOPIC_ID'], $topic_row['TOPIC_TITLE']);
307
-		$topic_row['U_VIEW_TOPIC'] = append_sid($u_view_topic);
308
-		$topic_row['U_VIEW_FORUM'] = append_sid($this->base->generate_forum_link($topic_row['FORUM_ID'], $topic_row['FORUM_NAME']));
309
-		$topic_row['U_LAST_POST'] = append_sid($this->base->generate_lastpost_link($event['topic_row']['REPLIES'], $u_view_topic) . '#p' . $event['row']['topic_last_post_id']);
310
-		$topic_row['U_NEWEST_POST'] = append_sid($this->base->generate_lastpost_link($event['topic_row']['REPLIES'], $u_view_topic) . '#unread');
311
-
312
-		$event['topic_row'] = $topic_row;
313
-	}
314
-
315
-	/**
316
-	 * Rewrite the canonical URL on viewforum.php
317
-	 *
318
-	 * @param	object	$event	The event object
319
-	 * @return	null
320
-	 * @access	public
321
-	 */
322
-	public function viewforum_get_topic_data($event)
323
-	{
324
-		// assign to be used in pagination_generate_page_link
325
-		$this->forum_data = array(
326
-			'forum_id' => $event['forum_data']['forum_id'],
327
-			'forum_name' => $event['forum_data']['forum_name']
328
-		);
329
-
330
-		$start = $this->request->variable('start', 0);
331
-		$this->template->assign_vars(array(
332
-			'U_VIEW_FORUM'		=> append_sid($this->base->generate_forum_link($event['forum_data']['forum_id'], $event['forum_data']['forum_name'], $start)),
333
-			'U_CANONICAL'		=> $this->base->generate_forum_link($event['forum_data']['forum_id'], $event['forum_data']['forum_name'], $start, true),
334
-		));
335
-	}
336
-
337
-	/**
338
-	 * Rewrite the topic URL for the headline of the topic page and the link back to forum
339
-	 *
340
-	 * @param	object	$event	The event object
341
-	 * @return	null
342
-	 * @access	public
343
-	 */
344
-	public function viewtopic_get_post_data($event)
345
-	{
346
-		$data = $event['topic_data'];
347
-		$this->template->assign_vars(array(
348
-			'U_VIEW_TOPIC'		=> append_sid($this->base->generate_topic_link($event['forum_id'] , $data['forum_name'], $event['topic_id'], $data['topic_title'], $event['start'])),
349
-			'U_VIEW_FORUM'		=> append_sid($this->base->generate_forum_link($event['forum_id'] , $data['forum_name'])),
350
-			'S_POLL_ACTION'		=> append_sid($this->base->generate_topic_link($event['forum_id'] , $data['forum_name'], $event['topic_id'], $data['topic_title'], $event['start'])),
351
-		));
352
-	}
353
-
354
-	/**
355
-	 * Assign topic data to global variables for pagination
356
-	 *
357
-	 * @param	object	$event	The event object
358
-	 * @return	null
359
-	 * @access	public
360
-	 */
361
-	public function viewtopic_assign_template_vars_before($event)
362
-	{
363
-		// assign to be used in pagination_generate_page_link
364
-		$this->topic_data = array(
365
-			'forum_id' => $event['topic_data']['forum_id'],
366
-			'forum_name' => $event['topic_data']['forum_name'],
367
-			'topic_id' => $event['topic_data']['topic_id'],
368
-			'topic_title' => $event['topic_data']['topic_title']
369
-		);
370
-	}
371
-
372
-	public function viewtopic_before_f_read_check()
373
-	{
374
-		$this->in_viewtopic = true;
375
-	}
376
-
377
-	/**
378
-	 * Rewrite the canonical URL on viewtopic.php
379
-	 *
380
-	 * @param	object	$event	The event object
381
-	 * @return	null
382
-	 * @access	public
383
-	 */
384
-	public function viewtopic_modify_page_title($event)
385
-	{
386
-		$start = $this->request->variable('start', 0);
387
-		$data = $event['topic_data'];
388
-		$this->template->assign_vars(array(
389
-			'U_CANONICAL'		=> $this->base->generate_topic_link($data['forum_id'], $data['forum_name'], $data['topic_id'], $data['topic_title'], $start, true),
390
-		));
391
-	}
392
-
393
-	/**
394
-	 * Rewrite mini post img link
395
-	 *
396
-	 * @param	object	$event	The event object
397
-	 * @return	null
398
-	 * @access	public
399
-	 */
400
-	public function viewtopic_modify_post_row($event)
401
-	{
402
-		$row = $event['post_row'];
403
-		$start = $this->request->variable('start', 0);
404
-		$data = $event['topic_data'];
405
-		$row['U_MINI_POST'] = append_sid($this->base->generate_topic_link($data['forum_id'], $data['forum_name'], $data['topic_id'], $data['topic_title'], $start) . '#p' . $event['row']['post_id']);
406
-		$event['post_row'] = $row;
407
-	}
19
+    /** @var \tas2580\seourls\event\base */
20
+    protected $base;
21
+
22
+    /** @var \phpbb\template\template */
23
+    protected $template;
24
+
25
+    /** @var \phpbb\request\request */
26
+    protected $request;
27
+
28
+    /** @var \phpbb\path_helper */
29
+    protected $path_helper;
30
+
31
+    /** @var string phpbb_root_path */
32
+    protected $phpbb_root_path;
33
+
34
+    /** @var string php_ext */
35
+    protected $php_ext;
36
+
37
+    private $in_viewforum;
38
+
39
+    /**
40
+     * Constructor
41
+     *
42
+     * @param \tas2580\seourls\event\base	$base
43
+     * @param \phpbb\template\template		$template				Template object
44
+     * @param \phpbb\request\request		$request				Request object
45
+     * @param \phpbb\path_helper			$path_helper			Controller helper object
46
+     * @param string						$phpbb_root_path		phpbb_root_path
47
+     * @param string						$php_ext				php_ext
48
+     * @access public
49
+     */
50
+    public function __construct(\tas2580\seourls\event\base $base, \phpbb\template\template $template, \phpbb\request\request $request, \phpbb\path_helper $path_helper, $phpbb_root_path, $php_ext)
51
+    {
52
+        $this->base = $base;
53
+        $this->template = $template;
54
+        $this->request = $request;
55
+        $this->path_helper = $path_helper;
56
+        $this->phpbb_root_path = $phpbb_root_path;
57
+        $this->php_ext = $php_ext;
58
+
59
+        $this->in_viewtopic = false;
60
+    }
61
+
62
+    /**
63
+     * Assign functions defined in this class to event listeners in the core
64
+     *
65
+     * @return array
66
+     * @static
67
+     * @access public
68
+     */
69
+    public static function getSubscribedEvents()
70
+    {
71
+        return array(
72
+            'core.append_sid'										=> 'append_sid',
73
+            'core.display_forums_modify_sql'						=> 'display_forums_modify_sql',
74
+            'core.display_forums_modify_template_vars'				=> 'display_forums_modify_template_vars',
75
+            'core.display_forums_modify_forum_rows'					=> 'display_forums_modify_forum_rows',
76
+            'core.display_forums_modify_category_template_vars'		=> 'display_forums_modify_category_template_vars',
77
+            'core.generate_forum_nav'								=> 'generate_forum_nav',
78
+            'core.make_jumpbox_modify_tpl_ary'						=> 'make_jumpbox_modify_tpl_ary',				// Not in phpBB
79
+            'core.pagination_generate_page_link'					=> 'pagination_generate_page_link',
80
+            'core.search_modify_tpl_ary'							=> 'search_modify_tpl_ary',
81
+            'core.viewforum_modify_topicrow'						=> 'viewforum_modify_topicrow',
82
+            'core.viewforum_get_topic_data'							=> 'viewforum_get_topic_data',
83
+            'core.viewtopic_assign_template_vars_before'			=> 'viewtopic_assign_template_vars_before',
84
+            'core.viewtopic_before_f_read_check'					=> 'viewtopic_before_f_read_check',
85
+            'core.viewtopic_modify_page_title'						=> 'viewtopic_modify_page_title',
86
+            'core.viewtopic_modify_post_row'						=> 'viewtopic_modify_post_row',
87
+            'core.viewtopic_get_post_data'							=> 'viewtopic_get_post_data',
88
+        );
89
+    }
90
+
91
+    /**
92
+     * Correct the path of $viewtopic_url
93
+     *
94
+     * @param	object	$event	The event object
95
+     * @return	null
96
+     * @access	public
97
+     */
98
+    public function append_sid($event)
99
+    {
100
+        if ($this->in_viewtopic && preg_match('#./../viewtopic.' . $this->php_ext  . '#', $event['url']))
101
+        {
102
+            $url = '../viewtopic.' . $this->php_ext ;
103
+            $event['url'] = $url;
104
+        }
105
+        if (isset($event['params']['redirect']))
106
+        {
107
+            $params = $event['params'];
108
+            $params['redirect'] = str_replace('..', '.', $event['params']['redirect']);
109
+            $event['params'] = $params;
110
+        }
111
+    }
112
+
113
+    /**
114
+     * Get informations for the last post from Database
115
+     *
116
+     * @param	object	$event	The event object
117
+     * @return	null
118
+     * @access	public
119
+     */
120
+    public function display_forums_modify_sql($event)
121
+    {
122
+        $sql_array = $event['sql_ary'];
123
+        $sql_array['LEFT_JOIN'][] = array(
124
+            'FROM' => array(TOPICS_TABLE => 't'),
125
+            'ON' => "f.forum_last_post_id = t.topic_last_post_id"
126
+        );
127
+        $sql_array['SELECT'] .= ', t.topic_title, t.topic_id, t.topic_posts_approved, t.topic_posts_unapproved, t.topic_posts_softdeleted';
128
+        $event['sql_ary'] = $sql_array;
129
+    }
130
+
131
+    /**
132
+     * Store informations for the last post in forum_rows array
133
+     *
134
+     * @param	object	$event	The event object
135
+     * @return	null
136
+     * @access	public
137
+     */
138
+    public function display_forums_modify_forum_rows($event)
139
+    {
140
+        $forum_rows = $event['forum_rows'];
141
+        if ($event['row']['forum_last_post_time'] == $forum_rows[$event['parent_id']]['forum_last_post_time'])
142
+        {
143
+            $forum_rows[$event['parent_id']]['forum_name_last_post'] =$event['row']['forum_name'];
144
+            $forum_rows[$event['parent_id']]['topic_id_last_post'] =$event['row']['topic_id'];
145
+            $forum_rows[$event['parent_id']]['topic_title_last_post'] =$event['row']['topic_title'];
146
+            $event['forum_rows'] = $forum_rows;
147
+        }
148
+    }
149
+
150
+    /**
151
+     * Rewrite links to forums and subforums in forum index
152
+     * also correct the path of the forum images if we are in a forum
153
+     *
154
+     * @param	object	$event	The event object
155
+     * @return	null
156
+     * @access	public
157
+     */
158
+    public function display_forums_modify_template_vars($event)
159
+    {
160
+        $subforums_row = $event['subforums_row'];
161
+        $forum_row = $event['forum_row'];
162
+
163
+        // Rewrite URLs of sub forums
164
+        foreach ($subforums_row as $i => $subforum)
165
+        {
166
+            // A little bit a dirty way, but there is no better solution
167
+            $query = str_replace('&amp;', '&', parse_url($subforum['U_SUBFORUM'], PHP_URL_QUERY));
168
+            parse_str($query, $id);
169
+            $subforums_row[$i]['U_SUBFORUM'] = append_sid($this->base->generate_forum_link($id['f'], $subforum['SUBFORUM_NAME']));
170
+        }
171
+
172
+        // Update the image source in forums
173
+        $img = $this->path_helper->update_web_root_path($forum_row['FORUM_IMAGE_SRC']);
174
+        $forum_row['FORUM_IMAGE'] = preg_replace('#img src=\"(.*)\" alt#', 'img src="' . $img . '" alt', $forum_row['FORUM_IMAGE']);
175
+
176
+        // Rewrite links to topics, posts and forums
177
+        $replies = $this->base->get_count('topic_posts', $event['row'], $event['row']['forum_id']) - 1;
178
+        $url = $this->base->generate_topic_link($event['row']['forum_id_last_post'], $event['row']['forum_name_last_post'], $event['row']['topic_id_last_post'], $event['row']['topic_title_last_post']);
179
+        $forum_row['U_LAST_POST'] = append_sid($this->base->generate_lastpost_link($replies, $url) . '#p' . $event['row']['forum_last_post_id']);
180
+        $forum_row['U_VIEWFORUM'] = append_sid($this->base->generate_forum_link($forum_row['FORUM_ID'], $forum_row['FORUM_NAME']));
181
+        $forum_row['U_NEWEST_POST'] = append_sid($this->base->generate_lastpost_link($replies, $url) . '#unread');
182
+
183
+        $event['subforums_row'] = $subforums_row;
184
+        $event['forum_row'] = $forum_row;
185
+    }
186
+
187
+    /**
188
+     * Rewrite the categorie links
189
+     *
190
+     * @param	object	$event	The event object
191
+     * @return	null
192
+     * @access	public
193
+     */
194
+    public function display_forums_modify_category_template_vars($event)
195
+    {
196
+        $cat_row = $event['cat_row'];
197
+        $row = $event['row'];
198
+        $cat_row['U_VIEWFORUM'] = append_sid($this->base->generate_forum_link($row['forum_id'], $row['forum_name']));
199
+        $event['cat_row'] = $cat_row;
200
+    }
201
+
202
+    /**
203
+     * Rewrite links in breadcrumbs
204
+     *
205
+     * @param	object	$event	The event object
206
+     * @return	null
207
+     * @access	public
208
+     */
209
+    public function generate_forum_nav($event)
210
+    {
211
+        $forum_data = $event['forum_data'];
212
+        $navlinks = $event['navlinks'];
213
+        $navlinks_parents = $event['navlinks_parents'];
214
+
215
+        foreach ($navlinks_parents as $id => $data)
216
+        {
217
+            $navlinks_parents[$id]['U_VIEW_FORUM'] = append_sid($this->base->generate_forum_link($data['FORUM_ID'] , $data['FORUM_NAME']));
218
+        }
219
+
220
+        $navlinks['U_VIEW_FORUM'] = append_sid($this->base->generate_forum_link($forum_data['forum_id'], $forum_data['forum_name']));
221
+        $event['navlinks'] = $navlinks;
222
+        $event['navlinks_parents'] = $navlinks_parents;
223
+    }
224
+
225
+    // Not in phpBB
226
+    public function make_jumpbox_modify_tpl_ary($event)
227
+    {
228
+        $tpl_ary = $event['tpl_ary'];
229
+        $row = $event['row'];
230
+        foreach ($tpl_ary as $id => $data)
231
+        {
232
+            $tpl_ary[$id]['LINK']	 = append_sid($this->base->generate_forum_link($row['forum_id'], $row['forum_name']));
233
+        }
234
+
235
+        $event['tpl_ary'] = $tpl_ary;
236
+    }
237
+
238
+    /**
239
+     * Rewrite pagination links
240
+     *
241
+     * @param	object	$event	The event object
242
+     * @return	null
243
+     * @access	public
244
+     */
245
+    public function pagination_generate_page_link($event)
246
+    {
247
+        // If we have a sort key we do not rewrite the URL
248
+        $query = str_replace('&amp;', '&', parse_url($event['base_url'], PHP_URL_QUERY));
249
+        parse_str($query, $param);
250
+        if (isset($param['sd']) || isset($param['sk']) || isset($param['st']))
251
+        {
252
+            return;
253
+        }
254
+
255
+        $start = (($event['on_page'] - 1) * $event['per_page']);
256
+        if (!empty($this->topic_data) && isset($param['f']) && isset($param['t']))
257
+        {
258
+            $event['generate_page_link_override'] = append_sid($this->base->generate_topic_link($this->topic_data['forum_id'], $this->topic_data['forum_name'], $this->topic_data['topic_id'], $this->topic_data['topic_title'], $start));
259
+        }
260
+        else if (!empty($this->forum_data) && isset($param['f']))
261
+        {
262
+            $event['generate_page_link_override'] = append_sid($this->base->generate_forum_link($this->forum_data['forum_id'], $this->forum_data['forum_name'], $start));
263
+        }
264
+    }
265
+
266
+    /**
267
+     * Rewrite links in the search result
268
+     *
269
+     * @param	object	$event	The event object
270
+     * @return	null
271
+     * @access	public
272
+     */
273
+    public function search_modify_tpl_ary($event)
274
+    {
275
+        $replies = $this->base->get_count('topic_posts', $event['row'], $event['row']['forum_id']) - 1;
276
+        $u_view_topic = $this->base->generate_topic_link($event['row']['forum_id'], $event['row']['forum_name'], $event['row']['topic_id'], $event['row']['topic_title']);
277
+
278
+        $tpl_ary = $event['tpl_ary'];
279
+        $tpl_ary['U_LAST_POST'] = append_sid($this->base->generate_lastpost_link($replies, $u_view_topic) . '#p' . $event['row']['topic_last_post_id']);
280
+        $tpl_ary['U_VIEW_TOPIC'] = append_sid($u_view_topic);
281
+        $tpl_ary['U_VIEW_FORUM'] = append_sid($this->base->generate_forum_link($event['row']['forum_id'], $event['row']['forum_name']));
282
+        $tpl_ary['U_NEWEST_POST'] = append_sid($this->base->generate_lastpost_link($replies, $u_view_topic) . '#unread');
283
+
284
+        $event['tpl_ary'] = $tpl_ary;
285
+    }
286
+
287
+    /**
288
+     * Rewrite links to topics in forum view
289
+     *
290
+     * @param	object	$event	The event object
291
+     * @return	null
292
+     * @access	public
293
+     */
294
+    public function viewforum_modify_topicrow($event)
295
+    {
296
+        // assign to be used in pagination_generate_page_link
297
+        $this->topic_data = array(
298
+            'forum_id' => $event['topic_row']['FORUM_ID'],
299
+            'forum_name' => $event['topic_row']['FORUM_NAME'],
300
+            'topic_id' => $event['topic_row']['TOPIC_ID'],
301
+            'topic_title' => $event['topic_row']['TOPIC_TITLE']
302
+        );
303
+
304
+        $topic_row = $event['topic_row'];
305
+
306
+        $u_view_topic = $this->base->generate_topic_link($topic_row['FORUM_ID'], $topic_row['FORUM_TITLE'], $topic_row['TOPIC_ID'], $topic_row['TOPIC_TITLE']);
307
+        $topic_row['U_VIEW_TOPIC'] = append_sid($u_view_topic);
308
+        $topic_row['U_VIEW_FORUM'] = append_sid($this->base->generate_forum_link($topic_row['FORUM_ID'], $topic_row['FORUM_NAME']));
309
+        $topic_row['U_LAST_POST'] = append_sid($this->base->generate_lastpost_link($event['topic_row']['REPLIES'], $u_view_topic) . '#p' . $event['row']['topic_last_post_id']);
310
+        $topic_row['U_NEWEST_POST'] = append_sid($this->base->generate_lastpost_link($event['topic_row']['REPLIES'], $u_view_topic) . '#unread');
311
+
312
+        $event['topic_row'] = $topic_row;
313
+    }
314
+
315
+    /**
316
+     * Rewrite the canonical URL on viewforum.php
317
+     *
318
+     * @param	object	$event	The event object
319
+     * @return	null
320
+     * @access	public
321
+     */
322
+    public function viewforum_get_topic_data($event)
323
+    {
324
+        // assign to be used in pagination_generate_page_link
325
+        $this->forum_data = array(
326
+            'forum_id' => $event['forum_data']['forum_id'],
327
+            'forum_name' => $event['forum_data']['forum_name']
328
+        );
329
+
330
+        $start = $this->request->variable('start', 0);
331
+        $this->template->assign_vars(array(
332
+            'U_VIEW_FORUM'		=> append_sid($this->base->generate_forum_link($event['forum_data']['forum_id'], $event['forum_data']['forum_name'], $start)),
333
+            'U_CANONICAL'		=> $this->base->generate_forum_link($event['forum_data']['forum_id'], $event['forum_data']['forum_name'], $start, true),
334
+        ));
335
+    }
336
+
337
+    /**
338
+     * Rewrite the topic URL for the headline of the topic page and the link back to forum
339
+     *
340
+     * @param	object	$event	The event object
341
+     * @return	null
342
+     * @access	public
343
+     */
344
+    public function viewtopic_get_post_data($event)
345
+    {
346
+        $data = $event['topic_data'];
347
+        $this->template->assign_vars(array(
348
+            'U_VIEW_TOPIC'		=> append_sid($this->base->generate_topic_link($event['forum_id'] , $data['forum_name'], $event['topic_id'], $data['topic_title'], $event['start'])),
349
+            'U_VIEW_FORUM'		=> append_sid($this->base->generate_forum_link($event['forum_id'] , $data['forum_name'])),
350
+            'S_POLL_ACTION'		=> append_sid($this->base->generate_topic_link($event['forum_id'] , $data['forum_name'], $event['topic_id'], $data['topic_title'], $event['start'])),
351
+        ));
352
+    }
353
+
354
+    /**
355
+     * Assign topic data to global variables for pagination
356
+     *
357
+     * @param	object	$event	The event object
358
+     * @return	null
359
+     * @access	public
360
+     */
361
+    public function viewtopic_assign_template_vars_before($event)
362
+    {
363
+        // assign to be used in pagination_generate_page_link
364
+        $this->topic_data = array(
365
+            'forum_id' => $event['topic_data']['forum_id'],
366
+            'forum_name' => $event['topic_data']['forum_name'],
367
+            'topic_id' => $event['topic_data']['topic_id'],
368
+            'topic_title' => $event['topic_data']['topic_title']
369
+        );
370
+    }
371
+
372
+    public function viewtopic_before_f_read_check()
373
+    {
374
+        $this->in_viewtopic = true;
375
+    }
376
+
377
+    /**
378
+     * Rewrite the canonical URL on viewtopic.php
379
+     *
380
+     * @param	object	$event	The event object
381
+     * @return	null
382
+     * @access	public
383
+     */
384
+    public function viewtopic_modify_page_title($event)
385
+    {
386
+        $start = $this->request->variable('start', 0);
387
+        $data = $event['topic_data'];
388
+        $this->template->assign_vars(array(
389
+            'U_CANONICAL'		=> $this->base->generate_topic_link($data['forum_id'], $data['forum_name'], $data['topic_id'], $data['topic_title'], $start, true),
390
+        ));
391
+    }
392
+
393
+    /**
394
+     * Rewrite mini post img link
395
+     *
396
+     * @param	object	$event	The event object
397
+     * @return	null
398
+     * @access	public
399
+     */
400
+    public function viewtopic_modify_post_row($event)
401
+    {
402
+        $row = $event['post_row'];
403
+        $start = $this->request->variable('start', 0);
404
+        $data = $event['topic_data'];
405
+        $row['U_MINI_POST'] = append_sid($this->base->generate_topic_link($data['forum_id'], $data['forum_name'], $data['topic_id'], $data['topic_title'], $start) . '#p' . $event['row']['post_id']);
406
+        $event['post_row'] = $row;
407
+    }
408 408
 }
Please login to merge, or discard this patch.