Add student_follow_page_add_LP_subscription_info conf setting - refs BT#18671

Add column "Unlocked" in student LPs table to display info about a lp subscription
pull/3859/head
Angel Fernando Quiroz Campos 4 years ago
parent b6ee77ad00
commit a3dbb2ed8e
  1. 20
      main/inc/lib/events.lib.php
  2. 45
      main/inc/lib/tracking.lib.php
  3. 2
      main/install/configuration.dist.php
  4. 20
      main/mySpace/myStudents.php
  5. 21
      src/Chamilo/CoreBundle/Entity/Repository/ItemPropertyRepository.php

@ -883,6 +883,26 @@ class Event
return true;
}
public static function findUserSubscriptionToCourse(int $userId, int $courseId, int $sessionId = 0)
{
$tblTrackEDefault = Database::get_main_table(TABLE_STATISTIC_TRACK_E_DEFAULT);;
return Database::select(
'*',
$tblTrackEDefault,
[
'where' => [
'default_event_type = ? AND ' => LOG_SUBSCRIBE_USER_TO_COURSE,
'default_value_type = ? AND ' => LOG_USER_OBJECT,
'default_value LIKE ? AND ' => '%s:2:\\\\"id\\\\";i:'.$userId.'%',
'c_id = ? AND ' => $courseId,
'session_id = ?' => $sessionId,
]
],
'first'
);
}
/**
* Get every email stored in the database.
*

@ -5,6 +5,7 @@
use Chamilo\CoreBundle\Entity\Course;
use Chamilo\CoreBundle\Entity\ExtraField as EntityExtraField;
use Chamilo\CoreBundle\Entity\Session as SessionEntity;
use Chamilo\CourseBundle\Entity\CItemProperty;
use Chamilo\UserBundle\Entity\User;
use ChamiloSession as Session;
use CpChart\Cache as pCache;
@ -7715,6 +7716,50 @@ class Tracking
}
}
}
public static function getStudentFollowPageLpSubscription(
array $lpInfo,
int $studentId,
int $courseId,
int $sessionId = 0
) {
$em = Database::getManager();
if ($lpInfo['subscribe_users']) {
$itemRepo = $em->getRepository(CItemProperty::class);
$itemProperty = $itemRepo->findByUserSuscribedToItem(
'learnpath',
$lpInfo['iid'],
api_get_user_entity($studentId),
api_get_course_entity($courseId),
api_get_session_entity($sessionId)
);
if (null === $itemProperty) {
return '-';
}
return "{$itemProperty->getInsertUser()->getCompleteName()}<br>"
.Display::tag(
'small',
api_convert_and_format_date($itemProperty->getInsertDate(), DATE_TIME_FORMAT_LONG)
);
}
$subscriptionEvent = Event::findUserSubscriptionToCourse($studentId, $courseId, $sessionId);
if (empty($subscriptionEvent)) {
return '-';
}
$creator = api_get_user_entity($subscriptionEvent['default_user_id']);
return "{$creator->getCompleteName()}<br>"
.Display::tag(
'small',
api_convert_and_format_date($subscriptionEvent['default_date'], DATE_TIME_FORMAT_LONG)
);
}
}
/**

@ -379,6 +379,8 @@ $_configuration['tracking_columns'] = [
]
];
*/
// Add column "Unlocked" in student LPs table to display info about a lp subscription
//$_configuration['student_follow_page_add_LP_subscription_info'] = false;
// Hide session link of course_block on index/userportal
//$_configuration['remove_session_url']= false ;
// Allow foldable block for session list in session category on My courses tab

@ -2,6 +2,7 @@
/* For licensing terms, see /license.txt */
use Chamilo\CourseBundle\Entity\CItemProperty;
use Chamilo\CourseBundle\Entity\CLpCategory;
use ChamiloSession as Session;
@ -51,6 +52,9 @@ $allowedToTrackUser =
api_is_teacher()
;
$em = Database::getManager();
$itemRepo = $em->getRepository(CItemProperty::class);
if (false === $allowedToTrackUser && !empty($courseInfo)) {
if (empty($sessionId)) {
$isTeacher = CourseManager::is_course_teacher(
@ -1349,6 +1353,10 @@ if (empty($details)) {
}
}
if (true === api_get_configuration_value('student_follow_page_add_LP_subscription_info')) {
$columnHeaders['student_follow_page_add_LP_subscription_info'] = get_lang('Unlock');
}
$headers = '';
$columnHeadersToExport = [];
// csv export headers
@ -1566,6 +1574,18 @@ if (empty($details)) {
echo Display::tag('td', $start_time);
}
if (in_array('student_follow_page_add_LP_subscription_info', $columnHeadersKeys)) {
echo Display::tag(
'td',
Tracking::getStudentFollowPageLpSubscription(
$learnpath,
$student_id,
$courseInfo['real_id'],
$sessionId
)
);
}
if ($hookLpTracking) {
$hookContents = $hookLpTracking->notifyTrackingContent($lp_id, $student_id);

@ -44,6 +44,27 @@ class ItemPropertyRepository extends EntityRepository
return $this->findBy($criteria);
}
public function findByUserSuscribedToItem(
$tool,
$itemId,
User $user,
Course $course,
Session $session = null,
Group $group = null
): ?CItemProperty {
$criteria = [
'tool' => $tool,
'lasteditType' => 'LearnpathSubscription',
'ref' => $itemId,
'toUser' => $user,
'course' => $course,
'session' => $session,
'group' => $group,
];
return $this->findOneBy($criteria);
}
/**
* Get Groups subscribed to a item: LP, Doc, etc.
*

Loading…
Cancel
Save