Allow to invite users inside a group see BT#5715

1.10.x
Julio Montoya 10 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,
'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);
@ -3428,6 +3437,7 @@ class SurveyUtil
if (in_array($value, $exclude_users)) {
continue;
}
// Get the unique invitation code if we already have it
if ($reminder == 1 && array_key_exists($value, $survey_invitations)) {
$invitation_code = $survey_invitations[$value]['invitation_code'];
@ -3476,16 +3486,46 @@ class SurveyUtil
* @param $params
* @return bool|int
*/
static function save_invitation($params)
public static function save_invitation($params)
{
// Database table to store the invitations data
$table_survey_invitation = Database::get_course_table(TABLE_SURVEY_INVITATION);
if (!empty($params['c_id']) && (!empty($params['user']) || !empty($params['group_id'])) && !empty($params['survey_code'])) {
return Database::insert($table_survey_invitation, $params);
$table = Database::get_course_table(TABLE_SURVEY_INVITATION);
if (!empty($params['c_id']) &&
(!empty($params['user']) || !empty($params['group_id'])) &&
!empty($params['survey_code'])
) {
return Database::insert($table, $params);
}
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.
*
@ -3493,7 +3533,7 @@ class SurveyUtil
* $param string $invitation_code - the unique invitation code for the URL
* @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();
$_course = api_get_course_info();
@ -3579,8 +3619,13 @@ class SurveyUtil
$table_survey = Database :: get_course_table(TABLE_SURVEY);
// Counting the number of people that are invited
$sql = "SELECT count(user) as total FROM $table_survey_invitation
WHERE c_id = $course_id AND survey_code = '".Database::escape_string($survey_code)."'";
$sql = "SELECT count(user) as total
FROM $table_survey_invitation
WHERE
c_id = $course_id AND
survey_code = '".Database::escape_string($survey_code)."' AND
user <> ''
";
$result = Database::query($sql);
$row = Database::fetch_array($result);
$total_invited = $row['total'];
@ -3588,7 +3633,10 @@ class SurveyUtil
// Updating the field in the survey table
$sql = "UPDATE $table_survey
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);
}
@ -3605,7 +3653,7 @@ class SurveyUtil
* @author Julio Montoya, adding c_id fixes - Dec 2012
* @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)) {
$course_info = api_get_course_info($course_code);
@ -3646,7 +3694,8 @@ class SurveyUtil
$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'];
}
}
@ -3665,7 +3714,6 @@ class SurveyUtil
if (!empty($defaults['additional_users'])) {
$defaults['additional_users'] = implode(';', $defaults['additional_users']);
}
//error_log(print_r($defaults, 1));
return $defaults;
}
@ -4342,7 +4390,6 @@ class SurveyUtil
}
break;
case UserManager::USER_FIELD_TYPE_RADIO:
$field_list_array['extra_'.$field_details[1]]['name'] = $field_details[3];
if ($field_details[7] == 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;
}
break;
case UserManager::USER_FIELD_TYPE_SELECT:
$get_lang_variables = false;
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;
}
break;
case UserManager::USER_FIELD_TYPE_SELECT_MULTIPLE:
$field_list_array['extra_'.$field_details[1]]['name'] = $field_details[3];
if ($field_details[7] == 0) {
@ -4378,7 +4423,6 @@ class SurveyUtil
$field_list_array['extra_'.$field_details[1]]['visibility'] = 1;
}
break;
case UserManager::USER_FIELD_TYPE_DATE:
$field_list_array['extra_'.$field_details[1]]['name'] = $field_details[3];
if ($field_details[7] == 0) {
@ -4387,7 +4431,6 @@ class SurveyUtil
$field_list_array['extra_'.$field_details[1]]['visibility'] = 1;
}
break;
case UserManager::USER_FIELD_TYPE_DATETIME:
$field_list_array['extra_'.$field_details[1]]['name'] = $field_details[3];
if ($field_details[7] == 0) {
@ -4396,7 +4439,6 @@ class SurveyUtil
$field_list_array['extra_'.$field_details[1]]['visibility'] = 1;
}
break;
case UserManager::USER_FIELD_TYPE_DOUBLE_SELECT:
$field_list_array['extra_'.$field_details[1]]['name'] = $field_details[3];
if ($field_details[7] == 0) {
@ -4432,7 +4474,6 @@ class SurveyUtil
$course_id = api_get_course_int_id();
$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.' ';

@ -150,7 +150,7 @@ $survey_actions .= '<a href="'.api_get_path(WEB_CODE_PATH).'survey/reporting.php
echo '<div class="actions">'.$survey_actions.'</div>';
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 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>';
@ -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 '</div>';
} 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 '</div>';
}

@ -235,14 +235,19 @@ if ($form->validate()) {
$table_survey = Database :: get_course_table(TABLE_SURVEY);
// Counting the number of people that are invited
$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);
$row = Database::fetch_array($result);
$total_invited = $row['invited'];
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 .= '<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');
Display::display_normal_message($message, false);
Display::display_confirmation_message($total_count.' '.get_lang('InvitationsSend'));

Loading…
Cancel
Save