Fixing bug when sending mails in the work tool see BT#3240

skala
Julio Montoya 13 years ago
parent 17af401284
commit 56213d3b53
  1. 63
      main/work/work.lib.php
  2. 32
      main/work/work.php

@ -82,8 +82,12 @@ function display_action_links($id, $cur_dir_path, $always_show_tool_options, $al
} else {
$display_output .= '<a href="'.api_get_self().'?'.api_get_cidreq().'&amp;id='.$id.'&amp;curdirpath='.$cur_dir_path.'&amp;origin='.$origin.'&amp;gradebook='.$gradebook.'&amp;list=with">'.
Display::return_icon('exercice_check.png', get_lang('ViewUsersWithTask'),'','32')."</a>\n";
$display_output .= '<a href="'.api_get_self().'?'.api_get_cidreq().'&amp;id='.$id.'&amp;curdirpath='.$cur_dir_path.'&amp;origin='.$origin.'&amp;gradebook='.$gradebook.'&amp;list=without&amp;action=send_mail&amp;sec_token='.$token.'">'.
Display::return_icon('mail_send.png', get_lang('ReminderMessage'),'','32')."</a>";
if (!isset($_GET['action']) || (isset($_GET['action']) && $_GET['action'] != 'send_mail')) {
$display_output .= '<a href="'.api_get_self().'?'.api_get_cidreq().'&amp;id='.$id.'&amp;curdirpath='.$cur_dir_path.'&amp;origin='.$origin.'&amp;gradebook='.$gradebook.'&amp;list=without&amp;action=send_mail&amp;sec_token='.$token.'">'.
Display::return_icon('mail_send.png', get_lang('ReminderMessage'),'','32')."</a>";
} 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 <gugli100@gmail.com> 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;
}

@ -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 = '<a href="'.api_get_self().'?'.api_get_cidreq().'&amp;curdirpath='.api_substr($dir_name_sql, 1).'" >'.$_POST['new_dir'].'</a>'.$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 method="post" action="'.api_get_self().'?cidReq='.$cidreq.'&id='.$work_id.'&curdirpath='.$curdirpath.'&gradebook='.$gradebook.'">';
$form_filter .= make_select('filter', array(0 => get_lang('SelectAFilter'), 1 => get_lang('FilterByNotRevised'), 2 => get_lang('FilterByRevised'), 3 => get_lang('FilterByNotExpired')), $filter).'&nbsp&nbsp';
$form_filter .= '<button type="submit" class="save" value="'.get_lang('FilterAssignments').'">'.get_lang('FilterAssignments').'</button></form>';
@ -1271,8 +1280,7 @@ switch ($action) {
if (!empty($my_folder_data['description'])) {
echo '<p><div><strong>'.get_lang('Description').':</strong><p>'.Security::remove_XSS($my_folder_data['description'], STUDENT).'</p></div></p>';
}
}
if ($display_list_users_without_publication) {
display_list_users_without_publication($my_folder_data['id']);
} else {

Loading…
Cancel
Save