Test Failed
Push — master ( 9cd140...014c18 )
by Michael
10:42 queued 11s
created

smarty_function_xoUserInfo()   B

Complexity

Conditions 9
Paths 36

Size

Total Lines 38
Code Lines 24

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 24
dl 0
loc 38
rs 8.0555
c 1
b 0
f 0
cc 9
nc 36
nop 2
1
<?php
2
/*
3
 * You may not change or alter any portion of this comment or credits
4
 * of supporting developers from this source code or any supporting source code
5
 * which is considered copyrighted (c) material of the original comment or credit authors.
6
 *
7
 * This program is distributed in the hope that it will be useful,
8
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10
 */
11
12
/**
13
 * @copyright    2000-2020 XOOPS Project https://xoops.org/
14
 * @license      GNU GPL 2 or later (https://www.gnu.org/licenses/gpl-2.0.html)
15
 * @author       XOOPS Development Team
16
 */
17
18
/*
19
 * Smarty plugin
20
 * -------------------------------------------------------------
21
 * Type:     function
22
 * Name:     xoUserInfo
23
 * Version:  1.0
24
 * Author:   DuGris
25
 * Purpose:  Get data for a specified user id and assign it to a template variable.
26
 *           For the input uid, return an array of related information, specifically
27
 *           these fields from the users table:
28
 *           uname,name,email,user_avatar,url,posts,user_from,user_occ,user_intrest,bio,user_sig
29
 * Input:    uid    = uid of user for which information is requested
30
 *           assign = smarty variable to be initialized for the template. default 'userInfo'
31
 *
32
 * Example:
33
 * Get user data
34
 *   <{xoUserInfo uid=42 assign=memberInfo}>
35
 * -------------------------------------------------------------
36
 */
37
38
/**
39
 * @param $params
40
 * @param $smarty
41
 */
42
function smarty_function_xoUserInfo($params, &$smarty)
43
{
44
    global $xoopsUser, $xoopsConfig;
45
46
    /** @var array $usersInfo uid indexed cache of user data */
47
    static $usersInfo = array();
48
49
    $uid = 0;
50
    if (!empty($params['uid'])) {
51
        $uid = (int)$params['uid'];
52
    } elseif (isset($xoopsUser) && is_object($xoopsUser)) {
53
        $uid = $xoopsUser->getVar('uid');
54
    }
55
56
    $assign = empty($params['assign']) ? 'userInfo' : $params['assign'];
57
58
    $infoFields = array(
59
        'uname', 'name', 'email', 'user_avatar', 'url', 'posts',
60
        'user_from', 'user_occ', 'user_intrest', 'bio', 'user_sig'
61
    );
62
63
    if (!isset($usersInfo[0])) {
64
        $usersInfo[0] = array('uname' => $xoopsConfig['anonymous']);
65
    }
66
67
    $userHandler = xoops_getHandler('user');
68
    if (isset($usersInfo[$uid])) {
69
        $userData = $usersInfo[$uid];
70
    } elseif ($userObject = $userHandler->get($uid)) {
71
        $userData =  array();
72
        foreach ($infoFields as $field) {
73
            $userData[$field] = $userObject->getVar($field, 'E');
74
        }
75
        $usersInfo[$uid] = $userData;
76
    } else {
77
        $userData = $usersInfo[0];
78
    }
79
    $smarty->assign($assign, $userData);
80
}
81