usort($csv_content, 'sort_users'); } foreach ($all_datas as $row) { $table->addRow($row, 'align="right"'); } $table->setColAttributes(0, array('align' => 'left')); $table->setColAttributes(1, array('align' => 'left')); $table->setColAttributes(2, array('align' => 'left')); $table->setColAttributes(7, array('align' => 'right')); $table->setColAttributes(8, array('align' => 'center')); $table->setColAttributes(9, array('align' => 'center')); $table->display(); } else { echo get_lang('NoUsersInCourseTracking'); } $ScormService = cloud_getScormEngineService(); $rptService = $ScormService->getReportingService(); $reportageAuth = $rptService->GetReportageAuth('NONAV', false); $tagSettings = new TagSettings(); $tagSettings->addTag("course", $_REQUEST['cidReq']); $sumWidgetSettings = new WidgetSettings(null, $tagSettings, null); $sumWidgetSettings->setShowTitle(true); $sumWidgetSettings->setScriptBased(false); $sumWidgetSettings->setEmbedded(true); $sumWidgetSettings->setIframe(true); echo '<div class="row"><div class="form_header">SCORM CLOUD Training Summary</div></div>'; echo "<iframe id=\"allSummaryFrame\" style=\"width:100%;height:400px;\" src=\"" . $rptService->GetWidgetUrl($reportageAuth, 'allSummary', $sumWidgetSettings) . "\" scrolling=\"no\" frameborder='0'></iframe>"; // send the csv file if asked if ($export_csv) { $csv_content[] = array(get_lang('OfficialCode'), get_lang('LastName'), get_lang('FirstName'), get_lang('TrainingTime'), get_lang('CourseProgress'), get_lang('Score'), get_lang('Student_publication'), get_lang('Messages'), get_lang('FirstLogin'), get_lang('LatestLogin')); ob_end_clean();
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__); }