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\Model; |
||
3 | |||
4 | use function array_filter; |
||
5 | use function implode; |
||
6 | use function is_array; |
||
7 | |||
8 | /** |
||
9 | * parent class to provide the comment model |
||
10 | * |
||
11 | * @since 3.3.0 |
||
12 | * |
||
13 | * @package Redaxscript |
||
14 | * @category Model |
||
15 | * @author Henry Ruhs |
||
16 | */ |
||
17 | |||
18 | class Comment extends ContentAbstract |
||
19 | { |
||
20 | /** |
||
21 | * name of the table |
||
22 | * |
||
23 | * @var string |
||
24 | */ |
||
25 | |||
26 | protected $_table = 'comments'; |
||
27 | |||
28 | /** |
||
29 | * count the comments by article and language |
||
30 | * |
||
31 | * @since 4.0.0 |
||
32 | * |
||
33 | * @param int $articleId identifier of the article |
||
34 | * @param string $language |
||
35 | * |
||
36 | * @return int|null |
||
37 | */ |
||
38 | |||
39 | public function countByArticleAndLanguage(int $articleId = null, string $language = null) : ?int |
||
40 | { |
||
41 | return $this |
||
42 | ->query() |
||
43 | ->where( |
||
44 | [ |
||
45 | 'article' => $articleId, |
||
46 | 'status' => 1 |
||
47 | ]) |
||
48 | ->whereLanguageIs($language) |
||
49 | ->count() ? : null; |
||
50 | } |
||
51 | |||
52 | /** |
||
53 | * get the articles by category and language and order |
||
54 | * |
||
55 | * @since 4.0.0 |
||
56 | * |
||
57 | * @param int $articleId identifier of the article |
||
58 | * @param string $language |
||
59 | * @param string $orderColumn |
||
60 | * |
||
61 | * @return object|null |
||
62 | */ |
||
63 | |||
64 | public function getByArticleAndLanguageAndOrder(int $articleId = null, string $language = null, string $orderColumn = null) : ?object |
||
65 | { |
||
66 | return $this |
||
67 | ->query() |
||
68 | ->where( |
||
69 | [ |
||
70 | 'article' => $articleId, |
||
71 | 'status' => 1 |
||
72 | ]) |
||
73 | ->whereLanguageIs($language) |
||
74 | ->orderBySetting($orderColumn) |
||
75 | ->findMany() ? : null; |
||
76 | } |
||
77 | |||
78 | /** |
||
79 | * get the articles by category and language and order and step |
||
80 | * |
||
81 | * @since 4.0.0 |
||
82 | * |
||
83 | * @param int $articleId identifier of the article |
||
84 | * @param string $language |
||
85 | * @param string $orderColumn |
||
86 | * @param int $limitStep |
||
87 | * |
||
88 | * @return object|null |
||
89 | */ |
||
90 | |||
91 | public function getByArticleAndLanguageAndOrderAndStep(int $articleId = null, string $language = null, string $orderColumn = null, int $limitStep = null) : ?object |
||
92 | { |
||
93 | return $this |
||
94 | ->query() |
||
95 | ->where( |
||
96 | [ |
||
97 | 'article' => $articleId, |
||
98 | 'status' => 1 |
||
99 | ]) |
||
100 | ->whereLanguageIs($language) |
||
101 | ->orderBySetting($orderColumn) |
||
102 | ->limitBySetting($limitStep) |
||
103 | ->findMany() ? : null; |
||
104 | } |
||
105 | |||
106 | /** |
||
107 | * get the comment route by id |
||
108 | * |
||
109 | * @since 3.3.0 |
||
110 | * |
||
111 | * @param int $commentId identifier of the comment |
||
112 | * |
||
113 | * @return string|null |
||
114 | */ |
||
115 | |||
116 | 4 | public function getRouteById(int $commentId = null) : ?string |
|
117 | { |
||
118 | 4 | if ($commentId) |
|
0 ignored issues
–
show
|
|||
119 | { |
||
120 | $routeArray = $this |
||
121 | 3 | ->query() |
|
122 | 3 | ->tableAlias('comment') |
|
123 | 3 | ->leftJoinPrefix('articles', 'comment.article = article.id', 'article') |
|
124 | 3 | ->leftJoinPrefix('categories', 'article.category = category.id', 'category') |
|
125 | 3 | ->leftJoinPrefix('categories', 'category.parent = parent.id', 'parent') |
|
126 | 3 | ->select('parent.alias', 'parentAlias') |
|
127 | 3 | ->select('category.alias', 'categoryAlias') |
|
128 | 3 | ->select('article.alias', 'articleAlias') |
|
129 | 3 | ->where('comment.id', $commentId) |
|
130 | 3 | ->findArray(); |
|
131 | |||
132 | /* handle route */ |
||
133 | |||
134 | 3 | if (is_array($routeArray[0])) |
|
135 | { |
||
136 | 3 | return implode('/', array_filter($routeArray[0])) . '#comment-' . $commentId; |
|
137 | } |
||
138 | } |
||
139 | 1 | return null; |
|
140 | } |
||
141 | |||
142 | /** |
||
143 | * create the comment by array |
||
144 | * |
||
145 | * @since 3.3.0 |
||
146 | * |
||
147 | * @param array $createArray array of the create |
||
148 | * |
||
149 | * @return bool |
||
150 | */ |
||
151 | |||
152 | public function createByArray(array $createArray = []) : bool |
||
153 | { |
||
154 | return $this |
||
155 | ->query() |
||
156 | ->create() |
||
157 | ->set($createArray) |
||
158 | ->save(); |
||
159 | } |
||
160 | } |
||
161 |
In PHP, under loose comparison (like
==
, or!=
, orswitch
conditions), values of different types might be equal.For
integer
values, zero is a special case, in particular the following results might be unexpected: