Merge branch '1.11.x' of github.com:chamilo/chamilo-lms into 1.11.x

pull/4448/head
Yannick Warnier 3 years ago
commit 2220dc5748
  1. 5
      main/course_info/about.php
  2. 13
      main/inc/lib/api.lib.php
  3. 28
      main/inc/lib/table_sort.class.php
  4. 1
      main/lang/english/trad4all.inc.php
  5. 1
      main/lang/french/trad4all.inc.php
  6. 1
      main/lang/spanish/trad4all.inc.php
  7. 3
      main/session/resume_session.php
  8. 90
      main/template/default/course_home/about.tpl
  9. 2
      main/user/user_export.php

@ -183,6 +183,11 @@ foreach ($requirements as $sequence) {
}
}
if ($hasRequirements) {
$sequenceList = $sequenceResourceRepo->checkRequirementsForUser($requirements, SequenceResource::COURSE_TYPE, $userId);
$allowSubscribe = $sequenceResourceRepo->checkSequenceAreCompleted($sequenceList);
}
$template = new Template($course->getTitle(), true, true, false, true, false);
$template->assign('course', $courseItem);

@ -1328,22 +1328,22 @@ function api_protect_course_script($print_headers = false, $allow_session_admins
* @param bool Whether to allow session admins as well
* @param bool Whether to allow HR directors as well
* @param string An optional message (already passed through get_lang)
* @param bool Whether to allow session coach as well
*
* @return bool True if user is allowed, false otherwise.
* The function also outputs an error message in case not allowed
*
* @author Roan Embrechts (original author)
*/
function api_protect_admin_script($allow_sessions_admins = false, $allow_drh = false, $message = null)
function api_protect_admin_script($allow_sessions_admins = false, $allow_drh = false, $message = null, $allow_session_coach = false)
{
if (!api_is_platform_admin($allow_sessions_admins, $allow_drh)) {
api_not_allowed(true, $message);
return false;
if (!($allow_session_coach && api_is_coach())) {
api_not_allowed(true, $message);
return false;
}
}
api_block_inactive_user();
return true;
}
@ -3369,7 +3369,6 @@ function api_is_coach($session_id = 0, $courseId = null, $check_student_view = t
$sessionIsCoach = Database::store_result($result);
}
}
return count($sessionIsCoach) > 0;
}

@ -73,12 +73,14 @@ class TableSort
switch ($type) {
case SORT_NUMERIC:
$function = function ($a, $b) use ($column, $compareOperator) {
$result = strip_tags($a[$column]) <= strip_tags($b[$column]);
if ('>' === $compareOperator) {
$result = strip_tags($a[$column]) > strip_tags($b[$column]);
$colA = strip_tags($a[$column]);
$colB = strip_tags($b[$column]);
if ('>' === $compareOperator && $colA > $colB) {
return 1;
}
return $result;
return $colA < $colB ? -1 : 0;
};
break;
case SORT_IMAGE:
@ -86,12 +88,12 @@ class TableSort
$result = api_strnatcmp(
api_strtolower(strip_tags($a[$column], "<img>")),
api_strtolower(strip_tags($b[$column], "<img>"))
) <= 0;
);
if ('>' === $compareOperator) {
$result = api_strnatcmp(
api_strtolower(strip_tags($a[$column], "<img>")),
api_strtolower(strip_tags($b[$column], "<img>"))
) > 0;
);
}
return $result;
@ -100,12 +102,14 @@ class TableSort
break;
case SORT_DATE:
$function = function ($a, $b) use ($column, $compareOperator) {
$result = strtotime(strip_tags($a[$column])) <= strtotime(strip_tags($b[$column]));
if ('>' === $compareOperator) {
$result = strtotime(strip_tags($a[$column])) > strtotime(strip_tags($b[$column]));
$dateA = strtotime(strip_tags($a[$column]));
$dateB = strtotime(strip_tags($b[$column]));
if ('>' === $compareOperator && $dateA > $dateB) {
return 1;
}
return $result;
return $dateA < $dateB ? -1 : 0;
};
break;
case SORT_STRING:
@ -114,12 +118,12 @@ class TableSort
$result = api_strnatcmp(
api_strtolower(strip_tags($a[$column])),
api_strtolower(strip_tags($b[$column]))
) <= 0;
);
if ('>' === $compareOperator) {
$result = api_strnatcmp(
api_strtolower(strip_tags($a[$column])),
api_strtolower(strip_tags($b[$column]))
) > 0;
);
}
return $result;

@ -5925,6 +5925,7 @@ $LowerCaseUser = "user";
$GenerateCertificates = "Generate certificates";
$ExportAllCertificatesToPDF = "Export all certificates to PDF";
$DeleteAllCertificates = "Delete all certificates";
$ClickToShowGraphs = "Click to show graphics";
$dateFormatLongNoDay = "%d %B %Y";
$dateFormatOnlyDayName = "%A";
$ReturnToCourseList = "Return to the course list";

@ -5914,6 +5914,7 @@ $LowerCaseUser = "utilisateur";
$GenerateCertificates = "Générer les certificats";
$ExportAllCertificatesToPDF = "Exporter tous les certificats à PDF";
$DeleteAllCertificates = "Supprimer tous les certificats";
$ClickToShowGraphs = "Cliquer pour charger les graphiques";
$dateFormatLongNoDay = "%d %B %Y";
$dateFormatOnlyDayName = "%A";
$ReturnToCourseList = "Retour liste de cours";

@ -5923,6 +5923,7 @@ $LowerCaseUser = "usuario";
$GenerateCertificates = "Generar certificados";
$ExportAllCertificatesToPDF = "Exportar todos los certificados a PDF";
$DeleteAllCertificates = "Eliminar todos los certificados";
$ClickToShowGraphs = "Haga clic para ver los gráficos";
$dateFormatLongNoDay = "%d de %B de %Y";
$dateFormatOnlyDayName = "%A";
$ReturnToCourseList = "Regreso a lista de cursos";

@ -8,6 +8,7 @@ use Chamilo\CoreBundle\Entity\Repository\SessionRepository;
use Chamilo\CoreBundle\Entity\SequenceResource;
use Chamilo\CoreBundle\Entity\Session;
use Chamilo\CoreBundle\Entity\SessionRelCourseRelUser;
use ChamiloSession as PHPSession;
/**
* @author Bart Mollet, Julio Montoya lot of fixes
@ -23,7 +24,7 @@ $sessionId = isset($_GET['id_session']) ? (int) $_GET['id_session'] : null;
if (empty($sessionId)) {
api_not_allowed(true);
}
PHPSession::write('id_session',$sessionId);
SessionManager::protectSession($sessionId);
$codePath = api_get_path(WEB_CODE_PATH);

@ -107,77 +107,85 @@
</div>
</div>
<div class="col-sm-4">
{% if allow_subscribe == true %}
<div class="panel panel-default">
<div class="panel-body">
{% if is_premium == false %}
<div class="session-subscribe">
{# public course (open world) #}
{% if 3 == course.visibility %}
{% if allow_subscribe == true %}
{% if is_premium == false %}
<div class="session-subscribe">
{# public course (open world) #}
{% if 3 == course.visibility %}
<a href="{{ _p.web }}courses/{{ course.code }}/index.php?id_session=0"
class="btn btn-lg btn-success btn-block">
{{ 'CourseHomepage'|get_lang }}
</a>
{% elseif _u.logged == 0 %}
{% elseif _u.logged == 0 %}
{% if 'allow_registration'|api_get_setting != 'false' %}
<a
<a
href="{{ _p.web_main ~ 'auth/inscription.php' ~ redirect_to_session }}"
class="btn btn-success btn-block btn-lg">
<i class="fa fa-pencil" aria-hidden="true"></i>
{{ 'SignUp'|get_lang }}
</a>
<i class="fa fa-pencil" aria-hidden="true"></i>
{{ 'SignUp'|get_lang }}
</a>
{% endif %}
{% elseif course.subscription %}
{% elseif course.subscription %}
<a href="{{ _p.web }}courses/{{ course.code }}/index.php?id_session=0"
class="btn btn-lg btn-success btn-block">
{{ 'CourseHomepage'|get_lang }}
</a>
{% else %}
{% else %}
<a
href="{{ _p.web }}courses/{{ course.code }}/index.php?action=subscribe&sec_token={{ token }}"
class="btn btn-lg btn-success btn-block">
href="{{ _p.web }}courses/{{ course.code }}/index.php?action=subscribe&sec_token={{ token }}"
class="btn btn-lg btn-success btn-block">
{{ 'Subscribe'|get_lang }}
</a>
{% endif %}
</div>
{% else %}
<div class="session-price">
<div class="sale-price">
{{ 'SalePrice'|get_lang }}
</div>
<div class="price-text">
{{ is_premium.total_price_formatted }}
{% endif %}
</div>
<div class="buy-box">
<a
href="{{ _p.web }}plugin/buycourses/src/process.php?i={{ is_premium.product_id }}&t={{ is_premium.product_type }}"
class="btn btn-lg btn-primary btn-block">
{{ 'BuyNow'|get_lang }}
</a>
{% else %}
<div class="session-price">
<div class="sale-price">
{{ 'SalePrice'|get_lang }}
</div>
<div class="price-text">
{{ is_premium.total_price_formatted }}
</div>
<div class="buy-box">
<a
href="{{ _p.web }}plugin/buycourses/src/process.php?i={{ is_premium.product_id }}&t={{ is_premium.product_type }}"
class="btn btn-lg btn-primary btn-block">
{{ 'BuyNow'|get_lang }}
</a>
</div>
</div>
{% endif %}
{% else %}
<div class="session-subscribe">
<button class="btn btn-lg btn-default btn-block" disabled>
{{ 'Subscribe'|get_lang }}
</button>
</div>
{% endif %}
{% if has_requirements %}
<div class="session-requirements">
<h5>{{ 'RequiredCourses'|get_lang }}</h5>
<p>
{{ subscribe_button }}
</p>
{% for sequence in sequences %}
{% if sequence.requirements %}
<p>
{{ sequence.name }} :
{% for requirement in sequence.requirements %}
<a href="{{ _p.web ~ 'course/' ~ requirement.getId ~ '/about/' }}">
{{ requirement.title | remove_xss }}
</a>
{% endfor %}
</p>
{% endif %}
{% if sequence.requirements %}
<p>
{{ sequence.name }} :
{% for requirement in sequence.requirements %}
<a href="{{ _p.web ~ 'course/' ~ requirement.getId ~ '/about/' }}">
{{ requirement.title | remove_xss }}
</a>
{% endfor %}
</p>
{% endif %}
{% endfor %}
</div>
{% endif %}
</div>
</div>
{% endif %}
{% if course.teachers and not 'course_about_teacher_name_hide'|api_get_configuration_value %}
<div class="panel panel-default">
<div class="panel-body">

@ -5,7 +5,7 @@
require_once __DIR__.'/../inc/global.inc.php';
$this_section = SECTION_COURSES;
api_protect_admin_script(true, true);
api_protect_admin_script(true, true, null, true);
$export = [];
$export['file_type'] = isset($_REQUEST['file_type']) ? $_REQUEST['file_type'] : null;

Loading…
Cancel
Save