-
Notifications
You must be signed in to change notification settings - Fork 2
/
getextusers.snippet.php
107 lines (89 loc) · 3 KB
/
getextusers.snippet.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
<?php
/**
* GetExtUsers snippet for ClassExtender extra
*
* Copyright 2012-2019 Bob Ray <https://bobsguides.com>
* Created on 01-05-2014
*
* ClassExtender is free software; you can redistribute it and/or modify it under the
* terms of the GNU General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option) any later
* version.
*
* ClassExtender is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* ClassExtender; if not, write to the Free Software Foundation, Inc., 59 Temple
* Place, Suite 330, Boston, MA 02111-1307 USA
*
* @package classextender
*/
/**
* Description
* -----------
* Show user information
*
* Variables
* ---------
*
* @var $modx modX
* @var $scriptProperties array
*
* @package classextender
**/
/* The extendeduser package should be pre-loaded
due to being registered in the extension_packages
System Setting */
$modx->lexicon->load('classextender:default');
/* @var $scriptProperties array */
$scriptProperties = isset($scriptProperties)
? $scriptProperties
: array();
$sp = $scriptProperties;
$userClass = $modx->getOption('userDataClass', $sp, 'userData');
$where = $modx->getOption('where', $sp, array());
$where = !empty($where)
? $modx->fromJSON($where)
: array();
$outerTpl = $modx->getOption('extUserOuterTpl', $sp, 'extUserOuterTpl');
$innerTpl = $modx->getOption('extUserInnerTpl', $sp, 'extUserInnerTpl');
$rowTpl = $modx->getOption('extUserRowTpl', $sp, 'extUserRowTpl');
$sortBy = $modx->getOption('sortby', $sp, 'username');
$sortDir = $modx->getOption('sortdir', $sp, 'ASC');
$limit = $modx->getOption('limit', $sp, 'null', true);
$offset = $modx->getOption('offset', $sp, 'null', true);
$offset = ($offset === null) ? 0 : (int) $offset;
$c = $modx->newQuery($userClass);
$c->sortby($sortBy, $sortDir);
$c->where($where);
if ($limit !== null) {
$c->limit($limit, $offset);
}
$users = $modx->getCollectionGraph($userClass, '{"Profile":{},"User":{}}', $c);
$count = count($users);
if (!$count) {
return $modx->lexicon('ce.no_users_found');
}
/* @var $user modUser */
$i = 0;
$outer = $modx->getChunk($outerTpl);
$output = '';
$innerOutput = '';
foreach ($users as $user) {
$fields = $user->toArray();
unset($fields['password'], $fields['cachepwd'], $fields['salt'], $fields['hash_class']);
if ($user->Profile) {
$fields = array_merge($user->Profile->toArray(), $fields);
}
if ($user->User) {
$fields = array_merge($user->User->toArray(), $fields);
}
$inner = $modx->getChunk($innerTpl, $fields);
$row = $modx->getChunk($rowTpl, $fields);
$innerOutput .= str_replace('[[+extUserRow]]', $row, $inner);
$i++;
}
$output = str_replace('[[+extUserInner]]', $innerOutput, $outer);
return $output;