Allow to invite users inside a group see BT#5715

1.10.x
Julio Montoya 11 years ago
parent 64e3ee9d74
commit 24492aedb2
  1. 79
      main/survey/survey.lib.php
  2. 4
      main/survey/survey.php
  3. 11
      main/survey/survey_invite.php

@ -3414,7 +3414,16 @@ class SurveyUtil
'group_id' => $groupId, 'group_id' => $groupId,
'survey_code' => $survey_data['code'] 'survey_code' => $survey_data['code']
); );
self::save_invitation($params);
$invitationExists = self::invitationExists(
$course_id,
$session_id,
$groupId,
$survey_data['code']
);
if (empty($invitationExists)) {
self::save_invitation($params);
}
} }
$users_array = array_unique($users_array); $users_array = array_unique($users_array);
@ -3428,6 +3437,7 @@ class SurveyUtil
if (in_array($value, $exclude_users)) { if (in_array($value, $exclude_users)) {
continue; continue;
} }
// Get the unique invitation code if we already have it // Get the unique invitation code if we already have it
if ($reminder == 1 && array_key_exists($value, $survey_invitations)) { if ($reminder == 1 && array_key_exists($value, $survey_invitations)) {
$invitation_code = $survey_invitations[$value]['invitation_code']; $invitation_code = $survey_invitations[$value]['invitation_code'];
@ -3476,16 +3486,46 @@ class SurveyUtil
* @param $params * @param $params
* @return bool|int * @return bool|int
*/ */
static function save_invitation($params) public static function save_invitation($params)
{ {
// Database table to store the invitations data // Database table to store the invitations data
$table_survey_invitation = Database::get_course_table(TABLE_SURVEY_INVITATION); $table = Database::get_course_table(TABLE_SURVEY_INVITATION);
if (!empty($params['c_id']) && (!empty($params['user']) || !empty($params['group_id'])) && !empty($params['survey_code'])) { if (!empty($params['c_id']) &&
return Database::insert($table_survey_invitation, $params); (!empty($params['user']) || !empty($params['group_id'])) &&
!empty($params['survey_code'])
) {
return Database::insert($table, $params);
} }
return false; return false;
} }
/**
* @param int $courseId
* @param int $sessionId
* @param int $groupId
* @param string $surveyCode
* @return int
*/
public static function invitationExists($courseId, $sessionId, $groupId, $surveyCode)
{
$table = Database::get_course_table(TABLE_SURVEY_INVITATION);
$courseId = intval($courseId);
$sessionId = intval($sessionId);
$groupId = intval($groupId);
$surveyCode = Database::escape_string($surveyCode);
$sql = "SELECT survey_invitation_id FROM $table
WHERE
c_id = $courseId AND
session_id = $sessionId AND
group_id = $groupId AND
survey_code = '$surveyCode'
";
$result = Database::query($sql);
return Database::num_rows($result);
}
/** /**
* Send the invitation by mail. * Send the invitation by mail.
* *
@ -3493,7 +3533,7 @@ class SurveyUtil
* $param string $invitation_code - the unique invitation code for the URL * $param string $invitation_code - the unique invitation code for the URL
* @return void * @return void
*/ */
static function send_invitation_mail($invitedUser, $invitation_code, $invitation_title, $invitation_text) public static function send_invitation_mail($invitedUser, $invitation_code, $invitation_title, $invitation_text)
{ {
$_user = api_get_user_info(); $_user = api_get_user_info();
$_course = api_get_course_info(); $_course = api_get_course_info();
@ -3579,8 +3619,13 @@ class SurveyUtil
$table_survey = Database :: get_course_table(TABLE_SURVEY); $table_survey = Database :: get_course_table(TABLE_SURVEY);
// Counting the number of people that are invited // Counting the number of people that are invited
$sql = "SELECT count(user) as total FROM $table_survey_invitation $sql = "SELECT count(user) as total
WHERE c_id = $course_id AND survey_code = '".Database::escape_string($survey_code)."'"; FROM $table_survey_invitation
WHERE
c_id = $course_id AND
survey_code = '".Database::escape_string($survey_code)."' AND
user <> ''
";
$result = Database::query($sql); $result = Database::query($sql);
$row = Database::fetch_array($result); $row = Database::fetch_array($result);
$total_invited = $row['total']; $total_invited = $row['total'];
@ -3588,7 +3633,10 @@ class SurveyUtil
// Updating the field in the survey table // Updating the field in the survey table
$sql = "UPDATE $table_survey $sql = "UPDATE $table_survey
SET invited = '".Database::escape_string($total_invited)."' SET invited = '".Database::escape_string($total_invited)."'
WHERE c_id = $course_id AND code = '".Database::escape_string($survey_code)."'"; WHERE
c_id = $course_id AND
code = '".Database::escape_string($survey_code)."'
";
Database::query($sql); Database::query($sql);
} }
@ -3605,7 +3653,7 @@ class SurveyUtil
* @author Julio Montoya, adding c_id fixes - Dec 2012 * @author Julio Montoya, adding c_id fixes - Dec 2012
* @version January 2007 * @version January 2007
*/ */
static function get_invited_users($survey_code, $course_code = '', $session_id = 0) public static function get_invited_users($survey_code, $course_code = '', $session_id = 0)
{ {
if (!empty($course_code)) { if (!empty($course_code)) {
$course_info = api_get_course_info($course_code); $course_info = api_get_course_info($course_code);
@ -3646,7 +3694,8 @@ class SurveyUtil
$defaults['additional_users'][] = $row['user']; $defaults['additional_users'][] = $row['user'];
} }
} }
if (isset($row['group_id'])) {
if (isset($row['group_id']) && !empty($row['group_id'])) {
$defaults['users'][] = 'GROUP:'.$row['group_id']; $defaults['users'][] = 'GROUP:'.$row['group_id'];
} }
} }
@ -3665,7 +3714,6 @@ class SurveyUtil
if (!empty($defaults['additional_users'])) { if (!empty($defaults['additional_users'])) {
$defaults['additional_users'] = implode(';', $defaults['additional_users']); $defaults['additional_users'] = implode(';', $defaults['additional_users']);
} }
//error_log(print_r($defaults, 1));
return $defaults; return $defaults;
} }
@ -4342,7 +4390,6 @@ class SurveyUtil
} }
break; break;
case UserManager::USER_FIELD_TYPE_RADIO: case UserManager::USER_FIELD_TYPE_RADIO:
$field_list_array['extra_'.$field_details[1]]['name'] = $field_details[3]; $field_list_array['extra_'.$field_details[1]]['name'] = $field_details[3];
if ($field_details[7] == 0) { if ($field_details[7] == 0) {
$field_list_array['extra_'.$field_details[1]]['visibility'] = 0; $field_list_array['extra_'.$field_details[1]]['visibility'] = 0;
@ -4350,7 +4397,6 @@ class SurveyUtil
$field_list_array['extra_'.$field_details[1]]['visibility'] = 1; $field_list_array['extra_'.$field_details[1]]['visibility'] = 1;
} }
break; break;
case UserManager::USER_FIELD_TYPE_SELECT: case UserManager::USER_FIELD_TYPE_SELECT:
$get_lang_variables = false; $get_lang_variables = false;
if (in_array($field_details[1], array('mail_notify_message', 'mail_notify_invitation', 'mail_notify_group_message'))) { if (in_array($field_details[1], array('mail_notify_message', 'mail_notify_invitation', 'mail_notify_group_message'))) {
@ -4369,7 +4415,6 @@ class SurveyUtil
$field_list_array['extra_'.$field_details[1]]['visibility'] = 1; $field_list_array['extra_'.$field_details[1]]['visibility'] = 1;
} }
break; break;
case UserManager::USER_FIELD_TYPE_SELECT_MULTIPLE: case UserManager::USER_FIELD_TYPE_SELECT_MULTIPLE:
$field_list_array['extra_'.$field_details[1]]['name'] = $field_details[3]; $field_list_array['extra_'.$field_details[1]]['name'] = $field_details[3];
if ($field_details[7] == 0) { if ($field_details[7] == 0) {
@ -4378,7 +4423,6 @@ class SurveyUtil
$field_list_array['extra_'.$field_details[1]]['visibility'] = 1; $field_list_array['extra_'.$field_details[1]]['visibility'] = 1;
} }
break; break;
case UserManager::USER_FIELD_TYPE_DATE: case UserManager::USER_FIELD_TYPE_DATE:
$field_list_array['extra_'.$field_details[1]]['name'] = $field_details[3]; $field_list_array['extra_'.$field_details[1]]['name'] = $field_details[3];
if ($field_details[7] == 0) { if ($field_details[7] == 0) {
@ -4387,7 +4431,6 @@ class SurveyUtil
$field_list_array['extra_'.$field_details[1]]['visibility'] = 1; $field_list_array['extra_'.$field_details[1]]['visibility'] = 1;
} }
break; break;
case UserManager::USER_FIELD_TYPE_DATETIME: case UserManager::USER_FIELD_TYPE_DATETIME:
$field_list_array['extra_'.$field_details[1]]['name'] = $field_details[3]; $field_list_array['extra_'.$field_details[1]]['name'] = $field_details[3];
if ($field_details[7] == 0) { if ($field_details[7] == 0) {
@ -4396,7 +4439,6 @@ class SurveyUtil
$field_list_array['extra_'.$field_details[1]]['visibility'] = 1; $field_list_array['extra_'.$field_details[1]]['visibility'] = 1;
} }
break; break;
case UserManager::USER_FIELD_TYPE_DOUBLE_SELECT: case UserManager::USER_FIELD_TYPE_DOUBLE_SELECT:
$field_list_array['extra_'.$field_details[1]]['name'] = $field_details[3]; $field_list_array['extra_'.$field_details[1]]['name'] = $field_details[3];
if ($field_details[7] == 0) { if ($field_details[7] == 0) {
@ -4432,7 +4474,6 @@ class SurveyUtil
$course_id = api_get_course_int_id(); $course_id = api_get_course_int_id();
$sql = 'SELECT COUNT(*) as count FROM '.$table_survey_invitation.' $sql = 'SELECT COUNT(*) as count FROM '.$table_survey_invitation.'
WHERE user='.$user_id.' AND survey_code="'.$survey_code.'" AND answered="1" AND c_id = '.$course_id.' '; WHERE user='.$user_id.' AND survey_code="'.$survey_code.'" AND answered="1" AND c_id = '.$course_id.' ';

@ -150,7 +150,7 @@ $survey_actions .= '<a href="'.api_get_path(WEB_CODE_PATH).'survey/reporting.php
echo '<div class="actions">'.$survey_actions.'</div>'; echo '<div class="actions">'.$survey_actions.'</div>';
if ($survey_data['survey_type'] == 0) { if ($survey_data['survey_type'] == 0) {
echo '<div class="actionsbig">'; echo '<div class="well actions">';
echo '<a style="padding-left:0px;" href="'.api_get_path(WEB_CODE_PATH).'survey/question.php?'.api_get_cidreq().'&amp;action=add&type=yesno&amp;survey_id='.$survey_id.'">'.Display::return_icon('yesno.png', get_lang('YesNo'), null, ICON_SIZE_BIG).'</a>'; echo '<a style="padding-left:0px;" href="'.api_get_path(WEB_CODE_PATH).'survey/question.php?'.api_get_cidreq().'&amp;action=add&type=yesno&amp;survey_id='.$survey_id.'">'.Display::return_icon('yesno.png', get_lang('YesNo'), null, ICON_SIZE_BIG).'</a>';
echo '<a href="'.api_get_path(WEB_CODE_PATH).'survey/question.php?'.api_get_cidreq().'&amp;action=add&type=multiplechoice&amp;survey_id='.$survey_id.'">'.Display::return_icon('mcua.png', get_lang('UniqueSelect'), null, ICON_SIZE_BIG).'<br /></a>'; echo '<a href="'.api_get_path(WEB_CODE_PATH).'survey/question.php?'.api_get_cidreq().'&amp;action=add&type=multiplechoice&amp;survey_id='.$survey_id.'">'.Display::return_icon('mcua.png', get_lang('UniqueSelect'), null, ICON_SIZE_BIG).'<br /></a>';
echo '<a href="'.api_get_path(WEB_CODE_PATH).'survey/question.php?'.api_get_cidreq().'&amp;action=add&type=multipleresponse&amp;survey_id='.$survey_id.'">'.Display::return_icon('mcma.png', get_lang('MultipleResponse'), null, ICON_SIZE_BIG).'</a>'; echo '<a href="'.api_get_path(WEB_CODE_PATH).'survey/question.php?'.api_get_cidreq().'&amp;action=add&type=multipleresponse&amp;survey_id='.$survey_id.'">'.Display::return_icon('mcma.png', get_lang('MultipleResponse'), null, ICON_SIZE_BIG).'</a>';
@ -162,7 +162,7 @@ if ($survey_data['survey_type'] == 0) {
echo '<a href="'.api_get_path(WEB_CODE_PATH).'survey/question.php?'.api_get_cidreq().'&amp;action=add&type=pagebreak&amp;survey_id='.$survey_id.'">'.Display::return_icon('page_end.png', get_lang('Pagebreak'), null, ICON_SIZE_BIG).'</a>'; echo '<a href="'.api_get_path(WEB_CODE_PATH).'survey/question.php?'.api_get_cidreq().'&amp;action=add&type=pagebreak&amp;survey_id='.$survey_id.'">'.Display::return_icon('page_end.png', get_lang('Pagebreak'), null, ICON_SIZE_BIG).'</a>';
echo '</div>'; echo '</div>';
} else { } else {
echo '<div class="actionsbig">'; echo '<div class="well actions">';
echo '<a style="padding-left:0px;" href="'.api_get_path(WEB_CODE_PATH).'survey/question.php?'.api_get_cidreq().'&amp;action=add&type=personality&amp;survey_id='.$survey_id.'"><img src="../img/yesno.gif" /></a></div>'; echo '<a style="padding-left:0px;" href="'.api_get_path(WEB_CODE_PATH).'survey/question.php?'.api_get_cidreq().'&amp;action=add&type=personality&amp;survey_id='.$survey_id.'"><img src="../img/yesno.gif" /></a></div>';
echo '</div>'; echo '</div>';
} }

@ -235,14 +235,19 @@ if ($form->validate()) {
$table_survey = Database :: get_course_table(TABLE_SURVEY); $table_survey = Database :: get_course_table(TABLE_SURVEY);
// Counting the number of people that are invited // Counting the number of people that are invited
$sql = "SELECT * FROM $table_survey $sql = "SELECT * FROM $table_survey
WHERE c_id = $course_id AND code = '".Database::escape_string($survey_data['code'])."'"; WHERE
c_id = $course_id AND
code = '".Database::escape_string($survey_data['code'])."'
";
$result = Database::query($sql); $result = Database::query($sql);
$row = Database::fetch_array($result); $row = Database::fetch_array($result);
$total_invited = $row['invited']; $total_invited = $row['invited'];
if ($total_invited > 0) { if ($total_invited > 0) {
$message = '<a href="'.api_get_path(WEB_CODE_PATH).'survey/survey_invitation.php?view=answered&amp;survey_id='.$survey_data['survey_id'].'">'.$survey_data['answered'].'</a> '; $message = '<a href="'.api_get_path(WEB_CODE_PATH).'survey/survey_invitation.php?view=answered&amp;survey_id='.$survey_data['survey_id'].'">'.
$survey_data['answered'].'</a> ';
$message .= get_lang('HaveAnswered').' '; $message .= get_lang('HaveAnswered').' ';
$message .= '<a href="'.api_get_path(WEB_CODE_PATH).'survey/survey_invitation.php?view=invited&amp;survey_id='.$survey_data['survey_id'].'">'.$total_invited.'</a> '; $message .= '<a href="'.api_get_path(WEB_CODE_PATH).'survey/survey_invitation.php?view=invited&amp;survey_id='.$survey_data['survey_id'].'">'.
$total_invited.'</a> ';
$message .= get_lang('WereInvited'); $message .= get_lang('WereInvited');
Display::display_normal_message($message, false); Display::display_normal_message($message, false);
Display::display_confirmation_message($total_count.' '.get_lang('InvitationsSend')); Display::display_confirmation_message($total_count.' '.get_lang('InvitationsSend'));

Loading…
Cancel
Save