First pass at getmemberships - pull in user listings and memberships
This commit is contained in:
		
							
								
								
									
										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;
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user