Passed
Push — master ( 6209eb...36ba5e )
by Michael
51s queued 14s
created

changepass.php (2 issues)

Severity
1
<?php
2
/**
3
 * Extended User Profile
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
 * This program is distributed in the hope that it will be useful,
9
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11
 *
12
 * @copyright       (c) 2000-2016 XOOPS Project (www.xoops.org)
13
 * @license             GNU GPL 2 (http://www.gnu.org/licenses/gpl-2.0.html)
14
 * @package             profile
15
 * @since               2.3.0
16
 * @author              Jan Pedersen
17
 * @author              Taiwen Jiang <[email protected]>
18
 */
19
20
use Xmf\Request;
21
use XoopsModules\Yogurt;
22
use XoopsModules\Yogurt\IndexController;
23
24
$GLOBALS['xoopsOption']['template_main'] = 'yogurt_changepass.tpl';
25
require __DIR__ . '/header.php';
26
27
/**
28
 * Fetching numbers of groups friends videos pictures etc...
29
 */
30
$controller = new IndexController($xoopsDB, $xoopsUser, $xoopsModule);
0 ignored issues
show
The call to XoopsModules\Yogurt\IndexController::__construct() has too many arguments starting with $xoopsModule. ( Ignorable by Annotation )

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

30
$controller = /** @scrutinizer ignore-call */ new IndexController($xoopsDB, $xoopsUser, $xoopsModule);

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. Please note the @ignore annotation hint above.

Loading history...
31
$nbSections = $controller->getNumbersSections();
32
33
if (!$GLOBALS['xoopsUser']) {
34
    redirect_header(XOOPS_URL, 2, _NOPERM);
35
}
36
37
$xoopsOption['xoops_pagetitle'] = sprintf(_MD_YOGURT_CHANGEPASSWORD,$xoopsModule->getVar('name'), $controller->nameOwner);
0 ignored issues
show
It seems like $controller->nameOwner can also be of type array and array; however, parameter $args of sprintf() 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

37
$xoopsOption['xoops_pagetitle'] = sprintf(_MD_YOGURT_CHANGEPASSWORD,$xoopsModule->getVar('name'), /** @scrutinizer ignore-type */ $controller->nameOwner);
Loading history...
38
39
if (!isset($_POST['submit'])) {
40
    //show change password form
41
    include_once $GLOBALS['xoops']->path('class/xoopsformloader.php');
42
    $form = new XoopsThemeForm(_MD_YOGURT_CHANGEPASSWORD, 'form', $_SERVER['REQUEST_URI'], 'post', true);
43
    $form->addElement(new XoopsFormPassword(_MD_YOGURT_OLDPASSWORD, 'oldpass', 15, 50), true);
44
    $form->addElement(new XoopsFormPassword(_MD_YOGURT_NEWPASSWORD, 'newpass', 15, 50), true);
45
    $form->addElement(new XoopsFormPassword(_US_VERIFYPASS, 'vpass', 15, 50), true);
46
    $form->addElement(new XoopsFormButton('', 'submit', _SUBMIT, 'submit'));
47
    $form->assign($GLOBALS['xoopsTpl']);
48
49
    $xoBreadcrumbs[] = array('title' => _MD_YOGURT_CHANGEPASSWORD);
50
} else {
51
    /* @var XoopsConfigHandler $config_handler */
52
    $config_handler             = xoops_getHandler('config');
53
    $GLOBALS['xoopsConfigUser'] = $config_handler->getConfigsByCat(XOOPS_CONF_USER);
54
    $myts                       = MyTextSanitizer::getInstance();
55
    $oldpass                    = @$myts->stripSlashesGPC(trim($_POST['oldpass']));
56
    $password                   = @$myts->stripSlashesGPC(trim($_POST['newpass']));
57
    $vpass                      = @$myts->stripSlashesGPC(trim($_POST['vpass']));
58
    $errors                     = array();
59
    if (!password_verify($oldpass, $GLOBALS['xoopsUser']->getVar('pass', 'n'))) {
60
        $errors[] = _MD_YOGURT_WRONGPASSWORD;
61
    }
62
    if (strlen($password) < $GLOBALS['xoopsConfigUser']['minpass']) {
63
        $errors[] = sprintf(_US_PWDTOOSHORT, $GLOBALS['xoopsConfigUser']['minpass']);
64
    }
65
    if ($password != $vpass) {
66
        $errors[] = _US_PASSNOTSAME;
67
    }
68
69
    if ($errors) {
70
        $msg = implode('<br>', $errors);
71
    } else {
72
        //update password
73
        $GLOBALS['xoopsUser']->setVar('pass', password_hash($password, PASSWORD_DEFAULT));
74
        /* @var XoopsMemberHandler $member_handler */
75
        $member_handler = xoops_getHandler('member');
76
        $msg = _MD_YOGURT_ERRORDURINGSAVE;
77
        if ($member_handler->insertUser($GLOBALS['xoopsUser'])) {
78
            $msg = _MD_YOGURT_PASSWORDCHANGED;
79
        }
80
    }
81
    redirect_header(XOOPS_URL . '/modules/' . $GLOBALS['xoopsModule']->getVar('dirname', 'n') . '/index.php?uid=' . $GLOBALS['xoopsUser']->getVar('uid'), 2, $msg);
82
}
83
84
require __DIR__ . '/footer.php';
85
require dirname(__DIR__, 2) . '/footer.php';