Fix migration with fields of type datetime - refs BT#11588

pull/2487/head
Angel Fernando Quiroz Campos 9 years ago
parent def22242d2
commit 758af7a863
  1. 56
      app/Migrations/Schema/V111/Version20160907140300.php
  2. 8
      main/admin/user_information.php
  3. 16
      main/inc/ajax/course_home.ajax.php
  4. 4
      main/inc/ajax/model.ajax.php
  5. 14
      main/inc/lib/api.lib.php
  6. 5
      main/inc/lib/attendance.lib.php
  7. 5
      main/inc/lib/course.lib.php
  8. 4
      main/inc/lib/display.lib.php
  9. 125
      main/inc/lib/sessionmanager.lib.php
  10. 6
      main/inc/lib/tracking.lib.php
  11. 87
      main/inc/lib/usermanager.lib.php
  12. 18
      main/inc/lib/userportal.lib.php
  13. 12
      main/inc/lib/webservices/Rest.php
  14. 108
      main/lp/learnpathList.class.php
  15. 4
      main/mySpace/myStudents.php
  16. 6
      main/session/index.php
  17. 2
      main/session/session_category_edit.php
  18. 2
      main/template/default/export/table_pdf.tpl
  19. 2
      main/tracking/userLog.php
  20. 2
      main/tracking/userlogCSV.php
  21. 2
      main/user/add_users_to_session.php
  22. 27
      main/webservices/cm_webservice.php
  23. 15
      plugin/dashboard/block_session/block_session.class.php
  24. 5
      src/Chamilo/CoreBundle/Entity/Session.php
  25. 17
      src/Chamilo/CourseBundle/Entity/CLp.php

@ -0,0 +1,56 @@
<?php
/* For licensing terms, see /license.txt */
namespace Application\Migrations\Schema\V111;
use Application\Migrations\AbstractMigrationChamilo;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\DBAL\Types\Type;
/**
* Class Version20160907140300
* Change tables engine to InnoDB
* @package Application\Migrations\Schema\V111
*/
class Version20160907140300 extends AbstractMigrationChamilo
{
public function up(Schema $schema)
{
$data = [
'course' => 'last_visit',
'course' => 'last_edit',
'course' => 'creation_date',
'course' => 'expiration_date',
'notification' => 'sent_at',
'sequence_value' => 'success_date',
'sequence_value' => 'available_start_date',
'sequence_value' => 'available_end_date',
'session_rel_user' => 'moved_at',
'track_e_course_access' => 'logout_course_date',
'track_e_exercises' => 'expired_time_control',
'track_e_login' => 'logout_date',
'user_api_key' => 'created_date',
'user_api_key' => 'validity_start_date',
'user_api_key' => 'validity_end_date',
'user_rel_user' => 'last_edit',
'c_attendance_sheet_log' => 'calendar_date_value',
'c_forum_post' => 'post_date',
'c_forum_thread' => 'thread_date',
'c_forum_thread' => 'thread_close_date',
'c_forum_thread_qualify' => 'qualify_time',
'c_forum_thread_qualify_log' => 'qualify_time',
'c_userinfo_content' => 'edition_time',
];
foreach ($data as $table => $field) {
$this->addSql("ALTER TABLE $table CHANGE $field $field DATETIME");
$this->addSql("UPDATE $table SET $field = NULL WHERE TO_DAYS(STR_TO_DATE($field, \"%Y-%m-%d %T\")) IS NULL");
}
}
public function down(Schema $schema)
{
}
}

@ -344,14 +344,6 @@ if (count($sessions) > 0) {
}
}
if ($session_item['access_start_date'] == '0000-00-00') {
$session_item['access_start_date'] = null;
}
if ($session_item['access_end_date'] == '0000-00-00') {
$session_item['access_end_date'] = null;
}
$dates = array_filter(
array($session_item['access_start_date'], $session_item['access_end_date'])
);

@ -178,13 +178,13 @@ switch ($action) {
}
// Checking LP publicated and expired_on dates
if (!empty($lp_item['publicated_on']) && $lp_item['publicated_on'] != '0000-00-00 00:00:00') {
if (!empty($lp_item['publicated_on'])) {
if ($now < api_strtotime($lp_item['publicated_on'], 'UTC')) {
continue;
}
}
if (!empty($lp_item['expired_on']) && $lp_item['expired_on'] != '0000-00-00 00:00:00') {
if (!empty($lp_item['expired_on'])) {
if ($now > api_strtotime($lp_item['expired_on'], 'UTC')) {
continue;
}
@ -292,7 +292,7 @@ switch ($action) {
false
);
if ($lp_item['modified_on'] == '0000-00-00 00:00:00' || empty($lp_item['modified_on'])) {
if (empty($lp_item['modified_on'])) {
$lp_date = api_get_local_time($lp_item['created_on']);
$image = 'new.gif';
$label = get_lang('LearnpathAdded');
@ -313,7 +313,7 @@ switch ($action) {
}
// Checking LP publicated and expired_on dates
if (!empty($lp_item['publicated_on']) && $lp_item['publicated_on'] != '0000-00-00 00:00:00') {
if (!empty($lp_item['publicated_on'])) {
$week_data = date('Y', api_strtotime($lp_item['publicated_on'], 'UTC')).' - '.get_week_from_day($lp_item['publicated_on']);
if ($now < api_strtotime($lp_item['publicated_on'], 'UTC')) {
continue;
@ -322,7 +322,7 @@ switch ($action) {
$week_data = '';
}
if (!empty($lp_item['expired_on']) && $lp_item['expired_on'] != '0000-00-00 00:00:00') {
if (!empty($lp_item['expired_on'])) {
if ($now > api_strtotime($lp_item['expired_on'], 'UTC')) {
continue;
}
@ -426,7 +426,7 @@ switch ($action) {
$session_id,
false
);
if ($lp_item['modified_on'] == '0000-00-00 00:00:00' || empty($lp_item['modified_on'])) {
if (empty($lp_item['modified_on'])) {
$lp_date = api_get_local_time($lp_item['created_on']);
$image = 'new.gif';
$label = get_lang('LearnpathAdded');
@ -446,12 +446,12 @@ switch ($action) {
}
//Checking LP publicated and expired_on dates
if (!empty($lp_item['publicated_on']) && $lp_item['publicated_on'] != '0000-00-00 00:00:00') {
if (!empty($lp_item['publicated_on'])) {
if ($now < api_strtotime($lp_item['publicated_on'], 'UTC')) {
continue;
}
}
if (!empty($lp_item['expired_on']) && $lp_item['expired_on'] != '0000-00-00 00:00:00') {
if (!empty($lp_item['expired_on'])) {
if ($now > api_strtotime($lp_item['expired_on'], 'UTC')) {
continue;
}

@ -1024,11 +1024,11 @@ switch ($action) {
$count_users_in_session = count(SessionManager::get_users_by_session($session['id'], 0));
$session_date = array();
if (!empty($session['access_start_date']) && $session['access_start_date'] != '0000-00-00') {
if (!empty($session['access_start_date'])) {
$session_date[] = get_lang('From').' '.api_format_date($session['access_start_date'], DATE_FORMAT_SHORT);
}
if (!empty($session['access_end_date']) && $session['access_end_date'] != '0000-00-00') {
if (!empty($session['access_end_date'])) {
$session_date[] = get_lang('Until').' '.api_format_date($session['access_end_date'], DATE_FORMAT_SHORT);
}

@ -2048,19 +2048,7 @@ function api_get_session_name($session_id = 0) {
*/
function api_get_session_info($session_id)
{
$data = array();
if (!empty($session_id)) {
$session_id = intval($session_id);
$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
$sql = "SELECT * FROM $tbl_session WHERE id = $session_id";
$result = Database::query($sql);
if (Database::num_rows($result)>0) {
$data = Database::fetch_array($result, 'ASSOC');
}
}
return $data;
return SessionManager::fetch($session_id);
}
/**

@ -1959,8 +1959,9 @@ class Attendance
*/
public function getAttendanceLogin($startDate, $endDate)
{
if (empty($startDate) || $startDate == '0000-00-00' ||
empty($endDate) || $endDate == '0000-00-00'
if (
empty($startDate) || $startDate == '0000-00-00' || $startDate == '0000-00-00 00:00:00' ||
empty($endDate) || $endDate == '0000-00-00' || $endDate == '0000-00-00 00:00:00'
) {
return false;
}

@ -4141,7 +4141,10 @@ class CourseManager
$session = api_get_session_info($course_info['id_session']);
$session_category_id = CourseManager::get_session_category_id_by_session_id($course_info['id_session']);
$session['category'] = $sessioncoach['name'];
if ($session['access_start_date'] == '0000-00-00') {
if (
$session['access_start_date'] == '0000-00-00 00:00:00' || empty($session['access_start_date']) ||
$session['access_start_date'] == '0000-00-00'
) {
//$session['dates'] = get_lang('WithoutTimeLimits');
$session['dates'] = '';
if (api_get_setting('show_session_coach') === 'true') {

@ -1555,6 +1555,10 @@ class Display
$session['dates'] = '';
if (
(
$session_info['access_end_date'] == '0000-00-00 00:00:00' &&
$session_info['access_start_date'] == '0000-00-00 00:00:00'
) ||
(
$session_info['access_end_date'] == '0000-00-00' &&
$session_info['access_start_date'] == '0000-00-00'

@ -4,6 +4,7 @@
use Chamilo\CoreBundle\Entity\SessionRelCourseRelUser;
use \ExtraField as ExtraFieldModel;
use Chamilo\CoreBundle\Entity\ExtraField;
use Chamilo\CoreBundle\Entity\Session;
/**
* Class SessionManager
@ -35,17 +36,48 @@ class SessionManager
*/
public static function fetch($id)
{
$t = Database::get_main_table(TABLE_MAIN_SESSION);
if ($id != strval(intval($id))) {
return array();
}
$s = "SELECT * FROM $t WHERE id = $id";
$r = Database::query($s);
if (Database::num_rows($r) != 1) {
return array();
$em = Database::getManager();
/** @var Session $session */
$session = $em->find('ChamiloCoreBundle:Session', $id);
if (!$session) {
return [];
}
return Database::fetch_array($r, 'ASSOC');
return [
'id' => $session->getId(),
'id_coach' => $session->getGeneralCoach() ? $session->getGeneralCoach()->getId() : null,
'session_category_id' => $session->getCategory() ? $session->getCategory()->getId() : null,
'name' => $session->getName(),
'description' => $session->getDescription(),
'show_description' => $session->getShowDescription(),
'duration' => $session->getDuration(),
'nbr_courses' => $session->getNbrCourses(),
'nbr_users' => $session->getNbrUsers(),
'nbr_classes' => $session->getNbrClasses(),
'session_admin_id' => $session->getSessionAdminId(),
'visibility' => $session->getVisibility(),
'promotion_id' => $session->getPromotionId(),
'display_start_date' => $session->getDisplayStartDate()
? $session->getDisplayStartDate()->format('Y-m-d H:i:s')
: null,
'display_end_date' => $session->getDisplayEndDate()
? $session->getDisplayEndDate()->format('Y-m-d H:i:s')
: null,
'access_start_date' => $session->getAccessStartDate()
? $session->getAccessStartDate()->format('Y-m-d H:i:s')
: null,
'access_end_date' => $session->getAccessEndDate()
? $session->getAccessEndDate()->format('Y-m-d H:i:s')
: null,
'coach_access_start_date' => $session->getCoachAccessStartDate()
? $session->getCoachAccessStartDate()->format('Y-m-d H:i:s')
: null,
'coach_access_end_date' => $session->getCoachAccessEndDate()
? $session->getCoachAccessEndDate()->format('Y-m-d H:i:s')
: null,
'send_subscription_notification' => $session->getSendSubscriptionNotification()
];
}
/**
@ -3077,6 +3109,7 @@ class SessionManager
/**
* Get sessions followed by human resources manager
* @param int $userId
* @param int $status Optional
* @param int $start
* @param int $limit
* @param bool $getCount
@ -3219,6 +3252,36 @@ class SessionManager
$row['image'] = $imgPath;
}
if ($row['display_start_date'] == '0000-00-00 00:00:00' || $row['display_start_date'] == '0000-00-00') {
$row['display_start_date'] = null;
}
if ($row['display_end_date'] == '0000-00-00 00:00:00' || $row['display_end_date'] == '0000-00-00') {
$row['display_end_date'] = null;
}
if ($row['access_start_date'] == '0000-00-00 00:00:00' || $row['access_start_date'] == '0000-00-00') {
$row['access_start_date'] = null;
}
if ($row['access_end_date'] == '0000-00-00 00:00:00' || $row['access_end_date'] == '0000-00-00') {
$row['access_end_date'] = null;
}
if (
$row['coach_access_start_date'] == '0000-00-00 00:00:00' ||
$row['coach_access_start_date'] == '0000-00-00'
) {
$row['coach_access_start_date'] = null;
}
if (
$row['coach_access_end_date'] == '0000-00-00 00:00:00' ||
$row['coach_access_end_date'] == '0000-00-00'
) {
$row['coach_access_end_date'] = null;
}
$sessions[$row['id']] = $row;
}
@ -7569,7 +7632,7 @@ class SessionManager
$res = Database::query($sql);
while ($data = Database::fetch_assoc($res)) {
if (self::isSessionDateOkForCoach($data['session_id'])) {
if (api_get_session_visibility($data['session_id'])) {
if (!isset($listResCourseSession[$data['id']])) {
$listResCourseSession[$data['id']] = array();
}
@ -7580,46 +7643,6 @@ class SessionManager
return $listResCourseSession;
}
/**
* Return true if coach is allowed to access this session
* @param int $sessionId
* @return bool
*/
public static function isSessionDateOkForCoach($sessionId)
{
return api_get_session_visibility($sessionId);
/*
$listSessionInfo = api_get_session_info($sessionId);
$dateStart = $listSessionInfo['date_start'];
$dateEnd = $listSessionInfo['date_end'];
$nbDaysAccessBeforeBeginning = $listSessionInfo['nb_days_access_before_beginning'];
$nbDaysAccessAfterEnd = $listSessionInfo['nb_days_access_after_end'];
// no start date
if ($dateStart == '0000-00-00') {
return true;
}
$now = time();
$dateStartForCoach = api_strtotime($dateStart.' 00:00:00') - ($nbDaysAccessBeforeBeginning * 86400);
$dateEndForCoach = api_strtotime($dateEnd.' 00:00:00') + ($nbDaysAccessAfterEnd * 86400);
if ($dateEnd == '0000-00-00') {
// start date but no end date
if ($dateStartForCoach <= $now) {
return true;
}
} else {
// start date and end date
if ($dateStartForCoach <= $now && $now <= $dateEndForCoach) {
return true;
}
}
return false;*/
}
/**
* Return an associative array 'id_course' => [id_session1, id_session2...]
* where course id_course is in sessions id_session1, id_session2
@ -7641,7 +7664,7 @@ class SessionManager
$sessionId = $data['id'];
$listCoursesInSession = self::getCoursesInSession($sessionId);
foreach ($listCoursesInSession as $i => $courseId) {
if (self::isSessionDateOkForCoach($sessionId)) {
if (api_get_session_visibility($sessionId)) {
if (!isset($listResCourseSession[$courseId])) {
$listResCourseSession[$courseId] = array();
}

@ -3257,12 +3257,16 @@ class Tracking
$sessions = [];
while ($row = Database::fetch_array($rs)) {
if ($row['access_start_date'] == '0000-00-00 00:00:00') {
$row['access_start_date'] = null;
}
$sessions[$row['id']] = $row;
}
if (!empty($sessions)) {
foreach ($sessions as & $session) {
if ($session['access_start_date'] == '0000-00-00 00:00:00' || empty($session['access_start_date'])
if (empty($session['access_start_date'])
) {
$session['status'] = get_lang('SessionActive');
}

@ -2491,54 +2491,47 @@ class UserManager
$ignore_visibility_for_admins = false,
$ignoreTimeLimit = false
) {
// Database Table Definitions
$tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION);
$tbl_session_course_user = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$tbl_session_category = Database :: get_main_table(TABLE_MAIN_SESSION_CATEGORY);
if ($user_id != strval(intval($user_id))) {
return array();
}
// Get the list of sessions per user
$now = api_get_utc_datetime();
$sql = "SELECT DISTINCT
session.id,
session.name,
session.access_start_date,
session.access_end_date,
session_category_id,
session_category.name as session_category_name,
session_category.date_start session_category_date_start,
session_category.date_end session_category_date_end,
coach_access_start_date,
coach_access_end_date
FROM $tbl_session as session
LEFT JOIN $tbl_session_category session_category
ON (session_category_id = session_category.id)
LEFT JOIN $tbl_session_course_user as session_rel_course_user
ON (session_rel_course_user.session_id = session.id)
WHERE (
session_rel_course_user.user_id = $user_id OR
session.id_coach = $user_id
)
ORDER BY session_category_name, name";
$result = Database::query($sql);
$categories = array();
if (Database::num_rows($result) > 0) {
while ($row = Database::fetch_array($result, 'ASSOC')) {
$now = new DateTime('now', new DateTimeZone('UTC'));
$dql = "
SELECT DISTINCT
S.id,
S.name,
S.accessStartDate AS access_start_date,
S.accessEndDate AS access_end_date,
SC.id AS session_category_id,
SC.name AS session_category_name,
SC.dateStart AS session_category_date_start,
SC.dateEnd AS session_category_date_end,
S.coachAccessStartDate AS coach_access_start_date,
S.coachAccessEndDate AS coach_access_end_date
FROM ChamiloCoreBundle:Session AS S
LEFT JOIN ChamiloCoreBundle:SessionCategory AS SC WITH S.category = SC
LEFT JOIN ChamiloCoreBundle:SessionRelCourseRelUser AS SCU WITH SCU.session = S
WHERE SCU.user = :user OR S.generalCoach = :user
ORDER BY SC.name, S.name";
$sessionData = Database::getManager()
->createQuery($dql)
->setParameters(['user' => $user_id])
->getResult();
$categories = [];
foreach ($sessionData as $row) {
// User portal filters:
if ($ignoreTimeLimit === false) {
if ($is_time_over) {
// History
if (empty($row['access_end_date']) || $row['access_end_date'] == '0000-00-00 00:00:00') {
if (empty($row['access_end_date'])) {
continue;
}
if (isset($row['access_end_date'])) {
if (!empty($row['access_end_date'])) {
if ($row['access_end_date'] > $now) {
continue;
}
@ -2550,7 +2543,6 @@ class UserManager
// Teachers can access the session depending in the access_coach date
} else {
if (isset($row['access_end_date']) &&
($row['access_end_date'] != '0000-00-00 00:00:00') &&
!empty($row['access_end_date'])
) {
if ($row['access_end_date'] <= $now) {
@ -2564,8 +2556,12 @@ class UserManager
$categories[$row['session_category_id']]['session_category'] = array(
'id' => $row['session_category_id'],
'name' => $row['session_category_name'],
'date_start' => $row['session_category_date_start'],
'date_start' => $row['session_category_date_start']
? $row['session_category_date_start']->format('Y-m-d H:i:s')
: null,
'date_end' => $row['session_category_date_end']
? $row['session_category_date_end']->format('Y-m-d H:i:s')
: null
);
$session_id = $row['id'];
@ -2628,14 +2624,21 @@ class UserManager
$categories[$row['session_category_id']]['sessions'][$row['id']] = array(
'session_name' => $row['name'],
'session_id' => $row['id'],
'access_start_date' => $row['access_start_date'],
'access_end_date' => $row['access_end_date'],
'coach_access_start_date' => $row['coach_access_start_date'],
'coach_access_end_date' => $row['coach_access_end_date'],
'access_start_date' => $row['access_start_date']
? $row['access_start_date']->format('Y-m-d H:i:s')
: null,
'access_end_date' => $row['access_end_date']
? $row['access_end_date']->format('Y-m-d H:i:s')
: null,
'coach_access_start_date' => $row['coach_access_start_date']
? $row['coach_access_start_date']->format('Y-m-d H:i:s')
: null,
'coach_access_end_date' => $row['coach_access_end_date']
? $row['coach_access_end_date']->format('Y-m-d H:i:s')
: null,
'courses' => $courseList
);
}
}
return $categories;
}

@ -1209,7 +1209,7 @@ class IndexManager
$is_coach_course = api_is_coach($session_id, $course['real_id']);
$allowed_time = 0;
$allowedEndTime = true;
if (!empty($date_session_start) && $date_session_start != '0000-00-00 00:00:00') {
if (!empty($date_session_start)) {
if ($is_coach_course) {
$allowed_time = api_strtotime($coachAccessStartDate);
} else {
@ -1217,7 +1217,7 @@ class IndexManager
}
if (!isset($_GET['history'])) {
if (!empty($date_session_end) && $date_session_end != '0000-00-00 00:00:00') {
if (!empty($date_session_end)) {
$endSessionToTms = api_strtotime($date_session_end);
if ($session_now > $endSessionToTms) {
$allowedEndTime = false;
@ -1339,11 +1339,11 @@ class IndexManager
$allowedEndTime = true;
if ($is_coach_course) {
if ($date_session_start != '0000-00-00 00:00:00') {
if (!empty($date_session_start)) {
$allowed_time = api_strtotime($coachAccessStartDate);
}
if (!isset($_GET['history'])) {
if ($date_session_end != '0000-00-00 00:00:00') {
if (!empty($date_session_end)) {
$endSessionToTms = api_strtotime($date_session_end);
if ($session_now > $endSessionToTms) {
$allowedEndTime = false;
@ -1414,9 +1414,7 @@ class IndexManager
if (
!empty($session_category_start_date) &&
$session_category_start_date != '0000-00-00' &&
!empty($session_category_end_date) &&
$session_category_end_date != '0000-00-00'
!empty($session_category_end_date)
) {
$categoryParams['subtitle'] = sprintf(
get_lang('FromDateXToDateY'),
@ -1425,15 +1423,13 @@ class IndexManager
);
} else {
if (
!empty($session_category_start_date) &&
$session_category_start_date != '0000-00-00'
!empty($session_category_start_date)
) {
$categoryParams['subtitle'] = get_lang('From') . ' ' . $session_category_start_date;
}
if (
!empty($session_category_end_date) &&
$session_category_end_date != '0000-00-00'
!empty($session_category_end_date)
) {
$categoryParams['subtitle'] = get_lang('Until') . ' ' . $session_category_end_date;
}

@ -708,23 +708,17 @@ class Rest extends WebService
$timeLimits = false;
//This is an old LP (from a migration 1.8.7) so we do nothing
if (
(empty($lpDetails['created_on']) || $lpDetails['created_on'] == '0000-00-00 00:00:00') &&
(empty($lpDetails['modified_on']) || $lpDetails['modified_on'] == '0000-00-00 00:00:00')
) {
if (empty($lpDetails['created_on']) && empty($lpDetails['modified_on'])) {
$timeLimits = false;
}
//Checking if expired_on is ON
if ($lpDetails['expired_on'] != '' && $lpDetails['expired_on'] != '0000-00-00 00:00:00') {
if (!empty($lpDetails['expired_on'])) {
$timeLimits = true;
}
if ($timeLimits) {
if (
!empty($lpDetails['publicated_on']) && $lpDetails['publicated_on'] != '0000-00-00 00:00:00' &&
!empty($lpDetails['expired_on']) && $lpDetails['expired_on'] != '0000-00-00 00:00:00'
) {
if (!empty($lpDetails['publicated_on']) && !empty($lpDetails['expired_on'])) {
$startTime = api_strtotime($lpDetails['publicated_on'], 'UTC');
$endTime = api_strtotime($lpDetails['expired_on'], 'UTC');
$now = time();

@ -1,6 +1,8 @@
<?php
/* For licensing terms, see /license.txt */
use Chamilo\CourseBundle\Entity\CLp;
/**
* Class LearnpathList
* This class is only a learning path list container with several practical methods for sorting the list and
@ -66,9 +68,9 @@ class LearnpathList
$session_id = api_get_session_id();
}
$condition_session = api_get_session_condition($session_id, true, true);
$condition_session = api_get_session_condition($session_id, true, true, 'Lp.sessionId');
$order = "ORDER BY display_order ASC, name ASC";
$order = "ORDER BY Lp.displayOrder ASC, Lp.name ASC";
if (isset($order_by)) {
$order = Database::parse_conditions(array('order' => $order_by));
}
@ -78,10 +80,10 @@ class LearnpathList
if ($check_publication_dates) {
$time_conditions = " AND (
(publicated_on <> '' AND publicated_on < '$now' AND expired_on <> '' AND expired_on > '$now') OR
(publicated_on <> '' AND publicated_on < '$now' AND expired_on IS NULL) OR
(publicated_on IS NULL AND expired_on <> '' AND expired_on > '$now') OR
(publicated_on IS NULL AND expired_on IS NULL ))
(LP.publicatedOn IS NOT NULL AND LP.publicatedOn < '$now' AND Lp.expiredOn IS NOT NULL AND Lp.expiredOn > '$now') OR
(LP.publicatedOn IS NOT NULL AND LP.publicatedOn < '$now' AND Lp.expiredOn IS NULL) OR
(LP.publicatedOn IS NULL AND Lp.expiredOn IS NOT NULL AND Lp.expiredOn > '$now') OR
(LP.publicatedOn IS NULL AND Lp.expiredOn IS NULL ))
";
}
@ -89,28 +91,34 @@ class LearnpathList
if ($ignoreCategoryFilter == false) {
if (!empty($categoryId)) {
$categoryId = intval($categoryId);
$categoryFilter = " AND category_id = $categoryId";
$categoryFilter = " AND Lp.categoryId = $categoryId";
} else {
$categoryFilter = " AND (category_id = 0 OR category_id IS NULL) ";
$categoryFilter = " AND (Lp.categoryId = 0 OR Lp.categoryId IS NULL) ";
}
}
$sql = "SELECT * FROM $lp_table
$dql = "SELECT Lp FROM ChamiloCourseBundle:CLp as Lp
WHERE
c_id = $course_id
Lp.cId = $course_id
$time_conditions
$condition_session
$categoryFilter
$order
";
$res = Database::query($sql);
$learningPaths = Database::getManager()
->createQuery($dql)
->getResult();
$names = array();
while ($row = Database::fetch_array($res,'ASSOC')) {
/** @var CLp $row */
foreach ($learningPaths as $row) {
// Use domesticate here instead of Database::escape_string because
// it prevents ' to be slashed and the input (done by learnpath.class.php::toggle_visibility())
// is done using domesticate()
$myname = domesticate($row['name']);
$mylink = 'lp/lp_controller.php?action=view&lp_id='.$row['id'].'&id_session='.$session_id;
$myname = domesticate($row->getName());
$mylink = 'lp/lp_controller.php?action=view&lp_id=' . $row->getIid() . '&id_session='.$session_id;
$sql2 = "SELECT * FROM $tbl_tool
WHERE
@ -133,62 +141,38 @@ class LearnpathList
$vis = api_get_item_visibility(
api_get_course_info($course_code),
'learnpath',
$row['id'],
$row->getIid(),
$session_id
);
if (!empty($row['created_on'])) {
$row['created_on'] = $row['created_on'];
} else {
$row['created_on'] = '';
}
if (!empty($row['modified_on'])) {
$row['modified_on'] = $row['modified_on'];
} else {
$row['modified_on'] = '';
}
if (!empty($row['publicated_on'])) {
$row['publicated_on'] = $row['publicated_on'];
} else {
$row['publicated_on'] = '';
}
if (!empty($row['expired_on'])) {
$row['expired_on'] = $row['expired_on'];
} else {
$row['expired_on'] = '';
}
$this->list[$row['id']] = array(
'lp_type' => $row['lp_type'],
'lp_session' => $row['session_id'],
'lp_name' => stripslashes($row['name']),
'lp_desc' => stripslashes($row['description']),
'lp_path' => $row['path'],
'lp_view_mode' => $row['default_view_mod'],
'lp_force_commit' => $row['force_commit'],
'lp_maker' => stripslashes($row['content_maker']),
'lp_proximity' => $row['content_local'],
$this->list[$row->getIid()] = array(
'lp_type' => $row->getLpType(),
'lp_session' => $row->getSessionId(),
'lp_name' => stripslashes($row->getName()),
'lp_desc' => stripslashes($row->getDescription()),
'lp_path' => $row->getPath(),
'lp_view_mode' => $row->getDefaultViewMod(),
'lp_force_commit' => $row->getForceCommit(),
'lp_maker' => stripslashes($row->getContentMaker()),
'lp_proximity' => $row->getContentLocal(),
'lp_encoding' => api_get_system_encoding(),
'lp_visibility' => $vis,
'lp_published' => $pub,
'lp_prevent_reinit' => $row['prevent_reinit'],
'seriousgame_mode' => $row['seriousgame_mode'],
'lp_scorm_debug' => $row['debug'],
'lp_display_order' => $row['display_order'],
'lp_preview_image' => stripslashes($row['preview_image']),
'autolaunch' => $row['autolaunch'],
'session_id' => $row['session_id'],
'created_on' => $row['created_on'],
'modified_on' => $row['modified_on'],
'publicated_on' => $row['publicated_on'],
'expired_on' => $row['expired_on'],
'lp_prevent_reinit' => $row->getPreventReinit(),
'seriousgame_mode' => $row->getSeriousgameMode(),
'lp_scorm_debug' => $row->getDebug(),
'lp_display_order' => $row->getDisplayOrder(),
'lp_preview_image' => stripslashes($row->getPreviewImage()),
'autolaunch' => $row->getAutolaunch(),
'session_id' => $row->getSessionId(),
'created_on' => $row->getCreatedOn()->format('Y-m-d H:i:s'),
'modified_on' => $row->getModifiedOn()->format('Y-m-d H:i:s'),
'publicated_on' => $row->getPublicatedOn() ? $row->getPublicatedOn()->format('Y-m-d H:i:s') : null,
'expired_on' => $row->getExpiredOn() ? $row->getExpiredOn()->format('Y-m-d H:i:s') : null,
//'category_id' => $row['category_id'],
'subscribe_users' => $row['subscribe_users'],
'subscribe_users' => $row->getSubscribeUsers(),
);
$names[$row['name']] = $row['id'];
$names[$row->getName()] = $row->getIid();
}
$this->alpha_list = asort($names);

@ -660,11 +660,11 @@ if (!empty($student_id)) {
$session_info = api_get_session_info($sId);
if ($session_info) {
$session_name = $session_info['name'];
if (!empty($session_info['access_start_date']) && $session_info['access_start_date'] != '0000-00-00') {
if (!empty($session_info['access_start_date'])) {
$access_start_date = api_format_date($session_info['access_start_date'], DATE_FORMAT_SHORT);
}
if (!empty($session_info['access_end_date']) && $session_info['access_end_date'] != '0000-00-00') {
if (!empty($session_info['access_end_date'])) {
$access_end_date = api_format_date($session_info['access_end_date'], DATE_FORMAT_SHORT);
}

@ -183,7 +183,7 @@ if (!empty($course_list)) {
$icons = '';
foreach ($lp_list as $item) {
if ($item['modified_on'] == '0000-00-00 00:00:00' || empty($item['modified_on'])) {
if (empty($item['modified_on'])) {
$lp_date_original = $item['created_on'];
$image = 'new.gif';
$label = get_lang('LearnpathAdded');
@ -383,11 +383,11 @@ if (!empty($new_exercises)) {
$start = $end = $start_only = $end_only ='';
if (!empty($session_info['access_start_date']) && $session_info['access_start_date'] != '0000-00-00') {
if (!empty($session_info['access_start_date'])) {
$start = api_convert_and_format_date($session_info['access_start_date'], DATE_FORMAT_SHORT);
$start_only = get_lang('From').' '.$session_info['access_start_date'];
}
if (!empty($session_info['access_start_date']) && $session_info['access_end_date'] != '0000-00-00') {
if (!empty($session_info['access_start_date'])) {
$end = api_convert_and_format_date($session_info['access_end_date'], DATE_FORMAT_SHORT);
$end_only = get_lang('Until').' '.$session_info['access_end_date'];
}

@ -94,7 +94,7 @@ if (!empty($return)) {
<a href="javascript://" onclick="if(document.getElementById('options').style.display == 'none'){document.getElementById('options').style.display = 'block';}else{document.getElementById('options').style.display = 'none';}"><?php echo get_lang('EditTimeLimit') ?></a>
</div>
</div>
<div style="display: <?php if($formSent && ($coachAccessStartDate!='0000-00-00 00:00:00' || $coachAccessEndDate!='0000-00-00 00:00:00')) echo 'block'; else echo 'none'; ?>;" id="options">
<div style="display: <?php echo $formSent ? 'display' : 'none'; ?>;" id="options">
<div class="form-group">
<label class="col-sm-3 control-label"><?php echo get_lang('DateStart') ?></label>
<div class="col-sm-6">

@ -38,7 +38,7 @@
{% endif %}
</tr>
{% if pdf_session_info.access_start_date != '' and pdf_session_info.access_end_date != '0000-00-00' %}
{% if pdf_session_info.access_start_date != '' and pdf_session_info.access_end_date not empty %}
<tr>
<td>
<strong>{{ "PeriodToDisplay" | get_lang }}:</strong> {{ "FromDateXToDateY"| get_lang | format(pdf_session_info.access_start_date, pdf_session_info.access_end_date ) }}

@ -69,7 +69,7 @@ $sql = "SELECT 1
ON session_course_user.session_id = session.id
AND ((access_start_date <= '$now'
AND access_end_date >= '$now')
OR (access_start_date='0000-00-00' AND access_end_date='0000-00-00'))
OR (access_start_date IS NULL AND access_end_date IS NULL))
WHERE session_id='".api_get_session_id()."' AND c_id = $courseId";
//echo $sql;
$result=Database::query($sql);

@ -63,7 +63,7 @@ $sql = "SELECT 1
ON session_course_user.session_id = session.id
AND ((access_start_date <= '$now'
AND access_end_date >= '$now')
OR (access_start_date='0000-00-00' AND access_end_date='0000-00-00'))
OR (access_start_date IS NULL AND access_end_date IS NULL))
WHERE session_id='" . api_get_session_id() . "' AND c_id = $courseId";
//echo $sql;
$result = Database::query($sql);

@ -484,7 +484,7 @@ if ($allowTutors == 'true') {
<?php echo $link_add_type_unique ?>&nbsp;|&nbsp;<?php echo $link_add_type_multiple ?>&nbsp;|&nbsp;<?php echo $link_add_group; ?>
</div>
<form name="formulaire" method="post" action="<?php echo api_get_self(); ?>?page=<?php echo $page; ?>&id_session=<?php echo $id_session; ?><?php if(!empty($_GET['add'])) echo '&add=true' ; ?>" style="margin:0px;" <?php if($ajax_search){echo ' onsubmit="valide();"';}?>>
<?php echo '<legend>'.$tool_name.' ('.$session_info['name'].') </legend>'; ?>
<?php echo '<legend>'.$tool_name.' (' . $session->getName() . ') </legend>'; ?>
<?php
if ($add_type === 'multiple') {
if (is_array($extra_field_list)) {

@ -1,5 +1,7 @@
<?php
use Chamilo\UserBundle\Entity\User;
require_once(dirname(__FILE__).'/../inc/global.inc.php');
$libpath = api_get_path(LIBRARY_PATH);
@ -148,25 +150,22 @@ class WSCM
//lookup the user in the main database
$user_table = Database::get_main_table(TABLE_MAIN_USER);
$sql = "SELECT user_id, username, password, auth_source, active, expiration_date
FROM $user_table
WHERE username = '".trim(addslashes($login))."'";
$result = Database::query($sql);
if (Database::num_rows($result) > 0) {
$uData = Database::fetch_array($result);
$userRepo = UserManager::getRepository();
/** @var User $uData */
$uData = $userRepo->findOneBy([
'username' => trim(addslashes($login))
]);
if ($uData['auth_source'] == PLATFORM_AUTH_SOURCE) {
if ($uData) {
if ($uData->getAuthSource() == PLATFORM_AUTH_SOURCE) {
$password = trim(stripslashes($password));
// Check the user's password
if ($password == $uData['password'] AND (trim($login) == $uData['username'])) {
if ($password == $uData->getPassword() AND (trim($login) == $uData->getUsername())) {
// Check if the account is active (not locked)
if ($uData['active'] == '1') {
if ($uData->getActive()) {
// Check if the expiration date has not been reached
if ($uData['expiration_date'] > date(
'Y-m-d H:i:s'
) OR $uData['expiration_date'] == '0000-00-00 00:00:00'
) {
$now = new DateTime();
if ($uData->getExpirationDate() > $now OR !$uData->getExpirationDate()) {
return "valid";
} else {
return get_lang('AccountExpired');

@ -108,8 +108,19 @@ class BlockSession extends Block
$session_id = intval($session['id']);
$title = $session['name'];
if ($session['access_start_date'] != '0000-00-00 00:00:00' && $session['access_end_date'] != '0000-00-00 00:00:00') {
$date = get_lang('From').' '.api_convert_and_format_date($session['access_start_date'], DATE_FORMAT_SHORT, date_default_timezone_get()).' '.get_lang('To').' '.api_convert_and_format_date($session['access_end_date'], DATE_FORMAT_SHORT, date_default_timezone_get());
if (!empty($session['access_start_date'])) {
$dateFrom = api_convert_and_format_date(
$session['access_start_date'],
DATE_FORMAT_SHORT,
date_default_timezone_get()
);
$dateUntil = api_convert_and_format_date(
$session['access_end_date'],
DATE_FORMAT_SHORT,
date_default_timezone_get()
);
$date = vsprintf(get_lang('FromDateXToDateY'), [$dateFrom, $dateUntil]);
} else {
$date = ' - ';
}

@ -8,6 +8,7 @@ use Chamilo\UserBundle\Entity\User;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Criteria;
use Doctrine\ORM\Mapping as ORM;
use Chamilo\CoreBundle\Entity\SessionCategory;
//use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
//use Gedmo\Mapping\Annotation as Gedmo;
@ -811,8 +812,7 @@ class Session
/**
* Get id
*
* @return integer
* @return User
*/
public function getGeneralCoach()
{
@ -829,6 +829,7 @@ class Session
/**
* @return mixed
* @return SessionCategory
*/
public function getCategory()
{

@ -1008,4 +1008,21 @@ class CLp
return $this;
}
/**
* Get iid
* @return int
*/
public function getIid()
{
return $this->iid;
}
/**
* Get subscribeUsers
* @return int
*/
public function getSubscribeUsers()
{
return $this->subscribeUsers;
}
}

Loading…
Cancel
Save