From 37f6995c9c85da164889e01049a331d06db90f0c Mon Sep 17 00:00:00 2001 From: Julio Montoya Date: Fri, 30 Aug 2013 18:33:10 +0200 Subject: [PATCH] Blocking work list item for the student if he's not subscribed see BT#6615 --- main/work/add_user.php | 10 +++++++++- main/work/work.lib.php | 22 ++++++++++++++++++++++ main/work/work.php | 2 ++ 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/main/work/add_user.php b/main/work/add_user.php index dfcc43a5b4..eebca90fdf 100644 --- a/main/work/add_user.php +++ b/main/work/add_user.php @@ -45,7 +45,10 @@ $error_message = null; switch ($action) { case 'add': - addUserToWork($userId, $workId, api_get_course_int_id()); + $data = getUserToWork($userId, $workId, api_get_course_int_id()); + if (empty($data)) { + addUserToWork($userId, $workId, api_get_course_int_id()); + } $url = api_get_path(WEB_CODE_PATH).'work/add_user.php?id='.$workId; header('Location: '.$url); exit; @@ -66,10 +69,12 @@ Display :: display_header(null); echo Display::page_subheader(get_lang('UsersAdded')); $items = getAllUserToWork($workId, api_get_course_int_id()); +$usersAdded = array(); if (!empty($items)) { echo '
'; foreach ($items as $data) { $myUserId = $data['user_id']; + $usersAdded[] = $myUserId; $userInfo = api_get_user_info($myUserId); $url = api_get_path(WEB_CODE_PATH).'work/add_user.php?action=delete&id='.$workId.'&user_id='.$myUserId; $link = Display::url(get_lang('Delete'), $url); @@ -84,6 +89,9 @@ echo Display::page_subheader(get_lang('UserToAdd')); if (!empty($userList)) { echo '
'; foreach ($userList as $user) { + if (in_array($user['user_id'], $usersAdded)) { + continue; + } $userName = api_get_person_name($user['firstname'], $user['lastname']); $url = api_get_path(WEB_CODE_PATH).'work/add_user.php?action=add&id='.$workId.'&user_id='.$user['user_id']; $link = Display::url(get_lang('Add'), $url); diff --git a/main/work/work.lib.php b/main/work/work.lib.php index 0878978d9b..fb0db07fdc 100644 --- a/main/work/work.lib.php +++ b/main/work/work.lib.php @@ -493,6 +493,7 @@ function display_student_publications_list($id, $my_folder_data, $work_parents, $group_id = api_get_group_id(); + if (is_array($work_parents)) { foreach ($work_parents as $work_parent) { $sql_select_directory = "SELECT @@ -812,6 +813,16 @@ function display_student_publications_list($id, $my_folder_data, $work_parents, FROM $work_table w INNER JOIN $user_table u ON w.user_id = u.user_id WHERE w.c_id = $course_id AND w.parent_id = ".$work_data['id']." AND w.active IN (0, 1)";*/ } else { + + if (ADD_DOCUMENT_TO_WORK) { + $subscribedUsers = getAllUserToWork($work_data['id'], $course_id); + if (!empty($subscribedUsers)) { + if (!in_array(api_get_user_id(), $subscribedUsers)) { + continue; + } + } + } + $cant_files = get_count_work($work_data['id'], api_get_user_id()); /* $user_filter = "user_id = ".api_get_user_id()." AND "; @@ -2216,6 +2227,15 @@ function getAllUserToWork($workId, $courseId) return Database::select('*', $table, array('where' => $params)); } +function userAddedToWork($userId, $workId, $courseId) +{ + /*$table = Database::get_course_table(TABLE_STUDENT_PUBLICATION_REL_USER); + $params = array( + 'user_id = ? and work_id = ? and c_id = ?' => array($userId, $workId, $courseId) + ); + $result = Database::select('count(*)', $table, array('where' => $params));*/ +} + function deleteUserToWork($userId, $workId, $courseId) { @@ -2226,3 +2246,5 @@ function deleteUserToWork($userId, $workId, $courseId) Database::delete($table, $params); } + + diff --git a/main/work/work.php b/main/work/work.php index cb027dd219..30c12ee7e3 100644 --- a/main/work/work.php +++ b/main/work/work.php @@ -788,6 +788,8 @@ switch ($action) { echo $table->toHtml(); echo '
'; } else { + + display_student_publications_list($work_id, $my_folder_data, $work_parents, $origin, $add_query, null); }