/** * Retrieves the token attribute value from the related token table * * @param mixed $surveyid The survey ID * @param mixed $attrName The token-attribute field name * @param mixed $token The token code * @return string The token attribute value (or null on error) */ function GetAttributeValue($surveyid, $attrName, $token) { global $dbprefix, $connect; $attrName = strtolower($attrName); if ($attrName == 'callattempts' || $attrName == 'onappointment' || $attrName == 'perccomplete' || $attrName == 'messagesleft') { include_once "quexs.php"; $quexs_operator_id = get_operator_id(); $quexs_case_id = get_case_id($quexs_operator_id); if ($quexs_case_id) { if ($attrName == 'callattempts') { return get_call_attempts($quexs_case_id); } else { if ($attrName == 'onappointment') { return is_on_appointment($quexs_case_id, $quexs_operator_id); } else { if ($attrName == 'perccomplete') { return get_percent_complete($quexs_case_id); } else { if ($attrName == 'messagesleft') { return get_messages_left($quexs_case_id); } } } } } else { return 0; } } else { if (!tableExists('tokens_' . $surveyid) || !in_array($attrName, GetTokenConditionsFieldNames($surveyid))) { return null; } } $sanitized_token = $connect->qstr($token, get_magic_quotes_gpc()); $surveyid = sanitize_int($surveyid); $query = "SELECT {$attrName} FROM {$dbprefix}tokens_{$surveyid} WHERE token={$sanitized_token}"; $result = db_execute_num($query); $count = $result->RecordCount(); if ($count != 1) { return null; } else { $row = $result->FetchRow(); return $row[0]; } }
/** * Replace placeholders in a string with data for this case/operator * * @param string $string The string * @param int $operator_id The operator id * @param int $case_id The case id * @return string The string with replaced text * */ function quexs_template_replace($string) { $operator_id = get_operator_id(); $case_id = get_case_id($operator_id); $respondent_id = get_respondent_id($case_id, $operator_id); while (stripos($string, "{Respondent:") !== false) { $answreplace = substr($string, stripos($string, "{Respondent:"), stripos($string, "}", stripos($string, "{Respondent:")) - stripos($string, "{Respondent:") + 1); $answreplace2 = substr($answreplace, 12, stripos($answreplace, "}", stripos($answreplace, "{Respondent:")) - 12); $answreplace3 = get_respondent_variable($answreplace2, $respondent_id); $string = str_replace($answreplace, $answreplace3, $string); } while (stripos($string, "{Operator:") !== false) { $answreplace = substr($string, stripos($string, "{Operator:"), stripos($string, "}", stripos($string, "{Operator:")) - stripos($string, "{Operator:") + 1); $answreplace2 = substr($answreplace, 10, stripos($answreplace, "}", stripos($answreplace, "{Operator:")) - 10); $answreplace3 = get_operator_variable($answreplace2, $operator_id); $string = str_replace($answreplace, $answreplace3, $string); } while (stripos($string, "{Sample:") !== false) { $answreplace = substr($string, stripos($string, "{Sample:"), stripos($string, "}", stripos($string, "{Sample:")) - stripos($string, "{Sample:") + 1); $answreplace2 = substr($answreplace, 8, stripos($answreplace, "}", stripos($answreplace, "{Sample:")) - 8); $answreplace3 = get_sample_variable($answreplace2, $case_id); $string = str_replace($answreplace, $answreplace3, $string); } while (stripos($string, "{Outcome:") !== false) { $answreplace = substr($string, stripos($string, "{Outcome:"), stripos($string, "}", stripos($string, "{Outcome:")) - stripos($string, "{Outcome:") + 1); $answreplace2 = substr($answreplace, 9, stripos($answreplace, "}", stripos($answreplace, "{Outcome:")) - 9); $answreplace3 = get_outcome_variable($answreplace2); $string = str_replace($answreplace, $answreplace3, $string); } while (stripos($string, "{CALLATTEMPTS}") !== false) { $call_attempts = get_call_attempts($case_id); $string = str_ireplace("{CALLATTEMPTS}", $call_attempts, $string); } while (stripos($string, "{RESPONDENTSELECTIONURL}") !== false) { $url = get_respondent_selection_url(); $string = str_ireplace("{RESPONDENTSELECTIONURL}", $url, $string); } while (stripos($string, "{ONAPPOINTMENT}") !== false) { $on_appointment = is_on_appointment($case_id, $operator_id); $str = T_("Not on an appointment"); if ($on_appointment) { $str = T_("On an appointment"); } $string = str_ireplace("{ONAPPOINTMENT}", $str, $string); } if (stripos($string, "{PERIODOFDAY}") !== false) { $string = str_ireplace("{PERIODOFDAY}", get_period_of_day($respondent_id), $string); } if (stripos($string, "{APPOINTMENTDATE}") !== false) { $string = str_ireplace("{APPOINTMENTDATE}", get_appointment_date($respondent_id), $string); } if (stripos($string, "{APPOINTMENTTIME}") !== false) { $string = str_ireplace("{APPOINTMENTTIME}", get_appointment_time($respondent_id), $string); } if (stripos($string, "{APPOINTMENTNUMBER}") !== false) { $string = str_ireplace("{APPOINTMENTNUMBER}", get_appointment_number($respondent_id), $string); } if (stripos($string, "{PERCCOMPLETE}") !== false) { $string = str_ireplace("{PERCCOMPLETE}", round(get_percent_complete($case_id), 0), $string); } return $string; }