Fix queries, use entities, use iid

pull/3844/head
Julio Montoya 5 years ago
parent 02ce2245c5
commit 1677d713e4
  1. 19
      public/main/gradebook/lib/be/category.class.php
  2. 6
      public/main/gradebook/lib/be/surveylink.class.php
  3. 4
      public/main/inc/lib/sessionmanager.lib.php
  4. 19
      public/main/lp/learnpath.class.php
  5. 2
      public/main/survey/fillsurvey.php
  6. 6
      public/main/survey/survey.lib.php
  7. 15
      public/main/survey/surveyUtil.class.php

@ -2743,24 +2743,31 @@ class Category implements GradebookItem
/**
* Calculate the current score on a gradebook category for a user.
*
* @param int $userId The user id
* @param GradebookCategory $category
*
* @return float The score
*/
private static function calculateCurrentScore($userId, $category)
private static function calculateCurrentScore(int $userId, GradebookCategory $category)
{
if (null === $category) {
return 0;
}
$categoryList = self::load($category->getId());
$category = $categoryList[0] ?? null;
if (null === $category) {
return 0;
}
$courseEvaluations = $category->get_evaluations($userId, true);
$courseLinks = $category->get_links($userId, true);
$evaluationsAndLinks = array_merge($courseEvaluations, $courseLinks);
$count = count($evaluationsAndLinks);
if (empty($count)) {
return 0;
}
$categoryScore = 0;
for ($i = 0; $i < count($evaluationsAndLinks); $i++) {
for ($i = 0; $i < $count; $i++) {
/** @var AbstractLink $item */
$item = $evaluationsAndLinks[$i];
// Set session id from category

@ -117,14 +117,13 @@ class SurveyLink extends AbstractLink
$courseId = $this->getCourseId();
$tbl_survey = Database::get_course_table(TABLE_SURVEY);
$tbl_survey_invitation = Database::get_course_table(TABLE_SURVEY_INVITATION);
$table = Database::get_course_table(TABLE_SURVEY_INVITATION);
$sql = "SELECT
COUNT(i.answered)
FROM $tbl_survey AS s
INNER JOIN $tbl_survey_invitation AS i
INNER JOIN $table AS i
ON s.code = i.survey_code
WHERE
s.c_id = $courseId AND
i.c_id = $courseId AND
s.iid = $ref_id AND
i.session_id = $sessionId";
@ -160,7 +159,6 @@ class SurveyLink extends AbstractLink
JOIN $tbl_survey_invitation AS i
ON s.code = i.survey_code
WHERE
s.c_id = $courseId AND
i.c_id = $courseId AND
s.iid = $ref_id AND
i.session_id = $sessionId

@ -1822,7 +1822,7 @@ class SessionManager
return false;
}
if (self::allowed($sessionId) && !$from_ws) {
if (self::allowed($sessionEntity) && !$from_ws) {
$sessionAdminId = $sessionEntity->getSessionAdmin()->getId();
if ($sessionAdminId != $userId && !api_is_platform_admin()) {
api_not_allowed(true);
@ -1860,7 +1860,7 @@ class SessionManager
WHERE session_id = $sessionId";
Database::query($sql);
Database::query("DELETE FROM $tbl_student_publication WHERE session_id = $sessionId");
//Database::query("DELETE FROM $tbl_student_publication WHERE session_id = $sessionId");
Database::query("DELETE FROM $tbl_session_rel_course WHERE session_id = $sessionId");
Database::query("DELETE FROM $tbl_session_rel_course_rel_user WHERE session_id = $sessionId");
Database::query("DELETE FROM $tbl_session_rel_user WHERE session_id = $sessionId");

@ -942,17 +942,17 @@ class learnpath
// Delete lp item id.
foreach ($this->items as $lpItemId => $dummy) {
$sql = "DELETE FROM $lp_item_view
WHERE c_id = $course_id AND lp_item_id = '".$lpItemId."'";
WHERE lp_item_id = '".$lpItemId."'";
Database::query($sql);
}
// Proposed by Christophe (nickname: clefevre)
$sql = "DELETE FROM $lp_item
WHERE c_id = $course_id AND lp_id = ".$this->lp_id;
WHERE lp_id = ".$this->lp_id;
Database::query($sql);
$sql = "DELETE FROM $lp_view
WHERE c_id = $course_id AND lp_id = ".$this->lp_id;
WHERE lp_id = ".$this->lp_id;
Database::query($sql);
//self::toggleVisibility($this->lp_id, 0);
@ -999,8 +999,7 @@ class learnpath
$table = Database::get_course_table(TABLE_LP_REL_USERGROUP);
$sql = "DELETE FROM $table
WHERE
lp_id = {$this->lp_id} AND
c_id = $course_id ";
lp_id = {$this->lp_id}";
Database::query($sql);
/*$tbl_tool = Database::get_course_table(TABLE_TOOL_LIST);
@ -1052,12 +1051,12 @@ class learnpath
}
$lp_item = Database::get_course_table(TABLE_LP_ITEM);
$sql = "SELECT * FROM $lp_item
WHERE c_id = $course_id AND parent_item_id = $id";
WHERE parent_item_id = $id";
$res = Database::query($sql);
while ($row = Database::fetch_array($res)) {
$num += $this->delete_children_items($row['iid']);
$sql = "DELETE FROM $lp_item
WHERE c_id = $course_id AND iid = ".$row['iid'];
WHERE iid = ".$row['iid'];
Database::query($sql);
$num++;
}
@ -1110,7 +1109,6 @@ class learnpath
// Now update all following items with new display order.
$sql_all = "UPDATE $lp_item SET display_order = display_order-1
WHERE
c_id = $course_id AND
lp_id = $lp AND
parent_item_id = $parent AND
display_order > $display";
@ -1118,12 +1116,12 @@ class learnpath
//Removing prerequisites since the item will not longer exist
$sql_all = "UPDATE $lp_item SET prerequisite = ''
WHERE c_id = $course_id AND prerequisite = '$id'";
WHERE prerequisite = '$id'";
Database::query($sql_all);
$sql = "UPDATE $lp_item
SET previous_item_id = ".$this->getLastInFirstLevel()."
WHERE c_id = $course_id AND lp_id = {$this->lp_id} AND item_type = '".TOOL_LP_FINAL_ITEM."'";
WHERE lp_id = {$this->lp_id} AND item_type = '".TOOL_LP_FINAL_ITEM."'";
Database::query($sql);
// Remove from search engine if enabled.
@ -5185,6 +5183,7 @@ class learnpath
*/
public function update_display_order()
{
return;
$course_id = api_get_course_int_id();
$table = Database::get_course_table(TABLE_LP_MAIN);
$sql = "SELECT * FROM $table

@ -176,7 +176,7 @@ if (!isset($_POST['finish_survey']) &&
$logInfo = [
'tool' => TOOL_SURVEY,
'tool_id' => $survey_invitation['survey_invitation_id'],
'tool_id' => $survey_invitation['iid'],
'action' => 'invitationcode',
'action_details' => $invitationcode,
];

@ -69,14 +69,14 @@ class SurveyManager
$table_survey_invitation = Database::get_course_table(TABLE_SURVEY_INVITATION);
$table_survey = Database::get_course_table(TABLE_SURVEY);
$sql = "SELECT survey_invitation_id, survey_code
$sql = "SELECT iid, survey_code
FROM $table_survey_invitation WHERE user = '$user_id' AND c_id <> 0 ";
$result = Database::query($sql);
while ($row = Database::fetch_array($result, 'ASSOC')) {
$survey_invitation_id = $row['survey_invitation_id'];
$survey_invitation_id = $row['iid'];
$survey_code = $row['survey_code'];
$sql2 = "DELETE FROM $table_survey_invitation
WHERE survey_invitation_id = '$survey_invitation_id' AND c_id <> 0";
WHERE iid = '$survey_invitation_id' AND c_id <> 0";
if (Database::query($sql2)) {
$sql3 = "UPDATE $table_survey SET
invited = invited-1

@ -2545,8 +2545,8 @@ class SurveyUtil
(!empty($params['user']) || !empty($params['group_id'])) &&
!empty($params['survey_code'])
) {
if (!isset($params['survey_invitation_id'])) {
$params['survey_invitation_id'] = 0;
if (!isset($params['iid'])) {
$params['iid'] = 0;
}
if (!isset($params['answered'])) {
$params['answered'] = 0;
@ -2554,15 +2554,8 @@ class SurveyUtil
if (!isset($params['group_id'])) {
$params['group_id'] = 0;
}
$insertId = Database::insert($table, $params);
if ($insertId) {
$sql = "UPDATE $table
SET survey_invitation_id = $insertId
WHERE iid = $insertId";
Database::query($sql);
}
return $insertId;
return Database::insert($table, $params);
}
return false;
@ -2584,7 +2577,7 @@ class SurveyUtil
$groupId = (int) $groupId;
$surveyCode = Database::escape_string($surveyCode);
$sql = "SELECT survey_invitation_id FROM $table
$sql = "SELECT iid FROM $table
WHERE
c_id = $courseId AND
session_id = $sessionId AND

Loading…
Cancel
Save