PhpbbHandling   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 78
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Importance

Changes 0
Metric Value
wmc 5
c 0
b 0
f 0
lcom 0
cbo 1
dl 0
loc 78
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A bbcodeStripping() 0 38 4
A getTopicsFromForum() 0 15 1
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
			$text_only_message = str_replace('[*:' . $uid . ']', '&sdot;&nbsp;', $text);
28
			// Insert a space before <s> and <e> then remove formatting
29
			$xml = preg_replace('#<[es]>#', ' $0', $text_only_message);
30
			
31
			$flags = (\LIBXML_VERSION >= 20700) ? \LIBXML_COMPACT | \LIBXML_PARSEHUGE : 0;
32
			$dom = new \DOMDocument();
33
			// Somehow need to also force UTF8 encoding here
34
			$xml = mb_convert_encoding($xml, 'UTF-8');
35
			$dom->loadXML($xml, $flags);
36
			$xpath = new \DOMXPath($dom);
37
			foreach ($xpath->query('//e | //s') as $node)
38
			{
39
				$node->parentNode->removeChild($node);
40
			}
41
			$text = $dom->documentElement->textContent;
42
		}
43
		else
44
		{
45
			$text = preg_replace("#\[\/?[a-z0-9\*\+\-]+(?:=(?:&quot;.*&quot;|[^\]]*))?(?::[a-z])?(\:$uid)\]#", ' ', $text);
46
			$match = array(
47
				'#<!\-\- e \-\-><a href="mailto:(.*?)">.*?</a><!\-\- e \-\->#',
48
				'#<!\-\- l \-\-><a (?:class="[\w-]+" )?href="(.*?)(?:(&amp;|\?)sid=[0-9a-f]{32})?">.*?</a><!\-\- l \-\->#',
49
				'#<!\-\- ([mw]) \-\-><a (?:class="[\w-]+" )?href="(.*?)">.*?</a><!\-\- \1 \-\->#',
50
				'#<!\-\- s(.*?) \-\-><img src="\{SMILIES_PATH\}\/.*? \/><!\-\- s\1 \-\->#',
51
				'#<!\-\- .*? \-\->#s',
52
				'#<.*?>#s',
53
			);
54
			$replace = array('\1', '\1', '\2', '\1', '', '');
55
56
			$text = preg_replace($match, $replace, $text);
57
		}
58
59
		return $text;
60
	}
61
62
	/**
63
	 * Get the topic details from the forums table & the first post
64
	 *
65
	 * @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...
66
	 *															  (Doctrine\DBAL\Connection)
67
	 * @param integer $forum				ID for the forum to get topics from
68
	 * @param integer $retrieve_limit	   Maxmium number of topics to retrieved
69
	 * @param string  $database_prefix	  The prefix of the tables in the database (include underscore)
70
	 * @return array  $topics			   The topics from that forum
71
	 * @access public
72
	 * @static
73
	 */
74
	public static function getTopicsFromForum(\Doctrine\DBAL\Connection $phpbbConnection, $forum, $retrieve_limit, $database_prefix = 'phpbb_')
75
	{
76
		$sql = 'SELECT t.*, p.post_text, p.bbcode_uid
77
			FROM ' . $database_prefix . 'topics t
78
			LEFT JOIN ' . $database_prefix . 'posts p
79
				ON t.topic_first_post_id = p.post_id
80
			WHERE t.forum_id IN (' . $forum . ', 0)
81
				AND t.topic_visibility = 1
82
			ORDER BY topic_time DESC
83
			LIMIT 0,' . $retrieve_limit;
84
85
		$topics = $phpbbConnection->fetchAll($sql);
86
87
		return $topics;
88
	}
89
}
90