コード例 #1
0
         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();
コード例 #2
0
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__);
}