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

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

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

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

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

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

Loading…
Cancel
Save