parent
bfc2b3d32e
commit
72338556d6
@ -0,0 +1,119 @@ |
||||
<?php |
||||
|
||||
$reports_template['CourseArticulate'] = array( |
||||
'description' => 'CourseArticulate', |
||||
'getSQL' => 'reports_template_CourseArticulate_getSQL', |
||||
'wizard' => |
||||
' |
||||
<span id="CourseArticulate" class="step"> |
||||
<span class="font_normal_07em_black">This report does not need any particular settings</span><br /> |
||||
<input type="hidden" class="link" value="format" /> |
||||
</span> |
||||
'); |
||||
|
||||
function reports_template_CourseArticulate_getSQL() { |
||||
// settings |
||||
|
||||
|
||||
// Nom, prenom |
||||
$query = 'select u.lastname as "Last name", u.firstname as "First name" '; |
||||
$query .= 'from '.Database::get_main_table(TABLE_MAIN_USER).' u '; |
||||
$query .= ' where u.user_id in ('.reports_getVisibilitySQL().') '; |
||||
$query .= ' order by u.user_id '; |
||||
$queries[0] = $query; |
||||
|
||||
// Custom Field |
||||
foreach (array("tags" => "tags") as $k => $v) { // FIXME |
||||
$query = 'select ufv.field_value as "'.$v.'" '; |
||||
$query .= 'from '.Database::get_main_table(TABLE_MAIN_USER).' u '; |
||||
$query .= 'left join'.Database::get_main_table(TABLE_MAIN_USER_FIELD).' uf '; |
||||
$query .= ' on uf.field_variable="'.$k.'" '; |
||||
$query .= 'left outer join '.Database::get_main_table(TABLE_MAIN_USER_FIELD_VALUES).' ufv '; |
||||
$query .= ' on ufv.user_id = u.user_id and ufv.field_id = uf.id '; |
||||
$query .= 'where u.user_id in ('.reports_getVisibilitySQL().') '; |
||||
$query .= ' order by u.user_id '; |
||||
$queries[] = $query; |
||||
} |
||||
|
||||
|
||||
// Stored Value |
||||
$sv = array(); |
||||
foreach ($sv as $k => $v) { |
||||
if (!isset($v['sql'])) |
||||
$v['sql'] = 'FIELD'; |
||||
$sqlField = str_replace('FIELD', 'sv.sv_value', $v['sql']); |
||||
$query = 'select '.$sqlField.' as "'.$v['title'].'" '; |
||||
// $query = 'select sec_to_time(sv.sv_value) as "'.$v.'" '; |
||||
$query .= 'from '.Database::get_main_table(TABLE_MAIN_USER).' u '; |
||||
$query .= ' left outer join '.Database::get_main_database().'.stored_values sv '; |
||||
$query .= 'on sv.user_id = u.user_id and sv_key = "'.$k.'" '; |
||||
$query .= ' where u.user_id in ('.reports_getVisibilitySQL().') '; |
||||
$query .= ' group by u.user_id '; |
||||
$query .= ' order by u.user_id '; |
||||
$queries[] = $query; |
||||
} |
||||
|
||||
// first and last connection |
||||
$query = 'select min(tel.login_date) as "First connection", max(tel.logout_date) as "Latest connection" '; |
||||
$query .= 'from '.Database::get_main_table(TABLE_MAIN_USER).' u '; |
||||
$query .= 'left outer join '.Database::get_main_table(TABLE_STATISTIC_TRACK_E_LOGIN).' tel '; |
||||
$query .= ' on tel.login_user_id = u.user_id '; |
||||
$query .= ' where u.user_id in ('.reports_getVisibilitySQL().') '; |
||||
$query .= ' group by u.user_id '; |
||||
$query .= ' order by u.user_id '; |
||||
$queries[] = $query; |
||||
|
||||
// SCORM Data |
||||
$scormData = array(); |
||||
foreach (CourseManager::get_real_course_list() as $code => $details) { |
||||
$list = Database::query('select l.id as lid, l.name as lname, li.id as liid, li.title as lititle '. |
||||
' from '.Database::get_course_table(TABLE_LP_MAIN, $details['db_name']).' l, '. |
||||
' '.Database::get_course_table(TABLE_LP_ITEM, $details['db_name']).' li '. |
||||
' where l.id = li.lp_id'); |
||||
while ($lpItem = Database::fetch_assoc($list)) { |
||||
$scormData[] = array('coursedb' => $details['db_name'], |
||||
'lid' => $lpItem['lid'], |
||||
'liid' => $lpItem['liid'], |
||||
'target_view_count' => 1, |
||||
'target_indicator' => 'score', |
||||
'title' => $details['title'].'/'.$lpItem['lname'].'/'.$lpItem['lititle'].'/1/score', |
||||
'sql' => 'FIELD'); |
||||
$scormData[] = array('coursedb' => $details['db_name'], |
||||
'lid' => $lpItem['lid'], |
||||
'liid' => $lpItem['liid'], |
||||
'target_view_count' => 2, |
||||
'target_indicator' => 'score', |
||||
'title' => $details['title'].'/'.$lpItem['lname'].'/'.$lpItem['lititle'].'/2/score', |
||||
'sql' => 'FIELD'); |
||||
$scormData[] = array('coursedb' => $details['db_name'], |
||||
'lid' => $lpItem['lid'], |
||||
'liid' => $lpItem['liid'], |
||||
'target_view_count' => null, |
||||
'target_indicator' => 'score', |
||||
'title' => $details['title'].'/'.$lpItem['lname'].'/'.$lpItem['lititle'].'/all/score', |
||||
'sql' => 'avg(FIELD)'); |
||||
} |
||||
} |
||||
|
||||
foreach($scormData as $v) { |
||||
if (!isset($v['sql'])) |
||||
$v['sql'] = 'FIELD'; |
||||
$sqlField = str_replace('FIELD', $v['target_indicator'], $v['sql']); |
||||
$query = 'select '.$sqlField.' as "'.$v['title'].'" '; |
||||
$query .= 'from '.Database::get_main_table(TABLE_MAIN_USER).' u '; |
||||
$query .= 'left outer join '.Database::get_course_table(TABLE_LP_VIEW, $details['db_name']).' lv '; |
||||
$query .= ' on u.user_id = lv.user_id and lv.lp_id = '.$v['lid']; |
||||
$query .= ' left outer join '.Database::get_course_table(TABLE_LP_ITEM_VIEW, $details['db_name']).' liv '; |
||||
$query .= ' on lv.id = liv.lp_view_id '; |
||||
if ($v['target_view_count']) |
||||
$query .= ' and liv.view_count = '.$v['target_view_count']; |
||||
$query .= ' and liv.lp_item_id = '.$v['liid'].' '; |
||||
$query .= ' where u.user_id in ('.reports_getVisibilitySQL().') '; |
||||
$query .= ' group by u.user_id '; |
||||
$query .= ' order by u.user_id '; |
||||
$queries[] = $query; |
||||
} |
||||
|
||||
return $queries; |
||||
} |
||||
|
Loading…
Reference in new issue