require_once '../newscorm/learnpath.class.php';
require_once '../newscorm/learnpathItem.class.php';
require_once '../newscorm/learnpathList.class.php';
require_once '../newscorm/scorm.class.php';
require_once '../newscorm/scormItem.class.php';
require_once api_get_path(LIBRARY_PATH) . 'tracking.lib.php';
require_once api_get_path(LIBRARY_PATH) . 'course.lib.php';
require_once api_get_path(LIBRARY_PATH) . 'usermanager.lib.php';
require_once api_get_path(LIBRARY_PATH) . 'export.lib.inc.php';
require_once api_get_path(LIBRARY_PATH) . 'formvalidator/FormValidator.class.php';
require_once '../scorm_cloud/scorm_cloud.lib.php';
if (isset($_GET['cidReq'])) {
    $cidReq = Security::remove_XSS($_GET['cidReq']);
}
$lp_id = intval($_GET['lp_id']);
$lp_table = Database::get_course_table_from_code($cidReq, 'lp');
$sql = "SELECT name FROM {$lp_table} WHERE id = {$lp_id}";
$name_res = api_sql_query($sql, __FILE__, __LINE__);
$row = Database::fetch_array($name_res);
$title = $row['name'];
$tbl_scorm_cloud = Database::get_main_table('scorm_cloud');
$sql_cloud_get_course = "Select cloud_course_id from {$tbl_scorm_cloud} " . "WHERE course_code = '{$cidReq}'  AND lp_id = {$lp_id} ";
$res = api_sql_query($sql_cloud_get_course, __FILE__, __LINE__);
if (Database::num_rows($res) > 0) {
    $row = Database::fetch_array($res);
    $cloud_courseId = $row['cloud_course_id'];
}
$nameTools = $title;
$ScormService = cloud_getScormEngineService();
$rptService = $ScormService->getReportingService();
$reportageAuth = $rptService->GetReportageAuth('NONAV', false);
function cloud_updateLMSRegistrationResults($regid, $lp_id)
{
    $ScormService = cloud_getScormEngineService();
    $regService = $ScormService->getRegistrationService();
    $resultXmlString = $regService->GetRegistrationResult($regid, 2, 0);
    $resXml = simplexml_load_string($resultXmlString);
    //echo 'xml: '.$resultXmlString.':endXml<br/>';
    $course_id = substr($regid, 0, strpos($regid, '_'));
    $lp_view_id = substr($regid, strpos($regid, '_') + 1);
    $activity = $resXml->registrationreport->activity[0];
    $report = $root_activities[0];
    $act_ref = $activity["id"];
    $act_title = $activity->title;
    //required type in order to report score
    $act_type = 'sco';
    $act_start_time = cloud_getCourseLaunchTime($regid);
    $lp_view_table = Database::get_course_table_from_code($course_id, TABLE_LP_VIEW);
    $sql = "SELECT user_id FROM {$lp_view_table} WHERE id = {$lp_view_id}";
    $view_res = api_sql_query($sql, __FILE__, __LINE__);
    $userRow = Database::fetch_array($view_res);
    $user_id = $userRow['user_id'];
    $act_total_time = cloud_getTotalCourseTime($course_id, $lp_id, $user_id);
    //echo $act_total_time.'<br/>';
    $act_score = cloud_getCourseScore($course_id, $lp_id, $user_id);
    //get the status
    $satisfied = $activity->success;
    $completed = $activity->complete;
    if ($satisfied == 'true') {
        $act_status = 'passed';
    } elseif ($completed == 'true' && $satisfied == 'false') {
        $act_status = 'failed';
    } else {
        $act_status = 'incomplete';
    }
    //First add an item if necessary, otherwise get the id
    $table_lp_item = Database::get_course_table_from_code($course_id, TABLE_LP_ITEM);
    $sql_check_lp_item = "Select count(*) AS num_items,id FROM {$table_lp_item} WHERE lp_id = {$lp_id}";
    $result = api_sql_query($sql_check_lp_item, __FILE__, __LINE__);
    $num_row = Database::fetch_array($result);
    //echo $num_row['num_items'];
    if ($num_row['num_items'] == 0) {
        $sql_item = "INSERT INTO {$table_lp_item} (lp_id,item_type,ref,title,path,parent_item_id) " . "VALUES({$lp_id},'{$act_type}','{$act_ref}','{$act_title}','',0)";
        //echo $sql_item.'<br>';
        $res_ins = api_sql_query($sql_item, __FILE__, __LINE__);
        //	$lp_item_id = Database :: get_last_insert_id();
    } else {
        $lp_item_id = $num_row['id'];
    }
    $table_lp_item_view = Database::get_course_table_from_code($course_id, TABLE_LP_ITEM_VIEW);
    $sql_check_lp_item_view = "Select count(*)AS num_items FROM {$table_lp_item_view} WHERE lp_view_id = {$lp_view_id}";
    $result_view = api_sql_query($sql_check_lp_item_view, __FILE__, __LINE__);
    $num_row_view = Database::fetch_array($result_view);
    if ($num_row_view['num_items'] == 0) {
        $sql_item_view = "INSERT INTO {$table_lp_item_view} (lp_item_id,lp_view_id,start_time,total_time,score,status) " . "VALUES({$lp_item_id},{$lp_view_id},{$act_start_time},{$act_total_time},{$act_score},'{$act_status}')";
    } else {
        $sql_item_view = "Update {$table_lp_item_view} " . "SET total_time = {$act_total_time}, " . "start_time = {$act_start_time}, " . " score = {$act_score}," . " status = '{$act_status}'" . " WHERE lp_item_id = {$lp_item_id} " . "AND lp_view_id = {$lp_view_id}";
    }
    //echo $sql_item_view.'<br>';
    $res_ins = api_sql_query($sql_item_view, __FILE__, __LINE__);
    $scos = $resXml->xpath('//activity[not(fn:exists(children/activity))]');
    //echo $scos[0]->title;
    $totScos = count($scos);
    $totCompl = 0;
    foreach ($scos as $sco) {
        if ($sco->completed == 'true') {
            $totCompl++;
        }
    }
    $progress = round($totCompl / $totScos * 100, 2);
    //echo $progress;
    $table_lp_view = Database::get_course_table_from_code($course_id, TABLE_LP_VIEW);
    $sql_update_lp_view = "UPDATE {$table_lp_view} SET progress={$progress} WHERE id={$lp_view_id}";
    $res_ins = api_sql_query($sql_update_lp_view, __FILE__, __LINE__);
}