diff --git a/main/survey/survey.lib.php b/main/survey/survey.lib.php index 11e9f4d016..19e005e901 100755 --- a/main/survey/survey.lib.php +++ b/main/survey/survey.lib.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.' '; diff --git a/main/survey/survey.php b/main/survey/survey.php index a4578fb1f6..da558eae9f 100755 --- a/main/survey/survey.php +++ b/main/survey/survey.php @@ -150,7 +150,7 @@ $survey_actions .= ''.$survey_actions.''; if ($survey_data['survey_type'] == 0) { - echo '
'; + echo '
'; echo ''.Display::return_icon('yesno.png', get_lang('YesNo'), null, ICON_SIZE_BIG).''; echo ''.Display::return_icon('mcua.png', get_lang('UniqueSelect'), null, ICON_SIZE_BIG).'
'; echo ''.Display::return_icon('mcma.png', get_lang('MultipleResponse'), null, ICON_SIZE_BIG).''; @@ -162,7 +162,7 @@ if ($survey_data['survey_type'] == 0) { echo ''.Display::return_icon('page_end.png', get_lang('Pagebreak'), null, ICON_SIZE_BIG).''; echo '
'; } else { - echo '
'; + echo '
'; echo '
'; echo '
'; } diff --git a/main/survey/survey_invite.php b/main/survey/survey_invite.php index 0bf5ada244..d65bd807ef 100755 --- a/main/survey/survey_invite.php +++ b/main/survey/survey_invite.php @@ -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 = ''.$survey_data['answered'].' '; + $message = ''. + $survey_data['answered'].' '; $message .= get_lang('HaveAnswered').' '; - $message .= ''.$total_invited.' '; + $message .= ''. + $total_invited.' '; $message .= get_lang('WereInvited'); Display::display_normal_message($message, false); Display::display_confirmation_message($total_count.' '.get_lang('InvitationsSend'));