ampache/ampache

View on GitHub
public/templates/show_recently_played_all.inc.php

Summary

Maintainability
D
2 days
Test Coverage

Possibly zero references to use statement for classlike/namespace Podcast_Episode (\Ampache\Repository\Model\Podcast_Episode)
Open

use Ampache\Repository\Model\Podcast_Episode;

Argument 3 (value) is float but \nT_() takes int|string defined at /code/src/Config/functions.php:1176
Open

                $time_string = sprintf(nT_('%d month ago', '%d months ago', $interval), $interval);

Argument 3 (value) is float but \nT_() takes int|string defined at /code/src/Config/functions.php:1176
Open

                $time_string = sprintf(nT_('%d week ago', '%d weeks ago', $interval), $interval);

Argument 3 (value) is float but \nT_() takes int|string defined at /code/src/Config/functions.php:1176
Open

                $time_string = sprintf(nT_('%d year ago', '%d years ago', $interval), $interval);

Call to method __construct from undeclared class \Ampache\Repository\Model\User
Open

    $row_user  = new User($row_id);

Argument 3 (value) is float but \nT_() takes int|string defined at /code/src/Config/functions.php:1176
Open

                $time_string = sprintf(nT_('%d decade ago', '%d decades ago', $interval), $interval);

Argument 3 (value) is float but \nT_() takes int|string defined at /code/src/Config/functions.php:1176
Open

                $time_string = sprintf(nT_('%d minute ago', '%d minutes ago', $interval), $interval);

Call to method show_box_bottom from undeclared class \Ampache\Module\Util\Ui
Open

<?php Ui::show_box_bottom(); ?>

Call to method get_icon from undeclared class \Ampache\Module\Util\Ui
Open

                        <?php echo Ui::get_icon('playlist_add', T_('Add to playlist')); ?>

Call to method get_icon from undeclared class \Ampache\Module\Util\Ui
Open

                        echo Ui::get_icon('info', $agent); ?>

Call to method get_display from undeclared class \Ampache\Module\Util\Rss\AmpacheRss
Open

$rss_link  = AmpConfig::get('use_rss') ? '&nbsp' . AmpacheRss::get_display('recently_played', $user_id) : '';

Call to deprecated function \Ampache\Module\Authorization\Access::check() defined at /code/src/Module/Authorization/Access.php:154
Open

$is_admin  = Access::check('interface', 100);

Argument 3 (value) is float but \nT_() takes int|string defined at /code/src/Config/functions.php:1176
Open

                $time_string = sprintf(nT_('%d hour ago', '%d hours ago', $interval), $interval);

Call to method check_autoplay_append from undeclared class \Ampache\Module\Playback\Stream_Playlist
Open

                            <?php if (Stream_Playlist::check_autoplay_append()) { ?>

Call to method check_autoplay_next from undeclared class \Ampache\Module\Playback\Stream_Playlist
Open

                            <?php if (Stream_Playlist::check_autoplay_next()) { ?>

Reference to instance property fullname from undeclared class \Ampache\Repository\Model\User
Open

                            <?php echo scrub_out($row_user->fullname); ?>

Possibly zero references to use statement for classlike/namespace Song (\Ampache\Repository\Model\Song)
Open

use Ampache\Repository\Model\Song;

Reference to instance property id from undeclared class \Ampache\Repository\Model\User
Open

                        <a href="<?php echo $web_path; ?>/stats.php?action=show_user&user_id=<?php echo $row_user->id; ?>">

Argument 3 (value) is float but \nT_() takes int|string defined at /code/src/Config/functions.php:1176
Open

                $time_string = sprintf(nT_('%d day ago', '%d days ago', $interval), $interval);

Possibly zero references to use statement for classlike/namespace Live_Stream (\Ampache\Repository\Model\Live_Stream)
Open

use Ampache\Repository\Model\Live_Stream;

Possibly zero references to use statement for classlike/namespace Video (\Ampache\Repository\Model\Video)
Open

use Ampache\Repository\Model\Video;

Call to method show_box_top from undeclared class \Ampache\Module\Util\Ui
Open

UI::show_box_top(T_('Recently Played') . $rss_link . $refresh, 'box_recently_played'); ?>

Define a constant instead of duplicating this literal "?page=stream&action=directplay&object_type=song&object_id=" 3 times.
Open

                            <?php echo Ajax::button('?page=stream&action=directplay&object_type=song&object_id=' . $media->getId(), 'play', T_('Play'), 'play_song_' . $count . '_' . $media->getId()); ?>

Duplicated string literals make the process of refactoring error-prone, since you must be sure to update all occurrences.

On the other hand, constants can be referenced from many places, but only need to be updated in a single place.

Noncompliant Code Example

With the default threshold of 3:

function run() {
  prepare('action1');                              // Non-Compliant - 'action1' is duplicated 3 times
  execute('action1');
  release('action1');
}

Compliant Solution

ACTION_1 = 'action1';

function run() {
  prepare(ACTION_1);
  execute(ACTION_1);
  release(ACTION_1);
}

Exceptions

To prevent generating some false-positives, literals having less than 5 characters are excluded.

Identical blocks of code found in 2 locations. Consider refactoring.
Open

        if ($is_allowed_time) {
            $interval = (int) (time() - ($row['date'] ?? 0));

            if ($interval < 60) {
                $time_string = sprintf(nT_('%d second ago', '%d seconds ago', $interval), $interval);
Severity: Major
Found in public/templates/show_recently_played_all.inc.php and 1 other location - About 2 days to fix
public/templates/show_recently_skipped.inc.php on lines 81..108

Duplicated Code

Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

Tuning

This issue has a mass of 456.

We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

Refactorings

Further Reading

Line indented incorrectly; expected 4 spaces, found 0
Open

foreach ($data as $row) {

Line indented incorrectly; expected at least 8 spaces, found 4
Open

    $is_allowed_recent  = $is_admin || $user_id == $row_id || $has_allowed_recent;

Line indented incorrectly; expected at least 8 spaces, found 4
Open

    $is_allowed_time    = $is_admin || $user_id == $row_id || $has_allowed_time;

Line indented incorrectly; expected at least 20 spaces, found 16
Open

                $interval    = floor($interval / 3600);

Line indented incorrectly; expected at least 12 spaces, found 8
Open

        $media->format(); ?>

Line indented incorrectly; expected 8 spaces, found 4
Open

    }

Line indented incorrectly; expected 8 spaces, found 4
Open

    if ($is_allowed_recent) {

Line indented incorrectly; expected 16 spaces, found 12
Open

            } elseif ($interval < 604800) {

Line indented incorrectly; expected at least 8 spaces, found 4
Open

    $row_id    = ($row['user'] > 0) ? (int) $row['user'] : -1;

Line indented incorrectly; expected 16 spaces, found 12
Open

            if ($interval < 60) {

Line indented incorrectly; expected at least 20 spaces, found 16
Open

                $interval    = floor($interval / 60);

Line indented incorrectly; expected 0 spaces, found 20
Open

                    } ?>

Line indented incorrectly; expected 16 spaces, found 12
Open

            } elseif ($interval < 31556926) {

Line indented incorrectly; expected at least 20 spaces, found 16
Open

                $interval    = floor($interval / 315569260);

Line indented incorrectly; expected at least 8 spaces, found 4
Open

    $agent              = ($is_admin) ? $row['agent'] : '';

Line indented incorrectly; expected at least 8 spaces, found 4
Open

    $time_string        = '-';

Line indented incorrectly; expected at least 8 spaces, found 4
Open

    $media = new $className($row['object_id']);

Line indented incorrectly; expected 8 spaces, found 4
Open

    }

Line indented incorrectly; expected 16 spaces, found 12
Open

            } elseif ($interval < 3600) {

Line indented incorrectly; expected at least 20 spaces, found 16
Open

                $time_string = sprintf(nT_('%d hour ago', '%d hours ago', $interval), $interval);

Line indented incorrectly; expected at least 20 spaces, found 16
Open

                $interval    = floor($interval / 86400);

Line indented incorrectly; expected at least 20 spaces, found 16
Open

                $time_string = sprintf(nT_('%d year ago', '%d years ago', $interval), $interval);

Line indented incorrectly; expected 4 spaces, found 0
Open

} ?>

Line indented incorrectly; expected at least 20 spaces, found 16
Open

                $interval    = floor($interval / 2592000);

Line indented incorrectly; expected 16 spaces, found 12
Open

            } else {

Line indented incorrectly; expected at least 8 spaces, found 4
Open

    $className = ObjectTypeToClassNameMapper::map($row['object_type']);

Line indented incorrectly; expected at least 8 spaces, found 4
Open

    $has_allowed_time   = (bool) $row['user_time'];

Line indented incorrectly; expected at least 16 spaces, found 12
Open

            $interval = (int) (time() - ($row['date'] ?? 0));

Line indented incorrectly; expected 16 spaces, found 12
Open

            } elseif ($interval < 86400) {

Line indented incorrectly; expected at least 20 spaces, found 16
Open

                $time_string = sprintf(nT_('%d decade ago', '%d decades ago', $interval), $interval);

Line indented incorrectly; expected 12 spaces, found 8
Open

        if ($is_allowed_time) {

Line indented incorrectly; expected at least 20 spaces, found 16
Open

                $time_string = sprintf(nT_('%d week ago', '%d weeks ago', $interval), $interval);

Line indented incorrectly; expected 12 spaces, found 8
Open

        }

Line indented incorrectly; expected at least 8 spaces, found 4
Open

    $has_allowed_recent = (bool) $row['user_recent'];

Line indented incorrectly; expected at least 20 spaces, found 16
Open

                $time_string = sprintf(nT_('%d day ago', '%d days ago', $interval), $interval);

Line indented incorrectly; expected at least 20 spaces, found 16
Open

                $interval    = floor($interval / 604800);

Line indented incorrectly; expected at least 8 spaces, found 4
Open

    $row_user  = new User($row_id);

Line indented incorrectly; expected at least 12 spaces, found 8
Open

        continue;

Line indented incorrectly; expected at least 20 spaces, found 16
Open

                $time_string = sprintf(nT_('%d minute ago', '%d minutes ago', $interval), $interval);

Line indented incorrectly; expected 16 spaces, found 12
Open

            }

Line indented incorrectly; expected 8 spaces, found 4
Open

    if ($media->isNew()) {

Line indented incorrectly; expected at least 20 spaces, found 16
Open

                $time_string = sprintf(nT_('%d second ago', '%d seconds ago', $interval), $interval);

Line indented incorrectly; expected at least 20 spaces, found 16
Open

                $interval    = floor($interval / 31556926);

Line indented incorrectly; expected 16 spaces, found 12
Open

            } elseif ($interval < 2592000) {

Line indented incorrectly; expected at least 20 spaces, found 16
Open

                $time_string = sprintf(nT_('%d month ago', '%d months ago', $interval), $interval);

Line indented incorrectly; expected 16 spaces, found 12
Open

            } elseif ($interval < 631138519) {

There are no issues that match your filters.

Category
Status