First pass at getmemberships - pull in user listings and memberships
This commit is contained in:
parent
a687eb9015
commit
ac99bcd7ce
47
getmemberships.php
Executable file
47
getmemberships.php
Executable file
@ -0,0 +1,47 @@
|
||||
#!/usr/bin/php
|
||||
<?php
|
||||
|
||||
require_once 'vendor/autoload.php';
|
||||
$client = new Redmine\Client('https://hq.megaphonetech.com', '965fddd60cfb5690d15542944998058224d7289f');
|
||||
$client->setCheckSslCertificate(true);
|
||||
|
||||
$limit = 100;
|
||||
$offset = 0;
|
||||
|
||||
$projectList = getProjectList($limit, $offset, $client);
|
||||
print_r($getProjectList);
|
||||
die;
|
||||
$userList = getUserList($limit, $offset, $client);
|
||||
$membershipMapping = getUserMemberships($userList, $client);
|
||||
//print_r($membershipMapping);
|
||||
|
||||
/*
|
||||
* Returns an array of all users. Key is user ID, value is email address.
|
||||
*/
|
||||
function getUserList($limit, $offset, $client) {
|
||||
// We'll set a more realistic total user count after the first loop.
|
||||
$totalUsers = 99999;
|
||||
// Get a complete user list with email address.
|
||||
while ($offset + $limit < $totalUsers) {
|
||||
$listing = $client->user->all([
|
||||
'limit' => $limit,
|
||||
'offset' => $offset,
|
||||
]);
|
||||
foreach ($listing['users'] as $user) {
|
||||
$users[$user['id']] = $user['mail'];
|
||||
}
|
||||
$totalUsers = $listing['total_count'];
|
||||
$offset += $limit;
|
||||
};
|
||||
return $users;
|
||||
}
|
||||
// Get the memberships of each user. It's sad that we can't do this in bulk.
|
||||
function getUserMemberships($users, $client) {
|
||||
foreach ($users as $id => $email) {
|
||||
$userDetails = $client->user->show($id, ['include' => ['memberships']])['user'];
|
||||
if (count($userDetails['memberships']) == 1) {
|
||||
$membershipMapping[$email] = $userDetails['memberships'][0]['project']['id'];
|
||||
}
|
||||
}
|
||||
return $membershipMapping;
|
||||
}
|
Loading…
Reference in New Issue
Block a user