Content::getByTableAndId()   A
last analyzed

Complexity

Conditions 4
Paths 4

Size

Total Lines 17

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 9
CRAP Score 4

Importance

Changes 0
Metric Value
dl 0
loc 17
ccs 9
cts 9
cp 1
rs 9.7
c 0
b 0
f 0
cc 4
nc 4
nop 2
crap 4
1
<?php
2
namespace Redaxscript\Model;
3
4
/**
5
 * parent class to provide the content model
6
 *
7
 * @since 3.3.0
8
 *
9
 * @package Redaxscript
10
 * @category Model
11
 * @author Henry Ruhs
12
 */
13
14
class Content
15
{
16
	/**
17
	 * get the content table by alias
18
	 *
19
	 * @since 3.3.0
20
	 *
21
	 * @param string $contentAlias alias of the content
22
	 *
23
	 * @return string|null
24
	 */
25
26 3
	public function getTableByAlias(string $contentAlias = null) : ?string
27
	{
28 3
		if ($contentAlias)
0 ignored issues
show
Bug Best Practice introduced by
The expression $contentAlias 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...
29
		{
30 2
			$categoryModel = new Category();
31 2
			$category = $categoryModel->getByAlias($contentAlias);
32 2
			if ($category && $category->id)
33
			{
34 1
				return 'categories';
35
			}
36 1
			$articleModel = new Article();
37 1
			$article = $articleModel->getByAlias($contentAlias);
38 1
			if ($article && $article->id)
39
			{
40 1
				return 'articles';
41
			}
42
		}
43 1
		return null;
44
	}
45
46
	/**
47
	 * get the content by table and id
48
	 *
49
	 * @since 4.0.0
50
	 *
51
	 * @param string $table name of the table
52
	 * @param int $contentId identifier of the content
53
	 *
54
	 * @return object|null
55
	 */
56
57 3
	public function getByTableAndId(string $table = null, int $contentId = null) : ?object
58
	{
59 3
		if ($contentId)
0 ignored issues
show
Bug Best Practice introduced by
The expression $contentId of type null|integer is loosely compared to true; this is ambiguous if the integer can be zero. 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 integer values, zero is a special case, in particular the following results might be unexpected:

0   == false // true
0   == null  // true
123 == false // false
123 == null  // false

// It is often better to use strict comparison
0 === false // false
0 === null  // false
Loading history...
60
		{
61 2
			if ($table === 'categories')
62
			{
63 1
				$categoryModel = new Category();
64 1
				return $categoryModel->getById($contentId);
65
			}
66 1
			if ($table === 'articles')
67
			{
68 1
				$articleModel = new Article();
69 1
				return $articleModel->getById($contentId);
70
			}
71
		}
72 1
		return null;
73
	}
74
75
	/**
76
	 * get the content route by table and id
77
	 *
78
	 * @since 3.3.0
79
	 *
80
	 * @param string $table name of the table
81
	 * @param int $contentId identifier of the content
82
	 *
83
	 * @return string|null
84
	 */
85
86 4
	public function getRouteByTableAndId(string $table = null, int $contentId = null) : ?string
87
	{
88 4
		if ($contentId)
0 ignored issues
show
Bug Best Practice introduced by
The expression $contentId of type null|integer is loosely compared to true; this is ambiguous if the integer can be zero. 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 integer values, zero is a special case, in particular the following results might be unexpected:

0   == false // true
0   == null  // true
123 == false // false
123 == null  // false

// It is often better to use strict comparison
0 === false // false
0 === null  // false
Loading history...
89
		{
90 3
			if ($table === 'categories')
91
			{
92 1
				$categoryModel = new Category();
93 1
				return $categoryModel->getRouteById($contentId);
94
			}
95 2
			if ($table === 'articles')
96
			{
97 1
				$articleModel = new Article();
98 1
				return $articleModel->getRouteById($contentId);
99
			}
100 1
			if ($table === 'comments')
101
			{
102 1
				$commentModel = new Comment();
103 1
				return $commentModel->getRouteById($contentId);
104
			}
105
		}
106 1
		return null;
107
	}
108
}
109