isGoogle() || $squalo->getSqualoActive() ? ' class="displayNone"' : '').'>';
echo '
';
# from
@@ -10419,7 +10411,7 @@ class SurveyInvitationsNew {
#SMTP
$enkaSettings = $MA->getSMTPSettings();
- echo '
isSMTP() || $squalo->squaloActive() ? ' class="displayNone"' : '').'>';
+ echo '
isSMTP() || $squalo->getSqualoActive() ? ' class="displayNone"' : '').'>';
echo '
'.$lang['srv_email_setting_adapter2_note'].'
';
echo '
'.$lang['srv_email_setting_settings'].'
';
# from - NICE
diff --git a/admin/survey/modules/mod_squalo/class.SurveyInvitationsSqualo.php b/admin/survey/modules/mod_squalo/class.SurveyInvitationsSqualo.php
index 0e4e029c3..d6638b008 100644
--- a/admin/survey/modules/mod_squalo/class.SurveyInvitationsSqualo.php
+++ b/admin/survey/modules/mod_squalo/class.SurveyInvitationsSqualo.php
@@ -26,11 +26,11 @@ class SurveyInvitationsSqualo {
}
- public function squaloEnabled(){
+ public function getSqualoEnabled(){
return $this->squaloEnabled;
}
- public function squaloActive(){
+ public function getSqualoActive(){
return $this->squaloActive;
}
@@ -53,12 +53,19 @@ class SurveyInvitationsSqualo {
if(!isset($squalo_user) || $squalo_user == '' || !isset($squalo_key) || $squalo_key == '')
return false;
- return false;
+ return true;
}
// Preverimo ce je squalo vklopljen na anketi
private function checkSqualoActive(){
+ $vabila_type = SurveyInfo::getSurveyModules('email');
+
+ // Vklopljen squalo
+ if($vabila_type === '2'){
+ return true;
+ }
+
return false;
}
@@ -72,11 +79,12 @@ class SurveyInvitationsSqualo {
// Preverimo ce je vklopljen modul za volitve
$voting = SurveyInfo::getInstance()->checkSurveyModule('voting');
- # če mamo SEO
+ // Ce mamo SEO
$nice_url = SurveyInfo::getSurveyLink();
- // Polovimo sistemske spremenljivke
- $sys_vars = $this->getSystemVars();
+ // Ali imamo individualizirana vabila s kodo
+ $surveySettings = SurveyInfo::getInstance()->getSurveyRow();
+ $individual = (int)$surveySettings['individual_invitation'];
# zakeširamo user_id za datapiping
$arryDataPiping = array();
@@ -113,7 +121,7 @@ class SurveyInvitationsSqualo {
$duplicated[$email] = 1;
- $individual = (int)$this->surveySettings['individual_invitation'];
+
if ( ($individual == 1 && trim($email) != '' && trim($password) != '') || ($individual == 0 && trim($email) != '') ){
@@ -135,7 +143,7 @@ class SurveyInvitationsSqualo {
'urllink' => $url,
'firstname' => $sql_row['firstname'],
'lastname' => $sql_row['lastname'],
- 'email' => $sql_row['email'],
+ //'email' => $sql_row['email'],
'code' => $sql_row['password'],
'password' => $sql_row['password'],
'phone' => $sql_row['phone'],
@@ -145,8 +153,16 @@ class SurveyInvitationsSqualo {
$recipients[] = array(
'email' => $sql_row['email'],
+ 'name' => $sql_row['firstname'],
+ 'surname' => $sql_row['lastname'],
'custom_attributes' => $custom_attributes
- );
+ );
+
+ $_user_data = $sql_row;
+ $send_users_data[] = $_user_data;
+
+ $send_emails[] = $email;
+ $send_ids[] = $sql_row['id'];
}
}
@@ -156,21 +172,25 @@ class SurveyInvitationsSqualo {
$list_id = $this->createList($list_name, $recipients);
- // Ustvarimo mail in posljemo
- $squalo_sending_result = $this->sendEmail($sending_data['subject_text'], $sending_data['body_text'], $list_id, $sending_data['from_email'], $sending_data['from_name'], $sending_data['reply_to_email']);
+ // Ce so vsi prejemniki ok dodani na seznam, ustvarimo mail in posljemo
+ if($list_id != false)
+ $squalo_sending_result = $this->sendEmail($sending_data['subject_text'], $sending_data['body_text'], $list_id, $sending_data['from_email'], $sending_data['from_name'], $sending_data['reply_to_email']);
+
+ // Napaka pri squalo posiljanju oz. dodajanju - zabelezimo kot da ni noben ok poslan
+ if(!$squalo_sending_result || !$list_id){
- // Napaka pri squalo posiljanju - zabelezimo kot da ni noben ok poslan
- if(!$squalo_sending_result){
+ $send_error = $send_emails;
+ $send_error_ids = $send_ids;
+ foreach($send_users_data as $key => $val){
+ $val['status'] = 2;
+ $send_users_data[$key] = $val;
+ }
+
$send_ok = array();
$send_ok_ids = array();
- $send_users_data = array();
-
- $send_error = array();
- $send_error_ids = array();
-
# updejtamo status za errorje
if (count($send_error_ids) > 0) {
@@ -180,113 +200,133 @@ class SurveyInvitationsSqualo {
}
}
+ $results = array(
+ 'send_ok' => $send_ok,
+ 'send_ok_ids' => $send_ok_ids,
+ 'send_users_data' => $send_users_data,
+ 'send_error' => $send_error,
+ 'send_error_ids' => $send_error_ids,
+ );
+
+ return $results;
}
+
+
// Ok squalo posiljanje - zabelezimo da so bili vsi ok poslani
- else{
+ $send_ok = $send_emails;
+ $send_ok_ids = $send_ids;
- $send_ok = array();
- $send_ok_ids = array();
+ foreach($send_users_data as $key => $val){
+ $val['status'] = 1;
+ $send_users_data[$key] = $val;
+ }
- $send_users_data = array();
+ $send_error = array();
+ $send_error_ids = array();
- $send_error = array();
- $send_error_ids = array();
+ // updejtamo userja da mu je bilo poslano - SQUALO je vedno vse ok
+ if (count($send_ok_ids) > 0) {
+
+ $sqlQuery = sisplet_query("UPDATE srv_invitations_recipients SET sent='1', date_sent='".$sending_data['date_sent']."' WHERE id IN (".implode(',',$send_ok_ids).")");
+ if (!$sqlQuery) {
+ $error = mysqli_error($GLOBALS['connect_db']);
+ }
+
+ // statuse popravimo samo če vabilo še ni bilo poslano ali je bila napaka
+ $sqlQuery = sisplet_query("UPDATE srv_invitations_recipients SET last_status='1' WHERE id IN (".implode(',',$send_ok_ids).") AND last_status IN ('0','2')");
+ if (!$sqlQuery) {
+ $error = mysqli_error($GLOBALS['connect_db']);
+ }
- // updejtamo userja da mu je bilo poslano - SQUALO je vedno vse ok
- if ( count($send_ok_ids) > 0) {
-
- $sqlQuery = sisplet_query("UPDATE srv_invitations_recipients SET sent='1', date_sent='".$sending_data['date_sent']."' WHERE id IN (".implode(',',$send_ok_ids).")");
+ // Pri volitvah za sabo pobrisemo podatke preko katerih bi lahko povezali prejemnike z responsi
+ if($voting){
+ $sqlQuery = sisplet_query("UPDATE srv_invitations_recipients
+ SET cookie='', password=''
+ WHERE id IN (".implode(',',$send_ok_ids).") AND sent='1' AND last_status='1' AND ank_id='".$this->anketa."'
+ ");
if (!$sqlQuery) {
$error = mysqli_error($GLOBALS['connect_db']);
}
-
- // statuse popravimo samo če vabilo še ni bilo poslano ali je bila napaka
- $sqlQuery = sisplet_query("UPDATE srv_invitations_recipients SET last_status='1' WHERE id IN (".implode(',',$send_ok_ids).") AND last_status IN ('0','2')");
- if (!$sqlQuery) {
- $error = mysqli_error($GLOBALS['connect_db']);
- }
-
- // Pri volitvah za sabo pobrisemo podatke preko katerih bi lahko povezali prejemnike z responsi
- if($voting){
- $sqlQuery = sisplet_query("UPDATE srv_invitations_recipients
- SET cookie='', password=''
- WHERE id IN (".implode(',',$send_ok_ids).") AND sent='1' AND last_status='1' AND ank_id='".$this->anketa."'
- ");
- if (!$sqlQuery) {
- $error = mysqli_error($GLOBALS['connect_db']);
- }
- }
}
}
// če mamo personalizirana email vabila, userje dodamo v bazo
- /*if ($individual == 1) {
+ if ($individual == 1) {
+
+ if (SurveyInfo::getInstance()->getSurveyColumn('db_table') == 1)
+ $db_table = '_active';
+
+ $inv_variables_link = array('email'=>'email','geslo'=>'password','ime'=>'firstname','priimek'=>'lastname','naziv'=>'salutation','telefon'=>'phone','drugo'=>'custom','odnos'=>'relation','last_status'=>'last_status','sent'=>'sent','responded'=>'responded','unsubscribed'=>'unsubscribed');
+
+ $sys_vars = $this->getSystemVars();
+
+ foreach($send_users_data as $_user_data){
+
+ // dodamo še userja v srv_user da je kompatibilno s staro logiko
+ $strInsertDataText = array();
+ $strInsertDataVrednost = array();
+
+ // Pri volitvah zaradi anonimizacije ignoriramo vse identifikatorje
+ if($voting){
+ $_r = sisplet_query("INSERT INTO srv_user
+ (ank_id, cookie, pass, last_status, inv_res_id)
+ VALUES
+ ('".$this->anketa."', '".$_user_data['cookie']."', '".$_user_data['password']."', '".$_user_data['status']."', '-1') ON DUPLICATE KEY UPDATE cookie = '".$_user_data['cookie']."', pass='".$_user_data['password']."'
+ ");
+
+ // Ce ne belezimo parapodatka za cas responsa, anonimno zabelezimo cas zadnjega responsa
+ sisplet_query("UPDATE srv_anketa SET last_response_time=NOW() WHERE id='".$this->anketa."'");
+ }
+ else{
+ $_r = sisplet_query("INSERT INTO srv_user
+ (ank_id, email, cookie, pass, last_status, time_insert, inv_res_id)
+ VALUES
+ ('".$this->anketa."', '".$_user_data['email']."', '".$_user_data['cookie']."', '".$_user_data['password']."', '".$_user_data['status']."', NOW(), '".$_user_data['id']."') ON DUPLICATE KEY UPDATE cookie = '".$_user_data['cookie']."', pass='".$_user_data['password']."'
+ ");
+ }
+ $usr_id = mysqli_insert_id($GLOBALS['connect_db']);
+
+ if ($usr_id) {
+
+ // dodamo še srv_userbase in srv userstatus
+ sisplet_query("INSERT INTO srv_userbase (usr_id, tip, datetime, admin_id) VALUES ('".$usr_id."','0',NOW(),'".$global_user_id."')");
+ sisplet_query("INSERT INTO srv_userstatus (usr_id, tip, status, datetime) VALUES ('".$usr_id."', '0', '0', NOW())");
+
+
+
+ // dodamo še podatke za posameznega userja za sistemske spremenljivke
+ foreach ($sys_vars AS $sid => $spremenljivka) {
+
+ $_user_variable = $inv_variables_link[$spremenljivka['variable']];
+
+ if (trim($_user_data[$_user_variable]) != '' && $_user_data[$_user_variable] != null) {
+ if($spremenljivka['variable'] == 'odnos')
+ $strInsertDataVrednost[] = "('".$sid."','".$spremenljivka['vre_id'][trim($_user_data[$_user_variable])]."','".$usr_id."')";
+ else
+ $strInsertDataText[] = "('".$sid."','".$spremenljivka['vre_id']."','".trim($_user_data[$_user_variable])."','".$usr_id."')";
+ }
+ }
+ }
- // dodamo še userja v srv_user da je kompatibilno s staro logiko
- $strInsertDataText = array();
- $strInsertDataVrednost = array();
-
- // Pri volitvah zaradi anonimizacije ignoriramo vse identifikatorje
- if($voting){
- $_r = sisplet_query("INSERT INTO srv_user
- (ank_id, cookie, pass, last_status, inv_res_id)
- VALUES
- ('".$this->anketa."', '".$_user_data['cookie']."', '".$_user_data['password']."', '".$_user_data['status']."', '-1') ON DUPLICATE KEY UPDATE cookie = '".$_user_data['cookie']."', pass='".$_user_data['password']."'
- ");
-
- // Ce ne belezimo parapodatka za cas responsa, anonimno zabelezimo cas zadnjega responsa
- sisplet_query("UPDATE srv_anketa SET last_response_time=NOW() WHERE id='".$this->anketa."'");
- }
- else{
- $_r = sisplet_query("INSERT INTO srv_user
- (ank_id, email, cookie, pass, last_status, time_insert, inv_res_id)
- VALUES
- ('".$this->anketa."', '".$_user_data['email']."', '".$_user_data['cookie']."', '".$_user_data['password']."', '".$_user_data['status']."', NOW(), '".$_user_data['id']."') ON DUPLICATE KEY UPDATE cookie = '".$_user_data['cookie']."', pass='".$_user_data['password']."'
- ");
- }
- $usr_id = mysqli_insert_id($GLOBALS['connect_db']);
-
- if ($usr_id) {
-
- // dodamo še srv_userbase in srv userstatus
- sisplet_query("INSERT INTO srv_userbase (usr_id, tip, datetime, admin_id) VALUES ('".$usr_id."','0',NOW(),'".$global_user_id."')");
- sisplet_query("INSERT INTO srv_userstatus (usr_id, tip, status, datetime) VALUES ('".$usr_id."', '0', '0', NOW())");
+ // Pri volitvah zaradi anonimizacije ne vsatvimo nicesar v sistemske spremenljivke
+ if(!$voting){
- // dodamo še podatke za posameznega userja za sistemske spremenljivke
- foreach ($sys_vars AS $sid => $spremenljivka) {
-
- $_user_variable = $this->inv_variables_link[$spremenljivka['variable']];
-
- if (trim($_user_data[$_user_variable]) != '' && $_user_data[$_user_variable] != null) {
- if($spremenljivka['variable'] == 'odnos')
- $strInsertDataVrednost[] = "('".$sid."','".$spremenljivka['vre_id'][trim($_user_data[$_user_variable])]."','".$usr_id."')";
- else
- $strInsertDataText[] = "('".$sid."','".$spremenljivka['vre_id']."','".trim($_user_data[$_user_variable])."','".$usr_id."')";
+ // vstavimo v srv_data_text
+ if (count($strInsertDataText) > 0) {
+ $strInsert = "INSERT INTO srv_data_text".$db_table." (spr_id, vre_id, text, usr_id) VALUES ";
+ $strInsert .= implode(',',$strInsertDataText);
+ sisplet_query($strInsert);
+ }
+ // vstavimo v srv_data_vrednost
+ if (count($strInsertDataVrednost) > 0) {
+ $strInsert = "INSERT INTO srv_data_vrednost".$db_table." (spr_id, vre_id, usr_id) VALUES ";
+ $strInsert .= implode(',',$strInsertDataVrednost);
+ sisplet_query($strInsert);
}
}
- }
- else {
- // lahko da user že obstaja in je šlo za duplicated keys
- }
-
- // Pri volitvah zaradi anonimizacije ne vsatvimo nicesar v sistemske spremenljivke
- if(!$voting){
-
- // vstavimo v srv_data_text
- if (count($strInsertDataText) > 0) {
- $strInsert = "INSERT INTO srv_data_text".$this->db_table." (spr_id, vre_id, text, usr_id) VALUES ";
- $strInsert .= implode(',',$strInsertDataText);
- sisplet_query($strInsert);
- }
- // vstavimo v srv_data_vrednost
- if (count($strInsertDataVrednost) > 0) {
- $strInsert = "INSERT INTO srv_data_vrednost".$this->db_table." (spr_id, vre_id, usr_id) VALUES ";
- $strInsert .= implode(',',$strInsertDataVrednost);
- sisplet_query($strInsert);
- }
- }
- }*/
+ }
+ }
$results = array(
@@ -327,6 +367,7 @@ class SurveyInvitationsSqualo {
// Napaka pri ustvarjanju seznama
if($recipient_id == '0'){
echo 'Napaka pri dodajanju prejemnika '.$email.' na Squalo seznam.';
+ return false;
}
}
@@ -365,6 +406,7 @@ class SurveyInvitationsSqualo {
return $result;
}
+
private static function squaloDatapiping($text){
$text_fixed = str_replace(
@@ -400,4 +442,39 @@ class SurveyInvitationsSqualo {
return $text_fixed;
}
+
+ private function getSystemVars(){
+
+ $inv_variables = array('email','password','ime','priimek','naziv','telefon','drugo','odnos');
+
+ // polovimo sistemske spremenljivke z vrednostmi
+ $qrySistemske = sisplet_query("SELECT s.id, s.naslov, s.variable
+ FROM srv_spremenljivka s, srv_grupa g
+ WHERE s.sistem='1' AND s.gru_id=g.id AND g.ank_id='".$this->anketa."' AND variable IN ("."'" . implode("','",$inv_variables)."')
+ ORDER BY g.vrstni_red, s.vrstni_red
+ ");
+ $sys_vars = array();
+ $sys_vars_ids = array();
+
+ while ($row = mysqli_fetch_assoc($qrySistemske)) {
+ $sys_vars[$row['id']] = array('id'=>$row['id'], 'variable'=>$row['variable'],'naslov'=>$row['naslov']);
+ $sys_vars_ids[] = $row['id'];
+ }
+
+ $sqlVrednost = sisplet_query("SELECT spr_id, id AS vre_id, vrstni_red, variable FROM srv_vrednost WHERE spr_id IN(".implode(',',$sys_vars_ids).") ORDER BY vrstni_red ASC ");
+ while ($row = mysqli_fetch_assoc($sqlVrednost)) {
+
+ // Ce gre za odnos imamo radio
+ if($sys_vars[$row['spr_id']]['variable'] == 'odnos'){
+
+ if(!isset($sys_vars[$row['spr_id']]['vre_id'][$row['vrstni_red']]))
+ $sys_vars[$row['spr_id']]['vre_id'][$row['variable']] = $row['vre_id'];
+ }
+ elseif (!isset($sys_vars[$row['spr_id']]['vre_id'])) {
+ $sys_vars[$row['spr_id']]['vre_id'] = $row['vre_id'];
+ }
+ }
+
+ return $sys_vars;
+ }
}
\ No newline at end of file
diff --git a/admin/survey/script/invitations.js b/admin/survey/script/invitations.js
index 289b330d8..ec31e91fc 100644
--- a/admin/survey/script/invitations.js
+++ b/admin/survey/script/invitations.js
@@ -1745,3 +1745,18 @@ function smtpAAIAccept(){
else
$('#aai_smtp_button').hide();
}
+
+
+// SQUALO
+function squaloSwitch(){
+
+ if($('#squalo_mode').prop('checked')){
+ $('#send_mail_mode0, #send_mail_mode1, #send_mail_mode2, .mail_mode_switch').hide();
+ //$('.squalo_settings').show();
+ }
+ else{
+ $('.squalo_settings').hide();
+ $('#send_mail_mode2, .mail_mode_switch').show();
+ }
+}
+
diff --git a/sql/update2.sql b/sql/update2.sql
index 6f3934efe..f504c1957 100644
--- a/sql/update2.sql
+++ b/sql/update2.sql
@@ -9487,3 +9487,7 @@ UPDATE misc SET value='21.03.17' WHERE what="version";
ALTER TABLE srv_anketa ADD last_response_time DATETIME NOT NULL AFTER edit_time;
UPDATE misc SET value='21.03.30' WHERE what="version";
+
+ALTER TABLE srv_anketa DROP COLUMN old_email_style;
+
+UPDATE misc SET value='21.03.30' WHERE what="version";