Add TC and TI report BT#16341

pull/3354/head
Julio Montoya 6 years ago
parent c1680683d5
commit 4e29ffd64d
  1. 10
      main/inc/lib/myspace.lib.php
  2. 184
      main/mySpace/tc_report.php
  3. 211
      main/mySpace/ti_report.php

@ -55,6 +55,14 @@ class MySpace
'url' => api_get_path(WEB_CODE_PATH).'mySpace/survey_report.php',
'content' => get_lang('SurveysReport'),
],
[
'url' => api_get_path(WEB_CODE_PATH).'mySpace/tc_report.php',
'content' => get_lang('TCReport'),
],
[
'url' => api_get_path(WEB_CODE_PATH).'mySpace/ti_report.php',
'content' => get_lang('TIReport'),
],
];
return Display::actions($actions, null);
@ -490,7 +498,7 @@ class MySpace
if (api_is_multiple_url_enabled()) {
$tbl_session_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
$access_url_id = api_get_current_access_url_id();
if (-1 != $access_url_id) {
if ($access_url_id != -1) {
$sqlCoachs = "SELECT DISTINCT
scu.user_id as id_coach,
u.id as user_id,

@ -0,0 +1,184 @@
<?php
/* For licensing terms, see /license.txt */
$cidReset = true;
require_once __DIR__.'/../inc/global.inc.php';
$this_section = SECTION_TRACKING;
$csv_content = [];
$nameTools = get_lang('MySpace');
$allowToTrack = api_is_platform_admin(true, true);
if (!$allowToTrack) {
api_not_allowed(true);
}
$userInfo = [];
$action = isset($_REQUEST['a']) ? $_REQUEST['a'] : null;
$languageFilter = isset($_REQUEST['language']) ? $_REQUEST['language'] : '';
$content = '';
switch ($action) {
case 'add_user':
$bossId = isset($_REQUEST['boss_id']) ? (int) $_REQUEST['boss_id'] : 0;
$bossInfo = api_get_user_info($bossId);
$form = new FormValidator('add_user');
$form->addHeader(get_lang('AddUser').' '.$bossInfo['complete_name']);
$form->addHidden('a', 'add_user');
$form->addHidden('boss_id', $bossId);
$form->addSelectAjax(
'user_id',
get_lang('User'),
[],
[
'url' => api_get_path(WEB_AJAX_PATH).'user_manager.ajax.php?a=user_by_role&active=1&status='.STUDENT,
]
);
$form->addButtonSave(get_lang('Add'));
if ($form->validate()) {
$values = $form->getSubmitValues();
$studentInfo = api_get_user_info($values['user_id']);
UserManager::subscribeUserToBossList($values['user_id'], [$values['boss_id']], true);
Display::addFlash(Display::return_message(get_lang('Saved').' '.$studentInfo['complete_name']));
header('Location: '.api_get_self());
exit;
}
$content = $form->returnForm();
break;
}
$url = api_get_path(WEB_AJAX_PATH).'statistics.ajax.php?a=add_student_to_boss';
$htmlHeadXtra[] = '<script>
$(function() {
$(".add_user form").on("submit", function(e) {
e.preventDefault();
var id = $(this).attr("id");
var data = $("#" + id ).serializeArray();
var bossId = id.replace("add_user_to_", "") ;
for (i=0; i<data.length; i += 1) {
if (data[i].name === "user_id") {
var userId = data[i].value;
var params = "boss_id="+ bossId + "&student_id="+ userId + "&";
$.get(
"'.$url.'",
params,
function(response) {
$("#table_" + bossId ).html(response);
$("#table_" + bossId ).append("'.addslashes(Display::label(get_lang('Added'), 'success')).'");
$("#add_user_to_" + bossId + "_user_id").val(null).trigger("change");
}
);
}
}
});
});
</script>';
Display::display_header($nameTools);
echo '<div class="actions">';
echo MySpace::getTopMenu();
echo '</div>';
echo MySpace::getAdminActions();
if ($action !== 'add_user') {
$form = new FormValidator('language_filter');
$form->addHidden('a', 'language_filter');
$form->addSelectLanguage(
'language',
get_lang('Language'),
['placeholder' => get_lang('SelectAnOption')]
);
$form->addButtonSearch(get_lang('Search'));
echo $form->returnForm();
}
echo $content;
$style = '<style>
.boss_column {
display: block;
}
.row .col-md-1 {
display:flex;
flex: 0 0 20%;
}
.flex-nowrap {
-webkit-flex-wrap: nowrap!important;
-ms-flex-wrap: nowrap!important;
flex-wrap: nowrap!important;
}
.flex-row {
display:flex;
-webkit-box-orient: horizontal!important;
-webkit-box-direction: normal!important;
-webkit-flex-direction: row!important;
-ms-flex-direction: row!important;
flex-direction: row!important;
}
.add_user {
//display:none;
}
</style>';
echo $style;
$tableContent = '';
if ($action !== 'add_user') {
$conditions = ['status' => STUDENT_BOSS, 'active' => 1];
if (!empty($languageFilter) && $languageFilter !== 'placeholder') {
$conditions['language'] = $languageFilter;
}
$bossList = UserManager::get_user_list($conditions, ['firstname']);
$tableContent .= '<div class="container-fluid"><div class="row flex-row flex-nowrap">';
foreach ($bossList as $boss) {
$bossId = $boss['id'];
$tableContent .= '<div class="col-md-1">';
$tableContent .= '<div class="boss_column">';
$tableContent .= '<h5><strong>'.api_get_person_name($boss['firstname'], $boss['lastname']).'</strong></h5>';
$tableContent .= Statistics::getBossTable($bossId);
$url = api_get_self().'?a=add_user&boss_id='.$bossId;
$tableContent .= '<div class="add_user">';
$tableContent .= '<strong>'.get_lang('AddStudent').'</strong>';
$addUserForm = new FormValidator(
'add_user_to_'.$bossId,
'post',
'',
'',
[],
FormValidator::LAYOUT_BOX_NO_LABEL
);
$addUserForm->addSelectAjax(
'user_id',
'',
[],
[
'width' => '200px',
'url' => api_get_path(WEB_AJAX_PATH).'user_manager.ajax.php?a=user_by_role&active=1&status='.STUDENT,
]
);
$addUserForm->addButtonSave(get_lang('Add'));
$tableContent .= $addUserForm->returnForm();
$tableContent .= '</div>';
$tableContent .= '</div>';
$tableContent .= '</div>';
}
$tableContent .= '</div></div>';
}
echo $tableContent;
Display::display_footer();

@ -0,0 +1,211 @@
<?php
/* For licensing terms, see /license.txt */
$cidReset = true;
require_once __DIR__.'/../inc/global.inc.php';
$this_section = SECTION_TRACKING;
$csv_content = [];
$nameTools = get_lang('MySpace');
$allowToTrack = api_is_platform_admin(true, true);
if (!$allowToTrack) {
api_not_allowed(true);
}
$userInfo = [];
$action = isset($_REQUEST['a']) ? $_REQUEST['a'] : null;
$content = '';
switch ($action) {
case 'add_user':
break;
}
Display::display_header($nameTools);
echo '<div class="actions">';
echo MySpace::getTopMenu();
echo '</div>';
echo MySpace::getAdminActions();
echo '<style>
.session_block {
width: 120px;
overflow: hidden;
text-overflow: ellipsis;
color:#fff;
}
.session_block .label {
width: 120px;
}
table th{
text-align: center;
width: 300px;
}
</style>';
$form = new FormValidator('users', 'get', api_get_self().'?a=users_active');
$form->addDateRangePicker(
'daterange',
get_lang('DateRange'),
true,
['format' => 'YYYY-MM-DD', 'timePicker' => 'false', 'validate_format' => 'Y-m-d']
);
$form->addHidden('a', 'users_active');
$form->addButtonFilter(get_lang('Search'));
$weekFormat = 'oW';
if ($form->validate()) {
$values = $form->getSubmitValues();
$startDate = Database::escape_string($values['daterange_start']);
$endDate = Database::escape_string($values['daterange_end']);
//$startDate = Database::escape_string($_REQUEST['daterange_start']);
//$endDate = Database::escape_string($_REQUEST['daterange_end']);
$date = new DateTime($startDate);
$weekStart = $date->format($weekFormat);
$date = new DateTime($endDate);
$weekEnd = $date->format($weekFormat);
$first = DateTime::createFromFormat('Y-m-d', $startDate);
$second = DateTime::createFromFormat('Y-m-d', $endDate);
$numberOfWeeks = floor($first->diff($second)->days / 7);
$sql = " SELECT id_coach, name, id as session_id, display_start_date, display_end_date
FROM session
WHERE display_start_date BETWEEN '$startDate' AND '$endDate'
ORDER BY id_coach";
$result = Database::query($sql);
$coachList = [];
while ($row = Database::fetch_array($result, 'ASSOC')) {
$coachId = $row['id_coach'];
if (!isset($coachList[$coachId])) {
$userInfo = api_get_user_info($coachId);
$coachList[$coachId]['complete_name'] = $userInfo['complete_name'];
$coachList[$coachId]['session_count'] = 0;
}
// Start
$date = new DateTime($row['display_start_date']);
$week = $date->format($weekFormat);
$coachList[$coachId]['week'][$week]['sessions'][] = $row;
// End
$endDate = new DateTime($row['display_end_date']);
$endWeek = $endDate->format($weekFormat);
$numberOfWeeksBetween = floor($date->diff($endDate)->days / 7);
for ($i = 0; $i < $numberOfWeeksBetween; $i++) {
$date->add(new DateInterval('P1W'));
$week = $date->format($weekFormat);
$coachList[$coachId]['week'][$week]['sessions'][] = $row;
}
$coachList[$coachId]['session_count'] += 1;
$coachList[$coachId]['data'] = $row;
}
$table = new HTML_Table(['class' => 'table table-responsive']);
$headers = [
get_lang('Coach'),
get_lang('Sessions'),
];
$date = new DateTime($startDate);
for ($i = 0; $i <= $numberOfWeeks; $i++) {
$headers[] = $date->format('o-W');
$date->add(new DateInterval('P1W'));
}
$width = ' width:300px;';
$row = 0;
$column = 0;
foreach ($headers as $header) {
$table->setHeaderContents($row, $column, $header);
$table->updateCellAttributes(
$row,
$column,
'style="'.$width.'"'
);
$column++;
}
$row++;
$url = api_get_path(WEB_CODE_PATH).'session/resume_session.php?';
foreach ($coachList as $coachData) {
$column = 0;
$table->updateCellAttributes(
$row,
$column,
'style="'.$width.'"'
);
$table->setCellContents($row, $column++, $coachData['complete_name']);
$table->updateCellAttributes(
$row,
$column,
'style="'.$width.'"'
);
$table->setCellContents($row, $column++, $coachData['session_count']);
$date = new DateTime($startDate);
$sessionAdded = [];
for ($i = 2; $i <= $numberOfWeeks; $i++) {
$dateWeekToCheck = $date->format($weekFormat);
if (isset($coachData['week'][$dateWeekToCheck])) {
$sessionArray = [];
foreach ($coachData['week'][$dateWeekToCheck]['sessions'] as $session) {
$date2 = new DateTime($session['display_start_date']);
$name = $session['name'];
$showName = true;
if (in_array($session['session_id'], $sessionAdded)) {
$showName = false;
} else {
$sessionAdded[] = $session['session_id'];
}
if ($showName === false) {
$name = '';
}
$sessionArray[] = Display::url(
$name,
$url.'id_session='.$session['session_id'],
['class' => 'label label-success', 'target' => '_blank', 'title' => addslashes($session['name'])]
);
}
$value = implode('<br /><br />', $sessionArray);
$value = "<div class='session_block'> $value </div>";
$table->setCellContents($row, $i, $value);
$table->updateCellAttributes(
$row,
$i,
'style="background:green; '.$width.'"'
);
} else {
$table->setCellContents($row, $i, '<div class="session_block"></div>');
$table->updateCellAttributes(
$row,
$i,
'style="'.$width.'"'
);
}
$date->add(new DateInterval('P1W'));
}
$row++;
}
$content = $table->toHtml();
}
echo $form->returnForm();
echo $content;
Display::display_footer();
Loading…
Cancel
Save