userId = -1; // read mandatory $_POST properties : ensure sessionId is passed in POST parameters if (isset($_POST['sessionId'])) $participation->sessionId = $_POST['sessionId']; else trigger_error( missing_parameter_error("sessionId") ); if (isset($_POST['userId'])) $participation->userId = $_POST['userId']; $multiple = false; // get overall objectives for all users in session if ($participation->userId == -1) { $users = $participation->getAllUsersInSession(); $nbUsers = count($users); if ($nbUsers > 1) { // multiple users for the session : get average of all users objectives $multiple = true; $firstElement = true; foreach ($users as $oneUserId) { $part = new UserInGameSession($db); $part->sessionId = $participation->sessionId; $part->userId = (int)$oneUserId; // contains userId if ($part->load()) { // if this is the participation for the first user, simply update the participation variable // otherwise, call add function to add this user's participation result to the overall one (participation variable) if ($firstElement) { $participation->copy($part); $firstElement = false; } else $participation->add($part); } } // once loop is completed, calculate average score, precision, reactionTime and objective completion $participation->calculateAverages($nbUsers); } else if ($nbUsers == 1) $participation->userId = (int)$users[0]; } if (!$multiple && $participation->userId == -1) trigger_error( missing_parameter_error("userId") ); // if we got participation for multiple users OR if we successfully load it for a single one, then everything is good if ($multiple || (!$multiple && $participation->load())) { $participation_arr = $participation->getResultArray(true, "Results_Saved_OK"); print_r(json_encode($participation_arr)); // OK } else trigger_error("User_Results_Not_Found"); ?>