in synergy/server/controller/RunCtrl.php [786:834]
public function createMatrixAssignment($data, $createdBy) {
$labelId = -1;
$project = $this->getProject($data->runId);
if (isset($data->labelId) && !empty($data->labelId)) {
$labelId = intval($data->labelId);
}
$allOwners = array();
$allMembers = array();
for ($k = 0, $maxk = count($data->tribes); $k < $maxk; $k++) {
$members = $this->getTribeCtrl()->getMembers($data->tribes[$k]->id);
$leader = $this->getTribeCtrl()->getLeader($data->tribes[$k]->id);
if (!$this->leaderIsMember($members, $leader)) {
array_push($members, $leader);
}
$result = array_merge($allMembers, $members);
$allMembers = $result;
for ($l = 0, $maxl = count($members); $l < $maxl; $l++) {
if (!isset($allOwners[$members[$l]->username])) {
$allOwners[$members[$l]->username] = $this->getSpecCtrl()->getSpecificationsByOwnerAndVersion($members[$l]->username, $data->versionId, $project->id);
}
}
}
for ($j = 0, $maxj = count($data->users); $j < $maxj; $j++) {
if (!isset($allOwners[$data->users[$j]->username])) {
$allOwners[$data->users[$j]->username] = $this->getSpecCtrl()->getSpecificationsByOwnerAndVersion($data->users[$j]->username, $data->versionId, $project->id);
}
}
$processedUsers = array();
$failures = array();
for ($i = 0, $maxi = count($data->platforms); $i < $maxi; $i++) {
for ($j = 0, $maxj = count($data->users); $j < $maxj; $j++) {// iterate over users
if (!$this->createMatrixAssignmentForUser($allOwners[$data->users[$j]->username], $data->platforms[$i]->id, $data->users[$j]->username, $data->runId, $labelId, $createdBy)) {
array_push($failures, $data->users[$j]->username);
}
$processedUsers[$data->users[$j]->username] = 1;
}
for ($k = 0, $maxk = count($allMembers); $k < $maxk; $k++) {
if (!isset($processedUsers[$allMembers[$k]->username])) { // so not yet processed in iteration above
if (!$this->createMatrixAssignmentForUser($allOwners[$allMembers[$k]->username], $data->platforms[$i]->id, $allMembers[$k]->username, $data->runId, $labelId, $createdBy)) {
array_push($failures, $allMembers[$k]->username);
}
}
}
}
return $failures;
}