diff --git a/main/work/work.lib.php b/main/work/work.lib.php index d57e818beb..d5954ef969 100644 --- a/main/work/work.lib.php +++ b/main/work/work.lib.php @@ -82,8 +82,12 @@ function display_action_links($id, $cur_dir_path, $always_show_tool_options, $al } else { $display_output .= ''. Display::return_icon('exercice_check.png', get_lang('ViewUsersWithTask'),'','32')."\n"; - $display_output .= ''. - Display::return_icon('mail_send.png', get_lang('ReminderMessage'),'','32').""; + if (!isset($_GET['action']) || (isset($_GET['action']) && $_GET['action'] != 'send_mail')) { + $display_output .= ''. + Display::return_icon('mail_send.png', get_lang('ReminderMessage'),'','32').""; + } else { + $display_output .= Display::return_icon('mail_send_na.png', get_lang('ReminderMessage'),'','32'); + } } } } @@ -256,8 +260,9 @@ function create_group_date_select($prefix = '') { function get_work_data_by_path($path) { $path = Database::escape_string($path); + $course_id = api_get_course_int_id(); $work_table = Database::get_course_table(TABLE_STUDENT_PUBLICATION); - $sql = "SELECT * FROM ".$work_table." WHERE url = '$path'"; + $sql = "SELECT * FROM ".$work_table." WHERE url = '$path' AND c_id = $course_id "; $result = Database::query($sql); $return = array(); if (Database::num_rows($result)) { @@ -270,7 +275,7 @@ function get_work_data_by_id($id) { $id = intval($id); $course_id = api_get_course_int_id(); $work_table = Database::get_course_table(TABLE_STUDENT_PUBLICATION); - $sql = "SELECT * FROM ".$work_table." WHERE id = $id AND c_id = $course_id"; + $sql = "SELECT * FROM $work_table WHERE id = $id AND c_id = $course_id"; $result = Database::query($sql); $return = array(); if (Database::num_rows($result)) { @@ -282,10 +287,11 @@ function get_work_data_by_id($id) { function get_work_count_by_student($user_id, $work_id) { $user_id = intval($user_id); $work_id = intval($work_id); - $course_id = api_get_course_id(); + $course_id = api_get_course_int_id(); $work_table = Database::get_course_table(TABLE_STUDENT_PUBLICATION); - $sql = "SELECT COUNT(*) as count FROM $work_table WHERE parent_id = $work_id AND user_id = $user_id AND active = 1 "; + $sql = "SELECT COUNT(*) as count FROM $work_table + WHERE c_id = $course_id AND parent_id = $work_id AND user_id = $user_id AND active = 1 "; $result = Database::query($sql); $return = 0; if (Database::num_rows($result)) { @@ -299,7 +305,7 @@ function get_work_assignment_by_id($id) { $id = intval($id); $course_id = api_get_course_int_id(); $table = Database :: get_course_table(TABLE_STUDENT_PUBLICATION_ASSIGNMENT); - $sql = "SELECT * FROM ".$table." WHERE c_id = $course_id AND publication_id = $id"; + $sql = "SELECT * FROM $table WHERE c_id = $course_id AND publication_id = $id"; $result = Database::query($sql); $return = array(); if (Database::num_rows($result)) { @@ -1615,8 +1621,7 @@ function get_work_id($path) { * @author Julio Montoya Fixing query */ function get_list_users_without_publication($task_id) { - $work_table = Database::get_course_table(TABLE_STUDENT_PUBLICATION); - $iprop_table = Database::get_course_table(TABLE_ITEM_PROPERTY); + $work_table = Database::get_course_table(TABLE_STUDENT_PUBLICATION); $table_course_user = Database::get_main_table(TABLE_MAIN_COURSE_USER); $table_user = Database::get_main_table(TABLE_MAIN_USER); $session_course_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER); @@ -1651,29 +1656,32 @@ function get_list_users_without_publication($task_id) { //just in case if (empty($group_id)) { $group_id = isset($_SESSION['toolgroup']) ? $_SESSION['toolgroup'] : 0; - } - + } + + $new_group_user_list = array(); + if ($group_id) { - $group_user_list = GroupManager::get_subscribed_users($group_id); - $new_group_user_list = array(); + $group_user_list = GroupManager::get_subscribed_users($group_id); if (!empty($group_user_list)) { foreach($group_user_list as $group_user) { $new_group_user_list[] = $group_user['user_id']; } } - } + } $result_users = Database::query($sql_users); $users_without_tasks = array(); while ($row_users = Database::fetch_row($result_users)) { + if (in_array($row_users[0], $users_with_tasks)) continue; - if ($group_id) { - if (!in_array($row_users[0], $new_group_user_list)) continue; + if ($group_id && !in_array($row_users[0], $new_group_user_list)) { + continue; } - $user_id = array_shift($row_users); - $row_users[3] = $row_users[2]; - $row_users[2] = Display::encrypted_mailto_link($row_users[2], $row_users[2]); - + //$user_id = array_shift($row_users); + $row_users[0] = $row_users[1]; + $row_users[1] = $row_users[2]; + $row_users[2] = Display::encrypted_mailto_link($row_users[3]); + $users_without_tasks[] = $row_users; } return $users_without_tasks; @@ -1739,12 +1747,17 @@ function send_reminder_users_without_publication($task_data) { $emailbody_user .= get_lang('WorkName').' : '.$task_title."\n\n".get_lang('Teacher').' : '.api_get_person_name($currentUserFirstName, $currentUserLastName)."\n".get_lang('Email').' : '.$currentUserEmail; $list_users = get_list_users_without_publication($task_id); - var_dump($list_users); + + $mails_sent_to = array(); foreach ($list_users as $user) { - $name_user = api_get_person_name($user[0], $user[1], null, PERSON_NAME_EMAIL_ADDRESS); - $result = api_mail($name_user, $user[3], $emailsubject, $emailbody_user, $sender_name, $email_admin); - var_dump($result); - } + $name_user = api_get_person_name($user[1], $user[0], null, PERSON_NAME_EMAIL_ADDRESS); + $result = api_mail($name_user, $user[2], $emailsubject, $emailbody_user, $sender_name, $email_admin); + if ($result) { + $mails_sent_to[] = $name_user; + } + $mails_sent_to[] = $name_user; + } + return $mails_sent_to; } diff --git a/main/work/work.php b/main/work/work.php index d6aa73a7da..32a8659c70 100644 --- a/main/work/work.php +++ b/main/work/work.php @@ -41,7 +41,7 @@ /* INIT SECTION */ -$language_file = array('exercice', 'work', 'document', 'admin'); +$language_file = array('exercice', 'work', 'document', 'admin', 'group', 'userInfo'); require_once '../inc/global.inc.php'; @@ -186,13 +186,14 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST' && !sizeof($_POST)) { exit (); } } - +/* if (isset($_GET['toolgroup'])) { $toolgroup = Database::escape_string($_GET['toolgroup']); api_session_register('toolgroup'); } - $toolgroup = isset($_SESSION['toolgroup']) ? $_SESSION['toolgroup'] : api_get_group_id(); +*/ +$group_id = api_get_group_id(); $display_upload_form = false; if ($action == 'upload_form') { @@ -288,6 +289,10 @@ if ($origin == 'learnpath') { /* Display links to upload form and tool options */ +if ($action != 'send_mail') { + $token = Security::get_token(); +} + if ($is_special) { $homework = get_work_assignment_by_id($my_folder_data['id']); $has_expired = $has_ended = false; @@ -478,10 +483,14 @@ switch ($action) { case 'downloadfolder': //require 'downloadfolder.inc.php'; break; - case 'send_mail': - var_dump($_SESSION['sec_token'], $_GET['sec_token']); - if (Security::check_token('get')) { echo 'dd'; - send_reminder_users_without_publication($my_folder_data); + case 'send_mail': + if (Security::check_token('get')) { + $mails_sent_to = send_reminder_users_without_publication($my_folder_data); + if (empty($mails_sent_to)) { + Display::display_warning_message(get_lang('NoStudents')); + } else { + Display::display_confirmation_message(get_lang('MessageOutboxComment').' '.implode(', ', $mails_sent_to)); + } Security::clear_token(); } break; @@ -637,7 +646,7 @@ switch ($action) { active = '0', accepted = '1', filetype = 'folder', - post_group_id = '".$toolgroup."', + post_group_id = '".$group_id."', sent_date = '".$today."', qualification = '".(($_POST['qualification_value']!='') ? Database::escape_string($_POST['qualification_value']) : '') ."', parent_id = '', @@ -672,7 +681,7 @@ switch ($action) { $description = isset($_POST['description']) ? $_POST['description'] : ''; $content = ''.$_POST['new_dir'].''.$description; - $agenda_id = agenda_add_item($course_info, $title, $content, $date, $end_date, array('GROUP:'.$toolgroup), 0); + $agenda_id = agenda_add_item($course_info, $title, $content, $date, $end_date, array('GROUP:'.$group_id), 0); } } @@ -1261,7 +1270,7 @@ switch ($action) { $curdirpath = isset($_REQUEST['curdirpath']) ? Security::remove_XSS($_REQUEST['curdirpath']) : ''; $filter = isset($_REQUEST['filter']) ? (int)$_REQUEST['filter'] : ''; - if ($origin != 'learnpath') { + if ($origin != 'learnpath' && $display_list_users_without_publication != 'without' ) { $form_filter = '
'; $form_filter .= make_select('filter', array(0 => get_lang('SelectAFilter'), 1 => get_lang('FilterByNotRevised'), 2 => get_lang('FilterByRevised'), 3 => get_lang('FilterByNotExpired')), $filter).'  '; $form_filter .= '
'; @@ -1271,8 +1280,7 @@ switch ($action) { if (!empty($my_folder_data['description'])) { echo '

'.get_lang('Description').':

'.Security::remove_XSS($my_folder_data['description'], STUDENT).'

'; - } - + } if ($display_list_users_without_publication) { display_list_users_without_publication($my_folder_data['id']); } else {