views.php ➔ showRandomquoteBlockViews()   B
last analyzed

Complexity

Conditions 6
Paths 12

Size

Total Lines 58

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 6
nc 12
nop 1
dl 0
loc 58
rs 8.2941
c 0
b 0
f 0

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
/*
3
 You may not change or alter any portion of this comment or credits of
4
 supporting developers from this source code or any supporting source code
5
 which is considered copyrighted (c) material of the original comment or credit
6
 authors.
7
8
 This program is distributed in the hope that it will be useful, but
9
 WITHOUT ANY WARRANTY; without even the implied warranty of
10
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11
 */
12
13
/**
14
 * Module: RandomQuote
15
 *
16
 * @category        Module
17
 * @package         randomquote
18
 * @author          XOOPS Module Development Team
19
 * @author          Mamba
20
 * @copyright       {@link https://xoops.org 2001-2016 XOOPS Project}
21
 * @license         {@link http://www.fsf.org/copyleft/gpl.html GNU public license}
22
 * @link            https://xoops.org XOOPS
23
 * @since           2.00
24
 */
25
26
use Xoopsmodules\randomquote;
0 ignored issues
show
Bug introduced by
This use statement conflicts with another class in this namespace, randomquote.

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...
27
28
$moduleDirName = basename(dirname(__DIR__));
29
require_once $GLOBALS['xoops']->path("/modules/{$moduleDirName}/class/Constants.php");
30
//require_once XOOPS_ROOT_PATH . '/modules/' . $moduleDirName . '/class/Utility.php';
31
32
/**
33
 *
34
 * Show a random quote in a block
35
 *
36
 * @param array    {
37
 * @param string   [0] block type
38
 * @param int      [1] number of quotes to display
39
 *                 }
40
 *
41
 * @return array {
42
 *                 array {
43
 * @param string   [quote]
44
 * @param string   [author]
45
 */
46
47
function showRandomquoteBlockViews($options)
48
{
49
    $moduleDirName = basename(dirname(__DIR__));
0 ignored issues
show
Unused Code introduced by
$moduleDirName is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
50
    //    require_once XOOPS_ROOT_PATH . '/modules/randomquote/class/quotes.php';
51
    $utility = new randomquote\Utility();
52
53
    $quotes       = [];
54
    $type_block   = $options[0];
55
    $nb_quotes    = $options[1];
56
    $length_title = (int)$options[2];
57
58
    $quotesHandler = new randomquote\QuotesHandler($GLOBALS['xoopsDB']);
59
    $criteria      = new CriteriaCompo();
60
    array_shift($options);
61
    array_shift($options);
62
    array_shift($options);
63
64
    switch ($type_block) {
65
        // for block: quotes recent
66
        case 'recent':
67
            $criteria->add(new Criteria('online', 1));
68
            //            $criteria->setSort("quotes_date_created");
69
            $criteria->setSort('id');
70
            $criteria->setOrder('DESC');
71
            break;
72
        // for block: quotes today's
73
        case 'day':
74
            $criteria->add(new Criteria('online', 1));
75
            //            $criteria->add(new Criteria("quotes_date_created", strtotime(date("Y/m/d")), ">="));
76
            //            $criteria->add(new Criteria("quotes_date_created", strtotime(date("Y/m/d")) + 86400, "<="));
77
            //            $criteria->setSort("quotes_date_created");
78
            $criteria->setOrder('ASC');
79
            $criteria->setSort('RAND()');
80
            break;
81
        // for block: quotes random
82
        case 'random':
83
            $criteria->add(new Criteria('online', 1));
84
            $criteria->setSort('RAND()');
85
            break;
86
    }
87
88
    $criteria->setLimit($nb_quotes);
89
    $quoteObjsArray = $quotesHandler->getAll($criteria);
90
    foreach ($quoteObjsArray as $thisQuote) {
91
        if ($length_title > 0) {
92
            //            $short_quote = xoops_substr($thisQuote->getVar('quote'), 0, $length_title, $trimmarker = '...');
93
            $short_quote = $utility::truncateHtml($thisQuote->getVar('quote'), $length_title, $ending = '...', $exact = false, $considerHtml = true);
94
        } else {
95
            $short_quote = $thisQuote->getVar('quote');
96
        }
97
        $quotes[] = [
98
            'quote'  => $short_quote,
99
            'author' => $thisQuote->getVar('author')
100
        ];
101
    }
102
103
    return $quotes;
104
}
105
106
/**
107
 * @param array $options Preferences config array
108
 *
109
 * @return string HTML form to edit module options
110
 */
111
function editRandomquoteBlockViews($options)
112
{
113
    $quotes_arr = [];
0 ignored issues
show
Unused Code introduced by
$quotes_arr is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
114
    $form       = ''
115
                  . _MB_RANDOMQUOTE_QUOTES_DISPLAY
116
                  . "\n"
117
                  . "<input type='hidden' name='options[0]' value='{$options[0]}'>\n"
118
                  . "<input type='text' name='options[1]' value='{$options[1]}' size='3' maxlength='4'>&nbsp;<br>\n"
119
                  . ''
120
                  . _MB_RANDOMQUOTE_QUOTES_SHORTEN
121
                  . " <input type='text' name='options[2]' value='{$options[2]}' size='3' maxlength='5'' min='0'>"
122
                  . _MB_RANDOMQUOTE_QUOTES_CHARACTERS
123
                  . '<br><br>';
124
125
    //    $form .= '' . _MB_XNEWSLETTER_LETTER_TITLELENGTH
126
    //             . " : <input name=\"options[2]\" size=\"5\" maxlength=\"255\" value=\"" . $options[2] . "\" type=\"text\"><br><br>";
127
128
    array_shift($options);
129
    array_shift($options);
130
    array_shift($options);
131
132
    return $form;
133
}
134