Add pending surveys page - refs BT#11913

pull/2463/head
Angel Fernando Quiroz Campos 8 years ago
parent ad649f4eb1
commit 4b5f86c413
  1. 61
      main/survey/pending.php
  2. 27
      main/survey/surveyUtil.class.php
  3. 5
      main/template/default/layout/menu.tpl
  4. 38
      main/template/default/survey/pending.tpl

@ -0,0 +1,61 @@
<?php
/* For licensing terms, see /license.txt */
use Chamilo\CourseBundle\Entity\CSurvey;
use Chamilo\CourseBundle\Entity\CSurveyInvitation;
use Chamilo\CoreBundle\Entity\Course;
use Chamilo\CoreBundle\Entity\Session;
$cidReset = true;
require_once __DIR__.'/../inc/global.inc.php';
api_block_anonymous_users(true);
$em = Database::getManager();
$currentUser = api_get_user_entity(api_get_user_id());
$avatarPath = UserManager::getUserPicture($currentUser->getId());
$pending = SurveyUtil::getUserPendingInvitations($currentUser->getId());
$surveysData = [];
foreach ($pending as $i => $item) {
if (is_a($item, 'Chamilo\CourseBundle\Entity\CSurveyInvitation')) {
continue;
}
/** @var CSurvey $survey */
$survey = $item;
/** @var CSurveyInvitation invitation */
$invitation = $pending[$i + 1];
/** @var Course $course */
$course = $em->find('ChamiloCoreBundle:Course', $survey->getCId());
/** @var Session $session */
$session = $em->find('ChamiloCoreBundle:Session', $survey->getSessionId());
$surveysData[$survey->getSurveyId()] = [
'title' => $survey->getTitle(),
'invitation_code' => $invitation->getInvitationCode(),
'avail_from' => $survey->getAvailFrom(),
'avail_till' => $survey->getAvailTill(),
'course' => $course
? ['id' => $course->getId(), 'title' => $course->getTitle(), 'code' => $course->getCode()]
: null,
'session' => $session
? ['id' => $session->getId(), 'name' => $session->getName()]
: null
];
}
$toolName = get_lang('PendingSurveys');
$template = new Template($toolName);
$template->assign('user', $currentUser);
$template->assign('user_avatar', $avatarPath);
$template->assign('surveys', $surveysData);
$layout = $template->get_template('survey/pending.tpl');
$content = $template->fetch($layout);
$template->assign('header', $toolName);
$template->assign('content', $content);
$template->display_one_col_template();

@ -3757,4 +3757,31 @@ class SurveyUtil
return $response > 0;
}
/**
* Get the pending surveys for a user
*
* @param int $userId
*
* @return array
*/
public static function getUserPendingInvitations($userId)
{
$now = api_get_utc_datetime(null, false, true);
$dql = "
SELECT s, si FROM ChamiloCourseBundle:CSurvey s
INNER JOIN ChamiloCourseBundle:CSurveyInvitation si
WITH (s.code = si.surveyCode AND s.cId = si.cId AND s.sessionId = si.sessionId )
WHERE si.user = :user_id AND s.availFrom <= :now AND s.availTill >= :now
ORDER BY s.availTill ASC
";
$pendingSurveys = Database::getManager()
->createQuery($dql)
->setParameters(['user_id' => $userId, 'now' => $now->format('Y-m-d')])
->getResult();
return $pendingSurveys;
}
}

@ -70,6 +70,11 @@
<em class="fa fa-envelope" aria-hidden="true"></em> {{ "Inbox"|get_lang }}
</a>
</li>
<li class="user-body">
<a href="{{ _p.web_main ~ 'survey/pending.php' }}">
<em class="fa fa-pie-chart"></em> {{ 'PendingSurveys'|get_lang }}
</a>
</li>
{% if certificate_url %}
<li class="user-body">
<a title="{{ "MyCertificates"|get_lang }}" href="{{ certificate_url }}">

@ -0,0 +1,38 @@
<div class="media">
<div class="media-left">
<a href="#">
<img class="media-object" src="{{ user_avatar }}" alt="{{ user.completeName }}">
</a>
</div>
<div class="media-body">
<h3 class="media-heading">{{ user.completeName }}</h3>
<p>{{ user.username }}</p>
</div>
</div>
<br>
{% for survey in surveys %}
{% set course_code = survey.course ? survey.course.code : '' %}
{% set session_id = survey.session ? survey.session.id : 0 %}
<div class="panel panel-default">
{% if survey.course %}
<div class="panel-heading">
<h3 class="panel-title">
{{ survey.course.title }}
{% if survey.session %}
({{ survey.session.name }})
{% endif %}
</h3>
</div>
{% endif %}
<div class="panel-body">
<div>
<a href="{{ _p.web_main ~ 'survey/fillsurvey.php?' ~ {'course': course_code, 'invitationcode': survey.invitation_code, 'cidReq': course_code, 'id_session': session_id}|url_encode }}">
{{ survey.title }}
</a>
<p>{{ 'FromDateXToDateY'|get_lang|format(survey.avail_from|api_convert_and_format_date(2), survey.avail_till|api_convert_and_format_date(2)) }}</p>
</div>
</div>
</div>
{% endfor %}
Loading…
Cancel
Save