You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
203 lines
6.9 KiB
203 lines
6.9 KiB
<?php
|
|
|
|
/* For licensing terms, see /license.txt */
|
|
|
|
use Chamilo\CoreBundle\Framework\Container;
|
|
use Chamilo\CourseBundle\Entity\CSurvey;
|
|
|
|
require_once __DIR__.'/../inc/global.inc.php';
|
|
|
|
if (!api_is_allowed_to_edit(false, true)) {
|
|
api_not_allowed(true);
|
|
}
|
|
|
|
$tool_name = get_lang('Survey invitations');
|
|
$courseInfo = api_get_course_info();
|
|
$course = api_get_course_entity();
|
|
$repo = Container::getSurveyRepository();
|
|
$surveyId = $_GET['survey_id'] ?? 0;
|
|
if (empty($surveyId)) {
|
|
api_not_allowed(true);
|
|
}
|
|
/** @var CSurvey $survey */
|
|
$survey = $repo->find($surveyId);
|
|
if (null === $survey) {
|
|
api_not_allowed(true);
|
|
}
|
|
$surveyId = $survey->getIid();
|
|
$view = $_GET['view'] ?? 'invited';
|
|
|
|
$urlname = strip_tags(
|
|
api_substr(api_html_entity_decode($survey->getTitle(), ENT_QUOTES), 0, 40)
|
|
);
|
|
if (api_strlen(strip_tags($survey->getTitle())) > 40) {
|
|
$urlname .= '...';
|
|
}
|
|
|
|
// Breadcrumbs
|
|
$interbreadcrumb[] = [
|
|
'url' => api_get_path(WEB_CODE_PATH).'survey/survey_list.php',
|
|
'name' => get_lang('Survey list'),
|
|
];
|
|
$interbreadcrumb[] = [
|
|
'url' => api_get_path(WEB_CODE_PATH).'survey/survey.php?survey_id='.$surveyId,
|
|
'name' => $urlname,
|
|
];
|
|
|
|
Display::display_header($tool_name);
|
|
|
|
$course_id = api_get_course_int_id();
|
|
$sessionId = api_get_session_id();
|
|
|
|
$sentInvitations = SurveyUtil::getSentInvitations($survey->getIid(), $course_id, $sessionId);
|
|
|
|
// Getting all the people who have filled this survey
|
|
$answered_data = SurveyManager::get_people_who_filled_survey($surveyId);
|
|
|
|
$invitationsCount = count($sentInvitations);
|
|
$answeredCount = count($answered_data);
|
|
$unAnsweredCount = count($sentInvitations) - count($answered_data);
|
|
|
|
if (1 == $survey->getAnonymous() && ('true' !== api_get_setting('survey.survey_anonymous_show_answered'))) {
|
|
echo Display::return_message(
|
|
get_lang('This survey is anonymous. You can\'t see who answered.').' '.$answeredCount.' '.get_lang(
|
|
'people answered'
|
|
)
|
|
);
|
|
$answered_data = [];
|
|
}
|
|
if (1 == $survey->getAnonymous()) {
|
|
if ($answeredCount < 2) {
|
|
$answeredCount = 0;
|
|
$unAnsweredCount = $invitationsCount;
|
|
}
|
|
}
|
|
$url = api_get_self().'?survey_id='.$surveyId.'&'.api_get_cidreq();
|
|
|
|
echo '<ul class="nav nav-tabs">';
|
|
if ('invited' === $view) {
|
|
echo '<li role="presentation" class="active"><a "href="#">'.get_lang('View invited');
|
|
} else {
|
|
echo '<li role="presentation"><a href="'.$url.'&view=invited">'.
|
|
get_lang('View invited');
|
|
}
|
|
echo Display::label($invitationsCount, 'warning');
|
|
echo '</a></li>';
|
|
if ('answered' === $view) {
|
|
echo '<li role="presentation" class="active"><a href="#">'.get_lang('View people who answered');
|
|
} else {
|
|
echo '<li role="presentation">
|
|
<a href="'.$url.'&view=answered">'.
|
|
get_lang('View people who answered');
|
|
}
|
|
echo Display::label($answeredCount, 'warning');
|
|
echo '</a></li>';
|
|
|
|
if ('unanswered' === $view) {
|
|
echo '<li role="presentation" class="active">
|
|
<a href="#">'.get_lang('View people who didn\'t answer');
|
|
} else {
|
|
echo '<li role="presentation">
|
|
<a href="'.$url.'&view=unanswered">'.
|
|
get_lang('View people who didn\'t answer');
|
|
}
|
|
echo Display::label($unAnsweredCount, 'warning');
|
|
echo '</a></li>';
|
|
echo '</ul>';
|
|
echo '<table class="table table-hover table-striped data_table" style="margin-top: 5px;">';
|
|
echo '<tr>';
|
|
echo '<th>'.get_lang('User').'</th>';
|
|
echo '<th>'.get_lang('Invitation date').'</th>';
|
|
|
|
switch ($view) {
|
|
case 'unanswered':
|
|
echo '<th>'.get_lang('Survey invitation link').'</th>';
|
|
break;
|
|
default:
|
|
echo '<th>'.get_lang('Answered').'</th>';
|
|
break;
|
|
}
|
|
echo '</tr>';
|
|
$surveyAnonymousShowAnswered = ('true' === api_get_setting('survey.survey_anonymous_show_answered'));
|
|
$hideSurveyReportingButton = ('true' === api_get_setting('survey.hide_survey_reporting_button'));
|
|
|
|
foreach ($sentInvitations as $row) {
|
|
$id = $row['iid'];
|
|
$user = $row['user'];
|
|
if ('invited' === $view ||
|
|
('answered' === $view && in_array($user, $answered_data) && $answeredCount > 1) ||
|
|
('unanswered' === $view && !in_array($user, $answered_data) && $answeredCount > 1)
|
|
) {
|
|
echo '<tr>';
|
|
if (is_numeric($user)) {
|
|
$userInfo = api_get_user_info($user);
|
|
echo '<td>';
|
|
echo UserManager::getUserProfileLink($userInfo);
|
|
echo '</td>';
|
|
} else {
|
|
echo '<td>'.$user.'</td>';
|
|
}
|
|
echo ' <td>'.Display::dateToStringAgoAndLongDate($row['invitation_date']).'</td>';
|
|
|
|
if (in_array($user, $answered_data)) {
|
|
if (!$surveyAnonymousShowAnswered && !$hideSurveyReportingButton) {
|
|
echo '<td>';
|
|
echo '<a href="'.
|
|
api_get_path(WEB_CODE_PATH).
|
|
'survey/reporting.php?action=userreport&survey_id='.$surveyId.'&user='.$user.'&'.api_get_cidreq().'">'.
|
|
get_lang('View answers').'</a>';
|
|
echo '</td>';
|
|
} else {
|
|
if (1 == $survey->getAnonymous() && $answeredCount > 1) {
|
|
echo '<td>'.get_lang('Answered').'</td>';
|
|
} else {
|
|
echo '<td>-</td>';
|
|
}
|
|
}
|
|
} else {
|
|
if ('unanswered' === $view) {
|
|
echo '<td>';
|
|
$code = $row['invitation_code'];
|
|
$link = SurveyUtil::generateFillSurveyLink($survey, $code, $course, $sessionId);
|
|
$link = Display::input('text', 'copy_'.$id, $link, ['id' => 'copy_'.$id, 'class' => '']);
|
|
$link .= ' '.Display::url(
|
|
Display::getMdiIcon('content-copy').get_lang('Copy text'),
|
|
'javascript:void()',
|
|
['onclick' => "copyTextToClipBoard('copy_".$id."')", 'class' => 'btn btn--primary btn-sm']
|
|
);
|
|
|
|
echo $link;
|
|
echo ' </td>';
|
|
} else {
|
|
echo '<td>-</td>';
|
|
}
|
|
}
|
|
echo '</tr>';
|
|
} elseif ('unanswered' === $view && 0 == $answeredCount) {
|
|
echo '<tr>';
|
|
if (is_numeric($row['user'])) {
|
|
$userInfo = api_get_user_info($row['user']);
|
|
echo '<td>';
|
|
echo UserManager::getUserProfileLink($userInfo);
|
|
echo '</td>';
|
|
} else {
|
|
echo '<td>'.$row['user'].'</td>';
|
|
}
|
|
echo ' <td>'.Display::dateToStringAgoAndLongDate($row['invitation_date']).'</td>';
|
|
echo ' <td>';
|
|
$code = $row['invitation_code'];
|
|
$link = SurveyUtil::generateFillSurveyLink($survey, $code, $course, $sessionId);
|
|
$link = Display::input('text', 'copy_'.$id, $link, ['id' => 'copy_'.$id, 'class' => '']);
|
|
$link .= ' '.Display::url(
|
|
Display::getMdiIcon('content-copy').get_lang('Copy text'),
|
|
'javascript:void()',
|
|
['onclick' => "copyTextToClipBoard('copy_".$id."')", 'class' => 'btn btn--primary btn-sm']
|
|
);
|
|
|
|
echo $link;
|
|
echo '</td></tr>';
|
|
}
|
|
}
|
|
|
|
echo '</table>';
|
|
Display::display_footer();
|
|
|