V0 : initial import
This commit is contained in:
67
ProserveAPI/htdocs/proserve/session/getobjectives.php
Normal file
67
ProserveAPI/htdocs/proserve/session/getobjectives.php
Normal file
@@ -0,0 +1,67 @@
|
||||
<?php
|
||||
// include database and object files
|
||||
include_once '../config/init.php'; // contains $db
|
||||
include_once '../config/error.php';
|
||||
include_once '../objects/db_participates.php';
|
||||
|
||||
// prepare user object
|
||||
$participation = new UserInGameSession($db);
|
||||
$participation->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");
|
||||
?>
|
||||
Reference in New Issue
Block a user