Completed
Push — master ( a52438...bf8826 )
by Henry
06:30
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
		'prefix' => 'more-',
30
		'className' =>
31
		[
32
			'link' => 'rs-link-more',
33
			'break' => 'rs-break-more'
34
		],
35
		'search' =>
36
		[
37
			'<rs-more>'
38
		]
39
	];
40
41
	/**
42
	 * process the class
43
	 *
44
	 * @since 3.0.0
45
	 *
46
	 * @param string $content content to be parsed
47
	 * @param string $route route of the content
48
	 *
49
	 * @return string
50
	 */
51
52 15
	public function process(string $content = null, string $route = null) : string
53
	{
54 15
		$output = str_replace($this->_optionArray['search'], null, $content);
55 15
		$position = strpos($content, $this->_optionArray['search'][0]);
56 15
		$id = $this->_optionArray['prefix'] . $position;
57
58
		/* html element */
59
60 15
		$element = new Html\Element();
61
		$linkElement = $element
62 15
			->copy()
63 15
			->init('a',
64
			[
65 15
				'class' => $this->_optionArray['className']['link']
66
			]);
67
		$breakElement = $element
68 15
			->copy()
69 15
			->init('hr',
70
			[
71 15
				'id' => $id,
72 15
				'class' => $this->_optionArray['className']['break']
73
			]);
74
75
		/* collect output */
76
77 15
		if ($position > -1 && $this->_registry->get('lastTable') === 'categories')
78
		{
79 1
			$output = substr($output, 0, $position);
80 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...
81
			{
82
				$output .= $linkElement
83 1
					->attr('href', $this->_registry->get('parameterRoute') . $route . '#' . $id)
84 1
					->text($this->_language->get('read_more'));
85
			}
86
		}
87 14
		else if ($position > -1)
88
		{
89 1
			$output = substr($output, 0, $position) . $breakElement . substr($output, $position);
90
		}
91 15
		return $output;
92
	}
93
}
94