|
@@ -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.' ';
|
|
|
|