Completed
Push — master ( 0d72ed...db6a9f )
by Henry
14:21 queued 04:57
created

includes/Content/Tag/More.php (1 issue)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
namespace Redaxscript\Content\Tag;
3
4
use Redaxscript\Html;
5
use function str_replace;
6
use function strpos;
7
use function substr;
8
9
/**
10
 * children class to parse content for more tags
11
 *
12
 * @since 3.0.0
13
 *
14
 * @package Redaxscript
15
 * @category Content
16
 * @author Henry Ruhs
17
 */
18
19
class More extends TagAbstract
20
{
21
	/**
22
	 * options of the more tag
23
	 *
24
	 * @var array
25
	 */
26
27
	protected $_optionArray =
28
	[
29
		'className' =>
30
		[
31
			'more' => 'rs-link-more'
32
		],
33
		'search' =>
34
		[
35
			'<rs-more>'
36
		]
37
	];
38
39
	/**
40
	 * process the class
41
	 *
42
	 * @since 3.0.0
43
	 *
44
	 * @param string $content content to be parsed
45
	 * @param string $route route of the content
46
	 *
47
	 * @return string
48
	 */
49
50 15
	public function process(string $content = null, string $route = null) : string
51
	{
52 15
		$output = str_replace($this->_optionArray['search'], null, $content);
53 15
		$position = strpos($content, $this->_optionArray['search'][0]);
54
55
		/* html element */
56
57 15
		$linkElement = new Html\Element();
58 15
		$linkElement->init('a',
59
		[
60 15
			'class' => $this->_optionArray['className']['more']
61
		]);
62
63
		/* collect output */
64
65 15
		if ($position > -1 && $this->_registry->get('lastTable') === 'categories')
66
		{
67 1
			$output = substr($output, 0, $position);
68 1
			if ($route)
0 ignored issues
show
Bug Best Practice introduced by
The expression $route of type null|string is loosely compared to true; this is ambiguous if the string can be empty. You might want to explicitly use !== null instead.

In PHP, under loose comparison (like ==, or !=, or switch conditions), values of different types might be equal.

For string values, the empty string '' is a special case, in particular the following results might be unexpected:

''   == false // true
''   == null  // true
'ab' == false // false
'ab' == null  // false

// It is often better to use strict comparison
'' === false // false
'' === null  // false
Loading history...
69
			{
70
				$output .= $linkElement
71 1
					->copy()
72 1
					->attr('href', $this->_registry->get('parameterRoute') . $route)
73 1
					->text($this->_language->get('read_more'));
74
			}
75
		}
76 15
		return $output;
77
	}
78
}