Completed
Push — master ( fd560e...e50e26 )
by Michael
11s
created

PhpbbHandling::getTopicsFromForum()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 15
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 15
c 0
b 0
f 0
rs 9.4285
cc 1
eloc 8
nc 1
nop 4
1
<?php
2
/**
3
 *
4
 * @copyright (c) 2013 phpBB Group
5
 * @license http://opensource.org/licenses/gpl-3.0.php GNU General Public License v3
6
 * @author MichaelC
7
 *
8
 */
9
10
namespace AppBundle\Wrappers;
11
12
class PhpbbHandling
13
{
14
	/**
15
	 * Strip bbcodes from a post content
16
	 *
17
	 * @param  string $text The raw content from the database to strip bbcodes from
18
	 * @param  string $uid  The $uid used in encoding/decoding the bbcode
19
	 * @return string $text The post with bbcodes stripped
20
	 * @access public
21
	 * @static
22
	 */
23
	public static function bbcodeStripping($text, $uid = '[0-9a-z]{5,}')
24
	{
25
		if (preg_match('#^<[rt][ >]#', $text))
26
		{
27
			// Insert a space before <s> and <e> then remove formatting
28
			$xml = preg_replace('#<[es]>#', ' $0', $text);
29
			
30
			$flags = (\LIBXML_VERSION >= 20700) ? \LIBXML_COMPACT | \LIBXML_PARSEHUGE : 0;
31
			$dom = new DOMDocument;
32
			$dom->loadXML($xml, $flags);
33
			$xpath = new DOMXPath($dom);
34
			foreach ($xpath->query('//e | //s') as $node)
35
			{
36
				$node->parentNode->removeChild($node);
37
			}
38
			$text = $dom->documentElement->textContent;
39
		}
40
		else
41
		{
42
			$text = preg_replace("#\[\/?[a-z0-9\*\+\-]+(?:=(?:&quot;.*&quot;|[^\]]*))?(?::[a-z])?(\:$uid)\]#", ' ', $text);
43
			$match = array(
44
				'#<!\-\- e \-\-><a href="mailto:(.*?)">.*?</a><!\-\- e \-\->#',
45
				'#<!\-\- l \-\-><a (?:class="[\w-]+" )?href="(.*?)(?:(&amp;|\?)sid=[0-9a-f]{32})?">.*?</a><!\-\- l \-\->#',
46
				'#<!\-\- ([mw]) \-\-><a (?:class="[\w-]+" )?href="(.*?)">.*?</a><!\-\- \1 \-\->#',
47
				'#<!\-\- s(.*?) \-\-><img src="\{SMILIES_PATH\}\/.*? \/><!\-\- s\1 \-\->#',
48
				'#<!\-\- .*? \-\->#s',
49
				'#<.*?>#s',
50
			);
51
			$replace = array('\1', '\1', '\2', '\1', '', '');
52
53
			$text = preg_replace($match, $replace, $text);
54
		}
55
56
		return $text;
57
	}
58
59
	/**
60
	 * Get the topic details from the forums table & the first post
61
	 *
62
	 * @param \Doctrine\DBAL\Connection	  $phpBBConnection	DBAL connection to a phpBB database
0 ignored issues
show
Documentation introduced by
There is no parameter named $phpBBConnection. Did you maybe mean $phpbbConnection?

This check looks for PHPDoc comments describing methods or function parameters that do not exist on the corresponding method or function. It has, however, found a similar but not annotated parameter which might be a good fit.

Consider the following example. The parameter $ireland is not defined by the method finale(...).

/**
 * @param array $germany
 * @param array $ireland
 */
function finale($germany, $island) {
    return "2:1";
}

The most likely cause is that the parameter was changed, but the annotation was not.

Loading history...
63
	 *															  (Doctrine\DBAL\Connection)
64
	 * @param integer $forum				ID for the forum to get topics from
65
	 * @param integer $retrieve_limit	   Maxmium number of topics to retrieved
66
	 * @param string  $database_prefix	  The prefix of the tables in the database (include underscore)
67
	 * @return array  $topics			   The topics from that forum
68
	 * @access public
69
	 * @static
70
	 */
71
	public static function getTopicsFromForum(\Doctrine\DBAL\Connection $phpbbConnection, $forum, $retrieve_limit, $database_prefix = 'phpbb_')
72
	{
73
		$sql = 'SELECT t.*, p.post_text, p.bbcode_uid
74
			FROM ' . $database_prefix . 'topics t
75
			LEFT JOIN ' . $database_prefix . 'posts p
76
				ON t.topic_first_post_id = p.post_id
77
			WHERE t.forum_id IN (' . $forum . ', 0)
78
				AND t.topic_visibility = 1
79
			ORDER BY topic_time DESC
80
			LIMIT 0,' . $retrieve_limit;
81
82
		$topics = $phpbbConnection->fetchAll($sql);
83
84
		return $topics;
85
	}
86
}
87