@ -2375,7 +2375,7 @@ function api_get_session_condition(
$condition_add = $and ? " AND " : " WHERE ";
if ($with_base_content) {
$condition_session = $condition_add." ( $session_field = $session_id OR $session_field = 0) ";
$condition_session = $condition_add." ( $session_field = $session_id OR $session_field = 0 OR $session_field IS NULL ) ";
} else {
$condition_session = $condition_add." $session_field = $session_id ";
}
@ -3622,10 +3622,19 @@ function api_item_property_update(
$lastEditTypeNoFilter = $lastedit_type;
$lastedit_type = Database::escape_string($lastedit_type);
$user_id = intval($user_id);
$to_group_id = intval($to_group_id);
$to_user_id = intval($to_user_id);
$start_visible = Database::escape_string($start_visible);
$end_visible = Database::escape_string($end_visible);
$startVisible = "NULL";
if (!empty($start_visible)) {
$start_visible = Database::escape_string($start_visible);
$startVisible = "'$start_visible'";
}
$endVisible = "NULL";
if (!empty($end_visible)) {
$end_visible = Database::escape_string($end_visible);
$endVisible = "'$end_visible'";
}
$to_filter = '';
$time = api_get_utc_datetime();
@ -3644,6 +3653,7 @@ function api_item_property_update(
if (!is_null($to_user_id)) {
// $to_user_id has more priority than $to_group_id
$to_user_id = intval($to_user_id);
$to_field = 'to_user_id';
$to_value = $to_user_id;
} else {
@ -3652,6 +3662,8 @@ function api_item_property_update(
$to_value = $to_group_id;
}
$toValueCondition = empty($to_value) ? "NULL" : "'$to_value'";
// Set filters for $to_user_id and $to_group_id, with priority for $to_user_id
$condition_session = '';
if (!empty($session_id)) {
@ -3670,6 +3682,7 @@ function api_item_property_update(
if (is_null($to_user_id) & & is_null($to_group_id)) {
$to_group_id = 0;
}
if (!is_null($to_user_id)) {
// Set filter to intended user.
$to_filter = " AND to_user_id= '$to_user_id' $condition_session";
@ -3709,12 +3722,13 @@ function api_item_property_update(
$result = Database::query($sql);
} else {
$sql = "INSERT INTO $TABLE_ITEMPROPERTY (c_id, tool, ref, insert_date, insert_user_id, lastedit_date, lastedit_type, lastedit_user_id, $to_field, visibility, start_visible, end_visible, session_id)
VALUES ($course_id, '$tool','$item_id','$time', '$user_id', '$time', '$lastedit_type','$user_id', '$to_value', '$visibility', '$start_visible','$end_visible' , '$session_id')";
VALUES ($course_id, '$tool','$item_id','$time', '$user_id', '$time', '$lastedit_type','$user_id', $toValueCondition, '$visibility', $startVisible, $endVisible , '$session_id')";
$result = Database::query($sql);
$id = Database::insert_id();
$sql = "UPDATE $TABLE_ITEMPROPERTY SET id = iid WHERE iid = $id";
Database::query($sql);
if ($id) {
$sql = "UPDATE $TABLE_ITEMPROPERTY SET id = iid WHERE iid = $id";
Database::query($sql);
}
}
} else {
$sql = "UPDATE $TABLE_ITEMPROPERTY
@ -3750,9 +3764,8 @@ function api_item_property_update(
$result = Database::query($sql);
} else {
$sql = "INSERT INTO $TABLE_ITEMPROPERTY (c_id, tool, ref, insert_date, insert_user_id, lastedit_date, lastedit_type, lastedit_user_id, $to_field, visibility, start_visible, end_visible, session_id)
VALUES ($course_id, '$tool', '$item_id', '$time', '$user_id', '$time', '$lastedit_type', '$user_id', '$to_value', '$visibility', '$start_visible', '$end_visible' , '$session_id')";
VALUES ($course_id, '$tool', '$item_id', '$time', '$user_id', '$time', '$lastedit_type', '$user_id', $toValueCondition, '$visibility', $startVisible, $endVisible , '$session_id')";
$result = Database::query($sql);
$id = Database::insert_id();
if ($id) {
$sql = "UPDATE $TABLE_ITEMPROPERTY SET id = iid WHERE iid = $id";
@ -3793,12 +3806,13 @@ function api_item_property_update(
$result = Database::query($sql);
} else {
$sql = "INSERT INTO $TABLE_ITEMPROPERTY (c_id, tool, ref, insert_date, insert_user_id, lastedit_date, lastedit_type, lastedit_user_id,$to_field, visibility, start_visible, end_visible, session_id)
VALUES ($course_id, '$tool', '$item_id', '$time', '$user_id', '$time', '$lastedit_type', '$user_id', '$to_value', '$visibility', '$start_visible', '$end_visible' , '$session_id')";
VALUES ($course_id, '$tool', '$item_id', '$time', '$user_id', '$time', '$lastedit_type', '$user_id', $toValueCondition, '$visibility', $startVisible, $endVisible , '$session_id')";
$result = Database::query($sql);
$id = Database::insert_id();
$sql = "UPDATE $TABLE_ITEMPROPERTY SET id = iid WHERE iid = $id";
Database::query($sql);
if ($id) {
$sql = "UPDATE $TABLE_ITEMPROPERTY SET id = iid WHERE iid = $id";
Database::query($sql);
}
}
} else {
$sql = "UPDATE $TABLE_ITEMPROPERTY
@ -3826,17 +3840,17 @@ function api_item_property_update(
// Insert if no entries are found (can only happen in case of $lastedit_type switch is 'default').
if (Database::affected_rows($result) == 0) {
$sessionCondition = empty($session_id) ? "NULL" : "'$session_id'";
$toValueCondition = empty($to_value) ? "NULL" : "'$to_value'";
$sql = "INSERT INTO $TABLE_ITEMPROPERTY (c_id, tool,ref,insert_date,insert_user_id,lastedit_date,lastedit_type, lastedit_user_id, $to_field, visibility, start_visible, end_visible, session_id)
VALUES ($course_id, '$tool', '$item_id', '$time', '$user_id', '$time', '$lastedit_type', '$user_id', $toValueCondition, '$visibility', '$start_visible', '$end_visible' , $sessionCondition)";
VALUES ($course_id, '$tool', '$item_id', '$time', '$user_id', '$time', '$lastedit_type', '$user_id', $toValueCondition, '$visibility', $startVisible, $endVisible , $sessionCondition)";
$res = Database::query($sql);
if (!$res) {
$id = Database::insert_id();
$id = Database::insert_id();
if ($id) {
$sql = "UPDATE $TABLE_ITEMPROPERTY SET id = iid WHERE iid = $id";
Database::query($sql);
return false;
}
}
return true;
}
@ -3999,17 +4013,22 @@ function api_get_track_item_property_history($tool, $ref)
*/
function api_get_item_property_info($course_id, $tool, $ref, $session_id = 0)
{
$course_i nfo = api_get_course_info_by_id($course_id);
$courseI nfo = api_get_course_info_by_id($course_id);
if (empty($course_i nfo)) {
if (empty($courseI nfo)) {
return false;
}
$tool = Database::escape_string($tool);
$ref = intval($ref);
$course_id = $course_i nfo['real_id'];
$course_id = $courseI nfo['real_id'];
$session_id = intval($session_id);
$sessionCondition = " session_id = $session_id";
if (empty($session_id)) {
$sessionCondition = " (session_id = 0 OR session_id IS NULL) ";
}
// Definition of tables.
$table = Database::get_course_table(TABLE_ITEM_PROPERTY);
@ -4018,13 +4037,14 @@ function api_get_item_property_info($course_id, $tool, $ref, $session_id = 0)
c_id = $course_id AND
tool = '$tool' AND
ref = $ref AND
session_id = $session_id ";
$sessionCondition ";
$rs = Database::query($sql);
$row = array();
if (Database::num_rows($rs) > 0) {
$row = Database::fetch_array($rs,'ASSOC');
}
return $row;
}