Passed
Pull Request — master (#81)
by Michael
02:55
created

changemail.php (3 issues)

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              Taiwen Jiang <[email protected]>
17
 */
18
19
use XoopsModules\Yogurt\IndexController;
20
21
$GLOBALS['xoopsOption']['template_main'] = 'yogurt_email.tpl';
22
require __DIR__ . '/header.php';
23
24
/**
25
 * Fetching numbers of groups friends videos pictures etc...
26
 */
27
$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

27
$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...
28
$nbSections = $controller->getNumbersSections();
29
30
/* @var XoopsConfigHandler $config_handler */
31
$config_handler             = xoops_getHandler('config');
32
$GLOBALS['xoopsConfigUser'] = $config_handler->getConfigsByCat(XOOPS_CONF_USER);
33
34
if (!$GLOBALS['xoopsUser'] || 1 != $GLOBALS['xoopsConfigUser']['allow_chgmail']) {
35
    redirect_header(XOOPS_URL . '/modules/' . $GLOBALS['xoopsModule']->getVar('dirname', 'n') . '/', 2, _NOPERM);
36
}
37
38
if (!isset($_POST['submit']) || !isset($_POST['passwd'])) {
39
    //show change password form
40
    include_once $GLOBALS['xoops']->path('class/xoopsformloader.php');
41
    $form = new XoopsThemeForm(_MD_YOGURT_CHANGEMAIL, 'emailform', $_SERVER['REQUEST_URI'], 'post', true);
42
    $form->addElement(new XoopsFormPassword(_US_PASSWORD, 'passwd', 15, 50), true);
43
    $form->addElement(new XoopsFormText(_MD_YOGURT_NEWMAIL, 'newmail', 15, 50), true);
44
    $form->addElement(new XoopsFormButton('', 'submit', _SUBMIT, 'submit'));
45
    $form->assign($GLOBALS['xoopsTpl']);
46
} else {
47
    $myts   = MyTextSanitizer::getInstance();
48
    $pass   = @$myts->stripSlashesGPC(trim($_POST['passwd']));
49
    $email  = @$myts->stripSlashesGPC(trim($_POST['newmail']));
50
    $errors = [];
51
    if (!password_verify($oldpass, $GLOBALS['xoopsUser']->getVar('pass', 'n'))) {
52
        $errors[] = _MA_YOGURT_WRONGPASSWORD;
0 ignored issues
show
The constant _MA_YOGURT_WRONGPASSWORD was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
53
    }
54
    if (!checkEmail($email)) {
55
        $errors[] = _US_INVALIDMAIL;
56
    }
57
58
    if ($errors) {
59
        $msg = implode('<br>', $errors);
60
    } else {
61
        //update password
62
        $GLOBALS['xoopsUser']->setVar('email', trim($_POST['newmail']));
63
        /* @var XoopsMemberHandler $memberHandler */
64
        $memberHandler = xoops_getHandler('member');
65
        if ($memberHandler->insertUser($GLOBALS['xoopsUser'])) {
66
            $msg = _MD_YOGURT_EMAILCHANGED;
67
68
            //send email to new email address
69
            $xoopsMailer = xoops_getMailer();
70
            $xoopsMailer->useMail();
71
            $xoopsMailer->setTemplateDir($GLOBALS['xoopsModule']->getVar('dirname', 'n'));
72
            $xoopsMailer->setTemplate('emailchanged.tpl');
73
            $xoopsMailer->assign('SITENAME', $GLOBALS['xoopsConfig']['sitename']);
74
            $xoopsMailer->assign('ADMINMAIL', $GLOBALS['xoopsConfig']['adminmail']);
75
            $xoopsMailer->assign('SITEURL', XOOPS_URL . '/');
76
            $xoopsMailer->assign('NEWEMAIL', $email);
77
            $xoopsMailer->setToEmails($email);
78
            $xoopsMailer->setFromEmail($GLOBALS['xoopsConfig']['adminmail']);
79
            $xoopsMailer->setFromName($GLOBALS['xoopsConfig']['sitename']);
80
            $xoopsMailer->setSubject(sprintf(_MD_YOGURT_NEWEMAIL, $GLOBALS['xoopsConfig']['sitename']));
81
            $xoopsMailer->send();
82
        } else {
83
            $msg = implode('<br>', $GLOBALS['xoopsUser']->getErrors());
84
        }
85
    }
86
    redirect_header(XOOPS_URL . '/modules/' . $GLOBALS['xoopsModule']->getVar('dirname', 'n') . '/index.php?uid=' . $GLOBALS['xoopsUser']->getVar('uid'), 2, $msg);
87
}
88
89
$xoopsOption['xoops_pagetitle'] = sprintf(_MD_YOGURT_CHANGEMAIL, $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

89
$xoopsOption['xoops_pagetitle'] = sprintf(_MD_YOGURT_CHANGEMAIL, $xoopsModule->getVar('name'), /** @scrutinizer ignore-type */ $controller->nameOwner);
Loading history...
90
91
require __DIR__ . '/footer.php';
92
require dirname(__DIR__, 2) . '/footer.php';
93