Squalo vabila - v grobem zakljucena

This commit is contained in:
pero1203 2021-04-23 12:20:53 +02:00
parent b428afd40b
commit f24bb5c298
7 changed files with 329 additions and 136 deletions

View File

@ -849,6 +849,17 @@ class SurveyAdminAjax {
$this->anketa = $_POST['anketa'];
}
// Squalo vklopljen
if(isset($_POST['squalo_mode'])){
// Squalo vklopljen
if($_POST['squalo_mode'] == '1'){echo $_POST['squalo_mode'];
sisplet_query("UPDATE srv_anketa_module SET vrednost='2' WHERE ank_id='".$this->anketa."' AND modul='email'");
}
// Squalo izklopljen
else{
sisplet_query("UPDATE srv_anketa_module SET vrednost='1' WHERE ank_id='".$this->anketa."' AND modul='email'");
$MA = new MailAdapter($this->anketa, $type='alert');
$settings = $MA->getSettingsFromRequest($_REQUEST);
@ -856,6 +867,16 @@ class SurveyAdminAjax {
$MA->setSettings($mode, $settings);
}
}
else{
$MA = new MailAdapter($this->anketa, $type='alert');
$settings = $MA->getSettingsFromRequest($_REQUEST);
$mode = $_REQUEST['SMTPMailMode'];
$MA->setSettings($mode, $settings);
}
}
} elseif ($_GET['m'] == 'predvidenicasi') { // predvideni casi
foreach($_POST AS $key => $val) {
if (substr($key, 0, 7) == 'timing_') {

View File

@ -485,8 +485,7 @@ class SurveyCopy {
'edit_time' => "NOW()",
'folder' => "'1'",
'forum' => "'0'",
'thread' => "'0'",
'old_email_style' => "'0'");
'thread' => "'0'");
# user_id ni enak če je anketa na drugem strežniku zato v tem primeru damo -1 da na drugem strežniku vemo da je to kopija od drugod
if (self::$destSite != 0) {

View File

@ -0,0 +1,85 @@
<?php
/*
* Class, ki skrbi za mobile izris admin vmesnika
*
*/
class MobileSurveyAdmin extends SurveyAdmin{
function __construct(){
global $site_url;
}
// Izris glave z menijem
public function displayMobileHeader(){
echo '<div class="mobile_header">';
// Meni
$this->displayMobileMenu();
// Logo
echo '<div class="mobile_logo"></div>';
echo '</div>';
}
// Izris menija
private function displayMobileMenu(){
echo '<div class="mobile_menu">';
// Izris uporabniških podatkov v dropdownu
$this->displayMobileMenuUser();
// Izris glavne navigacije v dropdownu
$this->displayMobileMenuNavigation();
// Izris akcij za anketo (kopiraj, brisi...) v dropdownu
$this->displayMobileMenuActions();
echo '</div>';
}
// Izris uporabniških podatkov v dropdownu
private function displayMobileMenuUser(){
echo '<div class="mobile_menu_user">';
echo '</div>';
}
// Izris glavne navigacije v dropdownu
private function displayMobileMenuNavigation(){
echo '<div class="mobile_menu_navigation">';
echo '<span class="">Urejanje</span>';
echo '<span class="">Testiranje</span>';
echo '<span class="">Objava</span>';
echo '<span class="">Podatki</span>';
echo '<span class="">Analiza</span>';
echo '</div>';
}
// Izris akcij za anketo (kopiraj, brisi...) v dropdownu
private function displayMobileMenuActions(){
echo '<div class="mobile_menu_actions">';
echo '<span class="">Kopiraj anketo</span>';
echo '<span class="">Brisi anketo</span>';
echo '</div>';
}
}

View File

@ -13,6 +13,7 @@ define('GROUP_PAGINATE', 4); # po kolko strani grupira pri paginaciji
define('REC_ON_PAGE', 10); # kolko zapisov na stran pri urejanju respondentov
define('REC_ON_SEND_PAGE', 20); # kolko zapisov na stran pri pošiljanju
define('NOTIFY_INFO1KA', 5); # Nad koliko emaili obveščamo info@1ka.si
set_time_limit(2400); # 30 minut
class SurveyInvitationsNew {
@ -3884,7 +3885,7 @@ class SurveyInvitationsNew {
// Loop po prejemnikih in posiljanje mailov
$squalo = new SurveyInvitationsSqualo($this->sid);
if($squalo->squaloActive()){
if($squalo->getSqualoActive()){
$sending_results = $squalo->sendSqualoInvitations($sql_query, $sending_data);
}
else{
@ -5931,32 +5932,22 @@ class SurveyInvitationsNew {
$delimit = $convertTypes['delimit'];
}
#echo $delimit.$lang['srv_inv_recipients_count_inv'];
echo $convertTypes['newLine'];
$sqlString = "SELECT sir.*, IF(sirp.name IS NULL, '".$lang['srv_invitation_new_templist_author']."', sirp.name) AS list_name "
." FROM srv_invitations_recipients AS sir"
." LEFT JOIN srv_invitations_recipients_profiles AS sirp ON (sir.list_id = sirp.pid)"
#." LEFT JOIN srv_invitations_archive_recipients AS siar ON (sir.id = siar.rec_id)"
." WHERE sir.ank_id = '$this->sid' AND deleted='0' ORDER BY id";
/*
." FROM srv_invitations_recipients AS sir"
." LEFT JOIN srv_invitations_recipients_profiles AS sirp ON (sir.list_id = sirp.pid)"
." LEFT JOIN srv_invitations_archive_recipients AS siar ON (sir.id = siar.rec_id)"
." WHERE sir.ank_id = '$this->sid' AND deleted='0' GROUP BY siar.rec_id ORDER BY id";
*/
#$sqlString = "SELECT * FROM srv_invitations_recipients WHERE ank_id = '$this->sid' AND deleted='0' ORDER BY id";
$sqlQuery = sisplet_query($sqlString);
if (mysqli_num_rows($sqlQuery)) {
while ($sql_row = mysqli_fetch_assoc($sqlQuery)) {
foreach ($this->inv_variables_excel AS $vkey => $inv_variable) {
echo $sql_row[$inv_variable].$convertTypes['delimit'];
}
#echo $sql_row['count_inv'];
echo $convertTypes['newLine'];
}
}
@ -10314,21 +10305,22 @@ class SurveyInvitationsNew {
// Squalo
$squalo = new SurveyInvitationsSqualo($this->sid);
if($squalo->squaloEnabled()){
if($squalo->getSqualoEnabled()){
// Vklop squalo
echo '<div class="squalo_switch">';
echo '<div class="squalo_switch"><p>';
echo '<span class="bold">'.$lang['srv_squalo'].':</span>&nbsp;';
echo '<label><input type="checkbox" name="SqualoMode" value="1" '.($squalo->squaloActive() ? 'checked ="checked" ' : '').' style="vertical-align:-2px;" onclick="$(\'#send_mail_mode0, #send_mail_mode1\').hide(); $(\'#send_mail_mode2\').show();">';
echo '<input type="hidden" name="squalo_mode" value="0">';
echo '<label><input type="checkbox" name="squalo_mode" id="squalo_mode" value="1" '.($squalo->getSqualoActive() ? 'checked ="checked" ' : '').' style="vertical-align:-2px;" onclick="squaloSwitch();">';
echo $lang['srv_squalo_sending'].' </label>';
echo '</div>';
echo '</p></div>';
// Squalo nastavitve...
echo '<div class="squalo_settings '.(!$squalo->squaloActive() ? ' displayNone' : '').'">';
echo '<div class="squalo_settings '.(!$squalo->getSqualoActive() ? ' displayNone' : '').'">';
echo $lang['srv_squalo_active'];
@ -10337,7 +10329,7 @@ class SurveyInvitationsNew {
// Izbira streznika
echo '<div class="mail_mode_switch '.($squalo->squaloActive() ? ' displayNone' : '').'">';
echo '<div class="mail_mode_switch '.($squalo->getSqualoActive() ? ' displayNone' : '').'">';
// Opozorilo, ce imamo vklopljena vabila, da gre za iste nastavitve
echo '<p class="red bold">'.$lang['srv_email_server_settings_warning'].'</p>';
@ -10372,7 +10364,7 @@ class SurveyInvitationsNew {
#1KA
$enkaSettings = $MA->get1KASettings($raziskave=true);
echo '<div id="send_mail_mode0" '.(!$MA->is1KA() || $squalo->squaloActive() ? ' class="displayNone"' : '').'>';
echo '<div id="send_mail_mode0" '.(!$MA->is1KA() || $squalo->getSqualoActive() ? ' class="displayNone"' : '').'>';
echo '<br /><span class="bold">'.$lang['srv_email_setting_settings'].'</span>';
echo '<br />';
# from
@ -10403,7 +10395,7 @@ class SurveyInvitationsNew {
#GMAIL - Google
$enkaSettings = $MA->getGoogleSettings();
echo '<div id="send_mail_mode1" '.(!$MA->isGoogle() || $squalo->squaloActive() ? ' class="displayNone"' : '').'>';
echo '<div id="send_mail_mode1" '.(!$MA->isGoogle() || $squalo->getSqualoActive() ? ' class="displayNone"' : '').'>';
echo '<br /><span class="italic">'.$lang['srv_email_setting_adapter1_note'].'</span><br />';
echo '<br /><span class="bold">'.$lang['srv_email_setting_settings'].'</span><br />';
# from
@ -10419,7 +10411,7 @@ class SurveyInvitationsNew {
#SMTP
$enkaSettings = $MA->getSMTPSettings();
echo '<div id="send_mail_mode2" '.(!$MA->isSMTP() || $squalo->squaloActive() ? ' class="displayNone"' : '').'>';
echo '<div id="send_mail_mode2" '.(!$MA->isSMTP() || $squalo->getSqualoActive() ? ' class="displayNone"' : '').'>';
echo '<br /><span class="italic">'.$lang['srv_email_setting_adapter2_note'].'</span><br />';
echo '<br /><span class="bold">'.$lang['srv_email_setting_settings'].'</span><br />';
# from - NICE

View File

@ -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
// 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 - zabelezimo kot da ni noben ok poslan
if(!$squalo_sending_result){
// Napaka pri squalo posiljanju oz. dodajanju - zabelezimo kot da ni noben ok poslan
if(!$squalo_sending_result || !$list_id){
$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,14 +200,26 @@ 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();
$send_users_data = array();
foreach($send_users_data as $key => $val){
$val['status'] = 1;
$send_users_data[$key] = $val;
}
$send_error = array();
$send_error_ids = array();
@ -217,11 +249,19 @@ class SurveyInvitationsSqualo {
}
}
}
}
// č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();
@ -253,10 +293,12 @@ class SurveyInvitationsSqualo {
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 = $this->inv_variables_link[$spremenljivka['variable']];
$_user_variable = $inv_variables_link[$spremenljivka['variable']];
if (trim($_user_data[$_user_variable]) != '' && $_user_data[$_user_variable] != null) {
if($spremenljivka['variable'] == 'odnos')
@ -266,27 +308,25 @@ class SurveyInvitationsSqualo {
}
}
}
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 = "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".$this->db_table." (spr_id, vre_id, usr_id) VALUES ";
$strInsert = "INSERT INTO srv_data_vrednost".$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;
}
}

View File

@ -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();
}
}

View File

@ -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";