Use iid instead of id, fix queries, fix templates, fix PHP errors.

pull/3741/head
Julio Montoya 5 years ago
parent 929166e211
commit d1ef56810b
  1. 4
      public/main/attendance/index.php
  2. 16
      public/main/dropbox/dropbox_functions.inc.php
  3. 2
      public/main/exercise/exercise.class.php
  4. 2
      public/main/forum/forumfunction.inc.php
  5. 2
      public/main/forum/index.php
  6. 2
      public/main/forum/viewforumcategory.php
  7. 38
      public/main/gradebook/lib/be/attendancelink.class.php
  8. 31
      public/main/inc/lib/exercise.lib.php
  9. 27
      public/main/inc/lib/groupmanager.lib.php
  10. 21
      public/main/inc/lib/myspace.lib.php
  11. 4
      public/main/inc/lib/tracking.lib.php
  12. 3
      public/main/mySpace/admin_view.php
  13. 44
      public/main/template/default/my_space/partials/tracking_user_overview.html.twig
  14. 4
      public/main/tracking/courseLog.php
  15. 6
      public/main/tracking/course_log_tools.php

@ -548,7 +548,7 @@ switch ($action) {
$groupList = GroupManager::get_group_list(null, null, 1);
$groupIdList = ['--'];
foreach ($groupList as $group) {
$groupIdList[$group['id']] = $group['name'];
$groupIdList[$group['iid']] = $group['name'];
}
// calendar add form
@ -717,7 +717,7 @@ switch ($action) {
$groupList = GroupManager::get_group_list();
$groupIdList = ['--'];
foreach ($groupList as $group) {
$groupIdList[$group['id']] = $group['name'];
$groupIdList[$group['iid']] = $group['name'];
}
$content .= Display::page_subheader(get_lang('Calendar list of attendances'));

@ -386,7 +386,7 @@ function store_addcategory()
];
$id = Database::insert(Database::get_course_table(TABLE_DROPBOX_CATEGORY), $params);
if ($id) {
$sql = "UPDATE ".Database::get_course_table(TABLE_DROPBOX_CATEGORY)." SET cat_id = iid
$sql = "UPDATE ".Database::get_course_table(TABLE_DROPBOX_CATEGORY)." SET cat_id = iid
WHERE iid = $id";
Database::query($sql);
}
@ -685,14 +685,14 @@ function display_add_form($viewReceivedCategory, $viewSentCategory, $view, $id =
*/
$allowGroups = api_get_setting('dropbox_allow_group');
if (($dropbox_person->isCourseTutor || $dropbox_person->isCourseAdmin)
&& 'true' == $allowGroups || 'true' == $allowStudentToStudent
&& 'true' == $allowGroups || 'true' === $allowStudentToStudent
) {
$complete_group_list_for_dropbox = GroupManager::get_group_list(null, $course_info);
if (count($complete_group_list_for_dropbox) > 0) {
foreach ($complete_group_list_for_dropbox as $current_group) {
if ($current_group['number_of_members'] > 0) {
$options['group_'.$current_group['id']] = 'G: '.$current_group['name'].' - '.$current_group['number_of_members'].' '.get_lang('Users');
$options['group_'.$current_group['iid']] = 'G: '.$current_group['name'].' - '.$current_group['number_of_members'].' '.get_lang('Users');
}
}
}
@ -1217,13 +1217,13 @@ function user_can_download_file($id, $user_id)
$id = (int) $id;
$user_id = (int) $user_id;
$sql = "SELECT file_id
$sql = "SELECT file_id
FROM ".Database::get_course_table(TABLE_DROPBOX_PERSON)."
WHERE c_id = $course_id AND user_id = $user_id AND file_id = ".$id;
$result = Database::query($sql);
$number_users_who_see_file = Database::num_rows($result);
$sql = "SELECT file_id
$sql = "SELECT file_id
FROM ".Database::get_course_table(TABLE_DROPBOX_POST)."
WHERE c_id = $course_id AND dest_user_id = $user_id AND file_id = ".$id;
$result = Database::query($sql);
@ -1239,13 +1239,13 @@ function check_if_file_exist($id)
{
$id = (int) $id;
$course_id = api_get_course_int_id();
$sql = "SELECT file_id
$sql = "SELECT file_id
FROM ".Database::get_course_table(TABLE_DROPBOX_PERSON)."
WHERE c_id = $course_id AND file_id = ".$id;
$result = Database::query($sql);
$number_users_who_see_file = Database::num_rows($result);
$sql = "SELECT file_id
$sql = "SELECT file_id
FROM ".Database::get_course_table(TABLE_DROPBOX_POST)."
WHERE c_id = $course_id AND file_id = ".$id;
$result = Database::query($sql);
@ -1449,7 +1449,7 @@ function get_total_number_feedback()
$course_id = api_get_course_int_id();
$sql = "SELECT COUNT(feedback_id) AS total, file_id
FROM ".Database::get_course_table(TABLE_DROPBOX_FEEDBACK)."
WHERE c_id = $course_id
WHERE c_id = $course_id
GROUP BY file_id";
$result = Database::query($sql);
$return = [];

@ -8966,7 +8966,7 @@ class Exercise
$lp_blocked = null;
if (true == $exercise->exercise_was_added_in_lp) {
$lp_blocked = Display::div(
get_lang('AddedToLPCannotBeAccessed'),
get_lang('This exercise has been included in a learning path, so it cannot be accessed by students directly from here. If you want to put the same exercise available through the exercises tool, please make a copy of the current exercise using the copy icon.'),
['class' => 'lp_content_type_label']
);
}

@ -418,7 +418,7 @@ function forumForm(CForumForum $forum = null, $lp_id)
$groups = GroupManager::get_group_list();
$groups_titles[0] = get_lang('Not a group forum');
foreach ($groups as $key => $value) {
$groups_titles[$value['id']] = $value['name'];
$groups_titles[$value['iid']] = $value['name'];
}
$form->addElement('select', 'group_forum', get_lang('For Group'), $groups_titles);

@ -140,7 +140,7 @@ if (!api_is_anonymous()) {
$all_groups = GroupManager::get_group_list();
if (is_array($all_groups)) {
foreach ($all_groups as $group) {
$all_groups[$group['id']] = $group;
$all_groups[$group['iid']] = $group;
}
}
}

@ -155,7 +155,7 @@ if ('add' !== $action) {
$groups = GroupManager::get_group_list();
if (is_array($groups)) {
foreach ($groups as $group) {
$groups[$group['id']] = $group;
$groups[$group['iid']] = $group;
}
}

@ -13,11 +13,7 @@ use Chamilo\CourseBundle\Entity\CAttendance;
class AttendanceLink extends AbstractLink
{
private $attendance_table = null;
private $itemprop_table = null;
/**
* Constructor.
*/
public function __construct()
{
parent::__construct();
@ -64,7 +60,7 @@ class AttendanceLink extends AbstractLink
att.active = 1 AND
att.session_id = '.$sessionId;
$result = Database::query($sql);*/
$cats = [];
/** @var CAttendance $link */
foreach ($links as $link) {
$title = $link->getAttendanceQualifyTitle();
@ -75,7 +71,7 @@ class AttendanceLink extends AbstractLink
}
}
return isset($cats) ? $cats : [];
return $cats;
}
/**
@ -108,12 +104,10 @@ class AttendanceLink extends AbstractLink
$sessionId = $this->get_session_id();
// get attendance qualify max
$sql = 'SELECT att.attendance_qualify_max
FROM '.$this->get_attendance_table().' att
$sql = 'SELECT attendance_qualify_max
FROM '.$this->get_attendance_table().'
WHERE
att.c_id = '.$this->course_id.' AND
att.iid = '.$this->get_ref_id().' AND
att.session_id = '.$sessionId;
iid = '.$this->get_ref_id();
$query = Database::query($sql);
$attendance = Database::fetch_array($query, 'ASSOC');
@ -223,8 +217,8 @@ class AttendanceLink extends AbstractLink
*/
public function is_valid_link()
{
$sql = 'SELECT count(att.iid) FROM '.$this->get_attendance_table().' att
WHERE att.c_id = '.$this->course_id.' AND att.iid = '.$this->get_ref_id();
$sql = 'SELECT count(iid) FROM '.$this->get_attendance_table().'
WHERE iid = '.$this->get_ref_id();
$result = Database::query($sql);
$number = Database::fetch_row($result);
@ -235,14 +229,15 @@ class AttendanceLink extends AbstractLink
{
// it was extracts the attendance id
$sessionId = $this->get_session_id();
$sql = 'SELECT * FROM '.$this->get_attendance_table().' att
WHERE att.c_id = '.$this->course_id.' AND att.iid = '.$this->get_ref_id();
$sql = 'SELECT * FROM '.$this->get_attendance_table().'
WHERE iid = '.$this->get_ref_id();
$result = Database::query($sql);
$row = Database::fetch_array($result, 'ASSOC');
$attendance_id = $row['id'];
$url = api_get_path(WEB_PATH).'main/attendance/index.php?action=attendance_sheet_list&gradebook=view&attendance_id='.$attendance_id.'&'.api_get_cidreq_params($this->getCourseId(), $sessionId);
$id = $row['iid'];
return $url;
return api_get_path(WEB_CODE_PATH).
'attendance/index.php?action=attendance_sheet_list&gradebook=view&attendance_id='.$id.'&'.
api_get_cidreq_params($this->getCourseId(), $sessionId);
}
/**
@ -268,12 +263,9 @@ class AttendanceLink extends AbstractLink
*/
private function get_attendance_data()
{
$tbl_name = $this->get_attendance_table();
if ('' == $tbl_name) {
return false;
} elseif (!isset($this->attendance_data)) {
if (!isset($this->attendance_data)) {
$sql = 'SELECT * FROM '.$this->get_attendance_table().' att
WHERE att.c_id = '.$this->course_id.' AND att.iid = '.$this->get_ref_id();
WHERE att.iid = '.$this->get_ref_id();
$query = Database::query($sql);
$this->attendance_data = Database::fetch_array($query);
}

@ -4185,28 +4185,21 @@ EOT;
{
// check the default value of option
$tabSelected = [$default => " selected='selected' "];
$res = "";
$res .= "<select name='$name' id='$name' onchange='".$onchange."' >";
$res .= "<option value='-1'".$tabSelected["-1"].">-- ".get_lang(
'AllGroups'
)." --</option>";
$res .= "<option value='0'".$tabSelected["0"].">- ".get_lang(
'NotInAGroup'
)." -</option>";
$tabGroups = GroupManager::get_group_list();
$res = "<select name='$name' id='$name' onchange='".$onchange."' >";
$res .= "<option value='-1'".$tabSelected["-1"].">-- ".get_lang('AllGroups')." --</option>";
$res .= "<option value='0'".$tabSelected["0"].">- ".get_lang('NotInAGroup')." -</option>";
$groups = GroupManager::get_group_list();
$currentCatId = 0;
$countGroups = count($tabGroups);
$countGroups = count($groups);
for ($i = 0; $i < $countGroups; $i++) {
$tabCategory = GroupManager::get_category_from_group(
$tabGroups[$i]['iid']
);
if ($tabCategory["id"] != $currentCatId) {
$res .= "<option value='-1' disabled='disabled'>".$tabCategory["title"]."</option>";
$currentCatId = $tabCategory["id"];
$category = GroupManager::get_category_from_group($groups[$i]['iid']);
if ($category['id'] != $currentCatId) {
$res .= "<option value='-1' disabled='disabled'>".$category['title']."</option>";
$currentCatId = $category['id'];
}
$res .= "<option ".$tabSelected[$tabGroups[$i]["id"]]."style='margin-left:40px' value='".
$tabGroups[$i]["id"]."'>".
$tabGroups[$i]["name"].
$res .= "<option ".$tabSelected[$groups[$i]['id']]."style='margin-left:40px' value='".
$groups[$i]["iid"]."'>".
$groups[$i]["name"].
"</option>";
}
$res .= "</select>";

@ -1250,12 +1250,12 @@ class GroupManager
$group_user_table = Database::get_course_table(TABLE_GROUP_USER);
$groupTable = Database::get_course_table(TABLE_GROUP);
$user_table = Database::get_main_table(TABLE_MAIN_USER);
$group_id = intval($group_id);
$group_id = (int) $group_id;
if (empty($courseId)) {
$courseId = api_get_course_int_id();
} else {
$courseId = intval($courseId);
$courseId = (int) $courseId;
}
$select = ' SELECT u.id, firstname, lastname ';
@ -1265,12 +1265,12 @@ class GroupManager
$sql = "$select
FROM $group_user_table gu
INNER JOIN $groupTable g
ON (gu.group_id = g.id and g.c_id = gu.c_id)
ON (gu.group_id = g.iid and g.c_id = gu.c_id)
INNER JOIN $user_table u
ON (u.id = gu.user_id)
WHERE
gu.c_id = $courseId AND
g.id = $group_id";
g.iid = $group_id";
if (!empty($column) && !empty($direction)) {
$column = Database::escape_string($column, null, false);
@ -1386,7 +1386,7 @@ class GroupManager
->createQuery("
SELECT u.id FROM ChamiloCoreBundle:User u
INNER JOIN ChamiloCourseBundle:CGroupRelUser gu
WITH u.id = gu.user
WITH u.id = gu.user
INNER JOIN ChamiloCourseBundle:CGroup g
WITH gu.group = g.iid
WHERE g.iid = :group
@ -2840,7 +2840,6 @@ class GroupManager
}
$groups = self::get_group_list();
foreach ($groups as $groupInfo) {
$groupId = $groupInfo['iid'];
$categoryTitle = null;
@ -3020,30 +3019,28 @@ class GroupManager
} else {
$groups = self::get_group_list($category['id']);
}
$content .= '<ul>';
if (!empty($groups)) {
foreach ($groups as $group) {
$content .= self::groupOverview($group, $url);
}
}
$content .= '</ul>';
}
$content .= '</ul>';
}
}
}
// Check groups with no categories.
$groups = self::get_group_list(null, api_get_course_info(), null, api_get_session_id(), false, true);
if (!empty($groups)) {
$content .= '<h2>'.get_lang('NoCategorySelected').'</h2>';
$content .= '<ul>';
$content .= '<ul>';
foreach ($groups as $group) {
if (!empty($group['category_id'])) {
continue;
}
$content .= self::groupOverview($group, $url);
}
$content .= '</ul>';
$content .= self::groupOverview($group, $url);
}
$content .= '</ul>';
}
return $content;

@ -217,7 +217,7 @@ class MySpace
FROM '.$table.'
WHERE
user_id = '.$userId.' AND
c_id = '.$courseId.'
c_id = '.$courseId.'
'.$sessionCondition.'
ORDER BY login_course_date ASC';
$rs = Database::query($sql);
@ -343,7 +343,8 @@ class MySpace
'code' => $courseInfo['code'],
'real_id' => $courseInfo['real_id'],
'title' => $courseInfo['title'],
'category' => $courseInfo['categoryName'],
'category' => '',
//'category' => $courseInfo['categoryName'], // @todo show categories instead of 1 category
'image_small' => $courseInfo['course_image'],
'image_large' => $courseInfo['course_image_large'],
'time_spent' => api_time_to_hms(Tracking::get_time_spent_on_the_course($user_id, $courseId)),
@ -2310,8 +2311,8 @@ class MySpace
$sql = "SELECT score, max_score
FROM $table
WHERE
c_id = $courseId AND
WHERE
c_id = $courseId AND
exe_user_id = $user_id";
$session_id = (int) $session_id;
@ -3219,7 +3220,7 @@ class MySpace
[
'placeholder' => get_lang('All'),
'url_function' => "
function () {
function () {
var params = $.param({
a: 'search_user_by_course',
session_id: $('#access_overview_session_id').val(),
@ -3433,9 +3434,9 @@ class MySpace
$start_date = Database::escape_string($start_date);
$end_date = Database::escape_string($end_date);
$sessionCondition = api_get_session_condition($sessionId);
$sql = "SELECT
login_course_date,
logout_course_date,
$sql = "SELECT
login_course_date,
logout_course_date,
TIMESTAMPDIFF(SECOND, login_course_date, logout_course_date) duration,
user_ip
FROM $table
@ -3499,8 +3500,8 @@ class MySpace
FROM $table
WHERE
user_id = $user_id AND
c_id = $courseId $stringStartDate $stringEndDate
$sessionCondition
c_id = $courseId $stringStartDate $stringEndDate
$sessionCondition
ORDER BY login_course_date ASC";
$rs = Database::query($sql);

@ -53,7 +53,7 @@ class Tracking
return null;
}
$courseInfo = api_get_course_info_by_id($course_id);
if ('count' == $type) {
if ('count' === $type) {
return GroupManager::get_group_list(null, $courseInfo, null, $sessionId, true);
}
@ -61,7 +61,7 @@ class Tracking
$parsedResult = [];
if (!empty($groupList)) {
foreach ($groupList as $group) {
$users = GroupManager::get_users($group['id'], true, null, null, false, $courseInfo['real_id']);
$users = GroupManager::get_users($group['iid'], true, null, null, false, $courseInfo['real_id']);
$time = 0;
$avg_student_score = 0;
$avg_student_progress = 0;

@ -22,9 +22,8 @@ if (isset($_POST['display']) && $display == null) {
$htmlHeadXtra[] = api_get_jqgrid_js();
$htmlHeadXtra[] = '<script
type="text/javascript"
src="'.api_get_path(WEB_PUBLIC_PATH).'assets/jquery.easy-pie-chart/dist/jquery.easypiechart.js"></script>
<script type="text/javascript">
<script>
// show hide a student based on BT#17648
function showHideStudent(el){
if($("#"+el).hasClass("hidden")){

@ -7,7 +7,9 @@
<img src="{{ item.avatar }}" class="img-circle">
</div>
<div class="user">
<a title="{{ item.complete_name }}" href="{{ _p.web }}main/social/profile.php?u={{ item.id }}" class="name">
<a title="{{ item.complete_name }}"
href="{{ url('legacy_main', {name:'social/profile.php'}) }}?u={{ item.id }}"
class="name">
{{ item.complete_name }}
</a>
<div class="username">{{ item.username }}</div>
@ -17,44 +19,63 @@
{% for course in item.course %}
<div id="course-{{ course.real_id }}" class="course-item">
<div class="course-info">
<h5><a title="{{ 'Course'|get_lang }} - {{ course.title }}" href="{{ _p.web ~ 'main/mySpace/myStudents.php?details=true' ~ _p.web_cid_query ~ '&course=' ~ course.code ~ '&origin=tracking_course&id_session=0&student=' ~ item.id }}" target="_blank">{{ course.title }}</a></h5>
<h5>
<a title="{{ 'Course'|get_lang }} - {{ course.title }}"
href="{{
url('legacy_main', {name:'mySpace/myStudents.php'}) ~ '?details=true&course=' ~ course.code ~ '&origin=tracking_course&id_session=0&student=' ~ item.id }}"
target="_blank"
>
{{ course.title }}
</a>
</h5>
<span class="code">{{ course.code }}</span>
</div>
<div class="box time-spent" data-toggle="tooltip" data-placement="top" title="{{ 'CourseTimeInfo'|get_lang }}">
<div class="box time-spent" data-toggle="tooltip" data-placement="top"
title="{{ 'CourseTimeInfo'|get_lang }}">
<i class="fa fa-clock-o" aria-hidden="true"></i>
{{ course.time_spent }}
</div>
<div class="box" data-toggle="tooltip" data-placement="top" title="{{ 'AvgStudentsProgress'|get_lang }}">
<div class="box" data-toggle="tooltip" data-placement="top"
title="{{ 'AvgStudentsProgress'|get_lang }}">
<span class="kt-badge student-progress">
{{ course.student_progress }} %
</span>
</div>
<div class="box" data-toggle="tooltip" data-placement="top" title="{{ 'AvgCourseScore'|get_lang }}">
<div class="box" data-toggle="tooltip" data-placement="top"
title="{{ 'AvgCourseScore'|get_lang }}">
<span class="kt-badge student-score">
{{ course.student_score }}
</span>
</div>
<div class="box" data-toggle="tooltip" data-placement="top" title="{{ 'TotalNumberOfMessages'|get_lang }}">
<div class="box" data-toggle="tooltip" data-placement="top"
title="{{ 'TotalNumberOfMessages'|get_lang }}">
<span class="kt-badge student-message">
{{ course.student_message }}
</span>
</div>
<div class="box" data-toggle="tooltip" data-placement="top" title="{{ 'TotalNumberOfAssignments'|get_lang }}">
<div class="box" data-toggle="tooltip" data-placement="top"
title="{{ 'TotalNumberOfAssignments'|get_lang }}">
<span class="kt-badge student-assignments">
{{ course.student_assignments }}
</span>
</div>
<div class="box">
<span class="kt-badge student-exercises" data-toggle="tooltip" data-placement="top" title="{{ 'TotalExercisesScoreObtained'|get_lang }}">
<span class="kt-badge student-exercises" data-toggle="tooltip"
data-placement="top"
title="{{ 'TotalExercisesScoreObtained'|get_lang }}">
{{ course.student_assignments }}
</span>
</div>
<div class="box">
<span class="kt-badge questions-answered" data-toggle="tooltip" data-placement="top" title="{{ 'TotalExercisesAnswered'|get_lang }}">
<span class="kt-badge questions-answered" data-toggle="tooltip"
data-placement="top"
title="{{ 'TotalExercisesAnswered'|get_lang }}">
{{ course.questions_answered }}
</span>
</div>
<div class="box box-date" data-toggle="tooltip" data-placement="top" title="{{ 'LatestLogin'|get_lang }}">
<div class="box box-date" data-toggle="tooltip"
data-placement="top"
title="{{ 'LatestLogin'|get_lang }}">
{% if course.last_connection %}
<span class="kt-badge last-connection">
{{ course.last_connection }}
@ -65,11 +86,10 @@
{% endfor %}
{% else %}
<div class="alert alert-warning" role="alert">
{{ 'HaveNoCourse'|get_lang }}
{{ 'No course available'|trans }}
</div>
{% endif %}
</div>
</div>
</div>
</div>

@ -329,7 +329,6 @@ $hideReports = api_get_configuration_value('hide_course_report_graph');
$conditions = [];
$groupList = GroupManager::get_group_list(null, $courseInfo, 1, $sessionId);
$class = new UserGroup();
//$options['where'] = [' usergroup.course_id = ? ' => $courseId];
//$classes = $class->getUserGroupInCourse($options);
@ -355,8 +354,7 @@ if ($nbStudents > 0) {
$select->addOptGroup($groupIdList, get_lang('Class'));
$groupIdList = [];
foreach ($groupList as $group) {
$groupIdList[] = ['text' => $group['name'], 'value' => 'group_'.$group['id']];
//$groupIdList['group_'.$group['id']] = $group['name'];
$groupIdList[] = ['text' => $group['name'], 'value' => 'group_'.$group['iid']];
}
$select->addOptGroup($groupIdList, get_lang('Group'));
$formClass->addButtonSearch(get_lang('Search'));

@ -239,19 +239,19 @@ if (!empty($groupId)) {
$filterByUsers = $student_ids;
}
$count_number_of_forums_by_course = Tracking:: count_number_of_forums_by_course(
$count_number_of_forums_by_course = Tracking::count_number_of_forums_by_course(
$course_code,
$session_id,
$groupId
);
$count_number_of_threads_by_course = Tracking:: count_number_of_threads_by_course(
$count_number_of_threads_by_course = Tracking::count_number_of_threads_by_course(
$course_code,
$session_id,
$groupId
);
$count_number_of_posts_by_course = Tracking:: count_number_of_posts_by_course(
$count_number_of_posts_by_course = Tracking::count_number_of_posts_by_course(
$course_code,
$session_id,
$groupId

Loading…
Cancel
Save