Completed
Push — master ( 3024c9...954431 )
by Michael
04:21
created

blocksadmin.php ➔ isBlockCloned()   C

Complexity

Conditions 12
Paths 106

Size

Total Lines 65
Code Lines 52

Duplication

Lines 9
Ratio 13.85 %

Importance

Changes 3
Bugs 0 Features 0
Metric Value
cc 12
eloc 52
c 3
b 0
f 0
nc 106
nop 7
dl 9
loc 65
rs 5.8116

How to fix   Long Method    Complexity   

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
0 ignored issues
show
Coding Style Compatibility introduced by
For compatibility and reusability of your code, PSR1 recommends that a file should introduce either new symbols (like classes, functions, etc.) or have side-effects (like outputting something, or including other files), but not both at the same time. The first symbol is defined on line 51 and the first side effect is on line 25.

The PSR-1: Basic Coding Standard recommends that a file should either introduce new symbols, that is classes, functions, constants or similar, or have side effects. Side effects are anything that executes logic, like for example printing output, changing ini settings or writing to a file.

The idea behind this recommendation is that merely auto-loading a class should not change the state of an application. It also promotes a cleaner style of programming and makes your code less prone to errors, because the logic is not spread out all over the place.

To learn more about the PSR-1, please see the PHP-FIG site on the PSR-1.

Loading history...
2
/**
3
 * Module: XoopsTube
4
 *
5
 * You may not change or alter any portion of this comment or credits
6
 * of supporting developers from this source code or any supporting source code
7
 * which is considered copyrighted (c) material of the original comment or credit authors.
8
 *
9
 * PHP version 5
10
 *
11
 * @category        Module
12
 * @package         Xoopstube
13
 * @author          Fernando Santos (topet05), [email protected]
14
 * @copyright       Mastop InfoDigital (c) 2003-2007
15
 * @link            http://www.mastop.com.br
16
 * @license         GNU GPL 2 or later (http://www.gnu.org/licenses/gpl-2.0.html)
17
 * @since           1.0.6
18
 */
19
20
include_once __DIR__ . '/admin_header.php';
21
if (!is_object($GLOBALS['xoopsUser']) || !is_object($xoopsModule) || !$GLOBALS['xoopsUser']->isAdmin($xoopsModule->mid())) {
22
    exit(_AM_XOOPSTUBE_ERROR403);
23
}
24
if ($GLOBALS['xoopsUser']->isAdmin($xoopsModule->mid())) {
25
    include_once XOOPS_ROOT_PATH . '/class/xoopsblock.php';
26
    $op = 'list';
27
    if (isset($_POST)) {
28
        foreach ($_POST as $k => $v) {
29
            $$k = $v;
30
        }
31
    }
32
    /*
0 ignored issues
show
Unused Code Comprehensibility introduced by
57% 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...
33
        if (XoopsRequest::getCmd('op', '')) {
34
            if ($_GET['op'] === "edit" || $_GET['op'] === "delete" || $_GET['op'] === "delete_ok" || $_GET['op'] === "clone"
35
                || $_GET['op'] === "edit"
36
            ) {
37
                $op  = $_GET['op'];
38
                $bid = XoopsRequest::getInt('bid',0 ,'GET'); //isset($_GET['bid']) ? (int) $_GET['bid'] : 0;
39
            }
40
        }
41
    */
42
43
    $op = XoopsRequest::getCmd('op', XoopsRequest::getCmd('op', '', 'POST'), 'GET');
44
    if (in_array($op, array('edit', 'delete', 'delete_ok', 'clone'))) {
45
        $bid = XoopsRequest::getInt('bid', 0, 'GET');
46
    }
47
48
    /**
49
     *
50
     */
51
    function listBlocks()
0 ignored issues
show
Coding Style introduced by
listBlocks uses the super-global variable $GLOBALS which is generally not recommended.

Instead of super-globals, we recommend to explicitly inject the dependencies of your class. This makes your code less dependent on global state and it becomes generally more testable:

// Bad
class Router
{
    public function generate($path)
    {
        return $_SERVER['HOST'].$path;
    }
}

// Better
class Router
{
    private $host;

    public function __construct($host)
    {
        $this->host = $host;
    }

    public function generate($path)
    {
        return $this->host.$path;
    }
}

class Controller
{
    public function myAction(Request $request)
    {
        // Instead of
        $page = isset($_GET['page']) ? intval($_GET['page']) : 1;

        // Better (assuming you use the Symfony2 request)
        $page = $request->query->get('page', 1);
    }
}
Loading history...
Coding Style introduced by
listBlocks uses the super-global variable $_SERVER which is generally not recommended.

Instead of super-globals, we recommend to explicitly inject the dependencies of your class. This makes your code less dependent on global state and it becomes generally more testable:

// Bad
class Router
{
    public function generate($path)
    {
        return $_SERVER['HOST'].$path;
    }
}

// Better
class Router
{
    private $host;

    public function __construct($host)
    {
        $this->host = $host;
    }

    public function generate($path)
    {
        return $this->host.$path;
    }
}

class Controller
{
    public function myAction(Request $request)
    {
        // Instead of
        $page = isset($_GET['page']) ? intval($_GET['page']) : 1;

        // Better (assuming you use the Symfony2 request)
        $page = $request->query->get('page', 1);
    }
}
Loading history...
52
    {
53
        global $xoopsModule, $pathIcon16;
0 ignored issues
show
Compatibility Best Practice introduced by
Use of global functionality is not recommended; it makes your code harder to test, and less reusable.

Instead of relying on global state, we recommend one of these alternatives:

1. Pass all data via parameters

function myFunction($a, $b) {
    // Do something
}

2. Create a class that maintains your state

class MyClass {
    private $a;
    private $b;

    public function __construct($a, $b) {
        $this->a = $a;
        $this->b = $b;
    }

    public function myFunction() {
        // Do something
    }
}
Loading history...
54
        include_once XOOPS_ROOT_PATH . '/class/xoopslists.php';
55
        $db = XoopsDatabaseFactory::getDatabaseConnection();
56 View Code Duplication
        if (file_exists(XOOPS_ROOT_PATH . '/modules/system/language/' . $GLOBALS['xoopsConfig']['language'] . '/admin/blocksadmin.php')) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
57
            include_once(XOOPS_ROOT_PATH . '/modules/system/language/' . $GLOBALS['xoopsConfig']['language'] . '/admin.php');
58
            include_once(XOOPS_ROOT_PATH . '/modules/system/language/' . $GLOBALS['xoopsConfig']['language'] . '/admin/blocksadmin.php');
59
            //include_once(XOOPS_ROOT_PATH."/modules/system/language/".$GLOBALS['xoopsConfig']['language']."/admin/groups.php");
0 ignored issues
show
Unused Code Comprehensibility introduced by
77% 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...
60
        } else {
61
            include_once(XOOPS_ROOT_PATH . '/modules/system/language/portuguesebr/admin.php');
62
            include_once(XOOPS_ROOT_PATH . '/modules/system/language/portuguesebr/admin/blocksadmin.php');
63
            include_once(XOOPS_ROOT_PATH . '/modules/system/language/portuguesebr/admin/groups.php');
64
        }
65
        $moduleHandler    = xoops_getHandler('module');
66
        $memberHandler    = xoops_getHandler('member');
67
        $grouppermHandler = xoops_getHandler('groupperm');
68
        $groups           = $memberHandler->getGroups();
69
        $criteria         = new CriteriaCompo(new Criteria('hasmain', 1));
70
        $criteria->add(new Criteria('isactive', 1));
71
        $module_list     =& $moduleHandler->getList($criteria);
72
        $module_list[-1] = _AM_SYSTEM_BLOCKS_TOPPAGE;
73
        $module_list[0]  = _AM_SYSTEM_BLOCKS_ALLPAGES;
74
        ksort($module_list);
75
        echo "
76
        <h4 style='text-align:left;'>" . _AM_XOOPSTUBE_BADMIN . '</h4>';
77
        $moduleHandler = xoops_getHandler('module');
0 ignored issues
show
Unused Code introduced by
$moduleHandler 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...
78
        echo "<form action='" . $_SERVER['PHP_SELF'] . "' name='blockadmin' method='post'>
79
        <table width='100%' class='outer' cellpadding='4' cellspacing='1'>
80
        <tr valign='middle'><th align='center'>" . _AM_XOOPSTUBE_TITLE . "</th><th align='center' nowrap='nowrap'>" . _AM_XOOPSTUBE_SIDE . '<br>' . _LEFT . '-' . _CENTER . '-' . _RIGHT
81
             . "</th><th align='center'>" . _AM_XOOPSTUBE_WEIGHT . "</th><th align='center'>" . _AM_XOOPSTUBE_VISIBLE . "</th><th align='center'>" . _AM_SYSTEM_BLOCKS_VISIBLEIN
82
             . "</th><th align='center'>" . _AM_SYSTEM_ADGS . "</th><th align='center'>" . _AM_SYSTEM_BLOCKS_BCACHETIME . "</th><th align='center'>" . _AM_XOOPSTUBE_ACTION . '</th></tr>
83
        ';
84
        $block_arr   =& XoopsBlock::getByModule($xoopsModule->mid());
85
        $block_count = count($block_arr);
0 ignored issues
show
Unused Code introduced by
$block_count 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...
86
        $class       = 'even';
87
        $cachetimes  = array(
88
            '0'       => _NOCACHE,
89
            '30'      => sprintf(_SECONDS, 30),
90
            '60'      => _MINUTE,
91
            '300'     => sprintf(_MINUTES, 5),
92
            '1800'    => sprintf(_MINUTES, 30),
93
            '3600'    => _HOUR,
94
            '18000'   => sprintf(_HOURS, 5),
95
            '86400'   => _DAY,
96
            '259200'  => sprintf(_DAYS, 3),
97
            '604800'  => _WEEK,
98
            '2592000' => _MONTH
99
        );
100
        foreach ($block_arr as $i) {
101
            $groups_perms =& $grouppermHandler->getGroupIds('block_read', $i->getVar('bid'));
102
            $sql          = 'SELECT module_id FROM ' . $db->prefix('block_module_link') . ' WHERE block_id=' . $i->getVar('bid');
103
            $result       = $db->query($sql);
104
            $modules      = array();
105 View Code Duplication
            while (false !== ($row = $db->fetchArray($result))) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
106
                $modules[] = (int)$row['module_id'];
107
            }
108
109
            $cachetime_options = '';
110
            foreach ($cachetimes as $cachetime => $cachetime_name) {
111
                if ($i->getVar('bcachetime') == $cachetime) {
112
                    $cachetime_options .= "<option value='$cachetime' selected='selected'>$cachetime_name</option>\n";
113
                } else {
114
                    $cachetime_options .= "<option value='$cachetime'>$cachetime_name</option>\n";
115
                }
116
            }
117
118
            $sel0 = $sel1 = $ssel0 = $ssel1 = $ssel2 = $ssel3 = $ssel4 = $ssel5 = $ssel6 = $ssel7 = '';
119
            if ($i->getVar('visible') == 1) {
120
                $sel1 = " checked='checked'";
121
            } else {
122
                $sel0 = " checked='checked'";
123
            }
124
            if ($i->getVar('side') == XOOPS_SIDEBLOCK_LEFT) {
125
                $ssel0 = " checked='checked'";
126
            } elseif ($i->getVar('side') == XOOPS_SIDEBLOCK_RIGHT) {
127
                $ssel1 = " checked='checked'";
128
            } elseif ($i->getVar('side') == XOOPS_CENTERBLOCK_LEFT) {
129
                $ssel2 = " checked='checked'";
130
            } elseif ($i->getVar('side') == XOOPS_CENTERBLOCK_RIGHT) {
131
                $ssel4 = " checked='checked'";
132
            } elseif ($i->getVar('side') == XOOPS_CENTERBLOCK_CENTER) {
133
                $ssel3 = " checked='checked'";
134
            } elseif ($i->getVar('side') == XOOPS_CENTERBLOCK_BOTTOMLEFT) {
135
                $ssel5 = " checked='checked'";
136
            } elseif ($i->getVar('side') == XOOPS_CENTERBLOCK_BOTTOMRIGHT) {
137
                $ssel6 = " checked='checked'";
138
            } elseif ($i->getVar('side') == XOOPS_CENTERBLOCK_BOTTOM) {
139
                $ssel7 = " checked='checked'";
140
            }
141
            if ('' === $i->getVar('title')) {
142
                $title = '&nbsp;';
143
            } else {
144
                $title = $i->getVar('title');
145
            }
146
            $name = $i->getVar('name');
0 ignored issues
show
Unused Code introduced by
$name 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...
147
            echo "<tr valign='top'><td class='$class' align='center'><input type='text' name='title[" . $i->getVar('bid') . "]' value='" . $title . "'></td><td class='$class' align='center' nowrap='nowrap'>
148
                    <div align='center' >
149
                    <input type='radio' name='side[" . $i->getVar('bid') . "]' value='" . XOOPS_CENTERBLOCK_LEFT . "'$ssel2 />
150
                        <input type='radio' name='side[" . $i->getVar('bid') . "]' value='" . XOOPS_CENTERBLOCK_CENTER . "'$ssel3 />
151
                    <input type='radio' name='side[" . $i->getVar('bid') . "]' value='" . XOOPS_CENTERBLOCK_RIGHT . "'$ssel4 />
152
                    </div>
153
                    <div>
154
                        <span style='float:right;'><input type='radio' name='side[" . $i->getVar('bid') . "]' value='" . XOOPS_SIDEBLOCK_RIGHT . "'$ssel1 /></span>
155
                    <div align='left'><input type='radio' name='side[" . $i->getVar('bid') . "]' value='" . XOOPS_SIDEBLOCK_LEFT . "'$ssel0 /></div>
156
                    </div>
157
                    <div align='center'>
158
                    <input type='radio' name='side[" . $i->getVar('bid') . "]' value='" . XOOPS_CENTERBLOCK_BOTTOMLEFT . "'$ssel5 />
159
                        <input type='radio' name='side[" . $i->getVar('bid') . "]' value='" . XOOPS_CENTERBLOCK_BOTTOM . "'$ssel7 />
160
                    <input type='radio' name='side[" . $i->getVar('bid') . "]' value='" . XOOPS_CENTERBLOCK_BOTTOMRIGHT . "'$ssel6 />
161
                    </div>
162
                </td><td class='$class' align='center'><input type='text' name='weight[" . $i->getVar('bid') . "]' value='" . $i->getVar('weight')
163
                 . "' size='5' maxlength='5' /></td><td class='$class' align='center' nowrap><input type='radio' name='visible[" . $i->getVar('bid') . "]' value='1'$sel1>" . _YES
164
                 . "&nbsp;<input type='radio' name='visible[" . $i->getVar('bid') . "]' value='0'$sel0>" . _NO . '</td>';
165
166
            echo "<td class='$class' align='center'><select size='5' name='bmodule[" . $i->getVar('bid') . "][]' id='bmodule[" . $i->getVar('bid') . "][]' multiple='multiple'>";
167
            foreach ($module_list as $k => $v) {
168
                echo "<option value='$k'" . (in_array($k, $modules) ? " selected='selected'" : '') . ">$v</option>";
169
            }
170
            echo '</select></td>';
171
172
            echo "<td class='$class' align='center'><select size='5' name='groups[" . $i->getVar('bid') . "][]' id='groups[" . $i->getVar('bid') . "][]' multiple='multiple'>";
173
            foreach ($groups as $grp) {
174
                echo "<option value='" . $grp->getVar('groupid') . "' " . (in_array($grp->getVar('groupid'), $groups_perms) ? " selected='selected'" : '') . '>' . $grp->getVar('name') . '</option>';
175
            }
176
            echo '</select></td>';
177
178
            // Cache lifetime
179
            echo '<td class="' . $class . '" align="center"> <select name="bcachetime[' . $i->getVar('bid') . ']" size="1">' . $cachetime_options . '</select>
180
                                    </td>';
181
182
            // Actions
183
184
            echo "<td class='$class' align='center'><a href='blocksadmin.php?op=edit&amp;bid=" . $i->getVar('bid') . "'><img src=" . $pathIcon16 . '/edit.png' . " alt='" . _EDIT . "' title='" . _EDIT
185
                 . "' />
186
                 </a> <a href='blocksadmin.php?op=clone&amp;bid=" . $i->getVar('bid') . "'><img src=" . $pathIcon16 . '/editcopy.png' . " alt='" . _CLONE . "' title='" . _CLONE . "' />
187
                 </a>";
188
            if ($i->getVar('block_type') !== 'S' && $i->getVar('block_type') !== 'M') {
189
                echo "&nbsp;<a href='" . XOOPS_URL . '/modules/system/admin.php?fct=blocksadmin&amp;op=delete&amp;bid=' . $i->getVar('bid') . "'><img src=" . $pathIcon16 . '/delete.png' . " alt='"
190
                     . _DELETE . "' title='" . _DELETE . "' />
191
                     </a>";
192
            }
193
            echo "
194
            <input type='hidden' name='oldtitle[" . $i->getVar('bid') . "]' value='" . $i->getVar('title') . "' />
195
            <input type='hidden' name='oldside[" . $i->getVar('bid') . "]' value='" . $i->getVar('side') . "' />
196
            <input type='hidden' name='oldweight[" . $i->getVar('bid') . "]' value='" . $i->getVar('weight') . "' />
197
            <input type='hidden' name='oldvisible[" . $i->getVar('bid') . "]' value='" . $i->getVar('visible') . "' />
198
            <input type='hidden' name='oldgroups[" . $i->getVar('groups') . "]' value='" . $i->getVar('groups') . "' />
199
            <input type='hidden' name='oldbcachetime[" . $i->getVar('bid') . "]' value='" . $i->getVar('bcachetime') . "' />
200
            <input type='hidden' name='bid[" . $i->getVar('bid') . "]' value='" . $i->getVar('bid') . "' />
201
            </td></tr>
202
            ";
203
            $class = ('even' === $class) ? 'odd' : 'even';
204
        }
205
        echo "<tr><td class='foot' align='center' colspan='7'>
206
        <input type='hidden' name='op' value='order' />
207
        " . $GLOBALS['xoopsSecurity']->getTokenHTML() . "
208
        <input type='submit' name='submit' value='" . _SUBMIT . "' />
209
        </td></tr></table>
210
        </form>
211
        <br><br>";
212
    }
213
214
    /**
215
     * @param $bid
216
     */
217
    function cloneBlock($bid)
0 ignored issues
show
Coding Style introduced by
cloneBlock uses the super-global variable $GLOBALS which is generally not recommended.

Instead of super-globals, we recommend to explicitly inject the dependencies of your class. This makes your code less dependent on global state and it becomes generally more testable:

// Bad
class Router
{
    public function generate($path)
    {
        return $_SERVER['HOST'].$path;
    }
}

// Better
class Router
{
    private $host;

    public function __construct($host)
    {
        $this->host = $host;
    }

    public function generate($path)
    {
        return $this->host.$path;
    }
}

class Controller
{
    public function myAction(Request $request)
    {
        // Instead of
        $page = isset($_GET['page']) ? intval($_GET['page']) : 1;

        // Better (assuming you use the Symfony2 request)
        $page = $request->query->get('page', 1);
    }
}
Loading history...
218
    {
219
        include_once __DIR__ . '/admin_header.php';
220
        //include_once __DIR__ . '/admin_header.php';
0 ignored issues
show
Unused Code Comprehensibility introduced by
50% 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...
221
        xoops_cp_header();
222
223
        //xoops_loadLanguage('admin', XTUBE_DIRNAME);
0 ignored issues
show
Unused Code Comprehensibility introduced by
63% 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...
224
        //xoops_loadLanguage('modinfo', XTUBE_DIRNAME);
0 ignored issues
show
Unused Code Comprehensibility introduced by
63% 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...
225
        //xoops_loadLanguage('main', XTUBE_DIRNAME);
0 ignored issues
show
Unused Code Comprehensibility introduced by
63% 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...
226
227 View Code Duplication
        if (file_exists(XOOPS_ROOT_PATH . '/modules/system/language/' . $GLOBALS['xoopsConfig']['language'] . '/admin/blocksadmin.php')) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
228
            include_once(XOOPS_ROOT_PATH . '/modules/system/language/' . $GLOBALS['xoopsConfig']['language'] . '/admin.php');
229
            include_once(XOOPS_ROOT_PATH . '/modules/system/language/' . $GLOBALS['xoopsConfig']['language'] . '/admin/blocksadmin.php');
230
            include_once(XOOPS_ROOT_PATH . '/modules/system/language/' . $GLOBALS['xoopsConfig']['language'] . '/admin/groups.php');
231
        } else {
232
            include_once(XOOPS_ROOT_PATH . '/modules/system/language/portuguesebr/admin.php');
233
            include_once(XOOPS_ROOT_PATH . '/modules/system/language/portuguesebr/admin/blocksadmin.php');
234
            include_once(XOOPS_ROOT_PATH . '/modules/system/language/portuguesebr/admin/groups.php');
235
        }
236
        //        mpu_adm_menu();
237
        $myblock = new XoopsBlock($bid);
238
        $db      = XoopsDatabaseFactory::getDatabaseConnection();
239
        $sql     = 'SELECT module_id FROM ' . $db->prefix('block_module_link') . ' WHERE block_id=' . (int)$bid;
240
        $result  = $db->query($sql);
241
        $modules = array();
242 View Code Duplication
        while (false !== ($row = $db->fetchArray($result))) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
243
            $modules[] = (int)$row['module_id'];
244
        }
245
        $is_custom = ('C' === $myblock->getVar('block_type') || 'E' === $myblock->getVar('block_type')) ? true : false;
246
        $block     = array(
247
            'title'      => $myblock->getVar('title') . ' Clone',
248
            'form_title' => _AM_XOOPSTUBE_BLOCKS_CLONEBLOCK,
249
            'name'       => $myblock->getVar('name'),
250
            'side'       => $myblock->getVar('side'),
251
            'weight'     => $myblock->getVar('weight'),
252
            'visible'    => $myblock->getVar('visible'),
253
            'content'    => $myblock->getVar('content', 'N'),
254
            'modules'    => $modules,
255
            'is_custom'  => $is_custom,
256
            'ctype'      => $myblock->getVar('c_type'),
257
            'bcachetime' => $myblock->getVar('bcachetime'),
258
            'op'         => 'clone_ok',
259
            'bid'        => $myblock->getVar('bid'),
260
            'edit_form'  => $myblock->getOptions(),
261
            'template'   => $myblock->getVar('template'),
262
            'options'    => $myblock->getVar('options')
263
        );
264
        echo '<a href="blocksadmin.php">' . _AM_BADMIN . '</a>&nbsp;<span style="font-weight:bold;">&raquo;&raquo;</span>&nbsp;' . _AM_SYSTEM_BLOCKS_CLONEBLOCK . '<br><br>';
265
        include __DIR__ . '/blockform.php';
266
        $form->display();
0 ignored issues
show
Bug introduced by
The variable $form does not exist. Did you forget to declare it?

This check marks access to variables or properties that have not been declared yet. While PHP has no explicit notion of declaring a variable, accessing it before a value is assigned to it is most likely a bug.

Loading history...
267
        //        xoops_cp_footer();
268
        include_once __DIR__ . '/admin_footer.php';
269
        exit();
0 ignored issues
show
Coding Style Compatibility introduced by
The function cloneBlock() contains an exit expression.

An exit expression should only be used in rare cases. For example, if you write a short command line script.

In most cases however, using an exit expression makes the code untestable and often causes incompatibilities with other libraries. Thus, unless you are absolutely sure it is required here, we recommend to refactor your code to avoid its usage.

Loading history...
270
    }
271
272
    /**
273
     * @param $bid
274
     * @param $bside
275
     * @param $bweight
276
     * @param $bvisible
277
     * @param $bcachetime
278
     * @param $bmodule
279
     * @param $options
280
     */
281
    function isBlockCloned($bid, $bside, $bweight, $bvisible, $bcachetime, $bmodule, $options)
0 ignored issues
show
Coding Style introduced by
isBlockCloned uses the super-global variable $GLOBALS which is generally not recommended.

Instead of super-globals, we recommend to explicitly inject the dependencies of your class. This makes your code less dependent on global state and it becomes generally more testable:

// Bad
class Router
{
    public function generate($path)
    {
        return $_SERVER['HOST'].$path;
    }
}

// Better
class Router
{
    private $host;

    public function __construct($host)
    {
        $this->host = $host;
    }

    public function generate($path)
    {
        return $this->host.$path;
    }
}

class Controller
{
    public function myAction(Request $request)
    {
        // Instead of
        $page = isset($_GET['page']) ? intval($_GET['page']) : 1;

        // Better (assuming you use the Symfony2 request)
        $page = $request->query->get('page', 1);
    }
}
Loading history...
282
    {
283 View Code Duplication
        if (file_exists(XOOPS_ROOT_PATH . '/modules/system/language/' . $GLOBALS['xoopsConfig']['language'] . '/admin/blocksadmin.php')) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
284
            include_once(XOOPS_ROOT_PATH . '/modules/system/language/' . $GLOBALS['xoopsConfig']['language'] . '/admin.php');
285
            include_once(XOOPS_ROOT_PATH . '/modules/system/language/' . $GLOBALS['xoopsConfig']['language'] . '/admin/blocksadmin.php');
286
            //include_once(XOOPS_ROOT_PATH."/modules/system/language/".$GLOBALS['xoopsConfig']['language']."/admin/groups.php");
0 ignored issues
show
Unused Code Comprehensibility introduced by
77% 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...
287
        } else {
288
            include_once(XOOPS_ROOT_PATH . '/modules/system/language/portuguesebr/admin.php');
289
            include_once(XOOPS_ROOT_PATH . '/modules/system/language/portuguesebr/admin/blocksadmin.php');
290
            include_once(XOOPS_ROOT_PATH . '/modules/system/language/portuguesebr/admin/groups.php');
291
        }
292
        $block = new XoopsBlock($bid);
293
        $clone =& $block->xoopsClone();
294
        if (empty($bmodule)) {
295
            xoops_cp_header();
296
            xoops_error(sprintf(_AM_NOTSELNG, _AM_VISIBLEIN));
297
            xoops_cp_footer();
298
            exit();
0 ignored issues
show
Coding Style Compatibility introduced by
The function isBlockCloned() contains an exit expression.

An exit expression should only be used in rare cases. For example, if you write a short command line script.

In most cases however, using an exit expression makes the code untestable and often causes incompatibilities with other libraries. Thus, unless you are absolutely sure it is required here, we recommend to refactor your code to avoid its usage.

Loading history...
299
        }
300
        $clone->setVar('side', $bside);
301
        $clone->setVar('weight', $bweight);
302
        $clone->setVar('visible', $bvisible);
303
        //$clone->setVar('content', $_POST['bcontent']);
0 ignored issues
show
Unused Code Comprehensibility introduced by
85% 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...
304
        $clone->setVar('title', XoopsRequest::getString('btitle', '', 'POST'));
305
        $clone->setVar('bcachetime', $bcachetime);
306
        if (isset($options) && (count($options) > 0)) {
307
            $options = implode('|', $options);
308
            $clone->setVar('options', $options);
309
        }
310
        $clone->setVar('bid', 0);
311
        if ('C' === $block->getVar('block_type') || 'E' === $block->getVar('block_type')) {
312
            $clone->setVar('block_type', 'E');
313
        } else {
314
            $clone->setVar('block_type', 'D');
315
        }
316
        $newid = $clone->store();
317
        if (!$newid) {
318
            xoops_cp_header();
319
            $clone->getHtmlErrors();
320
            xoops_cp_footer();
321
            exit();
0 ignored issues
show
Coding Style Compatibility introduced by
The function isBlockCloned() contains an exit expression.

An exit expression should only be used in rare cases. For example, if you write a short command line script.

In most cases however, using an exit expression makes the code untestable and often causes incompatibilities with other libraries. Thus, unless you are absolutely sure it is required here, we recommend to refactor your code to avoid its usage.

Loading history...
322
        }
323
        if ($clone->getVar('template') !== '') {
324
            $tplfileHandler = xoops_getHandler('tplfile');
325
            $btemplate      =& $tplfileHandler->find($GLOBALS['xoopsConfig']['template_set'], 'block', $bid);
326
            if (count($btemplate) > 0) {
327
                $tplclone =& $btemplate[0]->xoopsClone();
328
                $tplclone->setVar('tpl_id', 0);
329
                $tplclone->setVar('tpl_refid', $newid);
330
                $tplfileHandler->insert($tplclone);
331
            }
332
        }
333
        $db = XoopsDatabaseFactory::getDatabaseConnection();
334
        foreach ($bmodule as $bmid) {
335
            $sql = 'INSERT INTO ' . $db->prefix('block_module_link') . ' (block_id, module_id) VALUES (' . $newid . ', ' . $bmid . ')';
336
            $db->query($sql);
337
        }
338
        $groups =& $GLOBALS['xoopsUser']->getGroups();
339
        $count  = count($groups);
340
        for ($i = 0; $i < $count; ++$i) {
341
            $sql = 'INSERT INTO ' . $db->prefix('group_permission') . ' (gperm_groupid, gperm_itemid, gperm_modid, gperm_name) VALUES (' . $groups[$i] . ', ' . $newid . ", 1, 'block_read')";
342
            $db->query($sql);
343
        }
344
        redirect_header('blocksadmin.php?op=listar', 1, _AM_DBUPDATED);
345
    }
346
347
    /**
348
     * @param $bid
349
     * @param $title
350
     * @param $weight
351
     * @param $visible
352
     * @param $side
353
     * @param $bcachetime
354
     */
355
    function xtubeSetOrder($bid, $title, $weight, $visible, $side, $bcachetime)
356
    {
357
        $myblock = new XoopsBlock($bid);
358
        $myblock->setVar('title', $title);
359
        $myblock->setVar('weight', $weight);
360
        $myblock->setVar('visible', $visible);
361
        $myblock->setVar('side', $side);
362
        $myblock->setVar('bcachetime', $bcachetime);
363
        $myblock->store();
364
    }
365
366
    /**
367
     * @param $bid
368
     */
369
    function xtubeEditBlock($bid)
0 ignored issues
show
Coding Style introduced by
xtubeEditBlock uses the super-global variable $GLOBALS which is generally not recommended.

Instead of super-globals, we recommend to explicitly inject the dependencies of your class. This makes your code less dependent on global state and it becomes generally more testable:

// Bad
class Router
{
    public function generate($path)
    {
        return $_SERVER['HOST'].$path;
    }
}

// Better
class Router
{
    private $host;

    public function __construct($host)
    {
        $this->host = $host;
    }

    public function generate($path)
    {
        return $this->host.$path;
    }
}

class Controller
{
    public function myAction(Request $request)
    {
        // Instead of
        $page = isset($_GET['page']) ? intval($_GET['page']) : 1;

        // Better (assuming you use the Symfony2 request)
        $page = $request->query->get('page', 1);
    }
}
Loading history...
370
    {
371
        include_once __DIR__ . '/admin_header.php';
372
        //include_once __DIR__ . '/admin_header.php';
0 ignored issues
show
Unused Code Comprehensibility introduced by
50% 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...
373
        xoops_cp_header();
374
375
        //xoops_loadLanguage('admin', XTUBE_DIRNAME);
0 ignored issues
show
Unused Code Comprehensibility introduced by
63% 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...
376
        //xoops_loadLanguage('modinfo', XTUBE_DIRNAME);
0 ignored issues
show
Unused Code Comprehensibility introduced by
63% 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...
377
        //xoops_loadLanguage('main', XTUBE_DIRNAME);
0 ignored issues
show
Unused Code Comprehensibility introduced by
63% 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...
378
379 View Code Duplication
        if (file_exists(XOOPS_ROOT_PATH . '/modules/system/language/' . $GLOBALS['xoopsConfig']['language'] . '/admin/blocksadmin.php')) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
380
            include_once(XOOPS_ROOT_PATH . '/modules/system/language/' . $GLOBALS['xoopsConfig']['language'] . '/admin.php');
381
            include_once(XOOPS_ROOT_PATH . '/modules/system/language/' . $GLOBALS['xoopsConfig']['language'] . '/admin/blocksadmin.php');
382
            include_once(XOOPS_ROOT_PATH . '/modules/system/language/' . $GLOBALS['xoopsConfig']['language'] . '/admin/groups.php');
383
        } else {
384
            include_once(XOOPS_ROOT_PATH . '/modules/system/language/portuguesebr/admin.php');
385
            include_once(XOOPS_ROOT_PATH . '/modules/system/language/portuguesebr/admin/blocksadmin.php');
386
            include_once(XOOPS_ROOT_PATH . '/modules/system/language/portuguesebr/admin/groups.php');
387
        }
388
        //        mpu_adm_menu();
389
        $myblock = new XoopsBlock($bid);
390
        $db      = XoopsDatabaseFactory::getDatabaseConnection();
391
        $sql     = 'SELECT module_id FROM ' . $db->prefix('block_module_link') . ' WHERE block_id=' . (int)$bid;
392
        $result  = $db->query($sql);
393
        $modules = array();
394 View Code Duplication
        while (false !== ($row = $db->fetchArray($result))) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
395
            $modules[] = (int)$row['module_id'];
396
        }
397
        $is_custom = ('C' === $myblock->getVar('block_type') || 'E' === $myblock->getVar('block_type')) ? true : false;
398
        $block     = array(
399
            'title'      => $myblock->getVar('title'),
400
            'form_title' => _AM_XOOPSTUBE_BLOCKS_EDITBLOCK,
401
            //        'name'       => $myblock->getVar('name'),
0 ignored issues
show
Unused Code Comprehensibility introduced by
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...
402
            'side'       => $myblock->getVar('side'),
403
            'weight'     => $myblock->getVar('weight'),
404
            'visible'    => $myblock->getVar('visible'),
405
            'content'    => $myblock->getVar('content', 'N'),
406
            'modules'    => $modules,
407
            'is_custom'  => $is_custom,
408
            'ctype'      => $myblock->getVar('c_type'),
409
            'bcachetime' => $myblock->getVar('bcachetime'),
410
            'op'         => 'edit_ok',
411
            'bid'        => $myblock->getVar('bid'),
412
            'edit_form'  => $myblock->getOptions(),
413
            'template'   => $myblock->getVar('template'),
414
            'options'    => $myblock->getVar('options')
415
        );
416
        echo '<a href="blocksadmin.php">' . _AM_BADMIN . '</a>&nbsp;<span style="font-weight:bold;">&raquo;&raquo;</span>&nbsp;' . _AM_SYSTEM_BLOCKS_EDITBLOCK . '<br><br>';
417
        include __DIR__ . '/blockform.php';
418
        $form->display();
0 ignored issues
show
Bug introduced by
The variable $form does not exist. Did you forget to declare it?

This check marks access to variables or properties that have not been declared yet. While PHP has no explicit notion of declaring a variable, accessing it before a value is assigned to it is most likely a bug.

Loading history...
419
        //        xoops_cp_footer();
420
        include_once __DIR__ . '/admin_footer.php';
421
        exit();
0 ignored issues
show
Coding Style Compatibility introduced by
The function xtubeEditBlock() contains an exit expression.

An exit expression should only be used in rare cases. For example, if you write a short command line script.

In most cases however, using an exit expression makes the code untestable and often causes incompatibilities with other libraries. Thus, unless you are absolutely sure it is required here, we recommend to refactor your code to avoid its usage.

Loading history...
422
    }
423
424
    /**
425
     * @param $bid
426
     * @param $btitle
427
     * @param $bside
428
     * @param $bweight
429
     * @param $bvisible
430
     * @param $bcachetime
431
     * @param $bmodule
432
     * @param $options
433
     * @param $groups
434
     */
435
    function xtubeUpdateBlock($bid, $btitle, $bside, $bweight, $bvisible, $bcachetime, $bmodule, $options, $groups)
0 ignored issues
show
Coding Style introduced by
xtubeUpdateBlock uses the super-global variable $_SERVER which is generally not recommended.

Instead of super-globals, we recommend to explicitly inject the dependencies of your class. This makes your code less dependent on global state and it becomes generally more testable:

// Bad
class Router
{
    public function generate($path)
    {
        return $_SERVER['HOST'].$path;
    }
}

// Better
class Router
{
    private $host;

    public function __construct($host)
    {
        $this->host = $host;
    }

    public function generate($path)
    {
        return $this->host.$path;
    }
}

class Controller
{
    public function myAction(Request $request)
    {
        // Instead of
        $page = isset($_GET['page']) ? intval($_GET['page']) : 1;

        // Better (assuming you use the Symfony2 request)
        $page = $request->query->get('page', 1);
    }
}
Loading history...
Coding Style introduced by
xtubeUpdateBlock uses the super-global variable $GLOBALS which is generally not recommended.

Instead of super-globals, we recommend to explicitly inject the dependencies of your class. This makes your code less dependent on global state and it becomes generally more testable:

// Bad
class Router
{
    public function generate($path)
    {
        return $_SERVER['HOST'].$path;
    }
}

// Better
class Router
{
    private $host;

    public function __construct($host)
    {
        $this->host = $host;
    }

    public function generate($path)
    {
        return $this->host.$path;
    }
}

class Controller
{
    public function myAction(Request $request)
    {
        // Instead of
        $page = isset($_GET['page']) ? intval($_GET['page']) : 1;

        // Better (assuming you use the Symfony2 request)
        $page = $request->query->get('page', 1);
    }
}
Loading history...
436
    {
437
        $myblock = new XoopsBlock($bid);
438
        $myblock->setVar('title', $btitle);
439
        $myblock->setVar('weight', $bweight);
440
        $myblock->setVar('visible', $bvisible);
441
        $myblock->setVar('side', $bside);
442
        $myblock->setVar('bcachetime', $bcachetime);
443
        $myblock->store();
444
445
        if (!empty($bmodule) && count($bmodule) > 0) {
446
            $sql = sprintf('DELETE FROM %s WHERE block_id = %u', $GLOBALS['xoopsDB']->prefix('block_module_link'), $bid);
447
            $GLOBALS['xoopsDB']->query($sql);
448
            if (in_array(0, $bmodule)) {
449
                $sql = sprintf('INSERT INTO %s (block_id, module_id) VALUES (%u, %d)', $GLOBALS['xoopsDB']->prefix('block_module_link'), $bid, 0);
450
                $GLOBALS['xoopsDB']->query($sql);
451 View Code Duplication
            } else {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
452
                foreach ($bmodule as $bmid) {
453
                    $sql = sprintf('INSERT INTO %s (block_id, module_id) VALUES (%u, %d)', $GLOBALS['xoopsDB']->prefix('block_module_link'), $bid, (int)$bmid);
454
                    $GLOBALS['xoopsDB']->query($sql);
455
                }
456
            }
457
        }
458
        $sql = sprintf('DELETE FROM %s WHERE gperm_itemid = %u', $GLOBALS['xoopsDB']->prefix('group_permission'), $bid);
459
        $GLOBALS['xoopsDB']->query($sql);
460
        if (!empty($groups)) {
461 View Code Duplication
            foreach ($groups as $grp) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
462
                $sql = sprintf("INSERT INTO %s (gperm_groupid, gperm_itemid, gperm_modid, gperm_name) VALUES (%u, %u, 1, 'block_read')", $GLOBALS['xoopsDB']->prefix('group_permission'), $grp, $bid);
463
                $GLOBALS['xoopsDB']->query($sql);
464
            }
465
        }
466
        redirect_header($_SERVER['PHP_SELF'], 1, _AM_XOOPSTUBE_UPDATE_SUCCESS);
467
    }
468
469
    if ('list' === $op) {
470
        xoops_cp_header();
471
        //        mpu_adm_menu();
472
        listBlocks();
473
        include_once __DIR__ . '/admin_footer.php';
474
        exit();
475
    }
476
477
    if ('order' === $op) {
478
        if (!$GLOBALS['xoopsSecurity']->check()) {
479
            redirect_header($_SERVER['PHP_SELF'], 3, implode('<br>', $GLOBALS['xoopsSecurity']->getErrors()));
480
        }
481
        foreach (array_keys($bid) as $i) {
482
            if ($oldtitle[$i] !== $title[$i] || $oldweight[$i] !== $weight[$i] || $oldvisible[$i] !== $visible[$i] || $oldside[$i] !== $side[$i] || $oldbcachetime[$i] !== $bcachetime[$i]) {
483
                xtubeSetOrder($bid[$i], $title[$i], $weight[$i], $visible[$i], $side[$i], $bcachetime[$i], $bmodule[$i]);
0 ignored issues
show
Unused Code introduced by
The call to xtubeSetOrder() has too many arguments starting with $bmodule[$i].

This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.

If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress.

In this case you can add the @ignore PhpDoc annotation to the duplicate definition and it will be ignored.

Loading history...
484
            }
485
            if (!empty($bmodule[$i]) && count($bmodule[$i]) > 0) {
486
                $sql = sprintf('DELETE FROM %s WHERE block_id = %u', $GLOBALS['xoopsDB']->prefix('block_module_link'), $bid[$i]);
487
                $GLOBALS['xoopsDB']->query($sql);
488
                if (in_array(0, $bmodule[$i])) {
489
                    $sql = sprintf('INSERT INTO %s (block_id, module_id) VALUES (%u, %d)', $GLOBALS['xoopsDB']->prefix('block_module_link'), $bid[$i], 0);
490
                    $GLOBALS['xoopsDB']->query($sql);
491 View Code Duplication
                } else {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
492
                    foreach ($bmodule[$i] as $bmid) {
493
                        $sql = sprintf('INSERT INTO %s (block_id, module_id) VALUES (%u, %d)', $GLOBALS['xoopsDB']->prefix('block_module_link'), $bid[$i], (int)$bmid);
494
                        $GLOBALS['xoopsDB']->query($sql);
495
                    }
496
                }
497
            }
498
            $sql = sprintf('DELETE FROM %s WHERE gperm_itemid = %u', $GLOBALS['xoopsDB']->prefix('group_permission'), $bid[$i]);
499
            $GLOBALS['xoopsDB']->query($sql);
500
            if (!empty($groups[$i])) {
501 View Code Duplication
                foreach ($groups[$i] as $grp) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
502
                    $sql = sprintf("INSERT INTO %s (gperm_groupid, gperm_itemid, gperm_modid, gperm_name) VALUES (%u, %u, 1, 'block_read')", $GLOBALS['xoopsDB']->prefix('group_permission'), $grp,
503
                                   $bid[$i]);
504
                    $GLOBALS['xoopsDB']->query($sql);
505
                }
506
            }
507
        }
508
        redirect_header($_SERVER['PHP_SELF'], 1, _AM_XOOPSTUBE_UPDATE_SUCCESS);
509
    }
510
    if ('clone' === $op) {
511
        cloneBlock($bid);
512
    }
513
514
    if ('edit' === $op) {
515
        xtubeEditBlock($bid);
516
    }
517
518
    if ('edit_ok' === $op) {
519
        xtubeUpdateBlock($bid, $btitle, $bside, $bweight, $bvisible, $bcachetime, $bmodule, $options, $groups);
520
    }
521
522
    if ('clone_ok' === $op) {
523
        isBlockCloned($bid, $bside, $bweight, $bvisible, $bcachetime, $bmodule, $options);
524
    }
525
} else {
526
    echo _AM_XOOPSTUBE_ERROR403;
527
}
528