Browse Source

Tutors can send announcements BT#5767

Julio Montoya 12 years ago
parent
commit
7d2e0eb283
3 changed files with 67 additions and 85 deletions
  1. 16 32
      main/announcements/announcements.php
  2. 40 29
      main/inc/lib/announcements.inc.php
  3. 11 24
      main/inc/lib/main_api.lib.php

+ 16 - 32
main/announcements/announcements.php

@@ -161,10 +161,7 @@ if (empty($_GET['origin']) or $_GET['origin'] !== 'learnpath') {
     Display::display_header($nameTools, get_lang('Announcements'));
     Display::display_header($nameTools, get_lang('Announcements'));
 }
 }
 
 
-if (api_is_allowed_to_edit(false, true) OR
-    (api_get_course_setting('allow_user_edit_announcement') && !api_is_anonymous()) OR
-    (!empty($group_id) AND GroupManager::user_has_access(api_get_user_id(), $group_id, GroupManager::GROUP_TOOL_ANNOUNCEMENT) AND GroupManager::is_tutor_of_group(api_get_user_id(), $group_id))
-) {
+if (AnnouncementManager::user_can_edit_announcement()){
     /*
     /*
       Change visibility of announcement
       Change visibility of announcement
      */
      */
@@ -178,7 +175,6 @@ if (api_is_allowed_to_edit(false, true) OR
             }
             }
             if (!api_is_course_coach() || api_is_element_in_the_session(TOOL_ANNOUNCEMENT, $_GET['id'])) {
             if (!api_is_course_coach() || api_is_element_in_the_session(TOOL_ANNOUNCEMENT, $_GET['id'])) {
                 if ($ctok == $_GET['sec_token']) {
                 if ($ctok == $_GET['sec_token']) {
-
                     AnnouncementManager::change_visibility_announcement($_course, $_GET['id']);
                     AnnouncementManager::change_visibility_announcement($_course, $_GET['id']);
                     $message = get_lang('VisibilityChanged');
                     $message = get_lang('VisibilityChanged');
                 }
                 }
@@ -527,10 +523,7 @@ $announcement_number = Database::num_rows($result);
  */
  */
 
 
 $show_actions = false;
 $show_actions = false;
-if ((api_is_allowed_to_edit(false, true) OR
-    (api_get_course_setting('allow_user_edit_announcement') && !api_is_anonymous())) OR
-    (!empty($group_id) AND GroupManager::user_has_access(api_get_user_id(), $group_id, GroupManager::GROUP_TOOL_ANNOUNCEMENT) AND GroupManager::is_tutor_of_group(api_get_user_id(), $group_id))
-) {
+if (AnnouncementManager::user_can_edit_announcement()) {
     echo '<div class="actions">';
     echo '<div class="actions">';
     if (isset($_GET['action']) && in_array($_GET['action'], array('add', 'modify', 'view'))) {
     if (isset($_GET['action']) && in_array($_GET['action'], array('add', 'modify', 'view'))) {
         echo "<a href='".api_get_self()."?".api_get_cidreq()."&origin=".(empty($_GET['origin']) ? '' : $_GET['origin'])."'>".Display::return_icon('back.png', get_lang('Back'), '', ICON_SIZE_MEDIUM)."</a>";
         echo "<a href='".api_get_self()."?".api_get_cidreq()."&origin=".(empty($_GET['origin']) ? '' : $_GET['origin'])."'>".Display::return_icon('back.png', get_lang('Back'), '', ICON_SIZE_MEDIUM)."</a>";
@@ -751,26 +744,13 @@ if ($display_form) {
   DISPLAY ANNOUNCEMENT LIST
   DISPLAY ANNOUNCEMENT LIST
  */
  */
 
 
-$course_id = api_get_course_int_id();
-
-//if ($display_announcement_list && !$surveyid) {
 if ($display_announcement_list) {
 if ($display_announcement_list) {
-    // by default we use the id of the current user. The course administrator can see the announcement of other users by using the user / group filter
-    //$user_id=$_user['user_id'];
-    if (isset($_SESSION['user'])) {
-        //$user_id=$_SESSION['user'];
-    }
-    $user_id = api_get_user_id();
 
 
-    if (isset($_SESSION['group'])) {
-        //$group_id=$_SESSION['group'];
-    }
+    $user_id = api_get_user_id();
     $group_id = api_get_group_id();
     $group_id = api_get_group_id();
 
 
     $group_memberships = GroupManager::get_group_ids($course_id, api_get_user_id());
     $group_memberships = GroupManager::get_group_ids($course_id, api_get_user_id());
 
 
-    //$is_group_member = GroupManager :: is_tutor(api_get_user_id());
-
     if (api_is_allowed_to_edit(false, true) OR (api_get_course_setting('allow_user_edit_announcement') && !api_is_anonymous())) {
     if (api_is_allowed_to_edit(false, true) OR (api_get_course_setting('allow_user_edit_announcement') && !api_is_anonymous())) {
         // A.1. you are a course admin with a USER filter
         // A.1. you are a course admin with a USER filter
         // => see only the messages of this specific user + the messages of the group (s)he is member of.
         // => see only the messages of this specific user + the messages of the group (s)he is member of.
@@ -809,7 +789,7 @@ if ($display_announcement_list) {
 						announcement.id = ip.ref
 						announcement.id = ip.ref
 						AND ip.tool='announcement'
 						AND ip.tool='announcement'
 						AND ip.visibility<>'2'
 						AND ip.visibility<>'2'
-						AND (ip.to_group_id=$group_id OR ip.to_group_id='0')
+						AND (ip.to_group_id = $group_id OR ip.to_group_id='0')
 						$condition_session
 						$condition_session
 				GROUP BY ip.ref
 				GROUP BY ip.ref
 				ORDER BY display_order DESC";
 				ORDER BY display_order DESC";
@@ -832,15 +812,16 @@ if ($display_announcement_list) {
 					GROUP BY ip.ref
 					GROUP BY ip.ref
 					ORDER BY display_order DESC";
 					ORDER BY display_order DESC";
             } else {
             } else {
-                // A.3.a you are a course admin without user or group filter and WTIHOUT studentview (= the normal course admin view)
+                // A.3.a you are a course admin without user or group filter and WITHOUT studentview (= the normal course admin view)
                 // => see all the messages of all the users and groups with editing possibilities
                 // => see all the messages of all the users and groups with editing possibilities
                 $sql = "SELECT announcement.*, ip.visibility, ip.to_group_id, ip.insert_user_id, ip.insert_date
                 $sql = "SELECT announcement.*, ip.visibility, ip.to_group_id, ip.insert_user_id, ip.insert_date
 					FROM $tbl_announcement announcement, $tbl_item_property ip
 					FROM $tbl_announcement announcement, $tbl_item_property ip
 					WHERE 	announcement.c_id = $course_id AND
 					WHERE 	announcement.c_id = $course_id AND
 							ip.c_id = $course_id AND
 							ip.c_id = $course_id AND
-							announcement.id = ip.ref
-							AND ip.tool='announcement'
-							AND (ip.visibility='0' or ip.visibility='1')
+							announcement.id = ip.ref AND
+                            ip.tool='announcement' AND
+                            (ip.visibility='0' or ip.visibility='1') AND
+                            to_group_id = 0
 							$condition_session
 							$condition_session
 					GROUP BY ip.ref
 					GROUP BY ip.ref
 					ORDER BY display_order DESC";
 					ORDER BY display_order DESC";
@@ -864,10 +845,15 @@ if ($display_announcement_list) {
                 if (api_get_group_id() == 0) {
                 if (api_get_group_id() == 0) {
                     $cond_user_id = " AND (ip.to_user_id=$user_id OR ip.to_group_id IN (0, ".implode(", ", $group_memberships).")) ";
                     $cond_user_id = " AND (ip.to_user_id=$user_id OR ip.to_group_id IN (0, ".implode(", ", $group_memberships).")) ";
                 } else {
                 } else {
-                    $cond_user_id = " AND (ip.to_user_id=$user_id OR ip.to_group_id IN (0, ".api_get_group_id()."))";
+                    $cond_user_id = " AND (ip.to_user_id = $user_id OR ip.to_group_id IN (".api_get_group_id()."))";
                 }
                 }
             }
             }
 
 
+            $visibility_condition = " ip.visibility='1'";
+            if (GroupManager::is_tutor_of_group(api_get_user_id(), $group_id)) {
+                $visibility_condition = " ip.visibility IN ('0', '1') ";
+            }
+
             $sql = "SELECT announcement.*, ip.visibility, ip.to_group_id, ip.insert_user_id, ip.insert_date
             $sql = "SELECT announcement.*, ip.visibility, ip.to_group_id, ip.insert_user_id, ip.insert_date
     				FROM $tbl_announcement announcement, $tbl_item_property ip
     				FROM $tbl_announcement announcement, $tbl_item_property ip
     				WHERE	announcement.c_id = $course_id AND
     				WHERE	announcement.c_id = $course_id AND
@@ -875,8 +861,7 @@ if ($display_announcement_list) {
 	        				announcement.id = ip.ref
 	        				announcement.id = ip.ref
 	        				AND ip.tool='announcement'
 	        				AND ip.tool='announcement'
 	        				$cond_user_id
 	        				$cond_user_id
-	        				$condition_session
-	        				AND ip.visibility='1'
+	        				$condition_session AND $visibility_condition
     				ORDER BY display_order DESC";
     				ORDER BY display_order DESC";
         } else {
         } else {
             if ($_user['user_id']) {
             if ($_user['user_id']) {
@@ -1042,7 +1027,6 @@ if ($display_announcement_list) {
         }
         }
 } // end: if ($displayAnnoucementList)
 } // end: if ($displayAnnoucementList)
 
 
-
 if (isset($_GET['action']) && $_GET['action'] == 'view') {
 if (isset($_GET['action']) && $_GET['action'] == 'view') {
     AnnouncementManager::display_announcement($announcement_id);
     AnnouncementManager::display_announcement($announcement_id);
 }
 }

+ 40 - 29
main/inc/lib/announcements.inc.php

@@ -157,28 +157,35 @@ class AnnouncementManager
             if (empty($group_list)) {
             if (empty($group_list)) {
                 $group_list[] = 0;
                 $group_list[] = 0;
             }
             }
+
+            $visibility_condition = " toolitemproperties.visibility='1'";
+            if (GroupManager::is_tutor_of_group(api_get_user_id(), api_get_group_id())) {
+                $visibility_condition = " toolitemproperties.visibility IN ('0', '1') ";
+            }
+
             if (api_get_user_id() != 0) {
             if (api_get_user_id() != 0) {
                 $sql_query = "	SELECT announcement.*, toolitemproperties.*
                 $sql_query = "	SELECT announcement.*, toolitemproperties.*
     							FROM $tbl_announcement announcement, $tbl_item_property toolitemproperties
     							FROM $tbl_announcement announcement, $tbl_item_property toolitemproperties
-    							WHERE announcement.id = toolitemproperties.ref
-    							AND announcement.id = '$announcement_id'
-    							AND toolitemproperties.tool='announcement'
-    							AND (toolitemproperties.to_user_id='".api_get_user_id()."' OR toolitemproperties.to_group_id IN ('0', '".implode("', '", $group_list)."'))
-    							AND toolitemproperties.visibility='1' AND
-    							announcement.c_id = $course_id AND
-								toolitemproperties.c_id = $course_id
+    							WHERE
+                                    announcement.id = toolitemproperties.ref  AND
+                                    announcement.id = '$announcement_id' AND
+                                    toolitemproperties.tool='announcement' AND
+                                    (toolitemproperties.to_user_id='".api_get_user_id()."' OR toolitemproperties.to_group_id IN ('0', '".implode("', '", $group_list)."')) AND
+                                    $visibility_condition AND
+                                    announcement.c_id = $course_id AND
+                                    toolitemproperties.c_id = $course_id
     							ORDER BY display_order DESC";
     							ORDER BY display_order DESC";
             } else {
             } else {
                 $sql_query = "	SELECT announcement.*, toolitemproperties.*
                 $sql_query = "	SELECT announcement.*, toolitemproperties.*
     							FROM $tbl_announcement announcement, $tbl_item_property toolitemproperties
     							FROM $tbl_announcement announcement, $tbl_item_property toolitemproperties
-    							WHERE announcement.id = toolitemproperties.ref
-    							AND announcement.id = '$announcement_id'
-    							AND toolitemproperties.tool='announcement'
-    							AND toolitemproperties.to_group_id='0'
-    							AND toolitemproperties.visibility='1' AND
-    							announcement.c_id = $course_id AND
-								toolitemproperties.c_id = $course_id
-    							";
+    							WHERE
+                                    announcement.id = toolitemproperties.ref AND
+                                    announcement.id = '$announcement_id' AND
+                                    toolitemproperties.tool='announcement' AND
+                                    toolitemproperties.to_group_id='0' AND
+                                    toolitemproperties.visibility='1' AND
+                                    announcement.c_id = $course_id AND
+                                    toolitemproperties.c_id = $course_id";
             }
             }
         }
         }
 
 
@@ -191,7 +198,7 @@ class AnnouncementManager
             echo "<table height=\"100\" width=\"100%\" cellpadding=\"5\" cellspacing=\"0\" class=\"data_table\">";
             echo "<table height=\"100\" width=\"100%\" cellpadding=\"5\" cellspacing=\"0\" class=\"data_table\">";
             echo "<tr><td><h2>".$title."</h2></td></tr>";
             echo "<tr><td><h2>".$title."</h2></td></tr>";
 
 
-            if (api_is_allowed_to_edit(false, true) || (api_get_course_setting('allow_user_edit_announcement') && !api_is_anonymous())) {
+            if (self::user_can_edit_announcement()) {
                 $modify_icons = "<a href=\"".api_get_self()."?".api_get_cidreq()."&action=modify&id=".$announcement_id."\">".Display::return_icon('edit.png', get_lang('Edit'), '', ICON_SIZE_SMALL)."</a>";
                 $modify_icons = "<a href=\"".api_get_self()."?".api_get_cidreq()."&action=modify&id=".$announcement_id."\">".Display::return_icon('edit.png', get_lang('Edit'), '', ICON_SIZE_SMALL)."</a>";
                 if ($result['visibility'] == 1) {
                 if ($result['visibility'] == 1) {
                     $image_visibility = "visible";
                     $image_visibility = "visible";
@@ -205,7 +212,7 @@ class AnnouncementManager
                 $modify_icons .= "<a href=\"".api_get_self()."?".api_get_cidreq()."&origin=".(!empty($_GET['origin']) ? Security::remove_XSS($_GET['origin']) : '')."&action=showhide&id=".$announcement_id."&sec_token=".$stok."\">".
                 $modify_icons .= "<a href=\"".api_get_self()."?".api_get_cidreq()."&origin=".(!empty($_GET['origin']) ? Security::remove_XSS($_GET['origin']) : '')."&action=showhide&id=".$announcement_id."&sec_token=".$stok."\">".
                     Display::return_icon($image_visibility.'.png', $alt_visibility, '', ICON_SIZE_SMALL)."</a>";
                     Display::return_icon($image_visibility.'.png', $alt_visibility, '', ICON_SIZE_SMALL)."</a>";
 
 
-                if (api_is_allowed_to_edit(false, true)) {
+                if (self::user_can_edit_announcement()) {
                     $modify_icons .= "<a href=\"".api_get_self()."?".api_get_cidreq()."&action=delete&id=".$announcement_id."&sec_token=".$stok."\" onclick=\"javascript:if(!confirm('".addslashes(api_htmlentities(get_lang('ConfirmYourChoice'), ENT_QUOTES, $charset))."')) return false;\">".
                     $modify_icons .= "<a href=\"".api_get_self()."?".api_get_cidreq()."&action=delete&id=".$announcement_id."&sec_token=".$stok."\" onclick=\"javascript:if(!confirm('".addslashes(api_htmlentities(get_lang('ConfirmYourChoice'), ENT_QUOTES, $charset))."')) return false;\">".
                         Display::return_icon('delete.png', get_lang('Delete'), '', ICON_SIZE_SMALL).
                         Display::return_icon('delete.png', get_lang('Delete'), '', ICON_SIZE_SMALL).
                         "</a>";
                         "</a>";
@@ -213,8 +220,6 @@ class AnnouncementManager
                 echo "<tr><th style='text-align:right'>$modify_icons</th></tr>";
                 echo "<tr><th style='text-align:right'>$modify_icons</th></tr>";
             }
             }
 
 
-
-
             echo "<tr><td>$content</td></tr>";
             echo "<tr><td>$content</td></tr>";
 
 
             echo "<tr><td class=\"announcements_datum\">".get_lang('LastUpdateDate')." : ".api_convert_and_format_date($result['insert_date'], DATE_TIME_FORMAT_LONG)."</td></tr>";
             echo "<tr><td class=\"announcements_datum\">".get_lang('LastUpdateDate')." : ".api_convert_and_format_date($result['insert_date'], DATE_TIME_FORMAT_LONG)."</td></tr>";
@@ -364,18 +369,15 @@ class AnnouncementManager
                 end_date 		= '$now',
                 end_date 		= '$now',
                 display_order 	= '$order',
                 display_order 	= '$order',
                 session_id		= ".api_get_session_id();
                 session_id		= ".api_get_session_id();
-        var_dump($sql);
 
 
         $result = Database::query($sql);
         $result = Database::query($sql);
         if ($result === false) {
         if ($result === false) {
             return false;
             return false;
         }
         }
 
 
-
         //store the attach file
         //store the attach file
         $last_id = Database::insert_id();
         $last_id = Database::insert_id();
-        var_dump($last_id)
-        exit;
+
         if (!empty($file)) {
         if (!empty($file)) {
             self::add_announcement_attachment_file($last_id, $file_comment, $file);
             self::add_announcement_attachment_file($last_id, $file_comment, $file);
         }
         }
@@ -384,7 +386,6 @@ class AnnouncementManager
 
 
         if (!isset($to_users)) {
         if (!isset($to_users)) {
             $send_to = self::separate_users_groups($to);
             $send_to = self::separate_users_groups($to);
-            var_dump($send_to);
             // storing the selected groups
             // storing the selected groups
             if (is_array($send_to['groups'])) {
             if (is_array($send_to['groups'])) {
                 foreach ($send_to['groups'] as $group) {
                 foreach ($send_to['groups'] as $group) {
@@ -396,7 +397,7 @@ class AnnouncementManager
             // storing the selected users
             // storing the selected users
             if (is_array($to_users)) {
             if (is_array($to_users)) {
                 foreach ($to_users as $user) {
                 foreach ($to_users as $user) {
-                    api_item_property_update($_course, TOOL_ANNOUNCEMENT, $last_id, "AnnouncementAdded", api_get_user_id(), '', $user);
+                    api_item_property_update($_course, TOOL_ANNOUNCEMENT, $last_id, "AnnouncementAdded", api_get_user_id(), api_get_group_id(), $user);
                 }
                 }
             }
             }
         }
         }
@@ -1001,8 +1002,10 @@ class AnnouncementManager
         while ($row = Database::fetch_array($result)) {
         while ($row = Database::fetch_array($result)) {
             // if to_group_id is null then it is sent to a specific user
             // if to_group_id is null then it is sent to a specific user
             // if to_group_id = 0 then it is sent to everybody
             // if to_group_id = 0 then it is sent to everybody
-            if ($row['to_group_id'] != 0) {
-                $sent_to_group[] = $row['to_group_id'];
+            if (empty($row['to_user_id'])) {
+                if ($row['to_group_id'] != 0) {
+                    $sent_to_group[] = $row['to_group_id'];
+                }
             }
             }
             // if to_user_id <> 0 then it is sent to a specific user
             // if to_user_id <> 0 then it is sent to a specific user
             if ($row['to_user_id'] <> 0) {
             if ($row['to_user_id'] <> 0) {
@@ -1077,8 +1080,8 @@ class AnnouncementManager
                 $safe_file_name = Database::escape_string($file_name);
                 $safe_file_name = Database::escape_string($file_name);
                 $safe_new_file_name = Database::escape_string($new_file_name);
                 $safe_new_file_name = Database::escape_string($new_file_name);
                 // Storing the attachments if any
                 // Storing the attachments if any
-                $sql = 'INSERT INTO '.$tbl_announcement_attachment.' (c_id, filename, comment, path, announcement_id, size) '.
-                    "VALUES ($course_id, '$safe_file_name', '$file_comment', '$safe_new_file_name' , '$announcement_id', '".intval($file['size'])."' )";
+                $sql = "INSERT INTO $tbl_announcement_attachment (c_id, filename, comment, path, announcement_id, size) VALUES
+                        ($course_id, '$safe_file_name', '$file_comment', '$safe_new_file_name' , '$announcement_id', '".intval($file['size'])."' )";
                 Database::query($sql);
                 Database::query($sql);
                 $return = 1;
                 $return = 1;
             }
             }
@@ -1156,5 +1159,13 @@ class AnnouncementManager
         $email = AnnouncementEmail::create(null, $annoucement_id);
         $email = AnnouncementEmail::create(null, $annoucement_id);
         $email->send();
         $email->send();
     }
     }
+
+    public static function user_can_edit_announcement() {
+        $group_id = api_get_group_id();
+        return  api_is_allowed_to_edit(false, true) OR
+                (api_get_course_setting('allow_user_edit_announcement') && !api_is_anonymous()) OR
+                (!empty($group_id) AND GroupManager::user_has_access(api_get_user_id(), $group_id, GroupManager::GROUP_TOOL_ANNOUNCEMENT) AND GroupManager::is_tutor_of_group(api_get_user_id(), $group_id));
+
+    }
 }
 }
 //end class
 //end class

+ 11 - 24
main/inc/lib/main_api.lib.php

@@ -3170,10 +3170,8 @@ function api_item_property_update($_course, $tool, $item_id, $lastedit_type, $us
     $user_id        = Database::escape_string($user_id);
     $user_id        = Database::escape_string($user_id);
     $to_group_id    = Database::escape_string($to_group_id);
     $to_group_id    = Database::escape_string($to_group_id);
     $to_user_id     = Database::escape_string($to_user_id);
     $to_user_id     = Database::escape_string($to_user_id);
-    $start_visible  = Database::escape_string($start_visible);
-    $end_visible    = Database::escape_string($end_visible);
-    $start_visible  = ($start_visible == 0) ? '0000-00-00 00:00:00' : $start_visible;
-    $end_visible    = ($end_visible == 0) ? '0000-00-00 00:00:00' : $end_visible;
+    $start_visible  = $start_visible == 0 ? '0000-00-00 00:00:00' : Database::escape_string($start_visible);
+    $end_visible    = $end_visible == 0 ? '0000-00-00 00:00:00' : Database::escape_string($end_visible);
     $to_filter      = '';
     $to_filter      = '';
     $time           = api_get_utc_datetime();
     $time           = api_get_utc_datetime();
 
 
@@ -3190,16 +3188,6 @@ function api_item_property_update($_course, $tool, $item_id, $lastedit_type, $us
         $to_user_id = null; // No to_user_id set
         $to_user_id = null; // No to_user_id set
     }
     }
 
 
-    if (!is_null($to_user_id)) {
-        // $to_user_id has more priority than $to_group_id
-        $to_field = 'to_user_id';
-        $to_value = $to_user_id;
-    } else {
-        // $to_user_id is not set.
-        $to_field = 'to_group_id';
-        $to_value = $to_group_id;
-    }
-
     // Set filters for $to_user_id and $to_group_id, with priority for $to_user_id
     // Set filters for $to_user_id and $to_group_id, with priority for $to_user_id
 
 
     $condition_session = '';
     $condition_session = '';
@@ -3247,8 +3235,8 @@ function api_item_property_update($_course, $tool, $item_id, $lastedit_type, $us
                             	id_session 			= '$session_id' $set_type
                             	id_session 			= '$session_id' $set_type
                             WHERE $filter";
                             WHERE $filter";
                 } else {
                 } 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, id_session)
-                            VALUES ($course_id, '$tool','$item_id','$time', '$user_id', '$time', '$lastedit_type','$user_id', '$to_value', '$visibility', '$start_visible','$end_visible', '$session_id')";
+                    $sql = "INSERT INTO $TABLE_ITEMPROPERTY (c_id, tool, ref, insert_date, insert_user_id, lastedit_date, lastedit_type, lastedit_user_id, to_user_id, to_group_id, visibility, start_visible, end_visible, id_session)
+                            VALUES ($course_id, '$tool','$item_id','$time', '$user_id', '$time', '$lastedit_type','$user_id', '$to_user_id', '$to_group_id', '$visibility', '$start_visible','$end_visible', '$session_id')";
                 }
                 }
 
 
             } else {
             } else {
@@ -3269,8 +3257,8 @@ function api_item_property_update($_course, $tool, $item_id, $lastedit_type, $us
                             SET lastedit_type='".str_replace('_', '', ucwords($tool))."Visible', lastedit_date='$time', lastedit_user_id='$user_id', visibility='$visibility', id_session = '$session_id' $set_type
                             SET lastedit_type='".str_replace('_', '', ucwords($tool))."Visible', lastedit_date='$time', lastedit_user_id='$user_id', visibility='$visibility', id_session = '$session_id' $set_type
                             WHERE $filter";
                             WHERE $filter";
                 } else {
                 } 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, id_session)
-                            VALUES ($course_id, '$tool', '$item_id', '$time', '$user_id', '$time', '$lastedit_type', '$user_id', '$to_value', '$visibility', '$start_visible', '$end_visible', '$session_id')";
+                    $sql = "INSERT INTO $TABLE_ITEMPROPERTY (c_id, tool, ref, insert_date, insert_user_id, lastedit_date, lastedit_type, lastedit_user_id, to_user_id, to_group_id, visibility, start_visible, end_visible, id_session)
+                            VALUES ($course_id, '$tool', '$item_id', '$time', '$user_id', '$time', '$lastedit_type', '$user_id', '$to_user_id', '$to_group_id', '$visibility', '$start_visible', '$end_visible', '$session_id')";
                 }
                 }
             } else {
             } else {
                 $sql = "UPDATE $TABLE_ITEMPROPERTY
                 $sql = "UPDATE $TABLE_ITEMPROPERTY
@@ -3291,8 +3279,8 @@ function api_item_property_update($_course, $tool, $item_id, $lastedit_type, $us
                             SET lastedit_type='".str_replace('_', '', ucwords($tool))."Invisible', lastedit_date='$time', lastedit_user_id='$user_id', visibility='$visibility', id_session = '$session_id' $set_type
                             SET lastedit_type='".str_replace('_', '', ucwords($tool))."Invisible', lastedit_date='$time', lastedit_user_id='$user_id', visibility='$visibility', id_session = '$session_id' $set_type
                             WHERE $filter";
                             WHERE $filter";
                 } else {
                 } 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, id_session)
-                            VALUES ($course_id, '$tool', '$item_id', '$time', '$user_id', '$time', '$lastedit_type', '$user_id', '$to_value', '$visibility', '$start_visible', '$end_visible', '$session_id')";
+                    $sql = "INSERT INTO $TABLE_ITEMPROPERTY (c_id, tool, ref, insert_date, insert_user_id, lastedit_date, lastedit_type, lastedit_user_id, to_user_id, to_group_id, visibility, start_visible, end_visible, id_session)
+                            VALUES ($course_id, '$tool', '$item_id', '$time', '$user_id', '$time', '$lastedit_type', '$user_id', '$to_user_id', '$to_group_id', '$visibility', '$start_visible', '$end_visible', '$session_id')";
                 }
                 }
 
 
             } else {
             } else {
@@ -3313,8 +3301,8 @@ function api_item_property_update($_course, $tool, $item_id, $lastedit_type, $us
     $res = Database::query($sql);
     $res = Database::query($sql);
     // Insert if no entries are found (can only happen in case of $lastedit_type switch is 'default').
     // Insert if no entries are found (can only happen in case of $lastedit_type switch is 'default').
     if (Database::affected_rows() == 0) {
     if (Database::affected_rows() == 0) {
-        $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, id_session)
-                VALUES ($course_id, '$tool', '$item_id', '$time', '$user_id', '$time', '$lastedit_type', '$user_id', '$to_value', '$visibility', '$start_visible', '$end_visible', '$session_id')";
+        $sql = "INSERT INTO $TABLE_ITEMPROPERTY (c_id, tool,ref,insert_date,insert_user_id,lastedit_date,lastedit_type,   lastedit_user_id, to_user_id, to_group_id, visibility, start_visible, end_visible, id_session)
+                VALUES ($course_id, '$tool', '$item_id', '$time', '$user_id', '$time', '$lastedit_type', '$user_id', '$to_user_id', '$to_group_id', '$visibility', '$start_visible', '$end_visible', '$session_id')";
 
 
         $res = Database::query($sql);
         $res = Database::query($sql);
         if (!$res) {
         if (!$res) {
@@ -3344,7 +3332,6 @@ function api_get_item_property_by_tool($tool, $course_code, $session_id = null)
 
 
     $sql = "SELECT * FROM $item_property_table WHERE c_id = $course_id AND tool = '$tool'  $session_condition ";
     $sql = "SELECT * FROM $item_property_table WHERE c_id = $course_id AND tool = '$tool'  $session_condition ";
     $rs  = Database::query($sql);
     $rs  = Database::query($sql);
-    $item_property_id = '';
     $list = array();
     $list = array();
     if (Database::num_rows($rs) > 0) {
     if (Database::num_rows($rs) > 0) {
         while ($row = Database::fetch_array($rs, 'ASSOC')) {
         while ($row = Database::fetch_array($rs, 'ASSOC')) {
@@ -3371,7 +3358,7 @@ function api_get_item_property_id($course_code, $tool, $ref) {
     $course_id	 = $course_info['real_id'];
     $course_id	 = $course_info['real_id'];
     $sql = "SELECT id FROM $TABLE_ITEMPROPERTY WHERE c_id = $course_id AND tool = '$tool' AND ref = '$ref'";
     $sql = "SELECT id FROM $TABLE_ITEMPROPERTY WHERE c_id = $course_id AND tool = '$tool' AND ref = '$ref'";
     $rs  = Database::query($sql);
     $rs  = Database::query($sql);
-    $item_property_id = '';
+    $item_property_id = null;
     if (Database::num_rows($rs) > 0) {
     if (Database::num_rows($rs) > 0) {
         $row = Database::fetch_array($rs);
         $row = Database::fetch_array($rs);
         $item_property_id = $row['id'];
         $item_property_id = $row['id'];