Test Failed
Push — master ( e3c39f...fe570d )
by Mihail
07:20
created

Apps/View/Front/default/content/list.php (5 issues)

1
<?php
2
3
use Ffcms\Core\Helper\Date;
4
use Ffcms\Core\Helper\Type\Any;
5
use Ffcms\Core\Helper\Type\Arr;
6
use Ffcms\Core\Helper\Type\Str;
7
use Ffcms\Templex\Url\Url;
0 ignored issues
show
This use statement conflicts with another class in this namespace, Url. Consider defining an alias.

Let?s assume that you have a directory layout like this:

.
|-- OtherDir
|   |-- Bar.php
|   `-- Foo.php
`-- SomeDir
    `-- Foo.php

and let?s assume the following content of Bar.php:

// Bar.php
namespace OtherDir;

use SomeDir\Foo; // This now conflicts the class OtherDir\Foo

If both files OtherDir/Foo.php and SomeDir/Foo.php are loaded in the same runtime, you will see a PHP error such as the following:

PHP Fatal error:  Cannot use SomeDir\Foo as Foo because the name is already in use in OtherDir/Foo.php

However, as OtherDir/Foo.php does not necessarily have to be loaded and the error is only triggered if it is loaded before OtherDir/Bar.php, this problem might go unnoticed for a while. In order to prevent this error from surfacing, you must import the namespace with a different alias:

// Bar.php
namespace OtherDir;

use SomeDir\Foo as SomeDirFoo; // There is no conflict anymore.
Loading history...
8
9
/** @var array $pagination */
10
/** @var array $configs */
11
/** @var \Ffcms\Templex\Template\Template $this */
12
/** @var array $category */
13
/** @var Apps\Model\Front\Content\EntityCategoryList $model */
14
15
$catConfigs = [];
16
foreach ($model->category['configs'] as $key=>$value) {
17
    $catConfigs[$key] = (bool)$value;
18
}
19
$catMeta = [
20
    'date' => $catConfigs['showDate'],
21
    'author' => $catConfigs['showAuthor'],
22
    'views' => $catConfigs['showViews']
23
];
24
25
$breads = null;
26
if (!\App::$Request->isPathInjected()) {
27
    $breads = [
28
        Url::to('/') => __('Home'),
29
        Url::to('content/list') => __('Contents'),
30
        $model->category['title']
31
    ];
32
}
33
34
$this->layout('_layouts/default', [
35
    'title' => $model->category['title'],
36
    'breadcrumbs' => $breads
37
]);
38
?>
39
<?php $this->start('body') ?>
40
<script>
41
    // content id array
42
    var contentIds = [];
43
</script>
44
<?php if (!\App::$Request->isPathInjected()): ?>
45
    <h1>
46
        <?= $model->category['title'] ?>
47
        <?php if (!Str::likeEmpty($model->category['rss'])): ?>
48
            <small><a href="<?= $model->category['rss'] ?>" target="_blank"><i class="fa fa-rss"></i></a></small>
49
        <?php endif; ?>
50
        <div class="float-right">
51
            <div class="btn-group" role="group">
52
                <button type="button" class="btn btn-default btn-xs dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
53
                    <i class="fa fa-sort-amount-desc"></i> <?= __('Sorting')?> <span class="caret"></span>
54
                </button>
55
                <div class="dropdown-menu">
56
                    <a class="dropdown-item" href="<?= $model->category['sort']['newest'] ?>"><?= __('Newest') ?> </a>
57
                    <a class="dropdown-item" href="<?= $model->category['sort']['rating'] ?>"><?= __('Rating') ?></a>
58
                    <a class="dropdown-item" href="<?= $model->category['sort']['views'] ?>"><?= __('Popularity') ?></a>
59
                </div>
60
            </div>
61
        </div>
62
    </h1>
63
    <?php if (Str::length($model->category['description']) > 0): ?>
64
        <p class="text-muted"><?= $model->category['description'] ?></p>
65
    <?php endif; ?>
66
    <hr />
67
<?php endif; ?>
68
<?php if ($model->getContentCount() < 1): ?>
69
    <p class="alert alert-warning"><?= __('This category is empty!') ?></p>
70
    <?php return; endif; ?>
71
<?php foreach ($model->items as $item): ?>
72
    <article class="article-item" itemscope="itemscope" itemtype="https://schema.org/NewsArticle">
73
        <h2 itemprop="name">
74
            <?php if ($item['important']): ?>
75
                <i class="fa fa-fire" style="color: #a50000"></i>
76
            <?php endif; ?>
77
            <a href="<?= \App::$Alias->baseUrl . $item['uri'] ?>">
78
                <?= $item['title'] ?>
79
            </a>
80
        </h2>
81
        <?php if (Arr::in(true, $catMeta)): ?>
0 ignored issues
show
true of type true is incompatible with the type double|integer|string expected by parameter $needle of Ffcms\Core\Helper\Type\Arr::in(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

81
        <?php if (Arr::in(/** @scrutinizer ignore-type */ true, $catMeta)): ?>
Loading history...
82
            <div class="meta">
83
                <?php if ($catConfigs['showCategory'] === true): ?>
84
                    <span class="spaced"><i class="fa fa-list"></i>
85
                        <?= Url::a(
86
                            ['content/list', [$item['category']->path]],
87
                            \App::$Translate->getLocaleText($item['category']->title),
0 ignored issues
show
It seems like App::Translate->getLocal...tem['category']->title) can also be of type null; however, parameter $text of Ffcms\Templex\Url\Url::a() does only seem to accept string, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

87
                            /** @scrutinizer ignore-type */ \App::$Translate->getLocaleText($item['category']->title),
Loading history...
88
                            ['itemprop' => 'genre']
89
                        ) ?>
90
            </span>
91
                <?php endif; ?>
92
                <?php if ($catConfigs['showDate'] === true): ?>
93
                    <span class="spaced"><i class="fa fa-calendar"></i>
94
                <time datetime="<?= date('c', Date::convertToTimestamp($item['date'])) ?>" itemprop="datePublished">
95
                    <?= $item['date'] ?>
96
                </time>
97
            </span>
98
                <?php endif; ?>
99
                <?php if ($catConfigs['showAuthor'] === true): ?>
100
                    <span class="spaced"><i class="fa fa-user"></i>
101
                        <?php
102
                        $ownerNick = $item['author']->profile === null ? __('Unknown') : $item['author']->profile->getNickname();
103
                        if ($item['author']->getId() < 1) {
104
                            echo '<s>' . $ownerNick . '</s>';
105
                        } else {
106
                            echo Url::a(['profile/show', [$item['author']->getId()]], $ownerNick, ['itemprop' => 'author']);
107
                        }
108
                        ?>
109
            </span>
110
                <?php endif; ?>
111
                <?php if ($catConfigs['showViews'] === true): ?>
112
                    <span class="spaced"><i class="fa fa-eye"></i> <?= $item['views'] ?></span>
113
                <?php endif; ?>
114
            </div>
115
        <?php else: ?>
116
            <hr />
117
        <?php endif; ?>
118
        <div class="row">
119
            <div class="col-md-12">
120
                <?php if ($catConfigs['showPoster'] === true && $item['thumb'] !== null): ?>
121
                    <img src="<?= \App::$Alias->scriptUrl . $item['thumb'] ?>" class="image_poster img-thumbnail d-none d-sm-block" alt="<?= __('Poster for') ?>: <?= Str::lowerCase($item['title']) ?>" />
122
                <?php endif; ?>
123
                <div itemprop="text articleBody">
124
                    <?= $item['text'] ?>
125
                </div>
126
            </div>
127
        </div>
128
        <div class="meta">
129
            <?php /**if ((int)$catConfigs['showRating'] === 1) {
0 ignored issues
show
Unused Code Comprehensibility introduced by zenn
67% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
130
                echo \App::$View->render('content/_rate', [
131
                    'id' => $item['id'],
132
                    'canRate' => $item['canRate'],
133
                    'rating' => $item['rating']
134
                ]);
135
            }*/ ?>
136
137
            <span class="spaced"><i class="fa fa-comment-o"></i>
138
                <a href="<?= \App::$Alias->baseUrl . $item['uri'] ?>#comments-list"><?= __('Comments') ?>: <span itemprop="commentCount" id="comment-count-<?= $item['id'] ?>">0</span></a>
139
            </span>
140
            <span class="float-right">
141
            <?php if ((int)$catConfigs['showTags'] === 1 && $item['tags'] !== null && Any::isArray($item['tags'])): ?>
142
                <span class="spaced"><i class="fa fa-tags"></i>
143
                    <?php
144
                    foreach ($item['tags'] as $tag) {
145
                        $tag = trim($tag);
146
                        echo Url::a(['content/tag', [urlencode($tag)]], $tag, ['class' => 'badge badge-secondary']) . "&nbsp;";
147
                    }
148
                    ?>
149
                </span>
150
                <meta itemprop="keywords" content="<?php implode(',', $item['tags']); ?>">
151
            <?php endif; ?>
152
            </span>
153
        </div>
154
    </article>
155
    <script>
156
        contentIds.push(<?= $item['id'] ?>);
157
    </script>
158
<?php endforeach; ?>
159
160
<?php //\App::$View->render('content/_rateJs') ?>
0 ignored issues
show
Unused Code Comprehensibility introduced by zenn
78% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
161
162
<?= $this->bootstrap()->pagination(['content/my'], ['class' => 'pagination justify-content-center'])
163
    ->size($pagination['total'], $pagination['page'], $pagination['step'])
164
    ->display(); ?>
165
166
<script>
167
    $(document).ready(function() {
168
        if (typeof contentIds === 'object' || contentIds.length > 0) {
169
            $.getJSON(script_url + '/api/comments/count/content?lang='+script_lang, {id: contentIds}, function(json){
170
                // check if response is success
171
                if (json.status !== 1 || typeof json.count !== 'object') {
172
                    return null;
173
                }
174
                // list response json counts by itemId => count
175
                for (var itemId in json.count) {
176
                    $('#comment-count-' + itemId).text(json.count[itemId]);
177
                }
178
            });
179
        }
180
    })
181
</script>
182
<?php $this->stop() ?>