diff --git a/admin/survey/SurveyAdminSettings.php b/admin/survey/SurveyAdminSettings.php index 502edd6a2..912eadb4e 100644 --- a/admin/survey/SurveyAdminSettings.php +++ b/admin/survey/SurveyAdminSettings.php @@ -1392,16 +1392,21 @@ class SurveyAdminSettings { $browser = SurveySetting::getInstance()->getSurveyMiscSetting('survey_browser'); $referal = SurveySetting::getInstance()->getSurveyMiscSetting('survey_referal'); $date = SurveySetting::getInstance()->getSurveyMiscSetting('survey_date'); - + + // Preverimo ce je vklopljen modul za volitve - potem ne pustimo nobenih preklopov + $voting_disabled = ''; + if(SurveyInfo::getInstance()->checkSurveyModule('voting')){ + $voting_disabled = ' disabled'; + } echo '
'; echo ''.$lang['srv_sledenje'].''; echo '

'.$lang['srv_metadata_desc'].'

'; - echo '
'; - echo '
'; - echo '
'; + echo '
'; + echo '
'; + echo '
'; echo '
'; @@ -1412,14 +1417,14 @@ class SurveyAdminSettings { echo '
'; echo ''.$lang['srv_sledenje_ip_title'].''; - echo ' '; + echo ' '; if($ip == 0 && $ip_show != 1) echo '
'.$lang['srv_sledenje_ip_alert'].'
'; echo '
'; if($ip == 0 && ($admin_type == 0 || $admin_type == 1)){ - echo ' '; + echo ' '; if($ip_show == 1) echo '
'.$lang['srv_show_ip_alert'].'
'; } @@ -1433,7 +1438,7 @@ class SurveyAdminSettings { echo '
'; echo ''.$lang['srv_sledenje_identifikatorji_title'].' '.Help::display('srv_email_with_data').''; - echo ' '; + echo ' '; if($row['show_email'] == 1) echo '
'.$lang['srv_show_mail_with_data3'].'
'; @@ -8699,6 +8704,12 @@ class SurveyAdminSettings { } elseif ($_GET['a'] == 'voting'){ + // Ce so vabila ze vklopljena ne pustimo vklopa + if(!isset($modules['voting']) && SurveyInfo::getInstance()->checkSurveyModule('email')){ + $disabled = ' disabled="disabled"'; + $css_disabled = ' gray'; + } + echo '
'.$lang['srv_voting'].''; echo ''; diff --git a/admin/survey/classes/surveyData/class.SurveyDataCollect.php b/admin/survey/classes/surveyData/class.SurveyDataCollect.php index 9698db74e..f53a5f022 100644 --- a/admin/survey/classes/surveyData/class.SurveyDataCollect.php +++ b/admin/survey/classes/surveyData/class.SurveyDataCollect.php @@ -1427,7 +1427,7 @@ class SurveyDataCollect{ $_dataLine .= STR_DLMT. (($rowUser['status'] == 5 || $rowUser['status'] == 6) && $rowUser['lurker'] == 0 ? '1' : '0'); # dodamo email (invitation)k podatkom - če je bilo poslano z emailom ali je uporabnik ročno vnesel email - $_dataLine .= STR_DLMT. ((int)$rowUser['inv_res_id'] > 0 + $_dataLine .= STR_DLMT. ((int)$rowUser['inv_res_id'] > 0 || (int)$rowUser['inv_res_id'] == -1 # uporabnik je bil dodan z email vabilom ? ((int)$rowUser['status'] == 1 || (int)$rowUser['status'] >= 3 # email je bil odposlan diff --git a/admin/survey/classes/surveyData/class.SurveyDataDisplay.php b/admin/survey/classes/surveyData/class.SurveyDataDisplay.php index c56e7458a..7996a5b9b 100644 --- a/admin/survey/classes/surveyData/class.SurveyDataDisplay.php +++ b/admin/survey/classes/surveyData/class.SurveyDataDisplay.php @@ -1110,19 +1110,22 @@ class SurveyDataDisplay{ echo ' '; echo ''; - // če imamo sistemske podatke katere moramo prikazovati ločeno - IDENTIFIKATORJI - if (!isset(self::$_HEADERS['_settings']['count_system_data_variables']) || (isset(self::$_HEADERS['_settings']['count_system_data_variables']) && (int)self::$_HEADERS['_settings']['count_system_data_variables'] > 0)) { - - echo '
  • '; - echo ' '; - echo '
  • '; - } - // Po novem vedno prikazemo checkbox identifikatorji - samo je odkljukan in disablan - else{ - echo '
  • '; - echo ' '; - echo '
  • '; - } + // Preverimo ce je vklopljen modul za volitve - potem nimamo identifikatorjev + if(!SurveyInfo::getInstance()->checkSurveyModule('voting')){ + + // če imamo sistemske podatke katere moramo prikazovati ločeno - IDENTIFIKATORJI + if(!isset(self::$_HEADERS['_settings']['count_system_data_variables']) || (isset(self::$_HEADERS['_settings']['count_system_data_variables']) && (int)self::$_HEADERS['_settings']['count_system_data_variables'] > 0)) { + echo '
  • '; + echo ' '; + echo '
  • '; + } + // Po novem vedno prikazemo checkbox identifikatorji - samo je odkljukan in disablan + else{ + echo '
  • '; + echo ' '; + echo '
  • '; + } + } // datum echo '
  • '; diff --git a/admin/survey/classes/surveyEmails/class.SurveyInvitationsNew.php b/admin/survey/classes/surveyEmails/class.SurveyInvitationsNew.php index 72fe4c5bf..7f87c368f 100644 --- a/admin/survey/classes/surveyEmails/class.SurveyInvitationsNew.php +++ b/admin/survey/classes/surveyEmails/class.SurveyInvitationsNew.php @@ -48,15 +48,13 @@ class SurveyInvitationsNew { $this->surveySettings = SurveyInfo::getInstance()->getSurveyRow(); - #koliko respondentov je že v bazi - $sql_string_all = "SELECT count(*) FROM srv_invitations_recipients WHERE ank_id = '".$this->sid."' AND deleted = '0'"; - $sql_query_all = sisplet_query($sql_string_all); + # koliko respondentov je že v bazi + $sql_query_all = sisplet_query("SELECT count(*) FROM srv_invitations_recipients WHERE ank_id = '".$this->sid."' AND deleted = '0'"); $sql_row_all = mysqli_fetch_row($sql_query_all); $this->count_all = (int)$sql_row_all[0]; - #preverimo ali prikazujemo nov ali star način odvisno od nastavitve v misc - $strSelect = "SELECT count(*) FROM srv_anketa AS a WHERE id ='".$this->sid."' AND insert_time > (SELECT value FROM misc WHERE what = 'invitationTrackingStarted' LIMIT 1)"; - $sql_query = sisplet_query($strSelect); + # preverimo ali prikazujemo nov ali star način odvisno od nastavitve v misc + $sql_query = sisplet_query("SELECT count(*) FROM srv_anketa AS a WHERE id ='".$this->sid."' AND insert_time > (SELECT value FROM misc WHERE what = 'invitationTrackingStarted' LIMIT 1)"); list($newTracking) = mysqli_fetch_row($sql_query); $this->newTracking = (int)$newTracking > 0 ? true : false; @@ -274,7 +272,7 @@ class SurveyInvitationsNew { } else if ($action == 'invListEditSave') { $this->invListEditSave(); } else if ($action == 'editRecList') { -# $this->editRecList(); + $doEdit = $_SESSION['inv_edit_rec_profile'][$this->sid] == 'true' ? true : false; if ($doEdit) { $this->showEditRecList(); @@ -1302,8 +1300,7 @@ class SurveyInvitationsNew { function viewRecipients($errors = array(), $msgs = array()) { global $lang, $site_url, $admin_type; - //echo '

    '.$lang['srv_inv_edit_recipients_heading'].'

    '; - $noEmailing = SurveySession::get('inv_noEmailing'); + $noEmailing = SurveySession::get('inv_noEmailing'); $row = $this->surveySettings; @@ -1402,8 +1399,7 @@ class SurveyInvitationsNew { } # preštejemo koliko imamo vseh respondentov in koliko jih je brez e-maila - $sql_string_all = "SELECT id FROM srv_invitations_recipients WHERE ank_id = '".$this->sid."' AND deleted = '0'"; - $sql_query_all = sisplet_query($sql_string_all); + $sql_query_all = sisplet_query("SELECT id FROM srv_invitations_recipients WHERE ank_id = '".$this->sid."' AND deleted = '0'"); $count_all = mysqli_num_rows($sql_query_all); $sql_string_withot_email = "SELECT count(*) FROM srv_invitations_recipients WHERE ank_id = '".$this->sid."' AND deleted = '0' AND email IS NULL AND sent='0'"; @@ -1448,8 +1444,11 @@ class SurveyInvitationsNew { } } } + # dodamo še ostala polja - $fields['last_status'] = 1; + if(!SurveyInfo::getInstance()->checkSurveyModule('voting')) + $fields['last_status'] = 1; + $sql_select_fields[] = 'i.last_status'; $fields['date_inserted'] = 1; $fields['date(date_expired)'] = 1; @@ -1460,9 +1459,6 @@ class SurveyInvitationsNew { $fields['list_id'] = 1; $sql_select_fields[] = 'i.list_id'; - #štetje vabil - #$fields['count_inv'] = 1; - #$sql_select_fields[] = 'count(siar.arch_id) AS count_inv'; #dodamo paginacijo in poiščemo zapise $page = isset($_GET['page']) ? $_GET['page'] : '1'; @@ -1537,6 +1533,7 @@ class SurveyInvitationsNew { $lists = array(); $lists['-1'] = array('name'=>$lang['srv_invitation_new_templist']); $lists['0'] = array('name'=>$lang['srv_invitation_new_templist_author']); + if (count($lids) > 0 ) { $sql_string_lists = "SELECT * from srv_invitations_recipients_profiles WHERE pid IN(".implode(',',$lids).") "; $sql_query_lists = sisplet_query($sql_string_lists); @@ -1544,6 +1541,7 @@ class SurveyInvitationsNew { $lists[$row_lists['pid']] = array('name'=>$row_lists['name']); } } + if (count($msgs) > 0) { echo ''; foreach($msgs as $msg) { @@ -1551,6 +1549,7 @@ class SurveyInvitationsNew { } echo ''; } + if (count($errors) > 0) { echo ''; foreach($errors as $error) { @@ -1558,16 +1557,18 @@ class SurveyInvitationsNew { } echo ''; } + if ($count_all > 0 ) { # dodamo filtriranje echo '
    '; echo ' '; - #echo ''; - echo '   
    '; - - /* // Prestavljeno na dno - if ($count_without_email > 0) { - # add to database without sending e-mail - - echo '
    '; - echo ''.$lang['srv_invitation_recipients_activate'].' '; - echo ''.$lang['srv_invitation_recipients_activate_here'].''; - echo '
    '; - }*/ - + echo '
    '; echo ''; echo ''; @@ -1667,16 +1658,10 @@ class SurveyInvitationsNew { echo ''; + echo ''; # checkbox echo ''; - /* - * # uredi - echo ''; - # izbrisi - echo ''; - - */ foreach ($fields AS $fkey =>$field) { if ($field == 1) { @@ -3958,9 +3943,9 @@ class SurveyInvitationsNew { // Pri volitvah zaradi anonimizacije ignoriramo vse identifikatorje if($voting){ $_r = sisplet_query("INSERT INTO srv_user - (ank_id, cookie, pass, last_status, time_insert, inv_res_id) + (ank_id, cookie, pass, last_status, inv_res_id) VALUES - ('".$this->sid."', '".$_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']."' + ('".$this->sid."', '".$_user_data['cookie']."', '".$_user_data['password']."', '".$_user_data['status']."', '-1') ON DUPLICATE KEY UPDATE cookie = '".$_user_data['cookie']."', pass='".$_user_data['password']."' "); } else{ @@ -4585,7 +4570,8 @@ class SurveyInvitationsNew { echo ''; echo ''; echo ''; - echo ''; + if(!SurveyInfo::getInstance()->checkSurveyModule('voting')) + echo ''; echo ''; echo ''; @@ -4598,7 +4584,8 @@ class SurveyInvitationsNew { echo ''; echo ''; echo ''; - echo ''; + if(!SurveyInfo::getInstance()->checkSurveyModule('voting')) + echo ''; echo ''; echo ''; } @@ -4810,6 +4797,10 @@ class SurveyInvitationsNew { function addSystemVariables($variables) { global $site_path, $lang; + // Pri modulu za volitve so responsi anonimni, zato nimamo nobenih sistemskih spremenljivk + if(SurveyInfo::getInstance()->checkSurveyModule('voting')) + return; + $system_fields = array( 'inv_field_email' => 'email', 'inv_field_firstname' => 'ime', @@ -5876,9 +5867,9 @@ class SurveyInvitationsNew { // Pri volitvah zaradi anonimizacije ignoriramo vse identifikatorje if($voting){ sisplet_query("INSERT INTO srv_user - (ank_id, cookie, pass, last_status, time_insert, inv_res_id) + (ank_id, cookie, pass, last_status, inv_res_id) VALUES - ('".$this->sid."', '".$user_data['cookie']."', '".$user_data['password']."', '".$user_data['status']."', NOW(), '".$user_data['id']."') ON DUPLICATE KEY UPDATE last_status=VALUES(last_status), inv_res_id=VALUES(inv_res_id) + ('".$this->sid."', '".$user_data['cookie']."', '".$user_data['password']."', '".$user_data['status']."', '-1') ON DUPLICATE KEY UPDATE last_status=VALUES(last_status) "); } else{ @@ -6736,7 +6727,9 @@ class SurveyInvitationsNew { echo ''; echo '
    '; + echo '
       '.$lang['srv_inv_recipients_password'].''.$lang['srv_inv_recipients_firstname'].''.$lang['srv_inv_recipients_lastname'].''.$lang['srv_inv_recipients_last_status'].''.$lang['srv_inv_recipients_last_status'].''.$lang['srv_inv_recipients_list_id'].'
    '.$sql_row['password'].''.$sql_row['firstname'].''.$sql_row['lastname'].''.$lang['srv_userstatus_'.$sql_row['last_status']].' ('.$sql_row['last_status'].')'.''.$lang['srv_userstatus_'.$sql_row['last_status']].' ('.$sql_row['last_status'].')'.''.$lists[$sql_row['list_id']].'
    '; + echo ''; echo ''; echo ''; @@ -6746,9 +6739,11 @@ class SurveyInvitationsNew { echo ''; echo ''; echo ''; - echo ''; + if(!SurveyInfo::getInstance()->checkSurveyModule('voting')) + echo ''; echo ''; echo ''; + while ($sql_row = mysqli_fetch_assoc($sql_query)) { echo ''; echo ''; @@ -6760,11 +6755,14 @@ class SurveyInvitationsNew { echo ''; $status = $arch_user_max_status[$sql_row['res_id']]; echo ''; - echo ''; + if(!SurveyInfo::getInstance()->checkSurveyModule('voting')) + echo ''; echo ''; echo ''; } + echo '
    '.$lang['srv_inv_recipients_sent'].''.$lang['srv_inv_recipients_responded'].''.$lang['srv_inv_recipients_firstname'].''.$lang['srv_inv_recipients_lastname'].''.$lang['srv_inv_recipients_max_archive_status'].''.$lang['srv_inv_recipients_last_status'].''.$lang['srv_inv_recipients_last_status'].''.$lang['srv_inv_recipients_list_id'].'
    '.$sql_row['lastname'].''.$lang['srv_userstatus_'.$status].' ('.$status.')'.''.$lang['srv_userstatus_'.$sql_row['last_status']].' ('.$sql_row['last_status'].')'.''.$lang['srv_userstatus_'.$sql_row['last_status']].' ('.$sql_row['last_status'].')'.''.$lists[$sql_row['list_id']].'
    '; + echo ''; // inv_select_mail_preview echo ''; // id="arc_content" @@ -6875,8 +6873,20 @@ class SurveyInvitationsNew { echo ''; - # nov način z trackingom - if ($this->newTracking == true) { + // Pri volitvah prikazemo samo osnovne stevilke - zaradi anonimizacije ni trackinga + if(SurveyInfo::getInstance()->checkSurveyModule('voting')){ + + $userAccess = UserAccess::getInstance($global_user_id); + + // Ce so izklopljena ne prikazemo leve strani + if((int)$isEmail > 0 && $userAccess->checkUserAccess($what='invitations')){ + echo ''; + } + } + // Nov način z trackingom + elseif($this->newTracking == true) { $userAccess = UserAccess::getInstance($global_user_id); @@ -7215,7 +7225,8 @@ class SurveyInvitationsNew { } } - function displayInvitationStatusNew() { + // Prikaz statusov posiljanj + private function displayInvitationStatusNew() { global $lang, $admin_type, $global_user_id, $site_url, $site_path, $app_settings; $isEmail = (int)SurveyInfo::getInstance()->checkSurveyModule('email'); @@ -7230,15 +7241,17 @@ class SurveyInvitationsNew { echo '

    '; #koliko je vseh uporabnikov v bazi - $sql_string = "SELECT count(*) as cnt FROM srv_invitations_recipients WHERE ank_id = '".$this->sid."' AND deleted ='0'"; - $sql_query = sisplet_query($sql_string); + $sql_query = sisplet_query("SELECT count(*) as cnt FROM srv_invitations_recipients WHERE ank_id = '".$this->sid."' AND deleted ='0'"); list($cnt_all_in_db) = mysqli_fetch_row($sql_query); #zloopamo skozi posamezna pošiljanja in preštejemo vse potrebno - $sql_string = "SELECT sia.id, sia.tip, rec_in_db, DATE_FORMAT(sia.date_send,'%d.%m.%Y, %T') AS ds, u.name, u.surname, u.email FROM srv_invitations_archive AS sia INNER JOIN users AS u ON sia.uid = u.id WHERE ank_id = '".$this->sid."' ORDER BY sia.date_send ASC;"; - #$sql_string = "SELECT * FROM srv_invitations_archive WHERE ank_id = '".$this->sid."'"; - $sql_query = sisplet_query($sql_string); - + $sql_query = sisplet_query("SELECT sia.id, sia.tip, rec_in_db, DATE_FORMAT(sia.date_send,'%d.%m.%Y, %T') AS ds, u.name, u.surname, u.email + FROM srv_invitations_archive AS sia + INNER JOIN users AS u ON sia.uid = u.id + WHERE ank_id = '".$this->sid."' + ORDER BY sia.date_send ASC; + "); + $array_dashboard = array(); $array_archive_subdata = array(); $user_max_status = array(); @@ -7678,6 +7691,146 @@ class SurveyInvitationsNew { } } + // Prikaz statusov posiljanj pri volitvah + private function displayInvitationStatusVoting() { + global $lang, $admin_type, $global_user_id, $site_url, $site_path, $app_settings; + + $isEmail = (int)SurveyInfo::getInstance()->checkSurveyModule('email'); + + $userAccess = UserAccess::getInstance($global_user_id); + + // Email vabila so omogocena + if ((int)$isEmail > 0 && $userAccess->checkUserAccess($what='invitations')) { + + echo '

    '.$lang['srv_inv_nav_email_status'].''; + echo '
    '; + echo '

    '; + + #koliko je vseh uporabnikov v bazi in kolkim je bil mail poslan + $sql_count = sisplet_query("SELECT count(id) as cnt, sent + FROM srv_invitations_recipients + WHERE ank_id='".$this->sid."' AND deleted ='0' + GROUP BY sent + "); + + $cnt_all_in_db = 0; + $cnt_sent_in_db = 0; + while($row_count = mysqli_fetch_array($sql_count)){ + + $cnt_all_in_db += (int)$row_count['cnt']; + + if($row_count['sent'] == '1'){ + $cnt_sent_in_db += (int)$row_count['cnt']; + } + } + + + echo '

    '; + $this->displayInvitationStatusVoting(); + echo '
    '; + + // Vsi v bazi + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + + // Poslani + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + + echo '
    '.$lang['srv_inv_dashboard_tbl_all'].''.(int)$cnt_all_in_db.'-100%
    '.$lang['srv_inv_dashboard_tbl_send'].''.(int)$cnt_sent_in_db.''.((int)$cnt_sent_in_db > 0 ? '100%' : '0%').''.$this->formatNumber(((int)$cnt_sent_in_db > 0 ? (int)$cnt_sent_in_db*100/(int)$cnt_all_in_db : 0),0,'%').'
    '; + + echo '

    '; + echo ''; + echo '
  • '; + } + // Email vabila niso omogocena + else { + echo '
    '.$lang['srv_inv_nav_email_status'].''; + echo '
    '; + echo '

    '; + + echo $lang['srv_inv_dashboard_not_enabled']; + + # uporabnik nima pravic omogočit vabil + if (!$userAccess->checkUserAccess($what='invitations')) { + echo '
    '.$lang['srv_inv_dashboard_no_permissions']; + } + # uporabnik lahko vklopi email vabila + else { + echo ' '.$lang['srv_omogoci'].''; + } + + echo '

    '; + echo '
    '; + echo '
    '; + } + + + // predpripravimo podatke za vsa pošiljanja + /*$cnt_by_sendings = array(); + + $all_units_count = count($cnt_by_user); + if ($all_units_count > 0) { + foreach ($cnt_by_user AS $uid => $ucnt) { + $cnt_by_sendings[$ucnt]++; + } + + echo '
    '; + + #pregled po pošiljanjih + echo '
    '; + + echo ''; + echo ''; + echo '+ '; + echo '- '; + echo ''.$lang['srv_inv_nav_email_sending_status'].''; + echo ''; + echo Help::display('srv_inv_cnt_by_sending'); + echo ''; + + echo '
    '; + + echo '
    '; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + if ($cnt_by_sendings > 0) { + foreach ($cnt_by_sendings AS $cnt => $units) { + echo ''; + echo ''; + echo ''; + $percent = ($all_units_count > 0) ? $units / $all_units_count * 100 : 0; + echo ''; + echo ''; + } + } + echo ''; + echo ''; + echo ''; + $percent = ($all_units_count > 0) ? $all_units_count / $all_units_count * 100 : 0; + echo ''; + echo ''; + echo '
    '.$lang['srv_inv_sending_overview_cnt'].''.$lang['srv_inv_sending_overview_units'].''.$lang['srv_inv_sending_overview_percentage'].'
    '.$cnt.''.$units.''.Common::formatNumber ($percent,0,null,'%').'
    '.$lang['srv_inv_sending_overview_sum'].''.$all_units_count.''.Common::formatNumber ($percent,0,null,'%').'
    '; + echo '
    '; + echo '
    '; + }*/ + } + function showInvitationSettings() { global $lang, $admin_type, $global_user_id, $site_url, $site_path, $app_settings; @@ -7753,6 +7906,12 @@ class SurveyInvitationsNew { echo '
    '; echo '
    '; + + // Preverimo ce je vklopljen modul za volitve - potem ne pustimo nobenih preklopov + $voting_disabled = ''; + if(SurveyInfo::getInstance()->checkSurveyModule('voting')){ + $voting_disabled = ' disabled'; + } $individual = (int)$this->surveySettings['individual_invitation']; @@ -7763,8 +7922,8 @@ class SurveyInvitationsNew { echo ' '.Help::display('srv_user_base_individual_invitaition_note2').' '; else echo ' '.Help::display('srv_user_base_individual_invitaition_note').' '; - echo ''; - echo ''; + echo ''; + echo ''; echo '

    '; // Ce niso indvidualizirana imamo samo nacin posiljanja @@ -7773,8 +7932,8 @@ class SurveyInvitationsNew { // Nacin posiljanja (email, posta, sms...) echo '

    '; echo ''; - echo ''; - echo ''; + echo ''; + echo ''; echo '

    '; // Nacin dokumentiranja (posta, sms, drugo) @@ -7782,9 +7941,9 @@ class SurveyInvitationsNew { $noEmailingType = SurveySession::get('inv_noEmailing_type'); echo '

    '; echo ''; - echo ''; - echo ''; - echo ''; + echo ''; + echo ''; + echo ''; echo '

    '; } } @@ -7794,8 +7953,8 @@ class SurveyInvitationsNew { // Nacin posiljanja (email, posta, sms...) echo '

    '; echo ''; - echo ''; - echo ''; + echo ''; + echo ''; echo '

    '; // Nacin dokumentiranja (posta, sms, drugo) @@ -7803,9 +7962,9 @@ class SurveyInvitationsNew { $noEmailingType = SurveySession::get('inv_noEmailing_type'); echo '

    '; echo ''; - echo ''; - echo ''; - echo ''; + echo ''; + echo ''; + echo ''; echo '

    '; } @@ -7813,8 +7972,8 @@ class SurveyInvitationsNew { if($noEmailing != 1){ echo '

    '; echo ''; - echo ''; - echo ''; + echo ''; + echo ''; echo '

    '; } @@ -7834,7 +7993,7 @@ class SurveyInvitationsNew { echo '

    '; echo ''; - echo ''; + echo ''; echo '

    '; if($row['usercode_skip'] > 0){ echo '
    '; @@ -7872,15 +8031,13 @@ class SurveyInvitationsNew { // Gorenje tega nima if (!Common::checkModule('gorenje')){ + echo ''; echo '
    '.$lang['srv_email_setting_title'].''; echo '
    '; echo '
    '; - - //echo '

    V delu...

    '; $this->viewServerSettings(); - echo '
    '; echo '
    '; @@ -9904,6 +10061,7 @@ class SurveyInvitationsNew { global $global_user_id; global $mysql_database_name; global $aai_instalacija; + $row = SurveyInfo::getInstance()->getSurveyRow(); @@ -9920,7 +10078,35 @@ class SurveyInvitationsNew { // Admini na testu, www in virtualkah imajo 1ka smtp if(($admin_type == 0) && ($mysql_database_name == 'www1kasi' || $mysql_database_name == 'test1kasi' || $mysql_database_name == 'real1kasi')) $enabled1ka = true; + + // Squalo + $squalo = new SurveyInvitationsSqualo($this->sid); + if($squalo->squaloEnabled()){ + + // Vklop squalo + echo '
    '; + + echo ''.$lang['srv_squalo'].': '; + + echo ''; + + echo '
    '; + + + // Squalo nastavitve... + echo '
    '; + + echo $lang['srv_squalo_active']; + + echo '
    '; + } + + + // Izbira streznika + echo '
    '; + // Opozorilo, ce imamo vklopljena vabila, da gre za iste nastavitve echo '

    '.$lang['srv_email_server_settings_warning'].'

    '; @@ -9948,10 +10134,13 @@ class SurveyInvitationsNew { echo $lang['srv_email_setting_adapter2'].' '; echo Help :: display('srv_mail_mode'); + + echo '
    '; + #1KA $enkaSettings = $MA->get1KASettings($raziskave=true); - echo '
    is1KA() ? ' class="displayNone"' : '').'>'; + echo '
    is1KA() || $squalo->squaloActive() ? ' class="displayNone"' : '').'>'; echo '
    '.$lang['srv_email_setting_settings'].''; echo '
    '; # from @@ -9982,7 +10171,7 @@ class SurveyInvitationsNew { #GMAIL - Google $enkaSettings = $MA->getGoogleSettings(); - echo '
    isGoogle() ? ' class="displayNone"' : '').'>'; + echo '
    isGoogle() || $squalo->squaloActive() ? ' class="displayNone"' : '').'>'; echo '
    '.$lang['srv_email_setting_adapter1_note'].'
    '; echo '
    '.$lang['srv_email_setting_settings'].'
    '; # from @@ -9998,7 +10187,7 @@ class SurveyInvitationsNew { #SMTP $enkaSettings = $MA->getSMTPSettings(); - echo '
    isSMTP() ? ' class="displayNone"' : '').'>'; + echo '
    isSMTP() || $squalo->squaloActive() ? ' class="displayNone"' : '').'>'; echo '
    '.$lang['srv_email_setting_adapter2_note'].'
    '; echo '
    '.$lang['srv_email_setting_settings'].'
    '; # from - NICE diff --git a/admin/survey/export/latexclasses/class.LatexSurveyElement.php b/admin/survey/export/latexclasses/class.LatexSurveyElement.php index 7dea1e3b3..e3c5eeab1 100644 --- a/admin/survey/export/latexclasses/class.LatexSurveyElement.php +++ b/admin/survey/export/latexclasses/class.LatexSurveyElement.php @@ -1022,12 +1022,12 @@ class LatexSurveyElement{ $numOfAt = substr_count($text, $findAt); //stevilo '@' v besedilu $posAt = strpos($text, $findAt); - if($posAt){ //ce je prisotna afna + if($posAt && $posSpace1){ //ce je prisotna afna in je prisoten presledek v besedilu //echo "afna je: $posAt
    "; //echo "Encoding: ".$text."
    "; //najdi prvi presledek po afni - //echo substr($text, $posAt) ."
    "; + //echo substr($text, $posAt) ."
    "; $posSpace1Mail = strpos(substr($text, $posAt), $findSpace); //najdi pozicijo prvega presledka v besedilu po e-naslovu $posSpace1Mail = $posSpace1Mail+$posAt; //koncna pozicija, ce se gleda celotno besedilo //echo $posSpace1Mail."
    "; diff --git a/admin/survey/modules/mod_squalo/class.SqualoApi.php b/admin/survey/modules/mod_squalo/class.SqualoApi.php index ce821357a..3750756b1 100644 --- a/admin/survey/modules/mod_squalo/class.SqualoApi.php +++ b/admin/survey/modules/mod_squalo/class.SqualoApi.php @@ -2,7 +2,7 @@ /** * - * Class ki vsebuje funkcije APIJA (prijava, registracija v 1ko) + * Class ki vsebuje funkcije Squalo APIJA (dodajanje prejemnikov, posiljanje...) * */ @@ -37,15 +37,24 @@ class SqualoApi { // Decode json response $response_array = json_decode($response, true); + // Zalogiramo kaj se je dogajalo + $SL = new SurveyLog(); + // Error if($response_array['errorCode'] != '0'){ $result['error'] = $response_array["errorMessage"]. ' (code '.$response_array["errorCode"].')'; $result['success'] = false; + + $SL->addMessage(SurveyLog::MAILER, "NAPAKA pri SQUALO API klicu ('.$action.')! ".$result['error']); } else{ $result = $response_array; $result['success'] = true; + + $SL->addMessage(SurveyLog::MAILER, "USPEŠEN SQUALO API klic ('.$action.')."); } + + $SL->write(); return $result; } diff --git a/admin/survey/modules/mod_squalo/class.SurveyInvitationsSqualo.php b/admin/survey/modules/mod_squalo/class.SurveyInvitationsSqualo.php new file mode 100644 index 000000000..83379ce2a --- /dev/null +++ b/admin/survey/modules/mod_squalo/class.SurveyInvitationsSqualo.php @@ -0,0 +1,64 @@ +anketa = $anketa; + + // Preverimo ce je squalo omogocen na tej instalaciji in anketi + $this->squaloEnabled = $this->checkSqualoEnabled() ? true : false; + + // Preverimo ce je squalo vklopljen na anketi + $this->squaloActive = $this->checkSqualoActive() ? true : false; + } + + + public function squaloEnabled(){ + return $this->squaloEnabled; + } + + public function squaloActive(){ + return $this->squaloActive; + } + + + // Preverimo ce je squalo omogocen na instalaciji + private function checkSqualoEnabled(){ + global $mysql_database_name; + global $admin_type; + global $squalo_user; + global $squalo_key; + + // Zaenkrat imajo squalo samo admini + if($admin_type != 0) + return false; + + // Squalo je omogocen samo na testu, www in virtualkah + if($mysql_database_name != 'www1kasi' && $mysql_database_name != 'test1kasi' && $mysql_database_name != 'real1kasi') + return false; + + // Zaenkrat imajo squalo samo admini + if(!isset($squalo_user) || $squalo_user == '' || !isset($squalo_key) || $squalo_key == '') + return false; + + return false; + } + + // Preverimo ce je squalo vklopljen na anketi + private function checkSqualoActive(){ + + return false; + } +} \ No newline at end of file diff --git a/composer.lock b/composer.lock index 79958fab7..ce873ecd5 100644 --- a/composer.lock +++ b/composer.lock @@ -1912,16 +1912,16 @@ "packages-dev": [ { "name": "filp/whoops", - "version": "2.9.2", + "version": "2.10.0", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "df7933820090489623ce0be5e85c7e693638e536" + "reference": "6ecda5217bf048088b891f7403b262906be5a957" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/df7933820090489623ce0be5e85c7e693638e536", - "reference": "df7933820090489623ce0be5e85c7e693638e536", + "url": "https://api.github.com/repos/filp/whoops/zipball/6ecda5217bf048088b891f7403b262906be5a957", + "reference": "6ecda5217bf048088b891f7403b262906be5a957", "shasum": "" }, "require": { @@ -1969,7 +1969,7 @@ "throwable", "whoops" ], - "time": "2021-01-24 12:00:00" + "time": "2021-03-16 12:00:00" }, { "name": "kint-php/kint", diff --git a/lang/1.php b/lang/1.php index 89ca4de75..a947b3091 100644 --- a/lang/1.php +++ b/lang/1.php @@ -7406,6 +7406,12 @@ $lang = array ( 'srv_export_2_xls_button' => "Izvozi v Excel", 'srv_pc_unavailable' => "Prikaz slike ni mogoč", + + // SQUALO // + 'srv_squalo' => "Squalo", + 'srv_squalo_sending' => "Pošiljaj preko aplikacije Squalo", + 'srv_squalo_active' => "Squalo pošiljanje je vklopljeno.", + // NAROCILA // 'srv_narocila' => "Naročila", diff --git a/lang/2.php b/lang/2.php index efff1ce74..64effc641 100644 --- a/lang/2.php +++ b/lang/2.php @@ -7291,6 +7291,14 @@ $lang = array ( 'srv_export_2_xls_button' => "Export to Excel", 'srv_pc_unavailable' => "Image unavailable", + + + // SQUALO // + 'srv_squalo' => "Squalo", + 'srv_squalo_sending' => "Sending with application Squalo", + 'srv_squalo_active' => "Sending with Squalo is turned on.", + + // NAROCILA // 'srv_narocila' => "Orders", diff --git a/main/survey/app/Controllers/InitClass.php b/main/survey/app/Controllers/InitClass.php index 31bd509fe..fd0b0ea2b 100644 --- a/main/survey/app/Controllers/InitClass.php +++ b/main/survey/app/Controllers/InitClass.php @@ -800,23 +800,26 @@ class InitClass extends Controller if (!$sql2) echo mysqli_error($GLOBALS['connect_db']); $row2 = mysqli_fetch_array($sql2); - if (mysqli_num_rows($sql2) > 0) { // pravilna koda + // Pravilna koda + if (mysqli_num_rows($sql2) > 0) { - // Dodatno preverimo ce koda se ni potekla - $sqlC = sisplet_query("SELECT * FROM srv_invitations_recipients WHERE ank_id='".get('anketa')."' AND TRIM(password)='".$usercode."' AND DATE(NOW())>DATE(date_expired) AND date_expired!='0000-00-00 00:00:00'"); - if(mysqli_num_rows($sqlC) > 0){ - Display::getInstance()->displayNapaka(self::$lang['srv_expiredcode']); - die(); - } - - $rand = $row2['cookie']; + // Ce imamo vklopljen modul za volitve preskocimo kar nekaj korakov (anonimizacija) + if(!SurveyInfo::checkSurveyModule('voting')){ - # nastavimo še da je uporabnik odgovoril na anketo za nov način e-mail vabil - $sqlString = "UPDATE srv_invitations_recipients SET responded = '1', date_responded = NOW() WHERE ank_id='" . get('anketa') . "' AND TRIM(password) ='$usercode' AND responded = '0'"; - sisplet_query($sqlString); + // Dodatno preverimo ce koda se ni potekla + $sqlC = sisplet_query("SELECT * FROM srv_invitations_recipients WHERE ank_id='".get('anketa')."' AND TRIM(password)='".$usercode."' AND DATE(NOW())>DATE(date_expired) AND date_expired!='0000-00-00 00:00:00'"); + if(mysqli_num_rows($sqlC) > 0){ + Display::getInstance()->displayNapaka(self::$lang['srv_expiredcode']); + die(); + } - sisplet_query("COMMIT"); + # nastavimo še da je uporabnik odgovoril na anketo za nov način e-mail vabil + sisplet_query("UPDATE srv_invitations_recipients SET responded = '1', date_responded = NOW() WHERE ank_id='" . get('anketa') . "' AND TRIM(password) ='$usercode' AND responded = '0'"); + sisplet_query("COMMIT"); + } + + $rand = $row2['cookie']; $this->set_cookie('survey-' . get('anketa'), $rand, $this->expire); @@ -1199,12 +1202,16 @@ class InitClass extends Controller } # dodamo še tracking arhivov vabil if (get('user_inv_archive') > 0 && $inv_res_id > 0) { + # ignoriramo podvojene kluče - $updateString = "INSERT IGNORE INTO srv_invitations_tracking (inv_arch_id, time_insert, res_id, status) VALUES ('" . (int)get('user_inv_archive') . "',NOW(),'$inv_res_id','$status')"; - - $s = sisplet_query($updateString); + $s = sisplet_query("INSERT IGNORE INTO srv_invitations_tracking + (inv_arch_id, time_insert, res_id, status) + VALUES + ('" . (int)get('user_inv_archive') . "',NOW(),'$inv_res_id','$status') + "); if (!$s) echo mysqli_error($GLOBALS['connect_db']); - } else { + } + else { } # potrebno bo osvežit seznam anket diff --git a/sql/update2.sql b/sql/update2.sql index 237917ae7..e53dd106e 100644 --- a/sql/update2.sql +++ b/sql/update2.sql @@ -9471,3 +9471,15 @@ UPDATE srv_gdpr_anketa SET export_legal_eng = export_legal_slo; UPDATE srv_gdpr_anketa SET note_eng = note_slo; UPDATE misc SET value='21.02.16' WHERE what="version"; + +## Squalo nastavitve na anketi +CREATE TABLE srv_squalo_anketa( + id int(11) NOT NULL auto_increment, + ank_id int(11) NOT NULL, + active ENUM('0', '1') NOT NULL DEFAULT '0', + PRIMARY KEY (id), + UNIQUE KEY (ank_id), + CONSTRAINT fk_srv_squalo_anketa_ank_id FOREIGN KEY (ank_id) REFERENCES srv_anketa (id) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +UPDATE misc SET value='21.03.17' WHERE what="version"; diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index 16b646449..2ea0928c1 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -947,6 +947,7 @@ return array( 'SurveyInfo' => $baseDir . '/admin/survey/classes/class.SurveyInfo.php', 'SurveyInspect' => $baseDir . '/admin/survey/classes/class.SurveyInpect.php', 'SurveyInvitationsNew' => $baseDir . '/admin/survey/classes/surveyEmails/class.SurveyInvitationsNew.php', + 'SurveyInvitationsSqualo' => $baseDir . '/admin/survey/modules/mod_squalo/class.SurveyInvitationsSqualo.php', 'SurveyJsonSurveyData' => $baseDir . '/admin/survey/modules/mod_json_survey_export/class.SurveyJsonSurveyData.php', 'SurveyLanguageTechnology' => $baseDir . '/admin/survey/classes/class.SurveyLanguageTechnology.php', 'SurveyList' => $baseDir . '/admin/survey/classes/class.SurveyList.php', diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 974b6dd62..24a1f8404 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -1151,6 +1151,7 @@ class ComposerStaticInit6b03163c371c5541881b55b762b8c779 'SurveyInfo' => __DIR__ . '/../..' . '/admin/survey/classes/class.SurveyInfo.php', 'SurveyInspect' => __DIR__ . '/../..' . '/admin/survey/classes/class.SurveyInpect.php', 'SurveyInvitationsNew' => __DIR__ . '/../..' . '/admin/survey/classes/surveyEmails/class.SurveyInvitationsNew.php', + 'SurveyInvitationsSqualo' => __DIR__ . '/../..' . '/admin/survey/modules/mod_squalo/class.SurveyInvitationsSqualo.php', 'SurveyJsonSurveyData' => __DIR__ . '/../..' . '/admin/survey/modules/mod_json_survey_export/class.SurveyJsonSurveyData.php', 'SurveyLanguageTechnology' => __DIR__ . '/../..' . '/admin/survey/classes/class.SurveyLanguageTechnology.php', 'SurveyList' => __DIR__ . '/../..' . '/admin/survey/classes/class.SurveyList.php',