2020-08-14 13:36:36 +02:00
< ? php
# mysql_real_unescape_string
/** Class ki skrbi za različna vabila
* Julij 2011
*
*
* Enter description here ...
* @ author Gorazd_Veselic
*
*/
2020-12-07 09:43:59 +01:00
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
2020-08-14 13:36:36 +02:00
set_time_limit ( 2400 ); # 30 minut
class SurveyInvitationsNew {
private $sid ;
private $count_all = 0 ; # koliko prejemnikov je v bazi
private $surveySettings ; # zakeširamo nastavitve ankete
private $rec_send_page_limit = 20 ; # Koliko zapisov imamo za paginacijo
private $newTracking = false ; # Ali imamo podroben tracking za anketo
private $inv_variables = array ( 'email' , 'password' , 'ime' , 'priimek' , 'naziv' , 'telefon' , 'drugo' , 'odnos' );
private $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' );
private $inv_variables_excel = 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'
, 'date_inserted' => 'date_inserted' , 'date_sent' => 'date_sent' , 'date_responded' => 'date_responded' , 'date_unsubscribed' => 'date_unsubscribed' , 'list_name' => 'list_name' );
private $inv_variables_tel_excel = array ( 'status' => 'status' , 'email' => 'email' , 'geslo' => 'password' , 'ime' => 'firstname' , 'priimek' => 'lastname' , 'naziv' => 'salutation' , 'telefon' => 'phone' , 'drugo' => 'custom' , 'odnos' => 'relation' , 'call_time' => 'call_time' , 'last_status' => 'last_status'
, 'comment' => 'comment' , 'date_inserted' => 'date_inserted' , 'list_name' => 'list_name' );
#private $inv_sys_db_map = array('email'=>'email','password'=>'geslo','firstname'=>'ime','lastname'=>'priimek','salutation'=>'naziv','phone'=>'telefon','custom'=>'drugo');
private $invitationAdvancedConditionId = 0 ;
private $user_inv_ids = array ();
private $db_table = '' ;
function __construct ( $sid ) {
$this -> sid = $sid ;
SurveyInfo :: SurveyInit ( $this -> sid );
if ( SurveyInfo :: getInstance () -> getSurveyColumn ( 'db_table' ) == 1 )
$this -> db_table = '_active' ;
$this -> surveySettings = SurveyInfo :: getInstance () -> getSurveyRow ();
2021-03-17 12:09:58 +01:00
# 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' " );
2020-08-14 13:36:36 +02:00
$sql_row_all = mysqli_fetch_row ( $sql_query_all );
$this -> count_all = ( int ) $sql_row_all [ 0 ];
2021-03-17 12:09:58 +01:00
# 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) " );
2020-08-14 13:36:36 +02:00
list ( $newTracking ) = mysqli_fetch_row ( $sql_query );
$this -> newTracking = ( int ) $newTracking > 0 ? true : false ;
SurveyDataSettingProfiles :: Init ( $this -> sid );
if ( isset ( $_SESSION [ 'rec_on_send_page' ]) && ( int ) $_SESSION [ 'rec_on_send_page' ] > 0 ) {
$this -> rec_send_page_limit = ( int ) $_SESSION [ 'rec_on_send_page' ];
} else {
$this -> rec_send_page_limit = REC_ON_SEND_PAGE ;
}
SurveySession :: sessionStart ( $this -> sid );
$this -> invitationAdvancedConditionId = ( int ) SurveySession :: get ( 'invitationAdvancedConditionId' );
}
function ajax () {
if ( isset ( $_REQUEST [ 'a' ]) && trim ( $_REQUEST [ 'a' ]) != '' ) {
if ( isset ( $_POST [ 'recipients_list' ]) && $_POST [ 'recipients_list' ] != null ) {
$_POST [ 'recipients_list' ] = mysql_real_unescape_string ( $_POST [ 'recipients_list' ]);
}
if ( isset ( $_POST [ 'fields' ]) && $_POST [ 'fields' ] != null ) {
$_POST [ 'fields' ] = mysql_real_unescape_string ( $_POST [ 'fields' ]);
}
$this -> action ( $_REQUEST [ 'a' ]);
}
else {
echo 'Ajax error!' ;
return 'Ajax error!' ;
}
}
function action ( $action ) {
global $lang ;
global $site_url ;
global $app_settings ;
global $global_user_id ;
$NoNavi = $_POST [ 'noNavi' ];
if ( $action == 'inv_lists' ) {
#$NoNavi = true;
}
if ( $action == 'view_archive' ) {
$NoNavi = true ;
}
if ( $NoNavi == false ) {
echo '<div id="inv_top_navi">' ;
$this -> displayNavigation ();
echo '</div>' ;
}
// Warning za nastavitev streznika
$MA = new MailAdapter ( $this -> sid , $type = 'invitation' );
if ( ! $MA -> is1KA ()){
if ( $MA -> isGoogle ())
$mail_settings = $MA -> getGoogleSettings ();
else
$mail_settings = $MA -> getSMTPSettings ();
$userAccess = UserAccess :: getInstance ( $global_user_id );
$isEmail = ( int ) SurveyInfo :: getInstance () -> checkSurveyModule ( 'email' );
if ( ( empty ( $mail_settings ) || $mail_settings [ 'SMTPFrom' ] == '' || $mail_settings [ 'SMTPUsername' ] == '' )
&& $userAccess -> checkUserAccess ( $what = 'invitations' )
&& $isEmail ){
// Gorenje tega nima
if ( ! Common :: checkModule ( 'gorenje' )){
// Pri ajax klicih nikoli tega ne izpišemo, ravno tako ne izpisujemo, ce imamo vklopljeno posiljanje brez emaila (navadna posta, sms)
$noEmailing = SurveySession :: get ( 'inv_noEmailing' );
if ( $NoNavi == false && $noEmailing != 1 ){
echo '<div id="email_server_warning">' ;
echo '<span class="faicon warning icon-orange"></span> ' . $lang [ 'srv_invitation_server_warning' ] . '!' ;
if ( $action != 'inv_server' )
echo '<span class="spaceLeft"><a href="' . $site_url . 'admin/survey/index.php?anketa=' . $this -> sid . '&a=invitations&m=inv_settings">' . $lang [ 'srv_usermailing_setting' ] . '</a></span>' ;
echo '</div>' ;
}
}
}
}
if ( $action == M_INVITATIONS ) {
$this -> useRecipientsList ();
}
else if ( $action == 'add_recipients_view' ) {
$this -> useRecipientsList ();
#$this->addRecipientsView();
} else if ( $action == 'add_recipients' ) {
$this -> addRecipients ();
} else if ( $action == 'view_recipients' ) {
$this -> viewRecipients ();
} else if ( $action == 'view_message' ) {
$this -> viewMessage ( $_POST [ 'mid' ]);
} else if ( $action == 'make_default' ) {
$this -> makeDefaultMessage ( $_POST [ 'mid' ]);
} else if ( $action == 'make_default_from_preview' ) {
$this -> makeDefaultFromPreview ( $_POST [ 'mid' ]);
} else if ( $action == 'save_message_simple' ) {
$this -> save_message_simple ();
# } else if ($action == 'save_message') {
# $this->saveMessage($_POST['mid']);
} else if ( $action == 'save_message_simple_noEmail' ) {
$this -> save_message_simple_noEmail ();
} else if ( $action == 'send_message' ) {
$this -> sendMessage ( $_POST [ 'mid' ]);
} else if ( $action == 'view_archive' ) {
$this -> viewAarchive ( $_POST [ 'mid' ]);
} else if ( $action == 'view_send_recipients' ) {
if ( isset ( $_POST [ 'noMailing' ]) && $_POST [ 'noMailing' ] == '1' )
$this -> selectSendToNoEmailing ();
else
$this -> selectSendTo ();
} else if ( $action == 'mailToSourceChange' ) {
$this -> mailToSourceChange ();
} else if ( $action == 'send_mail' ) {
if ( isset ( $_GET [ 'noemailing' ]) && $_GET [ 'noemailing' ] == '1' )
$this -> sendMailNoEmailing ();
else
$this -> sendMail ();
} else if ( $action == 'upload_recipients' ) {
$this -> uploadRecipients ();
} else if ( $action == 'view_archive_recipients' ) {
$this -> viewArchiveRecipients ();
} else if ( $action == 'edit_archive_comment' ) {
$this -> editArchiveComment ();
} else if ( $action == 'delete_recipient_confirm' ) {
$this -> deleteRecipientConfirm ();
} else if ( $action == 'delete_recipient' ) {
$this -> deleteRecipient ();
} else if ( $action == 'delete_recipient_single' ) {
$this -> deleteRecipientSingle ();
} else if ( $action == 'delete_recipient_all' ) {
$this -> deleteRecipientAll ();
} else if ( $action == 'export_recipients' ) {
$this -> exportRecipients ();
} else if ( $action == 'export_recipients_all' ) {
$this -> exportRecipients_all ();
} else if ( $action == 'use_recipients_list' ) {
$this -> useRecipientsList ();
} else if ( $action == 'change_import_type' ) {
$this -> changeImportType ();
} else if ( $action == 'save_recipient_list' ) {
$this -> saveRecipientList ();
} else if ( $action == 'get_profile_name' ) {
echo " DEPRECATED! " ;
die ();
$this -> getProfileName ();
} else if ( $action == 'list_get_name' ) {
$this -> listGetName ();
} else if ( $action == 'invListEdit' ) {
$this -> invListEdit ();
} else if ( $action == 'save_rec_profile' ) {
$this -> saveRecProfile ();
} else if ( $action == 'delete_rec_profile' ) {
$this -> deleteRecProfile ();
} else if ( $action == 'edit_rec_profile' ) {
$this -> editRecProfile ();
} else if ( $action == 'update_rec_profile' ) {
$this -> updateRecProfile ();
} else if ( $action == 'delete_msg_profile' ) {
$this -> deleteMsgProfile ();
} else if ( $action == 'message_rename' ) {
$this -> messageRename ();
} else if ( $action == 'show_message_rename' ) {
$this -> showMessageRename ();
} else if ( $action == 'edit_recipient' ) {
$this -> editRecipient ();
} else if ( $action == 'save_recipient' ) {
$this -> saveRecipient ();
} else if ( $action == 'set_recipient_filter' ) {
$this -> setRecipientFilter ();
} else if ( $action == 'only_this_survey' ) {
$this -> onlyThisSurvey ();
# } else if ($action == 'check_send_mail') {
# $this->checkSendMail();
} else if ( $action == 'add_users_to_database' ) {
$this -> add_users_to_database ();
} else if ( $action == 'add_checked_users_to_database' ) {
$this -> add_checked_users_to_database ();
} else if ( $action == 'arch_save_comment' ) {
$this -> saveArchiveComment ();
} else if ( $action == 'edit_message_details' ) {
$this -> editMessageDetails ();
} else if ( $action == 'message_save_details' ) {
$this -> messageSaveDetails ();
} else if ( $action == 'message_save_forward' ) {
$this -> messageSaveforward ();
} else if ( $action == 'message_save_forward_noEmail' ) {
$this -> messageSaveforwardNoEmail ();
} else if ( $action == 'prepare_save_message' ) {
$this -> prepareSaveMessage ();
} else if ( $action == 'showRecipientTracking' ) {
$this -> showRecipientTracking ();
} else if ( $action == 'arch_show_recipients' ) {
$this -> showArchiveRecipients ();
} else if ( $action == 'arch_show_details' ) {
$this -> showArchiveDetails ();
} else if ( $action == 'arch_edit_details' ) {
$this -> editArchiveDetails ();
} else if ( $action == 'inv_status' ) {
$this -> showInvitationStatus ();
} else if ( $action == 'inv_lists' ) {
$this -> showInvitationLists ();
} else if ( $action == 'inv_list_save' ) {
$this -> listSave ();
} else if ( $action == 'invListSaveOld' ) {
$this -> invListSaveOld ();
} else if ( $action == 'invListEditSave' ) {
$this -> invListEditSave ();
} else if ( $action == 'editRecList' ) {
2021-03-17 12:09:58 +01:00
2020-08-14 13:36:36 +02:00
$doEdit = $_SESSION [ 'inv_edit_rec_profile' ][ $this -> sid ] == 'true' ? true : false ;
if ( $doEdit ) {
$this -> showEditRecList ();
} else {
$this -> showNoEditRecList ();
}
} else if ( $action == 'deleteRecipientsList' ) {
$this -> deleteRecipientsList ();
} else if ( $action == 'deleteRecipientsListMulti' ){
$this -> deleteRecipientsListMulti ();
} else if ( $action == 'showInvitationListsNames' ) {
$this -> showInvitationListsNames ();
} else if ( $action == 'changeInvRecListEdit' ) {
$this -> changeInvRecListEdit ();
} else if ( $action == 'upload_list' ) {
$this -> upload_list ();
} else if ( $action == 'send_upload_list' ) {
$this -> send_upload_list ();
} else if ( $action == 'changePaginationLimit' ) {
$this -> changePaginationLimit ();
} else if ( $action == 'setSortField' ) {
$this -> setSortField ();
} else if ( $action == 'validateSysVarsMapping' ) {
$this -> validateSysVarsMapping ();
} else if ( $action == 'addSysVarsMapping' ) {
$this -> addSysVarsMapping ();
} else if ( $action == 'recipientsAddForward' ) {
$this -> recipientsAddForward ();
} else if ( $action == 'showAdvancedConditions' ) {
$this -> showAdvancedConditions ();
} else if ( $action == 'setAdvancedCondition' ) {
$this -> setAdvancedCondition ();
} else if ( $action == 'inv_server' ) {
$this -> viewServerSettings ();
} else if ( $action == 'inv_settings' ) {
$this -> showInvitationSettings ();
} else if ( $action == 'set_noEmailing' ) {
$this -> setNoEmailing ();
} else if ( $action == 'set_noEmailing_type' ) {
$this -> setNoEmailingType ();
2021-02-10 13:15:04 +01:00
} else if ( $action == 'showAAISmtpPopup' ) {
$this -> showAAISmtpPopup ();
2020-08-14 13:36:36 +02:00
} else {
$sql = sisplet_query ( " SELECT EXISTS (SELECT 1 FROM srv_invitations_archive WHERE ank_id=' " . $this -> sid . " ') " );
$row = mysqli_fetch_array ( $sql );
// Ce imamo ze posiljanje je default stran "Pregled"
if ( $row [ 0 ] == 1 )
$this -> showInvitationStatus ();
// Ce se nimamo nobenega posiljanja je default stran "Nastavitve"
else
$this -> showInvitationSettings ();
}
}
function addRecipients () {
global $lang , $global_user_id ;
# dodamo uporabnike
$fields = $_POST [ 'fields' ];
$recipients_list = $this -> getCleanString ( $_POST [ 'recipients_list' ]);
$new_profile_id = ( int ) $_POST [ 'pid' ];
# če so bile spremembe v profilu ga shranimo kot novega
list ( $old_recipients_list , $old_fields ) = $this -> getRecipientsProfile (( int ) $_POST [ 'pid' ]);
$old_recipients_list = $old_recipients_list != '' ? implode ( " \n " , $old_recipients_list ) : $old_recipients_list ;
$new_recipients_list = str_replace ( " \n \r " , " \n " , $recipients_list );
$old_fields = implode ( " , " , $old_fields );
$new_fields = implode ( " , " , $fields );
if ( $_POST [ 'save_profile' ] == 'true' && ( $old_recipients_list !== $new_recipients_list || $old_fields !== $new_fields )) {
# shranjujemo v nov profil
$post_fields = str_replace ( 'inv_field_' , '' , implode ( ',' , $_POST [ 'fields' ]));
$post_recipients = $this -> getCleanString ( $_POST [ 'recipients_list' ]);
#zaporedno številčimo ime seznama1,2.... če slučajno ime že obstaja
$new_name = $lang [ 'srv_inv_recipient_list_new' ];
$names = array ();
$s = " SELECT name FROM srv_invitations_recipients_profiles WHERE name LIKE '% " . $new_name . " %' AND uid=' $global_user_id ' " ;
$q = sisplet_query ( $s );
while ( $r = mysqli_fetch_assoc ( $q )) {
$names [] = $r [ 'name' ];
}
if ( count ( $names ) > 0 ) {
$cnt = 1 ;
while ( in_array ( $lang [ 'srv_inv_recipient_list_new' ] . $cnt , $names )) {
$cnt ++ ;
}
$new_name = $lang [ 'srv_inv_recipient_list_new' ] . $cnt ;
}
$sql_insert = " INSERT INTO srv_invitations_recipients_profiles " .
" (name,uid,fields,respondents,insert_time,comment, from_survey) " .
" VALUES (' $new_name ', ' $global_user_id ', ' $post_fields ', ' $post_recipients ', NOW(), '', ' " . $this -> sid . " ' ) " ;
$sqlQuery = sisplet_query ( $sql_insert );
if ( ! $sqlQuery ) {
$error = mysqli_error ( $GLOBALS [ 'connect_db' ]);
echo 'Napaka!' ;
} else {
$new_profile_id = mysqli_insert_id ( $GLOBALS [ 'connect_db' ]);
}
sisplet_query ( " COMMIT " );
}
#dodamo polja
$result = $this -> addMassRecipients ( $recipients_list , $fields , $new_profile_id );
/*
# ni sprememb shranimo v sejo
$this -> saveSessionRecipients ( $recipients_list , $fields , $profile_comment );
*/
# prikažemo napake
$invalid_recipiens_array = $this -> displayRecipentsErrors ( $result );
# po novem gremo na respondente
$this -> viewRecipients ();
return ;
}
function saveSessionRecipients ( $recipients_list , $fields , $profile_comment = null ) {
global $lang ;
# polja
$field_list = ( isset ( $_POST [ 'field_list' ]) && trim ( $_POST [ 'field_list' ]) != '' ) ? trim ( $_POST [ 'field_list' ]) : 'email' ;
# shranimo v začasni profil
$new_recipients = str_replace ( " \n \r " , " \n " , $recipients_list );
$new_recipients = explode ( " \n " , $new_recipients );
session_start ();
if ( is_array ( $_SESSION [ 'inv_rec_profile' ][ $this -> sid ][ 'respondents' ])) {
$old_recipients = str_replace ( " \n \r " , " \n " , $_SESSION [ 'inv_rec_profile' ][ $this -> sid ][ 'respondents' ]);
$old_recipients = explode ( " \n " , $old_recipients );
$new_recipients = array_unique ( array_merge ( $old_recipients , $new_recipients ));
}
if ( is_array ( $new_recipients )) {
$recipients_list = implode ( " \n " , $new_recipients );
} else {
$recipients_list = '' ;
}
$_SESSION [ 'inv_rec_profile' ][ $this -> sid ] = array (
'pid' =>- 1 ,
'name' => $lang [ 'srv_invitation_new_templist' ],
'fields' => $field_list ,
'respondents' => $recipients_list ,
'comment' => $profile_comment
);
}
function changeImportType () {
$this -> displayAddRecipientsView ();
}
#prikažemo vmesnik za dodajanje respondentov
function addRecipientsView ( $fields = array (), $recipients_list = null ) {
global $lang ;
global $site_url ;
//echo '<h2>'.$lang['srv_inv_add_recipients_heading'].'</h2>';
$noEmailing = SurveySession :: get ( 'inv_noEmailing' );
$row = $this -> surveySettings ;
echo '<h2 style="margin-left: 15px; color:#333 !important;">' ;
// Text s podatki o nastavitvah posiljanja
$settings_text = '<span class="bold spaceRight">' . $lang [ 'srv_inv_message_type' ] . ':</span>' ;
$individual = ( int ) $this -> surveySettings [ 'individual_invitation' ];
if ( $individual == 0 ){
$settings_text .= '<span class="spaceLeft spaceRight">' . $lang [ 'srv_inv_settings_individual_0' ] . '</span>' ;
}
else {
$settings_text .= '<span class="spaceLeft spaceRight">' . $lang [ 'srv_inv_settings_individual_1' ] . '</span>' ;
}
$settings_text .= ' - ' ;
if ( $noEmailing == 0 ){
$settings_text .= '<span class="spaceLeft spaceRight">' . $lang [ 'srv_inv_settings_noEmail_0' ] . '</span>' ;
}
else {
$settings_text .= '<span class="spaceLeft spaceRight">' . $lang [ 'srv_inv_settings_noEmail_1' ] . '</span>' ;
}
$settings_text .= ' - ' ;
if ( $row [ 'usercode_required' ] == 0 && $individual != 0 ){
$settings_text .= '<span class="spaceLeft spaceRight">' . $lang [ 'srv_inv_settings_URL_0' ];
$settings_text .= ' (' . $lang [ 'srv_inv_settings_code_0' ] . ')</span>' ;
}
else {
$settings_text .= '<span class="spaceLeft spaceRight">' . $lang [ 'srv_inv_settings_URL_1' ];
if ( $row [ 'usercode_skip' ] == 1 || $individual == 0 ){
$settings_text .= ' (' . $lang [ 'srv_inv_settings_code_2' ] . ')</span>' ;
}
else {
$settings_text .= ' (' . $lang [ 'srv_inv_settings_code_1' ] . ')</span>' ;
}
}
$settings_text .= '<span class="spaceLeft"> <a href="' . $site_url . 'admin/survey/index.php?anketa=' . $this -> sid . '&a=invitations&m=inv_settings">' . $lang [ 'edit4' ] . '</a></span>' ;
echo $settings_text ;
echo '</h2>' ;
echo '<div id="srv_invitation_note">' ;
echo $lang [ 'srv_invitation_num_respondents' ] . ( int ) $this -> count_all ;
echo '</div>' ;
echo '<div id="inv_import">' ;
$this -> displayAddRecipientsView ( $fields , $recipients_list );
echo '</div>' ; # id="inv_import"
}
function displayAddRecipientsView ( $fields = array (), $recipients_list = null ) {
global $lang , $site_path , $site_url ;
$field_list = array ();
# odvisno od tipa sporočil prikažemo različna polja
# Personalizirano e-poštno vabilo
// Ce ne posiljamo z emailom sta default polja ime in priimek
$noEmailing = SurveySession :: get ( 'inv_noEmailing' );
if ( $noEmailing == 1 ){
$default_fields = array (
'inv_field_email' => 0 ,
'inv_field_firstname' => 1 ,
'inv_field_lastname' => 1 ,
'inv_field_password' => 0 ,
'inv_field_salutation' => 0 ,
'inv_field_phone' => 0 ,
'inv_field_custom' => 0 ,
);
}
else {
$default_fields = array (
'inv_field_email' => count ( $fields ) == 0 ? 1 : 0 ,
'inv_field_firstname' => 0 ,
'inv_field_lastname' => 0 ,
'inv_field_password' => 0 ,
'inv_field_salutation' => 0 ,
'inv_field_phone' => 0 ,
'inv_field_custom' => 0 ,
);
}
// Ce imamo modul 360 imamo tudi odnos
if ( SurveyInfo :: getInstance () -> checkSurveyModule ( '360_stopinj' )){
$default_fields [ 'inv_field_relation' ] = 0 ;
}
# skreiramo nov vrstni red polj
if ( count ( $fields ) > 0 ) {
foreach ( $fields as $key => $field ) {
$field_list [ $field ] = 1 ;
if ( isset ( $default_fields [ $field ])) {
unset ( $default_fields [ $field ]);
}
}
}
if ( count ( $default_fields ) > 0 ) {
foreach ( $default_fields as $key => $field ) {
$field_list [ $key ] = $field ;
unset ( $default_fields [ $key ]);
}
}
$import_type = isset ( $_POST [ 'import_type' ]) ? ( int ) $_POST [ 'import_type' ] : 2 ;
session_start ();
$checked = ( isset ( $_SESSION [ 'inv_rec_only_this_survey' ]) && ( int ) $_SESSION [ 'inv_rec_only_this_survey' ] == 1 ) ? '1' : '0' ;
2020-11-19 11:15:32 +01:00
# profili respondentov
2020-08-14 13:36:36 +02:00
echo '<div id="inv_recipients_profiles_holder">' ;
echo '<label><input name="inv_show_list_type" id="inv_show_list_type1" type="radio" value="0" onclick="recipientsProfileOnlyThisSurvey();"' . ( $checked == '0' ? ' checked="checked"' : '' ) . ' autocomplete="off">' . $lang [ 'srv_inv_list_edit_from_this_survey' ] . '</label><br/>' ;
echo '<label><input name="inv_show_list_type" id="inv_show_list_type2" type="radio" value="1" onclick="recipientsProfileOnlyThisSurvey();"' . ( $checked == '1' ? ' checked="checked"' : '' ) . ' autocomplete="off">' . $lang [ 'srv_inv_list_edit_from_all_surveys' ] . '</label><br/>' ;
echo '<span>' . $lang [ 'srv_inv_recipient_select_list' ] . '</span><br/>' ;
$this -> listRecipientsProfiles ();
echo '</div>' ; # id=inv_recipients_profiles_holder
echo '<div id="inv_import_list_container">' ;
$sqlSysMapping = sisplet_query ( " SELECT * FROM srv_invitations_mapping WHERE sid = ' $this->sid ' " );
if ( mysqli_num_rows ( $sqlSysMapping ) > 0 ) {
$sysUserToAddQuery = sisplet_query ( " SELECT count(*) FROM srv_user where ank_id=' " . $this -> sid . " ' AND inv_res_id IS NULL AND deleted='0' " );
list ( $sysUserToAdd ) = mysqli_fetch_row ( $sysUserToAddQuery );
}
echo '<span><input name="inv_import_type" id="inv_import_type2" type="radio" value="2" onclick="inv_change_import_type();"' . ( $import_type == 2 ? ' checked="checked"' : '' ) . ' autocomplete="off"><label for="inv_import_type2">' . $lang [ 'srv_inv_recipiens_from_list' ] . '</label></span>' ;
echo '<span><input name="inv_import_type" id="inv_import_type1" type="radio" value="1" onclick="inv_change_import_type();"' . ( $import_type == 1 ? ' checked="checked"' : '' ) . ' autocomplete="off"><label for="inv_import_type1">' . $lang [ 'srv_inv_recipiens_from_file' ] . '</label></span>' ;
echo '<span><input name="inv_import_type" id="inv_import_type3" type="radio" value="3" onclick="inv_change_import_type();"' . ( $import_type == 3 ? ' checked="checked"' : '' ) . ' autocomplete="off"><label for="inv_import_type3">' . $lang [ 'srv_inv_recipiens_from_system' ]
. ( $sysUserToAdd > 0 ? ' (' . $sysUserToAdd . ')' : '' ) . '</label></span>' ;
2020-11-19 11:15:32 +01:00
echo Help :: display ( 'inv_recipiens_from_system' );
echo '<br class="clr"/>' ;
2020-08-14 13:36:36 +02:00
echo '<br class="clr"/>' ;
2020-11-19 11:15:32 +01:00
if ( $import_type == 3 ) {
2020-08-14 13:36:36 +02:00
$this -> createSystemVariablesMapping ();
2020-11-19 11:15:32 +01:00
}
else {
2020-08-14 13:36:36 +02:00
# sporočilo za personalizirana e-vabila in respondente iz baze
echo '<span class="inv_note">' . $lang [ 'srv_inv_recipiens_field_note' ] . '</span>' ;
echo '<br >' ;
echo '<div id="inv_field_container">' ;
echo '<ul class="connectedSortable">' ;
$field_lang = array ();
if ( count ( $field_list ) > 0 ) {
foreach ( $field_list AS $field => $checked ) {
$is_selected = ( $checked == 1 ) ? true : false ;
# če je polje obkljukano
$css = $is_selected ? ' class="inv_field_enabled"' : '' ;
$label_for = ' for="' . $field . '_chk"' ;
if ( SurveyInfo :: getInstance () -> checkSurveyModule ( '360_stopinj' ) && $field == 'inv_field_relation' )
echo '<br />' ;
echo '<li id="' . $field . '"' . $css . '>' ;
echo '<input id="' . $field . '_chk" type="checkbox" class="inv_checkbox' . $hidden_checkbox . '"' . ( $is_selected == true ? ' checked="checked"' : '' ) . '>' ;
echo '<label' . $label_for . '>' . $lang [ 'srv_' . $field ] . '</label>' ;
echo '</li>' ;
if ( $is_selected == 1 ) {
$field_lang [] = $lang [ 'srv_' . $field ];
}
}
}
echo '</ul>' ;
echo '</div>' ;
echo '<br class="clr" />' ;
echo '<script type="text/javascript">' ;
echo " $ ('ul.connectedSortable').sortable( { update : function () { refreshFieldsList(); }, forcePlaceholderSize:'true', tolerance:'pointer', placeholder:'inv_field_placeholder', cancel:'#inv_field_relation'}); " ;
echo '</script>' ;
# iz seznama
echo '<div id="inv_import_list"' . ( $import_type != 1 ? '' : ' class="hidden"' ) . '>' ;
echo '<span class="inv_note">' . $lang [ 'srv_inv_recipiens_email_note' ];
echo '<br class="clr" /><span class="inv_sample" >' ;
echo $lang [ 'srv_inv_recipiens_sample' ] . ' </span><span class="inv_sample">' ;
echo $lang [ 'srv_inv_recipiens_sample1' ];
echo '</span>' ;
echo '<br class="clr" />' ;
echo '</span>' ;
echo '<br class="clr" />' . $lang [ 'srv_inv_recipiens_fields' ] . ' <span id="inv_field_list" class="inv_type_0">' ;
echo implode ( ',' , $field_lang );
echo '</span>' ;
// Opozorilo za limit znakov pri passwordu (20)
echo '<span id="inv_field_list_warning" class="red" style="display:none;">' ;
echo '<br class="clr" /><br class="clr" />' ;
echo $lang [ 'srv_inv_recipiens_pass_warning' ];
echo '</span>' ;
echo '<br class="clr" /><br class="clr" />' ;
// delimiter
echo $lang [ 'srv_inv_recipient_list_delimiter' ]
. '<label for="recipientsDelimiter1"><input id="recipientsDelimiter1" type="radio" ' . ( ! isset ( $_POST [ 'recipientsDelimiter' ]) || $_POST [ 'recipientsDelimiter' ] == " , " ? 'checked="checked"' : '' ) . ' value="," name="recipientsDelimiter">' . $lang [ 'srv_inv_recipient_delimiter_comma' ] . ' (,)</label> '
. '<label for="recipientsDelimiter4"><input id="recipientsDelimiter4" type="radio" ' . ( isset ( $_POST [ 'recipientsDelimiter' ]) && $_POST [ 'recipientsDelimiter' ] == " |~| " ? 'checked="checked"' : '' ) . ' value="|~|" name="recipientsDelimiter">' . $lang [ 'srv_inv_recipient_delimiter_1KA' ] . ' (|~|)</label> '
. '<label for="recipientsDelimiter2"><input id="recipientsDelimiter2" type="radio" ' . ( isset ( $_POST [ 'recipientsDelimiter' ]) && $_POST [ 'recipientsDelimiter' ] == " ; " ? 'checked="checked"' : '' ) . ' value=";" name="recipientsDelimiter">' . $lang [ 'srv_inv_recipient_delimiter_semicolon' ] . ' (;) </label> '
. '<label for="recipientsDelimiter3"><input id="recipientsDelimiter3" type="radio" ' . ( isset ( $_POST [ 'recipientsDelimiter' ]) && $_POST [ 'recipientsDelimiter' ] == " | " ? 'checked="checked"' : '' ) . ' value="|" name="recipientsDelimiter">' . $lang [ 'srv_inv_recipient_delimiter_pipe' ] . ' (|)</label> ' ;
echo '</span>' ;
echo '<br class="clr" /><br class="clr" />' ;
echo '<textarea id="inv_recipients_list" cols="50" rows="9" name="inv_recipients_list">' ;
if ( is_array ( $recipients_list ) && count ( $recipients_list ) > 0 ) {
echo implode ( " \n " , $recipients_list );
}
echo '</textarea>' ;
echo '<br class="clr"/>' ;
#podatki o profilu
echo '<br class="clr"/>' ;
$ppid = isset ( $_POST [ 'pid' ]) ? ( int ) $_POST [ 'pid' ] : - 1 ;
echo '<span class="floatLeft" style="min-width:200px;">' ;
if (( int ) $ppid > 0 ) {
# polovimo podatke profila
$sql_string = " SELECT rp.*, u.name, u.surname FROM srv_invitations_recipients_profiles AS rp LEFT JOIN users AS u ON rp.uid = u.id WHERE rp.pid = ' " . ( int ) $ppid . " ' " ;
$sql_query = sisplet_query ( $sql_string );
$sql_row = mysqli_fetch_assoc ( $sql_query );
$avtor = array ();
if ( trim ( $sql_row [ 'name' ])) {
$avtor [] = trim ( $sql_row [ 'name' ]);
}
if ( trim ( $sql_row [ 'surname' ])) {
$avtor [] = trim ( $sql_row [ 'surname' ]);
}
if ( count ( $avtor ) > 0 ) {
echo '<div class="gray">' . $lang [ 'srv_inv_recipiens_list_created_by' ] . implode ( ' ' , $avtor ) . '</div>' ;
}
if ( count ( $avtor ) > 0 ) {
echo '<div class="gray" title="' . date ( " d.m.Y H:i:s " , strtotime ( $sql_row [ 'insert_time' ])) . '">' . $lang [ 'srv_inv_recipiens_list_created_day' ] . date ( " d.m.Y " , strtotime ( $sql_row [ 'insert_time' ])) . '</div>' ;
}
echo '<div class="gray" title="' . $sql_row [ 'comment' ] . '" style="max-width:202px;">' . $lang [ 'srv_inv_recipiens_list_comment' ] . trim ( strip_tags ( $sql_row [ 'comment' ])) . '</div>' ;
} else {
echo '<div class="gray">' . $lang [ 'srv_inv_recipiens_temporary_list' ] . '</div>' ;
}
echo '</span>' ;
echo '<div class="floatLeft spaceLeft">' ;
echo '<div>' ;
echo '<label class="spaceRight"><input type="checkbox" id="inv_recipients_add" value="1" checked="checked">' . $lang [ 'srv_invitation_recipients_add_type4' ] . '</label>' ;
/* echo '<label class="spaceRight"><input type="checkbox" id="inv_recipients_rename_profile" onchange="invRenameRecipientsChange();">' . $lang [ 'srv_inv_recipients_rename_list' ] . '</label>' ;
echo Help :: display ( 'srv_invitation_rename_profile' ); */
#echo ' ';
#echo '<label class="spaceLeft"><input type="checkbox" id="inv_recipients_add_type2" value="2" >'.$lang['srv_invitation_recipients_add_type5'].'</label>';
echo '</div>' ;
echo '<div id="div_inv_recipients_rename_list_type" class="displayNone">' ;
$this -> saveRecipientListName ();
echo '</div>' ;
echo '</div>' ;
echo '<br />' ;
# če že imamo prejemnike v bazi ponudimo gumb naprej
echo '<span class="buttonwrapper floatRight spaceLeft spaceRight"><a class="ovalbutton ovalbutton_orange" href="#" onclick="invRecipientsForward(); return false;"><span>' . $lang [ 'srv_invitation_forward' ] . '</span></a></span>' ;
echo '<br /><br />' ;
echo '</div>' ; # id=inv_import_list
# iz datoteke
echo '<div id="inv_import_file"' . ( $import_type == 1 ? '' : ' class="hidden"' ) . '>' ;
echo '<form id="inv_recipients_upload_form" name="resp_uploader" method="post" enctype="multipart/form-data" action="' . $site_url . 'admin/survey/index.php?anketa=' . $this -> sid . '&a=' . A_INVITATIONS . '&m=upload_recipients" autocomplete="off">' ;
echo '<input type="hidden" name="fields" id="inv_recipients_upoad_fields" value="' . implode ( ',' , $fields ) . '" />' ;
echo '<input type="hidden" name="posted" value="1" />' ;
echo '<span class="inv_note">' . $lang [ 'srv_inv_recipiens_file_note_1' ] . '</span>' ;
echo '<br class="clr" />' . $lang [ 'srv_inv_recipiens_fields' ] . ' <span id="inv_field_list" class="inv_type_1">' ;
echo implode ( ',' , $field_lang );
echo '</span>' ;
echo '<br class="clr" />' ;
echo $lang [ 'srv_mailing_upload_list' ];
echo '<input type="file" name="recipientsFile" id="recipientsFile" size="42" >' ;
if ( count ( $errors ) > 0 ) {
echo '<br class="clr" />' ;
echo '<span class="inv_error_note">' ;
foreach ( $errors as $error ) {
echo '* ' . $error . '<br />' ;
}
echo '</span>' ;
}
echo '<br/><br/><label>' . $lang [ 'srv_inv_recipient_import_file_delimiter' ] . '</label> <input type="radio" name="recipientsDelimiter" id="recipientsDelimiter1" value="," checked><label for="recipientsDelimiter1">' . $lang [ 'srv_inv_recipient_delimiter_comma' ] . ' (,)</label>' ;
echo ' <input type="radio" name="recipientsDelimiter" id="recipientsDelimiter2" value=";"><label for="recipientsDelimiter2">' . $lang [ 'srv_inv_recipient_delimiter_semicolon' ] . ' (;)</label>' ;
echo ' <input type="radio" name="recipientsDelimiter" id="recipientsDelimiter3" value="|"><label for="recipientsDelimiter3">' . $lang [ 'srv_inv_recipient_delimiter_pipe' ] . ' (|)</label>' ;
echo ' <input type="radio" name="recipientsDelimiter" id="recipientsDelimiter4" value="|~|"><label for="recipientsDelimiter4">' . $lang [ 'srv_inv_recipient_delimiter_1KA' ] . ' (|~|)</label>' ;
echo '</form>' ;
echo '<br class="clr" /><span class="inv_sample" >' ;
echo $lang [ 'srv_inv_recipiens_sample' ] . ' </span><span class="inv_sample">' ;
echo $lang [ 'srv_inv_recipiens_sample1' ];
echo '</span>' ;
echo '<br class="clr" />' ;
echo '<br class="clr" />' ;
echo '<span id="inv_upload_recipients" class="buttonwrapper floatLeft spaceLeft" ><a class="ovalbutton ovalbutton_orange" ><span>' . $lang [ 'srv_inv_btn_add_recipients_add' ] . '</span></a></span>' ;
echo '</div>' ; # id=inv_import_file
}
echo '</div>' ; # id=inv_import_list_container
echo '<br class="clr"/>' ;
}
/**
*
* Enter description here ...
* @ param $_recipients - prejemniki vsak v svoji vrstici , ločeni z vejico
* @ param $fields - array polij ki jih dodajamo
*/
function addMassRecipients ( $_recipients = '' , $fields = array (), $new_profile_id = null ) {
global $global_user_id ;
# vabila z e-maili naredimo tukaj, brez e-mailov pa s podebno funkcijo
if ( in_array ( 'inv_field_email' , $fields )) {
# vabila z emaili
$inv_iid = $this -> inv_iid ;
# povezava imena polji iz forem, z imeni polji v bazi
$db_vs_form_array = array (
'inv_field_email' => 'email' ,
'inv_field_firstname' => 'firstname' ,
'inv_field_lastname' => 'lastname' ,
'inv_field_password' => 'password' ,
'inv_field_cookie' => 'cookie' ,
'inv_field_salutation' => 'salutation' ,
'inv_field_phone' => 'phone' ,
'inv_field_custom' => 'custom' ,
'inv_field_relation' => 'relation' ,
);
#dodamo potrebna sistemska polja
$this -> addSystemVariables ( $fields );
# dodamo ustrezne uporabnike, neustrezne izpišemo še enkrat da se lahko popravijo
$_recipients = str_replace ( " \n \r " , " \n " , $_recipients );
$recipients_list = explode ( " \n " , $_recipients );
$num_recipients_list = count ( $recipients_list );
# katero polje je za e-mail
if ( in_array ( 'inv_field_email' , $fields )) {
$user_email = true ;
} else {
#za tip 0 - Personalizirano e-poštno vabilo kjer je polje e-mail obvezno
# dodamo polje email
$user_email = true ;
$fields [] = 'inv_field_email' ;
}
# polje cookie mora bit zraven
if ( ! in_array ( 'inv_field_cookie' , $fields )) {
$fields [] = 'inv_field_cookie' ;
}
/* brez preverjanja unikatnosti
# polovimo že dodane prejemnike iz baze
$email_in_db = array ();
$sql_string = " SELECT email FROM srv_invitations_recipients WHERE ank_id = ' " . $this -> sid . " ' AND deleted='0' " ;
$sql_query = sisplet_query ( $sql_string );
if ( mysqli_num_rows ( $sql_query ) > 0 ) {
while ( $sql_row = mysqli_fetch_assoc ( $sql_query )) {
$email_in_db [] = strtolower ( $sql_row [ 'email' ]);
}
}
*/
# katero polje je za password
if ( in_array ( 'inv_field_password' , $fields )) {
$user_password = true ;
} else {
$user_password = false ;
# dodamo polje password
$fields [] = 'inv_field_password' ;
}
# polja za bazo
$db_fields = '' ;
foreach ( $fields as $field ) {
$db_fields .= ', ' . $db_vs_form_array [ $field ];
}
# katera gesla (code) že imamo v bazi za to anketo
$password_in_db = array ();
$sql_string = " SELECT password FROM srv_invitations_recipients WHERE ank_id = ' " . $this -> sid . " ' AND deleted = '0' " ;
$sql_query = sisplet_query ( $sql_string );
while ( $sql_row = mysqli_fetch_assoc ( $sql_query )) {
$password_in_db [ $sql_row [ 'password' ]] = $sql_row [ 'password' ];
}
$unsubscribed = array ();
#polovimo prejemnike ki ne želijo prejemati obvestil
$sql_string = " SELECT email FROM srv_invitations_recipients WHERE ank_id = ' " . $this -> sid . " ' AND unsubscribed = '1' " ;
$sql_query = sisplet_query ( $sql_string );
$unsubscribed = array ();
if ( mysqli_num_rows ( $sql_query ) > 0 ) {
while ( $sql_row = mysqli_fetch_assoc ( $sql_query )) {
$unsubscribed [] = $sql_row [ 'email' ];
}
}
#polovimo prejemnike ki ne želijo prejemati obvestil i datoteje srv_survey_unsubscribed
$condition = ( count ( $unsubscribed ) > 0 ) ? " AND email NOT IN(' " . implode ( '\',\'' , $unsubscribed ) . " ') " : '' ;
$sql_string = " SELECT email FROM srv_survey_unsubscribe WHERE ank_id = ' " . $this -> sid . " ' " . $condition ;
$sql_query = sisplet_query ( $sql_string );
if ( mysqli_num_rows ( $sql_query ) > 0 ) {
while ( $sql_row = mysqli_fetch_assoc ( $sql_query )) {
$unsubscribed [] = $sql_row [ 'email' ];
}
}
#array z veljavnimi zapisi
$valid_recipiens_array = array ();
# array z zapisi kjer so napake v geslih
$invalid_password_array = array ();
#array z zapisi kjer so neveljavna gesla
$invalid_email_array = array ();
#array z podvojenimi zapisi
$duplicate_email_array = array ();
#aray z zapisi kjer so uporabniki izbrali da ne želijo prejemat e-mailov
$unsubscribed_recipiens_array = array ();
if ( $num_recipients_list > 0 ) {
foreach ( $recipients_list AS $recipient_line ) {
$recipient_line = trim ( $recipient_line );
if ( $recipient_line != null && $recipient_line != '' ) {
// interni delimiter in ne vejicaa!!!!
$line_array = explode ( '|~|' , $recipient_line );
//$line_array = explode(',',$recipient_line);
# predpostavljamo da je vrstica vredu
$invalid_line = false ;
#prilagodimo izbrana polja
$recipent_array = array ();
$i = 0 ;
foreach ( $fields AS $field ) {
$recipent_array [ $field ] = $line_array [ $i ];
$i ++ ;
}
# izvedemo validacijo posameznih polij
# najprej preverimo gesla, če niso uporabniško določena, jih dodelimo sami
if ( $invalid_line == false ) {
# če še ni bilo napake ( da ne podvajamo zapisov pri katerih je več napak)
if ( $user_password == false ) {
# gesla določamo avtomatsko, (ne bo problemov :] )
# Izberemo random hash, ki se ni v bazi
do {
list ( $code , $cookie ) = $this -> generateCode ();
#} while (in_array($code,$password_in_db) && !is_numeric($code));
} while ( in_array ( $code , $password_in_db )); # je bil problem kadar so same številke
# polje za geslo je na zadnjem mestu (smo ga dodali zgoraj)
$recipent_array [ 'inv_field_password' ] = $code ;
$recipent_array [ 'inv_field_cookie' ] = $cookie ;
# če je vse ok, geslo dodamo v seznam že uporabljenih
$password_in_db [ $code ] = $code ;
} else {
# gesla je določil uporabnik, (dajmo ga malo preverit)
$user_password = trim ( $recipent_array [ 'inv_field_password' ]);
# preverimo ali je geslo že v bazi
if ( $user_password == null || $user_password == '' || in_array ( $user_password , $password_in_db )) {
$invalid_password_array [] = $recipient_line ;
$invalid_line = true ;
}
# če je vse ok, geslo dodamo v seznam že uporabljenih
if ( $invalid_line == false ) {
$password_in_db [ $user_password ] = $user_password ;
#dodamo še piškotek
list ( $code , $cookie ) = $this -> generateCode ();
$recipent_array [ 'inv_field_cookie' ] = $cookie ;
}
}
}
# če imamo emaile naredimo validacijo, preverimo zavrnitve.. itd
if ( $user_email == true && $invalid_line == false ) {
# preberemo uporabniški email
$email_field = trim ( $recipent_array [ 'inv_field_email' ]);
#ali je email veljaven
if ( ! $this -> validEmail ( $email_field ) && $invalid_line == false ) {
$invalid_email_array [] = $recipient_line ;
$invalid_line = true ;
}
# ali je email podvojen
/* brez preverjanja unikatnosti
if ( in_array ( strtolower ( $email_field ), $email_in_db ) && $invalid_line == false ) {
$duplicate_email_array [] = strtolower ( $recipient_line );
$invalid_line = true ;
}
*/
# ali uporabnik ne želi prejemati sporočil (opted out)
if ( in_array ( $email_field , $unsubscribed ) && $invalid_line == false ) {
$unsubscribed_recipiens_array [] = $recipient_line ;
$invalid_line = true ;
}
# če je vse ok, email dodamo v seznam že uporabljenih
if ( $invalid_line == false ) {
$email_in_db [] = strtolower ( $email_field );
}
}
# če je vse ok dodamo userja k veljavnim
if ( $invalid_line == false ) {
$valid_recipiens_array [] = $recipent_array ;
}
}
}
}
if ( $new_profile_id == null ) {
$list_id = ( int ) $_POST [ 'pid' ];
} else {
$list_id = $new_profile_id ;
}
# pripravimo sql stavek za vstavljanje
if ( count ( $valid_recipiens_array ) > 0 ) {
$sql_insert_start = " INSERT INTO srv_invitations_recipients (ank_id " . $db_fields . " ,sent,responded,unsubscribed,deleted,date_inserted,inserted_uid,list_id) VALUES " ;
$count = 0 ;
$sql_insert_array = array ();
$cnt = 0 ;
$max_in_array = 1000 ; # po koliko respondentov dodajamo naenkeat
$array_loop = 0 ;
foreach ( $valid_recipiens_array AS $recipent_fields ) {
$cnt ++ ;
$sql_insert = " (' " . $this -> sid . " ' " ;
foreach ( $recipent_fields as $field ) {
$sql_insert .= " , ' " . str_replace ( array ( '\\' , " ' " ), array ( '' , ''' ), $field ) . " ' " ;
}
$sql_insert .= " ,'0','0','0','0',NOW(),' " . $global_user_id . " ',' " . $list_id . " ') " ;
$sql_insert_array [ $array_loop ][] = $sql_insert ;
if ( $cnt >= $max_in_array ) {
$array_loop ++ ;
$cnt = 0 ;
}
}
$sql_insert_end = " ON DUPLICATE KEY UPDATE firstname=VALUES(firstname), lastname=VALUES(lastname), salutation=VALUES(salutation), phone=VALUES(phone), custom=VALUES(custom), relation=VALUES(relation), deleted='0', date_inserted=NOW() " ;
# v loopu dodamo posamezne respondente po skupinah (ker kadar je respondentov veliko mysql crkne)
if ( count ( $sql_insert_array ) > 0 ) {
foreach ( $sql_insert_array AS $sub_insert_array ) {
$query_insert = $sql_insert_start . implode ( ',' , $sub_insert_array ) . $sql_insert_end ;
$sqlQuery = sisplet_query ( $query_insert );
$rows = mysqli_affected_rows ( $GLOBALS [ 'connect_db' ]);
if ( ! $sqlQuery ) {
$error = mysqli_error ( $GLOBALS [ 'connect_db' ]);
}
}
sisplet_query ( " COMMIT " );
}
}
return array ( 'valid_recipiens' => $valid_recipiens_array ,
'invalid_password' => $invalid_password_array ,
'invalid_email' => $invalid_email_array ,
'duplicate_email' => $duplicate_email_array ,
'unsubscribed' => $unsubscribed_recipiens_array );
} else {
# vabila brez emailov
return $this -> addMassRecipientsWithoutEmail ( $_recipients , $fields , $new_profile_id );
}
}
function addMassRecipientsWithoutEmail ( $_recipients = '' , $fields = array (), $new_profile_id = null ) {
global $global_user_id ;
$inv_iid = $this -> inv_iid ;
# povezava imena polji iz forem, z imeni polji v bazi
$db_vs_form_array = array (
'inv_field_email' => 'email' ,
'inv_field_firstname' => 'firstname' ,
'inv_field_lastname' => 'lastname' ,
'inv_field_password' => 'password' ,
'inv_field_cookie' => 'cookie' ,
'inv_field_salutation' => 'salutation' ,
'inv_field_phone' => 'phone' ,
'inv_field_custom' => 'custom' ,
'inv_field_relation' => 'relation' ,
);
#dodamo potrebna sistemska polja
$this -> addSystemVariables ( $fields );
# dodamo ustrezne uporabnike, neustrezne izpišemo še enkrat da se lahko popravijo
$_recipients = str_replace ( " \n \r " , " \n " , $_recipients );
$recipients_list = explode ( " \n " , $_recipients );
$num_recipients_list = count ( $recipients_list );
# katero polje je za e-mail
if ( in_array ( 'inv_field_email' , $fields )) {
$user_email = true ;
} else {
}
# polje cookie mora bit zraven
if ( ! in_array ( 'inv_field_cookie' , $fields )) {
$fields [] = 'inv_field_cookie' ;
}
# polovimo že dodane prejemnike iz baze
$user_in_db = array ();
$sql_string = " SELECT firstname,lastname,salutation,phone,custom,relation,password FROM srv_invitations_recipients WHERE ank_id = ' " . $this -> sid . " ' AND deleted='0' " ;
$sql_query = sisplet_query ( $sql_string );
if ( mysqli_num_rows ( $sql_query ) > 0 ) {
while ( $sql_row = mysqli_fetch_assoc ( $sql_query )) {
$user_in_db [] = $sql_row [ 'firstname' ] . $sql_row [ 'lastname' ] . $sql_row [ 'salutation' ] . $sql_row [ 'phone' ] . $sql_row [ 'custom' ] . $sql_row [ 'relation' ] . $sql_row [ 'password' ];
}
}
# katero polje je za password
if ( in_array ( 'inv_field_password' , $fields )) {
$user_password = true ;
} else {
$user_password = false ;
# dodamo polje password
$fields [] = 'inv_field_password' ;
}
# polja za bazo
$db_fields = '' ;
foreach ( $fields as $field ) {
$db_fields .= ', ' . $db_vs_form_array [ $field ];
}
# katera gesla (code) že imamo v bazi za to anketo
$password_in_db = array ();
$sql_string = " SELECT password FROM srv_invitations_recipients WHERE ank_id = ' " . $this -> sid . " ' AND deleted='0' " ;
$sql_query = sisplet_query ( $sql_string );
while ( $sql_row = mysqli_fetch_assoc ( $sql_query )) {
$password_in_db [ $sql_row [ 'password' ]] = $sql_row [ 'password' ];
}
$unsubscribed = array ();
#polovimo prejemnike ki ne želijo prejemati obvestil
#
# $sql_string = "SELECT email FROM srv_invitations_recipients WHERE unsubscribed = '1'";
# $sql_query = sisplet_query($sql_string);
# $unsubscribed = array();
// if (mysqli_num_rows($sql_query) > 0 ) {
# while ($sql_row = mysqli_fetch_assoc($sql_query)) {
# $unsubscribed[] = $sql_row['email'];
# }
# }
#array z veljavnimi zapisi
$valid_recipiens_array = array ();
# array z zapisi kjer so napake v geslih
$invalid_password_array = array ();
#array z zapisi kjer so neveljavna gesla
$invalid_email_array = array ();
#array z podvojenimi zapisi
$duplicate_email_array = array ();
#aray z zapisi kjer so uporabniki izbrali da ne želijo prejemat e-mailov
$unsubscribed_recipiens_array = array ();
if ( $num_recipients_list > 0 ) {
foreach ( $recipients_list AS $recipient_line ) {
$recipient_line = trim ( $recipient_line );
if ( $recipient_line != null && $recipient_line != '' ) {
$line_array = explode ( '|~|' , $recipient_line );
# predpostavljamo da je vrstica vredu
$invalid_line = false ;
#prilagodimo izbrana polja
$recipent_array = array ();
$i = 0 ;
foreach ( $fields AS $field ) {
$recipent_array [ $field ] = $line_array [ $i ];
$i ++ ;
}
# izvedemo validacijo posameznih polij
# najprej preverimo gesla, če niso uporabniško določena, jih dodelimo sami
if ( $invalid_line == false ) {
# če še ni bilo napake ( da ne podvajamo zapisov pri katerih je več napak)
if ( $user_password == false ) {
# gesla določamo avtomatsko, (ne bo problemov :] )
# Izberemo random hash, ki se ni v bazi
do {
list ( $code , $cookie ) = $this -> generateCode ();
} while ( in_array ( $code , $password_in_db ));
# polje za geslo je na zadnjem mestu (smo ga dodali zgoraj)
$recipent_array [ 'inv_field_password' ] = $code ;
$recipent_array [ 'inv_field_cookie' ] = $cookie ;
# če je vse ok, geslo dodamo v seznam že uporabljenih
$password_in_db [ $code ] = $code ;
} else {
# gesla je določil uporabnik, (dajmo ga malo preverit)
$user_password = trim ( $recipent_array [ 'inv_field_password' ]);
# preverimo ali je geslo že v bazi
if ( $user_password == null || $user_password == '' || in_array ( $user_password , $password_in_db )) {
$invalid_password_array [] = $recipient_line ;
$invalid_line = true ;
}
# če je vse ok, geslo dodamo v seznam že uporabljenih
if ( $invalid_line == false ) {
$password_in_db [ $user_password ] = $user_password ;
#dodamo še piškotek
list ( $code , $cookie ) = $this -> generateCode ();
$recipent_array [ 'inv_field_cookie' ] = $cookie ;
}
}
}
# če imamo emaile naredimo validacijo, preverimo zavrnitve.. itd
// if ($user_email == true && $invalid_line == false) {
if ( $invalid_line == false ) {
# # preberemo uporabniški email
$email_field = trim ( $recipent_array [ 'inv_field_firstname' ])
. trim ( $recipent_array [ 'inv_field_lastname' ])
. trim ( $recipent_array [ 'inv_field_salutation' ])
. trim ( $recipent_array [ 'inv_field_phone' ])
. trim ( $recipent_array [ 'inv_field_custom' ])
. trim ( $recipent_array [ 'inv_field_relation' ])
. trim ( $recipent_array [ 'inv_field_password' ]);
#
# #ali je email veljaven
// if (!$this->validEmail($email_field) && $invalid_line == false) {
# $invalid_email_array[] = $recipient_line;
# $invalid_line = true;
# }
# ali je email podvojen
if ( in_array ( strtolower ( $email_field ), $user_in_db ) && $invalid_line == false ) {
$duplicate_email_array [] = strtolower ( $recipient_line );
$invalid_line = true ;
}
# ali uporabnik ne želi prejemati sporočil (opted out)
// if (in_array($email_field,$unsubscribed) && $invalid_line == false) {
# $unsubscribed_recipiens_array[] = $recipient_line;
# $invalid_line = true;
# }
# če je vse ok, email dodamo v seznam že uporabljenih
if ( $invalid_line == false ) {
$user_in_db [] = $email_field ;
}
}
# če je vse ok dodamo userja k veljavnim
if ( $invalid_line == false ) {
$valid_recipiens_array [] = $recipent_array ;
}
}
}
}
# pripravimo sql stavek za vstavljanje
if ( $new_profile_id == null ) {
$list_id = ( int ) $_POST [ 'pid' ];
}
else {
$list_id = $new_profile_id ;
}
if ( count ( $valid_recipiens_array ) > 0 ) {
$sql_insert_start = " INSERT INTO srv_invitations_recipients (ank_id " . $db_fields . " ,sent,responded,unsubscribed,deleted,date_inserted,inserted_uid,list_id) VALUES " ;
$count = 0 ;
$sql_insert_array = array ();
$cnt = 0 ;
$max_in_array = 1000 ; # po koliko respondentov dodajamo naenkeat
$array_loop = 0 ;
foreach ( $valid_recipiens_array AS $recipent_fields ) {
$cnt ++ ;
$sql_insert = " (' " . $this -> sid . " ' " ;
foreach ( $recipent_fields as $field ) {
$sql_insert .= " , ' $field ' " ;
}
$sql_insert .= " ,'0','0','0','0',NOW(),' " . $global_user_id . " ',' " . $list_id . " ') " ;
$sql_insert_array [ $array_loop ][] = $sql_insert ;
if ( $cnt >= $max_in_array ) {
$array_loop ++ ;
$cnt = 0 ;
}
}
$sql_insert_end = " ON DUPLICATE KEY UPDATE firstname=VALUES(firstname), lastname=VALUES(lastname), salutation=VALUES(salutation), phone=VALUES(phone), custom=VALUES(custom), relation=VALUES(relation), deleted='0', date_inserted=NOW() " ;
# v loopu dodamo posamezne respondente po skupinah (ker kadar je respondentov veliko mysql crkne)
if ( count ( $sql_insert_array ) > 0 ) {
foreach ( $sql_insert_array AS $sub_insert_array ) {
$query_insert = $sql_insert_start . implode ( ',' , $sub_insert_array ) . $sql_insert_end ;
$sqlQuery = sisplet_query ( $query_insert );
$rows = mysqli_affected_rows ( $GLOBALS [ 'connect_db' ]);
if ( ! $sqlQuery ) {
$error = mysqli_error ( $GLOBALS [ 'connect_db' ]);
}
}
sisplet_query ( " COMMIT " );
}
}
return array ( 'valid_recipiens' => $valid_recipiens_array ,
'invalid_password' => $invalid_password_array ,
'invalid_email' => $invalid_email_array ,
'duplicate_email' => $duplicate_email_array ,
'unsubscribed' => $unsubscribed_recipiens_array );
}
function generateCode () {
// Zgeneriramo cookie
$cookie = md5 ( mt_rand ( 1 , mt_getrandmax ()) . '@' . $_SERVER [ 'REMOTE_ADDR' ]);
// Ce je prvi znak stevilka jo spremenimo v crko ker drugace vcasih izvoz v excel ne dela ok
$letters = array ( 'a' , 'b' , 'c' , 'd' , 'e' , 'f' );
if ( is_numeric ( substr ( $cookie , 0 , 1 )))
$cookie = $letters [ array_rand ( $letters )] . substr ( $cookie , 1 );
// Koda je prvi del cookija
$code = substr ( $cookie , 0 , 6 );
return array ( $code , $cookie );
}
#preglej prejemnike
function viewRecipients ( $errors = array (), $msgs = array ()) {
global $lang , $site_url , $admin_type ;
2021-03-16 10:11:08 +01:00
$noEmailing = SurveySession :: get ( 'inv_noEmailing' );
2020-08-14 13:36:36 +02:00
$row = $this -> surveySettings ;
echo '<h2 style="margin-left: 15px; color:#333 !important;">' ;
// Text s podatki o nastavitvah posiljanja
$settings_text = '<span class="bold spaceRight">' . $lang [ 'srv_inv_message_type' ] . ':</span>' ;
$individual = ( int ) $this -> surveySettings [ 'individual_invitation' ];
if ( $individual == 0 ){
$settings_text .= '<span class="spaceLeft spaceRight">' . $lang [ 'srv_inv_settings_individual_0' ] . '</span>' ;
}
else {
$settings_text .= '<span class="spaceLeft spaceRight">' . $lang [ 'srv_inv_settings_individual_1' ] . '</span>' ;
}
$settings_text .= ' - ' ;
if ( $noEmailing == 0 ){
$settings_text .= '<span class="spaceLeft spaceRight">' . $lang [ 'srv_inv_settings_noEmail_0' ] . '</span>' ;
}
else {
$settings_text .= '<span class="spaceLeft spaceRight">' . $lang [ 'srv_inv_settings_noEmail_1' ] . '</span>' ;
}
$settings_text .= ' - ' ;
if ( $row [ 'usercode_required' ] == 0 && $individual != 0 ){
$settings_text .= '<span class="spaceLeft spaceRight">' . $lang [ 'srv_inv_settings_URL_0' ];
$settings_text .= ' (' . $lang [ 'srv_inv_settings_code_0' ] . ')</span>' ;
}
else {
$settings_text .= '<span class="spaceLeft spaceRight">' . $lang [ 'srv_inv_settings_URL_1' ];
if ( $row [ 'usercode_skip' ] == 1 || $individual == 0 ){
$settings_text .= ' (' . $lang [ 'srv_inv_settings_code_2' ] . ')</span>' ;
}
else {
$settings_text .= ' (' . $lang [ 'srv_inv_settings_code_1' ] . ')</span>' ;
}
}
$settings_text .= '<span class="spaceLeft"> <a href="' . $site_url . 'admin/survey/index.php?anketa=' . $this -> sid . '&a=invitations&m=inv_settings">' . $lang [ 'edit4' ] . '</a></span>' ;
echo $settings_text ;
echo '</h2>' ;
#polovimo prejemnike ki ne želijo prejemati obvestil
# nastavimo filter
session_start ();
$filter_duplicated = $_SESSION [ 'inv_filter' ][ 'duplicated' ];
$filter = $_SESSION [ 'inv_filter' ][ 'value' ];
if ( $filter != '' ) {
$mysql_filter = " AND ( "
. " i.email LIKE '% " . $filter . " %' "
. " OR i.firstname LIKE '% " . $filter . " %' "
. " OR i.lastname LIKE '% " . $filter . " %' "
. " OR i.password LIKE '% " . $filter . " %' "
. " OR i.salutation LIKE '% " . $filter . " %' "
. " OR i.phone LIKE '% " . $filter . " %' "
. " OR i.custom LIKE '% " . $filter . " %' "
. " OR i.relation LIKE '% " . $filter . " %' "
. " ) " ;
}
if ( isset ( $_SESSION [ 'inv_filter_on' ]) && $_SESSION [ 'inv_filter_on' ] == true ) {
if ( ! isset ( $_SESSION [ 'inv_filter' ][ 'send' ]) || ( int ) $_SESSION [ 'inv_filter' ][ 'send' ] == 0 ) {
$mysql_filter .= " " ;
} else if ( $_SESSION [ 'inv_filter' ][ 'send' ] == 2 ) {
$mysql_filter .= " AND i.sent='1' " ;
} else if ( $_SESSION [ 'inv_filter' ][ 'send' ] == 1 ) {
$mysql_filter .= " AND i.sent='0' " ;
}
if ( ! isset ( $_SESSION [ 'inv_filter' ][ 'respondet' ]) || ( int ) $_SESSION [ 'inv_filter' ][ 'respondet' ] == 0 ) {
$mysql_filter .= " " ;
} else if ( $_SESSION [ 'inv_filter' ][ 'respondet' ] == 2 ) {
$mysql_filter .= " AND i.responded='1' " ;
} else if ( $_SESSION [ 'inv_filter' ][ 'respondet' ] == 1 ) {
$mysql_filter .= " AND i.responded='0' " ;
}
if ( ! isset ( $_SESSION [ 'inv_filter' ][ 'unsubscribed' ]) || ( int ) $_SESSION [ 'inv_filter' ][ 'unsubscribed' ] == 0 ) {
$mysql_filter .= " " ;
} else if ( $_SESSION [ 'inv_filter' ][ 'unsubscribed' ] == 2 ) {
$mysql_filter .= " AND i.unsubscribed='1' " ;
} else if ( $_SESSION [ 'inv_filter' ][ 'unsubscribed' ] == 1 ) {
$mysql_filter .= " AND i.unsubscribed='0' " ;
}
if ( ! isset ( $_SESSION [ 'inv_filter' ][ 'list' ]) || ( int ) $_SESSION [ 'inv_filter' ][ 'list' ] == - 2 ) {
$mysql_filter .= " " ;
} else {
$mysql_filter .= " AND i.list_id=' " . ( int ) $_SESSION [ 'inv_filter' ][ 'list' ] . " ' " ;
}
}
# preštejemo koliko imamo vseh respondentov in koliko jih je brez e-maila
2021-03-16 10:11:08 +01:00
$sql_query_all = sisplet_query ( " SELECT id FROM srv_invitations_recipients WHERE ank_id = ' " . $this -> sid . " ' AND deleted = '0' " );
2020-08-14 13:36:36 +02:00
$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' " ;
$sql_query_without_email = sisplet_query ( $sql_string_withot_email );
$sql_row_without_email = mysqli_fetch_row ( $sql_query_without_email );
$count_without_email = $sql_row_without_email [ 0 ];
#koliko zapisov bi morali prikazovati
$sql_string_filterd_all = " SELECT i.* FROM srv_invitations_recipients AS i WHERE i.ank_id = ' " . $this -> sid . " ' AND i.deleted = '0' " . $mysql_filter . " ORDER BY i.id " ;
$sql_query_filterd_all = sisplet_query ( $sql_string_filterd_all );
$filtred_all = mysqli_num_rows ( $sql_query_filterd_all );
# Katera polja prikazujemo v seznamu prejemnikov
$default_fields = array (
'sent' => 1 ,
'email' => 1 ,
'firstname' => 0 ,
'lastname' => 0 ,
'salutation' => 0 ,
'phone' => 0 ,
'custom' => 0 ,
);
2021-03-19 13:29:58 +01:00
// Volitve nimajo nekaterih polj
if ( ! SurveyInfo :: getInstance () -> checkSurveyModule ( 'voting' )){
$default_fields [ 'responded' ] = 1 ;
$default_fields [ 'unsubscribed' ] = 1 ;
$default_fields [ 'password' ] = 1 ;
}
2020-08-14 13:36:36 +02:00
// Ce imamo modul 360 imamo tudi odnos
if ( SurveyInfo :: getInstance () -> checkSurveyModule ( '360_stopinj' )){
$default_fields [ 'relation' ] = 0 ;
}
# pogledamo katera polja dejansko prikazujemo
$sql_select_fields = array ();
while ( $sql_row = mysqli_fetch_assoc ( $sql_query_filterd_all )) {
foreach ( $default_fields AS $key => $value ) {
# če polje še ni dodano in če ni prazno, ga dodamo
if ( $fields [ $key ] == 0 && isset ( $sql_row [ $key ]) && trim ( $sql_row [ $key ]) != '' ) {
$fields [ $key ] = 1 ;
$sql_select_fields [] = 'i.' . $key ;
}
}
}
2021-03-16 10:11:08 +01:00
2021-03-19 13:29:58 +01:00
// Dodamo še ostala polja
// Volitve nimajo nekaterih polj
if ( ! SurveyInfo :: getInstance () -> checkSurveyModule ( 'voting' )){
2021-03-16 10:11:08 +01:00
$fields [ 'last_status' ] = 1 ;
2021-03-19 13:29:58 +01:00
$fields [ 'date(date_expired)' ] = 1 ;
}
2021-03-16 10:11:08 +01:00
2020-08-14 13:36:36 +02:00
$sql_select_fields [] = 'i.last_status' ;
$fields [ 'date_inserted' ] = 1 ;
2021-03-19 13:29:58 +01:00
2020-08-14 13:36:36 +02:00
$fields [ 'inserted_uid' ] = 1 ;
$sql_select_fields [] = 'i.inserted_uid' ;
$sql_select_fields [] = 'i.date_inserted' ;
$sql_select_fields [] = 'date(date_expired)' ;
$fields [ 'list_id' ] = 1 ;
$sql_select_fields [] = 'i.list_id' ;
#dodamo paginacijo in poiščemo zapise
$page = isset ( $_GET [ 'page' ]) ? $_GET [ 'page' ] : '1' ;
$limit_start = ( $page * REC_ON_PAGE ) - REC_ON_PAGE ;
$sort_string = $this -> getSortString ();
$sql_string_duplicated = null ;
if ( $filter_duplicated == true )
{
$sql_string_duplicated = " JOIN(
SELECT email , COUNT ( email ) AS email_duplicated
FROM srv_invitations_recipients
WHERE ank_id = '".$this->sid."' AND deleted = '0'
GROUP BY email
HAVING email_duplicated > 1
) AS dup ON dup . email = i . email " ;
}
$sql_string_filterd = " SELECT i.id,
" .implode(',', $sql_select_fields ). "
FROM srv_invitations_recipients AS i
" . $sql_string_duplicated . "
WHERE i . ank_id = '".$this->sid."' AND i . deleted = '0'
" . $mysql_filter . "
" . $sort_string . "
LIMIT $limit_start , " .REC_ON_PAGE;
#koliko zapisov bi morali prikazovati
# po potrebi upoštevamo filter pogojev
$this -> user_inv_ids = array ();
if (( int ) $this -> invitationAdvancedConditionId > 0 ) {
$this -> user_inv_ids = $this -> getConditionUserIds ( $this -> invitationAdvancedConditionId );
if ( isset ( $this -> user_inv_ids ) && is_array ( $this -> user_inv_ids ) && count ( $this -> user_inv_ids ) > 0 )
{
$sql_string_filterd = " SELECT i.id, " . implode ( ',' , $sql_select_fields ) . " FROM srv_invitations_recipients AS i "
. $sql_string_duplicated
. " INNER JOIN srv_user AS su ON i.id = su.inv_res_id "
. " WHERE su.ank_id = ' $this->sid ' AND su.inv_res_id IS NOT NULL AND su.deleted = '0' AND su.id IN (' " . ( implode ( '\',\'' , $this -> user_inv_ids )) . " ') "
. " AND i.ank_id = ' " . $this -> sid . " ' AND i.deleted = '0' " . $mysql_filter . ' ' . $sort_string . " LIMIT $limit_start , " . REC_ON_PAGE ;
}
}
$sql_query_filterd = sisplet_query ( $sql_string_filterd );
# polovimo userje
$uids = array ();
$sql_string_users = " SELECT DISTINCT i.inserted_uid FROM srv_invitations_recipients AS i WHERE i.ank_id = ' " . $this -> sid . " ' AND i.deleted = '0' " . $mysql_filter . " GROUP BY i.inserted_uid ORDER BY i.id " ;
$sql_query_users = sisplet_query ( $sql_string_users );
while ( $row_users = mysqli_fetch_assoc ( $sql_query_users )) {
$uids [] = $row_users [ 'inserted_uid' ];
}
$users = array ();
if ( count ( $uids ) > 0 ) {
$sql_string_users = " SELECT id, email FROM users WHERE id IN( " . implode ( ',' , $uids ) . " ) " ;
$sql_query_users = sisplet_query ( $sql_string_users );
while ( $row_users = mysqli_fetch_assoc ( $sql_query_users )) {
$users [ $row_users [ 'id' ]] = array ( 'email' => $row_users [ 'email' ]);
}
}
# polovimo sezname
$lids = array ();
$sql_string_users = " SELECT i.list_id FROM srv_invitations_recipients AS i WHERE i.ank_id = ' " . $this -> sid . " ' AND i.deleted = '0' " . $mysql_filter . " GROUP BY i.list_id ORDER BY i.id " ;
$sql_query_users = sisplet_query ( $sql_string_users );
while ( $row_users = mysqli_fetch_assoc ( $sql_query_users )) {
$lids [] = $row_users [ 'list_id' ];
}
#seznami
$lists = array ();
$lists [ '-1' ] = array ( 'name' => $lang [ 'srv_invitation_new_templist' ]);
$lists [ '0' ] = array ( 'name' => $lang [ 'srv_invitation_new_templist_author' ]);
2021-03-16 10:11:08 +01:00
2020-08-14 13:36:36 +02:00
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 );
while ( $row_lists = mysqli_fetch_assoc ( $sql_query_lists )) {
$lists [ $row_lists [ 'pid' ]] = array ( 'name' => $row_lists [ 'name' ]);
}
}
2021-03-16 10:11:08 +01:00
2020-08-14 13:36:36 +02:00
if ( count ( $msgs ) > 0 ) {
echo '<span class="inv_msg_note">' ;
foreach ( $msgs as $msg ) {
echo '* ' . $msg . '<br />' ;
}
echo '</span>' ;
}
2021-03-16 10:11:08 +01:00
2020-08-14 13:36:36 +02:00
if ( count ( $errors ) > 0 ) {
echo '<span class="inv_error_note">' ;
foreach ( $errors as $error ) {
echo '* ' . $error . '<br />' ;
}
echo '</span>' ;
}
2021-03-16 10:11:08 +01:00
2020-08-14 13:36:36 +02:00
if ( $count_all > 0 ) {
# dodamo filtriranje
echo '<div id="inv_rec_filter">' ;
echo '<label>' . $lang [ 'srv_invitation_recipients_filter' ] . '</label> <input id="inv_rec_filter_value" type="text" onchange="inv_filter_recipients(); return false;" value="' . $_SESSION [ 'inv_filter' ][ 'value' ] . '">' ;
2021-03-16 10:11:08 +01:00
echo ' <label><input id="inv_rec_filter_on" type="checkbox" onchange="inv_filter_recipients(); return false;"' . ( isset ( $_SESSION [ 'inv_filter_on' ]) && $_SESSION [ 'inv_filter_on' ] == true ? ' checked="true"' : '' ) . '>' ;
2020-08-14 13:36:36 +02:00
echo $lang [ 'srv_invitation_recipients_filter_advanced' ] . '</label>' ;
2021-03-16 10:11:08 +01:00
if ( isset ( $_SESSION [ 'inv_filter_on' ]) && $_SESSION [ 'inv_filter_on' ] == true ) {
2020-08-14 13:36:36 +02:00
echo ' ' ;
echo ' ' ;
echo '<label>' . $lang [ 'srv_invitation_recipients_filter_sent' ];
$selected = ( int )( isset ( $_SESSION [ 'inv_filter' ][ 'send' ]) ? ( int ) $_SESSION [ 'inv_filter' ][ 'send' ] : 0 );
echo ' <select id="inv_rec_filter_send" onchange="inv_filter_recipients();">' ;
echo '<option value="0"' . (( int ) $selected == 0 ? ' selected="selected"' : '' ) . '>' . $lang [ 'srv_invitation_filter0' ] . '</option>' ;
echo '<option value="1"' . (( int ) $selected == 1 ? ' selected="selected"' : '' ) . '>' . $lang [ 'srv_invitation_filter1' ] . '</option>' ;
echo '<option value="2"' . (( int ) $selected == 2 ? ' selected="selected"' : '' ) . '>' . $lang [ 'srv_invitation_filter2' ] . '</option>' ;
echo '</select></label>' ;
echo ' ' ;
echo '<label>' . $lang [ 'srv_invitation_recipients_filter_answered' ];
$selected = ( int )( isset ( $_SESSION [ 'inv_filter' ][ 'respondet' ]) ? ( int ) $_SESSION [ 'inv_filter' ][ 'respondet' ] : 0 );
echo ' <select id="inv_rec_filter_respondet" onchange="inv_filter_recipients();">' ;
echo '<option value="0"' . (( int ) $selected == 0 ? ' selected="selected"' : '' ) . '>' . $lang [ 'srv_invitation_filter0' ] . '</option>' ;
echo '<option value="1"' . (( int ) $selected == 1 ? ' selected="selected"' : '' ) . '>' . $lang [ 'srv_invitation_filter1' ] . '</option>' ;
echo '<option value="2"' . (( int ) $selected == 2 ? ' selected="selected"' : '' ) . '>' . $lang [ 'srv_invitation_filter2' ] . '</option>' ;
echo '</select></label>' ;
echo ' ' ;
echo '<label>' . $lang [ 'srv_invitation_recipients_filter_unsubscribed' ];
$selected = ( int )( isset ( $_SESSION [ 'inv_filter' ][ 'unsubscribed' ]) ? ( int ) $_SESSION [ 'inv_filter' ][ 'unsubscribed' ] : 0 );
echo ' <select id="inv_rec_filter_unsubscribed" onchange="inv_filter_recipients();">' ;
echo '<option value="0"' . (( int ) $selected == 0 ? ' selected="selected"' : '' ) . '>' . $lang [ 'srv_invitation_filter0' ] . '</option>' ;
echo '<option value="1"' . (( int ) $selected == 1 ? ' selected="selected"' : '' ) . '>' . $lang [ 'srv_invitation_filter1' ] . '</option>' ;
echo '<option value="2"' . (( int ) $selected == 2 ? ' selected="selected"' : '' ) . '>' . $lang [ 'srv_invitation_filter2' ] . '</option>' ;
echo '</select></label>' ;
$this -> listCondition ();
$this -> advancedCondition ();
}
echo '</div>' ;
2021-03-16 10:11:08 +01:00
2020-08-14 13:36:36 +02:00
echo '<form id="frm_inv_rec_export" name="resp_uploader" method="post" autocomplete="off">' ;
echo '<input type="hidden" name="anketa" id="anketa" value="' . $this -> sid . '">' ;
echo '<input type="hidden" name="noNavi" id="noNavi" value="true">' ;
echo '<br class="clr"/>' ;
if ( $filter != '' ) {
echo '<span class="red strong">' ;
printf ( $lang [ 'srv_inv_list_no_recipients_filter' ], $filter );
#Podatki so filtrirani: "'.$filter.'"<br/>';
echo '</span>' ;
}
if ( $count_all > 0 && mysqli_num_rows ( $sql_query_filterd ) != $count_all ) {
echo '<div id="srv_invitation_note" class="floatLeft spaceRight">' ;
echo $lang [ 'srv_invitation_num_respondents_filtred' ] . ( int ) mysqli_num_rows ( $sql_query_filterd );
echo '</div>' ;
} else {
echo '<div id="srv_invitation_note" class="floatLeft spaceRight">' ;
echo $lang [ 'srv_invitation_num_respondents' ] . ( int ) $this -> count_all ;
echo '</div>' ;
}
# duplicated
echo '<label><input type="checkbox" id="inv_rec_filter_duplicates" onchange="inv_filter_recipients(); return false" ' . ( $filter_duplicated ? ' checked="checked"' : '' ) . '>' . $lang [ 'srv_inv_recipient_show_only_duplicates' ] . '</label><br class="clr"/>' ;
if ( mysqli_num_rows ( $sql_query_filterd ) > 0 && $count_all > 0 ) {
echo '<br class="clr"/>' ;
$this -> displayPagination ( $filtred_all );
echo '<br class="clr"/>' ;
echo '<div style="display:inline-block; margin-right: 20px;">' ;
# če že imamo prejemnike v bazi več kot 20 ponudimo gumb naprej tudi zgoraj
if ( $this -> count_all > 20 ) {
echo '<span class="buttonwrapper floatRight spaceLeft" style="margin-bottom:10px;"><a class="ovalbutton ovalbutton_orange" href="' . $this -> addUrl ( 'view_message' ) . '"><span>' . $lang [ 'srv_invitation_forward' ] . '</span></a></span>' ;
}
// Izvoz vseh v excel
echo '<span class="floatLeft" style="line-height:45px; padding-left:10px;">' ;
echo '<a onclick="inv_recipients_form_action(\'export_all\');" href="#">' ;
echo '<span class="faicon xls" title="' . $lang [ 'srv_invitation_recipients_export_all' ] . '" style="height:14px; width:16px;"></span>' ;
echo ' ' . $lang [ 'srv_invitation_recipients_export_all' ];
echo '</a>' ;
echo '</span>' ;
echo '<table id="tbl_recipients_list">' ;
2021-03-16 10:11:08 +01:00
2020-08-14 13:36:36 +02:00
echo '<tr>' ;
# checkbox
echo '<th class="tbl_icon" colspan="' . ( $this -> surveySettings [ 'show_email' ] == 1 ? '4' : '3' ) . '" > </th>' ;
foreach ( $fields AS $fkey => $field ) {
if ( $field == 1 ) {
if ( $fkey == 'sent' || $fkey == 'responded' || $fkey == 'unsubscribed' ) {
#echo '<th class="anl_ac tbl_icon_'.$fkey.' inv_'.$fkey.'_1" title="'.$lang['srv_inv_recipients_'.$fkey].'"> </th>';
echo '<th' . $this -> addSortField ( $fkey ) . ' class="anl_ac pointer tbl_icon_' . $fkey . '" title="' . $lang [ 'srv_inv_recipients_' . $fkey ] . '">' . $lang [ 'srv_inv_recipients_' . $fkey ] . $this -> addSortIcon ( $fkey ) . '</th>' ;
} else if ( $fkey == 'last_status' ) {
echo '<th' . $this -> addSortField ( $fkey ) . ' class="anl_ac pointer" title="' . $lang [ 'srv_inv_recipients_' . $fkey ] . '">' . $lang [ 'srv_inv_recipients_' . $fkey ] . $this -> addSortIcon ( $fkey ) . '</th>' ;
} else {
echo '<th' . $this -> addSortField ( $fkey ) . ' class="pointer" title="' . $lang [ 'srv_inv_recipients_' . $fkey ] . '">' . $lang [ 'srv_inv_recipients_' . $fkey ] . $this -> addSortIcon ( $fkey ) . '</th>' ;
}
}
}
echo '</tr>' ;
while ( $sql_row = mysqli_fetch_assoc ( $sql_query_filterd )) {
echo '<tr>' ;
# checkbox
echo '<td><input type="checkbox" name="inv_rids[]" value="' . $sql_row [ 'id' ] . '"></td>' ;
#izbriši
#echo '<td class="tbl_inv_left"><span class="as_link rec_delete_confirm" inv_rid="'.$sql_row['id'].'">'.$lang['srv_inv_list_profiles_delete'].'</span></td>';
echo '<td class="tbl_inv_left"><span class="faicon delete_circle icon-orange_link" onclick="deleteRecipient_confirm(\'' . $sql_row [ 'id' ] . '\'); return false;" title="' . $lang [ 'srv_inv_list_profiles_delete' ] . '"></span></td>' ;
#uredi
#echo '<td class="tbl_inv_left"><span class="as_link rec_edit" inv_rid="'.$sql_row['id'].'">'.$lang['srv_inv_list_profiles_edit'].'</span></td>';
echo '<td class="tbl_inv_left"><span class="faicon edit smaller icon-as_link" onclick="editRecipient(\'' . $sql_row [ 'id' ] . '\'); return false;" title="' . $lang [ 'srv_inv_list_profiles_edit' ] . '"></span></td>' ;
// Skoci na urejanje odgovorov - ce imamo identifikatorje povezane s podatki
if ( $this -> surveySettings [ 'show_email' ] == 1 )
echo '<td class="tbl_inv_left"><span class="icon-grey_dark_link" onclick="window.open(\'' . $site_url . '/main/survey/edit_anketa.php?anketa=' . $this -> sid . '&usr_id=' . $sql_row [ 'id' ] . '&code=' . $sql_row [ 'password' ] . '\', \'blank\')" title="' . $lang [ 'srv_edit_data_row' ] . '"></span></td>' ;
foreach ( $fields AS $fkey => $field ) {
if ( $field == 1 ) {
switch ( $fkey ) {
case 'sent' :
echo '<td class="anl_ac pointer" onclick="showRecipientTracking(\'' . $sql_row [ 'id' ] . '\'); return false;">' ;
echo '<span class="faicon ' . (( int ) $sql_row [ 'sent' ] == 1 ? ( 'inv_sent_1' ) : 'inv_sent_0' ) . ' icon-as_link"></span>' ;
echo '</td>' ;
break ;
case 'responded' :
echo '<td class="anl_ac">' ;
echo '<span class="faicon ' . (( int ) $sql_row [ 'responded' ] == 1 ? ( 'inv_responded_1' ) : 'inv_responded_0' ) . ' icon-orange"></span>' ;
echo '</td>' ;
break ;
case 'unsubscribed' :
echo '<td class="anl_ac ">' ;
echo '<span class="faicon ' . (( int ) $sql_row [ 'unsubscribed' ] == 1 ? ( 'inv_unsubscribed_1' ) : 'inv_unsubscribed_0' ) . '"></span>' ;
echo '</td>' ;
break ;
case 'last_status' :
echo '<td>(' . $sql_row [ $fkey ] . ') - ' . $lang [ 'srv_userstatus_' . $sql_row [ $fkey ]] . '</td>' ;
break ;
case 'inserted_uid' :
echo '<td>' . $users [ $sql_row [ $fkey ]][ 'email' ] . '</td>' ;
break ;
case 'email' :
echo '<td>' ;
if ( $filter != '' ) {
echo $this -> hightlight ( $sql_row [ $fkey ], $filter );
} else {
echo $sql_row [ $fkey ];
}
echo '</td>' ;
break ;
case 'list_id' :
echo '<td>' ;
if (( int ) $sql_row [ $fkey ] > 0 ) {
if ( $lists [ $sql_row [ $fkey ]][ 'name' ] != '' ) {
echo '<a href="#" onclick="$(\'#anketa_edit\').load(\'ajax.php?t=invitations&a=use_recipients_list\', {anketa:srv_meta_anketa_id, pid:' . ( int ) $sql_row [ $fkey ] . ' });">' . $lists [ $sql_row [ $fkey ]][ 'name' ] . '</a>' ;
} else {
echo $lang [ 'srv_inv_recipient_list_deleted' ];
}
} else {
echo $lists [ $sql_row [ $fkey ]][ 'name' ];
}
echo '</td>' ;
break ;
default :
echo '<td class="tbl_inv_left">' ;
if ( $filter != '' ) {
echo $this -> hightlight ( $sql_row [ $fkey ], $filter );
} else {
echo $sql_row [ $fkey ];
}
echo '</td>' ;
break ;
}
}
}
echo '</tr>' ;
@ ob_flush ();
}
echo '</table>' ;
echo '<div id="inv_bottom_edit">' ;
echo '<span class="faicon arrow_up"></span> ' ;
echo '<span id="inv_switch_on"><a href="javascript:inv_selectAll(true);">' . $lang [ 'srv_select_all' ] . '</a></span>' ;
echo '<span id="inv_switch_off" style="display:none;"><a href="javascript:inv_selectAll(false);">' . $lang [ 'srv_deselect_all' ] . '</a></span>' ;
echo ' <a href="#" onClick="inv_recipients_form_action(\'delete\');"><span class="faicon delete_circle icon-orange" title="' . $lang [ 'srv_invitation_recipients_delete_selected' ] . '"></span> ' . $lang [ 'srv_invitation_recipients_delete_selected' ] . '</a>' ;
echo ' <a href="#" onClick="inv_recipients_form_action(\'export\');"><span class="faicon xls delete" style="height:14px; width:16px;" title="' . $lang [ 'srv_invitation_recipients_export_selected' ] . '"></span> ' . $lang [ 'srv_invitation_recipients_export_selected' ] . '</a>' ;
echo ' <a href="#" onClick="inv_recipients_form_action(\'add\');"> ' . $lang [ 'srv_invitation_recipients_activate3' ] . '</a>' ;
// Aktivira vse v seznamu (jih doda v podatke, kot da so poslani)
echo '<br /><span style="line-height:40px;"><a href="#" onclick="inv_add_rec_to_db(); return false;" target="_blank">' . $lang [ 'srv_invitation_recipients_activate2' ] . '</a></span>' ;
echo '</div>' ;
# če že imamo prejemnike v bazi ponudimo gumb naprej
if ( $count_all > 0 ) {
echo '<div class="buttonwrapper floatRight spaceLeft" style="margin-top:-30px;"><a class="ovalbutton ovalbutton_orange" href="' . $this -> addUrl ( 'view_message' ) . '"><span>' . $lang [ 'srv_invitation_forward' ] . '</span></a></div>' ;
echo '<br class="clr"/><br>' ;
}
echo '</div>' ;
} else {
echo $lang [ 'srv_inv_list_no_recipients_filtred' ] . '<br class="clr">' ;
}
echo '</form>' ;
} else {
echo $lang [ 'srv_inv_list_no_recipients' ] . '<br class="clr">' ;
}
}
function viewMessage ( $mid = null ) {
global $lang , $global_user_id , $site_url ;
$row = $this -> surveySettings ;
echo '<h2 style="margin-left: 15px; color:#333 !important;">' ;
// Text s podatki o nastavitvah posiljanja
$settings_text = '<span class="bold spaceRight">' . $lang [ 'srv_inv_message_type' ] . ':</span>' ;
$individual = ( int ) $this -> surveySettings [ 'individual_invitation' ];
if ( $individual == 0 ){
$settings_text .= '<span class="spaceLeft spaceRight">' . $lang [ 'srv_inv_settings_individual_0' ] . '</span>' ;
}
else {
$settings_text .= '<span class="spaceLeft spaceRight">' . $lang [ 'srv_inv_settings_individual_1' ] . '</span>' ;
}
$settings_text .= ' - ' ;
$noEmailing = SurveySession :: get ( 'inv_noEmailing' );
if ( $noEmailing == 0 ){
$settings_text .= '<span class="spaceLeft spaceRight">' . $lang [ 'srv_inv_settings_noEmail_0' ] . '</span>' ;
}
else {
$settings_text .= '<span class="spaceLeft spaceRight">' . $lang [ 'srv_inv_settings_noEmail_1' ] . '</span>' ;
}
$settings_text .= ' - ' ;
if ( $row [ 'usercode_required' ] == 0 && $individual != 0 ){
$settings_text .= '<span class="spaceLeft spaceRight">' . $lang [ 'srv_inv_settings_URL_0' ];
$settings_text .= ' (' . $lang [ 'srv_inv_settings_code_0' ] . ')</span>' ;
}
else {
$settings_text .= '<span class="spaceLeft spaceRight">' . $lang [ 'srv_inv_settings_URL_1' ];
if ( $row [ 'usercode_skip' ] == 1 || $individual == 0 ){
$settings_text .= ' (' . $lang [ 'srv_inv_settings_code_2' ] . ')</span>' ;
}
else {
$settings_text .= ' (' . $lang [ 'srv_inv_settings_code_1' ] . ')</span>' ;
}
}
$settings_text .= '<span class="spaceLeft"> <a href="' . $site_url . 'admin/survey/index.php?anketa=' . $this -> sid . '&a=invitations&m=inv_settings">' . $lang [ 'edit4' ] . '</a></span>' ;
echo $settings_text ;
//echo '<span style="padding-left:15px; padding-right:15px;"><input type="radio" name="inv_messages_noEmailing" id="inv_messages_noEmailing_1" '.($noEmailing == 0 ? ' checked="checked"' : '').' style="margin-bottom:4px;" onClick="noEmailingToggle(\'0\');" /> <label for="inv_messages_noEmailing_1">'.$lang['srv_inv_message_noemailing_0'].'</label></span>';
//echo '<span><input type="radio" name="inv_messages_noEmailing" id="inv_messages_noEmailing_2" '.($noEmailing == 1 ? ' checked="checked"' : '').' style="margin-bottom:4px;" onClick="noEmailingToggle(\'1\');" /> <label for="inv_messages_noEmailing_2">'.$lang['srv_inv_message_noemailing_1'].'</label></span>';
echo '</h2>' ;
// Ce posiljamo preko emaila
if ( $noEmailing != 1 ){
echo '<div id="inv_messages_holder">' ;
if ( $this -> checkDefaultMessage () == false ) {
echo '<span class="inv_error_note">' ;
echo $lang [ 'srv_invitation_note6' ];
echo '</span>' ;
} else {
$sql_string = " SELECT id, naslov, subject_text, body_text, reply_to, isdefault, comment, url FROM srv_invitations_messages WHERE ank_id = ' $this->sid ' " ;
$sql_query = sisplet_query ( $sql_string );
$array_messages = array ();
while ( list ( $id , $naslov , $subject_text , $body_text , $reply_to , $isdefault , $comment , $url ) = mysqli_fetch_row ( $sql_query ) ) {
$array_messages [ $id ] = array ( 'id' => $id , 'naslov' => $naslov , 'subject_text' => $subject_text , 'body_text' => $body_text , 'reply_to' => $reply_to , 'isdefault' => $isdefault , 'comment' => $comment , 'url' => $url );
if ( $isdefault == '1' ) {
# če izbiramo profile in nismo postali še nobenga
if ( $mid == null ) {
$mid = $id ;
}
}
}
$preview_message = $array_messages [ $mid ];
echo '<div id="inv_messages_profiles_holder" class="floatLeft">' ;
echo '<span>' . $lang [ 'srv_invitation_message_choose' ] . ':</span><br/>' ;
echo '<div id="invitation_messages" >' ;
echo '<ol>' ;
foreach ( $array_messages AS $_m => $message ) {
echo '<li mid="' . $message [ 'id' ] . '" class="'
. ( $message [ 'id' ] == $mid ? ' active' : '' )
. '" onclick="invChangeMessage(\'' . $message [ 'id' ] . '\')">' ;
echo $message [ 'naslov' ];
echo '</li>' ;
}
echo '</ol>' ;
echo '</div>' ; #invitation_messages
echo '<br class="clr" />' ;
if ( count ( $array_messages ) > 1 ) {
echo '<span class="as_link" id="inv_del_msg_profile" onclick="invMessageDelete();" title="' . $lang [ 'srv_inv_message_delete_profile' ] . '">' . $lang [ 'srv_inv_message_delete_profile' ] . '</span><br/>' ;
}
echo '<span class="as_link" id="inv_ren_msg_profile" onclick="invShowMessageRename();" title="' . $lang [ 'srv_inv_message_rename_profile' ] . '">' . $lang [ 'srv_inv_message_rename_profile' ] . '</span>' ;
{
# polovimo podatke profila
$sql_string = " SELECT sim.*, u.name, u.surname, e.name as ename, e.surname as esurname FROM srv_invitations_messages AS sim LEFT JOIN users AS u ON sim.uid = u.id LEFT JOIN users AS e ON sim.edit_uid = e.id WHERE sim.id = ' " . ( int ) $mid . " ' " ;
$sql_query = sisplet_query ( $sql_string );
$sql_row = mysqli_fetch_assoc ( $sql_query );
$avtor = array ();
$edit = array ();
if ( trim ( $sql_row [ 'name' ])) {
$avtor [] = trim ( $sql_row [ 'name' ]);
}
if ( trim ( $sql_row [ 'surname' ])) {
$avtor [] = trim ( $sql_row [ 'surname' ]);
}
if ( count ( $avtor ) > 0 ) {
echo '<div class="gray">' . $lang [ 'srv_invitation_author' ] . ' ' . implode ( ' ' , $avtor ) . '</div>' ;
}
if ( count ( $avtor ) > 0 ) {
echo '<div class="gray" title="' . date ( " d.m.Y H:i:s " , strtotime ( $sql_row [ 'insert_time' ])) . '">' . $lang [ 'srv_invitation_author_day' ] . ' ' . date ( " d.m.Y " , strtotime ( $sql_row [ 'insert_time' ])) . '</div>' ;
}
if ( trim ( $sql_row [ 'ename' ])) {
$edit [] = trim ( $sql_row [ 'ename' ]);
}
if ( trim ( $sql_row [ 'esurname' ])) {
$edit [] = trim ( $sql_row [ 'esurname' ]);
}
if ( count ( $edit ) > 0 && $edit != $avtor ) {
echo '<div class="gray">' . $lang [ 'srv_invitation_changed' ] . ' ' . implode ( ' ' , $edit ) . '</div>' ;
}
if ( $sql_row [ 'insert_time' ] != $sql_row [ 'edit_time' ]) {
echo '<div class="gray" title="' . date ( " d.m.Y H:i:s " , strtotime ( $sql_row [ 'edit_time' ])) . '">' . $lang [ 'srv_invitation_changed_day' ] . ' ' . date ( " d.m.Y " , strtotime ( $sql_row [ 'insert_time' ])) . '</div>' ;
}
echo '<div class="gray" style="max-width:202px">' . $lang [ 'srv_invitation_comment' ] . ' ' . trim ( $sql_row [ 'comment' ]) . '</div>' ;
}
echo '</div>' ; #inv_messages_profiles_holder
$MA = new MailAdapter ( $this -> sid , $type = 'invitation' );
# zlistamo seznam vseh sporočil
# izpišemo primer besedila
echo '<div id="inv_msg_preview_hld" class="floatLeft">' ;
echo '<span class="h2 spaceRight floatLeft">' . $lang [ 'srv_inv_message_draft_content_heading' ] . '</span> ' . Help :: display ( 'srv_inv_message_title' );
//echo '<span class="spaceRight floatRight"><a href="'.$site_url . 'admin/survey/index.php?anketa='.$this->sid.'&a=invitations&m=inv_server&show_back=true">'.$lang['srv_inv_message_draft_settings'].'</a></span>';
echo '<br class="clr"/>' ;
echo '<div id="inv_error_note" class="hidden"></div>' ;
echo '<div id="inv_msg_preview">' ;
echo '<table>' ;
echo '<tr><th>' . $lang [ 'srv_inv_message_draft_content_from' ] . ':</th>' ;
echo '<td class="inv_bt">' ;
if ( $MA -> getMailFrom () == '' )
echo '<a href="' . $site_url . 'admin/survey/index.php?anketa=' . $this -> sid . '&a=invitations&m=inv_settings">' . $lang [ 'srv_usermailing_setting' ] . '</a>' ;
else
echo $MA -> getMailFrom ();
echo '<input type="hidden" id="inv_message_replyto" value="' . $MA -> getMailFrom () . '" autocomplete="off" readonly>' ;
echo '</td></tr>' ;
echo '<tr><th>' . $lang [ 'srv_inv_message_draft_content_reply' ] . ':</th>' ;
echo '<td class="inv_bt">' ;
echo $MA -> getMailReplyTo ();
echo '<input type="hidden" id="inv_message_replyto" value="' . $MA -> getMailReplyTo () . '" autocomplete="off" readonly>' ;
echo '</td></tr>' ;
echo '<tr><th>' . $lang [ 'srv_inv_message_draft_content_subject' ] . ':</th>' ;
echo '<td class="inv_bt">' ;
echo '<input type="text" id="inv_message_subject" value="' . $preview_message [ 'subject_text' ] . '" autocomplete="off">' ;
echo '</td></tr>' ;
echo '<tr><th>' . $lang [ 'srv_inv_message_draft_content_body' ] . ':</th>' ;
echo '<td ><div class="msgBody">' ;
echo '<textarea id="inv_message_body" name="inv_message_body" autocomplete="off">' . ( $preview_message [ 'body_text' ]) . '</textarea>' ;
echo '</div>' ;
?>
< script type = " text/javascript " >
create_inv_editor ( 'inv_message_body' , false );
</ script >< ? php
echo '</td></tr>' ;
$urls = $this -> getUrlLists ();
if ( count ( $urls ) > 0 ) {
echo '<tr><th>' . $lang [ 'srv_inv_message_draft_url' ] . '</th>' ;
echo '<td>' ;
echo '<select id="inv_message_url">' ;
foreach ( $urls AS $url ) {
$selected = '' ;
if ( $preview_message [ 'url' ] == '' ) {
if ( $preview_message [ 'dc' ] == true ) {
$selected = ' selected="selected"' ;
}
} else if ( $preview_message [ 'url' ] == $url [ 'url' ]) {
$selected = ' selected="selected"' ;
}
echo '<option value="' . $url [ 'url' ] . '"' . $selected . '>' . $url [ 'name' ] . '</option>' ;
}
echo '</select>' ;
echo '</td>' ;
echo '</tr>' ;
}
echo '</table>' ;
echo '</div>' ;
echo '<br class="clr"/>' ;
echo '<span class="buttonwrapper floatRight spaceRight" title="' . $lang [ 'srv_invitation_forward' ] . '"><a class="ovalbutton" href="#" onclick="inv_message_save_forward(\'' . $mid . '\'); return false;"><span>' . $lang [ 'srv_invitation_forward' ] . '</span></a></span>' ;
echo '<span class="buttonwrapper floatRight spaceRight" title="' . $lang [ 'srv_invitation_forward' ] . '"><a class="ovalbutton ovalbutton_gray" href="#" onclick="if(inv_message_save_simple(\'' . $mid . '\')) { window.location.reload() }; return false;"><span>' . $lang [ 'srv_inv_message_save' ] . '</span></a></span>' ;
echo '<span class="buttonwrapper floatRight spaceRight" title="' . $lang [ 'srv_invitation_message_saveNew' ] . '"><a class="ovalbutton ovalbutton_gray" href="#" onclick="inv_message_save_advanced(\'' . $mid . '\'); return false;"><span>' . $lang [ 'srv_invitation_message_saveNew' ] . '</span></a></span>' ;
echo '</div>' ;
echo '<div id="invitation_profile_notes"><p>' ;
$_indicators = $this -> getAvailableIndicators ();
$_sysVars = $this -> getAvailableSysVars ();
echo $lang [ 'srv_inv_message_help' ];
// Poiščemo še sistemske spremenljivke iz ankete
$prefix = '' ;
if ( count ( $_indicators ) > 0 ) {
echo $lang [ 'srv_inv_message_help_identifikators' ];
foreach ( $_indicators AS $_identifikator ) {
echo $prefix . '<br/>#' . strtoupper ( $_identifikator ) . '#' . $lang [ 'srv_inv_message_help_system_' . strtolower ( $_identifikator )];
$prefix = ', ' ;
}
# preverimo ali imamo nastavljen mapping
$prefix = '' ;
$sqlSysMapping = sisplet_query ( " SELECT * FROM srv_invitations_mapping WHERE sid = ' $this->sid ' " );
if ( count ( $_sysVars ) > 0 && mysqli_num_rows ( $sqlSysMapping ) > 0 ) {
echo '<br/><br/>' . $lang [ 'srv_inv_message_help_systemvars' ];
foreach ( $_sysVars AS $_sys_var => $_sysLabel ) {
echo $prefix . '<br/>#' . strtoupper ( $_sys_var ) . '#' . $lang [ 'srv_inv_message_help_system_' . strtolower ( $_sys_var )];
$prefix = ', ' ;
}
}
} else {
echo $lang [ 'srv_invitation_note12' ];
}
echo '</p></div>' ;
}
echo '</div>' ;
}
// Ce samo dokumentiramo - navadna posta, SMS...
else {
echo '<div id="inv_messages_holder_noEmailing">' ;
echo $lang [ 'srv_inv_message_noemailing_text' ];
// Izbira nacina posiljanja (navadna posta, sms...) - prestavljeno pod nastavitve
/* echo '<div id="inv_select_noMail_type">' ;
$noEmailingType = SurveySession :: get ( 'inv_noEmailing_type' );
echo '<span class="bold">' . $lang [ 'srv_inv_message_noemailing_type' ] . ':</span>' ;
echo '<span class="inv_send_span spaceLeft"><input name="noMailType" id="noMailType1" value="0" type="radio" ' . ( $noEmailingType == 0 ? ' checked="checked"' : '' ) . ' onClick="noEmailingType(\'0\');"><label for="noMailType1">' . $lang [ 'srv_inv_message_noemailing_type1' ] . '</label></span>' ;
echo '<span class="inv_send_span spaceLeft"><input name="noMailType" id="noMailType2" value="1" type="radio" ' . ( $noEmailingType == 1 ? ' checked="checked"' : '' ) . ' onClick="noEmailingType(\'1\');"><label for="noMailType2">' . $lang [ 'srv_inv_message_noemailing_type2' ] . '</label></span>' ;
echo '<span class="inv_send_span spaceLeft"><input name="noMailType" id="noMailType3" value="2" type="radio" ' . ( $noEmailingType == 2 ? ' checked="checked"' : '' ) . ' onClick="noEmailingType(\'2\');"><label for="noMailType3">' . $lang [ 'srv_inv_message_noemailing_type3' ] . '</label></span>' ;
echo '</div>' ; */
// Gumb naprej
/* echo '<span class="buttonwrapper floatRight spaceRight" title="' . $lang [ 'srv_invitation_forward' ] . '">' ;
echo '<a class="ovalbutton ovalbutton_orange" href="' . $site_url . 'admin/survey/index.php?anketa=' . $this -> sid . '&a=' . A_INVITATIONS . '&m=send_message&noemailing=1"><span>' . $lang [ 'srv_invitation_forward' ];
echo '</span></a></span>' ;
echo '<br class="clr"/>' ; */
echo '</div>' ;
echo '<div id="inv_messages_holder">' ;
if ( $this -> checkDefaultMessage () == false ) {
echo '<span class="inv_error_note">' ;
echo $lang [ 'srv_invitation_note6' ];
echo '</span>' ;
} else {
$sql_string = " SELECT id, naslov, subject_text, body_text, reply_to, isdefault, comment, url FROM srv_invitations_messages WHERE ank_id = ' $this->sid ' " ;
$sql_query = sisplet_query ( $sql_string );
$array_messages = array ();
while ( list ( $id , $naslov , $subject_text , $body_text , $reply_to , $isdefault , $comment , $url ) = mysqli_fetch_row ( $sql_query ) ) {
$array_messages [ $id ] = array ( 'id' => $id , 'naslov' => $naslov , 'subject_text' => $subject_text , 'body_text' => $body_text , 'reply_to' => $reply_to , 'isdefault' => $isdefault , 'comment' => $comment , 'url' => $url );
if ( $isdefault == '1' ) {
# če izbiramo profile in nismo postali še nobenga
if ( $mid == null ) {
$mid = $id ;
}
}
}
$preview_message = $array_messages [ $mid ];
echo '<div id="inv_messages_profiles_holder" class="floatLeft">' ;
echo '<span>' . $lang [ 'srv_invitation_message_choose' ] . ':</span><br/>' ;
echo '<div id="invitation_messages" >' ;
echo '<ol>' ;
foreach ( $array_messages AS $_m => $message ) {
echo '<li mid="' . $message [ 'id' ] . '" class="'
. ( $message [ 'id' ] == $mid ? ' active' : '' )
. '" onclick="invChangeMessage(\'' . $message [ 'id' ] . '\')">' ;
echo $message [ 'naslov' ];
echo '</li>' ;
}
echo '</ol>' ;
echo '</div>' ; #invitation_messages
echo '<br class="clr" />' ;
if ( count ( $array_messages ) > 1 ) {
echo '<span class="as_link" id="inv_del_msg_profile" onclick="invMessageDelete();" title="' . $lang [ 'srv_inv_message_delete_profile' ] . '">' . $lang [ 'srv_inv_message_delete_profile' ] . '</span><br/>' ;
}
echo '<span class="as_link" id="inv_ren_msg_profile" onclick="invShowMessageRename();" title="' . $lang [ 'srv_inv_message_rename_profile' ] . '">' . $lang [ 'srv_inv_message_rename_profile' ] . '</span>' ;
{
# polovimo podatke profila
$sql_string = " SELECT sim.*, u.name, u.surname, e.name as ename, e.surname as esurname FROM srv_invitations_messages AS sim LEFT JOIN users AS u ON sim.uid = u.id LEFT JOIN users AS e ON sim.edit_uid = e.id WHERE sim.id = ' " . ( int ) $mid . " ' " ;
$sql_query = sisplet_query ( $sql_string );
$sql_row = mysqli_fetch_assoc ( $sql_query );
$avtor = array ();
$edit = array ();
if ( trim ( $sql_row [ 'name' ])) {
$avtor [] = trim ( $sql_row [ 'name' ]);
}
if ( trim ( $sql_row [ 'surname' ])) {
$avtor [] = trim ( $sql_row [ 'surname' ]);
}
if ( count ( $avtor ) > 0 ) {
echo '<div class="gray">' . $lang [ 'srv_invitation_author' ] . ' ' . implode ( ' ' , $avtor ) . '</div>' ;
}
if ( count ( $avtor ) > 0 ) {
echo '<div class="gray" title="' . date ( " d.m.Y H:i:s " , strtotime ( $sql_row [ 'insert_time' ])) . '">' . $lang [ 'srv_invitation_author_day' ] . ' ' . date ( " d.m.Y " , strtotime ( $sql_row [ 'insert_time' ])) . '</div>' ;
}
if ( trim ( $sql_row [ 'ename' ])) {
$edit [] = trim ( $sql_row [ 'ename' ]);
}
if ( trim ( $sql_row [ 'esurname' ])) {
$edit [] = trim ( $sql_row [ 'esurname' ]);
}
if ( count ( $edit ) > 0 && $edit != $avtor ) {
echo '<div class="gray">' . $lang [ 'srv_invitation_changed' ] . ' ' . implode ( ' ' , $edit ) . '</div>' ;
}
if ( $sql_row [ 'insert_time' ] != $sql_row [ 'edit_time' ]) {
echo '<div class="gray" title="' . date ( " d.m.Y H:i:s " , strtotime ( $sql_row [ 'edit_time' ])) . '">' . $lang [ 'srv_invitation_changed_day' ] . ' ' . date ( " d.m.Y " , strtotime ( $sql_row [ 'insert_time' ])) . '</div>' ;
}
echo '<div class="gray" style="max-width:202px">' . $lang [ 'srv_invitation_comment' ] . ' ' . trim ( $sql_row [ 'comment' ]) . '</div>' ;
}
echo '</div>' ; #inv_messages_profiles_holder
$MA = new MailAdapter ( $this -> sid , $type = 'invitation' );
# zlistamo seznam vseh sporočil
# izpišemo primer besedila
echo '<div id="inv_msg_preview_hld" class="floatLeft">' ;
echo '<span class="h2 spaceRight floatLeft">' . $lang [ 'srv_inv_message_draft_content_heading' ] . '</span> ' . Help :: display ( 'srv_inv_message_title_noEmail' );
//echo '<span class="spaceRight floatRight"><a href="'.$site_url . 'admin/survey/index.php?anketa='.$this->sid.'&a=invitations&m=inv_server&show_back=true">'.$lang['srv_inv_message_draft_settings'].'</a></span>';
echo '<br class="clr"/>' ;
echo '<div id="inv_error_note" class="hidden"></div>' ;
echo '<div id="inv_msg_preview">' ;
echo '<table>' ;
echo '<tr><th>' . $lang [ 'srv_inv_message_draft_content_subject' ] . ':</th>' ;
echo '<td class="inv_bt">' ;
echo '<input type="text" id="inv_message_subject" value="' . $preview_message [ 'subject_text' ] . '" autocomplete="off">' ;
echo '</td></tr>' ;
echo '<tr><th>' . $lang [ 'srv_inv_message_draft_content_body' ] . ':</th>' ;
echo '<td ><div class="msgBody">' ;
echo '<textarea id="inv_message_body" name="inv_message_body" autocomplete="off">' . ( $preview_message [ 'body_text' ]) . '</textarea>' ;
echo '</div>' ;
?>
< script type = " text/javascript " >
create_inv_editor ( 'inv_message_body' , false );
</ script >< ? php
echo '</td></tr>' ;
if ( count ( $urls ) > 0 ) {
echo '<tr><th>' . $lang [ 'srv_inv_message_draft_url' ] . '</th>' ;
echo '<td>' ;
echo '<select id="inv_message_url">' ;
foreach ( $urls AS $url ) {
$selected = '' ;
if ( $preview_message [ 'url' ] == '' ) {
if ( $preview_message [ 'dc' ] == true ) {
$selected = ' selected="selected"' ;
}
} else if ( $preview_message [ 'url' ] == $url [ 'url' ]) {
$selected = ' selected="selected"' ;
}
echo '<option value="' . $url [ 'url' ] . '"' . $selected . '>' . $url [ 'name' ] . '</option>' ;
}
echo '</select>' ;
echo '</td>' ;
echo '</tr>' ;
}
echo '</table>' ;
echo '</div>' ;
echo '<br class="clr"/>' ;
echo '<span class="buttonwrapper floatRight spaceRight" title="' . $lang [ 'srv_invitation_forward' ] . '"><a class="ovalbutton" href="#" onclick="inv_message_save_forward_noEmail(\'' . $mid . '\'); return false;"><span>' . $lang [ 'srv_invitation_forward' ] . '</span></a></span>' ;
echo '<span class="buttonwrapper floatRight spaceRight" title="' . $lang [ 'srv_invitation_forward' ] . '"><a class="ovalbutton ovalbutton_gray" href="#" onclick="if(inv_message_save_simple_noEmail(\'' . $mid . '\')) { window.location.reload() }; return false;"><span>' . $lang [ 'srv_inv_message_save' ] . '</span></a></span>' ;
echo '<span class="buttonwrapper floatRight spaceRight" title="' . $lang [ 'srv_invitation_message_saveNew' ] . '"><a class="ovalbutton ovalbutton_gray" href="#" onclick="inv_message_save_advanced(\'' . $mid . '\'); return false;"><span>' . $lang [ 'srv_invitation_message_saveNew' ] . '</span></a></span>' ;
echo '</div>' ;
}
echo '</div>' ;
}
echo '<br class="clr"/>' ;
}
function checkDefaultMessage () {
global $lang , $global_user_id ;
$sql_string = " SELECT id FROM srv_invitations_messages WHERE ank_id = ' $this->sid ' AND isdefault='1' " ;
$sql_query = sisplet_query ( $sql_string );
$row = $this -> surveySettings ;
# če privzeto sporočilo ne obstaja ga skreiramo
if ( mysqli_num_rows ( $sql_query ) == 0 ) {
Common :: getInstance () -> Init ( $this -> sid );
$reply_to = Common :: getInstance () -> getReplyToEmail ();
#poiščemo ime seznama za sporočila
$naslov = $this -> generateMessageName ();
$body_text = ( $row [ 'usercode_required' ] == 1 ) ? $lang [ 'srv_inv_message_body_text' ] . $lang [ 'srv_inv_message_body_text_pass' ] : $lang [ 'srv_inv_message_body_text' ];
# skreiramo osnovno sporočilo
$sqlString = " INSERT INTO srv_invitations_messages (ank_id, naslov, subject_text, body_text, reply_to, isdefault, uid, insert_time, comment, edit_uid, edit_time, url ) VALUES (' $this->sid ', ' " . $naslov . " ', ' " . $lang [ 'srv_inv_message_subject_text' ] . " ', ' " . $body_text . " ', ' " . $reply_to . " ', '1', ' " . $global_user_id . " ', NOW(), '', ' " . $global_user_id . " ', NOW(), '') " ;
$sqlQuery = sisplet_query ( $sqlString );
if ( ! $sqlQuery ) {
$error = mysqli_error ( $GLOBALS [ 'connect_db' ]);
}
$new_msg_id = mysqli_insert_id ( $GLOBALS [ 'connect_db' ]);
if (( int ) $new_msg_id > 0 ) {
return true ;
} else {
# insert ni uspel, in privzetega sporočila nimamo
return false ;
}
} else {
# če smo tu, imamo privzeto sporočilo
return true ;
}
}
function makeDefaultMessage ( $mid = null ) {
# preverimo kater message je trenutno privzet
$sql_string = " SELECT id FROM srv_invitations_messages WHERE ank_id = ' $this->sid ' AND isdefault='1' " ;
$sql_query = sisplet_query ( $sql_string );
list ( $def_id ) = mysqli_fetch_row ( $sql_query );
if (( int ) $def_id > 0 && ( int ) $mid > 0 && ( int ) $def_id != ( int ) $mid ) {
# odstranimo privzet id in ga nastavimo na novo
$sql_string = " UPDATE srv_invitations_messages SET isdefault = '0' WHERE ank_id = ' $this->sid ' AND isdefault='1' " ;
$sqlQuery = sisplet_query ( $sql_string );
# nastavimo na nov id
$sql_string = " UPDATE srv_invitations_messages SET isdefault = '1' WHERE ank_id = ' $this->sid ' AND id=' $mid ' " ;
$sqlQuery = sisplet_query ( $sql_string );
sisplet_query ( " COMMIT " );
}
$this -> viewMessage ( $mid );
}
function makeDefaultFromPreview ( $mid = null ) {
# preverimo kater message je trenutno privzet
$sql_string = " SELECT id FROM srv_invitations_messages WHERE ank_id = ' $this->sid ' AND isdefault='1' " ;
$sql_query = sisplet_query ( $sql_string );
list ( $def_id ) = mysqli_fetch_row ( $sql_query );
if (( int ) $def_id > 0 && ( int ) $mid > 0 && ( int ) $def_id != ( int ) $mid ) {
# odstranimo privzet id in ga nastavimo na novo
$sql_string = " UPDATE srv_invitations_messages SET isdefault = '0' WHERE ank_id = ' $this->sid ' AND isdefault='1' " ;
$sqlQuery = sisplet_query ( $sql_string );
# nastavimo na nov id
$sql_string = " UPDATE srv_invitations_messages SET isdefault = '1' WHERE ank_id = ' $this->sid ' AND id=' $mid ' " ;
$sqlQuery = sisplet_query ( $sql_string );
sisplet_query ( " COMMIT " );
}
$this -> displayMessagePreview ();
}
/**
* shranimo v obstoječ profil
*/
function save_message_simple () {
global $lang , $global_user_id ;
$return = array ( 'msg' => '' , 'error' => '0' );
# shranimo vsebino
#če so kakšne napake jih prikažemo v float oknu
$mid = ( int ) $_POST [ 'mid' ];
$subject = trim ( $_POST [ 'subject' ]);
$replyto = trim ( $_POST [ 'replyto' ]);
$body = trim ( $_POST [ 'body' ]);
$url = trim ( $_POST [ 'url' ]);
$newline = '' ;
if ( $replyto == null || $replyto == '' ) {
$return [ 'error' ] = '1' ;
$return [ 'msg' ] .= $newline . $lang [ 'srv_inv_msg_field' ] . '"' . $lang [ 'srv_inv_message_draft_content_from' ] . '"' . $lang [ 'srv_inv_msg_3_not_empty' ];
$return [ 'inv_message_replyto' ] = '1' ;
$newline = '<br/>' ;
} else {
if ( ! $this -> validEmail ( $replyto )) {
$return [ 'error' ] = '1' ;
$return [ 'msg' ] .= $newline . $lang [ 'srv_inv_msg_field' ] . '"' . $lang [ 'srv_inv_message_draft_content_from' ] . '"' . $lang [ 'srv_inv_msg_3_not_valid_email' ];
$return [ 'inv_message_replyto' ] = '1' ;
$newline = '<br/>' ;
}
}
if ( $subject == null || $subject == '' ) {
$return [ 'error' ] = '1' ;
$return [ 'msg' ] .= $newline . $lang [ 'srv_inv_msg_field' ] . '"' . $lang [ 'srv_inv_message_draft_content_subject' ] . '"' . $lang [ 'srv_inv_msg_3_not_empty' ];
$return [ 'inv_message_subject' ] = '1' ;
$newline = '<br/>' ;
}
if ( $body == null || $body == '' ) {
$return [ 'error' ] = '1' ;
$return [ 'msg' ] .= $newline . $lang [ 'srv_inv_msg_field' ] . '"' . $lang [ 'srv_inv_message_draft_content_body' ] . '"' . $lang [ 'srv_inv_msg_3_not_empty' ];
$return [ 'inv_message_body' ] = '1' ;
$newline = '<br/>' ;
}
# če ni napak shranim:
if ( $return [ 'error' ] == '0' ) {
if (( int ) $mid > 0 ) {
# shranjujemo v obstoječ msg
$sql_string = " UPDATE srv_invitations_messages SET subject_text = ' $subject ', body_text = ' $body ', reply_to = ' $replyto ', edit_uid = ' " . $global_user_id . " ', edit_time = NOW(), url=' " . $url . " ' WHERE ank_id = ' $this->sid ' AND id=' $mid ' " ;
$sqlQuery = sisplet_query ( $sql_string );
$return [ 'mid' ] = $mid ;
if ( $sqlQuery != 1 ) {
$return [ 'error' ] = '1' ;
$return [ 'msg' ] .= $newline . $lang [ 'srv_inv_msg_4' ];
}
} else {
# mid manjka
$return [ 'error' ] = '1' ;
$return [ 'msg' ] .= $newline . $lang [ 'srv_inv_msg_4' ]; $newline = '<br/>' ;
}
sisplet_query ( " COMMIT " );
}
$return [ 'msg' ] .= ' ' . $sql_string . $sql_insert ;
echo json_encode ( $return );
exit ;
}
/**
* shranimo v obstoječ profil
*/
function save_message_simple_noEmail () {
global $lang , $global_user_id ;
$return = array ( 'msg' => '' , 'error' => '0' );
# shranimo vsebino
#če so kakšne napake jih prikažemo v float oknu
$mid = ( int ) $_POST [ 'mid' ];
$subject = trim ( $_POST [ 'subject' ]);
$body = trim ( $_POST [ 'body' ]);
$url = trim ( $_POST [ 'url' ]);
$newline = '' ;
if ( $subject == null || $subject == '' ) {
$return [ 'error' ] = '1' ;
$return [ 'msg' ] .= $newline . $lang [ 'srv_inv_msg_field' ] . '"' . $lang [ 'srv_inv_message_draft_content_subject' ] . '"' . $lang [ 'srv_inv_msg_3_not_empty' ];
$return [ 'inv_message_subject' ] = '1' ;
$newline = '<br/>' ;
}
if ( $body == null || $body == '' ) {
$return [ 'error' ] = '1' ;
$return [ 'msg' ] .= $newline . $lang [ 'srv_inv_msg_field' ] . '"' . $lang [ 'srv_inv_message_draft_content_body' ] . '"' . $lang [ 'srv_inv_msg_3_not_empty' ];
$return [ 'inv_message_body' ] = '1' ;
$newline = '<br/>' ;
}
# če ni napak shranim:
if ( $return [ 'error' ] == '0' ) {
if (( int ) $mid > 0 ) {
# shranjujemo v obstoječ msg
$sql_string = " UPDATE srv_invitations_messages SET subject_text = ' $subject ', body_text = ' $body ', edit_uid = ' " . $global_user_id . " ', edit_time = NOW(), url=' " . $url . " ' WHERE ank_id = ' $this->sid ' AND id=' $mid ' " ;
$sqlQuery = sisplet_query ( $sql_string );
$return [ 'mid' ] = $mid ;
if ( $sqlQuery != 1 ) {
$return [ 'error' ] = '1' ;
$return [ 'msg' ] .= $newline . $lang [ 'srv_inv_msg_4' ];
}
} else {
# mid manjka
$return [ 'error' ] = '1' ;
$return [ 'msg' ] .= $newline . $lang [ 'srv_inv_msg_4' ]; $newline = '<br/>' ;
}
sisplet_query ( " COMMIT " );
}
$return [ 'msg' ] .= ' ' . $sql_string . $sql_insert ;
echo json_encode ( $return );
exit ;
}
function messageSaveforward () {
global $lang , $global_user_id ;
$return = array ( 'msg' => '' , 'error' => '0' );
$mid = ( int ) $POST [ 'mid' ];
#če so kakšne napake jih prikažemo v float oknu
$subject = trim ( $_POST [ 'subject' ]);
$replyto = trim ( $_POST [ 'replyto' ]);
$body = trim ( $_POST [ 'body' ]);
$url = trim ( $_POST [ 'url' ]);
$newline = '' ;
if ( $replyto == null || $replyto == '' ) {
$return [ 'error' ] = '1' ;
$return [ 'msg' ] .= $newline . $lang [ 'srv_inv_msg_field' ] . '"' . $lang [ 'srv_inv_message_draft_content_from' ] . '"' . $lang [ 'srv_inv_msg_3_not_empty' ];
$return [ 'inv_message_replyto' ] = '1' ;
$newline = '<br/>' ;
} else {
if ( ! $this -> validEmail ( $replyto )) {
$return [ 'error' ] = '1' ;
$return [ 'msg' ] .= $newline . $lang [ 'srv_inv_msg_field' ] . '"' . $lang [ 'srv_inv_message_draft_content_from' ] . '"' . $lang [ 'srv_inv_msg_3_not_valid_email' ];
$return [ 'inv_message_replyto' ] = '1' ;
$newline = '<br/>' ;
}
}
if ( $subject == null || $subject == '' ) {
$return [ 'error' ] = '1' ;
$return [ 'msg' ] .= $newline . $lang [ 'srv_inv_msg_field' ] . '"' . $lang [ 'srv_inv_message_draft_content_subject' ] . '"' . $lang [ 'srv_inv_msg_3_not_empty' ];
$return [ 'inv_message_subject' ] = '1' ;
$newline = '<br/>' ;
}
if ( $body == null || $body == '' ) {
$return [ 'error' ] = '1' ;
$return [ 'msg' ] .= $newline . $lang [ 'srv_inv_msg_field' ] . '"' . $lang [ 'srv_inv_message_draft_content_body' ] . '"' . $lang [ 'srv_inv_msg_3_not_empty' ];
$return [ 'inv_message_body' ] = '1' ;
$newline = '<br/>' ;
}
# če ni napak shranim:
if ( $return [ 'error' ] == '0' ) {
# preverimo ali je kakšna sprememba, če je sprememba shranimo v nov profil
$sql_string = " SELECT subject_text, body_text, reply_to, url FROM srv_invitations_messages WHERE ank_id = ' $this->sid ' AND id=' " . ( int ) $_POST [ 'mid' ] . " ' " ;
$sql_query = sisplet_query ( $sql_string );
list ( $old_subject , $old_body_text , $old_reply_to , $old_url ) = mysqli_fetch_row ( $sql_query );
if ( $old_subject != $subject || $old_body_text != $body || $old_reply_to != $replyto || $old_url != $url ) {
# shranjujemo v novo sporočilo
$naslov = $this -> generateMessageName ();
$sql_insert = " INSERT INTO srv_invitations_messages (ank_id, naslov, subject_text, body_text, reply_to, isdefault, uid, insert_time, comment, edit_uid, edit_time, url ) " .
" VALUES (' $this->sid ', ' $naslov ', ' $subject ', ' $body ', ' $replyto ', '1', ' $global_user_id ', NOW(), ' $comment ', ' $global_user_id ', NOW(), ' $url ') " ;
$sqlQuery = sisplet_query ( $sql_insert );
$newID = mysqli_insert_id ( $GLOBALS [ 'connect_db' ]);
if ( $newID > 0 ) {
$return [ 'mid' ] = $newID ;
# popravmo še isdefault pri starem zapisz
$sql_string = " UPDATE srv_invitations_messages SET isdefault = '0' WHERE ank_id = ' $this->sid ' AND id != ' $newID ' " ;
$sqlQuery = sisplet_query ( $sql_string );
} else {
$return [ 'error' ] = '1' ;
$return [ 'msg' ] .= $newline . $lang [ 'srv_inv_msg_4' ];
}
}
sisplet_query ( " COMMIT " );
}
$return [ 'msg' ] .= ' ' . $sql_string . $sql_insert ;
echo json_encode ( $return );
exit ;
}
function messageSaveforwardNoEmail () {
global $lang , $global_user_id ;
$return = array ( 'msg' => '' , 'error' => '0' );
$mid = ( int ) $POST [ 'mid' ];
#če so kakšne napake jih prikažemo v float oknu
$subject = trim ( $_POST [ 'subject' ]);
$body = trim ( $_POST [ 'body' ]);
$url = trim ( $_POST [ 'url' ]);
$newline = '' ;
if ( $subject == null || $subject == '' ) {
$return [ 'error' ] = '1' ;
$return [ 'msg' ] .= $newline . $lang [ 'srv_inv_msg_field' ] . '"' . $lang [ 'srv_inv_message_draft_content_subject' ] . '"' . $lang [ 'srv_inv_msg_3_not_empty' ];
$return [ 'inv_message_subject' ] = '1' ;
$newline = '<br/>' ;
}
if ( $body == null || $body == '' ) {
$return [ 'error' ] = '1' ;
$return [ 'msg' ] .= $newline . $lang [ 'srv_inv_msg_field' ] . '"' . $lang [ 'srv_inv_message_draft_content_body' ] . '"' . $lang [ 'srv_inv_msg_3_not_empty' ];
$return [ 'inv_message_body' ] = '1' ;
$newline = '<br/>' ;
}
# če ni napak shranim:
if ( $return [ 'error' ] == '0' ) {
# preverimo ali je kakšna sprememba, če je sprememba shranimo v nov profil
$sql_string = " SELECT subject_text, body_text, reply_to, url FROM srv_invitations_messages WHERE ank_id = ' $this->sid ' AND id=' " . ( int ) $_POST [ 'mid' ] . " ' " ;
$sql_query = sisplet_query ( $sql_string );
list ( $old_subject , $old_body_text , $old_reply_to , $old_url ) = mysqli_fetch_row ( $sql_query );
if ( $old_subject != $subject || $old_body_text != $body || $old_url != $url ) {
# shranjujemo v novo sporočilo
$naslov = $this -> generateMessageName ();
$sql_insert = " INSERT INTO srv_invitations_messages (ank_id, naslov, subject_text, body_text, isdefault, uid, insert_time, comment, edit_uid, edit_time, url ) " .
" VALUES (' $this->sid ', ' $naslov ', ' $subject ', ' $body ', '1', ' $global_user_id ', NOW(), ' $comment ', ' $global_user_id ', NOW(), ' $url ') " ;
$sqlQuery = sisplet_query ( $sql_insert );
$newID = mysqli_insert_id ( $GLOBALS [ 'connect_db' ]);
if ( $newID > 0 ) {
$return [ 'mid' ] = $newID ;
# popravmo še isdefault pri starem zapisz
$sql_string = " UPDATE srv_invitations_messages SET isdefault = '0' WHERE ank_id = ' $this->sid ' AND id != ' $newID ' " ;
$sqlQuery = sisplet_query ( $sql_string );
} else {
$return [ 'error' ] = '1' ;
$return [ 'msg' ] .= $newline . $lang [ 'srv_inv_msg_4' ];
}
}
sisplet_query ( " COMMIT " );
}
$return [ 'msg' ] .= ' ' . $sql_string . $sql_insert ;
echo json_encode ( $return );
exit ;
}
function addUrl ( $what ) {
global $site_url ;
if ( $what == null || trim ( $what ) == '' ) {
$what = 'add_recipients_view' ;
}
$url = $site_url . 'admin/survey/index.php?anketa=' . $this -> sid . '&a=' . A_INVITATIONS . '&m=' . $what ;
return $url ;
}
/**
Validate an email address .
*/
function validEmail ( $email = null ) {
return Common :: getInstance () -> validEmail ( $email );
}
function displayRecipentsErrors ( $result ) {
global $lang ;
$valid_recipiens = is_array ( $result [ 'valid_recipiens' ]) ? $result [ 'valid_recipiens' ] : array ();
$invalid_password = is_array ( $result [ 'invalid_password' ]) ? $result [ 'invalid_password' ] : array ();
$invalid_email = is_array ( $result [ 'invalid_email' ]) ? $result [ 'invalid_email' ] : array ();
$duplicate_email = is_array ( $result [ 'duplicate_email' ]) ? $result [ 'duplicate_email' ] : array ();
$unsubscribed = is_array ( $result [ 'unsubscribed' ]) ? $result [ 'unsubscribed' ] : array ();
# dodani so bili nekateri uporabniki
if ( count ( $valid_recipiens ) > 0 ) {
echo '<div id="inv_recipiens_added">' ;
echo $lang [ 'srv_inv_recipiens_add_success_cnt' ] . '<span class="inv_count"><span class="as_link" onclick="$(\'#invRecipiensList1\').toggle();">' . count ( $valid_recipiens ) . '</span></span>' ;
echo '<br />' ;
echo '<div id="invRecipiensList1" class="displayNone"><br/>' ;
foreach ( $valid_recipiens AS $fields ) {
if ( is_array ( $fields )) {
$text = '' ;
$text .= mb_strtolower ( $fields [ 'inv_field_email' ]);
if ( trim ( $fields [ 'inv_field_firstname' ]) != '' ) {
$text .= ', ' . str_replace ( " |~| " , " , " , mb_strtolower ( $fields [ 'inv_field_firstname' ], 'UTF-8' ));
}
if ( trim ( $fields [ 'inv_field_lastname' ]) != '' ) {
$text .= ', ' . str_replace ( " |~| " , " , " , mb_strtolower ( $fields [ 'inv_field_lastname' ], 'UTF-8' ));
}
echo $text ;
}
else {
echo mb_strtolower ( $fields , 'UTF-8' );
}
echo '<br/>' ;
}
echo '</div>' ;
echo '</div>' ;
}
if ( ( count ( $invalid_password ) + count ( $invalid_email ) + count ( $duplicate_email ) + count ( $unsubscribed )) > 0 ) {
echo '<div id="inv_recipiens_rejected">' ;
# ni veljavnih uporabnikov
if ( count ( $valid_recipiens ) == 0 ) {
echo '<span class="red bold">' . $lang [ 'srv_inv_recipiens_add_error' ] . '</span><br/>' ;
}
# zavrnjeni uporabniki
if ( count ( $unsubscribed ) > 0 ) {
echo $lang [ 'srv_inv_recipiens_add_optedout_cnt' ] . '<span class="inv_count"><span class="as_link" onclick="$(\'#invRecipiensList2\').toggle();">' . count ( $unsubscribed ) . '</span></span>' ;
echo '<br />' ;
echo '<div id="invRecipiensList2" class="displayNone">' ;
foreach ( $unsubscribed AS $fields ) {
if ( is_array ( $fields )) {
echo strtolower ( $fields [ 'inv_field_email' ]);
if ( trim ( $fields [ 'inv_field_firstname' ]) != '' ) {
echo ', ' . $fields [ 'inv_field_firstname' ];
}
if ( trim ( $fields [ 'inv_field_lastname' ]) != '' ) {
echo ', ' . $fields [ 'inv_field_lastname' ];
}
} else {
echo $fields ;
}
echo '<br/>' ;
}
echo '</div>' ;
}
# podvojeni uporabniki
if ( count ( $duplicate_email ) > 0 ) {
echo $lang [ 'srv_inv_recipiens_add_exist_cnt' ] . '<span class="inv_count"><span class="as_link" onclick="$(\'#invRecipiensList3\').toggle();">' . count ( $duplicate_email ) . '</span></span>' ;
echo '<br />' ;
echo '<div id="invRecipiensList3" class="displayNone">' ;
foreach ( $duplicate_email AS $fields ) {
if ( is_array ( $fields )) {
echo strtolower ( $fields [ 'inv_field_email' ]);
if ( trim ( $fields [ 'inv_field_firstname' ]) != '' ) {
echo ', ' . $fields [ 'inv_field_firstname' ];
}
if ( trim ( $fields [ 'inv_field_lastname' ]) != '' ) {
echo ', ' . $fields [ 'inv_field_lastname' ];
}
} else {
echo strtolower ( $fields );
}
echo '<br/>' ;
}
echo '</div>' ;
}
# neveljaven e-mail
if ( count ( $invalid_email ) > 0 ) {
echo $lang [ 'srv_inv_recipiens_add_invalid_cnt' ] . '<span class="inv_count"><span class="as_link" onclick="$(\'#invRecipiensList4\').toggle();">' . count ( $invalid_email ) . '!</span></span>' ;
echo '<br />' ;
echo '<div id="invRecipiensList4" class="displayNone">' ;
foreach ( $invalid_email AS $fields ) {
if ( is_array ( $fields )) {
echo str_replace ( " |~| " , " , " , mb_strtolower ( $fields [ 'inv_field_email' ], 'UTF-8' ));
if ( trim ( $fields [ 'inv_field_firstname' ]) != '' ) {
echo ', ' . str_replace ( " |~| " , " , " , $fields [ 'inv_field_firstname' ]);
}
if ( trim ( $fields [ 'inv_field_lastname' ]) != '' ) {
echo ', ' . str_replace ( " |~| " , " , " , $fields [ 'inv_field_lastname' ]);
}
} else {
echo str_replace ( " |~| " , " , " , mb_strtolower ( $fields , 'UTF-8' ));
}
echo '<br/>' ;
}
echo '</div>' ;
}
# neveljavena gesla
if ( count ( $invalid_password ) > 0 ) {
echo $lang [ 'srv_inv_recipiens_add_invalid_password_cnt' ] . '<span class="inv_count"><span class="as_link" onclick="$(\'#invRecipiensList5\').toggle();">' . count ( $invalid_password ) . '!</span></span>' ;
echo '<br />' ;
echo '<div id="invRecipiensList5" class="displayNone">' ;
foreach ( $invalid_password AS $fields ) {
if ( is_array ( $fields )) {
echo strtolower ( $fields [ 'inv_field_email' ]);
if ( trim ( $fields [ 'inv_field_firstname' ]) != '' ) {
echo ', ' . $fields [ 'inv_field_firstname' ];
}
if ( trim ( $fields [ 'inv_field_lastname' ]) != '' ) {
echo ', ' . $fields [ 'inv_field_lastname' ];
}
} else {
echo strtolower ( $fields );
}
echo '<br/>' ;
}
echo '</div>' ;
}
if ( count ( $invalid_email ) > 0 || count ( $invalid_password ) > 0 ) {
//echo ''.$lang['srv_inv_recipiens_add_invalid_note'];
echo '<br /><span class="red">' . $lang [ 'srv_inv_recipiens_add_invalid_note2' ] . '!</span>' ;
echo Help :: display ( 'srv_inv_recipiens_add_invalid_note' );
}
echo '</div>' ;
return array_merge ( $unsubscribed , $duplicate_email , $invalid_email , $invalid_password ) ;
}
return array ();
}
function displayNavigation () {
global $lang , $admin_type , $global_user_id , $app_settings ;
$isEmail = ( int ) SurveyInfo :: getInstance () -> checkSurveyModule ( 'email' );
$userAccess = UserAccess :: getInstance ( $global_user_id );
#če ni dostopa mu ne prikažemo linkov
if (( int ) $isEmail > 0 && $userAccess -> checkUserAccess ( $what = 'invitations' )) {
}
else {
return false ;
}
# če je testni uporabnik mu ne prikažemo linkov
$sql = sisplet_query ( " SELECT email FROM users WHERE id=' $global_user_id ' " );
list ( $email ) = mysqli_fetch_row ( $sql );
if ( $email == 'test@1ka.si' ) {
return false ;
}
if ( ! isset ( $_POST [ 'noNavi' ]) || ( isset ( $_POST [ 'noNavi' ]) && $_POST [ 'noNavi' ] != 'true' )) {
$_sub_action = $_GET [ 'm' ];
if ( $_sub_action == null && $_GET [ 't' ] == 'invitations' ) {
if ( $_GET [ 'a' ] == 'use_recipients_list' ) {
$_sub_action = 'add_recipients_view' ;
}
if ( $_GET [ 'a' ] == 'view_message'
|| $_GET [ 'a' ] == 'make_default'
|| $_GET [ 'a' ] == 'delete_msg_profile' ) {
$_sub_action = 'view_message' ;
}
if ( $_GET [ 'a' ] == 'delete_recipient'
|| $_GET [ 'a' ] == 'add_recipients'
|| $_GET [ 'a' ] == 'view_recipients'
|| $_GET [ 'a' ] == 'export_recipients'
|| $_GET [ 'a' ] == 'add_checked_users_to_database'
|| $_GET [ 'a' ] == 'setAdvancedCondition'
|| $_GET [ 'a' ] == 'recipientsAddForward' ) {
$_sub_action = 'view_recipients' ;
}
if ( $_GET [ 'a' ] == 'view_archive' ) {
$_sub_action = 'view_archive' ;
}
if ( $_GET [ 'a' ] == 'send_mail' ) {
$_sub_action = 'send_message' ;
#$_sub_action = 'view_archive';
}
} else if ( $_sub_action == 'send_mail' ) {
#$_sub_action = 'view_archive';
$_sub_action = 'send_message' ;
}
$active_step [] = array ( 1 => '' , 2 => '' , 3 => '' , 4 => '' , 5 => '' , 6 => '' , 7 => '' , 8 => '' );
switch ( $_sub_action ) {
case 'inv_settings' :
$active_step [ '1' ] = ' active' ;
break ;
case 'add_recipients_view' :
$active_step [ '2' ] = ' active' ;
break ;
case 'view_recipients' :
$active_step [ '3' ] = ' active' ;
break ;
case 'view_message' :
$active_step [ '4' ] = ' active' ;
break ;
case 'send_message' :
$active_step [ '5' ] = ' active' ;
break ;
case 'view_archive' :
$active_step [ '6' ] = ' active' ;
break ;
case 'inv_lists' :
$active_step [ '7' ] = ' active' ;
break ;
case 'inv_server' :
$active_step [ '8' ] = ' active' ;
break ;
case 'inv_status' :
$active_step [ '9' ] = ' active' ;
break ;
default :
$sql = sisplet_query ( " SELECT EXISTS (SELECT 1 FROM srv_invitations_archive WHERE ank_id=' " . $this -> sid . " ') " );
$row = mysqli_fetch_array ( $sql );
// Ce imamo ze posiljanje je default stran "Pregled"
if ( $row [ 0 ] == 1 )
$active_step [ '9' ] = ' active' ;
// Drugace je default stran "Nastavitve"
else
$active_step [ '1' ] = ' active' ;
break ;
}
if ( SurveyInfo :: getInstance () -> checkSurveyModule ( 'email' ) || SurveyInfo :: getInstance () -> checkSurveyModule ( 'phone' )) {
$disabled = false ;
$css_disabled = '' ;
} else {
$disabled = true ;
$css_disabled = '_disabled' ;
}
if ( $isEmail ) {
#$spaceChar = '»';
$spaceChar = ' ' ;
echo '<div id="inv_step_nav">' ;
echo '<div class="inv_step' . $active_step [ 1 ] . '">' ;
echo '<a href="' . $this -> addUrl ( 'inv_settings' ) . '">' ;
//echo '<span class="circle">1</span>';
echo '<span class="label">' . $lang [ 'srv_inv_nav_email_settings' ] . '</span>' ;
echo '</a>' ;
echo '</div>' ;
echo '</div>' ;
#space
echo '<div class="inv_space"> </div>' ;
echo '<div id="inv_step_nav" class="yellow">' ;
$class_yellow = ' yellow' ;
#navigacija
echo '<div class="inv_step' . $class_yellow . $css_disabled . $active_step [ 2 ] . '">' ;
if ( $disabled == false ) {
echo '<a href="' . $this -> addUrl ( 'add_recipients_view' ) . '">' ;
}
echo '<span class="circle">1</span>' ;
echo '<span class="label">' . $lang [ 'srv_inv_nav_add_recipients' ] . '</span>' ;
if ( $disabled == false ) {
echo '</a>' ;
}
echo '</div>' ;
echo '<div class="inv_step_space' . $class_yellow . $css_disabled . '">' . $spaceChar . '</div>' ;
echo '<div class="inv_step' . $class_yellow . $css_disabled . $active_step [ 3 ] . '">' ;
if ( $disabled == false ) {
echo '<a href="' . $this -> addUrl ( 'view_recipients' ) . '">' ;
}
echo '<span class="circle">2</span>' ;
echo '<span class="label">' . $lang [ 'srv_inv_nav_edit_recipiens' ] . '</span>' ;
if ( $disabled == false ) {
echo '</a>' ;
}
echo '</div>' ;
echo '<div class="inv_step_space' . $class_yellow . $css_disabled . '">' . $spaceChar . '</div>' ;
if ( $disabled == false ) {
echo '<a href="' . $this -> addUrl ( 'view_message' ) . '">' ;
}
echo '<div class="inv_step' . $class_yellow . $css_disabled . $active_step [ 4 ] . '">' ;
echo '<span class="circle">3</span>' ;
echo '<span class="label" >' . $lang [ 'srv_inv_nav_edit_message' ] . '</span>' ;
if ( $disabled == false ) {
echo '</a>' ;
}
echo '</div>' ;
echo '<div class="inv_step_space' . $class_yellow . $css_disabled . '">' . $spaceChar . '</div>' ;
echo '<div class="inv_step' . $class_yellow . $css_disabled . $active_step [ 5 ] . '">' ;
if ( $disabled == false ) {
echo '<a href="' . $this -> addUrl ( 'send_message' ) . '">' ;
}
echo '<span class="circle">4</span>' ;
echo '<span class="label" >' . $lang [ 'srv_inv_nav_send_message' ] . '</span>' ;
if ( $disabled == false ) {
echo '</a>' ;
}
echo '</div>' ;
echo '</div>' ;
// Pregled
#space
echo '<div class="inv_space"> </div>' ;
echo '<div id="inv_step_nav">' ;
echo '<div class="inv_step' . $active_step [ 9 ] . '">' ;
echo '<a href="' . $this -> addUrl ( 'inv_status' ) . '">' ;
//echo '<span class="circle">1</span>';
echo '<span class="label">' . $lang [ 'srv_inv_nav_email_review' ] . '</span>' ;
echo '</a>' ;
echo '</div>' ;
echo '</div>' ;
// Seznami
#space
echo '<div class="inv_space"> </div>' ;
echo '<div id="inv_step_nav">' ;
echo '<div class="inv_step' . $active_step [ 7 ] . '">' ;
echo '<a href="' . $this -> addUrl ( 'inv_lists' ) . '">' ;
//echo '<span class="circle">1</span>';
echo '<span class="label">' . $lang [ 'srv_inv_nav_email_lists' ] . '</span>' ;
echo '</a>' ;
echo '</div>' ;
echo '</div>' ;
echo '<br class="clr" />' ;
echo '<br class="clr" />' ;
}
}
echo '<input type="hidden" id="surveyConditionPage" value="invitations">' ;
}
function sendMessage () {
global $lang , $site_url ;
// Ali posiljamo maile ali ne
//$noEmailing = (isset($_GET['noemailing']) ? $_GET['noemailing'] : 0);
$noEmailing = SurveySession :: get ( 'inv_noEmailing' );
$row = $this -> surveySettings ;
# Pripravimo izbor komu lahko pošiljamo
//echo '<h2>'.$lang['srv_inv_send_heading'].'</h2>';
echo '<h2 style="margin-left: 15px; color:#333 !important;">' ;
// Text s podatki o nastavitvah posiljanja
$settings_text = '<span class="bold spaceRight">' . $lang [ 'srv_inv_message_type' ] . ':</span>' ;
$individual = ( int ) $this -> surveySettings [ 'individual_invitation' ];
if ( $individual == 0 ){
$settings_text .= '<span class="spaceLeft spaceRight">' . $lang [ 'srv_inv_settings_individual_0' ] . '</span>' ;
}
else {
$settings_text .= '<span class="spaceLeft spaceRight">' . $lang [ 'srv_inv_settings_individual_1' ] . '</span>' ;
}
$settings_text .= ' - ' ;
if ( $noEmailing == 0 ){
$settings_text .= '<span class="spaceLeft spaceRight">' . $lang [ 'srv_inv_settings_noEmail_0' ] . '</span>' ;
}
else {
$settings_text .= '<span class="spaceLeft spaceRight">' . $lang [ 'srv_inv_settings_noEmail_1' ] . '</span>' ;
}
$settings_text .= ' - ' ;
if ( $row [ 'usercode_required' ] == 0 && $individual != 0 ){
$settings_text .= '<span class="spaceLeft spaceRight">' . $lang [ 'srv_inv_settings_URL_0' ];
$settings_text .= ' (' . $lang [ 'srv_inv_settings_code_0' ] . ')</span>' ;
}
else {
$settings_text .= '<span class="spaceLeft spaceRight">' . $lang [ 'srv_inv_settings_URL_1' ];
if ( $row [ 'usercode_skip' ] == 1 || $individual == 0 ){
$settings_text .= ' (' . $lang [ 'srv_inv_settings_code_2' ] . ')</span>' ;
}
else {
$settings_text .= ' (' . $lang [ 'srv_inv_settings_code_1' ] . ')</span>' ;
}
}
$settings_text .= '<span class="spaceLeft"> <a href="' . $site_url . 'admin/survey/index.php?anketa=' . $this -> sid . '&a=invitations&m=inv_settings">' . $lang [ 'edit4' ] . '</a></span>' ;
echo $settings_text ;
echo '</h2>' ;
if ( $this -> checkDefaultMessage () == false ) {
echo '<span class="inv_error_note">' ;
echo $lang [ 'srv_invitation_note6' ];
echo '</span>' ;
exit ();
}
echo '<div id="inv_send_mail">' ;
# damo v tabelo zaradi prilagajanja oblike levo/desno
2021-03-24 09:25:14 +01:00
echo '<table><tr>' ;
// Pri volitvah vedno posiljamo samo tistim, katerim se nismo poslali
if ( ! SurveyInfo :: getInstance () -> checkSurveyModule ( 'voting' )){
2020-08-14 13:36:36 +02:00
2021-03-24 09:25:14 +01:00
echo '<td>' ;
echo '<div>' ;
2020-08-14 13:36:36 +02:00
2021-03-24 09:25:14 +01:00
echo $lang [ 'srv_inv_send_who_database' ] . '<br/>' ;
echo '<span class="floatLeft">' ;
echo '<label><input type="radio" name="mailsource" value="0" onclick="mailToSourceChange();" checked="checked">' . $lang [ 'srv_inv_send_who_all_units' ] . '</label>' ;
echo '</span>' ;
$this -> advancedCondition ();
echo '<br class="clr"/>' ;
echo '<label><input type="radio" name="mailsource" value="1" onclick="mailToSourceChange();">' . $lang [ 'srv_inv_send_who_archive' ] . '</label>' ;
echo '<br/><label><input type="radio" name="mailsource" value="2" onclick="mailToSourceChange();">' . $lang [ 'srv_inv_send_who_lists' ] . '</label>' ;
echo '<br/>' ;
2020-08-14 13:36:36 +02:00
2021-03-24 09:25:14 +01:00
echo '<div id="inv_select_mail_to_source_lists">' ;
$this -> displayMailToSourceLists (( int ) $_POST [ 'source_type' ]);
echo '</div>' ; #id="inv_select_mail_to_source_lists"
echo '</div>' ;
# polovimo sporočilo in prejemnike
$sql_query_m = sisplet_query ( " SELECT id, naslov, subject_text, body_text, reply_to, isdefault, comment, url FROM srv_invitations_messages WHERE ank_id = ' $this->sid ' AND isdefault='1' " );
if ( mysqli_num_rows ( $sql_query_m ) > 0 ) {
$preview_message = mysqli_fetch_assoc ( $sql_query_m );
}
else {
#nimamo še vsebine sporočila skreiramo privzeto.
echo '<span class="inv_error_note">' ;
echo $lang [ 'srv_invitation_note6' ];
echo '</span>' ;
exit ();
}
echo '</td>' ;
}
echo '<td>' ;
2020-08-14 13:36:36 +02:00
// Ce posiljamo preko navadne poste ali smsov, nimamo sporocila
if ( $noEmailing == 0 ){
echo '<input type="hidden" name="noMailing" value="0" />' ;
echo '<div id="inv_select_mail_preview">' ;
$this -> displayMessagePreview ();
echo '</div>' ; // inv_select_mail_preview
echo '<br class="clr"/>' ;
echo '<div id="inv_select_mail_to_respondents">' ;
$this -> selectSendTo ();
echo '</div>' ; // inv_select_mail_to_respondents
}
else {
echo '<input type="hidden" name="noMailing" value="1" />' ;
$noEmailingType = SurveySession :: get ( 'inv_noEmailing_type' );
echo '<input type="hidden" name="noMailingType" value="' . $noEmailingType . '" />' ;
echo '<div id="inv_select_mail_to_respondents">' ;
$this -> selectSendToNoEmailing ();
echo '</div>' ; // inv_select_mail_to_respondents
}
2021-03-24 09:25:14 +01:00
echo '</td>' ;
echo '</tr></table>' ;
2020-08-14 13:36:36 +02:00
echo '</div>' ; //inv_send_mail
}
function displayMailToSourceLists ( $source_type ) {
2020-11-26 09:56:48 +01:00
global $lang , $site_url ;
$canShowSubOption = false ;
2020-08-14 13:36:36 +02:00
echo '<p style="margin-left:25px;">' ;
echo $lang [ 'srv_inv_send_who_create1' ] . '<a href="' . $site_url . 'admin/survey/index.php?anketa=' . $this -> sid . '&a=invitations&m=inv_lists">' . $lang [ 'srv_inv_send_who_create2' ] . '</a><br/>' ;
2020-11-26 09:56:48 +01:00
if (( int ) $source_type == 0 ) {
2020-08-14 13:36:36 +02:00
# vsi respondenti v bazi
echo $lang [ 'srv_inv_send_who_database_note' ];
$canShowSubOption = true ;
2020-11-26 09:56:48 +01:00
}
elseif (( int ) $source_type == 1 ) {
2020-08-14 13:36:36 +02:00
# Arhivi pošiljanja
# poiščemo arhiv mailingov
# zloopamo še po posameznih pošiljanjih
$sql_string_arc = " SELECT sia.*, DATE_FORMAT(sia.date_send,'%d.%m.%Y, %T') AS ds, u.name, u.surname, u.email FROM srv_invitations_archive AS sia LEFT JOIN users AS u ON sia.uid = u.id WHERE ank_id = ' " . $this -> sid . " ' ORDER BY sia.date_send ASC; " ;
$sql_query_arc = sisplet_query ( $sql_string_arc );
if ( mysqli_num_rows ( $sql_query_arc ) > 0 ) {
2020-11-26 09:56:48 +01:00
$canShowSubOption = true ;
echo $lang [ 'srv_inv_send_who_archive_note' ];
2020-08-14 13:36:36 +02:00
echo '<table id="tbl_recipients_source_list">' ;
echo '<tr>' ;
echo '<th class="tbl_icon"> </th>' ;
echo '<th>' . $lang [ 'srv_inv_send_who_table_address' ] . '</th>' ;
echo '<th>' . $lang [ 'srv_inv_send_who_table_respondents' ] . '</th>' ;
echo '<th>' . $lang [ 'srv_inv_send_who_table_date_create' ] . '</th>' ;
echo '</tr>' ;
2020-11-26 09:56:48 +01:00
while ( $row_arc = mysqli_fetch_assoc ( $sql_query_arc )) {
2020-08-14 13:36:36 +02:00
echo '<tr>' ;
echo '<td class="tbl_icon"><input type="checkbox" name="mailsource_lists[]" onchange="mailToSourceCheckboxChange();" value="' . $row_arc [ 'id' ] . '"></td>' ;
echo '<td>' . $row_arc [ 'naslov' ] . '</td>' ;
echo '<td class="anl_ac">' . (( int ) $row_arc [ 'cnt_succsess' ] + ( int ) $row_arc [ 'cnt_error' ]) . '</td>' ;
echo '<td>' . $row_arc [ 'ds' ] . '</td>' ;
echo '</tr>' ;
2020-11-26 09:56:48 +01:00
}
2020-08-14 13:36:36 +02:00
echo '</table>' ;
2020-11-26 09:56:48 +01:00
}
else {
2020-08-14 13:36:36 +02:00
echo $lang [ 'srv_inv_send_who_archive_no_archive' ];
2020-11-26 09:56:48 +01:00
}
}
elseif (( int ) $source_type == 2 ) {
2020-08-14 13:36:36 +02:00
# seznami respondentov
# zloopamo skozi posamezne sezname respondentov
2020-11-26 09:56:48 +01:00
$sql_string_arc = " " ;
$sql_query_arc = sisplet_query ( " SELECT list_id as id, COUNT(*) as cnt_succsess, list_id, sirp.name as naslov, DATE_FORMAT(sirp.insert_time,'%d.%m.%Y, %T') AS ds
FROM srv_invitations_recipients AS sir
LEFT JOIN srv_invitations_recipients_profiles AS sirp
ON sir . list_id = sirp . pid
WHERE ank_id = '".$this->sid."' AND sir . deleted = '0' group BY list_id
" );
if ( mysqli_num_rows ( $sql_query_arc ) > 0 ) {
$canShowSubOption = true ;
echo $lang [ 'srv_inv_send_who_all_units_note' ];
2020-08-14 13:36:36 +02:00
echo '<table id="tbl_recipients_source_list">' ;
echo '<tr>' ;
echo '<th class="tbl_icon"> </th>' ;
echo '<th>' . $lang [ 'srv_inv_send_who_table_list_name' ] . '</th>' ;
echo '<th>' . $lang [ 'srv_inv_send_who_table_respondents' ] . '</th>' ;
echo '<th>' . $lang [ 'srv_inv_send_who_table_date_create' ] . '</th>' ;
echo '</tr>' ;
while ( $row_arc = mysqli_fetch_assoc ( $sql_query_arc )) {
2020-11-26 09:56:48 +01:00
if ( $row_arc [ 'id' ] > 0 && $row_arc [ 'naslov' ] == '' ) {
2020-08-14 13:36:36 +02:00
# če ni imena in je id < 0 je bil izbrisan
2020-11-26 09:56:48 +01:00
}
else {
2020-08-14 13:36:36 +02:00
if ( $row_arc [ 'id' ] > 0 ) {
if ( $row_arc [ 'naslov' ] != '' ) {
$_naslov = $row_arc [ 'naslov' ];
2020-11-26 09:56:48 +01:00
}
else {
2020-08-14 13:36:36 +02:00
$_naslov = $lang [ 'srv_inv_send_who_table_list_deleted' ];
}
2020-11-26 09:56:48 +01:00
}
else if ( $row_arc [ 'id' ] == 0 ) {
2020-08-14 13:36:36 +02:00
$_naslov = $lang [ 'srv_inv_send_who_table_list_temporary' ];
2020-11-26 09:56:48 +01:00
}
else if ( $row_arc [ 'id' ] < 0 ) {
2020-08-14 13:36:36 +02:00
$_naslov = $lang [ 'srv_inv_send_who_table_list_noname' ];
2020-11-26 09:56:48 +01:00
}
2020-08-14 13:36:36 +02:00
echo '<tr>' ;
echo '<td class="tbl_icon"><input type="checkbox" name="mailsource_lists[]" onchange="mailToSourceCheckboxChange();" value="' . $row_arc [ 'id' ] . '"></td>' ;
echo '<td>' . $_naslov . '</td>' ;
echo '<td class="anl_ac">' . $row_arc [ 'cnt_succsess' ] . '</td>' ;
echo '<td>' . $row_arc [ 'ds' ] . '</td>' ;
echo '</tr>' ;
}
}
echo '</table>' ;
2020-11-26 09:56:48 +01:00
}
else {
2020-08-14 13:36:36 +02:00
echo $lang [ 'srv_inv_send_who_no_lists' ];
}
}
echo '</p>' ;
if ( $canShowSubOption == true ) {
2020-11-26 09:56:48 +01:00
2020-08-14 13:36:36 +02:00
echo '<span id="inv_select_mail_to">' ;
echo '<span class="bold">' . $lang [ 'srv_inv_send_note' ] . '</span><br/>' ;
echo '<span class="inv_send_span"><input name="mailto" id="mailto0" value="0" type="radio" checked="checked" onclick="mailToRadioChange();"><label for="mailto0">' . $lang [ 'srv_inv_send_recipients0' ] . '</label></span><br/>' ;
echo '<span class="inv_send_span"><input name="mailto" id="mailto1" value="1" type="radio" onclick="mailToRadioChange();"><label for="mailto1">' . $lang [ 'srv_inv_send_recipients1' ] . '</label></span><br/>' ;
echo '<span class="inv_send_span"><input name="mailto" id="mailto2" value="2" type="radio" onclick="mailToRadioChange();"><label for="mailto2">' . $lang [ 'srv_inv_send_recipients2' ] . '</label></span><br/>' ;
echo '<span class="inv_send_span"><input name="mailto" id="mailto3" value="3 " type="radio" onclick="mailToRadioChange();"><label for="mailto3">' . $lang [ 'srv_inv_send_recipients3' ] . '</label></span><br/>' ;
echo '<span class="inv_send_span">' . $lang [ 'srv_invitation_send_advanced' ] . '</span><br/>' ;
echo '<span class="inv_send_span"><input name="mailto" id="mailto4" value="4 " type="radio" onclick="mailToRadioChange();"><label for="mailto4">' . $lang [ 'srv_inv_send_recipients4' ] . '</label></span><br/>' ;
echo '<div id="inv_send_advanced_div" >' ;
echo '<span class="inv_send_span shift gray"><label><input name="mailto_status[]" value="0" type="checkbox" id="mailto_status_0" onclick="mailTocheCheckboxChange();" disabled="disabled">0 - ' . $lang [ 'srv_userstatus_0' ] . '</label></span><br/>' ;
echo '<span class="inv_send_span shift gray"><label><input name="mailto_status[]" value="1" type="checkbox" id="mailto_status_1" onclick="mailTocheCheckboxChange();" disabled="disabled">1 - ' . $lang [ 'srv_userstatus_1' ] . '</label></span><br/>' ;
echo '<span class="inv_send_span shift gray"><label><input name="mailto_status[]" value="2" type="checkbox" id="mailto_status_2" onclick="mailTocheCheckboxChange();" disabled="disabled">2 - ' . $lang [ 'srv_userstatus_2' ] . '</label></span><br/>' ;
echo '<span class="inv_send_span shift gray"><label><input name="mailto_status[]" value="3" type="checkbox" id="mailto_status_3" onclick="mailTocheCheckboxChange();" disabled="disabled">3 - ' . $lang [ 'srv_userstatus_3' ] . '</label></span><br/>' ;
echo '<span class="inv_send_span shift gray"><label><input name="mailto_status[]" value="4" type="checkbox" id="mailto_status_4" onclick="mailTocheCheckboxChange();" disabled="disabled">4 - ' . $lang [ 'srv_userstatus_4' ] . '</label></span><br/>' ;
echo '<span class="inv_send_span shift gray"><label><input name="mailto_status[]" value="5" type="checkbox" id="mailto_status_5" onclick="mailTocheCheckboxChange();" disabled="disabled">5 - ' . $lang [ 'srv_userstatus_5' ] . '</label></span><br/>' ;
echo '<span class="inv_send_span shift gray"><label><input name="mailto_status[]" value="6" type="checkbox" id="mailto_status_6" onclick="mailTocheCheckboxChange();" disabled="disabled">6 - ' . $lang [ 'srv_userstatus_6' ] . '</label></span><br/>' ;
echo '</div>' ;
echo '</span>' ; // inv_select_mail_to
}
}
function selectSendTo ( $send_type = 0 , $checkboxes = array ()) {
global $lang , $site_url , $global_user_id ;
if (( int ) $this -> surveySettings [ 'active' ] !== 1 ) {
$activity = SurveyInfo :: getSurveyActivity ();
$_last_active = end ( $activity );
echo $lang [ 'srv_inv_error9' ];
echo '<a href="#" onclick="anketa_active(\'' . $this -> sid . '\',\'' . ( int ) $this -> surveySettings [ 'active' ] . '\'); return false;" title="' . $lang [ 'srv_anketa_noactive' ] . '">' ;
if (( int ) $_last_active > 0 ) {
# anketa je zaključena
echo ' <span id="srv_inactive">' . $lang [ 'srv_inv_activate_survey_here' ] . '</span>' ;
} else {
# anketa je neaktivna
echo ' <span id="srv_inactive">' . $lang [ 'srv_inv_activate_survey_here' ] . '</span>' ;
}
echo '</a>' ;
2021-03-29 10:53:58 +02:00
}
# anketa je aktivna lahko pošiljamo
else {
// Preverimo ce je vklopljen modul za volitve - obvestilo, da ni naknadnega posiljanja
if ( SurveyInfo :: getInstance () -> checkSurveyModule ( 'voting' )){
echo '<p class="bold red">' . $lang [ 'srv_voting_no_duplicates' ] . '</p>' ;
}
2020-08-14 13:36:36 +02:00
$sql_string = " SELECT comment FROM srv_invitations_messages WHERE ank_id = ' $this->sid ' AND isdefault='1' " ;
$sql_query = sisplet_query ( $sql_string );
list ( $comment ) = mysqli_fetch_row ( $sql_query );
$_msg = '<span>' . $lang [ 'srv_invitation_note3' ] . '</span>' ;
if ( isset ( $_POST [ 'send_type' ])) {
$send_type = ( int ) $_POST [ 'send_type' ];
}
$checkboxes = array ();
if ( isset ( $_POST [ 'checkboxes' ]) && trim ( $_POST [ 'checkboxes' ]) != '' ) {
$checkboxes = explode ( ',' , $_POST [ 'checkboxes' ]);
}
$source_type = ( int ) $_POST [ 'source_type' ];
$source_lists = trim ( $_POST [ 'source_lists' ]);
2021-03-24 09:25:14 +01:00
$respondents = $this -> getRespondents2Send ( $send_type , $checkboxes , $source_type , $source_lists );
2020-08-14 13:36:36 +02:00
#koliko strani imamp
$numRespondents = count ( $respondents );
$pages = ceil ( $numRespondents / $this -> rec_send_page_limit );
if ( count ( $respondents ) > 0 ) {
echo '<div class="inv_send_mail_send_type">' ;
// Način pošiljanja
echo '<span class="bold">' ;
echo $lang [ 'srv_inv_message_type' ] . ': ' ;
echo $lang [ 'email' ];
echo '</span><br /><br />' ;
echo '<form id="frm_do_send" action="' . $site_url . 'admin/survey/index.php?anketa=' . $this -> sid . '&a=' . A_INVITATIONS . '&m=send_mail" method="post">' ;
// Komentar pri posiljanju
echo '<label>' . $lang [ 'srv_inv_send_comment' ] . ' ' . Help :: display ( 'srv_inv_sending_comment' ) . ': ' ;
echo '<input type="text" name="comment" id="msg_comment" value="' . $comment . '">' ;
echo '</label><br class="clr"><br />' ;
// Pobrisi podvojene maile
echo '<label><input type="checkbox" id="dont_send_duplicated" name="dont_send_duplicated" checked="checked">' . $lang [ 'srv_inv_send_remove_duplicates' ] . '</label></span> ' . Help :: display ( 'srv_inv_sending_double' ) . '<br />' ;
// Gumb Poslji
echo '<br /><div id="inv_send_mail_btn"><span class="buttonwrapper floatLeft"><a href="#" onclick="$(\'#fade\').fadeTo(\'slow\', 1); $(\'#inv_send_note\').fadeTo(\'slow\',1); $(\'#frm_do_send\').submit();" class="ovalbutton ovalbutton_orange" ><span>' . $lang [ 'srv_inv_send' ] . '</span></a></span>' ;
echo '<br class="clr"/><br /></div>' ;
// Komentiram kot workaround (če ni zakomentiran, ob ajaxu tu vrine konec forme) - MISLIM DA JE TA POPRAVEK ŠE VEDNO POTREBEN (v kombinaciji z Robertovim)
//echo '</div>';
// Seznam mailov na katere bomo poslali
if (( int ) $this -> invitationAdvancedConditionId > 0 )
{
//if (is_array($this->user_inv_ids) && count($this->user_inv_ids) > 0)
{
echo '<span class="floatLeft">' ;
$scp = new SurveyCondition ( $this -> sid );
$note = $scp -> getConditionString ( $this -> invitationAdvancedConditionId );
echo $note ;
#$scp -> displayConditionNote($this->invitationAdvancedConditionId );
echo '</span>' ;
echo '<br/>' ;
}
}
# izpišemo seznam e-mailov in dodamo checkboxe
echo '<div class="strong">' . $lang [ 'srv_inv_potencial_respondents' ] . ' <span id="inv_num_recipients">' . count ( $respondents ) . '</span></div>' ;
# izpišemo opozorilo kadar pošiljamo na več kakor 5000 naslovov
$text = ( Common :: checkModule ( 'gorenje' )) ? $lang [ 'srv_inv_potencial_respondents_limit_gorenje' ] : $lang [ 'srv_inv_potencial_respondents_limit' ];
echo '<div id="inv_send_mail_limit" class="red strong' . ( count ( $respondents ) > 4999 ? '' : ' hidden' ) . '">' . $text . '</div>' ;
echo '<input type="hidden" name="anketa" id="anketa" value="' . $this -> sid . '">' ;
# da preprečimo večkratno pošiljanje
session_start ();
list ( $short , $long ) = $this -> generateCode ();
$_SESSION [ 'snd_inv_token' ][ $this -> sid ] = $long ;
echo '<input type="hidden" name="_token" id="_token" value="' . $long . '">' ;
if ( $pages > 1 || $numRespondents > REC_ON_SEND_PAGE ) {
echo '<div id="inv_pagination_content">' ;
$this -> displaySendPagination ( $numRespondents );
echo '</div>' ;
}
# polovimo sezname
$lists = array ();
2021-02-22 15:26:32 +01:00
$sql_string = " SELECT pid, name,comment FROM srv_invitations_recipients_profiles WHERE uid in(' " . $global_user_id . " ') " ;
2020-08-14 13:36:36 +02:00
$sql_query = sisplet_query ( $sql_string );
while ( $sql_row = mysqli_fetch_assoc ( $sql_query )) {
$lists [ $sql_row [ 'pid' ]] = $sql_row [ 'name' ];
}
$lists [ '-1' ] = $lang [ 'srv_invitation_new_templist' ];
$lists [ '0' ] = $lang [ 'srv_invitation_new_templist_author' ];
echo '<div id="inv_send_note">Pošiljam . . . Prosimo počakajte.</div>' ;
echo '<br/><table id="tbl_recipients_send_list">' ;
echo '<tr>' ;
echo '<th class="tbl_icon"><input type="checkbox" checked="checked" onclick="invTogleSend(this);">' . '</th>' ;
echo '<th title="' . $lang [ 'srv_inv_recipients_email' ] . '">' . $lang [ 'srv_inv_recipients_email' ] . '</th>' ;
echo '<th title="' . $lang [ 'srv_inv_recipients_last_status' ] . '">' . $lang [ 'srv_inv_recipients_last_status' ] . '</th>' ;
echo '<th title="' . $lang [ 'srv_inv_recipients_last_status' ] . '">' . $lang [ 'srv_inv_recipients_list_id' ] . '</th>' ;
echo '</tr>' ;
$cnt = 1 ;
foreach ( $respondents as $pass => $respondent ) {
echo '<tr' . ( $cnt > $this -> rec_send_page_limit ? ' class="displayNone"' : '' ) . '>' ;
echo '<td><input type="checkbox" name="rids[]" value="' . $respondent [ 'id' ] . '" checked="checekd"></td>' ;
echo '<td>' . $respondent [ 'email' ] . '</td>' ;
echo '<td>' . $lang [ 'srv_userstatus_' . $respondent [ 'status' ]] . ' (' . $respondent [ 'status' ] . ')' . '</td>' ;
if ( $lists [ $respondent [ 'list_id' ]] != '' ) {
echo '<td>' . $lists [ $respondent [ 'list_id' ]] . '</td>' ;
} else {
echo '<td>' . $lang [ 'srv_inv_send_who_table_list_deleted' ] . '</td>' ;
}
echo '</tr>' ;
$cnt ++ ;
}
echo '</table>' ;
echo '</form>' ;
echo '</div>' ;
}
}
if ( $cnt == 0 ) {
# ni respondentov
echo $_msg ;
}
}
function selectSendToNoEmailing ( $send_type = 0 , $checkboxes = array ()) {
global $lang , $site_url , $global_user_id ;
if (( int ) $this -> surveySettings [ 'active' ] !== 1 ) {
#anketa ni aktivna, ne pustimo pošiljanja
# aktivnost
$activity = SurveyInfo :: getSurveyActivity ();
$_last_active = end ( $activity );
echo $lang [ 'srv_inv_error9' ];
echo '<a href="#" onclick="anketa_active(\'' . $this -> sid . '\',\'' . ( int ) $this -> surveySettings [ 'active' ] . '\'); return false;" title="' . $lang [ 'srv_anketa_noactive' ] . '">' ;
if (( int ) $_last_active > 0 ) {
# anketa je zaključena
echo ' <span id="srv_inactive">' . $lang [ 'srv_inv_activate_survey_here' ] . '</span>' ;
} else {
# anketa je neaktivna
echo ' <span id="srv_inactive">' . $lang [ 'srv_inv_activate_survey_here' ] . '</span>' ;
}
echo '</a>' ;
} else {
# anketa je aktivna lahko pošiljamo
$sql_string = " SELECT comment FROM srv_invitations_messages WHERE ank_id = ' $this->sid ' AND isdefault='1' " ;
$sql_query = sisplet_query ( $sql_string );
list ( $comment ) = mysqli_fetch_row ( $sql_query );
$_msg = '<span>' . $lang [ 'srv_invitation_note3' ] . '</span>' ;
if ( isset ( $_POST [ 'send_type' ])) {
$send_type = ( int ) $_POST [ 'send_type' ];
}
$checkboxes = array ();
if ( isset ( $_POST [ 'checkboxes' ]) && trim ( $_POST [ 'checkboxes' ]) != '' ) {
$checkboxes = explode ( ',' , $_POST [ 'checkboxes' ]);
}
$source_type = ( int ) $_POST [ 'source_type' ];
$source_lists = trim ( $_POST [ 'source_lists' ]);
$respondents = $this -> getRespondents2Send ( $send_type , $checkboxes , $source_type , $source_lists , $noEmailing = 1 );
#koliko strani imamp
$numRespondents = count ( $respondents );
$pages = ceil ( $numRespondents / $this -> rec_send_page_limit );
if ( count ( $respondents ) > 0 ) {
echo '<div class="inv_send_mail_send_type">' ;
// Način pošiljanja
$noEmailingType = SurveySession :: get ( 'inv_noEmailing_type' );
echo '<span class="bold">' ;
echo $lang [ 'srv_inv_message_type_external' ] . ': </span>' ;
if ( $noEmailingType == 1 )
echo $lang [ 'srv_inv_message_noemailing_type2' ];
elseif ( $noEmailingType == 2 )
echo $lang [ 'srv_inv_message_noemailing_type3' ];
else
echo $lang [ 'srv_inv_message_noemailing_type1' ];
echo '<br /><br />' ;
echo '<form id="frm_do_send" action="' . $site_url . 'admin/survey/index.php?anketa=' . $this -> sid . '&a=' . A_INVITATIONS . '&m=send_mail&noemailing=1" method="post">' ;
// Komentar pri posiljanju
echo '<label>' . $lang [ 'srv_inv_send_comment' ] . ' ' . Help :: display ( 'srv_inv_sending_comment' ) . ': ' ;
echo '<input type="text" name="comment" id="msg_comment" value="' . $comment . '">' ;
echo '</label><br class="clr"><br />' ;
// Pobrisi podvojene maile
echo '<label><input type="checkbox" id="dont_send_duplicated" name="dont_send_duplicated" checked="checked">' . $lang [ 'srv_inv_send_remove_duplicates' ] . '</label></span> ' . Help :: display ( 'srv_inv_sending_double' ) . '<br />' ;
// Gumb poslji
echo '<br /><div id="inv_send_mail_btn"><span class="buttonwrapper floatLeft"><a href="#" onclick="$(\'#fade\').fadeTo(\'slow\', 1); $(\'#inv_send_note\').fadeTo(\'slow\',1); $(\'#frm_do_send\').submit();" class="ovalbutton ovalbutton_orange" ><span>' . $lang [ 'srv_inv_nav_send_noEmailing' ] . '</span></a></span>' ;
echo '<br class="clr"/><br /></div>' ;
echo '</div>' ;
// Seznam mailov na katere bomo poslali
if (( int ) $this -> invitationAdvancedConditionId > 0 )
{
#if (is_array($this->user_inv_ids) && count($this->user_inv_ids) > 0)
{
echo '<span class="floatLeft">' ;
$scp = new SurveyCondition ( $this -> sid );
$note = $scp -> getConditionString ( $this -> invitationAdvancedConditionId );
echo $note ;
#$scp -> displayConditionNote($this->invitationAdvancedConditionId );
echo '</span>' ;
echo '<br/>' ;
}
}
# izpišemo seznam e-mailov in dodamo checkboxe
echo '<div class="strong">' . $lang [ 'srv_inv_potencial_respondents' ] . ' <span id="inv_num_recipients">' . count ( $respondents ) . '</span></div>' ;
# izpišemo opozorilo kadar pošiljamo na več kakor 5000 naslovov
$text = ( Common :: checkModule ( 'gorenje' )) ? $lang [ 'srv_inv_potencial_respondents_limit_gorenje' ] : $lang [ 'srv_inv_potencial_respondents_limit' ];
echo '<div id="inv_send_mail_limit" class="red strong' . ( count ( $respondents ) > 4999 ? '' : ' hidden' ) . '">' . $text . '</div>' ;
echo '<input type="hidden" name="anketa" id="anketa" value="' . $this -> sid . '">' ;
# da preprečimo večkratno pošiljanje
session_start ();
list ( $short , $long ) = $this -> generateCode ();
$_SESSION [ 'snd_inv_token' ][ $this -> sid ] = $long ;
echo '<input type="hidden" name="_token" id="_token" value="' . $long . '">' ;
if ( $pages > 1 || $numRespondents > REC_ON_SEND_PAGE ) {
echo '<div id="inv_pagination_content">' ;
$this -> displaySendPagination ( $numRespondents );
echo '</div>' ;
}
# polovimo sezname
$lists = array ();
2021-02-22 15:26:32 +01:00
$sql_string = " SELECT pid, name,comment FROM srv_invitations_recipients_profiles WHERE uid in(' " . $global_user_id . " ') " ;
2020-08-14 13:36:36 +02:00
$sql_query = sisplet_query ( $sql_string );
while ( $sql_row = mysqli_fetch_assoc ( $sql_query )) {
$lists [ $sql_row [ 'pid' ]] = $sql_row [ 'name' ];
}
$lists [ '-1' ] = $lang [ 'srv_invitation_new_templist' ];
$lists [ '0' ] = $lang [ 'srv_invitation_new_templist_author' ];
echo '<div id="inv_send_note">Pošiljam . . . Prosimo počakajte.</div>' ;
echo '<br/><table id="tbl_recipients_send_list">' ;
echo '<tr>' ;
echo '<th class="tbl_icon"><input type="checkbox" checked="checked" onclick="invTogleSend(this);">' . '</th>' ;
echo '<th title="' . $lang [ 'srv_inv_recipients_email' ] . '">' . $lang [ 'srv_inv_recipients_email' ] . '</th>' ;
echo '<th title="' . $lang [ 'srv_inv_recipients_firstname' ] . '">' . $lang [ 'srv_inv_recipients_firstname' ] . '</th>' ;
echo '<th title="' . $lang [ 'srv_inv_recipients_last_status' ] . '">' . $lang [ 'srv_inv_recipients_last_status' ] . '</th>' ;
echo '<th title="' . $lang [ 'srv_inv_recipients_last_status' ] . '">' . $lang [ 'srv_inv_recipients_list_id' ] . '</th>' ;
echo '</tr>' ;
$cnt = 1 ;
foreach ( $respondents as $pass => $respondent ) {
echo '<tr' . ( $cnt > $this -> rec_send_page_limit ? ' class="displayNone"' : '' ) . '>' ;
echo '<td><input type="checkbox" name="rids[]" value="' . $respondent [ 'id' ] . '" checked="checekd"></td>' ;
echo '<td>' . $respondent [ 'email' ] . '</td>' ;
echo '<td>' . $respondent [ 'firstname' ] . '</td>' ;
echo '<td>' . $lang [ 'srv_userstatus_' . $respondent [ 'status' ]] . ' (' . $respondent [ 'status' ] . ')' . '</td>' ;
if ( $lists [ $respondent [ 'list_id' ]] != '' ) {
echo '<td>' . $lists [ $respondent [ 'list_id' ]] . '</td>' ;
} else {
echo '<td>' . $lang [ 'srv_inv_send_who_table_list_deleted' ] . '</td>' ;
}
echo '</tr>' ;
$cnt ++ ;
}
echo '</table>' ;
echo '</form>' ;
}
}
if ( $cnt == 0 ) {
# ni respondentov
echo $_msg ;
}
}
function mailToSourceChange () {
$this -> displayMailToSourceLists (( int ) $_POST [ 'source_type' ]);
}
function viewAarchive () {
global $lang ;
echo '<div id="div_archive_content">' ;
#preglej prejemnike
#echo '<h2>'.$lang['srv_inv_heading_step5'].$lang['srv_inv_archive_heading'].'</h2>';
//echo '<h2>'.$lang['srv_inv_archive_heading'].'</h2>';
# normalno pošiljanje
$sql_string = " SELECT sia.*, u.name, u.surname, u.email, DATE_FORMAT(sia.date_send,'%d.%m.%Y') AS ds, DATE_FORMAT(sia.date_send,'%T') AS hs FROM srv_invitations_archive AS sia LEFT JOIN users AS u ON sia.uid = u.id WHERE ank_id = ' " . $this -> sid . " ' ORDER BY sia.date_send DESC; " ;
$sql_query = sisplet_query ( $sql_string );
# enostavno pošiljanje na posamezne maile
$SSMI = new SurveySimpleMailInvitation ( $this -> sid );
$simple_recipents = $SSMI -> getRecipients ();
if ( mysqli_num_rows ( $sql_query ) > 0 || count ( $simple_recipents ) > 0 ) {
echo '<h2>' . $lang [ 'srv_archive_invitation' ] . '</h2>' ;
echo '<table id="tbl_archive_list">' ;
echo '<tr>' ;
echo '<th class="tbl_inv_center" title="' . $lang [ 'srv_inv_archive_date_send' ] . '">' . $lang [ 'srv_inv_archive_date_send' ] . '</th>' ;
echo '<th class="tbl_inv_center" title="' . $lang [ 'srv_inv_archive_hour_send' ] . '">' . $lang [ 'srv_inv_archive_hour_send' ] . '</th>' ;
echo '<th title="' . $lang [ 'srv_inv_archive_subject_text' ] . '">' . $lang [ 'srv_inv_archive_naslov' ] . '</th>' ;
echo '<th title="' . $lang [ 'srv_inv_archive_subject_text' ] . '">' . $lang [ 'srv_inv_archive_subject_text' ] . '</th>' ;
#echo '<th title="'.$lang['srv_inv_archive_body_text'].'">'.$lang['srv_inv_archive_body_text'].'</th>';
echo '<th class="tbl_inv_center" title="' . $lang [ 'srv_inv_message_type' ] . '">' . $lang [ 'srv_inv_message_type' ] . '</th>' ;
echo '<th class="tbl_inv_center" title="' . $lang [ 'srv_inv_archive_cnt_succsess' ] . '">' . $lang [ 'srv_inv_archive_cnt_succsess' ] . ' ' . Help :: display ( 'srv_inv_archive_sent' ) . '</th>' ;
echo '<th class="tbl_inv_center" title="' . $lang [ 'srv_inv_archive_cnt_error' ] . '">' . $lang [ 'srv_inv_archive_cnt_error' ] . '</th>' ;
echo '<th title="' . $lang [ 'srv_inv_archive_sender' ] . '">' . $lang [ 'srv_inv_archive_sender' ] . '</th>' ;
echo '<th title="' . $lang [ 'srv_inv_archive_comment' ] . '">' . $lang [ 'srv_inv_archive_comment' ] . '</th>' ;
#echo '<th > </th>';
echo '</tr>' ;
while ( $row = mysqli_fetch_assoc ( $sql_query )) {
echo '<tr>' ;
// Datum
echo '<td class="tbl_inv_center">' . $row [ 'ds' ] . '</td>' ;
// Ura
echo '<td class="tbl_inv_center">' . $row [ 'hs' ] . '</td>' ;
// Email sporocilo
echo '<td class="tbl_inv_lef inv_arch_subject" title="' . $row [ 'naslov' ] . '">' ;
echo '<a href="#" onclick="inv_arch_edit_details(\'' . $row [ 'id' ] . '\'); return false;">' . $row [ 'naslov' ] . '</a>' ;
echo '</td>' ;
// Subject
echo '<td class="tbl_inv_lef inv_arch_subject" title="' . $row [ 'naslov' ] . '">' ;
echo $row [ 'subject_text' ];
echo '</td>' ;
#echo '<td class="tbl_inv_left inv_arch_text" title="'.$row['body_text'].'">'.$row['body_text'].'</td>';
// Nacin posiljanja (email, posta, sms...)
echo '<td class="tbl_inv_center">' ;
if ( $row [ 'tip' ] == '0' )
echo '<span>' . $lang [ 'srv_inv_message_noemailing_type1' ] . '</span>' ;
elseif ( $row [ 'tip' ] == '1' )
echo '<span>' . $lang [ 'srv_inv_message_noemailing_type2' ] . '</span>' ;
elseif ( $row [ 'tip' ] == '2' )
echo '<span>' . $lang [ 'srv_inv_message_noemailing_type3' ] . '</span>' ;
else
echo '<span>' . $lang [ 'email' ] . '</span>' ;
echo '</td>' ;
# uspešno poslani
echo '<td class="tbl_inv_center">' ;
if (( int ) $row [ 'cnt_succsess' ] > 0 ) {
echo '<span class="as_link as_view strong" id="inv_arch_1_' . $row [ 'id' ] . '" data-archtype="succ">' . $row [ 'cnt_succsess' ] . '</span>' ;
} else {
echo '<span>' . $row [ 'cnt_succsess' ] . '</span>' ;
}
echo '</td>' ;
# neuspešno poslani
echo '<td class="tbl_inv_center">' ;
if (( int ) $row [ 'cnt_error' ] > 0 ) {
echo '<span class="as_link as_view strong" id="inv_arch_0_' . $row [ 'id' ] . '" data-archtype="err">' . $row [ 'cnt_error' ] . '</span>' ;
} else {
echo '<span>' . $row [ 'cnt_error' ] . '</span>' ;
}
echo '</td>' ;
# poslal
$avtor = array ();
if ( trim ( $row [ 'name' ])) {
$avtor [] = trim ( $row [ 'name' ]);
}
if ( trim ( $row [ 'surname' ])) {
$avtor [] = trim ( $row [ 'surname' ]);
}
echo '<td>' ;
echo '<span title="' . ( isset ( $row [ 'email' ]) ? $row [ 'email' ] : implode ( ' ' , $avtor )) . '">' . implode ( ' ' , $avtor ) . '</span>' ;
echo '</td>' ;
# komentar
echo '<td>' ;
echo '<a href="#" onclick="inv_arch_edit_details(\'' . $row [ 'id' ] . '\'); return false;">' . $row [ 'comment' ];
echo '</td>' ;
echo '</tr>' ;
}
echo '</tr>' ;
echo '</table>' ;
# dodamo simpl pošiljanje
if ( count ( $simple_recipents ) > 0 ) {
if ( mysqli_num_rows ( $sql_query ) > 0 ) {
echo '<br>' ;
echo '<br>' ;
}
echo '<b>Prejemniki enostavnih email vabil:</b>' ;
echo '<br>' ;
echo '<br>' ;
echo '<table id="tbl_archive_list">' ;
echo '<tr>' ;
echo '<th class="tbl_inv_center" title="' . $lang [ 'srv_inv_archive_date_send' ] . '">' . $lang [ 'srv_inv_archive_date_send' ] . '</th>' ;
echo '<th class="tbl_inv_center" title="' . $lang [ 'srv_inv_archive_email_address' ] . '">' . $lang [ 'srv_inv_archive_email_address' ] . '</th>' ;
echo '<th class="tbl_inv_center" title="' . $lang [ 'srv_inv_archive_status' ] . '">' . $lang [ 'srv_inv_archive_status' ] . '</th>' ;
echo '<th title="' . $lang [ 'srv_inv_archive_sender' ] . '">' . $lang [ 'srv_inv_archive_sender' ] . '</th>' ;
echo '</tr>' ;
foreach ( $simple_recipents as $row ) {
echo '<tr>' ;
echo '<td>' . $row [ 'send_time' ] . '</td>' ;
echo '<td>' . $row [ 'email' ] . '</td>' ;
echo '<td class="tbl_inv_center">' . $row [ 'state' ] . '</td>' ;
# poslal
$avtor = array ();
if ( trim ( $row [ 'name' ])) {
$avtor [] = trim ( $row [ 'name' ]);
}
if ( trim ( $row [ 'surname' ])) {
$avtor [] = trim ( $row [ 'surname' ]);
}
echo '<td>' ;
echo '<span title="' . ( isset ( $row [ 'adminmail' ]) ? $row [ 'adminmail' ] : implode ( ' ' , $avtor )) . '">' . implode ( ' ' , $avtor ) . '</span>' ;
echo '</td>' ;
echo '</tr>' ;
}
echo '</table>' ;
}
} else {
echo '<fieldset>' ;
echo '<legend>' . $lang [ 'srv_archive_invitation' ] . '</legend>' ;
echo $lang [ 'srv_invitation_note4' ] . '' ;
echo '</fieldset>' ;
}
echo '</div>' ; # id="div_archive_content">';
echo '<br class="clr">' ;
}
function sendMail () {
global $lang , $site_path , $site_url , $global_user_id , $lastna_instalacija ;
Common :: getInstance () -> Init ( $this -> sid );
2021-03-11 16:10:32 +01:00
// Preverimo ce je vklopljen modul za volitve
$voting = SurveyInfo :: getInstance () -> checkSurveyModule ( 'voting' );
2020-08-14 13:36:36 +02:00
if ( isset ( $_POST [ 'rids' ])) {
session_start ();
# preverimo token, da ne pošiljamo večkrat
if ( isset ( $_SESSION [ 'snd_inv_token' ][ $this -> sid ])
&& isset ( $_POST [ '_token' ])
&& $_SESSION [ 'snd_inv_token' ][ $this -> sid ] != null
&& $_SESSION [ 'snd_inv_token' ][ $this -> sid ] == isset ( $_POST [ '_token' ])){
// na send smo kliknili samo 1x
unset ( $_SESSION [ 'snd_inv_token' ][ $this -> sid ]);
session_commit ();
$dont_send_duplicated = false ;
if ( isset ( $_POST [ 'dont_send_duplicated' ]) && $_POST [ 'dont_send_duplicated' ] == 'on' ) {
$dont_send_duplicated = true ;
}
$rids = $_POST [ 'rids' ];
$return = array ();
$return [ 'error' ] = '0' ;
$return [ 'msg' ] = '<div class="inv_send_message">' . $lang [ 'srv_invitation_note5' ] . '</div>' ;
// Shranimo komentar h posiljanju
if ( isset ( $_POST [ 'comment' ]) && $_POST [ 'comment' ] != '' ){
$comment = $_POST [ 'comment' ];
$sqlC = sisplet_query ( " UPDATE srv_invitations_messages SET comment=' $comment ' WHERE ank_id=' $this->sid ' AND isdefault='1' " );
}
if ( $this -> checkDefaultMessage () == false ) {
echo '<span class="inv_error_note">' ;
echo $lang [ 'srv_invitation_note6' ];
echo '</span>' ;
2020-11-23 10:54:27 +01:00
exit ();
}
else {
// polovimo sporočilo in prejemnike
$sql_query_m = sisplet_query ( " SELECT id, subject_text, body_text, reply_to, isdefault, comment, naslov, url FROM srv_invitations_messages WHERE ank_id = ' $this->sid ' AND isdefault='1' " );
if ( mysqli_num_rows ( $sql_query_m ) > 0 ) {
2020-08-14 13:36:36 +02:00
$sql_row_m = mysqli_fetch_assoc ( $sql_query_m );
2020-11-23 10:54:27 +01:00
}
else {
2020-08-14 13:36:36 +02:00
#nimamo še vsebine sporočila skreiramo privzeto.
echo '<span class="inv_error_note">' ;
echo $lang [ 'srv_invitation_note6' ];
echo '</span>' ;
2020-11-23 10:54:27 +01:00
exit ();
2020-08-14 13:36:36 +02:00
}
}
$subject_text = $sql_row_m [ 'subject_text' ];
$body_text = $sql_row_m [ 'body_text' ];
$msg_url = $sql_row_m [ 'url' ];
2020-11-23 10:54:27 +01:00
$message_naslov = $sql_row_m [ 'naslov' ];
// naslov za odgovor je avtor ankete
2020-08-14 13:36:36 +02:00
if ( $this -> validEmail ( $sql_row_m [ 'reply_to' ])) {
$reply_to = $sql_row_m [ 'reply_to' ];
2020-11-23 10:54:27 +01:00
}
else {
2020-08-14 13:36:36 +02:00
$reply_to = Common :: getInstance () -> getReplyToEmail ();
2020-11-23 10:54:27 +01:00
}
// prejeminki besedila
$sql_query = sisplet_query ( " SELECT id, firstname, lastname, email, password, password, cookie, phone, salutation, custom, relation
FROM srv_invitations_recipients
WHERE ank_id = '".$this->sid."' AND deleted = '0' AND id IN ( " .implode(',', $rids ). " )
ORDER BY id
" );
// 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->sid."' AND variable IN ( " . " '" . implode("' , '",$this->inv_variables)."' )
ORDER BY g . vrstni_red , s . vrstni_red
" );
2020-08-14 13:36:36 +02:00
$sys_vars = array ();
$sys_vars_ids = array ();
2020-11-23 10:54:27 +01:00
while ( $row = mysqli_fetch_assoc ( $qrySistemske )) {
2020-08-14 13:36:36 +02:00
$sys_vars [ $row [ 'id' ]] = array ( 'id' => $row [ 'id' ], 'variable' => $row [ 'variable' ], 'naslov' => $row [ 'naslov' ]);
$sys_vars_ids [] = $row [ 'id' ];
}
2020-11-23 10:54:27 +01:00
$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 " );
2020-08-14 13:36:36 +02:00
while ( $row = mysqli_fetch_assoc ( $sqlVrednost )) {
2020-11-23 10:54:27 +01:00
// Ce gre za odnos imamo radio
2020-08-14 13:36:36 +02:00
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' ];
}
}
# zakeširamo user_id za datapiping
$arryDataPiping = array ();
2021-03-11 16:10:32 +01:00
$qryDataPiping = sisplet_query ( " SELECT id, inv_res_id FROM srv_user WHERE ank_id=' $this->sid ' AND inv_res_id IS NOT NULL " );
2020-08-14 13:36:36 +02:00
while ( list ( $dpUid , $dpInvResId ) = mysqli_fetch_row ( $qryDataPiping )) {
if (( int ) $dpInvResId > 0 && ( int ) $dpUid > 0 ) {
$arryDataPiping [ $dpInvResId ] = ( int ) $dpUid ;
}
2020-11-23 10:54:27 +01:00
}
2020-08-14 13:36:36 +02:00
# array za rezultate
$send_ok = array ();
$send_ok_ids = array ();
$send_users_data = array ();
$send_error = array ();
$send_error_ids = array ();
# če mamo SEO
$nice_url = SurveyInfo :: getSurveyLink ();
# zloopamo skozi prejemnike in personaliziramo sporočila in jih pošljemo
$date_sent = date ( " Y-m-d H:i:s " );
$numRows = mysqli_num_rows ( $sql_query );
# če pošiljamo na večje število reposndentov obvestimo info@1ka.si
if ( $numRows > NOTIFY_INFO1KA && ( ! isset ( $lastna_instalacija ) || $lastna_instalacija == false )) {
// Gorenje tega nima
if ( ! Common :: checkModule ( 'gorenje' )){
global $site_url , $global_user_id ;
2020-11-23 10:54:27 +01:00
$sqlinfo_query = sisplet_query ( " SELECT email, name, surname FROM users WHERE id = ' " . $global_user_id . " ' " );
2020-08-14 13:36:36 +02:00
list ( $infoEmail , $infoName , $infoSurname ) = mysqli_fetch_row ( $sqlinfo_query );
2020-11-23 10:54:27 +01:00
$infourl = '<a href="' . $site_url . 'admin/survey/index.php?anketa=' . $this -> sid . '">anketi</a>' ;
2020-08-14 13:36:36 +02:00
$format = $lang [ 'srv_inv_send_finish_note' ];
$info1ka_mass_email_note = sprintf ( $format , $infoName , $infoSurname , $infoEmail , $infourl , $numRows );
2020-11-23 10:54:27 +01:00
try {
2020-08-14 13:36:36 +02:00
$MA = new MailAdapter ( $this -> sid , $type = 'admin' );
$MA -> addRecipients ( 'info@1ka.si' );
$resultX = $MA -> sendMail ( $info1ka_mass_email_note , 'Masovno pošiljanje vabil (poslanih več kot ' . NOTIFY_INFO1KA . ')' );
}
2020-11-23 10:54:27 +01:00
catch ( Exception $e ){
2020-08-14 13:36:36 +02:00
}
}
}
2020-11-23 10:54:27 +01:00
// Pripravimo arhiv pošiljanj, da dobimo arch_id
$sql_query_all = sisplet_query ( " SELECT count(*) FROM srv_invitations_recipients WHERE ank_id = ' " . $this -> sid . " ' AND deleted = '0' " );
2020-08-14 13:36:36 +02:00
list ( $count_all ) = mysqli_fetch_row ( $sql_query_all );
2020-11-19 12:18:05 +01:00
$archive_naslov = 'mailing_' . date ( " d.m.Y " ) . ', ' . date ( " H:i:s " );
2020-11-23 10:54:27 +01:00
$sqlQuery = sisplet_query ( " INSERT INTO srv_invitations_archive
( id , ank_id , date_send , subject_text , body_text , uid , comment , naslov , rec_in_db )
VALUES
( NULL , '$this->sid' , '$date_sent' , '".addslashes($subject_text)."' , '".addslashes($body_text)."' , '$global_user_id' , '$comment' , '$archive_naslov' , '$count_all' )
" );
2020-08-14 13:36:36 +02:00
$arch_id = mysqli_insert_id ( $GLOBALS [ 'connect_db' ]);
$duplicated = array ();
while ( $sql_row = mysqli_fetch_assoc ( $sql_query )) {
2020-11-23 10:54:27 +01:00
2020-08-14 13:36:36 +02:00
$password = $sql_row [ 'password' ];
$email = $sql_row [ 'email' ];
if ( $dont_send_duplicated == true && isset ( $duplicated [ $email ])) {
$duplicated [ $email ] ++ ;
continue ;
2020-11-23 10:54:27 +01:00
}
2020-08-14 13:36:36 +02:00
$duplicated [ $email ] = 1 ;
2020-11-23 10:54:27 +01:00
$individual = ( int ) $this -> surveySettings [ 'individual_invitation' ];
if ( ( $individual == 1 && trim ( $email ) != '' && trim ( $password ) != '' ) || ( $individual == 0 && trim ( $email ) != '' ) ){
2020-08-14 13:36:36 +02:00
2020-11-23 10:54:27 +01:00
// odvisno ali imamo url za jezik.
2020-08-14 13:36:36 +02:00
if ( $msg_url != null && trim ( $msg_url ) != '' ) {
$url = $msg_url . ( $individual == 1 ? '?code=' . $password : '' );
2020-11-23 10:54:27 +01:00
}
else {
2020-08-14 13:36:36 +02:00
$url = $nice_url . ( $individual == 1 ? '&code=' . $password : '' );
}
$url .= '&ai=' . ( int ) $arch_id ;
2020-11-23 10:54:27 +01:00
// odjava
2020-08-14 13:36:36 +02:00
$unsubscribe = $site_url . 'admin/survey/unsubscribe.php?anketa=' . $this -> sid . '&code=' . $password ;
$user_body_text = str_replace (
array (
'#URL#' ,
'#URLLINK#' ,
'#UNSUBSCRIBE#' ,
'#FIRSTNAME#' ,
'#LASTNAME#' ,
'#EMAIL#' ,
'#CODE#' ,
'#PASSWORD#' ,
'#PHONE#' ,
'#SALUTATION#' ,
'#CUSTOM#' ,
'#RELATION#' ,
),
array (
'<a href="' . $url . '">' . $url . '</a>' ,
$url ,
'<a href="' . $unsubscribe . '">' . $lang [ 'user_bye_hl' ] . '</a>' ,
$sql_row [ 'firstname' ],
$sql_row [ 'lastname' ],
$sql_row [ 'email' ],
$sql_row [ 'password' ],
$sql_row [ 'password' ],
$sql_row [ 'phone' ],
$sql_row [ 'salutation' ],
$sql_row [ 'custom' ],
$sql_row [ 'relation' ],
),
$body_text
);
2020-11-23 10:54:27 +01:00
// naredimo DataPiping;
2020-08-14 13:36:36 +02:00
if ( isset ( $arryDataPiping [ $sql_row [ 'id' ]])) {
$user_body_text = Common :: getInstance () -> dataPiping ( $user_body_text , $arryDataPiping [ $sql_row [ 'id' ]], 0 );
}
$resultX = null ;
2020-11-23 10:54:27 +01:00
try {
2020-08-14 13:36:36 +02:00
$MA = new MailAdapter ( $this -> sid , $type = 'invitation' );
$MA -> addRecipients ( $email );
$resultX = $MA -> sendMail ( $user_body_text , $subject_text );
}
2020-11-23 10:54:27 +01:00
catch ( Exception $e ){
2020-08-14 13:36:36 +02:00
// todo fajn bi bilo zalogirat kaj se dogaja
$__error = $e -> getMessage ();
$__errStack = $e -> getTraceAsString ();
}
$_user_data = $sql_row ;
if ( $resultX ) {
$send_ok [] = $email ;
$send_ok_ids [] = $sql_row [ 'id' ];
$_user_data [ 'status' ] = 1 ;
# poslalo ok
2020-11-23 10:54:27 +01:00
}
else {
2020-08-14 13:36:36 +02:00
// ni poslalo
$send_error [] = $email ;
$send_error_ids [] = $sql_row [ 'id' ];
$_user_data [ 'status' ] = 2 ;
}
2020-11-23 10:54:27 +01:00
$send_users_data [] = $_user_data ;
2020-08-14 13:36:36 +02:00
2020-11-23 10:54:27 +01:00
// updejtamo userja da mu je bilo poslano - PO NOVEM TO DELAMO SPROTI
if ( count ( $send_ok_ids ) > 0 ) {
2021-03-24 09:25:14 +01:00
$sqlQuery = sisplet_query ( " UPDATE srv_invitations_recipients SET sent='1', date_sent=' " . $date_sent . " ' WHERE id IN ( " . implode ( ',' , $send_ok_ids ) . " ) " );
2020-11-23 10:54:27 +01:00
if ( ! $sqlQuery ) {
$error = mysqli_error ( $GLOBALS [ 'connect_db' ]);
}
// statuse popravimo samo če vabilo še ni bilo poslano ali je bila napaka
2021-03-24 09:25:14 +01:00
$sqlQuery = sisplet_query ( " UPDATE srv_invitations_recipients SET last_status='1' WHERE id IN ( " . implode ( ',' , $send_ok_ids ) . " ) AND last_status IN ('0','2') " );
2020-11-23 10:54:27 +01:00
if ( ! $sqlQuery ) {
$error = mysqli_error ( $GLOBALS [ 'connect_db' ]);
}
2021-03-24 09:25:14 +01:00
// 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->sid."'
" );
if ( ! $sqlQuery ) {
$error = mysqli_error ( $GLOBALS [ 'connect_db' ]);
}
}
2020-11-23 10:54:27 +01:00
}
2020-08-14 13:36:36 +02:00
2020-11-23 10:54:27 +01:00
# updejtamo status za errorje
if ( count ( $send_error_ids ) > 0 ) {
$sqlQuery = sisplet_query ( " UPDATE srv_invitations_recipients SET last_status = GREATEST(last_status,2) WHERE id IN ( " . implode ( ',' , $send_error_ids ) . " ) AND last_status IN ('0') " );
if ( ! $sqlQuery ) {
$error = mysqli_error ( $GLOBALS [ 'connect_db' ]);
}
}
// če mamo personalizirana email vabila, userje dodamo v bazo
if ( $individual == 1 ) {
// dodamo še userja v srv_user da je kompatibilno s staro logiko
$strInsertDataText = array ();
$strInsertDataVrednost = array ();
2021-03-11 16:10:32 +01:00
// Pri volitvah zaradi anonimizacije ignoriramo vse identifikatorje
if ( $voting ){
$_r = sisplet_query ( " INSERT INTO srv_user
2021-03-16 10:11:08 +01:00
( ank_id , cookie , pass , last_status , inv_res_id )
2021-03-11 16:10:32 +01:00
VALUES
2021-03-16 10:11:08 +01:00
( '".$this->sid."' , '".$_user_data[' cookie ']."' , '".$_user_data[' password ']."' , '".$_user_data[' status ']."' , '-1' ) ON DUPLICATE KEY UPDATE cookie = '".$_user_data[' cookie ']."' , pass = '".$_user_data[' password ']."'
2021-03-11 16:10:32 +01:00
" );
2021-03-30 12:58:34 +02:00
// 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 -> sid . " ' " );
2021-03-11 16:10:32 +01:00
}
else {
$_r = sisplet_query ( " INSERT INTO srv_user
( ank_id , email , cookie , pass , last_status , time_insert , inv_res_id )
VALUES
( '".$this->sid."' , '".$_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 ']."'
" );
}
2020-11-23 10:54:27 +01:00
$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 = $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 . " ') " ;
}
}
}
else {
// lahko da user že obstaja in je šlo za duplicated keys
}
2021-03-11 16:10:32 +01:00
// 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 );
}
2020-11-23 10:54:27 +01:00
}
}
2020-08-14 13:36:36 +02:00
}
}
2020-11-23 10:54:27 +01:00
// dodajmo še userje v povezovalno tabelo (arhiv)
2020-08-14 13:36:36 +02:00
if ( $arch_id > 0 ) {
2020-11-23 10:54:27 +01:00
// updejtamo še tabelo arhivov
$sqlQuery = sisplet_query ( " UPDATE srv_invitations_archive SET cnt_succsess=' " . count ( $send_ok_ids ) . " ', cnt_error=' " . count ( $send_error_ids ) . " ' WHERE id =' $arch_id ' " );
2020-08-14 13:36:36 +02:00
if ( ! $sqlQuery ) {
$error = mysqli_error ( $GLOBALS [ 'connect_db' ]);
}
2020-11-23 10:54:27 +01:00
// za arhive
2020-08-14 13:36:36 +02:00
$_archive_recipients = array ();
2020-11-23 10:54:27 +01:00
// za tracking
2020-08-14 13:36:36 +02:00
$_tracking = array ();
if ( count ( $send_ok_ids ) > 0 ) {
foreach ( $send_ok_ids AS $id ) {
$_archive_recipients [] = " (' $arch_id ',' $id ','1') " ;
#status 1=pošta poslana
$_tracking [] = " (' $arch_id ',NOW(),' $id ','1') " ;
}
2020-11-23 10:54:27 +01:00
}
2020-08-14 13:36:36 +02:00
if ( count ( $send_error_ids ) > 0 ) {
foreach ( $send_error_ids AS $id ) {
$_archive_recipients [] = " (' $arch_id ',' $id ','0') " ;
#status 2=pošta - napaka
$_tracking [] = " (' $arch_id ',NOW(),' $id ','2') " ;
}
}
if ( count ( $_archive_recipients ) > 0 ) {
$sqlString = 'INSERT INTO srv_invitations_archive_recipients (arch_id,rec_id,success) VALUES ' ;
$sqlString .= implode ( ', ' , $_archive_recipients );
$sqlQuery = sisplet_query ( $sqlString );
2020-11-23 10:54:27 +01:00
}
2020-08-14 13:36:36 +02:00
if ( count ( $_tracking ) > 0 ) {
$sqlStrTracking = " INSERT INTO srv_invitations_tracking (inv_arch_id, time_insert, res_id, status) VALUES " ;
$sqlStrTracking .= implode ( ', ' , $_tracking );
$sqlQueryTracking = sisplet_query ( $sqlStrTracking );
}
}
2020-11-23 10:54:27 +01:00
// Izpis rezultatov - errors and successes
2020-08-14 13:36:36 +02:00
if ( count ( $send_error ) > 0 ) {
$return [ 'error' ] = '1' ;
$return [ 'msg' ] = '<div class="inv_send_message">' . $lang [ 'srv_invitation_note7' ] . count ( $send_error ) . '</div>' ;
2020-11-23 10:54:27 +01:00
}
else if ( count ( $send_ok ) > 0 ) {
list ( $name , $surname , $email ) = mysqli_fetch_row ( sisplet_query ( " SELECT name, surname,email FROM users WHERE id=' $global_user_id ' " ));
2020-08-14 13:36:36 +02:00
$who = '' ;
2020-11-23 10:54:27 +01:00
if ( trim ( $name ) != '' ) {
2020-08-14 13:36:36 +02:00
$who = $name ;
2020-11-23 10:54:27 +01:00
}
2020-08-14 13:36:36 +02:00
if ( trim ( $surname ) != '' ) {
if ( $who != '' ) {
$who .= ' ' ;
}
$who .= $surname ;
2020-11-23 10:54:27 +01:00
}
2020-08-14 13:36:36 +02:00
if ( $email != '' ) {
if ( $who != '' ) {
$who .= ' (' . $email . ')' ;
} else {
$who = $email ;
}
}
$return [ 'error' ] = '0' ;
// Uspesno poslano sporocilo
$return [ 'msg' ] = '<br /><span class="bold" style="line-height:30px;">' . $lang [ 'srv_invitation_note8a' ] . '</span><br />' ;
$return [ 'msg' ] .= '<div class="inv_send_message">' ;
$return [ 'msg' ] .= '<table id="inv_send_mail_preview">' ;
$return [ 'msg' ] .= '<tr><th><span>' . $lang [ 'srv_inv_message_draft_content_subject' ] . ':</span></th>' ;
$return [ 'msg' ] .= '<td class="inv_bt">' ;
$return [ 'msg' ] .= '<span>' . $sql_row_m [ 'subject_text' ] . '</span>' ;
$return [ 'msg' ] .= '</td></tr>' ;
$return [ 'msg' ] .= '<tr><th>' . $lang [ 'srv_inv_message_draft_content_body' ] . ':</th>' ;
$return [ 'msg' ] .= '<td>' ;
$return [ 'msg' ] .= '<span class="nl2br">' . ( $sql_row_m [ 'body_text' ]) . '</span>' ;
$return [ 'msg' ] .= '</td></tr>' ;
$return [ 'msg' ] .= '</table>' ;
$return [ 'msg' ] .= '</div>' ;
// Je uporabnik poslal na ...
$return [ 'msg' ] .= sprintf ( $lang [ 'srv_invitation_note8b' ], $who , date ( " d.m.y " , time ()));
$return [ 'msg' ] .= '<span class="bold" style="line-height:30px;">' . sprintf ( $lang [ 'srv_invitation_note8' ], count ( $send_ok )) . '</span><br />' ;
// Arhivi
$return [ 'msg' ] .= '<span class="bold" style="line-height:20px;">' . sprintf ( $lang [ 'srv_invitation_note8c' ], $site_url . 'admin/survey/index.php?anketa=' . $this -> sid . '&a=' . A_INVITATIONS . '&m=view_archive' ) . '</span><br />' ;
// Seznam emailov...
$return [ 'msg' ] .= '<span class="bold" style="line-height:30px;">' . $lang [ 'srv_invitation_note8d' ] . '</span><br />' ;
// Seznam mailov na katere je bilo uspesno poslano
if ( count ( $send_ok ) > 0 ) {
2020-11-23 10:54:27 +01:00
$return [ 'msg' ] .= '<div class="inv_send_message">' ;
2020-08-14 13:36:36 +02:00
foreach ( $send_ok AS $email ) {
$return [ 'msg' ] .= ' ' . $email . '<br/>' ;
2020-11-23 10:54:27 +01:00
}
2020-08-14 13:36:36 +02:00
$return [ 'msg' ] .= '</div>' ;
}
}
else {
$return [ 'error' ] = '0' ;
$return [ 'msg' ] = '<div class="inv_send_message">' . '<strong>' . $lang [ 'srv_invitation_note9' ] . '</strong></div><br/>' ;
}
}
else {
#old session token
$return [ 'msg' ] = '<div class="inv_send_message"><span class="red strong">' . $lang [ 'srv_invitation_note13' ] . '</span>' . '</div>' ;
}
}
else {
#nimamo $rids
$return [ 'msg' ] = '<div class="inv_send_message">' . $lang [ 'srv_invitation_note14' ] . '</div>' ;
}
# popravimo timestamp za regeneracijo dashboarda
Common :: getInstance () -> Init ( $anketa );
Common :: getInstance () -> updateEditStamp ();
#$this->viewAarchive($return['msg']);
$this -> viewSendMailFinish ( $return [ 'msg' ]);
}
function sendMailNoEmailing () {
global $lang , $site_path , $site_url , $global_user_id ;
Common :: getInstance () -> Init ( $this -> sid );
if ( isset ( $_POST [ 'rids' ])) {
session_start ();
# preverimo token, da ne pošiljamo večkrat
if ( isset ( $_SESSION [ 'snd_inv_token' ][ $this -> sid ])
&& isset ( $_POST [ '_token' ])
&& $_SESSION [ 'snd_inv_token' ][ $this -> sid ] != null
&& $_SESSION [ 'snd_inv_token' ][ $this -> sid ] == isset ( $_POST [ '_token' ])) {
2020-11-23 10:54:27 +01:00
# na send smo kliknili samo 1x
2020-08-14 13:36:36 +02:00
unset ( $_SESSION [ 'snd_inv_token' ][ $this -> sid ]);
session_commit ();
$dont_send_duplicated = false ;
if ( isset ( $_POST [ 'dont_send_duplicated' ]) && $_POST [ 'dont_send_duplicated' ] == 'on' ) {
$dont_send_duplicated = true ;
}
$rids = $_POST [ 'rids' ];
$return = array ();
$return [ 'error' ] = '0' ;
$return [ 'msg' ] = '<div class="inv_send_message">' . sprintf ( $lang [ 'srv_invitation_note5_noEmailing' ], $site_url . 'admin/survey/index.php?anketa=' . $this -> sid . '&a=' . A_INVITATIONS . '&m=view_archive' ) . '<br /><br/>' ;
$return [ 'msg' ] .= sprintf ( $lang [ 'srv_invitation_note5_noEmailing2' ], $site_url . 'admin/survey/index.php?anketa=' . $this -> sid . '&a=' . A_INVITATIONS . '&m=view_recipients' ) . '</div>' ;
// Shranimo komentar h posiljanju
if ( isset ( $_POST [ 'comment' ]) && $_POST [ 'comment' ] != '' ){
$comment = $_POST [ 'comment' ];
$sqlC = sisplet_query ( " UPDATE srv_invitations_messages SET comment=' $comment ' WHERE ank_id=' $this->sid ' AND isdefault='1' " );
}
// Preberemo tip posiljanja (navadna posta, sms...)
$noMail_type = SurveySession :: get ( 'inv_noEmailing_type' );
2020-11-23 10:54:27 +01:00
// Pripravimo arhiv pošiljanj, da dobimo arch_id
$sql_query_all = sisplet_query ( " SELECT count(*) FROM srv_invitations_recipients WHERE ank_id = ' " . $this -> sid . " ' AND deleted = '0' " );
2020-08-14 13:36:36 +02:00
list ( $count_all ) = mysqli_fetch_row ( $sql_query_all );
$date_sent = date ( " Y-m-d H:i:s " );
2020-11-19 12:18:05 +01:00
$archive_naslov = 'mailing_' . date ( " d.m.Y " ) . ', ' . date ( " H:i:s " );
2020-08-14 13:36:36 +02:00
// Naslov in body
2020-11-23 10:54:27 +01:00
// polovimo sporočilo in prejemnike
$sql_query_m = sisplet_query ( " SELECT id, subject_text, body_text, reply_to, isdefault, comment, naslov, url FROM srv_invitations_messages WHERE ank_id = ' $this->sid ' AND isdefault='1' " );
2020-08-14 13:36:36 +02:00
if ( mysqli_num_rows ( $sql_query_m ) > 0 ) {
$sql_row_m = mysqli_fetch_assoc ( $sql_query_m );
2020-11-23 10:54:27 +01:00
}
else {
2020-08-14 13:36:36 +02:00
$subject_text = $lang [ 'srv_inv_message_noemailing_subject' ];
$body_text = '' ;
}
$subject_text = $sql_row_m [ 'subject_text' ];
$body_text = $sql_row_m [ 'body_text' ];
$msg_url = $sql_row_m [ 'url' ];
// Vstavimo podatke v arhiv
2020-11-23 10:54:27 +01:00
$sqlQuery = sisplet_query ( " INSERT INTO srv_invitations_archive
( id , ank_id , date_send , subject_text , body_text , tip , uid , comment , naslov , rec_in_db )
VALUES
( NULL , '$this->sid' , '$date_sent' , '".addslashes($subject_text)."' , '".addslashes($body_text)."' , '$noMail_type' , '$global_user_id' , '$comment' , '$archive_naslov' , '$count_all' )
" );
2020-08-14 13:36:36 +02:00
$arch_id = mysqli_insert_id ( $GLOBALS [ 'connect_db' ]);
$duplicated = array ();
2020-11-23 10:54:27 +01:00
// 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->sid."' AND variable IN ( " . " '" . implode("' , '",$this->inv_variables)."' )
ORDER BY g . vrstni_red , s . vrstni_red
" );
2020-08-14 13:36:36 +02:00
$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' ];
2020-11-23 10:54:27 +01:00
}
2020-08-14 13:36:36 +02:00
$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 )) {
2020-11-23 10:54:27 +01:00
// Ce gre za odnos imamo radio
2020-08-14 13:36:36 +02:00
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' ];
}
}
2020-11-23 10:54:27 +01:00
// prejeminki besedila
$sql_query = sisplet_query ( " SELECT id, firstname, lastname, email, password, cookie, phone, salutation, custom, relation
FROM srv_invitations_recipients
WHERE ank_id = '".$this->sid."' AND deleted = '0' AND id IN ( " .implode(',', $rids ). " )
ORDER BY id
" );
2020-08-14 13:36:36 +02:00
while ( $sql_row = mysqli_fetch_assoc ( $sql_query )) {
2020-11-23 10:54:27 +01:00
2020-08-14 13:36:36 +02:00
$password = $sql_row [ 'password' ];
$email = $sql_row [ 'email' ];
if ( $dont_send_duplicated == true && isset ( $duplicated [ $email ]) && $email != '' ) {
$duplicated [ $email ] ++ ;
continue ;
}
$duplicated [ $email ] = 1 ;
$individual = ( int ) $this -> surveySettings [ 'individual_invitation' ];
$_user_data = $sql_row ;
$send_ok [] = $email ;
$send_ok_ids [] = $sql_row [ 'id' ];
$_user_data [ 'status' ] = 1 ;
$send_users_data [] = $_user_data ;
}
2020-11-23 10:54:27 +01:00
// updejtamo userja da mu je bilo poslano
2020-08-14 13:36:36 +02:00
if ( count ( $send_ok_ids ) > 0 ) {
2020-11-23 10:54:27 +01:00
$sqlQuery = sisplet_query ( " UPDATE srv_invitations_recipients SET sent = '1', date_sent = ' " . $date_sent . " ' WHERE id IN ( " . implode ( ',' , $send_ok_ids ) . " ) " );
2020-08-14 13:36:36 +02:00
if ( ! $sqlQuery ) {
$error = mysqli_error ( $GLOBALS [ 'connect_db' ]);
2020-11-23 10:54:27 +01:00
}
// 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') " );
2020-08-14 13:36:36 +02:00
if ( ! $sqlQuery ) {
$error = mysqli_error ( $GLOBALS [ 'connect_db' ]);
}
}
$comment = $_POST [ 'comment' ];
2020-11-23 10:54:27 +01:00
// dodajmo še userje v povezovalno tabelo
2020-08-14 13:36:36 +02:00
if ( $arch_id > 0 ) {
2020-11-23 10:54:27 +01:00
// updejtamo še tabelo arhivov
$sqlQuery = sisplet_query ( " UPDATE srv_invitations_archive SET cnt_succsess=' " . count ( $send_ok_ids ) . " ' WHERE id =' $arch_id ' " );
2020-08-14 13:36:36 +02:00
if ( ! $sqlQuery ) {
$error = mysqli_error ( $GLOBALS [ 'connect_db' ]);
}
# za arhive
$_archive_recipients = array ();
# za tracking
$_tracking = array ();
if ( count ( $send_ok_ids ) > 0 ) {
foreach ( $send_ok_ids AS $id ) {
$_archive_recipients [] = " (' $arch_id ',' $id ','1') " ;
#status 1=pošta poslana
$_tracking [] = " (' $arch_id ',NOW(),' $id ','1') " ;
}
}
if ( count ( $_archive_recipients ) > 0 ) {
$sqlString = 'INSERT INTO srv_invitations_archive_recipients (arch_id,rec_id,success) VALUES ' ;
$sqlString .= implode ( ', ' , $_archive_recipients );
$sqlQuery = sisplet_query ( $sqlString );
}
if ( count ( $_tracking ) > 0 ) {
$sqlStrTracking = " INSERT INTO srv_invitations_tracking (inv_arch_id, time_insert, res_id, status) VALUES " ;
$sqlStrTracking .= implode ( ', ' , $_tracking );
$sqlQueryTracking = sisplet_query ( $sqlStrTracking );
}
}
sisplet_query ( " COMMIT " );
# če mamo personalizirana email vabila, userje dodamo v bazo
if ( $individual == 1 && count ( $send_users_data ) > 0 ) {
# dodamo še userja v srv_user da je kompatibilno s staro logiko
$strInsertDataText = array ();
$strInsertUserbase = array ();
$strInsertUserstatus = array ();
foreach ( $send_users_data AS $user_data ) {
2020-11-23 10:54:27 +01:00
$_r = sisplet_query ( " INSERT INTO srv_user
( ank_id , email , cookie , pass , last_status , time_insert , inv_res_id )
VALUES
( '".$this->sid."' , '".$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 ']."'
" );
2020-08-14 13:36:36 +02:00
$usr_id = mysqli_insert_id ( $GLOBALS [ 'connect_db' ]);
sisplet_query ( " COMMIT " );
if ( $usr_id ) {
# dodamo še srv_userbase in srv userstatus
$strInsertUserbase [] = " (' " . $usr_id . " ','0',NOW(),' " . $global_user_id . " ') " ;
$strInsertUserstatus [] = " (' " . $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' ]];
if ( trim ( $user_data [ $_user_variable ]) != '' && $user_data [ $_user_variable ] != null ) {
$strInsertDataText [] = " (' " . $sid . " ',' " . $spremenljivka [ 'vre_id' ] . " ',' " . trim ( $user_data [ $_user_variable ]) . " ',' " . $usr_id . " ') " ;
}
}
2020-11-23 10:54:27 +01:00
}
else {
2020-08-14 13:36:36 +02:00
// lahko da user že obstaja in je šlo za duplicated keys
}
}
2020-11-23 10:54:27 +01:00
// vstavimo v srv_userbase
2020-08-14 13:36:36 +02:00
if ( count ( $strInsertUserbase ) > 0 ) {
$strInsert = " INSERT INTO srv_userbase (usr_id, tip, datetime, admin_id) VALUES " ;
$strInsert .= implode ( ',' , $strInsertUserbase );
sisplet_query ( $strInsert );
}
2020-11-23 10:54:27 +01:00
// vstavimo v srv_userstatus
2020-08-14 13:36:36 +02:00
if ( count ( $strInsertUserstatus ) > 0 ) {
$strInsert = " INSERT INTO srv_userstatus (usr_id, tip, status, datetime) VALUES " ;
$strInsert .= implode ( ',' , $strInsertUserstatus );
sisplet_query ( $strInsert );
}
2020-11-23 10:54:27 +01:00
// vstavimo v srv_data_text
2020-08-14 13:36:36 +02:00
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 );
}
sisplet_query ( " COMMIT " );
}
if ( count ( $send_ok ) > 0 ) {
2020-11-23 10:54:27 +01:00
list ( $name , $surname , $email ) = mysqli_fetch_row ( sisplet_query ( " SELECT name, surname, email FROM users WHERE id=' $global_user_id ' " ));
$who = '' ;
2020-08-14 13:36:36 +02:00
if ( trim ( $name ) != '' ) {
$who = $name ;
2020-11-23 10:54:27 +01:00
}
2020-08-14 13:36:36 +02:00
if ( trim ( $surname ) != '' ) {
if ( $who != '' ) {
$who .= ' ' ;
}
$who .= $surname ;
2020-11-23 10:54:27 +01:00
}
2020-08-14 13:36:36 +02:00
if ( $email != '' ) {
if ( $who != '' ) {
$who .= ' (' . $email . ')' ;
} else {
$who = $email ;
}
2020-11-23 10:54:27 +01:00
}
2020-08-14 13:36:36 +02:00
$return [ 'error' ] = '0' ;
}
else {
$return [ 'error' ] = '0' ;
$return [ 'msg' ] = '<div class="inv_send_message">' . '<strong>' . $lang [ 'srv_invitation_note9' ] . '</strong></div><br/>' ;
2020-11-23 10:54:27 +01:00
}
}
else {
2020-08-14 13:36:36 +02:00
#old session token
$return [ 'msg' ] = '<div class="inv_send_message"><span class="red strong">' . $lang [ 'srv_invitation_note13' ] . '</span>' . '</div>' ;
}
2020-11-23 10:54:27 +01:00
}
else {
2020-08-14 13:36:36 +02:00
#nimamo $rids
$return [ 'msg' ] = '<div class="inv_send_message">' . $lang [ 'srv_invitation_note14' ] . '</div>' ;
}
# popravimo timestamp za regeneracijo dashboarda
Common :: getInstance () -> Init ( $anketa );
Common :: getInstance () -> updateEditStamp ();
$this -> viewSendMailFinish ( $return [ 'msg' ]);
}
function viewSendMailFinish ( $msg ) {
global $lang , $site_url ;
echo $msg ;
echo '<br class="clr" />' ;
echo '<span class="floatLeft"><div class="buttonwrapper"><a class="ovalbutton ovalbutton_orange" href="' . $site_url . 'admin/survey/index.php?anketa=' . $this -> sid . '&a=' . A_INVITATIONS . '&m=inv_status"><span>' . $lang [ 'srv_inv_nav_email_status' ] . '</span></a></div></span>' ;
}
function uploadRecipients () {
2020-11-25 10:48:02 +01:00
global $lang ;
2020-08-14 13:36:36 +02:00
$errors = array ();
$allowedExtensions = array ( " txt " , " csv " , " dat " );
2020-11-25 10:48:02 +01:00
$_fields = trim ( $_POST [ 'fields' ]);
2020-08-14 13:36:36 +02:00
if ( $_fields != null && $_fields != '' ) {
$fields = explode ( ',' , $_fields );
2020-11-25 10:48:02 +01:00
}
else {
2020-08-14 13:36:36 +02:00
$fields = array ();
}
$file_name = $_FILES [ " recipientsFile " ][ " name " ];
$file_type = $_FILES [ " recipientsFile " ][ " type " ];
$file_size = $_FILES [ " recipientsFile " ][ " size " ] > 0 ? $_FILES [ " recipientsFile " ][ " size " ] / 1024 : 0 ;
$file_tmp = $_FILES [ " recipientsFile " ][ " tmp_name " ];
$okFileType = ( $file_type == 'text/plain' || $file_type == 'text/csv' || $file_type == 'application/vnd.ms-excel' );
$okFileEnd = ( pathinfo ( $file_name , PATHINFO_EXTENSION ) != 'txt' || pathinfo ( $file_name , PATHINFO_EXTENSION ) != 'csv' );
# preverimo ali smo uploadali datoteko in če smo izbrali katero polje
if ( $_POST [ 'posted' ] == '1' && count ( $fields ) == 0 ) {
$errors [] = $lang [ 'srv_inv_recipiens_upload_error_no_fields' ];
}
#preverimo ime datoteke
if ( trim ( $file_name ) == '' || $file_name == null ) {
$errors [] = $lang [ 'srv_respondents_invalid_file' ];
# preverimo tip:
} else if ( $okFileType == false ) {
$errors [] = $lang [ 'srv_respondents_invalid_file_type' ];
# prevermio še končnico (.txt)
} else if ( $okFileEnd == false ) {
$errors [] = $lang [ 'srv_respondents_invalid_file_type' ];
}
# preverimo velikost
else if ( ( float ) $file_size == 0 ) {
$errors [] = $lang [ 'srv_respondents_invalid_file_size' ];
}
# če so napake jih prikažemo če ne obdelamo datoteko
if ( count ( $errors ) > 0 ) {
2020-11-25 10:48:02 +01:00
echo '<br class="clr" />' ;
echo '<span class="inv_message_errors">' . $lang [ 'srv_inv_recipiens_upload_error' ] . '</span>' ;
2020-08-14 13:36:36 +02:00
echo '<br class="clr" />' ;
2020-11-25 10:48:02 +01:00
echo '<br class="clr" />' ;
2020-08-14 13:36:36 +02:00
echo '<span class="inv_error_note">' ;
2020-11-25 10:48:02 +01:00
foreach ( $errors as $error ) {
2020-08-14 13:36:36 +02:00
echo '* ' . $error . '<br />' ;
}
2020-11-25 10:48:02 +01:00
echo '</span>' ;
2020-08-14 13:36:36 +02:00
$this -> addRecipientsView ( $fields , $invalid_recipiens_array );
2020-11-25 10:48:02 +01:00
}
else {
2020-08-14 13:36:36 +02:00
$fh = @ fopen ( $file_tmp , " rb " );
if ( $fh ) {
$recipients_list = fread ( $fh , filesize ( $file_tmp ));
fclose ( $fh );
}
# po potrebi zamenjamo delimiter iz (;) v (,)
// Vejica NI kul, ker se uporablja pri nazivih in v custom poljih Za interni delimiter naj bo recimo " | "...
$recipients_list = str_replace ( $_POST [ 'recipientsDelimiter' ], " |~| " , $recipients_list );
2020-11-26 09:56:48 +01:00
2020-11-25 10:48:02 +01:00
// Shranimo v seznam
$pid = $this -> saveAppendRecipientList ( $pid = 0 , $fields , $recipients_list , $profileName = '' , $profileComment = '' );
2020-11-26 09:56:48 +01:00
// Dodamo polja
$result = $this -> addMassRecipients ( $recipients_list , $fields , $pid );
2020-11-25 10:48:02 +01:00
// Prikažemo napake
2020-08-14 13:36:36 +02:00
$invalid_recipiens_array = $this -> displayRecipentsErrors ( $result );
$this -> addRecipientsView ( $fields , $invalid_recipiens_array );
}
}
function viewArchiveRecipients () {
$data = explode ( '_' , $_POST [ 'arch_to_view' ]);
$_success = ( int ) $data [ 2 ];
$_arch_id = $data [ 3 ];
$archType = $_POST [ 'archType' ];
# za novejše ankete prikažemo nov način
if ( $this -> newTracking ) {
$this -> showArchiveRecipients ( $_arch_id , $archType );
return ;
}
global $lang , $site_url , $global_user_id ;
echo '<div id="inv_view_arch_recipients">' ;
# polovimo sezname
$lists = array ();
2021-02-22 15:26:32 +01:00
$sql_string = " SELECT pid, name,comment FROM srv_invitations_recipients_profiles WHERE uid in(' " . $global_user_id . " ') " ;
2020-08-14 13:36:36 +02:00
$sql_query = sisplet_query ( $sql_string );
while ( $sql_row = mysqli_fetch_assoc ( $sql_query )) {
$lists [ $sql_row [ 'pid' ]] = $sql_row [ 'name' ];
}
$lists [ '-1' ] = $lang [ 'srv_invitation_new_templist' ];
$lists [ '0' ] = $lang [ 'srv_invitation_new_templist_author' ];
$data = explode ( '_' , $_POST [ 'arch_to_view' ]);
$_success = ( int ) $data [ 2 ];
$_arch_id = $data [ 3 ];
$sql_string = " SELECT * FROM srv_invitations_archive WHERE id = ' $_arch_id ' " ;
$sql_query = sisplet_query ( $sql_string );
$sql_a_row = mysqli_fetch_assoc ( $sql_query );
$sql_string = " SELECT email,firstname,lastname, password,salutation,phone,custom,relation,sent,responded,unsubscribed,deleted,last_status,list_id FROM srv_invitations_archive_recipients AS siar LEFT JOIN srv_invitations_recipients AS sir on siar.rec_id = sir.id WHERE arch_id = ' $_arch_id ' AND success = ' $_success ' " ;
$sql_query = sisplet_query ( $sql_string );
echo '<div class="inv_FS_content">' ;
echo '<table id="tbl_recipients_list">' ;
echo '<tr>' ;
2021-03-19 13:29:58 +01:00
// Pri volitvah ne prikazemo nekaterih stolpcev
if ( SurveyInfo :: getInstance () -> checkSurveyModule ( 'voting' )){
echo '<th class="tbl_icon" title="' . $lang [ 'srv_inv_recipients_sent' ] . '">' . $lang [ 'srv_inv_recipients_sent' ] . '</th>' ;
echo '<th class="tbl_inv_left">' . $lang [ 'srv_inv_recipients_email' ] . '</th>' ;
echo '<th>' . $lang [ 'srv_inv_recipients_firstname' ] . '</th>' ;
echo '<th>' . $lang [ 'srv_inv_recipients_lastname' ] . '</th>' ;
echo '<th>' . $lang [ 'srv_inv_recipients_list_id' ] . '</th>' ;
}
else {
echo '<th class="tbl_icon" title="' . $lang [ 'srv_inv_recipients_sent' ] . '">' . $lang [ 'srv_inv_recipients_sent' ] . '</th>' ;
echo '<th class="tbl_icon" title="' . $lang [ 'srv_inv_recipients_responded' ] . '">' . $lang [ 'srv_inv_recipients_responded' ] . '</th>' ;
echo '<th class="tbl_icon" title="' . $lang [ 'srv_inv_recipients_unsubscribed' ] . '">' . $lang [ 'srv_inv_recipients_unsubscribed' ] . '</th>' ;
echo '<th class="tbl_inv_left">' . $lang [ 'srv_inv_recipients_email' ] . '</th>' ;
echo '<th>' . $lang [ 'srv_inv_recipients_password' ] . '</th>' ;
echo '<th>' . $lang [ 'srv_inv_recipients_firstname' ] . '</th>' ;
echo '<th>' . $lang [ 'srv_inv_recipients_lastname' ] . '</th>' ;
echo '<th>' . $lang [ 'srv_inv_recipients_last_status' ] . '</th>' ;
echo '<th>' . $lang [ 'srv_inv_recipients_list_id' ] . '</th>' ;
}
2020-08-14 13:36:36 +02:00
echo '</tr>' ;
while ( $sql_row = mysqli_fetch_assoc ( $sql_query )) {
echo '<tr>' ;
2021-03-19 13:29:58 +01:00
// Pri volitvah ne prikazemo nekaterih stolpcev
if ( SurveyInfo :: getInstance () -> checkSurveyModule ( 'voting' )){
echo '<td><img src="' . $site_url . 'admin/survey/img_0/' . (( int ) $sql_row [ 'sent' ] == 1 ? 'email_sent.png' : 'email_open.png' ) . '"></td>' ;
echo '<td class="tbl_inv_left">' . $sql_row [ 'email' ] . '</td>' ;
echo '<td>' . $sql_row [ 'firstname' ] . '</td>' ;
echo '<td>' . $sql_row [ 'lastname' ] . '</td>' ;
echo '<td>' . $lists [ $sql_row [ 'list_id' ]] . '</td>' ;
}
else {
echo '<td><img src="' . $site_url . 'admin/survey/img_0/' . (( int ) $sql_row [ 'sent' ] == 1 ? 'email_sent.png' : 'email_open.png' ) . '"></td>' ;
echo '<td><img src="' . $site_url . 'admin/survey/icons/icons/' . (( int ) $sql_row [ 'responded' ] == 1 ? 'star_on.png' : 'star_off.png' ) . '"></td>' ;
echo '<td><img src="' . $site_url . 'admin/survey/img_0/' . (( int ) $sql_row [ 'unsubscribed' ] == 1 ? 'opdedout_on.png' : 'opdedout_off.png' ) . '"></td>' ;
echo '<td class="tbl_inv_left">' . $sql_row [ 'email' ] . '</td>' ;
echo '<td>' . $sql_row [ 'password' ] . '</td>' ;
echo '<td>' . $sql_row [ 'firstname' ] . '</td>' ;
echo '<td>' . $sql_row [ 'lastname' ] . '</td>' ;
echo '<td>' . $lang [ 'srv_userstatus_' . $sql_row [ 'last_status' ]] . ' (' . $sql_row [ 'last_status' ] . ')' . '</td>' ;
echo '<td>' . $lists [ $sql_row [ 'list_id' ]] . '</td>' ;
}
2020-08-14 13:36:36 +02:00
echo '</tr>' ;
}
echo '</table>' ;
echo '</div>' ; // id="arc_content"
echo '<div class="inv_FS_btm">' ;
echo '<div id="navigationBottom" class="printHide">' ;
echo '<span class="floatRight spaceRight"><div class="buttonwrapper"><a class="ovalbutton ovalbutton_orange" href="#" onclick="inv_arch_recipients_close(); return false;"><span>' . $lang [ 'srv_zapri' ] . '</span></a></div></span>' ;
echo '<div class="clr" />' ;
echo '</div>' ;
echo '</div>' ;
}
function editArchiveComment () {
global $lang , $site_url ;
echo '<div id="inv_view_arch_recipients">' ;
$data = explode ( '_' , $_POST [ 'arch_to_view' ]);
$_success = ( int ) $data [ 2 ];
$_arch_id = $data [ 3 ];
#polovimo podatke arhiva
$sql_string = " SELECT comment FROM srv_invitations_archive WHERE id = ' " . $_arch_id . " ' " ;
$sql_query = sisplet_query ( $sql_string );
list ( $comment ) = mysqli_fetch_row ( $sql_query );
echo '<div class="inv_FS_content">' ;
echo $lang [ 'srv_invitation_comment' ];
echo '<input id="inv_arch_id" type="hidden" value="' . $_arch_id . '">' ;
echo '<input id="inv_arch_comment" type="text" value="' . $comment . '">' ;
echo '</div>' ; // id="arc_content"
echo '<div class="inv_FS_btm">' ;
echo '<div id="navigationBottom" class="printHide">' ;
echo '<span class="floatRight"><div class="buttonwrapper"><a class="ovalbutton ovalbutton_orange" href="#" onclick="inv_arch_save_comment(); return false;"><span>' . $lang [ 'save' ] . '</span></a></div></span>' ;
echo '<span class="floatRight spaceRight"><div class="buttonwrapper"><a class="ovalbutton ovalbutton_gray" href="#" onclick="inv_arch_recipients_close(); return false;"><span>' . $lang [ 'srv_zapri' ] . '</span></a></div></span>' ;
echo '<div class="clr" />' ;
echo '</div>' ;
echo '</div>' ;
}
function deleteRecipientConfirm () {
global $lang ;
if ( isset ( $_POST [ 'inv_rid' ]) && trim ( $_POST [ 'inv_rid' ]) != '' ) {
$rid = $_POST [ 'inv_rid' ];
echo '<div id="inv_delete_rec_confirm">' ;
echo '<span class="h2">Ali ste prepričani da želite izbrisati respondenta:</span>' ;
echo '<br class="clr"/>' ;
echo '<br class="clr"/>' ;
# polovimo podatke respondenta
$sql_string = " SELECT * FROM srv_invitations_recipients WHERE id = ' " . ( int ) $_POST [ 'inv_rid' ] . " ' " ;
$sql_query = sisplet_query ( $sql_string );
$sql_row = mysqli_fetch_assoc ( $sql_query );
echo '<div id="inv_error_note" class="hidden"/>' ;
echo '<input type="hidden" id="inv_rid" value="' . $sql_row [ 'id' ] . '">' ;
echo '<table id="inv_edit_recipient">' ;
#email
if ( trim ( $sql_row [ 'email' ]) != '' ) {
echo '<tr><th>' . $lang [ 'srv_inv_field_email' ] . '</th><td>' ;
echo $sql_row [ 'email' ];
echo '</td></tr>' ;
}
#geslo
if ( trim ( $sql_row [ 'password' ]) != '' ) {
echo '<tr><th>' . $lang [ 'srv_inv_field_password' ] . '</th><td>' ;
echo $sql_row [ 'password' ];
echo '</td></tr>' ;
}
#ime
if ( trim ( $sql_row [ 'firstname' ]) != '' ) {
echo '<tr><th>' . $lang [ 'srv_inv_field_firstname' ] . '</th><td>' ;
echo $sql_row [ 'firstname' ];
echo '</td></tr>' ;
}
#priimek
if ( trim ( $sql_row [ 'lastname' ]) != '' ) {
echo '<tr><th>' . $lang [ 'srv_inv_field_lastname' ] . '</th><td>' ;
echo $sql_row [ 'lastname' ];
echo '</td></tr>' ;
}
#naziv
if ( trim ( $sql_row [ 'salutation' ]) != '' ) {
echo '<tr><th>' . $lang [ 'srv_inv_field_salutation' ] . '</th><td>' ;
echo $sql_row [ 'salutation' ];
echo '</td></tr>' ;
}
#telefon
if ( trim ( $sql_row [ 'phone' ]) != '' ) {
echo '<tr><th>' . $lang [ 'srv_inv_field_phone' ] . '</th><td>' ;
echo $sql_row [ 'phone' ];
echo '</td></tr>' ;
}
#drugo
if ( trim ( $sql_row [ 'custom' ]) != '' ) {
echo '<tr><th>' . $lang [ 'srv_inv_field_custom' ] . '</th><td>' ;
echo $sql_row [ 'custom' ];
echo '</td></tr>' ;
}
#odnos
if ( SurveyInfo :: getInstance () -> checkSurveyModule ( '360_stopinj' )){
if ( trim ( $sql_row [ 'relation' ]) != '' ) {
echo '<tr><th>' . $lang [ 'srv_inv_field_relation' ] . '</th><td>' ;
echo $sql_row [ 'relation' ];
echo '</td></tr>' ;
}
}
echo '</table>' ;
echo '<br class="clr"/>' ;
echo '<br class="clr"/>' ;
echo '<span id="inv_delete_recipent" class="buttonwrapper floatRight" title="' . $lang [ 'srv_inv_list_profiles_delete' ] . '"><a class="ovalbutton ovalbutton_orange" href="#" onclick="inv_delete_recipient();return false;" ><span>' . $lang [ 'srv_inv_list_profiles_delete' ] . '</span></a></span>' ;
echo '<span class="buttonwrapper floatRight spaceRight" title="' . $lang [ 'srv_cancel' ] . '"><a class="ovalbutton ovalbutton_gray" href="#" onclick="$(\'#fade\').fadeOut(\'slow\');$(\'#fullscreen\').fadeOut(\'slow\').html(\'\');return false;" ><span>' . $lang [ 'srv_cancel' ] . '</span></a></span>' ;
echo '<br class="clr"/>' ;
echo '</div>' ; # id="inv_delete_rec_confirm"
}
}
function deleteRecipient () {
global $lang , $global_user_id , $site_url ;
$return = array ( 'success' => '0' );
#array z napakami
$errors = array ();
$rids = $_POST [ 'inv_rids' ];
if ( isset ( $rids ) && is_array ( $rids ) && count ( $rids )) {
$sqlString = " UPDATE srv_invitations_recipients SET deleted='1', date_deleted=NOW(), uid_deleted=' " . $global_user_id . " ' WHERE ank_id=' " . $this -> sid . " ' AND id IN( " . implode ( ',' , $rids ) . " ) " ;
$sqlQuery = sisplet_query ( $sqlString );
sisplet_query ( " COMMIT " );
if ( ! $sqlQuery ) {
$errors [] = $lang [ 'srv_inv_recipient_delete_error' ];
} else {
# updejtamo še srv_users
$sqlString = " UPDATE srv_user SET inv_res_id=NULL WHERE ank_id=' " . $this -> sid . " ' AND inv_res_id IN( " . implode ( ',' , $rids ) . " ) " ;
$sqlQuery = sisplet_query ( $sqlString );
sisplet_query ( " COMMIT " );
$return [ 'success' ] = 2 ;
//$this->viewRecipients();
}
} else {
$errors [] = $lang [ 'srv_inv_recipient_delete_error' ];
}
header ( 'location: ' . $site_url . 'admin/survey/index.php?anketa=' . $this -> sid . '&a=' . A_INVITATIONS . '&m=view_recipients' );
}
function deleteRecipientSingle () {
global $lang , $global_user_id , $site_url ;
$return = array ( 'success' => '0' );
# single delete
$inv_rid = $_POST [ 'inv_rid' ];
if (( int ) $inv_rid > 0 ) {
$sqlString = " UPDATE srv_invitations_recipients SET deleted='1', date_deleted=NOW(), uid_deleted=' " . $global_user_id . " ' WHERE ank_id=' " . $this -> sid . " ' AND id =' $inv_rid ' " ;
sisplet_query ( " COMMIT " );
$sqlQuery = sisplet_query ( $sqlString );
if ( ! $sqlQuery ) {
$return [ 'error' ] = $lang [ 'srv_inv_recipient_delete_error' ];
} else {
$return [ 'success' ] = 1 ;
echo json_encode ( $return );
exit ;
}
} else {
$return [ 'error' ] = $lang [ 'srv_inv_recipient_delete_error' ];
}
echo json_encode ( $return );
exit ;
}
function deleteRecipientAll () {
global $lang , $global_user_id , $site_url ;
$return = array ( 'success' => '0' );
# all delete
$sqlString = " UPDATE srv_invitations_recipients SET deleted='1', date_deleted=NOW(), uid_deleted=' " . $global_user_id . " ' WHERE ank_id=' " . $this -> sid . " ' AND deleted ='0' " ;
sisplet_query ( " COMMIT " );
$sqlQuery = sisplet_query ( $sqlString );
if ( ! $sqlQuery ) {
$return [ 'error' ] = $lang [ 'srv_inv_recipient_delete_error' ];
} else {
$return [ 'success' ] = 1 ;
echo json_encode ( $return );
exit ;
}
echo json_encode ( $return );
exit ;
}
function addSystemVariables ( $variables ) {
global $site_path , $lang ;
2021-03-16 10:11:08 +01:00
// Pri modulu za volitve so responsi anonimni, zato nimamo nobenih sistemskih spremenljivk
if ( SurveyInfo :: getInstance () -> checkSurveyModule ( 'voting' ))
return ;
2020-08-14 13:36:36 +02:00
$system_fields = array (
'inv_field_email' => 'email' ,
'inv_field_firstname' => 'ime' ,
'inv_field_lastname' => 'priimek' ,
# 'inv_field_password' => 'geslo', # gesla ne dodajamo kot sistemsko spremenljivko
'inv_field_salutation' => 'naziv' ,
'inv_field_phone' => 'telefon' ,
'inv_field_custom' => 'drugo' ,
'inv_field_relation' => 'odnos' ,
);
$ba = new BranchingAjax ( $this -> sid );
if ( count ( $variables ) > 0 ) {
// zakaj je bi ta reverse???
//$variables = array_reverse($variables,true);
foreach ( $variables as $var ) {
if ( isset ( $system_fields [ $var ])) {
$spr_id = null ;
$variable = $system_fields [ $var ];
$sqlVariable = sisplet_query ( " SELECT s.id FROM srv_spremenljivka s, srv_grupa g WHERE s.variable=' " . $variable . " ' AND s.gru_id=g.id AND g.ank_id=' " . $this -> sid . " ' " );
if ( mysqli_num_rows ( $sqlVariable ) == 0 && $variable != 'pass' ) { // če varabla še ne obstaja jo kreiramo
// za polje pass - Geslo ne kreiramo sistemske variable
if ( $variable != 'language' ) $user_base = 1 ;
// za polje odnos (module 360 - adecco) ustvarimo radio tip spremenljivke
if ( $system_fields [ $var ] == 'odnos' ){
ob_start ();
$ba -> ajax_spremenljivka_new ( 0 , 0 , 1 , 0 , 1 );
$spr_id = $ba -> spremenljivka ;
ob_clean ();
$s = sisplet_query ( " UPDATE srv_spremenljivka SET variable=' " . $variable . " ', variable_custom='1', naslov=' " . $variable . " ', sistem='1', visible='0' WHERE id=' $spr_id ' " );
if ( ! $s ) echo 'err435' . mysqli_error ( $GLOBALS [ 'connect_db' ]);
// če gre za sistemsko "odnos" za module 360 (adecco) ustvarimo 4 vrednosti (nadrejeni, podrejeni, sodelavec, samoocenjevalec)
$sql = sisplet_query ( " UPDATE srv_vrednost SET naslov=' " . $lang [ 'srv_inv_field_relation_1' ] . " ', variable='1' WHERE spr_id=' " . $spr_id . " ' AND vrstni_red='1' " );
$sql = sisplet_query ( " UPDATE srv_vrednost SET naslov=' " . $lang [ 'srv_inv_field_relation_2' ] . " ', variable='2' WHERE spr_id=' " . $spr_id . " ' AND vrstni_red='2' " );
$sql = sisplet_query ( " UPDATE srv_vrednost SET naslov=' " . $lang [ 'srv_inv_field_relation_3' ] . " ', variable='3' WHERE spr_id=' " . $spr_id . " ' AND vrstni_red='3' " );
$sql = sisplet_query ( " INSERT INTO srv_vrednost (id, spr_id, naslov, variable, vrstni_red) VALUES ('', ' $spr_id ', ' " . $lang [ 'srv_inv_field_relation_4' ] . " ', '4', '4') " );
}
// dodamo novo spremenljivko na konec, tip je 21
else {
ob_start ();
$ba -> ajax_spremenljivka_new ( 0 , 0 , 1 , 0 , 21 );
$spr_id = $ba -> spremenljivka ;
ob_clean ();
$s = sisplet_query ( " UPDATE srv_spremenljivka SET variable=' " . $variable . " ', variable_custom='1', naslov=' " . $variable . " ', sistem='1', visible='0' WHERE id=' $spr_id ' " );
if ( ! $s ) echo 'err435' . mysqli_error ( $GLOBALS [ 'connect_db' ]);
#MAPPING za povezavo podatkov
# če smo dodajali email, ga dodamo tudi v mapping
if ( $variable == 'email' && ( int ) $spr_id > 0 ) {
$insertString = " INSERT INTO srv_invitations_mapping (sid, spr_id, field) VALUES (' $this->sid ',' $spr_id ','email') " ;
sisplet_query ( $insertString );
}
}
}
}
}
}
}
function listRecipientsProfiles () {
global $lang , $global_user_id ;
$ppid = isset ( $_POST [ 'pid' ]) ? ( int ) $_POST [ 'pid' ] : - 1 ;
# polovimo vse profile
$array_profiles = array ();
session_start ();
# če obstaja seznam iz seje za to anketo
if ( isset ( $_SESSION [ 'inv_rec_profile' ][ $this -> sid ])) {
$array_profiles [ - 1 ] = array ( 'name' => $_SESSION [ 'inv_rec_profile' ][ $this -> sid ][ 'name' ]);
}
$array_profiles [ 0 ] = array ( 'name' => $lang [ 'srv_temp_profile_author' ]);
2021-02-22 15:26:32 +01:00
2020-08-14 13:36:36 +02:00
$onlyThisSurvey = ( isset ( $_SESSION [ 'inv_rec_only_this_survey' ]) && ( int ) $_SESSION [ 'inv_rec_only_this_survey' ] == 1 ) ? false : true ;
if ( $onlyThisSurvey == 0 ) {
#id-ji profilov do katerih lahko dostopamo
2021-02-22 15:26:32 +01:00
$sql_string = " SELECT * FROM srv_invitations_recipients_profiles WHERE uid in(' " . $global_user_id . " ') OR pid IN (SELECT DISTINCT pid FROM srv_invitations_recipients_profiles_access where uid = ' $global_user_id ') " ;
2020-08-14 13:36:36 +02:00
$sql_query = sisplet_query ( $sql_string );
} else {
# 1
$sql_string = " SELECT rp.* FROM srv_invitations_recipients_profiles AS rp WHERE from_survey = ' $this->sid ' " ;
$sql_query = sisplet_query ( $sql_string );
}
$sql_query = sisplet_query ( $sql_string );
while ( $sql_row = mysqli_fetch_assoc ( $sql_query )) {
$array_profiles [ $sql_row [ 'pid' ]] = array ( 'name' => $sql_row [ 'name' ]);
}
echo '<div id="inv_import_list_profiles">' ;
echo '<ol>' ;
foreach ( $array_profiles AS $_pid => $profile ) {
echo '<li pid="' . $_pid . '" class="'
# .($_pid['isdefault'] == 1 ? ' strong' : '')
. ( $ppid === $_pid ? ' active' : '' )
. '">' ;
echo $profile [ 'name' ];
echo '</li>' ;
}
echo '</ol>' ;
echo '</div>' ;
echo '<br class="clr" />' ;
if (( int ) $ppid > 0 ) {
# polovimo še ostale porfile
$sql_string = " SELECT * FROM srv_invitations_recipients_profiles WHERE pid=' " . ( int ) $ppid . " ' AND from_survey =' " . $this -> sid . " ' " ;
$sql_query = sisplet_query ( $sql_string );
if ( mysqli_num_rows ( $sql_query ) > 0 ) {
# če je iz iste ankete, potem lahko urejamo
echo '<a href="#" onclick="inv_del_rec_profile();" title="' . $lang [ 'srv_inv_recipients_delete_profile' ] . '">' . $lang [ 'srv_inv_recipients_delete_profile' ] . '</a><br/>' ;
echo '<a href="#" onclick="inv_edit_rec_profile();" title="' . $lang [ 'srv_inv_recipients_edit_profile' ] . '">' . $lang [ 'srv_inv_recipients_edit_profile' ] . '</a><br/>' ;
echo '<br class="clr"/>' ;
}
}
echo '<br class="clr" />' ;
}
function getRecipientsProfile ( $pid ) {
global $lang , $global_user_id ;
session_start ();
$fields = array ();
$recipients_list = null ;
$noEmailing = SurveySession :: get ( 'inv_noEmailing' );
# če ne obstaja začasen seznam ga naredimo (praznega)
if ( ! isset ( $_SESSION [ 'inv_rec_profile' ][ $this -> sid ])) {
$_SESSION [ 'inv_rec_profile' ][ $this -> sid ] = array (
'pid' =>- 1 ,
'name' => $lang [ 'srv_invitation_new_templist' ],
'fields' => ( $noEmailing == 1 ? 'firstname,lastname' : 'email' ),
'respondents' => '' ,
'comment' => $lang [ 'srv_invitation_new_templist' ]);
}
#polovimo emaile in poljaiz seznama
if ( $pid > 0 ) {
# če imamo pid in je večji kot nič polovimo podatke iz tabele
$sql_string = " SELECT fields,respondents FROM srv_invitations_recipients_profiles WHERE pid = ' " . $pid . " ' " ;
$sql_query = sisplet_query ( $sql_string );
$sql_row = mysqli_fetch_assoc ( $sql_query );
if ( trim ( $sql_row [ 'respondents' ]) != '' ) {
//$recipients_list = explode("\n",trim($sql_row['respondents']));
// Zamenjamo 1ka delimiter z default vejico, ker drugače je v seznamih porušeno
$recipients_list = explode ( " \n " , str_replace ( " |~| " , " , " , trim ( $sql_row [ 'respondents' ])));
}
$_fields = explode ( " , " , $sql_row [ 'fields' ]);
if ( count ( $_fields ) > 0 ) {
foreach ( $_fields AS $field ) {
$fields [] = 'inv_field_' . $field ;
}
}
} else if ( $pid == 0 ) {
# če ne je začasin porfil - avtor
$sql_string = " SELECT email, name, surname FROM users WHERE id = ' " . $global_user_id . " ' " ;
$sql_query = sisplet_query ( $sql_string );
$rowEmail = mysqli_fetch_assoc ( $sql_query );
// default smo rekli je vejica, ane?
$recipients_list [] = $rowEmail [ 'email' ] . ',' . $rowEmail [ 'name' ] . ',' . $rowEmail [ 'surname' ];
//$recipients_list[]= $rowEmail['email'].'|~|'.$rowEmail['name'].'|~|'.$rowEmail['surname'];
$fields [] = 'inv_field_email' ;
$fields [] = 'inv_field_firstname' ;
$fields [] = 'inv_field_lastname' ;
} else if ( $pid == - 1 ) {
# začasen profil iz seje
$_fields = explode ( " , " , $_SESSION [ 'inv_rec_profile' ][ $this -> sid ][ 'fields' ]);
if ( count ( $_fields ) > 0 ) {
foreach ( $_fields AS $field ) {
$fields [] = 'inv_field_' . $field ;
}
}
if ( trim ( $_SESSION [ 'inv_rec_profile' ][ $this -> sid ][ 'respondents' ]) != '' ) {
$recipients_list = explode ( " \n " , trim ( $_SESSION [ 'inv_rec_profile' ][ $this -> sid ][ 'respondents' ]));
}
} else {
$recipients_list [] = '' ;
$fields [] = 'inv_field_email' ;
}
return array ( $recipients_list , $fields );
}
function useRecipientsList ( $profile_id = null ) {
if ( isset ( $profile_id ) && ! is_null ( $profile_id ))
{
$pid = $profile_id ;
$_POST [ 'pid' ] = $profile_id ;
}
else if ( isset ( $_POST [ 'pid' ]))
{
$pid = ( int ) $_POST [ 'pid' ];
}
else
{
if ( isset ( $_SESSION [ 'inv_rec_profile' ][ $this -> sid ]))
{
$pid = - 1 ;
}
else
{
$pid = 0 ;
}
}
list ( $recipients_list , $fields ) = $this -> getRecipientsProfile ( $pid );
$this -> addRecipientsView ( $fields , $recipients_list );
}
function saveRecipientList () {
global $lang , $site_url , $global_user_id ;
echo 'DEPRCATED!' ;
return false ;
$return = array ( 'success' => '0' );
# shranjujemo v nov profil
$post_fields = str_replace ( 'inv_field_' , '' , implode ( ',' , $_POST [ 'fields' ]));
$post_recipients = $this -> getCleanString ( $_POST [ 'recipients_list' ]);
$pid = ( int ) $_POST [ 'pid' ];
# če je pid < 0 shranimo v nov porfil
if ( $pid <= 0 ) {
# dodelimo ime
#zaporedno številčimo ime seznama1,2.... če slučajno ime že obstaja
$new_name = $lang [ 'srv_inv_recipient_list_new' ];
$names = array ();
$s = " SELECT name FROM srv_invitations_recipients_profiles WHERE name LIKE '% " . $new_name . " %' AND uid=' $global_user_id ' " ;
$q = sisplet_query ( $s );
while ( $r = mysqli_fetch_assoc ( $q )) {
$names [] = $r [ 'name' ];
}
if ( count ( $names ) > 0 ) {
$cnt = 1 ;
while ( in_array ( $lang [ 'srv_inv_recipient_list_new' ] . $cnt , $names )) {
$cnt ++ ;
}
$new_name = $lang [ 'srv_inv_recipient_list_new' ] . $cnt ;
}
$sql_insert = " INSERT INTO srv_invitations_recipients_profiles " .
" (name,uid,fields,respondents,insert_time,comment, from_survey) " .
" VALUES (' $new_name ', ' $global_user_id ', ' $post_fields ', ' $post_recipients ', NOW(), '', ' " . $this -> sid . " ' ) " ;
$sqlQuery = sisplet_query ( $sql_insert );
if ( ! $sqlQuery ) {
$return [ 'success' ] = '0' ;
$return [ 'msg' ] = mysqli_error ( $GLOBALS [ 'connect_db' ]);
} else {
$return [ 'success' ] = '1' ;
$return [ 'pid' ] = mysqli_insert_id ( $GLOBALS [ 'connect_db' ]);
}
} else {
# updejtamo obstoječ profil
$sql_update = " UPDATE srv_invitations_recipients_profiles " .
" SET fields = ' $post_fields ', respondents =' $post_recipients ' WHERE pid = ' $pid ' " ;
$sqlQuery = sisplet_query ( $sql_update );
if ( ! $sqlQuery ) {
$return [ 'success' ] = '0' ;
$return [ 'msg' ] = mysqli_error ( $GLOBALS [ 'connect_db' ]);
} else {
$return [ 'success' ] = '1' ;
$return [ 'pid' ] = $pid ;
}
}
sisplet_query ( " COMMIT " );
echo json_encode ( $return );
exit ;
}
function getProfileName () {
echo 'DEPRECATED' ;
}
function saveRecProfile () {
2020-11-26 09:56:48 +01:00
global $lang , $site_url , $global_user_id ;
2020-08-14 13:36:36 +02:00
$return = array ( 'error' => '0' );
$profile_id = isset ( $_POST [ 'profile_id' ]) ? ( int ) $_POST [ 'profile_id' ] : - 1 ;
$profile_name = ( isset ( $_POST [ 'profile_name' ]) && trim ( $_POST [ 'profile_name' ]) != '' ) ? trim ( $_POST [ 'profile_name' ]) : $lang [ 'srv_invitation_new_templist' ];
$profile_comment = ( isset ( $_POST [ 'profile_comment' ]) && trim ( $_POST [ 'profile_comment' ]) != '' ) ? trim ( $_POST [ 'profile_comment' ]) : '' ;
$recipients_list = trim ( $this -> getCleanString ( $_POST [ 'recipients_list' ]));
$field_list = ( isset ( $_POST [ 'field_list' ]) && trim ( $_POST [ 'field_list' ]) != '' ) ? trim ( $_POST [ 'field_list' ]) : 'email' ;
if (( int ) $profile_id == - 1 ) {
# shranimo v začasni profil
session_start ();
$_SESSION [ 'inv_rec_profile' ][ $this -> sid ] = array (
'pid' =>- 1 ,
'name' => $lang [ 'srv_invitation_new_templist' ],
'fields' => $field_list ,
'respondents' => $recipients_list ,
'comment' => $profile_comment
);
$return = array ( 'error' => '0' , 'msg' => 'x0' , 'pid' =>- 1 );
}
else if (( int ) $profile_id == 0 ) {
# shranjujemo v nov profil
$sql_insert = " INSERT INTO srv_invitations_recipients_profiles (name,uid,fields,respondents,insert_time,comment, from_survey) VALUES (' $profile_name ', ' $global_user_id ', ' $field_list ', ' $recipients_list ', NOW(), ' $profile_comment ', ' " . $this -> sid . " ' ) " ;
$sqlQuery = sisplet_query ( $sql_insert );
if ( ! $sqlQuery ) {
$error = mysqli_error ( $GLOBALS [ 'connect_db' ]);
$return = array ( 'error' => '1' , 'msg' => $error , 'pid' => mysqli_insert_id ( $GLOBALS [ 'connect_db' ]));
} else {
$return = array ( 'error' => '0' , 'msg' => 'x1' , 'pid' => mysqli_insert_id ( $GLOBALS [ 'connect_db' ]));
}
sisplet_query ( " COMMIT " );
}
else {
# dodajamo v obstoječ profil
# polovimo podatke obstoječega profila
2021-02-22 15:26:32 +01:00
$sql_string = " SELECT * FROM srv_invitations_recipients_profiles WHERE uid in(' " . $global_user_id . " ') AND pid = ' " . $profile_id . " ' " ;
2020-08-14 13:36:36 +02:00
$sql_query = sisplet_query ( $sql_string );
$sql_row = mysqli_fetch_assoc ( $sql_query );
$respondents = $sql_row [ 'respondents' ] . " \n " . $recipients_list ;
2021-02-22 15:26:32 +01:00
$sql_string_update = " UPDATE srv_invitations_recipients_profiles SET respondents = ' " . $respondents . " ', comment=' " . $profile_comment . " ' WHERE uid in(' " . $global_user_id . " ') AND pid = ' " . $profile_id . " ' " ;
2020-08-14 13:36:36 +02:00
$sqlQuery = sisplet_query ( $sql_string_update );
sisplet_query ( " COMMIT " );
if ( ! $sqlQuery ) {
$error = mysqli_error ( $GLOBALS [ 'connect_db' ]);
$return = array ( 'error' => '1' , 'msg' => $error , 'pid' => $profile_id ());
} else {
$return = array ( 'error' => '0' , 'msg' => 'x2' , 'pid' => $profile_id );
}
}
echo json_encode ( $return );
exit ;
}
function updateRecProfile () {
global $lang , $site_url , $global_user_id ;
$return = array ( 'error' => '0' , 'msg' => '' );
$pid = ( int )( int ) $_POST [ 'pid' ];
$profile_name = ( isset ( $_POST [ 'profile_name' ]) && trim ( $_POST [ 'profile_name' ]) != '' ) ? trim ( $_POST [ 'profile_name' ]) : '' ;
/* $profile_comment = ( isset ( $_POST [ 'profile_comment' ]) && trim ( $_POST [ 'profile_comment' ]) != '' ) ? trim ( $_POST [ 'profile_comment' ]) : '' ;
$profile_respondents = ( isset ( $_POST [ 'profile_respondents' ]) && trim ( $_POST [ 'profile_respondents' ]) != '' ) ? trim ( $_POST [ 'profile_respondents' ]) : '' ; */
if ( $pid > 0 ) {
if ( $profile_name != '' ) {
//$sql_update = "UPDATE srv_invitations_recipients_profiles SET name = '$profile_name', comment = '$profile_comment', respondents = '$profile_respondents' WHERE pid = '$pid'";
$sql_update = " UPDATE srv_invitations_recipients_profiles SET name = ' $profile_name ' WHERE pid = ' $pid ' " ;
$sqlQuery = sisplet_query ( $sql_update );
sisplet_query ( " COMMIT " );
if ( ! $sqlQuery ) {
$error = mysqli_error ( $GLOBALS [ 'connect_db' ]);
$return = array ( 'error' => '1' , 'msg' => $error );
} else {
$return = array ( 'error' => '0' , 'msg' => $sql_update );
}
sisplet_query ( " COMMIT " );
} else {
$return = array ( 'error' => '1' , 'msg' => $lang [ 'srv_inv_msg_1' ]);
}
} else {
$return = array ( 'error' => '1' , 'msg' => $lang [ 'srv_inv_msg_2' ]);
}
echo json_encode ( $return );
exit ;
}
function deleteRecProfile () {
global $lang , $site_url , $global_user_id ;
$return = array ( 'error' => '0' );
$pid = isset ( $_POST [ 'pid' ]) && ( int ) $_POST [ 'pid' ] > 0 ? ( int ) $_POST [ 'pid' ] : null ;
if ( $_POST [ 'pid' ]) {
$sql_string = " DELETE FROM srv_invitations_recipients_profiles WHERE pid=' " . $pid . " ' AND uid=' " . $global_user_id . " ' " ;
$return [ 'str' ] = $sql_string ;
$sqlQuery = sisplet_query ( $sql_string );
if ( ! $sqlQuery ) {
$error = mysqli_error ( $GLOBALS [ 'connect_db' ]);
$return [ 'error' ] = '1' ;
$return [ 'msg' ] = $error ;
}
sisplet_query ( " COMMIT " );
}
echo json_encode ( $return );
exit ;
}
function editRecProfile () {
global $lang , $site_url , $global_user_id ;
$return = array ( 'error' => '0' );
$pid = ( int ) $_POST [ 'pid' ];
if ( $pid > 0 ) {
$sql_string = " SELECT * FROM srv_invitations_recipients_profiles WHERE pid=' " . $pid . " ' " ;
$sqlQuery = sisplet_query ( $sql_string );
$sqlRow = mysqli_fetch_assoc ( $sqlQuery );
echo '<div id="inv_recipients_profile_name">' ;
echo '<div id="inv_error_note" class="hidden"></div>' ;
echo '<table>' ;
echo '<tr><td class="bold">' . $lang [ 'srv_inv_recipient_list_name' ] . '</td>' ;
echo '<td>' ;
echo '<input type="text" id="rec_profile_name" value="' . $sqlRow [ 'name' ] . '" autofocus="autofocus" style="width: 200px;">' ;
echo '</td></tr>' ;
echo '</table>' ;
echo '<input type="hidden" id="rec_profile_pid" value="' . $pid . '" >' ;
echo '<br class="clr" />' ;
echo '<span class="buttonwrapper floatRight spaceRight" title="' . $lang [ 'srv_cancel' ] . '"><a class="ovalbutton ovalbutton_gray" href="#" onclick="$(\'#fade\').fadeOut(\'slow\');$(\'#fullscreen\').fadeOut(\'slow\').html(\'\');return false;" ><span>' . $lang [ 'srv_cancel' ] . '</span></a></span>' ;
echo '<span class="buttonwrapper floatRight spaceRight" title="' . $lang [ 'save' ] . '"><a class="ovalbutton ovalbutton_orange" href="#" onclick="inv_update_rec_profile(); return false;"><span>' . $lang [ 'save' ] . '</span></a></span>' ;
echo '<br class="clr" />' ;
echo '</div>' ; # id="inv_view_arch_recipients"
sisplet_query ( " COMMIT " );
}
echo json_encode ( $return );
exit ;
}
function deleteMsgProfile () {
global $lang , $site_url , $global_user_id ;
$return = array ( 'error' => '0' );
$mid = isset ( $_POST [ 'mid' ]) && ( int ) $_POST [ 'mid' ] > 0 ? ( int ) $_POST [ 'mid' ] : null ;
# preštejemo koliko profilov imamo. Zadnjega ne pustimo izbrisati
$sql_string = " SELECT id FROM srv_invitations_messages WHERE ank_id = ' $this->sid ' AND id <> ' " . $mid . " ' LIMIT 1 " ;
$sql_query = sisplet_query ( $sql_string );
list ( $id ) = mysqli_fetch_row ( $sql_query );
if (( int ) $id > 0 ) {
# nastavimo na nov id
$sql_string = " UPDATE srv_invitations_messages SET isdefault = '1' WHERE ank_id = ' $this->sid ' AND id=' $id ' " ;
$sqlQuery = sisplet_query ( $sql_string );
# če imamo še kak profil pustimo zbrisat izbranega
if (( int ) $mid > 0 ) {
$sql_string = " DELETE FROM srv_invitations_messages WHERE id=' " . $mid . " ' " ;
$return [ 'str' ] = $sql_string ;
$sqlQuery = sisplet_query ( $sql_string );
if ( ! $sqlQuery ) {
$error = mysqli_error ( $GLOBALS [ 'connect_db' ]);
$return [ 'error' ] = '1' ;
$return [ 'msg' ] = $error ;
}
}
sisplet_query ( " COMMIT " );
$this -> viewMessage ( $id );
}
#$this->viewMessage();
# echo json_encode($return);
# exit;
}
function showMessageRename () {
global $lang ;
$mid = ( int ) $_POST [ 'mid' ];
echo '<div id="inv_recipients_profile_name">' ;
echo $lang [ 'srv_inv_message_rename_new_name' ] . ' ' ;
# polovimo vsa sporočila
$sql_string = " SELECT naslov, comment FROM srv_invitations_messages WHERE ank_id = ' $this->sid ' AND id = ' $mid ' " ;
list ( $naslov , $comment ) = mysqli_fetch_row ( sisplet_query ( $sql_string ));
echo '<input type="text" id="inv_message_profile_name" value="' . $naslov . '" tabindex="1" autofocus="autofocus">' ;
echo '<br/><br/>' ;
echo $lang [ 'srv_inv_message_draft_list_comment' ];
echo '<textarea id="inv_message_comment" tabindex="3" rows="2" style="width:200px;">' . ( $comment ) . '</textarea>' ;
echo '<br class="clr" /><br class="clr" />' ;
echo '<span class="buttonwrapper floatRight spaceRight" title="' . $lang [ 'save' ] . '"><a class="ovalbutton ovalbutton_orange" href="#" onclick="invMessageRename(); return false;"><span>' . $lang [ 'save' ] . '</span></a></span>' ;
echo '<span class="buttonwrapper floatRight spaceRight" title="' . $lang [ 'srv_cancel' ] . '"><a class="ovalbutton ovalbutton_gray" href="#" onclick="$(\'#fade\').fadeOut(\'slow\');$(\'#fullscreen\').fadeOut(\'slow\').html(\'\');return false;" ><span>' . $lang [ 'srv_cancel' ] . '</span></a></span>' ;
echo '<br class="clr" />' ;
echo '</div>' ;
}
function messageRename () {
global $lang ;
$return = array ( 'msg' => '' , 'error' => '0' );
$mid = ( int ) $_POST [ 'mid' ];
$return [ 'mid' ] = $mid ;
$name = trim ( $_POST [ 'name' ]);
$comment = trim ( $_POST [ 'comment' ]);
if ( $name == '' || $name == null ) {
$name = $this -> generateMessageName ();
}
if ( $mid > 0 ) {
#updejtamo obstoječ profil
$sql_string = " UPDATE srv_invitations_messages SET naslov=' " . $name . " ', comment=' " . $comment . " ', edit_uid=' " . $global_user_id . " ', edit_time=NOW() WHERE ank_id = ' $this->sid ' AND id=' $mid ' " ;
$sqlQuery = sisplet_query ( $sql_string );
if ( $sqlQuery != 1 ) {
$return [ 'error' ] = '1' ;
$return [ 'msg' ] .= $newline . $lang [ 'srv_inv_msg_4' ];
}
sisplet_query ( " COMMIT " );
} else {
$return [ 'error' ] = '1' ;
$return [ 'msg' ] .= $newline . $lang [ 'srv_inv_msg_4' ];
}
echo json_encode ( $return );
exit ;
}
function editRecipient () {
global $lang ;
echo '<div id="inv_recipient_edit">' ;
echo '<h2>Urejanje respondenta</h2>' ;
if (( int ) $_POST [ 'inv_rid' ] > 0 ) {
# polovimo podatke respondenta
$sql_string = " SELECT * FROM srv_invitations_recipients WHERE id = ' " . ( int ) $_POST [ 'inv_rid' ] . " ' " ;
$sql_query = sisplet_query ( $sql_string );
$sql_row = mysqli_fetch_assoc ( $sql_query );
echo '<div id="inv_error_note" class="hidden"/>' ;
echo '<input type="hidden" id="inv_rid" value="' . $sql_row [ 'id' ] . '">' ;
echo '<table id="inv_edit_recipient">' ;
#email
echo '<tr><th>' . $lang [ 'srv_inv_field_email' ] . '</th><td>' ;
echo '<input type="text" id="rec_email" value="' . $sql_row [ 'email' ] . '" autocomplete="off" maxlength="100">' ;
echo '</td></tr>' ;
#geslo
echo '<tr><th>' . $lang [ 'srv_inv_field_password' ] . '</th><td>' ;
echo '<input type="text" id="rec_password" value="' . $sql_row [ 'password' ] . '" autocomplete="off" maxlength="45">' ;
echo '</td></tr>' ;
#ime
echo '<tr><th>' . $lang [ 'srv_inv_field_firstname' ] . '</th><td>' ;
echo '<input type="text" id="rec_firstname" value="' . $sql_row [ 'firstname' ] . '" autocomplete="off" maxlength="45">' ;
echo '</td></tr>' ;
#priimek
echo '<tr><th>' . $lang [ 'srv_inv_field_lastname' ] . '</th><td>' ;
echo '<input type="text" id="rec_lastname" value="' . $sql_row [ 'lastname' ] . '" autocomplete="off" maxlength="45">' ;
echo '</td></tr>' ;
#naziv
echo '<tr><th>' . $lang [ 'srv_inv_field_salutation' ] . '</th><td>' ;
echo '<input type="text" id="rec_salutation" value="' . $sql_row [ 'salutation' ] . '" autocomplete="off" maxlength="45">' ;
echo '</td></tr>' ;
#telefon
echo '<tr><th>' . $lang [ 'srv_inv_field_phone' ] . '</th><td>' ;
echo '<input type="text" id="rec_phone" value="' . $sql_row [ 'phone' ] . '" autocomplete="off" maxlength="45">' ;
echo '</td></tr>' ;
#drugo
echo '<tr><th>' . $lang [ 'srv_inv_field_custom' ] . '</th><td>' ;
echo '<input type="text" id="rec_custom" value="' . $sql_row [ 'custom' ] . '" autocomplete="off" maxlength="100">' ;
echo '</td></tr>' ;
#odnos
if ( SurveyInfo :: getInstance () -> checkSurveyModule ( '360_stopinj' )){
echo '<tr><th>' . $lang [ 'srv_inv_field_relation' ] . '</th><td>' ;
echo '<input type="text" id="rec_relation" value="' . $sql_row [ 'relation' ] . '" autocomplete="off" maxlength="100">' ;
echo '</td></tr>' ;
}
echo '</table>' ;
echo '<br class="clr"/>' ;
echo '<br class="clr"/>' ;
echo '<span id="save_recipients" class="buttonwrapper floatRight" ><a class="ovalbutton ovalbutton_orange" href="#" onclick="inv_save_recipient();return false;" ><span>' . $lang [ 'srv_inv_recipient_save' ] . '</span></a></span>' ;
}
echo '<span class="buttonwrapper floatRight spaceRight" title="' . $lang [ 'srv_cancel' ] . '"><a class="ovalbutton ovalbutton_gray" href="#" onclick="$(\'#fade\').fadeOut(\'slow\');$(\'#fullscreen\').fadeOut(\'slow\').html(\'\');return false;" ><span>' . $lang [ 'srv_cancel' ] . '</span></a></span>' ;
echo '<br class="clr"/>' ;
echo '</div>' ;
}
function saveRecipient () {
global $lang ;
$return = array ( 'msg' => $lang [ 'srv_inv_error1' ], 'error' => '0' );
$rid = ( int ) trim ( $_POST [ 'inv_rid' ]);
$rec_email = trim ( $_POST [ 'rec_email' ]);
$rec_password = trim ( $_POST [ 'rec_password' ]);
$rec_firstname = trim ( $_POST [ 'rec_firstname' ]);
$rec_lastname = trim ( $_POST [ 'rec_lastname' ]);
$rec_salutation = trim ( $_POST [ 'rec_salutation' ]);
$rec_phone = trim ( $_POST [ 'rec_phone' ]);
$rec_custom = trim ( $_POST [ 'rec_custom' ]);
$rec_relation = ( int ) trim ( $_POST [ 'rec_relation' ]);
$return [ 'rid' ] = $rid ;
$sql_string = " SELECT email FROM srv_invitations_recipients WHERE ank_id = ' " . $this -> sid . " ' AND id = ' " . $rid . " ' " ;
$sql_query = sisplet_query ( $sql_string );
$sql_row = mysqli_fetch_assoc ( $sql_query );
$newline = '<br/>' ;
# če smo imeli polje email ga preverjamo
if ( $sql_row [ 'email' ] != null || trim ( $sql_row [ 'email' ]) != '' || ( $rec_email != null && $rec_email != '' )) {
# email ne sme biti prazen
if (( $sql_row [ 'email' ] != null || trim ( $sql_row [ 'email' ]) != '' ) && ( $rec_email == null || $rec_email == '' )) {
$return [ 'error' ] = '1' ;
$return [ 'msg' ] .= $newline . $lang [ 'srv_inv_error2' ];
$return [ 'error_email' ] = '1' ;
$newline = '<br/>' ;
} else if ( ! $this -> validEmail ( $rec_email )) {
# email mora biti pravilne oblike
$return [ 'error' ] = '1' ;
$return [ 'msg' ] .= $newline . $lang [ 'srv_inv_error3' ];
$return [ 'error_email' ] = '1' ;
$newline = '<br/>' ;
}
}
# password ne sme biti prazen
if ( $rec_password == null || $rec_password == '' ) {
$return [ 'error' ] = '1' ;
$return [ 'msg' ] .= $newline . $lang [ 'srv_inv_error4' ];
$return [ 'error_password' ] = '1' ;
$newline = '<br/>' ;
} else {
#preverimo da geslo še ni uporabljeno za to anketo za katerega drugega respondenta
$sql_string = " SELECT * FROM srv_invitations_recipients WHERE ank_id = ' " . $this -> sid . " ' AND password = ' " . $rec_password . " ' AND id != ' " . $rid . " ' " ;
$sql_query = sisplet_query ( $sql_string );
if ( mysqli_num_rows ( $sql_query ) > 0 ) {
$return [ 'error' ] = '1' ;
$return [ 'msg' ] .= $newline . $lang [ 'srv_inv_error5' ];
$return [ 'error_password' ] = '1' ;
$newline = '<br/>' ;
}
}
# če ni napak shranimo
if ( $return [ 'error' ] == '0' ) {
# ali shranjujemo obstoječ msg
$sql_string = " UPDATE srv_invitations_recipients SET "
. " email = ' " . strtolower ( $rec_email ) . " ', "
. " password = ' $rec_password ', "
. " firstname = ' $rec_firstname ', "
. " lastname = ' $rec_lastname ', "
. " salutation = ' $rec_salutation ', "
. " phone = ' $rec_phone ', "
. " custom = ' $rec_custom ', "
. " relation = ' $rec_relation ' "
. " WHERE ank_id = ' $this->sid ' AND id=' $rid ' " ;
$sqlQuery = sisplet_query ( $sql_string );
sisplet_query ( " COMMIT " );
if ( $sqlQuery != 1 ) {
$return [ 'error' ] = '1' ;
$return [ 'msg' ] .= $newline . $lang [ 'srv_inv_error6' ];
}
}
# MAP: če imamo mapirano, updejtamo tudi pri podatkih
$strMap = " SELECT spr_id FROM srv_invitations_mapping WHERE sid = ' " . $this -> sid . " ' AND field='email' " ;
$qryMap = sisplet_query ( $strMap );
list ( $mapSprId ) = mysqli_fetch_row ( $qryMap );
if (( int ) $mapSprId > 0 ) {
# preverimo ali ima respondent povezavo na srv_user
$selectUser = " SELECT id FROM srv_user where ank_id=' " . $this -> sid . " ' AND inv_res_id=' $rid ' AND deleted='0' " ;
$qryUser = sisplet_query ( $selectUser );
list ( $uid ) = mysqli_fetch_row ( $qryUser );
if (( int ) $uid > 0 && $this -> validEmail ( $rec_email )) {
$updateStr = " UPDATE srv_data_text " . $this -> db_table . " SET text = ' $rec_email ' WHERE spr_id=' $mapSprId ' AND usr_id=' " . ( int ) $uid . " ' " ;
$qryUpdate = sisplet_query ( $updateStr );
if (( int ) $qryUpdate > 0 ) {
# updejtamo še timestamp userja
$updateUserString = " UPDATE srv_user SET time_edit=NOW() WHERE id=' " . ( int ) $uid . " ' " ;
$qryUserUpdate = sisplet_query ( $updateUserString );
}
}
}
$sql_string = " SELECT * FROM srv_invitations_recipients WHERE ank_id = ' " . $this -> sid . " ' AND id = ' " . $rid . " ' " ;
$sql_query = sisplet_query ( $sql_string );
$return [ 'rec' ] = mysqli_fetch_assoc ( $sql_query );
echo json_encode ( $return );
exit ;
}
function setRecipientFilter (){
session_start ();
if ( isset ( $_POST [ 'inv_filter_on' ]) && $_POST [ 'inv_filter_on' ] == 'true' ) {
$_SESSION [ 'inv_filter_on' ] = true ;
} else {
$_SESSION [ 'inv_filter_on' ] = false ;
}
$_SESSION [ 'inv_filter' ][ 'value' ] = trim ( $_POST [ 'inv_filter_value' ]);
$_SESSION [ 'inv_filter' ][ 'send' ] = ( int ) $_POST [ 'inv_filter_send' ];
$_SESSION [ 'inv_filter' ][ 'respondet' ] = ( int ) $_POST [ 'inv_filter_respondet' ];
$_SESSION [ 'inv_filter' ][ 'unsubscribed' ] = ( int ) $_POST [ 'inv_filter_unsubscribed' ];
# če ni seznama privzeto damo na vsi
if ( ! isset ( $_POST [ 'inv_filter_list' ]) && ! isset ( $_SESSION [ 'inv_filter' ][ 'list' ])) {
$_SESSION [ 'inv_filter' ][ 'list' ] = '-2' ;
} else {
$_SESSION [ 'inv_filter' ][ 'list' ] = ( int ) $_POST [ 'inv_filter_list' ];
}
if ( isset ( $_POST [ 'inv_filter_duplicates' ]) && $_POST [ 'inv_filter_duplicates' ] == 'true' ) {
$_SESSION [ 'inv_filter' ][ 'duplicated' ] = true ;
} else {
$_SESSION [ 'inv_filter' ][ 'duplicated' ] = false ;
}
session_commit ();
return ;
}
function exportRecipients () {
global $lang ;
$convertTypes = array ( 'charSet' => 'UTF-8' , # windows-1250',
'delimit' => ';' ,
'newLine' => " \n " ,
'BOMchar' => " \xEF \xBB \xBF " );
#header('Content-Type: application/octet-stream; charset='.$convertTypes['charSet']);
header ( 'Content-type: application/csv; charset=' . $convertTypes [ 'charSet' ]);
header ( 'Content-Transfer-Encoding: binary' );
header ( 'Content-Disposition: attachment; filename="respondenti_anketa_' . $this -> sid . '-' . date ( 'Y-m-d' ) . '.csv"' );
header ( 'Pragma: public' );
header ( 'Expires: 0' );
header ( 'Cache-Control: must-revalidate, post-check=0, pre-check=0' );
header ( 'Cache-Control: private' , false );
ob_clean ();
# dodami boomchar za utf-8
echo $convertTypes [ 'BOMchar' ];
#array z napakami
$errors = array ();
$inv_rids = $_POST [ 'inv_rids' ];
if ( is_array ( $inv_rids ) && count ( $inv_rids ) > 0 ) {
// Ce delamo izvoz za telefonski modul
if ( SurveyInfo :: getInstance () -> checkSurveyModule ( 'phone' )){
$delimit = '' ;
foreach ( $this -> inv_variables_tel_excel AS $vkey => $inv_variable ) {
echo $delimit . $lang [ 'srv_inv_recipients_' . $inv_variable ];
$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, scm.comment, scs.call_time, sch.status "
. " FROM srv_invitations_recipients AS sir "
. " LEFT JOIN srv_invitations_recipients_profiles AS sirp ON (sir.list_id = sirp.pid) "
. " LEFT JOIN srv_telephone_comment AS scm ON (scm.rec_id = sir.id) "
. " LEFT JOIN srv_telephone_schedule AS scs ON (scs.rec_id = sir.id) "
. " LEFT JOIN srv_telephone_history AS sch ON (sch.rec_id = sir.id) "
. " WHERE sir.id IN( " . implode ( ',' , $inv_rids ) . " ) ORDER BY id " ;
$sqlQuery = sisplet_query ( $sqlString );
if ( mysqli_num_rows ( $sqlQuery )) {
while ( $sql_row = mysqli_fetch_assoc ( $sqlQuery )) {
foreach ( $this -> inv_variables_tel_excel AS $vkey => $inv_variable ) {
if ( $inv_variable == 'status' && $sql_row [ $inv_variable ] == '' )
echo $lang [ 'srv_telephone_status_' ] . $convertTypes [ 'delimit' ];
else
echo $sql_row [ $inv_variable ] . $convertTypes [ 'delimit' ];
}
echo $convertTypes [ 'newLine' ];
}
}
}
// Izvoz za navadna vabila
else {
$delimit = '' ;
foreach ( $this -> inv_variables_excel AS $vkey => $inv_variable ) {
echo $delimit . $lang [ 'srv_inv_recipients_' . $inv_variable ];
$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.id IN( " . implode ( ',' , $inv_rids ) . " ) ORDER BY id " ;
/*
$sqlString = " SELECT sir.*, IF(sirp.name IS NULL, ' " . $lang [ 'srv_invitation_new_templist_author' ] . " ', sirp.name) AS list_name, count(siar.arch_id) AS count_inv "
. " 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.id IN( " . implode ( ',' , $inv_rids ) . " ) GROUP BY siar.rec_id 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' ];
}
}
}
}
else {
echo $lang [ 'srv_inv_error7' ];
}
ob_flush ();
}
function exportRecipients_all () {
global $lang ;
$convertTypes = array ( 'charSet' => 'UTF-8' , # windows-1250',
'delimit' => ';' ,
'newLine' => " \n " ,
'BOMchar' => " \xEF \xBB \xBF " );
#header('Content-Type: application/octet-stream; charset='.$convertTypes['charSet']);
header ( 'Content-type: application/csv; charset=' . $convertTypes [ 'charSet' ]);
header ( 'Content-Transfer-Encoding: binary' );
header ( 'Content-Disposition: attachment; filename="respondenti_anketa_' . $this -> sid . '-' . date ( 'Y-m-d' ) . '.csv"' );
header ( 'Pragma: public' );
header ( 'Expires: 0' );
header ( 'Cache-Control: must-revalidate, post-check=0, pre-check=0' );
header ( 'Cache-Control: private' , false );
ob_clean ();
# dodami boomchar za utf-8
echo $convertTypes [ 'BOMchar' ];
// Ce delamo izvoz za telefonski modul
if ( SurveyInfo :: getInstance () -> checkSurveyModule ( 'phone' )){
#array z napakami
$errors = array ();
$delimit = '' ;
foreach ( $this -> inv_variables_tel_excel AS $vkey => $inv_variable ) {
echo $delimit . $lang [ 'srv_inv_recipients_' . $inv_variable ];
$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, scm.comment, scs.call_time, sch.status "
. " FROM srv_invitations_recipients AS sir "
. " LEFT JOIN srv_invitations_recipients_profiles AS sirp ON (sir.list_id = sirp.pid) "
. " LEFT JOIN srv_telephone_comment AS scm ON (scm.rec_id = sir.id) "
. " LEFT JOIN srv_telephone_schedule AS scs ON (scs.rec_id = sir.id) "
. " LEFT JOIN srv_telephone_history AS sch ON (sch.rec_id = sir.id) "
. " WHERE sir.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_tel_excel AS $vkey => $inv_variable ) {
if ( $inv_variable == 'status' && $sql_row [ $inv_variable ] == '' )
echo $lang [ 'srv_telephone_status_' ] . $convertTypes [ 'delimit' ];
else
echo $sql_row [ $inv_variable ] . $convertTypes [ 'delimit' ];
}
echo $convertTypes [ 'newLine' ];
}
}
}
// Izvoz za navadna vabila
else {
#array z napakami
$errors = array ();
$delimit = '' ;
foreach ( $this -> inv_variables_excel AS $vkey => $inv_variable ) {
echo $delimit . $lang [ 'srv_inv_recipients_' . $inv_variable ];
$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' ];
}
}
}
ob_flush ();
}
function onlyThisSurvey () {
session_start ();
$_SESSION [ 'inv_rec_only_this_survey' ] = ( isset ( $_POST [ 'checked' ]) && $_POST [ 'checked' ] == 'true' );
}
function hightlight ( $str , $keywords = '' ) {
$keywords = preg_replace ( '/\s\s+/' , ' ' , strip_tags ( trim ( $keywords ))); // filter
$style = 'inv_high' ;
$style_i = 'inv_high_i' ;
/* Apply Style */
$var = '' ;
foreach ( explode ( ' ' , $keywords ) as $keyword )
{
$replacement = " <span class=' " . $style . " '> " . $keyword . " </span> " ;
$var .= $replacement . " " ;
$str = str_ireplace ( $keyword , $replacement , $str );
}
/* Apply Important Style */
$str = str_ireplace ( rtrim ( $var ), " <span class=' " . $style_i . " '> " . $keywords . " </span> " , $str );
return $str ;
}
// Dodamo vse userje v bazo podatkov kot respondente
function add_users_to_database () {
2021-03-11 16:10:32 +01:00
// Preverimo ce je vklopljen modul za volitve
$voting = SurveyInfo :: getInstance () -> checkSurveyModule ( 'voting' );
2020-08-14 13:36:36 +02:00
# prejeminki besedila
2021-03-11 16:10:32 +01:00
$sql_query = sisplet_query ( " SELECT id, firstname, lastname, email, password, password, cookie, phone, salutation, custom, relation
FROM srv_invitations_recipients
WHERE ank_id = '".$this->sid."' AND deleted = '0' AND sent = '0'
" );
2020-08-14 13:36:36 +02:00
# polovimo sistemske spremenljivke z vrednostmi
2021-03-11 16:10:32 +01:00
$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->sid."'
AND variable IN ( " . " '" . implode("' , '",$this->inv_variables)."' )
ORDER BY g . vrstni_red , s . vrstni_red
" );
2020-08-14 13:36:36 +02:00
$sys_vars = array ();
$sys_vars_ids = array ();
2021-03-11 16:10:32 +01:00
2020-08-14 13:36:36 +02:00
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' ];
}
2021-03-11 16:10:32 +01:00
$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
" );
2020-08-14 13:36:36 +02:00
while ( $row = mysqli_fetch_assoc ( $sqlVrednost )) {
2021-03-11 16:10:32 +01:00
// Ce gre za odnos imamo radio
2020-08-14 13:36:36 +02:00
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' ];
}
}
# array za rezultate
$send_users_data = array ();
# zloopamo skozi prejemnike in personaliziramo sporočila in jih pošljemo
$date_sent = date ( " Y-m-d H:i:s " );
while ( $sql_row = mysqli_fetch_assoc ( $sql_query )) {
$_user_data = $sql_row ;
$_user_data [ 'status' ] = 1 ;
$send_users_data [] = $_user_data ;
}
# dodamo še userja v srv_user da je kompatibilno s staro logiko
$strInsertDataText = array ();
$strInsertUserbase = array ();
$strInsertUserstatus = array ();
foreach ( $send_users_data AS $user_data ) {
2021-03-11 16:10:32 +01:00
// Pri volitvah zaradi anonimizacije ignoriramo vse identifikatorje
if ( $voting ){
sisplet_query ( " INSERT INTO srv_user
2021-03-16 10:11:08 +01:00
( ank_id , cookie , pass , last_status , inv_res_id )
2021-03-11 16:10:32 +01:00
VALUES
2021-03-16 10:11:08 +01:00
( '".$this->sid."' , '".$user_data[' cookie ']."' , '".$user_data[' password ']."' , '".$user_data[' status ']."' , '-1' ) ON DUPLICATE KEY UPDATE last_status = VALUES ( last_status )
2021-03-11 16:10:32 +01:00
" );
2021-03-30 12:58:34 +02:00
// 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 -> sid . " ' " );
2021-03-11 16:10:32 +01:00
}
else {
sisplet_query ( " INSERT INTO srv_user
( ank_id , email , cookie , pass , last_status , time_insert , inv_res_id )
VALUES
( '".$this->sid."' , '".$user_data[' email ']."' , '".$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 )
" );
}
$usr_id = mysqli_insert_id ( $GLOBALS [ 'connect_db' ]);
2020-08-14 13:36:36 +02:00
if ( $usr_id ) {
# za update v srv_invitations_respondents
$send_ok_ids [] = $user_data [ 'id' ];
2021-03-11 16:10:32 +01:00
}
else {
2020-08-14 13:36:36 +02:00
$send_error_ids [] = $user_data ;
}
2021-03-11 16:10:32 +01:00
2020-08-14 13:36:36 +02:00
# dodamo še srv_userbase in srv userstatus
$strInsertUserbase [] = " (' " . $usr_id . " ','0',NOW(),' " . $global_user_id . " ') " ;
$strInsertUserstatus [] = " (' " . $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' ]];
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 . " ') " ;
}
}
sisplet_query ( " COMMIT " );
}
# vstavimo v srv_userbase
if ( count ( $strInsertUserbase ) > 0 ) {
$strInsert = " INSERT INTO srv_userbase (usr_id, tip, datetime, admin_id) VALUES " ;
$strInsert .= implode ( ',' , $strInsertUserbase );
sisplet_query ( $strInsert );
}
# vstavimo v srv_userstatus
if ( count ( $strInsertUserstatus ) > 0 ) {
$strInsert = " INSERT INTO srv_userstatus (usr_id, tip, status, datetime) VALUES " ;
$strInsert .= implode ( ',' , $strInsertUserstatus );
sisplet_query ( $strInsert );
}
2021-03-11 16:10:32 +01:00
// 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 );
}
}
2020-08-14 13:36:36 +02:00
sisplet_query ( " COMMIT " );
# zloopamo skozi prejemnike in personaliziramo sporočila in jih pošljemo
$date_sent = date ( " Y-m-d H:i:s " );
# updejtamo userja da mu je bilo poslano
if ( count ( $send_ok_ids ) > 0 ) {
2020-11-19 12:18:05 +01:00
2021-03-11 16:10:32 +01:00
$sqlQuery = sisplet_query ( " UPDATE srv_invitations_recipients SET sent='1', date_sent = ' " . $date_sent . " ' WHERE id IN ( " . implode ( ',' , $send_ok_ids ) . " ) " );
if ( ! $sqlQuery )
2020-08-14 13:36:36 +02:00
$error = mysqli_error ( $GLOBALS [ 'connect_db' ]);
2020-11-19 12:18:05 +01:00
2021-03-11 16:10:32 +01:00
$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 )
2020-08-14 13:36:36 +02:00
$error = mysqli_error ( $GLOBALS [ 'connect_db' ]);
}
$msg = array ( $lang [ 'srv_inv_activate_respondents' ] . count ( $send_ok_ids ));
2020-11-19 12:18:05 +01:00
if ( count ( $send_error_ids ) > 0 ) {
2020-08-14 13:36:36 +02:00
print_r ( " <pre> " );
print_r ( $lang [ 'srv_inv_error0' ]);
print_r ( $send_error_ids );
print_r ( " </pre> " );
2020-11-19 12:18:05 +01:00
}
2020-08-14 13:36:36 +02:00
# popravimo timestamp za regeneracijo dashboarda
Common :: getInstance () -> Init ( $anketa );
Common :: getInstance () -> updateEditStamp ();
$this -> viewRecipients ( /*array(),$msg*/ );
}
// Dodamo samo izbrane userje v bazo podatkov kot respondente
function add_checked_users_to_database () {
global $site_url ;
// Prejemniki, ki jih ročno dodajamo med respondente
$inv_rids = $_POST [ 'inv_rids' ];
# prejeminki besedila
$sql_string = " SELECT id, firstname, lastname, email, password, cookie, phone, salutation, custom, relation FROM srv_invitations_recipients WHERE ank_id = ' " . $this -> sid . " ' AND deleted='0' AND sent='0' AND id IN( " . implode ( ',' , $inv_rids ) . " ) " ;
$sql_query = sisplet_query ( $sql_string );
# polovimo sistemske spremenljivke z vrednostmi
$strSistemske = " 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 -> sid . " ' AND variable IN( " . " ' " . implode ( " ',' " , $this -> inv_variables ) . " ') ORDER BY g.vrstni_red, s.vrstni_red " ;
$qrySistemske = sisplet_query ( $strSistemske );
$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' ];
}
}
# array za rezultate
$send_users_data = array ();
# zloopamo skozi prejemnike in personaliziramo sporočila in jih pošljemo
$date_sent = date ( " Y-m-d H:i:s " );
while ( $sql_row = mysqli_fetch_assoc ( $sql_query )) {
$_user_data = $sql_row ;
$_user_data [ 'status' ] = 1 ;
$send_users_data [] = $_user_data ;
}
# dodamo še userja v srv_user da je kompatibilno s staro logiko
$strInsertDataText = array ();
$strInsertUserbase = array ();
$strInsertUserstatus = array ();
foreach ( $send_users_data AS $user_data ) {
$strInsert = " INSERT INTO srv_user (ank_id, email, cookie, pass, last_status, time_insert, inv_res_id) VALUES (' " . $this -> sid . " ', ' " . $user_data [ 'email' ] . " ', ' " . $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) " ;
sisplet_query ( $strInsert );
$usr_id = mysqli_insert_id ( $GLOBALS [ 'connect_db' ]);
if ( $usr_id ) {
# za update v srv_invitations_respondents
$send_ok_ids [] = $user_data [ 'id' ];
} else {
$send_error_ids [] = $user_data ;
}
# dodamo še srv_userbase in srv userstatus
$strInsertUserbase [] = " (' " . $usr_id . " ','0',NOW(),' " . $global_user_id . " ') " ;
$strInsertUserstatus [] = " (' " . $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' ]];
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 . " ') " ;
}
}
sisplet_query ( " COMMIT " );
}
# vstavimo v srv_userbase
if ( count ( $strInsertUserbase ) > 0 ) {
$strInsert = " INSERT INTO srv_userbase (usr_id, tip, datetime, admin_id) VALUES " ;
$strInsert .= implode ( ',' , $strInsertUserbase );
sisplet_query ( $strInsert );
}
# vstavimo v srv_userstatus
if ( count ( $strInsertUserstatus ) > 0 ) {
$strInsert = " INSERT INTO srv_userstatus (usr_id, tip, status, datetime) VALUES " ;
$strInsert .= implode ( ',' , $strInsertUserstatus );
sisplet_query ( $strInsert );
}
# 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 );
}
sisplet_query ( " COMMIT " );
# zloopamo skozi prejemnike in personaliziramo sporočila in jih pošljemo
$date_sent = date ( " Y-m-d H:i:s " );
# updejtamo userja da mu je bilo poslano
if ( count ( $send_ok_ids ) > 0 ) {
$sqlString = " UPDATE srv_invitations_recipients SET sent = '1', date_sent = ' " . $date_sent . " ' WHERE id IN ( " . implode ( ',' , $send_ok_ids ) . " ) " ;
$sqlQuery = sisplet_query ( $sqlString );
if ( ! $sqlQuery ) {
$error = mysqli_error ( $GLOBALS [ 'connect_db' ]);
}
$sqlString = " UPDATE srv_invitations_recipients SET last_status = '1' WHERE id IN ( " . implode ( ',' , $send_ok_ids ) . " ) AND last_status IN ('0','2') " ;
$sqlQuery = sisplet_query ( $sqlString );
if ( ! $sqlQuery ) {
$error = mysqli_error ( $GLOBALS [ 'connect_db' ]);
}
}
$msg = array ( $lang [ 'srv_inv_activate_respondents' ] . count ( $send_ok_ids ));
if ( count ( $send_error_ids ) > 0 ) {
print_r ( " <pre> " );
print_r ( $lang [ 'srv_inv_error0' ]);
print_r ( $send_error_ids );
print_r ( " </pre> " );
}
# popravimo timestamp za regeneracijo dashboarda
Common :: getInstance () -> Init ( $anketa );
Common :: getInstance () -> updateEditStamp ();
header ( 'location: ' . $site_url . 'admin/survey/index.php?anketa=' . $this -> sid . '&a=' . A_INVITATIONS . '&m=view_recipients' );
}
function getRespondents2Send ( $send_type , $checkboxes , $source_type , $source_lists , $noEmailing = 0 ) {
$respondenti = array ();
# če imamo dodatne omejitve source_type > 0 (arhivi, seznami) dodamo dodatno kontrolo na id-je respondentov
$advancedConditionJoin = '' ;
$advancedCondition = '' ;
if ( $source_type == 0 )
{
$this -> user_inv_ids = array ();
if (( int ) $this -> invitationAdvancedConditionId > 0 )
{
$this -> user_inv_ids = $this -> getConditionUserIds ( $this -> invitationAdvancedConditionId );
if ( isset ( $this -> user_inv_ids ) && is_array ( $this -> user_inv_ids ) && count ( $this -> user_inv_ids ) > 0 )
{
$advancedConditionJoin = " INNER JOIN srv_user AS su ON i.id = su.inv_res_id " ;
$advancedCondition = " AND su.ank_id = ' $this->sid ' AND su.inv_res_id IS NOT NULL AND su.deleted = '0' AND su.id IN (' " . ( implode ( '\',\'' , $this -> user_inv_ids )) . " ') " ;
}
}
}
else if ( $source_type == 1 )
{
# arhivi
if ( $source_lists != '' )
{
$sub_query = " AND i.id IN(SELECT rec_id AS id FROM srv_invitations_archive_recipients WHERE arch_id IN( " . $source_lists . " )) " ;
} else {
$sub_query = " AND 0=1 " ;
}
}
else if ( $source_type == 2 )
{
if ( $source_lists != '' )
{
$sub_query = " AND i.list_id IN( " . $source_lists . " ) " ;
}
else
{
$sub_query = " AND 0=1 " ;
}
}
# polovimo respondente ki ustrezajo posameznemu statusu
if ( $send_type == 0 )
{
}
if ( $send_type == 1 )
{
$sql_sub_condition = " AND i.sent = '0' " ;
}
if ( $send_type == 2 )
{
$sql_sub_condition = " AND i.sent = '1' AND i.responded = '0' " ;
}
if ( $send_type == 3 )
{
$sql_sub_condition = " AND i.sent = '1' AND i.responded = '1' " ;
}
if ( $send_type == 4 )
{
if ( $_POST [ 'checkboxes' ] != null && trim ( $_POST [ 'checkboxes' ]) != '' )
{
$sql_sub_condition = " AND i.last_status IN ( " . $_POST [ 'checkboxes' ] . " ) " ;
}
}
2021-03-24 09:25:14 +01:00
// Ce imamo vklopljene volitve potem posiljamo samo tistim, katerim še nismo poslali vabila (ponovno posiljanje ni mogoce)
$sql_voting_condition = ( SurveyInfo :: getInstance () -> checkSurveyModule ( 'voting' )) ? " AND i.sent = '0' AND i.cookie != '' AND i.password != '' " : " " ;
2020-08-14 13:36:36 +02:00
// Ce imamo posiljanje brez emaila, ni potrebno da je email vnesen za posameznega respondenta
if ( $noEmailing == 1 ){
$sql_fields = " SELECT DISTINCT i.password, i.id, i.email, i.firstname, i.last_status, i.list_id FROM srv_invitations_recipients AS i " ;
$sql_main_condition = " WHERE i.ank_id = ' " . $this -> sid . " ' AND i.deleted = '0' AND i.unsubscribed = '0' " ;
$sql_sort = " ORDER BY i.id ASC " ;
$sql_string = $sql_fields
. $advancedConditionJoin
. $sql_main_condition
. $advancedCondition
. $sql_sub_condition
. $sub_query
. $sql_sort ;
if ( $sql_string != null ) {
$qry = sisplet_query ( $sql_string );
while ( $row = mysqli_fetch_assoc ( $qry )) {
$respondenti [ $row [ 'password' ]] = array ( 'id' => $row [ 'id' ], 'email' => $row [ 'email' ], 'firstname' => $row [ 'firstname' ], 'status' => $row [ 'last_status' ], 'list_id' => $row [ 'list_id' ]);
}
}
}
else {
$sql_fields = " SELECT DISTINCT i.password, i.id, i.email, i.last_status, i.list_id FROM srv_invitations_recipients AS i " ;
$sql_main_condition = " WHERE i.ank_id = ' " . $this -> sid . " ' AND i.deleted = '0' AND i.unsubscribed = '0' AND i.email IS NOT NULL " ;
2021-03-24 09:25:14 +01:00
$sql_sort = " ORDER BY i.id ASC " ;
2020-08-14 13:36:36 +02:00
$sql_string = $sql_fields
. $advancedConditionJoin
. $sql_main_condition
2021-03-24 09:25:14 +01:00
. $sql_voting_condition
2020-08-14 13:36:36 +02:00
. $advancedCondition
. $sql_sub_condition
. $sub_query
. $sql_sort ;
if ( $sql_string != null ) {
$qry = sisplet_query ( $sql_string );
while ( $row = mysqli_fetch_assoc ( $qry )) {
$respondenti [ $row [ 'password' ]] = array ( 'id' => $row [ 'id' ], 'email' => $row [ 'email' ], 'status' => $row [ 'last_status' ], 'list_id' => $row [ 'list_id' ]);
}
}
}
return ( $respondenti );
}
/* Paginacija za pregled respondentov pred pošiljanjem
*
*/
function displaySendPagination ( $all_records ) {
global $lang , $site_url ;
#trenutna stran
$page = isset ( $_GET [ 'page' ]) ? $_GET [ 'page' ] : '1' ;
$current = is_numeric ( $_GET [ 'page' ]) && ( int ) $_GET [ 'page' ] > 0 ? $page : '1' ;
$all = ceil ( $all_records / $this -> rec_send_page_limit );
# current nastavimo na zadnji element
if ( $all > 1 ) {
echo '<div id="pagination">' ;
# povezava na prejšnjo stran
# $prev_page = $current - 1 ? $current - 1 :$current;
# echo('<div><a href="#" onclick="invSendPage('.($prev_page).','.$this->rec_send_page_limit.')">'.$lang['previous_page_short'].'</a></div>');
# povezave za vmesne strani
for ( $a = 1 ; $a <= $all ; $a ++ ) {
echo ( '<div value="' . $a . '" ' . ( $a == 1 ? ' class="currentPage_small"' : '' ) . '><a href="#" onclick="invSendPage(' . ( $a ) . ',' . $this -> rec_send_page_limit . ')">' . ( $a ) . '</a></div>' );
}
# povezava na naslednjo stran
# $next_page = ($current + 1) ? ($current + 1) : $current;
# echo('<div><a href="#" onclick="invSendPage('.($next_page).','.$this->rec_send_page_limit.')">'.$lang['next_page_short'].'</a></div>');
$rec_on_page = $all != $current ? $this -> rec_send_page_limit : ( $all_records - ( $all - 1 ) * $this -> rec_send_page_limit );
echo '</div>' ;
}
echo '<br/><div class="justtext">' . $lang [ 'srv_inv_pagination_shown' ];
$rec_on_page_options = array ( 20 , 50 , 100 , 200 , 500 , 1000 );
$none_added = true ;
$added_over = false ;
echo '<select onchange="invSendPageChangeLimit(this,\'' . $all_records . '\'); return false;">' ;
foreach ( $rec_on_page_options AS $option ) {
if ( $all_records >= $option || $none_added == true || $added_over == false ) {
echo '<option value="' . $option . '"' . ( $option == $this -> rec_send_page_limit ? ' selected="selected"' : '' ) . '>' . $option . '</option>' ;
$none_added = false ;
if ( $option > $all_records ) {
$added_over = true ;
}
}
#$rec_on_page;
}
echo '</select>' ;
echo $lang [ 'srv_inv_pagination_shown_records' ] . '</div>' ;
}
/* Paginacija za pregled reposndentov
*
*/
function displayPagination ( $all_records ) {
global $lang , $site_url ;
#trenutna stran
$page = isset ( $_GET [ 'page' ]) ? $_GET [ 'page' ] : '1' ;
$current = is_numeric ( $_GET [ 'page' ]) && ( int ) $_GET [ 'page' ] > 0 ? $page : '1' ;
$all = ceil ( $all_records / REC_ON_PAGE );
# current nastavimo na zadnji element
if ( $all > 1 ) {
echo '<div id="pagination">' ;
$baseUrl = $site_url . 'admin/survey/index.php?anketa=' . $this -> sid . '&a=' . A_INVITATIONS . '&m=view_recipients&page=' ;
# povezava -10
if ( $all > 10 ) {
if ( $current - 10 >= 0 ) {
echo ( '<div><a href="' . $baseUrl . ( $current - 10 ) . '">-10</a></div>' );
} else {
# brez href povezave
echo ( '<div class="disabledPage">-10</div>' );
}
}
# povezava na prejšnjo stran
$prev_page = $current - 1 ? $current - 1 : $current ;
if ( ( $current - 1 ) >= 1 ) {
echo ( '<div><a href="' . $baseUrl . $prev_page . '">' . $lang [ 'previous_page_short' ] . '</a></div>' );
} else {
# brez href povezave
echo ( '<div class="disabledPage">' . $lang [ 'previous_page_short' ] . '</div>' );
}
# povezave za vmesne strani
$middle = $all / 2 ;
$skipped = false ;
for ( $a = 1 ; $a <= $all ; $a ++ ) {
if ( $all < (( GROUP_PAGINATE + 1 ) * 2 ) || $a <= GROUP_PAGINATE || $a > ( $all - GROUP_PAGINATE )
|| ( abs ( $a - $current ) < GROUP_PAGINATE )) {
if ( $skipped == true ) {
echo '<div class="spacePage">. . .</div>' ;
$skipped = false ;
}
if ( $a == $current ) {
# brez href povezave
echo ( '<div class="currentPage">' . ( $a ) . '</div>' );
} else {
echo ( '<div><a href="' . $baseUrl . $a . '">' . ( $a ) . '</a></div>' );
}
} else {
$skipped = true ;
}
}
# povezava na naslednjo stran
$next_page = ( $current + 1 ) ? ( $current + 1 ) : $current ;
if (( $current ) < $all ) {
echo ( '<div><a href="' . $baseUrl . $next_page . '">' . $lang [ 'next_page_short' ] . '</a></div>' );
} else {
# brez href povezave
echo ( '<div class="disabledPage">' . $lang [ 'next_page_short' ] . '</div>' );
}
if ( $all > 10 ) {
if ( $current + 10 < $all ) {
echo ( '<div><a href="' . $baseUrl . ( $current + 10 ) . '">+10</a></div>' );
} else {
# brez href povezave
echo ( '<div class="disabledPage">+10</div>' );
}
}
$rec_on_page = $all != $current ? REC_ON_PAGE : ( $all_records - ( $all - 1 ) * REC_ON_PAGE );
echo '<div class="justtext">' . $lang [ 'srv_inv_pagination_shown' ] . $rec_on_page . $lang [ 'srv_inv_pagination_shown_records' ] . '</div>' ;
echo '</div>' ;
}
}
function saveArchiveComment () {
$id = $_POST [ 'aid' ];
$comment = $_POST [ 'comment' ];
if (( int ) $id > 0 ) {
$sql_string = " UPDATE srv_invitations_archive SET comment= ' " . $comment . " ' WHERE id = ' " . $id . " ' " ;
$sqlQuery = sisplet_query ( $sql_string );
sisplet_query ( " COMMIT " );
}
}
function generateMessageName () {
global $lang ;
# poiščemo nov naslov
# zaporedno številčimo ime sporočilo1,2.... če slučajno ime že obstaja
$new_name = $lang [ 'srv_inv_message_draft_name' ];
$names = array ();
$s = " SELECT naslov FROM srv_invitations_messages WHERE ank_id = ' " . $this -> sid . " ' AND naslov LIKE '% " . $new_name . " %' " ;
$q = sisplet_query ( $s );
while ( list ( $naslov ) = mysqli_fetch_row ( $q )) {
$names [] = $naslov ;
}
if ( count ( $names ) > 0 ) {
$cnt = 1 ;
while ( in_array ( $lang [ 'srv_inv_message_draft_name' ] . $cnt , $names )) {
$cnt ++ ;
}
$new_name = $lang [ 'srv_inv_message_draft_name' ] . $cnt ;
}
return $new_name ;
}
function editMessageDetails () {
global $lang ;
echo '<div id="inv_recipients_profile_name">' ;
echo $lang [ 'srv_inv_message_draft_new_save' ] . ': ' ;
# polovimo vsa sporočila
$sql_string = " SELECT * FROM srv_invitations_messages WHERE ank_id = ' $this->sid ' " ;
$sql_query = sisplet_query ( $sql_string );
echo '<select onchange="inv_new_message_list_change(this);" autofocus="autofocus" tabindex="2">' ;
echo '<option value="0" selected="selected" class="gray bold">' . $lang [ 'srv_inv_message_draft_new' ] . '</option>' ;
$messages = array ();
while ( $row = mysqli_fetch_assoc ( $sql_query ) ) {
$messages [ $row [ 'id' ]] = $row ;
#'.((int)$_POST['mid'] == $row['id'] ? ' selected="selected"' : '').'
echo '<option value="' . $row [ 'id' ] . '" comment="' . $row [ 'comment' ] . '">' . $row [ 'naslov' ] . '</option>' ;
}
echo '</select>' ;
#'.((int)$_POST['mid'] > 0 ? ' class="displayNone"' : '').'
echo '<span id="new_message_list_span">' ;
echo '<br><br/>' ;
echo '<label>' . $lang [ 'srv_inv_message_rename_new_name' ];
$newName = $this -> generateMessageName ();
echo '<input type="text" id="rec_profile_name" value="' . $newName . '" tabindex="1" autofocus="autofocus">' ;
echo '</label>' ;
echo '</span>' ;
echo '<br/><br/>' ;
echo $lang [ 'srv_inv_message_draft_list_comment' ];
#.((int)$_POST['mid'] > 0 ? $messages[(int)$_POST['mid']]['comment'] : '').
echo '<textarea id="inv_message_comment" tabindex="3" rows="2" style="width:200px;"></textarea>' ;
echo '<br class="clr" /><br class="clr" />' ;
echo '<span class="buttonwrapper floatRight" title="' . $lang [ 'save' ] . '"><a class="ovalbutton ovalbutton_orange" href="#" onclick="inv_message_save_details(); return false;"><span>' . $lang [ 'save' ] . '</span></a></span>' ;
echo '<span class="buttonwrapper floatRight spaceRight" title="' . $lang [ 'srv_cancel' ] . '"><a class="ovalbutton ovalbutton_gray" href="#" onclick="$(\'#fade\').fadeOut(\'slow\');$(\'#fullscreen\').fadeOut(\'slow\').html(\'\');return false;" ><span>' . $lang [ 'srv_cancel' ] . '</span></a></span>' ;
echo '<br class="clr" />' ;
echo '</div>' ; # id="inv_view_arch_recipients"
}
function messageSaveDetails () {
global $lang , $global_user_id ;
$return = array ( 'msg' => '' , 'error' => '0' );
#echo json_encode($return);
$mid = ( int ) $_POST [ 'mid' ];
$return [ 'mid' ] = $mid ;
$comment = trim ( $_POST [ 'profile_comment' ]);
$naslov = trim ( $_POST [ 'naslov' ]);
$body = $_POST [ 'body' ];
$subject = $_POST [ 'subject' ];
if ( $mid > 0 ) {
#updejtamo obstoječ profil
$sql_string = " UPDATE srv_invitations_messages SET subject_text=' " . $subject . " ', body_text=' " . $body . " ', comment=' " . $comment . " ', edit_uid=' " . $global_user_id . " ', edit_time=NOW() WHERE ank_id = ' $this->sid ' AND id=' $mid ' " ;
$sqlQuery = sisplet_query ( $sql_string );
$return [ 'mid' ] = $mid ;
if ( $sqlQuery != 1 ) {
$return [ 'error' ] = '1' ;
$return [ 'msg' ] .= $newline . $lang [ 'srv_inv_msg_4' ];
}
sisplet_query ( " COMMIT " );
} else {
# shranimo v nov profil
# ali shranjujemo v novo sporočilo
$sql_insert = " INSERT INTO srv_invitations_messages (ank_id, naslov, isdefault, uid, insert_time, comment, edit_uid, edit_time, subject_text, body_text) "
. " VALUES (' $this->sid ', ' $naslov ', '1', ' $global_user_id ', NOW(), ' $comment ', ' $global_user_id ', NOW(), ' $subject ', ' $body ') " ;
$sqlQuery = sisplet_query ( $sql_insert );
$mid = mysqli_insert_id ( $GLOBALS [ 'connect_db' ]);
if ( $mid > 0 ) {
$return [ 'mid' ] = $mid ;
# popravmo še isdefault pri starem zapisz
$sql_string = " UPDATE srv_invitations_messages SET isdefault = '0' WHERE ank_id = ' $this->sid ' AND id != ' $mid ' " ;
$sqlQuery = sisplet_query ( $sql_string );
} else {
$return [ 'error' ] = '1' ;
$return [ 'msg' ] .= $newline . $lang [ 'srv_inv_msg_4' ];
}
sisplet_query ( " COMMIT " );
}
echo json_encode ( $return );
exit ;
}
function prepareSaveMessage () {
global $lang ;
echo '<div id="inv_recipients_profile_name">' ;
echo $lang [ 'srv_inv_message_draft_new_save' ] . ': ' ;
# polovimo vsa sporočila
$sql_string = " SELECT * FROM srv_invitations_messages WHERE ank_id = ' $this->sid ' " ;
$sql_query = sisplet_query ( $sql_string );
echo '<select onchange="inv_new_message_list_change(this);" autofocus="autofocus" tabindex="2">' ;
echo '<option value="0" class="gray bold">' . $lang [ 'srv_inv_message_draft_new' ] . '</option>' ;
$messages = array ();
while ( $row = mysqli_fetch_assoc ( $sql_query ) ) {
$messages [ $row [ 'id' ]] = $row ;
echo '<option value="' . $row [ 'id' ] . '" comment="' . $row [ 'comment' ] . '"' . (( int ) $_POST [ 'mid' ] == $row [ 'id' ] ? ' selected="selected"' : '' ) . '>' . $row [ 'naslov' ] . '</option>' ;
}
echo '</select>' ;
echo '<span id="new_message_list_span"' . (( int ) $_POST [ 'mid' ] > 0 ? ' class="displayNone"' : '' ) . '>' ;
echo '<br><br/>' ;
echo '<label>' . $lang [ 'srv_inv_message_draft_list_name' ];
$newName = $this -> generateMessageName ();
echo '<input type="text" id="rec_profile_name" value="' . $newName . '" tabindex="1" autofocus="autofocus">' ;
echo '</label>' ;
echo '</span>' ;
echo '<br/><br/>' ;
echo $lang [ 'srv_inv_message_draft_list_comment' ];
echo '<textarea id="inv_message_comment" tabindex="3" rows="2" style="width:200px;">' . (( int ) $_POST [ 'mid' ] > 0 ? $messages [( int ) $_POST [ 'mid' ]][ 'comment' ] : '' ) . '</textarea>' ;
echo '<br class="clr" /><br class="clr" />' ;
echo '<span class="buttonwrapper floatLeft spaceRight" title="' . $lang [ 'srv_cancel' ] . '"><a class="ovalbutton ovalbutton_gray" href="#" onclick="$(\'#fade\').fadeOut(\'slow\');$(\'#fullscreen\').fadeOut(\'slow\').html(\'\');return false;" ><span>' . $lang [ 'srv_cancel' ] . '</span></a></span>' ;
echo '<span class="buttonwrapper floatRight spaceRight" title="' . $lang [ 'save' ] . '"><a class="ovalbutton ovalbutton_orange" href="#" onclick="inv_message_save_details(); return false;"><span>' . $lang [ 'save' ] . '</span></a></span>' ;
echo '<br class="clr" />' ;
echo '</div>' ; # id="inv_view_arch_recipients"
}
function showRecipientTracking () {
global $lang , $site_url , $global_user_id ;
$_rec_id = $_POST [ 'rid' ];
# polovimo podatke o uporabniku
$sql_string = " SELECT firstname,lastname,email,last_status, DATE_FORMAT(date_inserted,'%d.%m.%Y, %T') AS di FROM srv_invitations_recipients WHERE id = ' " . ( int ) $_rec_id . " ' " ;
$sql_query = sisplet_query ( $sql_string );
$sql_row = mysqli_fetch_assoc ( $sql_query );
$avtor = array ();
if ( trim ( $sql_row [ 'firstname' ])) {
$avtor [] = iconv ( " iso-8859-2 " , " utf-8 " , trim ( $sql_row [ 'firstname' ]));
}
if ( trim ( $sql_row [ 'lastname' ])) {
$avtor [] = iconv ( " iso-8859-2 " , " utf-8 " , trim ( $sql_row [ 'lastname' ]));
}
$lastStatus = $sql_row [ 'last_status' ];
echo '<div id="inv_view_arch_recipients" class="singleRec">' ;
echo '<div class="inv_FS_content">' ;
echo '<div id="inv_arch_mail_preview">' ;
echo '<span class="strong" style="font-size: 14px;">' . $lang [ 'srv_invitation_user_chronology_note' ];
if ( count ( $avtor ) > 0 ) {
echo '<span>' ;
echo implode ( ' ' , $avtor );
if ( $sql_row [ 'email' ] != '' )
echo ' (' . trim ( $sql_row [ 'email' ]) . ')' ;
echo '</span>' ;
} else {
# izpišemo samo email
echo trim ( $sql_row [ 'email' ]);
}
echo '</span>' ;
echo '<br/>' ;
echo $lang [ 'srv_inv_recipients_date_inserted' ] . ': ' . $sql_row [ 'di' ];
# polovimo podatke uporabnikovih arhivov
$sql_string = " SELECT ia.*, u.name, u.surname, u.email FROM srv_invitations_archive AS ia LEFT JOIN users AS u ON ia.uid = u.id WHERE ia.id IN (SELECT inv_arch_id FROM srv_invitations_tracking WHERE res_id = ' $_rec_id ' ) " ;
$sql_query = sisplet_query ( $sql_string );
$cnt = 0 ;
while ( $sql_row = mysqli_fetch_assoc ( $sql_query )) {
$cnt ++ ;
$avtor_email = iconv ( " iso-8859-2 " , " utf-8 " , trim ( $sql_row [ 'email' ]));
$avtor = array ();
if ( trim ( $sql_row [ 'name' ])) {
$avtor [] = trim ( $sql_row [ 'name' ]);
}
if ( trim ( $sql_row [ 'surname' ])) {
$avtor [] = trim ( $sql_row [ 'surname' ]);
}
if ( count ( $avtor ) > 0 ) {
$avtor_name = implode ( ' ' , $avtor );
} else {
$avtor_name = $avtor_email ;
}
echo '<div style="font-weight:600; padding:5px 0px; ">' ;
echo $cnt . $lang [ 'srv_invitation_user_chronology_sending' ];
echo ' (' . $lang [ 'srv_invitation_user_chronology_send_by' ];
echo ' <span title="' . $avtor_email . '">' . $avtor_name . '</span>' ;
echo ')' ;
echo '</div>' ;
2021-03-19 13:29:58 +01:00
2020-08-14 13:36:36 +02:00
echo '<div style="margin-left:25px;margin-bottom:10px;">' ;
2021-03-19 13:29:58 +01:00
2020-08-14 13:36:36 +02:00
echo '<table id="tbl_respondentArchive">' ;
2021-03-19 13:29:58 +01:00
echo '<tr>' ;
echo '<th>' . $lang [ 'srv_invitation_user_chronology_date' ] . '</th>' ;
// Volitve nimajo nekaterih polj
if ( ! SurveyInfo :: getInstance () -> checkSurveyModule ( 'voting' ))
echo '<th>' . $lang [ 'srv_invitation_user_chronology_status' ] . '</th>' ;
2020-08-14 13:36:36 +02:00
echo '<th>' . $lang [ 'srv_inv_message_type' ] . '</th>' ;
2021-03-19 13:29:58 +01:00
echo '</tr>' ;
2020-08-14 13:36:36 +02:00
$sql_string1 = " SELECT status, DATE_FORMAT(time_insert,'%d.%m.%Y, %T') AS status_time FROM srv_invitations_tracking WHERE res_id = ' $_rec_id ' AND inv_arch_id=' " . $sql_row [ 'id' ] . " ' ORDER BY uniq ASC " ;
$sql_query1 = sisplet_query ( $sql_string1 );
while ( $sql_row1 = mysqli_fetch_assoc ( $sql_query1 )) {
echo '<tr>' ;
echo '<td>' . $sql_row1 [ 'status_time' ] . '</td>' ;
2021-03-19 13:29:58 +01:00
// Volitve nimajo nekaterih polj
if ( ! SurveyInfo :: getInstance () -> checkSurveyModule ( 'voting' ))
echo '<td>(' . $sql_row1 [ 'status' ] . ') - ' . $lang [ 'srv_userstatus_' . $sql_row1 [ 'status' ]] . '</td>' ;
2020-08-14 13:36:36 +02:00
echo '<td>' ;
if ( $sql_row [ 'tip' ] == '0' )
echo $lang [ 'srv_inv_message_noemailing_type1' ];
elseif ( $sql_row [ 'tip' ] == '1' )
echo $lang [ 'srv_inv_message_noemailing_type2' ];
elseif ( $sql_row [ 'tip' ] == '2' )
echo $lang [ 'srv_inv_message_noemailing_type3' ];
else
echo $lang [ 'email' ];
echo '</td>' ;
echo '</tr>' ;
}
echo '</table>' ;
echo '</div>' ;
}
2021-03-19 13:29:58 +01:00
// Volitve nimajo nekaterih polj
if ( ! SurveyInfo :: getInstance () -> checkSurveyModule ( 'voting' )){
echo '<div style="padding:5px 0px;">' ;
echo '<span style="font-weight:600;">' . $lang [ 'srv_inv_recipients_final_status' ] . '</span> (' . $lastStatus . ') - ' . $lang [ 'srv_userstatus_' . $lastStatus ];
echo '</div>' ;
}
2020-08-14 13:36:36 +02:00
echo '</div>' ; // inv_select_mail_preview
echo '</div>' ; // id="arc_content"
echo '<div class="inv_FS_btm">' ;
echo '<div id="navigationBottom" class="printHide">' ;
#echo '<span class="floatRight spaceLeft"><div class="buttonwrapper"><a class="ovalbutton ovalbutton_orange" href="#" onclick="inv_arch_save_comment(); return false;"><span>'.$lang['save'].'</span></a></div></span>';
echo '<span class="floatRight spaceRight"><div class="buttonwrapper"><a class="ovalbutton ovalbutton_gray" href="#" onclick="inv_arch_recipients_close(); return false;"><span>' . $lang [ 'srv_zapri' ] . '</span></a></div></span>' ;
echo '<div class="clr" />' ;
echo '</div>' ;
echo '</div>' ;
}
function showArchiveRecipients ( $_arch_id = null , $archType = 'all' ) {
global $lang , $site_url , $global_user_id ;
echo '<div id="inv_view_arch_recipients" class="fromArchive">' ;
if ( $_arch_id == null ) {
$_arch_id = $_POST [ 'aid' ];
}
#polovimo podatke arhiva
$sql_string = " SELECT sia.*, DATE_FORMAT(sia.date_send,'%d.%m.%Y, %T') AS ds, u.name, u.surname, u.email FROM srv_invitations_archive AS sia LEFT JOIN users AS u ON sia.uid = u.id WHERE sia.id = ' " . $_arch_id . " ' " ;
$sql_query = sisplet_query ( $sql_string );
$row = mysqli_fetch_assoc ( $sql_query );
# polovimo sezname
$lists = array ();
2021-02-22 15:26:32 +01:00
$sql_string = " SELECT pid, name,comment FROM srv_invitations_recipients_profiles WHERE uid in(' " . $global_user_id . " ') " ;
2020-08-14 13:36:36 +02:00
$sql_query = sisplet_query ( $sql_string );
while ( $sql_row = mysqli_fetch_assoc ( $sql_query )) {
$lists [ $sql_row [ 'pid' ]] = $sql_row [ 'name' ];
}
$lists [ '-1' ] = $lang [ 'srv_invitation_new_templist' ];
$lists [ '0' ] = $lang [ 'srv_invitation_new_templist_author' ];
#max ststusi po userjih
$arch_user_max_status = array ();
$str_max_status = " select res_id AS rid, max(status) AS usr_status from srv_invitations_tracking where inv_arch_id = ' $_arch_id ' GROUP BY res_id " ;
$qry_max_status = sisplet_query ( $str_max_status );
while ( list ( $res_id , $arch_status ) = mysqli_fetch_row ( $qry_max_status )) {
$arch_user_max_status [ $res_id ] = $arch_status ;
}
#$data = explode('_',$_POST['arch_to_view']);
#$_success = (int)$data[2];
#$_arch_id = $data[3];
$sql_string = " SELECT * FROM srv_invitations_archive WHERE id = ' $_arch_id ' " ;
$sql_query = sisplet_query ( $sql_string );
$sql_a_row = mysqli_fetch_assoc ( $sql_query );
#$sql_string = "SELECT id as res_id,email,firstname,lastname, password,sent,responded,unsubscribed,deleted,list_id,last_status FROM srv_invitations_recipients WHERE id IN (SELECT DISTINCT res_id FROM srv_invitations_tracking WHERE inv_arch_id = '$_arch_id' )";
$sql_string = " SELECT DISTINCT sir.id as res_id,sir.email,sir.firstname,sir.lastname, sir.password,sir.sent,sir.responded,sir.unsubscribed,sir.deleted, "
. " sir.list_id,sir.last_status FROM srv_invitations_recipients AS sir INNER JOIN srv_invitations_tracking AS sit ON sir.id = sit.res_id WHERE sit.inv_arch_id = ' $_arch_id ' " ;
// prikazujemo samo napake
if ( $archType == 'err' ) {
$sql_string = " SELECT DISTINCT sir.id as res_id,sir.email,sir.firstname,sir.lastname, sir.password,sir.sent,sir.responded,sir.unsubscribed,sir.deleted, "
. " sir.list_id,sir.last_status FROM srv_invitations_recipients AS sir INNER JOIN srv_invitations_tracking AS sit ON sir.id = sit.res_id "
. " JOIN srv_invitations_archive_recipients siar ON sir.id = siar.rec_id AND siar.arch_id = sit.inv_arch_id AND siar.success = '0' "
. " WHERE sit.inv_arch_id = ' $_arch_id ' " ;
}
// priazujemo samo ok
if ( $archType == 'succ' ) {
$sql_string = " SELECT DISTINCT sir.id as res_id,sir.email,sir.firstname,sir.lastname, sir.password,sir.sent,sir.responded,sir.unsubscribed,sir.deleted, "
. " sir.list_id,sir.last_status FROM srv_invitations_recipients AS sir INNER JOIN srv_invitations_tracking AS sit ON sir.id = sit.res_id "
. " JOIN srv_invitations_archive_recipients siar ON sir.id = siar.rec_id AND siar.arch_id = sit.inv_arch_id AND siar.success = '1' "
. " WHERE sit.inv_arch_id = ' $_arch_id ' " ;
}
$sql_query = sisplet_query ( $sql_string );
echo '<div class="inv_FS_content">' ;
$avtor_email = iconv ( " iso-8859-2 " , " utf-8 " , trim ( $row [ 'email' ]));
$avtor = array ();
if ( trim ( $row [ 'name' ])) {
$avtor [] = trim ( $row [ 'name' ]);
}
if ( trim ( $row [ 'surname' ])) {
$avtor [] = trim ( $row [ 'surname' ]);
}
if ( count ( $avtor ) > 0 ) {
$avtor_name = implode ( ' ' , $avtor );
} else {
$avtor_name = $avtor_email ;
}
echo '<br />' ;
echo '<span class="inv_dashboard_sub_detail">' ;
echo $lang [ 'srv_inv_archive_naslov' ];
echo ': <span class="bold"><a href="#" onclick="inv_arch_edit_details(\'' . $row [ 'id' ] . '\'); return false;">' . $row [ 'naslov' ] . '</a>' ;
echo '</span></span><br />' ;
echo '<span class="inv_dashboard_sub_detail">' ;
echo $lang [ 'srv_invitation_user_chronology_send_by' ];
echo ' <span class="bold"><span title="' . $avtor_email . '">' . $avtor_name . '</span>' ;
echo ', ' ;
echo $row [ 'ds' ];
echo '</span></span><br />' ;
echo '<span class="inv_dashboard_sub_detail">' ;
echo $lang [ 'srv_inv_message_type' ];
echo ': <span class="bold">' ;
if ( $row [ 'tip' ] == '0' )
echo $lang [ 'srv_inv_message_noemailing_type1' ];
elseif ( $row [ 'tip' ] == '1' )
echo $lang [ 'srv_inv_message_noemailing_type2' ];
elseif ( $row [ 'tip' ] == '2' )
echo $lang [ 'srv_inv_message_noemailing_type3' ];
else
echo $lang [ 'email' ];
echo '</span></span>' ;
echo '<div id="inv_arch_mail_preview">' ;
2021-03-16 10:11:08 +01:00
2020-08-14 13:36:36 +02:00
echo '<table id="tbl_recipients_list">' ;
2021-03-16 10:11:08 +01:00
2020-08-14 13:36:36 +02:00
echo '<tr>' ;
2021-03-19 13:29:58 +01:00
// Pri volitvah ne prikazemo nekaterih stolpcev
if ( SurveyInfo :: getInstance () -> checkSurveyModule ( 'voting' )){
echo '<th class="tbl_icon" title="' . $lang [ 'srv_inv_recipients_sent' ] . '">' . $lang [ 'srv_inv_recipients_sent' ] . '</th>' ;
echo '<th class="tbl_inv_left">' . $lang [ 'srv_inv_recipients_email' ] . '</th>' ;
echo '<th>' . $lang [ 'srv_inv_recipients_firstname' ] . '</th>' ;
echo '<th>' . $lang [ 'srv_inv_recipients_lastname' ] . '</th>' ;
echo '<th>' . $lang [ 'srv_inv_recipients_list_id' ] . '</th>' ;
}
else {
echo '<th class="tbl_icon" title="' . $lang [ 'srv_inv_recipients_sent' ] . '">' . $lang [ 'srv_inv_recipients_sent' ] . '</th>' ;
echo '<th class="tbl_icon" title="' . $lang [ 'srv_inv_recipients_responded' ] . '">' . $lang [ 'srv_inv_recipients_responded' ] . '</th>' ;
echo '<th class="tbl_icon" title="' . $lang [ 'srv_inv_recipients_unsubscribed' ] . '">' . $lang [ 'srv_inv_recipients_unsubscribed' ] . '</th>' ;
echo '<th class="tbl_inv_left">' . $lang [ 'srv_inv_recipients_email' ] . '</th>' ;
echo '<th>' . $lang [ 'srv_inv_recipients_password' ] . '</th>' ;
echo '<th>' . $lang [ 'srv_inv_recipients_firstname' ] . '</th>' ;
echo '<th>' . $lang [ 'srv_inv_recipients_lastname' ] . '</th>' ;
echo '<th>' . $lang [ 'srv_inv_recipients_max_archive_status' ] . '</th>' ;
echo '<th>' . $lang [ 'srv_inv_recipients_last_status' ] . '</th>' ;
echo '<th>' . $lang [ 'srv_inv_recipients_list_id' ] . '</th>' ;
}
2020-08-14 13:36:36 +02:00
echo '</tr>' ;
2021-03-16 10:11:08 +01:00
2020-08-14 13:36:36 +02:00
while ( $sql_row = mysqli_fetch_assoc ( $sql_query )) {
echo '<tr>' ;
2021-03-19 13:29:58 +01:00
// Pri volitvah ne prikazemo nekaterih stolpcev
if ( SurveyInfo :: getInstance () -> checkSurveyModule ( 'voting' )){
echo '<td><span class="as_link" onclick="showRecipientTracking(\'' . $sql_row [ 'res_id' ] . '\'); return false;"><img src="' . $site_url . 'admin/survey/img_0/' . (( int ) $sql_row [ 'sent' ] == 1 ? 'email_sent.png' : 'email_open.png' ) . '"></span></td>' ;
echo '<td class="tbl_inv_left">' . $sql_row [ 'email' ] . '</td>' ;
echo '<td>' . $sql_row [ 'firstname' ] . '</td>' ;
echo '<td>' . $sql_row [ 'lastname' ] . '</td>' ;
echo '<td>' . $lists [ $sql_row [ 'list_id' ]] . '</td>' ;
}
else {
echo '<td><span class="as_link" onclick="showRecipientTracking(\'' . $sql_row [ 'res_id' ] . '\'); return false;"><img src="' . $site_url . 'admin/survey/img_0/' . (( int ) $sql_row [ 'sent' ] == 1 ? 'email_sent.png' : 'email_open.png' ) . '"></span></td>' ;
echo '<td><img src="' . $site_url . 'admin/survey/icons/icons/' . (( int ) $sql_row [ 'responded' ] == 1 ? 'star_on.png' : 'star_off.png' ) . '"></td>' ;
echo '<td><img src="' . $site_url . 'admin/survey/img_0/' . (( int ) $sql_row [ 'unsubscribed' ] == 1 ? 'opdedout_on.png' : 'opdedout_off.png' ) . '"></td>' ;
echo '<td class="tbl_inv_left">' . $sql_row [ 'email' ] . '</td>' ;
echo '<td>' . $sql_row [ 'password' ] . '</td>' ;
echo '<td>' . $sql_row [ 'firstname' ] . '</td>' ;
echo '<td>' . $sql_row [ 'lastname' ] . '</td>' ;
$status = $arch_user_max_status [ $sql_row [ 'res_id' ]];
echo '<td>' . $lang [ 'srv_userstatus_' . $status ] . ' (' . $status . ')' . '</td>' ;
echo '<td>' . $lang [ 'srv_userstatus_' . $sql_row [ 'last_status' ]] . ' (' . $sql_row [ 'last_status' ] . ')' . '</td>' ;
echo '<td>' . $lists [ $sql_row [ 'list_id' ]] . '</td>' ;
}
2020-08-14 13:36:36 +02:00
echo '</tr>' ;
}
2021-03-16 10:11:08 +01:00
2020-08-14 13:36:36 +02:00
echo '</table>' ;
2021-03-16 10:11:08 +01:00
2020-08-14 13:36:36 +02:00
echo '</div>' ; // inv_select_mail_preview
echo '</div>' ; // id="arc_content"
echo '<br />' ;
echo '<div class="inv_FS_btm">' ;
echo '<div id="navigationBottom" class="printHide">' ;
#echo '<span class="floatRight spaceLeft"><div class="buttonwrapper"><a class="ovalbutton ovalbutton_orange" href="#" onclick="inv_arch_save_comment(); return false;"><span>'.$lang['save'].'</span></a></div></span>';
echo '<span class="floatRight spaceRight"><div class="buttonwrapper"><a class="ovalbutton ovalbutton_gray" href="#" onclick="inv_arch_recipients_close(); return false;"><span>' . $lang [ 'srv_zapri' ] . '</span></a></div></span>' ;
echo '<div class="clr" />' ;
echo '</div>' ;
echo '</div>' ;
}
function editArchiveDetails () {
global $lang , $site_url ;
echo '<div id="inv_view_arch_recipients">' ;
$_arch_id = $_POST [ 'aid' ];
#polovimo podatke arhiva
$sql_string = " SELECT * FROM srv_invitations_archive WHERE id = ' " . $_arch_id . " ' " ;
$sql_query = sisplet_query ( $sql_string );
$row = mysqli_fetch_assoc ( $sql_query );
echo '<div class="inv_FS_content">' ;
echo '<div id="inv_arch_mail_preview">' ;
echo '<input id="inv_arch_id" type="hidden" value="' . $_arch_id . '">' ;
echo '<table id="inv_arch_mail_preview">' ;
echo '<tr><td class="bold">' . $lang [ 'srv_inv_message_draft_content_subject' ] . ':</td>' ;
echo '<td class="inv_bt bold">' ;
echo '<span>' . $row [ 'subject_text' ] . '</span>' ;
echo '</td></tr>' ;
echo '<tr><td>' . $lang [ 'srv_inv_message_draft_content_body' ] . ':</td>' ;
echo '<td class="inv_bt">' ;
echo '<span class="nl2br">' . ( $row [ 'body_text' ]) . '</span>' ;
echo '</td></tr>' ;
echo '<tr><td>' . $lang [ 'srv_inv_message_draft_comment' ] . ':</td>' ;
echo '<td>' ;
echo '<span>' ;
echo '<textarea id="inv_arch_comment" rows="2" style="width:380px;">' . $row [ 'comment' ] . '</textarea>' ;
echo '</span>' ;
echo '</td></tr>' ;
echo '</table>' ;
echo '</div>' ; // inv_select_mail_preview
echo '</div>' ; // id="arc_content"
echo '<div class="inv_FS_btm">' ;
echo '<div id="navigationBottom" class="printHide">' ;
echo '<span class="floatRight"><div class="buttonwrapper"><a class="ovalbutton ovalbutton_orange" href="#" onclick="inv_arch_save_comment(); return false;"><span>' . $lang [ 'save' ] . '</span></a></div></span>' ;
echo '<span class="floatRight spaceRight"><div class="buttonwrapper"><a class="ovalbutton ovalbutton_gray" href="#" onclick="inv_arch_recipients_close(); return false;"><span>' . $lang [ 'srv_zapri' ] . '</span></a></div></span>' ;
echo '<div class="clr" />' ;
echo '</div>' ;
echo '</div>' ;
}
function showArchiveDetails () {
global $lang , $site_url ;
echo '<div id="inv_view_arch_recipients">' ;
$_arch_id = $_POST [ 'aid' ];
#polovimo podatke arhiva
$sql_string = " SELECT * FROM srv_invitations_archive WHERE id = ' " . $_arch_id . " ' " ;
$sql_query = sisplet_query ( $sql_string );
$row = mysqli_fetch_assoc ( $sql_query );
echo '<div class="inv_FS_content">' ;
echo '<div id="inv_arch_mail_preview">' ;
echo '<table id="inv_arch_mail_preview">' ;
echo '<tr><td>' . $lang [ 'srv_inv_message_draft_content_subject' ] . ':</td>' ;
echo '<td class="inv_bt">' ;
echo '<span>' . $row [ 'subject_text' ] . '</span>' ;
echo '</td></tr>' ;
echo '<tr><td>' . $lang [ 'srv_inv_message_draft_content_body' ] . ':</td>' ;
echo '<td class="inv_bt">' ;
echo '<span class="nl2br">' . ( $row [ 'body_text' ]) . '</span>' ;
echo '</td></tr>' ;
echo '<tr><td>' . $lang [ 'srv_inv_message_draft_comment' ] . ':</td>' ;
echo '<td>' ;
echo '<span>' ;
echo '<div id="inv_arch_comment" rows="2" style="width:380px;">' . $row [ 'comment' ] . '</div>' ;
echo '</span>' ;
echo '</td></tr>' ;
echo '</table>' ;
echo '</div>' ; // inv_select_mail_preview
echo '</div>' ; // id="arc_content"
echo '<div class="inv_FS_btm">' ;
echo '<div id="navigationBottom" class="printHide">' ;
#echo '<span class="floatRight spaceLeft"><div class="buttonwrapper"><a class="ovalbutton ovalbutton_orange" href="#" onclick="inv_arch_save_comment(); return false;"><span>'.$lang['save'].'</span></a></div></span>';
echo '<span class="floatRight spaceRight"><div class="buttonwrapper"><a class="ovalbutton ovalbutton_gray" href="#" onclick="inv_arch_recipients_close(); return false;"><span>' . $lang [ 'srv_zapri' ] . '</span></a></div></span>' ;
echo '<div class="clr" />' ;
echo '</div>' ;
echo '</div>' ;
}
function showInvitationStatus () {
global $admin_type , $app_settings , $global_user_id ;
$isEmail = ( int ) SurveyInfo :: getInstance () -> checkSurveyModule ( 'email' );
$d = new Dostop ();
echo '<table style="width:50%"><tr>' ;
2021-03-16 10:11:08 +01:00
// 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 '<td style="padding-right:10px;vertical-align: top;">' ;
$this -> displayInvitationStatusVoting ();
echo '</td>' ;
}
}
// Nov način z trackingom
elseif ( $this -> newTracking == true ) {
2020-08-14 13:36:36 +02:00
$userAccess = UserAccess :: getInstance ( $global_user_id );
// Ce so izklopljena ne prikazemo leve strani
if (( int ) $isEmail > 0 && $userAccess -> checkUserAccess ( $what = 'invitations' )){
echo '<td style="padding-right:10px;vertical-align: top;">' ;
$this -> displayInvitationStatusNew ();
echo '</td>' ;
}
}
# star način brez trackinga
else {
echo '<td style="padding-right:10px;vertical-align: top;">' ;
$this -> displayInvitationStatusOld ();
echo '</td>' ;
}
echo '</tr></table>' ;
}
function displayInvitationStatusOld () {
global $lang , $admin_type , $global_user_id , $site_url , $site_path ;
$isEmail = ( int ) SurveyInfo :: getInstance () -> checkSurveyModule ( 'email' );
# polovimo lurkerje
echo '<fieldset class="inv_fieldset"><legend>' . $lang [ 'srv_inv_nav_email_status' ] . '</legend>' ;
echo '<div class="inv_filedset_inline_div">' ;
echo '<p>' ;
if (( int ) $isEmail > 0 ) {
# preštejemo respondente po statusu
$recipients_by_status = array ();
$sql_string = " SELECT count(*) as cnt, last_status FROM srv_invitations_recipients WHERE ank_id = ' " . $this -> sid . " ' AND deleted='0' GROUP BY last_status " ;
$sql_query = sisplet_query ( $sql_string );
if ( mysqli_num_rows ( $sql_query ) > 0 ) {
while ( $row = mysqli_fetch_assoc ( $sql_query )) {
$recipients_by_status [ 'all' ] += ( int ) $row [ 'cnt' ];
switch (( int ) $row [ 'last_status' ]) {
# 0 - E-pošta - ni poslana
case 0 :
$recipients_by_status [ 'not_send' ] += ( int ) $row [ 'cnt' ];
break ;
# 1 - E-pošta - neodgovor
case 1 :
$recipients_by_status [ 'send' ] += ( int ) $row [ 'cnt' ];
break ;
# 2 - E-pošta - napaka
case 2 :
$recipients_by_status [ 'not_send' ] += ( int ) $row [ 'cnt' ];
$recipients_by_status [ 'error' ] += ( int ) $row [ 'cnt' ];
break ;
# 3 - klik na nagovor
case 3 :
$recipients_by_status [ 'send' ] += ( int ) $row [ 'cnt' ];
$recipients_by_status [ 'clicked' ] += ( int ) $row [ 'cnt' ];
break ;
# 4 - klik na anketo
case 4 :
$recipients_by_status [ 'send' ] += ( int ) $row [ 'cnt' ];
$recipients_by_status [ 'clicked' ] += ( int ) $row [ 'cnt' ];
break ;
# 5 - delno prazna
case 5 :
$recipients_by_status [ 'send' ] += ( int ) $row [ 'cnt' ];
$recipients_by_status [ 'clicked' ] += ( int ) $row [ 'cnt' ];
break ;
# 6 - končana
case 6 :
$recipients_by_status [ 'send' ] += ( int ) $row [ 'cnt' ];
#$recipients_by_status['clicked'] += (int)$row['cnt'];
$recipients_by_status [ 'finished' ] += ( int ) $row [ 'cnt' ];
break ;
# null - neznan
default :
$recipients_by_status [ 'unknown' ] += ( int ) $row [ 'cnt' ];
break ;
}
}
$all_rec_in_survey = ( int ) $recipients_by_status [ 'all' ];
echo '<table class="inv_dashboard_table">' ;
echo '<tr>' ;
echo '<th>' . $lang [ 'srv_inv_dashboard_tbl_all' ] . '</th>' ;
echo '<th>' . ( int ) $recipients_by_status [ 'all' ] . '</th>' ;
echo '<th>-</th>' ;
echo '<th>100%</th>' ;
echo '</tr>' ;
#popslano enotam
echo '<tr>' ;
echo '<th>' . $lang [ 'srv_inv_dashboard_tbl_send' ] . '</th>' ;
echo '<th>' . ( int ) $recipients_by_status [ 'send' ] . '</th>' ;
echo '<th>' . (( int ) $recipients_by_status [ 'send' ] > 0 ? '100%' : '0%' ) . '</th>' ;
echo '<th>' . $this -> formatNumber ((( int ) $recipients_by_status [ 'send' ] > 0 ? ( int ) $recipients_by_status [ 'send' ] * 100 / ( int ) $recipients_by_status [ 'all' ] : 0 ), 0 , '%' ) . '</th>' ;
echo '</tr>' ;
#neodgovori
echo '<tr>' ;
echo '<td>' . $lang [ 'srv_inv_dashboard_tbl_unanswered' ] . '</td>' ;
$unanswered = (( int ) $recipients_by_status [ 'send' ] - ( int ) $recipients_by_status [ 'clicked' ] - ( int ) $recipients_by_status [ 'finished' ]);
echo '<td>' . $unanswered . '</td>' ;
echo '<td>' . $this -> formatNumber (( $unanswered > 0 ? $unanswered * 100 / ( int ) $recipients_by_status [ 'send' ] : 0 ), 0 , '%' ) . '</td>' ;
echo '<td>' . $this -> formatNumber (( $unanswered > 0 ? $unanswered * 100 / ( int ) $recipients_by_status [ 'all' ] : 0 ), 0 , '%' ) . '</td>' ;
echo '</tr>' ;
echo '<tr>' ;
echo '<td>' . $lang [ 'srv_inv_dashboard_tbl_clicked' ] . '</td>' ;
echo '<td>' . ( int ) $recipients_by_status [ 'clicked' ] . '</td>' ;
echo '<td>' . $this -> formatNumber ((( int ) $recipients_by_status [ 'clicked' ] > 0 ? ( int ) $recipients_by_status [ 'clicked' ] * 100 / ( int ) $recipients_by_status [ 'send' ] : 0 ), 0 , '%' ) . '</td>' ;
echo '<td>' . $this -> formatNumber ((( int ) $recipients_by_status [ 'clicked' ] > 0 ? ( int ) $recipients_by_status [ 'clicked' ] * 100 / ( int ) $recipients_by_status [ 'all' ] : 0 ), 0 , '%' ) . '</td>' ;
echo '</tr>' ;
#če se slučajno pojavijo kaki neznani statusi
if (( int ) $recipients_by_status [ 'unknown' ] > 0 ) {
echo '<tr>' ;
echo '<td>' . $lang [ 'srv_inv_dashboard_tbl_unknown' ] . '</td>' ;
echo '<td>' . ( int ) $recipients_by_status [ 'unknown' ] . '</td>' ;
echo '<td>' . $this -> formatNumber ((( int ) $recipients_by_status [ 'unknown' ] > 0 ? ( int ) $recipients_by_status [ 'unknown' ] * 100 / ( int ) $recipients_by_status [ 'send' ] : 0 ), 0 , '%' ) . '</td>' ;
echo '<td>' . $this -> formatNumber ((( int ) $recipients_by_status [ 'unknown' ] > 0 ? ( int ) $recipients_by_status [ 'unknown' ] * 100 / ( int ) $recipients_by_status [ 'all' ] : 0 ), 0 , '%' ) . '</td>' ;
echo '</tr>' ;
}
echo '<tr>' ;
echo '<td>' . $lang [ 'srv_inv_dashboard_tbl_finished' ] . '</td>' ;
echo '<td>' . ( int ) $recipients_by_status [ 'finished' ] . '</td>' ;
echo '<td class="red">' . $this -> formatNumber ((( int ) $recipients_by_status [ 'finished' ] > 0 ? ( int ) $recipients_by_status [ 'finished' ] * 100 / ( int ) $recipients_by_status [ 'send' ] : 0 ), 0 , '%' ) . '</td>' ;
echo '<td class="">' . $this -> formatNumber ((( int ) $recipients_by_status [ 'finished' ] > 0 ? ( int ) $recipients_by_status [ 'finished' ] * 100 / ( int ) $recipients_by_status [ 'all' ] : 0 ), 0 , '%' ) . '</td>' ;
echo '</tr>' ;
echo '</table>' ;
echo '<br>' ;
# zloopamo še po posameznih pošiljanjih
$sql_string_arc = " SELECT sia.*, DATE_FORMAT(sia.date_send,'%d.%m.%Y, %T') AS ds, u.name, u.surname, u.email FROM srv_invitations_archive AS sia LEFT JOIN users AS u ON sia.uid = u.id WHERE ank_id = ' " . $this -> sid . " ' AND cnt_succsess > 0 ORDER BY sia.date_send ASC; " ;
$sql_query_arc = sisplet_query ( $sql_string_arc );
if ( mysqli_num_rows ( $sql_query_arc ) > 1 ) {
$cnt = 0 ;
while ( $row_arc = mysqli_fetch_assoc ( $sql_query_arc )) {
$cnt ++ ;
# preštejemo respondente po statusu
$recipients_by_status = array ();
$sql_string = " SELECT count(*) as cnt, last_status FROM srv_invitations_recipients WHERE ank_id = ' " . $this -> sid . " ' AND deleted='0' AND id IN (select rec_id from srv_invitations_archive_recipients where arch_id = " . $row_arc [ 'id' ] . " AND success !='0') GROUP BY last_status " ;
$sql_query = sisplet_query ( $sql_string );
if ( mysqli_num_rows ( $sql_query ) > 0 ) {
while ( $row = mysqli_fetch_assoc ( $sql_query )) {
$recipients_by_status [ 'all' ] += ( int ) $row [ 'cnt' ];
switch (( int ) $row [ 'last_status' ]) {
# 0 - E-pošta - ni poslana
case 0 :
$recipients_by_status [ 'not_send' ] += ( int ) $row [ 'cnt' ];
break ;
# 1 - E-pošta - neodgovor
case 1 :
$recipients_by_status [ 'send' ] += ( int ) $row [ 'cnt' ];
break ;
# 2 - E-pošta - napaka
case 2 :
$recipients_by_status [ 'not_send' ] += ( int ) $row [ 'cnt' ];
$recipients_by_status [ 'error' ] += ( int ) $row [ 'cnt' ];
break ;
# 3 - klik na nagovor
case 3 :
$recipients_by_status [ 'send' ] += ( int ) $row [ 'cnt' ];
$recipients_by_status [ 'clicked' ] += ( int ) $row [ 'cnt' ];
break ;
# 4 - klik na anketo
case 4 :
$recipients_by_status [ 'send' ] += ( int ) $row [ 'cnt' ];
$recipients_by_status [ 'clicked' ] += ( int ) $row [ 'cnt' ];
break ;
# 5 - delno prazna
case 5 :
$recipients_by_status [ 'send' ] += ( int ) $row [ 'cnt' ];
$recipients_by_status [ 'clicked' ] += ( int ) $row [ 'cnt' ];
break ;
# 6 - končana
case 6 :
$recipients_by_status [ 'send' ] += ( int ) $row [ 'cnt' ];
#$recipients_by_status['clicked'] += (int)$row['cnt'];
$recipients_by_status [ 'finished' ] += ( int ) $row [ 'cnt' ];
break ;
# null - neznan
default :
$recipients_by_status [ 'unknown' ] += ( int ) $row [ 'cnt' ];
break ;
}
}
$avtor_email = iconv ( " iso-8859-2 " , " utf-8 " , trim ( $row_arc [ 'email' ]));
$avtor = array ();
if ( trim ( $row_arc [ 'name' ])) {
$avtor [] = trim ( $row_arc [ 'name' ]);
}
if ( trim ( $row_arc [ 'surname' ])) {
$avtor [] = trim ( $row_arc [ 'surname' ]);
}
if ( count ( $avtor ) > 0 ) {
$avtor_name = implode ( ' ' , $avtor );
} else {
$avtor_name = $avtor_email ;
}
echo '<span class="pointer span_list_archive" onClick="$(this).next().next().next().toggle(); $(this).find(\'.plus\').toggle();$(this).find(\'.minus\').toggle(); $(this).next(\'.link_archive\').toggle();">' ;
echo '<span class="inv_dashboard_sub_title as_link">' ;
echo '<span class="plus" style="color: inherit;">+ </span>' ;
echo '<span class="minus displayNone" style="color: inherit;">- </span>' ;
echo $cnt . $lang [ 'srv_inv_dashboard_list_cnt_title' ];
echo '</span>' ;
echo '<span class="inv_dashboard_sub_detail" title="' . $avtor_email . '">' . $avtor_name . '</span>' ;
echo ', ' ;
echo '<span class="inv_dashboard_sub_detail" >' . $row_arc [ 'ds' ] . '</span>' ;
echo '</span>' ;
echo '<span class="link_archive as_link displayNone" ><a href="#" onclick="inv_arch_show_details(\'' . $row_arc [ 'id' ] . '\'); return false;"> arhiv </a></span>' ;
echo '<br/>' ;
echo '<table class="inv_dashboard_table sub displayNone">' ;
echo '<tr>' ;
echo '<th>' . $lang [ 'srv_inv_dashboard_tbl_all' ] . '</th>' ;
echo '<th>' . ( int ) $all_rec_in_survey . '</th>' ;
#echo '<th>'.(int)$recipients_by_status['all'].'</th>';
echo '<th> </th>' ;
echo '<th>100%</th>' ;
echo '</tr>' ;
#popslano enotam
echo '<tr>' ;
echo '<td>' . $lang [ 'srv_inv_dashboard_tbl_send' ] . '</td>' ;
echo '<td>' . ( int ) $recipients_by_status [ 'send' ] . '</td>' ;
echo '<td>' . (( int ) $recipients_by_status [ 'send' ] > 0 ? '100%' : '0%' ) . '</td>' ;
echo '<td>' . $this -> formatNumber ((( int ) $recipients_by_status [ 'send' ] > 0 ? ( int ) $recipients_by_status [ 'send' ] * 100 / ( int ) $all_rec_in_survey : 0 ), 0 , '%' ) . '</td>' ;
echo '</tr>' ;
#neodgovori
echo '<tr>' ;
echo '<td>' . $lang [ 'srv_inv_dashboard_tbl_unanswered' ] . '</td>' ;
$unanswered = (( int ) $recipients_by_status [ 'send' ] - ( int ) $recipients_by_status [ 'clicked' ] - ( int ) $recipients_by_status [ 'finished' ]);
echo '<td>' . $unanswered . '</td>' ;
echo '<td>' . $this -> formatNumber (( $unanswered > 0 ? $unanswered * 100 / ( int ) $recipients_by_status [ 'send' ] : 0 ), 0 , '%' ) . '</td>' ;
echo '<td>' . $this -> formatNumber (( $unanswered > 0 ? $unanswered * 100 / ( int ) $all_rec_in_survey : 0 ), 0 , '%' ) . '</td>' ;
echo '</tr>' ;
echo '<tr>' ;
echo '<td>' . $lang [ 'srv_inv_dashboard_tbl_clicked' ] . '</td>' ;
echo '<td>' . ( int ) $recipients_by_status [ 'clicked' ] . '</td>' ;
echo '<td>' . $this -> formatNumber ((( int ) $recipients_by_status [ 'clicked' ] > 0 ? ( int ) $recipients_by_status [ 'clicked' ] * 100 / ( int ) $recipients_by_status [ 'send' ] : 0 ), 0 , '%' ) . '</td>' ;
echo '<td>' . $this -> formatNumber ((( int ) $recipients_by_status [ 'clicked' ] > 0 ? ( int ) $recipients_by_status [ 'clicked' ] * 100 / ( int ) $all_rec_in_survey : 0 ), 0 , '%' ) . '</td>' ;
echo '</tr>' ;
#če se slučajno pojavijo kaki neznani statusi
if (( int ) $recipients_by_status [ 'unknown' ] > 0 ) {
echo '<tr>' ;
echo '<td>' . $lang [ 'srv_inv_dashboard_tbl_unknown' ] . '</td>' ;
echo '<td>' . ( int ) $recipients_by_status [ 'unknown' ] . '</td>' ;
echo '<td>' . $this -> formatNumber ((( int ) $recipients_by_status [ 'unknown' ] > 0 ? ( int ) $recipients_by_status [ 'unknown' ] * 100 / ( int ) $recipients_by_status [ 'send' ] : 0 ), 0 , '%' ) . '</td>' ;
echo '<td>' . $this -> formatNumber ((( int ) $recipients_by_status [ 'unknown' ] > 0 ? ( int ) $recipients_by_status [ 'unknown' ] * 100 / ( int ) $all_rec_in_survey : 0 ), 0 , '%' ) . '</td>' ;
echo '</tr>' ;
}
echo '<tr>' ;
echo '<td>' . $lang [ 'srv_inv_dashboard_tbl_finished' ] . '</td>' ;
echo '<td>' . ( int ) $recipients_by_status [ 'finished' ] . '</td>' ;
echo '<td class="red">' . $this -> formatNumber ((( int ) $recipients_by_status [ 'finished' ] > 0 ? ( int ) $recipients_by_status [ 'finished' ] * 100 / ( int ) $recipients_by_status [ 'send' ] : 0 ), 0 , '%' ) . '</td>' ;
echo '<td class="">' . $this -> formatNumber ((( int ) $recipients_by_status [ 'finished' ] > 0 ? ( int ) $recipients_by_status [ 'finished' ] * 100 / ( int ) $all_rec_in_survey : 0 ), 0 , '%' ) . '</td>' ;
echo '</tr>' ;
echo '</table>' ;
}
}
}
} else {
#Vabil še nismo pošiljali
echo $lang [ 'srv_inv_dashboard_empty' ] . ' <a href="' . $site_url . 'admin/survey/index.php?anketa=' . $this -> sid . '&a=' . A_INVITATIONS . '&m=add_recipients_view">' . $lang [ 'srv_inv_dashboard_add_link' ] . '</a>' ;
}
} else {
echo $lang [ 'srv_inv_dashboard_not_enabled' ];
}
echo '</p>' ;
echo '</div>' ;
echo '</fieldset>' ;
#pošiljanje po enotah
$cnt_by_sendings = array ();
$all_units_count = 0 ;
# najprej koliko enotam še ni bilo poslano
$sel = " select count(*) FROM srv_invitations_recipients WHERE ank_id=' $this->sid ' AND sent = '0' " ;
$query = sisplet_query ( $sel );
list ( $count ) = mysqli_fetch_row ( $query );
if ( $count > 0 ) {
$cnt_by_sendings [ 0 ] = ( int ) $count ;
}
$all_units_count = ( int ) $count ;
$sel1 = " select count(*) as cnt, rec_id FROM srv_invitations_archive_recipients WHERE arch_id in (select id from srv_invitations_archive where ank_id = ' " . $this -> sid . " ') AND success !='0' group by rec_id ORDER BY cnt ASC; " ;
$query1 = sisplet_query ( $sel1 );
while ( list ( $count , $rec_id ) = mysqli_fetch_row ( $query1 )) {
$cnt_by_sendings [( int ) $count ] ++ ;
$all_units_count ++ ;
}
if ( count ( $cnt_by_sendings ) > 0 ) {
echo '<fieldset class="inv_fieldset">' ;
echo '<legend >' ;
echo '<span class="pointer legend" onClick="$(this).parent().parent().find(\'.inv_filedset_inline_div\').toggle(); $(this).find(\'.plus\').toggle();$(this).find(\'.minus\').toggle();">' ;
echo '<span class="plus red strong">+ </span>' ;
echo '<span class="minus red strong displayNone">- </span>' ;
echo $lang [ 'srv_inv_nav_email_sending_status' ];
echo '</span>' ;
echo Help :: display ( 'srv_inv_cnt_by_sending' );
echo '</legend>' ;
echo '<br/>' ;
echo '<div class="inv_filedset_inline_div displayNone">' ;
echo '<table style="border-spacing: 0px;padding: 0px;margin: 0px;">' ;
echo '<colgrup>' ;
echo '<col style="min-width:150px;"/>' ;
echo '<col style="min-width:150px;"/>' ;
echo '<col style="min-width:150px;"/>' ;
echo '</colgrup>' ;
echo '<tr>' ;
echo '<th class="anl_al">' . $lang [ 'srv_inv_sending_overview_cnt' ] . '</th>' ;
echo '<th class="anl_al">' . $lang [ 'srv_inv_sending_overview_units' ] . '</th>' ;
echo '<th class="anl_al">' . $lang [ 'srv_inv_sending_overview_percentage' ] . '</th>' ;
echo '</tr>' ;
foreach ( $cnt_by_sendings AS $cnt => $units ) {
echo '<tr>' ;
echo '<td>' . $cnt . '</td>' ;
echo '<td>' . $units . '</td>' ;
$percent = ( $all_units_count > 0 ) ? $units / $all_units_count * 100 : 0 ;
echo '<td>' . Common :: formatNumber ( $percent , 0 , null , '%' ) . '</td>' ;
echo '</tr>' ;
}
echo '<tr>' ;
echo '<td class="anl_bt_dot red">' . $lang [ 'srv_inv_sending_overview_sum' ] . '</td>' ;
echo '<td class="anl_bt_dot red">' . $all_units_count . '</td>' ;
$percent = ( $all_units_count > 0 ) ? $all_units_count / $all_units_count * 100 : 0 ;
echo '<td class="anl_bt_dot red">' . Common :: formatNumber ( $percent , 0 , null , '%' ) . '</td>' ;
echo '</tr>' ;
echo '</table>' ;
echo '</div>' ;
echo '</fieldset>' ;
}
}
2021-03-16 10:11:08 +01:00
// Prikaz statusov posiljanj
private function displayInvitationStatusNew () {
2020-08-14 13:36:36 +02:00
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 '<fieldset class="inv_fieldset"><legend>' . $lang [ 'srv_inv_nav_email_status' ] . '</legend>' ;
echo '<div class="inv_filedset_inline_div">' ;
echo '<p>' ;
#koliko je vseh uporabnikov v bazi
2021-03-16 10:11:08 +01:00
$sql_query = sisplet_query ( " SELECT count(*) as cnt FROM srv_invitations_recipients WHERE ank_id = ' " . $this -> sid . " ' AND deleted ='0' " );
2020-08-14 13:36:36 +02:00
list ( $cnt_all_in_db ) = mysqli_fetch_row ( $sql_query );
#zloopamo skozi posamezna pošiljanja in preštejemo vse potrebno
2021-03-16 10:11:08 +01:00
$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 ;
" );
2020-08-14 13:36:36 +02:00
$array_dashboard = array ();
$array_archive_subdata = array ();
$user_max_status = array ();
$user_lurker = array ();
# štetje po pošiljanjih
$cnt_by_user = array ();
if ( mysqli_num_rows ( $sql_query ) > 0 ) {
#loop po vseh arhivih
while ( $row = mysqli_fetch_assoc ( $sql_query )) {
$array_archive_subdata [ $row [ 'id' ]] = $row ;
$sql_subStr = " SELECT sit.res_id,sit.status FROM srv_invitations_tracking AS sit WHERE sit.inv_arch_id = ' " . $row [ 'id' ] . " ' AND sit.res_id IN (SELECT id FROM srv_invitations_recipients WHERE ank_id = ' " . $this -> sid . " ' AND deleted ='0') " ;
$sql_subStr = " SELECT sit.res_id,sit.status, su.lurker FROM srv_invitations_tracking AS sit "
. " INNER JOIN srv_invitations_recipients AS sir ON sit.res_id = sir.id "
. " INNER join srv_user AS su ON sit.res_id = su.inv_res_id "
. " WHERE sir.ank_id=' $this->sid ' AND sir.deleted ='0' AND su.ank_id=' $this->sid ' AND sit.inv_arch_id = ' $row[id] ' " ;
$sql_subQry = sisplet_query ( $sql_subStr );
$sub_max = array ();
#loop po vseh trackingih posameznega arhiva
while ( $subRow = mysqli_fetch_assoc ( $sql_subQry )) {
if (( int ) $subRow [ 'status' ] == 2 ) {
$subRow [ 'status' ] = - 2 ;
}
if (( int ) $subRow [ 'status' ] == 1 ) {
$cnt_by_user [ $subRow [ 'res_id' ]] ++ ;
}
#maximalni status uporabnika za posamezen arhiv
$sub_max [ $subRow [ 'res_id' ]] = max ( $sub_max [ $subRow [ 'res_id' ]], $subRow [ 'status' ]);
#globalni max statusi posameznih uporabnikov
$_userMaxStatus = max ( $user_max_status [ $subRow [ 'res_id' ]], $subRow [ 'status' ]);
$user_max_status [ $subRow [ 'res_id' ]] = $_userMaxStatus ;
$user_lurker [ $subRow [ 'res_id' ]] = $subRow [ 'lurker' ];
}
#maximalni statusi uporabniak v posameznem arhivu
$array_dashboard [ $row [ 'id' ]] = $sub_max ;
}
}
# preštejemo respondente po statusu
$recipients_by_status = array ();
$recipients_by_status [ 'all' ] = ( int ) $cnt_all_in_db ;
$user_by_status_for_archive = array ();
if ( count ( $user_max_status ) > 0 ) {
foreach ( $user_max_status AS $uid => $status ) {
switch (( int ) $status ) {
# 2 - E-pošta - napaka
case - 2 :
$recipients_by_status [ 'not_send' ] ++ ;
$recipients_by_status [ 'error' ] ++ ;
break ;
# 0 - E-pošta - ni poslana
case 0 :
$recipients_by_status [ 'not_send' ] ++ ;
break ;
# 1 - E-pošta - neodgovor
case 1 :
$recipients_by_status [ 'send' ] ++ ;
break ;
# 3 - klik na nagovor
case 3 :
$recipients_by_status [ 'send' ] ++ ;
$recipients_by_status [ 'clicked' ] ++ ;
break ;
# 4 - klik na anketo
case 4 :
$recipients_by_status [ 'send' ] ++ ;
$recipients_by_status [ 'clicked' ] ++ ;
break ;
# 5 - delno prazna
case 5 :
$recipients_by_status [ 'send' ] ++ ;
#$recipients_by_status['clicked'] ++;
if ( $user_lurker [ $uid ] == 1 ) {
# če je lurker
$recipients_by_status [ 'clicked' ] ++ ;
} else {
$recipients_by_status [ 'finished' ] ++ ;
}
break ;
# 6 - končana
case 6 :
$recipients_by_status [ 'send' ] ++ ;
if ( $user_lurker [ $uid ] == 1 ) {
# če je lurker
$recipients_by_status [ 'clicked' ] ++ ;
} else {
$recipients_by_status [ 'finished' ] ++ ;
}
break ;
# null - neznan
default :
$recipients_by_status [ 'unknown' ] ++ ;
break ;
}
}
echo '<table class="inv_dashboard_table">' ;
echo '<tr>' ;
echo '<th>' . $lang [ 'srv_inv_dashboard_tbl_all' ] . '</th>' ;
echo '<th>' . ( int ) $recipients_by_status [ 'all' ] . '</th>' ;
echo '<th>-</th>' ;
echo '<th>100%</th>' ;
echo '</tr>' ;
#popslano enotam
echo '<tr>' ;
echo '<th>' . $lang [ 'srv_inv_dashboard_tbl_send' ] . '</th>' ;
echo '<th>' . ( int ) $recipients_by_status [ 'send' ] . '</th>' ;
echo '<th>' . (( int ) $recipients_by_status [ 'send' ] > 0 ? '100%' : '0%' ) . '</th>' ;
echo '<th>' . $this -> formatNumber ((( int ) $recipients_by_status [ 'send' ] > 0 ? ( int ) $recipients_by_status [ 'send' ] * 100 / ( int ) $recipients_by_status [ 'all' ] : 0 ), 0 , '%' ) . '</th>' ;
echo '</tr>' ;
#neodgovori
echo '<tr>' ;
echo '<td>' . $lang [ 'srv_inv_dashboard_tbl_unanswered' ] . '</td>' ;
$unanswered = (( int ) $recipients_by_status [ 'send' ] - ( int ) $recipients_by_status [ 'clicked' ] - ( int ) $recipients_by_status [ 'finished' ]);
echo '<td>' . $unanswered . '</td>' ;
echo '<td>' . $this -> formatNumber (( $unanswered > 0 ? $unanswered * 100 / ( int ) $recipients_by_status [ 'send' ] : 0 ), 0 , '%' ) . '</td>' ;
echo '<td>' . $this -> formatNumber (( $unanswered > 0 ? $unanswered * 100 / ( int ) $recipients_by_status [ 'all' ] : 0 ), 0 , '%' ) . '</td>' ;
echo '</tr>' ;
echo '<tr>' ;
echo '<td>' . $lang [ 'srv_inv_dashboard_tbl_clicked' ] . '</td>' ;
echo '<td>' . ( int ) $recipients_by_status [ 'clicked' ] . '</td>' ;
echo '<td>' . $this -> formatNumber ((( int ) $recipients_by_status [ 'clicked' ] > 0 ? ( int ) $recipients_by_status [ 'clicked' ] * 100 / ( int ) $recipients_by_status [ 'send' ] : 0 ), 0 , '%' ) . '</td>' ;
echo '<td>' . $this -> formatNumber ((( int ) $recipients_by_status [ 'clicked' ] > 0 ? ( int ) $recipients_by_status [ 'clicked' ] * 100 / ( int ) $recipients_by_status [ 'all' ] : 0 ), 0 , '%' ) . '</td>' ;
echo '</tr>' ;
#če se slučajno pojavijo kaki neznani statusi
if (( int ) $recipients_by_status [ 'unknown' ] > 0 ) {
echo '<tr>' ;
echo '<td>' . $lang [ 'srv_inv_dashboard_tbl_unknown' ] . '</td>' ;
echo '<td>' . ( int ) $recipients_by_status [ 'unknown' ] . '</td>' ;
echo '<td>' . $this -> formatNumber ((( int ) $recipients_by_status [ 'unknown' ] > 0 ? ( int ) $recipients_by_status [ 'unknown' ] * 100 / ( int ) $recipients_by_status [ 'send' ] : 0 ), 0 , '%' ) . '</td>' ;
echo '<td>' . $this -> formatNumber ((( int ) $recipients_by_status [ 'unknown' ] > 0 ? ( int ) $recipients_by_status [ 'unknown' ] * 100 / ( int ) $recipients_by_status [ 'all' ] : 0 ), 0 , '%' ) . '</td>' ;
echo '</tr>' ;
}
echo '<tr>' ;
echo '<td>' . $lang [ 'srv_inv_dashboard_tbl_finished' ] . '</td>' ;
echo '<td>' . ( int ) $recipients_by_status [ 'finished' ] . '</td>' ;
echo '<td class="red">' . $this -> formatNumber ((( int ) $recipients_by_status [ 'finished' ] > 0 ? ( int ) $recipients_by_status [ 'finished' ] * 100 / ( int ) $recipients_by_status [ 'send' ] : 0 ), 0 , '%' ) . '</td>' ;
echo '<td class="">' . $this -> formatNumber ((( int ) $recipients_by_status [ 'finished' ] > 0 ? ( int ) $recipients_by_status [ 'finished' ] * 100 / ( int ) $recipients_by_status [ 'all' ] : 0 ), 0 , '%' ) . '</td>' ;
echo '</tr>' ;
echo '</table>' ;
echo '<br>' ;
# POSAMEZNA pošiljanja
if ( count ( $array_dashboard ) > 0 ) {
foreach ( $array_dashboard AS $archive_id => $archive_data ) {
if ( count ( $archive_data ) > 0 ) {
foreach ( $archive_data AS $uid => $status ) {
if (( int ) $status == 6 && $user_lurker [ $uid ] == 1 ) {
$user_by_status_for_archive [ $archive_id ][ '6l' ] ++ ;
} else if (( int ) $status == 5 && $user_lurker [ $uid ] == 1 ) {
$user_by_status_for_archive [ $archive_id ][ '5l' ] ++ ;
} else {
$user_by_status_for_archive [ $archive_id ][ $status ] ++ ;
}
}
}
}
}
$cnt = 0 ;
if ( count ( $user_by_status_for_archive ) > 0 ) {
foreach ( $user_by_status_for_archive AS $arch_id => $archive_data ) {
$cnt ++ ;
if ( count ( $archive_data ) > 0 ) {
$recipients_by_status = array ();
$recipients_by_status [ 'all' ] = ( int ) $array_archive_subdata [ $arch_id ][ 'rec_in_db' ];
foreach ( $archive_data AS $status => $cntUsers ) {
# 0 - E-pošta - ni poslana
if ( $status == '0' ) {
$recipients_by_status [ 'not_send' ] += $cntUsers ;
# 1 - E-pošta - neodgovor'
} else if ( $status == '1' ) {
$recipients_by_status [ 'send' ] += $cntUsers ;
# 2 - E-pošta - napaka
} else if ( $status == '2' ) {
$recipients_by_status [ 'error' ] += $cntUsers ;
# 3 - klik na nagovor
} else if ( $status == '3' ) {
$recipients_by_status [ 'send' ] += $cntUsers ;
$recipients_by_status [ 'clicked' ] += $cntUsers ;
# 4 - klik na anketo
} else if ( $status == '4' ) {
$recipients_by_status [ 'send' ] += $cntUsers ;
$recipients_by_status [ 'clicked' ] += $cntUsers ;
# 5 - delno prazna
} else if ( $status == '5' ) {
$recipients_by_status [ 'send' ] += $cntUsers ;
#$recipients_by_status['clicked'] +=$cntUsers;
$recipients_by_status [ 'finished' ] += $cntUsers ;
# 5 - delno prazna -lurker
} else if ( $status == '5l' ) {
$recipients_by_status [ 'send' ] += $cntUsers ;
$recipients_by_status [ 'clicked' ] += $cntUsers ;
# 6 - končana
} else if ( $status == '6' ) {
$recipients_by_status [ 'send' ] += $cntUsers ;
$recipients_by_status [ 'finished' ] += $cntUsers ;
# 6 - končana - lurker
} else if ( $status == '6l' ) {
$recipients_by_status [ 'send' ] += $cntUsers ;
$recipients_by_status [ 'clicked' ] += $cntUsers ;
} else {
# null - neznan
$recipients_by_status [ 'unknown' ] += $cntUsers ;
}
}
$avtor_email = iconv ( " iso-8859-2 " , " utf-8 " , trim ( $array_archive_subdata [ $arch_id ][ 'email' ]));
$avtor = array ();
if ( trim ( $array_archive_subdata [ $arch_id ][ 'name' ])) {
$avtor [] = trim ( $array_archive_subdata [ $arch_id ][ 'name' ]);
}
if ( trim ( $array_archive_subdata [ $arch_id ][ 'surname' ])) {
$avtor [] = trim ( $array_archive_subdata [ $arch_id ][ 'surname' ]);
}
if ( count ( $avtor ) > 0 ) {
$avtor_name = implode ( ' ' , $avtor );
} else {
$avtor_name = $avtor_email ;
}
$all_rec_in_survey = ( int ) $recipients_by_status [ 'all' ];
echo '<span class="pointer span_list_archive" onClick="$(this).next().next().next().toggle(); $(this).find(\'.plus\').toggle();$(this).find(\'.minus\').toggle(); $(this).next(\'.link_archive\').toggle();">' ;
echo '<span class="inv_dashboard_sub_title as_link">' ;
echo '<span class="plus" style="color: inherit;">+ </span>' ;
echo '<span class="minus displayNone" style="color: inherit;">- </span>' ;
echo $cnt . $lang [ 'srv_inv_dashboard_list_cnt_title' ];
echo '</span>' ;
// avtor
echo '<span style="font-size: 13px;" title="' . $avtor_email . '">' . $avtor_name . '</span>' ;
// datum
echo ', ' ;
echo '<span style="font-size: 13px;">' . $array_archive_subdata [ $arch_id ][ 'ds' ] . '</span>' ;
// nacin posiljanja
echo ', ' ;
echo '<span style="font-size: 13px;">' ;
if ( $array_archive_subdata [ $arch_id ][ 'tip' ] == '0' )
echo '<span>' . $lang [ 'srv_inv_message_noemailing_type1' ] . '</span>' ;
elseif ( $array_archive_subdata [ $arch_id ][ 'tip' ] == '1' )
echo '<span>' . $lang [ 'srv_inv_message_noemailing_type2' ] . '</span>' ;
elseif ( $array_archive_subdata [ $arch_id ][ 'tip' ] == '2' )
echo '<span>' . $lang [ 'srv_inv_message_noemailing_type3' ] . '</span>' ;
else
echo '<span>' . $lang [ 'email' ] . '</span>' ;
echo '</span>' ;
echo '</span>' ;
// arhiv
echo '<span class="link_archive as_link displayNone" style="margin-left:10px;"><a href="#" onclick="inv_arch_show_recipients(\'' . $array_archive_subdata [ $arch_id ][ 'id' ] . '\'); return false;"> arhiv </a></span>' ;
echo '<br/>' ;
echo '<table class="inv_dashboard_table sub displayNone">' ;
echo '<tr>' ;
echo '<th>' . $lang [ 'srv_inv_dashboard_tbl_all' ] . '</th>' ;
echo '<th>' . ( int ) $all_rec_in_survey . '</th>' ;
#echo '<th>'.(int)$recipients_by_status['all'].'</th>';
echo '<th> </th>' ;
echo '<th>100%</th>' ;
echo '</tr>' ;
# poslano enotam
echo '<tr>' ;
echo '<td>' . $lang [ 'srv_inv_dashboard_tbl_send' ] . '</td>' ;
echo '<td>' . ( int ) $recipients_by_status [ 'send' ] . '</td>' ;
echo '<td>' . (( int ) $recipients_by_status [ 'send' ] > 0 ? '100%' : '0%' ) . '</td>' ;
echo '<td>' . $this -> formatNumber ((( int ) $all_rec_in_survey > 0 ? ( int ) $recipients_by_status [ 'send' ] * 100 / ( int ) $all_rec_in_survey : 0 ), 0 , '%' ) . '</td>' ;
echo '</tr>' ;
# neodgovori
echo '<tr>' ;
echo '<td>' . $lang [ 'srv_inv_dashboard_tbl_unanswered' ] . '</td>' ;
$unanswered = (( int ) $recipients_by_status [ 'send' ] - ( int ) $recipients_by_status [ 'clicked' ] - ( int ) $recipients_by_status [ 'finished' ]);
echo '<td>' . $unanswered . '</td>' ;
echo '<td>' . $this -> formatNumber (( $recipients_by_status [ 'send' ] > 0 ? $unanswered * 100 / ( int ) $recipients_by_status [ 'send' ] : 0 ), 0 , '%' ) . '</td>' ;
echo '<td>' . $this -> formatNumber (( $all_rec_in_survey > 0 ? $unanswered * 100 / ( int ) $all_rec_in_survey : 0 ), 0 , '%' ) . '</td>' ;
echo '</tr>' ;
echo '<tr>' ;
echo '<td>' . $lang [ 'srv_inv_dashboard_tbl_clicked' ] . '</td>' ;
echo '<td>' . ( int ) $recipients_by_status [ 'clicked' ] . '</td>' ;
echo '<td>' . $this -> formatNumber ((( int ) $recipients_by_status [ 'send' ] > 0 ? ( int ) $recipients_by_status [ 'clicked' ] * 100 / ( int ) $recipients_by_status [ 'send' ] : 0 ), 0 , '%' ) . '</td>' ;
echo '<td>' . $this -> formatNumber ((( int ) $all_rec_in_survey > 0 ? ( int ) $recipients_by_status [ 'clicked' ] * 100 / ( int ) $all_rec_in_survey : 0 ), 0 , '%' ) . '</td>' ;
echo '</tr>' ;
#če se slučajno pojavijo kaki neznani statusi
if (( int ) $recipients_by_status [ 'unknown' ] > 0 ) {
echo '<tr>' ;
echo '<td>' . $lang [ 'srv_inv_dashboard_tbl_unknown' ] . '</td>' ;
echo '<td>' . ( int ) $recipients_by_status [ 'unknown' ] . '</td>' ;
echo '<td>' . $this -> formatNumber ((( int ) $recipients_by_status [ 'send' ] > 0 ? ( int ) $recipients_by_status [ 'unknown' ] * 100 / ( int ) $recipients_by_status [ 'send' ] : 0 ), 0 , '%' ) . '</td>' ;
echo '<td>' . $this -> formatNumber ((( int ) $all_rec_in_survey > 0 ? ( int ) $recipients_by_status [ 'unknown' ] * 100 / ( int ) $all_rec_in_survey : 0 ), 0 , '%' ) . '</td>' ;
echo '</tr>' ;
}
echo '<tr>' ;
echo '<td>' . $lang [ 'srv_inv_dashboard_tbl_finished' ] . '</td>' ;
echo '<td>' . ( int ) $recipients_by_status [ 'finished' ] . '</td>' ;
echo '<td class="red">' . $this -> formatNumber ((( int ) $recipients_by_status [ 'send' ] > 0 ? ( int ) $recipients_by_status [ 'finished' ] * 100 / ( int ) $recipients_by_status [ 'send' ] : 0 ), 0 , '%' ) . '</td>' ;
echo '<td class="">' . $this -> formatNumber ((( int ) $all_rec_in_survey > 0 ? ( int ) $recipients_by_status [ 'finished' ] * 100 / ( int ) $all_rec_in_survey : 0 ), 0 , '%' ) . '</td>' ;
echo '</tr>' ;
#napake
if (( int ) $recipients_by_status [ 'error' ] > 0 ) {
echo '<tr>' ;
echo '<td class="anl_bt">' . $lang [ 'srv_inv_dashboard_tbl_error' ] . '</td>' ;
echo '<td class="anl_bt">' . ( int ) $recipients_by_status [ 'error' ] . '</td>' ;
echo '<td class="anl_bt"> </td>' ;
echo '<td class="anl_bt">' . $this -> formatNumber ((( int ) $recipients_by_status [ 'error' ] > 0 ? ( int ) $recipients_by_status [ 'error' ] * 100 / ( int ) $all_rec_in_survey : 0 ), 0 , '%' ) . '</td>' ;
echo '</tr>' ;
}
echo '</table>' ;
}
}
}
} else {
// Imamo sezname, ni pa poslanih vabil
if (( int ) $cnt_all_in_db > 0 ){
echo $lang [ 'srv_inv_dashboard_has_list2' ];
//echo '<p class="spaceLeft bold"><a href="'.$site_url . 'admin/survey/index.php?anketa='.$this->sid.'&a='.A_INVITATIONS.'&m=add_recipients_view">'.$lang['srv_inv_dashboard_add_list'].'</a></p>';
echo '<div class="buttonwrapper"><a class="ovalbutton floatLeft spaceLeft" href="' . $site_url . 'admin/survey/index.php?anketa=' . $this -> sid . '&a=' . A_INVITATIONS . '&m=add_recipients_view">' . $lang [ 'srv_adding_email_respondents' ] . '</a></div>' ;
echo '<div class="buttonwrapper"><a class="ovalbutton floatLeft spaceLeft" href="' . $site_url . 'admin/survey/index.php?anketa=' . $this -> sid . '&a=' . A_INVITATIONS . '&m=send_message">' . $lang [ 'srv_inv_message_draft_send' ] . '</a></div>' ;
echo '<br />' ;
//echo '<p class="spaceLeft bold"><a href="'.$site_url . 'admin/survey/index.php?anketa='.$this->sid.'&a='.A_INVITATIONS.'&m=view_recipients">'.$lang['srv_inv_dashboard_view_list'].'</a></p>';
}
// Ni seznamov in ni poslanih vabil
else {
echo $lang [ 'srv_inv_dashboard_empty' ];
//echo '<p class="spaceLeft bold"><a href="'.$site_url . 'admin/survey/index.php?anketa='.$this->sid.'&a='.A_INVITATIONS.'&m=add_recipients_view">'.$lang['srv_inv_dashboard_add_list'].'</a></p>';
echo '<div class="buttonwrapper"><a class="ovalbutton floatLeft spaceLeft" href="' . $site_url . 'admin/survey/index.php?anketa=' . $this -> sid . '&a=' . A_INVITATIONS . '&m=add_recipients_view">' . $lang [ 'srv_adding_email_respondents' ] . '</a></div>' ;
echo '<br /><br />' ;
}
}
echo '</p>' ;
echo '</div>' ;
echo '</fieldset>' ;
}
// Email vabila niso omogocena
else {
echo '<fieldset class="inv_fieldset"><legend>' . $lang [ 'srv_inv_nav_email_status' ] . '</legend>' ;
echo '<div class="inv_filedset_inline_div">' ;
echo '<p>' ;
echo $lang [ 'srv_inv_dashboard_not_enabled' ];
# uporabnik nima pravic omogočit vabil
if ( ! $userAccess -> checkUserAccess ( $what = 'invitations' )) {
echo '<br/>' . $lang [ 'srv_inv_dashboard_no_permissions' ];
}
# uporabnik lahko vklopi email vabila
else {
echo ' <a href="#" onclick="enableEmailInvitation(this);">' . $lang [ 'srv_omogoci' ] . '</a>' ;
}
echo '</p>' ;
echo '</div>' ;
echo '</fieldset>' ;
}
// 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 '<br/>' ;
#pregled po pošiljanjih
echo '<fieldset class="inv_fieldset">' ;
echo '<legend>' ;
echo '<span class="pointer" onClick="$(this).parent().parent().find(\'.inv_filedset_inline_div\').toggle(); $(this).find(\'.plus\').toggle();$(this).find(\'.minus\').toggle();">' ;
echo '<span class="plus strong displayNone blue">+ </span>' ;
echo '<span class="minus strong blue">- </span>' ;
echo '<span class="legend blue">' . $lang [ 'srv_inv_nav_email_sending_status' ] . '</span>' ;
echo '</span>' ;
echo Help :: display ( 'srv_inv_cnt_by_sending' );
echo '</legend>' ;
echo '<br/>' ;
echo '<div class="inv_filedset_inline_div">' ;
echo '<table style="border-spacing:0px; padding:0px; margin:0 0 20px 15px;">' ;
echo '<colgrup>' ;
echo '<col style="min-width:150px;"/>' ;
echo '<col style="min-width:150px;"/>' ;
echo '<col style="min-width:150px;"/>' ;
echo '</colgrup>' ;
echo '<tr>' ;
echo '<th class="anl_al">' . $lang [ 'srv_inv_sending_overview_cnt' ] . '</th>' ;
echo '<th class="anl_al">' . $lang [ 'srv_inv_sending_overview_units' ] . '</th>' ;
echo '<th class="anl_al">' . $lang [ 'srv_inv_sending_overview_percentage' ] . '</th>' ;
echo '</tr>' ;
if ( $cnt_by_sendings > 0 ) {
foreach ( $cnt_by_sendings AS $cnt => $units ) {
echo '<tr>' ;
echo '<td>' . $cnt . '</td>' ;
echo '<td>' . $units . '</td>' ;
$percent = ( $all_units_count > 0 ) ? $units / $all_units_count * 100 : 0 ;
echo '<td>' . Common :: formatNumber ( $percent , 0 , null , '%' ) . '</td>' ;
echo '</tr>' ;
}
}
echo '<tr>' ;
echo '<td class="anl_bt_dot red">' . $lang [ 'srv_inv_sending_overview_sum' ] . '</td>' ;
echo '<td class="anl_bt_dot red">' . $all_units_count . '</td>' ;
$percent = ( $all_units_count > 0 ) ? $all_units_count / $all_units_count * 100 : 0 ;
echo '<td class="anl_bt_dot red">' . Common :: formatNumber ( $percent , 0 , null , '%' ) . '</td>' ;
echo '</tr>' ;
echo '</table>' ;
echo '</div>' ;
echo '</fieldset>' ;
}
}
2021-03-16 10:11:08 +01:00
// 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 '<fieldset class="inv_fieldset"><legend>' . $lang [ 'srv_inv_nav_email_status' ] . '</legend>' ;
echo '<div class="inv_filedset_inline_div">' ;
echo '<p>' ;
#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 '<table class="inv_dashboard_table">' ;
// Vsi v bazi
echo '<tr>' ;
echo '<th>' . $lang [ 'srv_inv_dashboard_tbl_all' ] . '</th>' ;
echo '<th>' . ( int ) $cnt_all_in_db . '</th>' ;
echo '<th>-</th>' ;
echo '<th>100%</th>' ;
echo '</tr>' ;
// Poslani
echo '<tr>' ;
echo '<td>' . $lang [ 'srv_inv_dashboard_tbl_send' ] . '</td>' ;
echo '<td>' . ( int ) $cnt_sent_in_db . '</td>' ;
echo '<td>' . (( int ) $cnt_sent_in_db > 0 ? '100%' : '0%' ) . '</td>' ;
echo '<td>' . $this -> formatNumber ((( int ) $cnt_sent_in_db > 0 ? ( int ) $cnt_sent_in_db * 100 / ( int ) $cnt_all_in_db : 0 ), 0 , '%' ) . '</td>' ;
echo '</tr>' ;
echo '</table>' ;
echo '</p>' ;
echo '</div>' ;
echo '</fieldset>' ;
}
// Email vabila niso omogocena
else {
echo '<fieldset class="inv_fieldset"><legend>' . $lang [ 'srv_inv_nav_email_status' ] . '</legend>' ;
echo '<div class="inv_filedset_inline_div">' ;
echo '<p>' ;
echo $lang [ 'srv_inv_dashboard_not_enabled' ];
# uporabnik nima pravic omogočit vabil
if ( ! $userAccess -> checkUserAccess ( $what = 'invitations' )) {
echo '<br/>' . $lang [ 'srv_inv_dashboard_no_permissions' ];
}
# uporabnik lahko vklopi email vabila
else {
echo ' <a href="#" onclick="enableEmailInvitation(this);">' . $lang [ 'srv_omogoci' ] . '</a>' ;
}
echo '</p>' ;
echo '</div>' ;
echo '</fieldset>' ;
}
// 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 '<br/>' ;
#pregled po pošiljanjih
echo '<fieldset class="inv_fieldset">' ;
echo '<legend>' ;
echo '<span class="pointer" onClick="$(this).parent().parent().find(\'.inv_filedset_inline_div\').toggle(); $(this).find(\'.plus\').toggle();$(this).find(\'.minus\').toggle();">' ;
echo '<span class="plus strong displayNone blue">+ </span>' ;
echo '<span class="minus strong blue">- </span>' ;
echo '<span class="legend blue">' . $lang [ 'srv_inv_nav_email_sending_status' ] . '</span>' ;
echo '</span>' ;
echo Help :: display ( 'srv_inv_cnt_by_sending' );
echo '</legend>' ;
echo '<br/>' ;
echo '<div class="inv_filedset_inline_div">' ;
echo '<table style="border-spacing:0px; padding:0px; margin:0 0 20px 15px;">' ;
echo '<colgrup>' ;
echo '<col style="min-width:150px;"/>' ;
echo '<col style="min-width:150px;"/>' ;
echo '<col style="min-width:150px;"/>' ;
echo '</colgrup>' ;
echo '<tr>' ;
echo '<th class="anl_al">' . $lang [ 'srv_inv_sending_overview_cnt' ] . '</th>' ;
echo '<th class="anl_al">' . $lang [ 'srv_inv_sending_overview_units' ] . '</th>' ;
echo '<th class="anl_al">' . $lang [ 'srv_inv_sending_overview_percentage' ] . '</th>' ;
echo '</tr>' ;
if ( $cnt_by_sendings > 0 ) {
foreach ( $cnt_by_sendings AS $cnt => $units ) {
echo '<tr>' ;
echo '<td>' . $cnt . '</td>' ;
echo '<td>' . $units . '</td>' ;
$percent = ( $all_units_count > 0 ) ? $units / $all_units_count * 100 : 0 ;
echo '<td>' . Common :: formatNumber ( $percent , 0 , null , '%' ) . '</td>' ;
echo '</tr>' ;
}
}
echo '<tr>' ;
echo '<td class="anl_bt_dot red">' . $lang [ 'srv_inv_sending_overview_sum' ] . '</td>' ;
echo '<td class="anl_bt_dot red">' . $all_units_count . '</td>' ;
$percent = ( $all_units_count > 0 ) ? $all_units_count / $all_units_count * 100 : 0 ;
echo '<td class="anl_bt_dot red">' . Common :: formatNumber ( $percent , 0 , null , '%' ) . '</td>' ;
echo '</tr>' ;
echo '</table>' ;
echo '</div>' ;
echo '</fieldset>' ;
} */
}
2020-08-14 13:36:36 +02:00
function showInvitationSettings () {
global $lang , $admin_type , $global_user_id , $site_url , $site_path , $app_settings ;
$row = $this -> surveySettings ;
$_email = ( int ) SurveyInfo :: getInstance () -> checkSurveyModule ( 'email' );
$sqlu = sisplet_query ( " SELECT email FROM users WHERE id=' " . $global_user_id . " ' " );
$rowu = mysqli_fetch_array ( $sqlu );
if ( $rowu [ 'email' ] == '' ) {
$sqlm = sisplet_query ( " SELECT * FROM misc WHERE what = 'AlertFrom' " );
$rowm = mysqli_fetch_array ( $sqlm );
$rowu [ 'email' ] = $rowm [ 'value' ];
}
$userAccess = UserAccess :: getInstance ( $global_user_id );
$noEmailing = SurveySession :: get ( 'inv_noEmailing' );
# Admini, managerji in Clani, ki imajo odobren dostop - lahko vklopijo vabila
if ( $userAccess -> checkUserAccess ( $what = 'invitations' )) {
// Vklop vabil
if ( $_email == 0 ) {
echo '<fieldset class="inv_fieldset" style="max-width:800px; padding-bottom:15px;"><legend>' . $lang [ 'srv_invitation_nonActivated_title' ] . '</legend>' ;
echo '<div class="inv_filedset_inline_div">' ;
echo '<p>' ;
echo $lang [ 'srv_invitation_nonActivated_text1' ];
echo '</p>' ;
echo '<p>' ;
if ( $lang [ 'id' ] == '1' )
echo sprintf ( $lang [ 'srv_invitation_nonActivated_text2' ], 'https://www.1ka.si/d/sl/pomoc/prirocniki/posiljanje-email-vabil-pridobitev-dovoljenja?from1ka=1' );
else
echo sprintf ( $lang [ 'srv_invitation_nonActivated_text2' ], 'https://www.1ka.si/d/en/help/manuals/sending-email-invitations-and-obtaining-authorization?from1ka=1' );
echo '</p>' ;
echo '<p>' ;
// Za gorenje popravimo text
$text3 = ( Common :: checkModule ( 'gorenje' )) ? str_replace ( '1KA' , 'ESurvey' , $lang [ 'srv_invitation_nonActivated_text3' ]) : $lang [ 'srv_invitation_nonActivated_text3' ];
echo $text3 ;
echo '</p>' ;
// Gumb OMOGOCI VABILA
$text_button = ( Common :: checkModule ( 'gorenje' )) ? str_replace ( '1KA' , 'ESurvey' , $lang [ 'srv_invitation_nonActivated_button_activate' ]) : $lang [ 'srv_invitation_nonActivated_button_activate' ];
echo '<span class="buttonwrapper floatLeft spaceRight"><a class="ovalbutton ovalbutton_orange" href="#" onclick="enableEmailInvitation(\'1\');">' . $text_button . '</a></span>' ;
//echo '<span class="spaceLeft bold" style="line-height:25px;"><a href="https://www.1ka.si/c/804/Email_vabila/?preid=793&from1ka=1">'.$lang['srv_invitation_nonActivated_more'].'</a></span>';
echo '<br />' ;
echo '</div>' ;
echo '</fieldset>' ;
}
// Vabila so vklopljena - NASTAVITVE
else {
if ( $noEmailing == 1 ){
echo '<table style="width:50%;">' ;
}
else {
echo '<table style="width:100%;">' ;
echo '<colgroup style="width:48%;"></colgroup>' ;
echo '<colgroup style="width:48%;"></colgroup>' ;
}
echo '<tr>' ;
// Leva stran - navadne nastavitve
echo '<td style="padding-right:20px;vertical-align: top;">' ;
echo '<fieldset class="inv_fieldset"><legend>' . $lang [ 'srv_inv_nav_invitations_settings_general' ] . ' ' . Help :: display ( 'srv_inv_general_settings' ) . '</legend>' ;
echo '<div class="inv_filedset_inline_div">' ;
echo '<div id="surveyInvitationSetting">' ;
2021-03-16 10:11:08 +01:00
// Preverimo ce je vklopljen modul za volitve - potem ne pustimo nobenih preklopov
$voting_disabled = '' ;
if ( SurveyInfo :: getInstance () -> checkSurveyModule ( 'voting' )){
$voting_disabled = ' disabled' ;
2021-03-19 13:29:58 +01:00
// Warning za volitve
echo '<p class="red bold">' . $lang [ 'srv_voting_warning' ] . '</p>' ;
2021-03-16 10:11:08 +01:00
}
2020-08-14 13:36:36 +02:00
$individual = ( int ) $this -> surveySettings [ 'individual_invitation' ];
// Individualizirana vabila - GLAVNA NASTAVITEV
echo '<p>' ;
echo '<label class="lbl_email_setting">' . $lang [ 'srv_user_base_individual_invitaition' ];
if ( $individual == 0 )
echo ' ' . Help :: display ( 'srv_user_base_individual_invitaition_note2' ) . ' </label>' ;
else
echo ' ' . Help :: display ( 'srv_user_base_individual_invitaition_note' ) . ' </label>' ;
2021-03-16 10:11:08 +01:00
echo '<label><input type="radio" name="individual_invitation" value="0" id="individual_invitation_0"' . ( $individual == 0 ? ' checked="checked"' : '' ) . ' ' . $voting_disabled . ' onChange="surveyBaseSettingRadio(\'individual_invitation\',true);"/>' . $lang [ 'no1' ] . '</label>' ;
echo '<label><input type="radio" name="individual_invitation" value="1" id="individual_invitation_1"' . ( $individual == 1 ? ' checked="checked"' : '' ) . ' ' . $voting_disabled . ' onChange="surveyBaseSettingRadio(\'individual_invitation\',true);"/>' . $lang [ 'yes' ] . '</label>' ;
2020-08-14 13:36:36 +02:00
echo '</p>' ;
// Ce niso indvidualizirana imamo samo nacin posiljanja
if ( $individual == 0 ) {
// Nacin posiljanja (email, posta, sms...)
echo '<p>' ;
echo '<label class="lbl_email_setting">' . $lang [ 'srv_inv_message_type' ] . ': ' . Help :: display ( 'srv_inv_sending_type' ) . '</label>' ;
2021-03-16 10:11:08 +01:00
echo '<label><input type="radio" name="inv_messages_noEmailing" value="0" id="inv_messages_noEmailing_1"' . ( $noEmailing == 0 ? ' checked="checked"' : '' ) . ' ' . $voting_disabled . ' onChange="noEmailingToggle(\'0\');"/>' . $lang [ 'srv_inv_message_noemailing_0' ] . '</label>' ;
echo '<label><input type="radio" name="inv_messages_noEmailing" value="1" id="inv_messages_noEmailing_1"' . ( $noEmailing == 1 ? ' checked="checked"' : '' ) . ' ' . $voting_disabled . ' onChange="noEmailingToggle(\'1\');"/>' . $lang [ 'srv_inv_message_noemailing_1' ] . '</label>' ;
2020-08-14 13:36:36 +02:00
echo '</p>' ;
// Nacin dokumentiranja (posta, sms, drugo)
if ( $noEmailing == 1 ){
$noEmailingType = SurveySession :: get ( 'inv_noEmailing_type' );
echo '<p>' ;
echo '<label class="lbl_email_setting">' . $lang [ 'srv_inv_message_type_external' ] . ':</label>' ;
2021-03-16 10:11:08 +01:00
echo '<label><input type="radio" name="noMailType" value="0" id="noMailType1"' . ( $noEmailingType == 0 ? ' checked="checked"' : '' ) . ' ' . $voting_disabled . ' onClick="noEmailingType(\'0\');" />' . $lang [ 'srv_inv_message_noemailing_type1' ] . '</label>' ;
echo '<label><input type="radio" name="noMailType" value="1" id="noMailType2"' . ( $noEmailingType == 1 ? ' checked="checked"' : '' ) . ' ' . $voting_disabled . ' onClick="noEmailingType(\'1\');" />' . $lang [ 'srv_inv_message_noemailing_type2' ] . '</label>' ;
echo '<label><input type="radio" name="noMailType" value="2" id="noMailType3"' . ( $noEmailingType == 2 ? ' checked="checked"' : '' ) . ' ' . $voting_disabled . ' onClick="noEmailingType(\'2\');" />' . $lang [ 'srv_inv_message_noemailing_type3' ] . '</label>' ;
2020-08-14 13:36:36 +02:00
echo '</p>' ;
}
}
# Normalna vabila z unikatinim URL
else {
// Nacin posiljanja (email, posta, sms...)
echo '<p>' ;
echo '<label class="lbl_email_setting">' . $lang [ 'srv_inv_message_type' ] . ': ' . Help :: display ( 'srv_inv_sending_type' ) . '</label>' ;
2021-03-16 10:11:08 +01:00
echo '<label><input type="radio" name="inv_messages_noEmailing" value="0" id="inv_messages_noEmailing_1"' . ( $noEmailing == 0 ? ' checked="checked"' : '' ) . ' ' . $voting_disabled . ' onChange="noEmailingToggle(\'0\');"/>' . $lang [ 'srv_inv_message_noemailing_0' ] . '</label>' ;
echo '<label><input type="radio" name="inv_messages_noEmailing" value="1" id="inv_messages_noEmailing_1"' . ( $noEmailing == 1 ? ' checked="checked"' : '' ) . ' ' . $voting_disabled . ' onChange="noEmailingToggle(\'1\');"/>' . $lang [ 'srv_inv_message_noemailing_1' ] . '</label>' ;
2020-08-14 13:36:36 +02:00
echo '</p>' ;
// Nacin dokumentiranja (posta, sms, drugo)
if ( $noEmailing == 1 ){
$noEmailingType = SurveySession :: get ( 'inv_noEmailing_type' );
echo '<p>' ;
echo '<label class="lbl_email_setting">' . $lang [ 'srv_inv_message_type_external' ] . ':</label>' ;
2021-03-16 10:11:08 +01:00
echo '<label><input type="radio" name="noMailType" value="0" id="noMailType1"' . ( $noEmailingType == 0 ? ' checked="checked"' : '' ) . ' ' . $voting_disabled . ' onClick="noEmailingType(\'0\');" />' . $lang [ 'srv_inv_message_noemailing_type1' ] . '</label>' ;
echo '<label><input type="radio" name="noMailType" value="1" id="noMailType2"' . ( $noEmailingType == 1 ? ' checked="checked"' : '' ) . ' ' . $voting_disabled . ' onClick="noEmailingType(\'1\');" />' . $lang [ 'srv_inv_message_noemailing_type2' ] . '</label>' ;
echo '<label><input type="radio" name="noMailType" value="2" id="noMailType3"' . ( $noEmailingType == 2 ? ' checked="checked"' : '' ) . ' ' . $voting_disabled . ' onClick="noEmailingType(\'2\');" />' . $lang [ 'srv_inv_message_noemailing_type3' ] . '</label>' ;
2020-08-14 13:36:36 +02:00
echo '</p>' ;
}
// Vnos kode - samo ce je email (drugace itak vedno rocni vnos)
if ( $noEmailing != 1 ){
echo '<p>' ;
echo '<label class="lbl_email_setting">' . $lang [ 'usercode_required1' ] . ':' . Help :: display ( 'usercode_required' ) . '</label>' ;
2021-03-16 10:11:08 +01:00
echo '<label><input type="radio" name="usercode_required" value="0" id="usercode_required_0"' . ( $row [ 'usercode_required' ] == 0 ? ' checked="checked"' : '' ) . ' ' . $voting_disabled . ' onChange="surveyBaseSettingRadio(\'usercode_required\',true);"/>' . $lang [ 'usercode_required2' ] . '</label>' ;
echo '<label><input type="radio" name="usercode_required" value="1" id="usercode_required_1"' . ( $row [ 'usercode_required' ] == 1 ? ' checked="checked"' : '' ) . ' ' . $voting_disabled . ' onChange="surveyBaseSettingRadio(\'usercode_required\',true);"/>' . $lang [ 'usercode_required3' ] . '</label>' ;
2020-08-14 13:36:36 +02:00
echo '</p>' ;
}
if ( $row [ 'usercode_required' ] != 0 ) {
echo '<p>' ;
if ( $noEmailing == 1 )
echo '<label class="lbl_email_setting">' . $lang [ 'usercode_text2' ] . ': </label><br />' ;
else
echo '<label class="lbl_email_setting">' . $lang [ 'usercode_text' ] . ': </label><br />' ;
$nagovorText = ( $row [ 'usercode_text' ] && $row [ 'usercode_text' ] != null && $row [ 'usercode_text' ] != " " ) ? $row [ 'usercode_text' ] : $lang [ 'srv_basecode' ];
echo '<textarea style="width:430px; margin-left:15px; margin-top:5px;" name="usercode_text" onblur="surveyBaseSettingText(\'usercode_text\',false);return false;">' . $nagovorText . '</textarea>' ;
echo '</p>' ;
}
// Dostop brez kode
echo '<p>' ;
echo '<label for="usercode_skip_0" class="lbl_email_setting">' . $lang [ 'srv_user_base_access_check' ] . ' ' . Help :: display ( 'srv_inv_no_code' ) . '</label>' ;
2021-03-16 10:11:08 +01:00
echo '<input type="checkbox" name="usercode_skip_checkbox" value="0" id="usercode_skip_0"' . ( $row [ 'usercode_skip' ] != 0 ? ' checked="checked"' : '' ) . ' ' . $voting_disabled . ' onChange="surveyBaseSettingRadio(\'usercode_skip\',true);" />' ;
2020-08-14 13:36:36 +02:00
echo '</p>' ;
if ( $row [ 'usercode_skip' ] > 0 ){
echo '<div style="float: left; margin: -10px 0 0 15px;">' ;
echo '<label class="lbl_email_setting">' . $lang [ 'srv_user_base_access' ] . Help :: display ( 'usercode_skip' ) . ' </label>' ;
echo '<label><input type="radio" name="usercode_skip" value="1" id="usercode_skip_1"' . ( $row [ 'usercode_skip' ] == 1 ? ' checked="checked"' : '' ) . ' onChange="surveyBaseSettingRadio(\'usercode_skip\',true);"/>' . $lang [ 'srv_vsi' ] . '</label>' ;
echo '<label><input type="radio" name="usercode_skip" value="2" id="usercode_skip_2"' . ( $row [ 'usercode_skip' ] == 2 ? ' checked="checked"' : '' ) . ' onChange="surveyBaseSettingRadio(\'usercode_skip\',true);"/>' . $lang [ 'srv_setting_onlyAuthor' ] . '</label>' ;
echo '</div>' ;
}
/* echo '<p>' ;
echo '<label class="lbl_email_setting">' . $lang [ 'srv_user_base_access' ] . Help :: display ( 'usercode_skip' ) . ' </label>' ;
echo '<label><input type="radio" name="usercode_skip" value="0" id="usercode_skip_0"' . ( $row [ 'usercode_skip' ] == 0 ? ' checked="checked"' : '' ) . ' onChange="surveyBaseSettingRadio(\'usercode_skip\',true);"/>' . $lang [ 'no1' ] . '</label>' ;
echo '<label><input type="radio" name="usercode_skip" value="1" id="usercode_skip_1"' . ( $row [ 'usercode_skip' ] == 1 ? ' checked="checked"' : '' ) . ' onChange="surveyBaseSettingRadio(\'usercode_skip\',true);"/>' . $lang [ 'yes' ] . '</label>' ;
echo '<label><input type="radio" name="usercode_skip" value="2" id="usercode_skip_2"' . ( $row [ 'usercode_skip' ] == 2 ? ' checked="checked"' : '' ) . ' onChange="surveyBaseSettingRadio(\'usercode_skip\',true);"/>' . $lang [ 'srv_setting_onlyAuthor' ] . '</label>' ;
echo '<br/><i class="small">* ' . $lang [ 'srv_user_base_access_alert_' . $row [ 'usercode_skip' ] . '' ] . '</i>' ;
echo '</p>' ; */
}
echo '<br />' ;
// Gumb shrani - samo provizorično
echo '<div class="buttonwrapper"><a class="ovalbutton floatRight" href="#" title="' . $lang [ 'save' ] . '">' . $lang [ 'save' ] . '</a></div>' ;
echo '<div class="buttonwrapper"><a class="ovalbutton floatRight spaceRight" href="' . $site_url . 'admin/survey/index.php?anketa=' . $this -> sid . '&a=' . A_INVITATIONS . '&m=add_recipients_view">' . $lang [ 'srv_adding_email_respondents' ] . '</a></div>' ;
echo '</div>' ;
echo '</div>' ;
echo '</fieldset>' ;
echo '</td>' ;
// desna stran - nastavitve streznika - samo ce imamo posiljanje preko emaila
if ( $noEmailing != 1 ){
// Gorenje tega nima
if ( ! Common :: checkModule ( 'gorenje' )){
2021-03-17 12:09:58 +01:00
2020-08-14 13:36:36 +02:00
echo '<td style="padding-right:10px;vertical-align: top;">' ;
echo '<fieldset class="inv_fieldset"><legend>' . $lang [ 'srv_email_setting_title' ] . '</legend>' ;
echo '<div class="inv_filedset_inline_div">' ;
echo '<div id="surveyInvitationSettingServer">' ;
$this -> viewServerSettings ();
echo '</div>' ;
echo '</div>' ;
echo '</fieldset>' ;
echo '</td>' ;
}
}
echo '</tr></table>' ;
}
}
# navadni uporabniki, ki nimajo dostopa - text kako lahko pridobijo dostop
else {
echo '<fieldset class="inv_fieldset" style="max-width:800px; padding-bottom: 15px;"><legend>' . $lang [ 'srv_invitation_nonActivated_title' ] . '</legend>' ;
echo '<div class="inv_filedset_inline_div">' ;
echo '<p>' ;
echo $lang [ 'srv_invitation_nonActivated_text1' ];
echo '</p>' ;
echo '<p>' ;
if ( $lang [ 'id' ] == '1' )
echo sprintf ( $lang [ 'srv_invitation_nonActivated_text2' ], 'https://www.1ka.si/d/sl/pomoc/prirocniki/posiljanje-email-vabil-pridobitev-dovoljenja?from1ka=1' );
else
echo sprintf ( $lang [ 'srv_invitation_nonActivated_text2' ], 'https://www.1ka.si/d/en/help/manuals/sending-email-invitations-and-obtaining-authorization?from1ka=1' );
echo '</p>' ;
echo '<p>' ;
echo $lang [ 'srv_invitation_nonActivated_text3' ];
echo '</p>' ;
// Gumb ZAPROSI ZA DOSTOP DO VABIL
echo '<span class="buttonwrapper floatLeft spaceRight"><a class="ovalbutton ovalbutton_orange" href="https://www.1ka.si/d/sl/pomoc/vodic-za-uporabnike/objava/1ka-vabila/?from1ka=1">' . $lang [ 'srv_invitation_nonActivated_button_details' ] . '</a></span>' ;
//echo '<span class="spaceLeft bold" style="line-height:25px;"><a href="https://www.1ka.si/c/804/Email_vabila/?preid=793&from1ka=1">'.$lang['srv_invitation_nonActivated_more'].'</a></span>';
echo '<br />' ;
echo '</div>' ;
echo '</fieldset>' ;
}
}
function formatNumber ( $value , $digit = 0 , $sufix = " " ) {
if ( $value <> 0 && $value != null )
$result = round ( $value , $digit );
else
$result = " 0 " ;
# polovimo decimalna mesta in vejice za tisočice
$decimal_point = SurveyDataSettingProfiles :: getSetting ( 'decimal_point' );
$thousands = SurveyDataSettingProfiles :: getSetting ( 'thousands' );
$result = number_format ( $result , $digit , $decimal_point , $thousands ) . $sufix ;
return $result ;
}
function showInvitationLists ( $profile_id = null ) {
global $lang , $global_user_id ;
echo '<h2>' . $lang [ 'srv_inv_list_edit_header' ] . '</h2>' ;
echo '<table>' ;
echo '<tr>' ;
echo '<td style="vertical-align:top;min-height:500px; min-width:550px;">' ;
echo '<div style="height:25px; width:100%; ">' ;
echo '<label><input name="inv_show_list_type" id="inv_show_list_type1" type="radio" value="1" onclick="showInvitationListsNames();" checked="checked" autocomplete="off">' . $lang [ 'srv_inv_list_edit_from_this_survey' ] . '</label>' ;
echo '<label><input name="inv_show_list_type" id="inv_show_list_type2" type="radio" value="0" onclick="showInvitationListsNames();" autocomplete="off">' . $lang [ 'srv_inv_list_edit_from_all_surveys' ] . '</label>' ;
echo '<label><input name="inv_show_list_type" id="inv_show_list_type3" type="radio" value="2" onclick="showInvitationListsNames();" autocomplete="off">' . $lang [ 'srv_inv_list_edit_from_archive' ] . '</label>' ;
echo '<label class="as_link spaceLeft" onclick="inv_upload_list();">' . $lang [ 'srv_inv_list_upload_file' ] . '</label>' ;
echo '</div>' ;
echo '<div id="inv_edit_rec_list">' ;
$this -> showInvitationListsNames ( $profile_id );
echo '</div>' ;
echo '</td><td style="padding-left:20px; vertical-align:top;">' ;
echo '<div id="inv_selected_rec_list">' ;
$doEdit = $_SESSION [ 'inv_edit_rec_profile' ][ $this -> sid ] == 'true' ? true : false ;
if ( $doEdit ) {
$this -> showEditRecList ( $profile_id );
} else {
$this -> showNoEditRecList ( $profile_id );
}
echo '</div>' ;
echo '</td></tr>' ;
echo '</table>' ;
}
function showInvitationListsNames ( $profile_id = null ) {
global $lang , $global_user_id ;
$onlyThisSurvey = isset ( $_POST [ 'onlyThisSurvey' ]) ? ( int ) $_POST [ 'onlyThisSurvey' ] : 1 ;
if ( $profile_id == null ) {
$pids = explode ( ',' , $_POST [ 'pids' ]);
} else {
$pids = explode ( ',' , $profile_id );
}
if ( $onlyThisSurvey == 0 ) {
#id-ji profilov do katerih lahko dostopamo
$accPid = '' ;
$accStr = " SELECT DISTINCT pid FROM srv_invitations_recipients_profiles_access where uid = ' $global_user_id ' " ;
$accQry = sisplet_query ( $accStr );
while ( list ( $pid ) = mysqli_fetch_row ( $accQry )) {
$accPid .= $prefix . " ' " . $pid . " ' " ;
$prefix = ',' ;
}
# polovimo še ostale porfile
2021-02-22 15:26:32 +01:00
$sql_string = " SELECT rp.*,DATE_FORMAT(rp.insert_time,'%d.%m.%Y, %T') AS ds, u.name as firstname, u.surname, u.email FROM srv_invitations_recipients_profiles AS rp LEFT JOIN users AS u ON rp.uid = u.id WHERE rp.uid in(' " . $global_user_id . " ') " . ( $accPid != '' ? ' OR pid IN (' . $accPid . ')' : '' );
2020-08-14 13:36:36 +02:00
$sql_query = sisplet_query ( $sql_string );
} else if ( $onlyThisSurvey == 2 ) {
$sql_string = " SELECT sia.*,sia.id as pid, sia.naslov AS name, DATE_FORMAT(sia.date_send,'%d.%m.%Y, %T') AS ds, u.name as firstname, u.surname, u.email FROM srv_invitations_archive AS sia LEFT JOIN users AS u ON sia.uid = u.id WHERE ank_id = ' " . $this -> sid . " ' ORDER BY sia.date_send DESC; " ;
$sql_query = sisplet_query ( $sql_string );
} else {
# 1
$sql_string = " SELECT rp.*, DATE_FORMAT(rp.insert_time,'%d.%m.%Y, %T') AS ds , u.name as firstname, u.surname, u.email FROM srv_invitations_recipients_profiles AS rp LEFT JOIN users AS u ON rp.uid = u.id WHERE from_survey = ' $this->sid ' " ;
$sql_query = sisplet_query ( $sql_string );
}
if ( mysqli_num_rows ( $sql_query ) > 0 ) {
echo '<table class="inv_edit_rec_list">' ;
echo '<tr>' ;
echo '<th> </th>' ;
if ( $onlyThisSurvey != 2 ) {
echo '<th> </th>' ;
echo '<th> </th>' ;
}
echo '<th>' ;
echo $lang [ 'srv_inv_list_table_name' ];
echo '</th>' ;
echo '<th>' ;
echo $lang [ 'srv_inv_list_table_cnt_receive' ];
echo '</th>' ;
echo '<th>' ;
echo $lang [ 'srv_inv_list_table_comment' ];
echo '</th>' ;
echo '<th>' ;
echo $lang [ 'srv_inv_list_table_date_create' ];
echo '</th>' ;
echo '<th>' ;
echo $lang [ 'srv_inv_list_table_author' ];
echo '</th>' ;
echo '</tr>' ;
while ( $sql_row = mysqli_fetch_assoc ( $sql_query )) {
echo '<tr>' ;
echo '<td>' ;
echo '<input type="checkbox" class="test_checkAll" id="inv_list_chck_' . $sql_row [ 'pid' ] . '" onclick="changeInvRecListCheckbox();" value="' . $sql_row [ 'pid' ] . '" ' . ( in_array ( $sql_row [ 'pid' ], $pids ) ? ' checked="checked"' : '' ) . 'autocomplete="off">' ;
echo '</td>' ;
if ( $onlyThisSurvey != 2 ) {
echo '<td>' ;
echo '<span class="faicon delete_circle icon-orange_link" onclick="deleteRecipientsList_confirm(\'' . $sql_row [ 'pid' ] . '\'); return false;" title="' . $lang [ 'srv_inv_list_profiles_delete' ] . '"></span>' ;
echo '</td>' ;
echo '<td>' ;
echo '<span class="faicon quick_edit user smaller icon-as_link" onclick="inv_list_edit(\'' . $sql_row [ 'pid' ] . '\'); return false;" title="' . $lang [ 'srv_inv_list_profiles_edit_access' ] . '"></span>' ;
echo '</td>' ;
}
echo '<td>' ;
echo '<label for="inv_list_chck_' . $sql_row [ 'pid' ] . '">' ;
echo $sql_row [ 'name' ];
echo '</label>' ;
echo '</td>' ;
echo '<td>' ;
if ( isset ( $sql_row [ 'respondents' ])) {
$_recipients = str_replace ( " \n \r " , " \n " , $sql_row [ 'respondents' ]);
$_recipients = explode ( " \n " , $_recipients );
echo count ( $_recipients );
} else if ( isset ( $sql_row [ 'cnt_succsess' ]) || isset ( $sql_row [ 'cnt_error' ])) {
echo ( int ) $sql_row [ 'cnt_succsess' ] + ( int ) $sql_row [ 'cnt_error' ];
}
echo '</td>' ;
#echo '<td>';
#$_fields = explode(",",$sql_row['fields']);
#$_fields_lang = array();
#foreach ($_fields as $_field) {
# $_fields_lang[] = $lang['srv_inv_field_'.$_field];
#}
#echo implode(',',$_fields_lang);
#echo '</td>';
echo '<td>' ;
echo $sql_row [ 'comment' ];
echo '</td>' ;
echo '<td>' ;
echo $sql_row [ 'ds' ];
echo '</td>' ;
echo '<td title="' . $sql_row [ 'email' ] . '">' ;
echo $sql_row [ 'firstname' ];
echo ' ' . $sql_row [ 'surname' ];
echo '</td>' ;
echo '</tr>' ;
}
echo '</table>' ;
/*
* Osznačevanje vseh seznamov in brisanje le teh */
echo '<div id="inv_bottom_edit">' ;
echo '<span class="faicon arrow_up"></span> ' ;
echo '<span id="inv_switch_on"><a href="#" onClick="inv_list_selectAll(true)">' . $lang [ 'srv_select_all' ] . '</a></span>' ;
echo '<span id="inv_switch_off" style="display:none;"><a href="#" onClick="inv_list_selectAll(false)">' . $lang [ 'srv_deselect_all' ] . '</a></span>' ;
echo ' <a href="#" onclick="inv_recipients_list_action(\'delete\');"><span class="faicon delete_circle icon-orange" title="' . $lang [ 'srv_invitation_recipients_delete_selected' ] . '"/></span> ' . $lang [ 'srv_invitation_recipients_delete_selected' ] . '</a>' ;
//echo ' <a href="#" onclick="inv_recipients_form_action(\'export\');"><span class="sprites xls delete" style="height:14px; width:16px;" title="'.$lang['srv_invitation_recipients_export_selected'].'"/></span> '.$lang['srv_invitation_recipients_export_selected'].'</a>';
echo '</div>' ;
} else {
echo $lang [ 'srv_inv_list_no_lists' ];
}
return ( int ) mysqli_num_rows ( $sql_query );
}
function showNoEditRecList ( $profile_id = null ) {
global $lang ;
$pids = array ();
$onlyThisSurvey = ( int ) $_POST [ 'onlyThisSurvey' ];
if ( $profile_id == null )
{
# preberemo id-je profilov in respondente
if ( $_POST [ 'pids' ] != '' )
{
$pids = explode ( ',' , $_POST [ 'pids' ]);
}
} else
{
# preberemo id-je profilov in respondente
if ( $profile_id != '' )
{
$pids = explode ( ',' , $profile_id );
}
}
if ( empty ( $pids ))
{
echo $lang [ 'srv_inv_list_choose_left' ] . '<br>' ;
}
session_start ();
$infoBox = null ;
if ( is_array ( $pids ) && count ( $pids ) > 0 )
{
echo '<div style="width:100%; height:25px;"><label><input name="inv_show_list_edit" id="inv_show_list_edit" type="checkbox" value="1" onclick="changeInvRecListEdit();" autocomplete="off">' . $lang [ 'srv_inv_list_edit' ] . '</label></div>' ;
$respondents = array ();
$fields = array ();
# info box prikazujemo samo ko imamo izbran 1 seznam
if ( $onlyThisSurvey <= 1 )
{
# če imamo normalne sezname
if ( is_array ( $pids ) && count ( $pids ) == 1 ) {
$sql_string = " SELECT rp.respondents, fields,rp.name, rp.comment, u.email AS iemail, DATE_FORMAT(rp.insert_time,'%d.%m.%Y, %T') AS fitime, e.email AS eemail, DATE_FORMAT(rp.edit_time,'%d.%m.%Y, %T') AS fetime FROM srv_invitations_recipients_profiles AS rp LEFT JOIN users AS u ON rp.uid = u.id LEFT JOIN users AS e ON rp.uid = e.id WHERE rp.pid IN( " . ( implode ( ',' , $pids )) . " ) " ;
} else {
$sql_string = " SELECT rp.respondents, fields FROM srv_invitations_recipients_profiles AS rp WHERE rp.pid IN( " . ( implode ( ',' , $pids )) . " ) " ;
}
$sql_query = sisplet_query ( $sql_string );
while ( $sql_row = mysqli_fetch_assoc ( $sql_query ))
{
# info box prikazujemo samo ko imamo izbran 1 seznam
if ( is_array ( $pids ) && count ( $pids ) == 1 )
{
$infoBox .= '<span class="gray" style="display:inline-block; margin:10px;5px;">' ;
$infoBox .= $lang [ 'srv_inv_list_edit_added' ];
$infoBox .= trim ( $sql_row [ 'iemail' ]) != '' ? $sql_row [ 'iemail' ] : $lang [ 'srv_inv_list_edit_1kasi' ];
$infoBox .= $lang [ 'srv_inv_list_edit_date' ] . $sql_row [ 'fitime' ];
if ( $sql_row [ 'fitime' ] != $sql_row [ 'fetime' ]) {
$infoBox .= '<br/>' . $lang [ 'srv_inv_list_edit_changed' ];
$infoBox .= trim ( $sql_row [ 'eemail' ]) != '' ? $sql_row [ 'eemail' ] : $lang [ 'srv_inv_list_edit_1kasi' ];
$infoBox .= $lang [ 'srv_inv_list_edit_date' ] . $sql_row [ 'fetime' ];
}
$infoBox .= '<br/><label>' . $lang [ 'srv_inv_list_edit_name' ] . $sql_row [ 'name' ] . '</label>' ;
$infoBox .= '<br/><label>' . $lang [ 'srv_inv_list_edit_comment' ] . $sql_row [ 'comment' ] . '</label>' ;
}
#$array_profiles[$sql_row['pid']] = array('name' => $sql_row['name']);
$respondents_list = str_replace ( " \n \r " , " \n " , $sql_row [ 'respondents' ]);
$respondents_list = explode ( " \n " , $respondents_list );
$respondents = array_merge ( $respondents , $respondents_list );
$_fields = explode ( " , " , $sql_row [ 'fields' ]);
foreach ( $_fields as $_field )
{
if ( ! in_array ( $_field , $fields )) {
$fields [] = $_field ;
}
}
} # end-while
}
else
{
# imamo arhive
$fields = array ();
$_recipients = array ();
$sql_string = " SELECT email,firstname,lastname,salutation,phone,custom,relation FROM srv_invitations_recipients AS sir WHERE sir.id IN (SELECT siar.rec_id FROM srv_invitations_archive_recipients siar WHERE siar.arch_id IN ( " . ( implode ( ',' , $pids )) . " )) " ;
$sql_query = sisplet_query ( $sql_string );
while ( $row = mysqli_fetch_assoc ( $sql_query ) ) {
$_recipients [] = $row ;
foreach ( $row AS $key => $value ) {
if ( $value !== null && ! in_array ( $key , $fields )) {
$fields [] = $key ;
}
}
}
# pripravimo respondente
foreach ( $_recipients AS $_recipient ) {
$recipient = '' ;
$prefix = '' ;
foreach ( $fields AS $field ) {
$recipient .= $prefix . $_recipient [ $field ];
$prefix = ',' ;
}
if ( $recipient != '' ) {
$respondents [] = $recipient ;
}
}
}
# pohandlamo polja
$field_list = array ();
$default_fields = array (
'inv_field_email' => count ( $fields ) == 0 ? 1 : 0 ,
'inv_field_firstname' => 0 ,
'inv_field_lastname' => 0 ,
'inv_field_password' => 0 ,
'inv_field_salutation' => 0 ,
'inv_field_phone' => 0 ,
'inv_field_custom' => 0 ,
);
// Ce imamo modul 360 imamo tudi odnos
if ( SurveyInfo :: getInstance () -> checkSurveyModule ( '360_stopinj' )){
$default_fields [ 'inv_field_relation' ] = 0 ;
}
# skreiramo nov vrstni red polj
if ( count ( $fields ) > 0 ) {
foreach ( $fields as $field ) {
$field_list [ 'inv_field_' . $field ] = 1 ;
if ( isset ( $default_fields [ 'inv_field_' . $field ])) {
unset ( $default_fields [ 'inv_field_' . $field ]);
}
}
}
if ( count ( $default_fields ) > 0 )
{
foreach ( $default_fields as $key => $field ) {
$field_list [ $key ] = $field ;
unset ( $default_fields [ $key ]);
}
}
$respondents = array_unique ( $respondents );
echo '<table class="inv_edit_rec_list">' ;
echo '<tr>' ;
$fields_cnt = 0 ;
foreach ( $field_list AS $field => $checked )
{
if ( $checked == 1 ) {
$fields_cnt ++ ;
echo '<th title="' . $lang [ 'srv_inv_recipients_' . $field ] . '">' . $lang [ 'srv_' . $field ] . '</th>' ;
}
}
echo '</tr>' ;
if ( is_array ( $respondents ) && count ( $respondents ) > 0 )
{
foreach ( $respondents AS $respondent_data ) {
$row_cnt = 0 ;
echo '<tr>' ;
$respondent_data_array = explode ( '|~|' , $respondent_data );
if ( count ( $respondent_data_array ) > 0 ) {
foreach ( $respondent_data_array AS $tekst ) {
if ( $row_cnt < $fields_cnt ) {
echo '<td>' . str_replace ( " |~| " , " , " , $tekst ) . '</td>' ;
$row_cnt ++ ;
}
}
}
echo '</tr>' ;
}
}
echo '</table>' ;
}
echo $infoBox ;
}
function showEditRecList ( $profile_id = null )
{
global $lang ;
$pids = array ();
$onlyThisSurvey = ( int ) $_POST [ 'onlyThisSurvey' ];
if ( $profile_id == null ) {
# preberemo id-je profilov in respondente
if ( $_POST [ 'pids' ] != '' ) {
$pids = explode ( ',' , $_POST [ 'pids' ]);
}
} else {
# preberemo id-je profilov in respondente
if ( $profile_id != '' ) {
$pids = explode ( ',' , $profile_id );
}
}
if ( is_array ( $pids ) && count ( $pids ) == 0 ) {
echo $lang [ 'srv_inv_list_choose_left' ] . '<br>' ;
}
session_start ();
if ( is_array ( $pids ) && ! empty ( $pids ))
{
echo '<div style="height:25px;width:100%;"><label><input name="inv_show_list_edit" id="inv_show_list_edit" type="checkbox" value="1" onclick="changeInvRecListEdit();" checked="checked" autocomplete="off">' . $lang [ 'srv_inv_list_edit' ] . '</label></div>' ;
$respondents = array ();
$fields = array ();
$infoBox = null ;
if ( $onlyThisSurvey <= 1 )
{
# če imamo normalne sezname
if ( is_array ( $pids ) && count ( $pids ) == 1 ) {
$sql_string = " SELECT rp.respondents, fields,rp.name, rp.comment, u.email AS iemail, DATE_FORMAT(rp.insert_time,'%d.%m.%Y, %T') AS fitime, e.email AS eemail, DATE_FORMAT(rp.edit_time,'%d.%m.%Y, %T') AS fetime FROM srv_invitations_recipients_profiles AS rp LEFT JOIN users AS u ON rp.uid = u.id LEFT JOIN users AS e ON rp.uid = e.id WHERE rp.pid IN( " . ( implode ( ',' , $pids )) . " ) " ;
} else {
$sql_string = " SELECT rp.respondents, fields FROM srv_invitations_recipients_profiles AS rp WHERE rp.pid IN( " . ( implode ( ',' , $pids )) . " ) " ;
}
$sql_query = sisplet_query ( $sql_string );
while ( $sql_row = mysqli_fetch_assoc ( $sql_query ))
{
# info box prikazujemo samo ko imamo izbran 1 seznam
if ( is_array ( $pids ) && count ( $pids ) == 1 )
{
$infoBox = '<span class="gray" style="display:inline-block; margin:10px;5px;">' ;
$infoBox .= $lang [ 'srv_inv_list_edit_added' ];
$infoBox .= trim ( $sql_row [ 'iemail' ]) != '' ? $sql_row [ 'iemail' ] : $lang [ 'srv_inv_list_edit_1kasi' ];
$infoBox .= $lang [ 'srv_inv_list_edit_date' ] . $sql_row [ 'fitime' ];
if ( $sql_row [ 'fitime' ] != $sql_row [ 'fetime' ])
{
$infoBox .= '<br/>' . $lang [ 'srv_inv_list_edit_changed' ];
$infoBox .= trim ( $sql_row [ 'eemail' ]) != '' ? $sql_row [ 'eemail' ] : $lang [ 'srv_inv_list_edit_1kasi' ];
$infoBox .= $lang [ 'srv_inv_list_edit_date' ] . $sql_row [ 'fetime' ];
}
$infoBox .= '<br/><label>' . $lang [ 'srv_inv_list_edit_name' ] . '<input type="text" id="rec_profile_name" value="' . $sql_row [ 'name' ] . '" tabindex="1" ></label>' ;
$infoBox .= '<br/><label>' . $lang [ 'srv_inv_list_edit_comment' ] . '<input type="text" id="rec_profile_comment" value="' . $sql_row [ 'comment' ] . '" tabindex="2"></label>' ;
}
#$array_profiles[$sql_row['pid']] = array('name' => $sql_row['name']);
$respondents_list = str_replace ( " \n \r " , " \n " , $sql_row [ 'respondents' ]);
$respondents_list = explode ( " \n " , $respondents_list );
$respondents = array_merge ( $respondents , $respondents_list );
$_fields = explode ( " , " , $sql_row [ 'fields' ]);
foreach ( $_fields as $_field )
{
if ( ! in_array ( $_field , $fields ))
{
$fields [] = $_field ;
}
}
}
}
else
{
# imamo arhive
$fields = array ();
$_recipients = array ();
$sql_string = " SELECT email,firstname,lastname,salutation,phone,custom,relation FROM srv_invitations_recipients AS sir WHERE sir.id IN (SELECT siar.rec_id FROM srv_invitations_archive_recipients siar WHERE siar.arch_id IN ( " . ( implode ( ',' , $pids )) . " )) " ;
$sql_query = sisplet_query ( $sql_string );
while ( $row = mysqli_fetch_assoc ( $sql_query ) ) {
$_recipients [] = $row ;
foreach ( $row AS $key => $value ) {
if ( $value !== null && ! in_array ( $key , $fields )) {
$fields [] = $key ;
}
}
}
# pripravimo respondente
foreach ( $_recipients AS $_recipient ) {
$recipient = '' ;
$prefix = '' ;
foreach ( $fields AS $field ) {
$recipient .= $prefix . $_recipient [ $field ];
$prefix = ',' ;
}
if ( $recipient != '' ) {
$respondents [] = $recipient ;
}
}
}
# pohandlamo polja
$field_list = array ();
$default_fields = array (
'inv_field_email' => count ( $fields ) == 0 ? 1 : 0 ,
'inv_field_firstname' => 0 ,
'inv_field_lastname' => 0 ,
'inv_field_password' => 0 ,
'inv_field_salutation' => 0 ,
'inv_field_phone' => 0 ,
'inv_field_custom' => 0 ,
);
// Ce imamo modul 360 imamo tudi odnos
if ( SurveyInfo :: getInstance () -> checkSurveyModule ( '360_stopinj' )){
$default_fields [ 'inv_field_relation' ] = 0 ;
}
# skreiramo nov vrstni red polj
if ( count ( $fields ) > 0 ) {
foreach ( $fields as $field ) {
$field_list [ 'inv_field_' . $field ] = 1 ;
if ( isset ( $default_fields [ 'inv_field_' . $field ])) {
unset ( $default_fields [ 'inv_field_' . $field ]);
}
}
}
if ( count ( $default_fields ) > 0 ) {
foreach ( $default_fields as $key => $field ) {
$field_list [ $key ] = $field ;
unset ( $default_fields [ $key ]);
}
}
$respondents = array_unique ( $respondents );
echo '<div id="inv_field_container">' ;
echo '<ul class="connectedSortable">' ;
$field_lang = array ();
if ( count ( $field_list ) > 0 ) {
foreach ( $field_list AS $field => $checked )
{
# ali je polje izbrano ( če imamo personalizirano e-vabilo, moramo nujno imeti polje email
$is_selected = ( $checked == 1 ) ? true : false ;
# če je polje obkljukano
$css = $is_selected ? ' class="inv_field_enabled"' : '' ;
# ali labela sproži klik checkboxa
$label_for = ' for="' . $field . '_chk"' ;
echo '<li id="' . $field . '"' . $css . '>' ;
echo '<input id="' . $field . '_chk" type="checkbox" class="inv_checkbox' . $hidden_checkbox . '"' . ( $is_selected == true ? ' checked="checked"' : '' ) . '>' ;
echo '<label' . $label_for . '>' . $lang [ 'srv_' . $field ] . '</label>' ;
echo '</li>' ;
}
if ( $is_selected == 1 ) {
$field_lang [] = $lang [ 'srv_' . $field ];
}
}
echo '</ul>' ;
echo '</div>' ;
echo '<br class="clr" />' ;
echo '<script type="text/javascript">' ;
echo " $ ('ul.connectedSortable').sortable( { update : function () { refreshFieldsList(); }, forcePlaceholderSize: 'true',tolerance: 'pointer',placeholder: 'inv_field_placeholder',}); " ;
echo '</script>' ;
echo '<div>' ;
echo '<textarea id="inv_recipients_list" name="inv_recipients_list">' ;
if ( is_array ( $respondents ) && count ( $respondents ) > 0 ) {
echo str_replace ( " |~| " , " , " , implode ( " \n " , $respondents ));
}
echo '</textarea>' ;
echo '</div>' ;
echo $infoBox ;
echo '<br class="clr" />' ;
echo '<br class="clr" />' ;
if ( count ( $pids ) <= 1 ) {
echo '<span class="buttonwrapper floatLeft spaceLeft"><a class="ovalbutton ovalbutton_gray" href="#" onclick="inv_list_save_old(\'' . implode ( '' , $pids ) . '\'); return false;"><span>' . $lang [ 'srv_inv_list_save_old' ] . '</span></a></span>' ;
}
echo '<span class="buttonwrapper floatLeft spaceLeft"><a class="ovalbutton ovalbutton_orange" href="#" onclick="inv_list_get_name(\'true\'); return false;"><span>' . $lang [ 'srv_inv_list_save_new' ] . '</span></a></span>' ;
echo '<br class="clr" />' ;
}
}
function invListEdit () {
global $lang , $site_url , $global_user_id ;
# polovimo podatke profila
$sql_string = " SELECT pid, name, comment, uid FROM srv_invitations_recipients_profiles WHERE pid=' " . $_POST [ 'pid' ] . " ' " ;
$sql_query = sisplet_query ( $sql_string );
list ( $pid , $name , $comment , $uid ) = mysqli_fetch_row ( $sql_query );
echo '<div id="inv_recipients_profile_name" class="access">' ;
echo '<form id="inv_list_edit_form" name="inv_list_edit_form" autocomplete="off">' ;
/*
echo '<span id="new_recipients_list_span" >' ;
echo '<label>' . $lang [ 'srv_inv_recipient_list_name' ];
echo '<input type="text" id="rec_profile_name" name="rec_profile_name" value="' . $name . '" tabindex="1" autofocus="autofocus">' ;
echo '</label>' ;
echo '</span>' ;
echo '<br/><br/>' ;
echo $lang [ 'srv_inv_recipient_list_comment' ];
echo '<textarea id="rec_profile_comment" name="rec_profile_comment" tabindex="3" rows="5" >' . $comment . '</textarea>' ;
echo '<br/>' ;
*/
$this -> displayListAccess ( $pid );
# skrita polja za respondente in polja
echo '<input id="profile_id" name="profile_id" type="hidden" value="' . ( $_POST [ 'pid' ]) . '" >' ;
echo '<br class="clr" /><br/>' ;
echo '<span class="buttonwrapper floatRight" title="' . $lang [ 'save' ] . '"><a class="ovalbutton ovalbutton_orange" href="#" onclick="inv_list_edit_save(); return false;"><span>' . $lang [ 'save' ] . '</span></a></span>' ;
echo '<span class="buttonwrapper floatRight spaceRight" title="' . $lang [ 'srv_cancel' ] . '"><a class="ovalbutton ovalbutton_gray" href="#" onclick="$(\'#fade\').fadeOut(\'slow\');$(\'#fullscreen\').fadeOut(\'slow\').html(\'\');return false;" ><span>' . $lang [ 'srv_cancel' ] . '</span></a></span>' ;
echo '<br class="clr" />' ;
echo '</form>' ;
echo '</div>' ; # id="inv_view_arch_recipients"
/* echo '<script type="text/javascript">' ;
echo " $ ('#rec_profile_name').focus(); " ;
echo '</script>' ;
*/
}
function listGetName () {
global $lang , $site_url , $global_user_id ;
$saveNew = $_POST [ 'saveNew' ] == 'true' ? true : false ;
$array_profiles = array ();
#ne vem če je fino da lahko dodaja kar na vse sezname
session_start ();
# polovimo še ostale porfile
2021-02-22 15:26:32 +01:00
$sql_string = " SELECT pid, name,comment FROM srv_invitations_recipients_profiles WHERE uid in(' " . $global_user_id . " ') " ;
2020-08-14 13:36:36 +02:00
$sql_query = sisplet_query ( $sql_string );
while ( $sql_row = mysqli_fetch_assoc ( $sql_query )) {
$array_profiles [ $sql_row [ 'pid' ]] = array ( 'name' => $sql_row [ 'name' ], 'comment' => $sql_row [ 'comment' ]);
}
echo '<div id="inv_recipients_profile_name">' ;
if ( $saveNew == true ) {
echo '<span id="new_recipients_list_span" >' ;
echo '<label>' . $lang [ 'srv_inv_recipient_list_name' ];
# zaporedno številčimo ime seznama1,2.... če slučajno ime že obstaja
$new_name = $lang [ 'srv_inv_recipient_list_new' ];
$names = array ();
$s = " SELECT name FROM srv_invitations_recipients_profiles WHERE name LIKE '% " . $new_name . " %' AND uid=' $global_user_id ' " ;
$q = sisplet_query ( $s );
while ( $r = mysqli_fetch_assoc ( $q )) {
$names [] = $r [ 'name' ];
}
if ( count ( $names ) > 0 ) {
$cnt = 1 ;
while ( in_array ( $lang [ 'srv_inv_recipient_list_new' ] . $cnt , $names )) {
$cnt ++ ;
}
$new_name = $lang [ 'srv_inv_recipient_list_new' ] . $cnt ;
}
echo '<input type="text" id="rec_profile_name" value="' . $new_name . '" tabindex="1" autofocus="autofocus">' ;
echo '</label>' ;
echo '</span>' ;
} else {
echo '<span id="new_recipients_list_span" >' ;
echo '<label>' . $lang [ 'srv_inv_recipient_list_name' ];
echo '<input type="text" id="rec_profile_name" value="' . $array_profiles [ $_POST [ 'pid' ]][ 'name' ] . '" tabindex="1" autofocus="autofocus">' ;
echo '</label>' ;
echo '</span>' ;
}
echo '<br/><br/>' ;
echo $lang [ 'srv_inv_recipient_list_comment' ];
echo '<textarea id="rec_profile_comment" tabindex="3" rows="2" >' . $array_profiles [ $_POST [ 'pid' ]][ 'comment' ] . '</textarea>' ;
# skrita polja za respondente in polja
$_fields = str_replace ( 'inv_field_' , '' , implode ( ',' , $_POST [ 'fields' ]));
echo '<input id="inv_prof_field_list" type="hidden" value="' . $_fields . '" >' ;
echo '<input id="inv_prof_recipients_list" type="hidden" value="' . $this -> getCleanString ( $_POST [ 'recipients_list' ]) . '" >' ;
echo '<input id="saveNew" type="hidden" value="' . ( $saveNew == true ? 'true' : 'false' ) . '" >' ;
echo '<input id="profile_id" type="hidden" value="' . ( $_POST [ 'pid' ]) . '" >' ;
echo '<br class="clr" /><br/>' ;
echo '<span class="buttonwrapper floatLeft spaceRight" title="' . $lang [ 'srv_cancel' ] . '"><a class="ovalbutton ovalbutton_gray" href="#" onclick="$(\'#fade\').fadeOut(\'slow\');$(\'#fullscreen\').fadeOut(\'slow\').html(\'\');return false;" ><span>' . $lang [ 'srv_cancel' ] . '</span></a></span>' ;
echo '<span class="buttonwrapper floatRight spaceRight" title="' . $lang [ 'save' ] . '"><a class="ovalbutton ovalbutton_orange" href="#" onclick="inv_list_save(); return false;"><span>' . $lang [ 'save' ] . '</span></a></span>' ;
echo '<br class="clr" />' ;
echo '</div>' ; # id="inv_view_arch_recipients"
echo '<script type="text/javascript">' ;
echo " $ ('#rec_profile_name').focus(); " ;
echo '</script>' ;
}
function invListSaveOld () {
global $lang , $site_url , $global_user_id ;
$return = array ( 'error' => '0' );
$recipients_list = trim ( $this -> getCleanString ( $_POST [ 'recipients_list' ]));
$field_list = ( is_array ( $_POST [ 'field_list' ]) && count ( $_POST [ 'field_list' ]) > 0 ) ? implode ( ',' , $_POST [ 'field_list' ]) : trim ( $_POST [ 'field_list' ]);
$field_list = str_replace ( 'inv_field_' , '' , $field_list );
$profile_id = explode ( ',' , $_POST [ 'profile_id' ]);
$profile_id = $profile_id [ 0 ];
$rec_profile_name = $_POST [ 'rec_profile_name' ];
$rec_profile_comment = $_POST [ 'rec_profile_comment' ];
# dodajamo v obstoječ profil
2021-02-22 15:26:32 +01:00
$sql_string_update = " UPDATE srv_invitations_recipients_profiles SET name=' $rec_profile_name ', comment=' $rec_profile_comment ', respondents = ' $recipients_list ', fields=' $field_list ' WHERE uid in(' $global_user_id ') AND pid = ' $profile_id ' " ;
2020-08-14 13:36:36 +02:00
$sqlQuery = sisplet_query ( $sql_string_update );
sisplet_query ( " COMMIT " );
$this -> removeDuplicates ( $profile_id );
if ( ! $sqlQuery ) {
$error = mysqli_error ( $GLOBALS [ 'connect_db' ]);
$return = array ( 'error' => '1' , 'msg' => $error , 'pid' => $profile_id ());
} else {
$return = array ( 'error' => '0' , 'msg' => 'x2' , 'pid' => $profile_id );
}
#echo json_encode($return);
$this -> showInvitationLists ( $profile_id );
}
function listSave () {
global $lang , $site_url , $global_user_id ;
$return = array ( 'error' => '0' );
$profile_name = ( isset ( $_POST [ 'profile_name' ]) && trim ( $_POST [ 'profile_name' ]) != '' ) ? trim ( $_POST [ 'profile_name' ]) : $lang [ 'srv_invitation_new_templist' ];
$profile_comment = ( isset ( $_POST [ 'profile_comment' ]) && trim ( $_POST [ 'profile_comment' ]) != '' ) ? trim ( $_POST [ 'profile_comment' ]) : '' ;
$recipients_list = trim ( $this -> getCleanString ( $_POST [ 'recipients_list' ]));
$field_list = ( isset ( $_POST [ 'field_list' ]) && trim ( $_POST [ 'field_list' ]) != '' ) ? trim ( $_POST [ 'field_list' ]) : 'email' ;
$profile_id = explode ( ',' , $_POST [ 'profile_id' ]);
$profile_id = $profile_id [ 0 ];
$saveNew = $_POST [ 'saveNew' ] == 'true' ? true : false ;
if ( $saveNew == true ) {
# shranjujemo v nov profil
$sql_insert = " INSERT INTO srv_invitations_recipients_profiles (name,uid,fields,respondents,insert_time,comment, from_survey) VALUES (' $profile_name ', ' $global_user_id ', ' $field_list ', ' $recipients_list ', NOW(), ' $profile_comment ', ' " . $this -> sid . " ' ) " ;
$sqlQuery = sisplet_query ( $sql_insert );
$new_pid = mysqli_insert_id ( $GLOBALS [ 'connect_db' ]);
sisplet_query ( " COMMIT " );
#odstranimo podvojene
$this -> removeDuplicates ( $new_pid );
if ( ! $sqlQuery ) {
$error = mysqli_error ( $GLOBALS [ 'connect_db' ]);
$return = array ( 'error' => '1' , 'msg' => $error , 'pid' => $new_pid );
} else {
$return = array ( 'error' => '0' , 'msg' => 'x1' , 'pid' => $new_pid );
}
sisplet_query ( " COMMIT " );
} else {
# dodajamo v obstoječ profil
2021-02-22 15:26:32 +01:00
$sql_string_update = " UPDATE srv_invitations_recipients_profiles SET name=' $profile_name ', respondents = ' $recipients_list ', comment=' $profile_comment ' WHERE uid in(' $global_user_id ') AND pid = ' $profile_id ' " ;
2020-08-14 13:36:36 +02:00
$sqlQuery = sisplet_query ( $sql_string_update );
sisplet_query ( " COMMIT " );
#odstranimo podvojene
$this -> removeDuplicates ( $profile_id );
if ( ! $sqlQuery ) {
$error = mysqli_error ( $GLOBALS [ 'connect_db' ]);
$return = array ( 'error' => '1' , 'msg' => $error , 'pid' => $profile_id ());
} else {
$return = array ( 'error' => '0' , 'msg' => 'x2' , 'pid' => $profile_id );
}
}
#echo json_encode($return);
$this -> showInvitationLists ();
}
function invListEditSave () {
global $lang , $site_url , $global_user_id ;
/*
* rec_profile_name ] => Seznam1 [ rec_profile_comment ] => Komentar [ uid ] => Array ( [ 0 ] => 1045 [ 1 ] => 1049 [ 2 ] => 1046 ) [ profile_id ] => 2 [ anketa ] => 94 )
*/
$return = array ( 'error' => '0' );
$profile_name = ( isset ( $_POST [ 'rec_profile_name' ]) && trim ( $_POST [ 'rec_profile_name' ]) != '' ) ? trim ( $_POST [ 'rec_profile_name' ]) : $lang [ 'srv_invitation_new_templist' ];
$profile_comment = ( isset ( $_POST [ 'rec_profile_comment' ]) && trim ( $_POST [ 'rec_profile_comment' ]) != '' ) ? trim ( $_POST [ 'rec_profile_comment' ]) : '' ;
$uids = $_POST [ 'uid' ];
$pid = ( int ) $_POST [ 'profile_id' ];
# pripravimo insert query (id avtorja ne dodajamo v dostope, ker je tako v uid profila)
$insert_string = array ();
if ( count ( $uids ) > 0 ) {
foreach ( $uids AS $key => $uid ) {
$insert_string [] = " (' " . $pid . " ',' " . $uid . " ') " ;
}
}
# pobrišemo stare vrednosti dostopov in jih nastavimo na novo
$delStr = " DELETE FROM srv_invitations_recipients_profiles_access WHERE pid = ' $pid ' " ;
$delQuery = sisplet_query ( $delStr );
if ( count ( $insert_string )) {
# dodamo nove vrednosti dostopov
$insStr = " INSERT INTO srv_invitations_recipients_profiles_access VALUES " . implode ( ',' , $insert_string );
$insQuery = sisplet_query ( $insStr );
}
sisplet_query ( " COMMIT " );
# dodajamo v obstoječ profil
# $sql_string_update = "UPDATE srv_invitations_recipients_profiles SET name='$profile_name', comment='$profile_comment' WHERE pid = '$pid'";
# $sqlQuery = sisplet_query($sql_string_update);
# sisplet_query("COMMIT");
// if (!$sqlQuery) {
# $error = mysqli_error($GLOBALS['connect_db']);
# $return = array('error'=>'1', 'msg'=>$error, 'pid'=>$pid);
# } else {
# $return = array('error'=>'0', 'msg'=>'x2', 'pid'=>$pid);
# }
#echo json_encode($return);
$this -> showInvitationLists ();
}
function deleteRecipientsList () {
global $global_user_id ;
$id = ( int ) $_POST [ 'id' ];
if ( $id > 0 ) {
$sql_string = " DELETE FROM srv_invitations_recipients_profiles WHERE pid=' " . $id . " ' AND uid=' " . $global_user_id . " ' " ;
$sqlQuery = sisplet_query ( $sql_string );
sisplet_query ( " COMMIT " );
}
$this -> showInvitationLists ();
}
function deleteRecipientsListMulti () {
$return = array ( 'success' => '0' );
global $global_user_id ;
$ids = $_POST [ 'ids' ];
if ( count ( $ids ) > 0 ){
$sql_string = " DELETE FROM srv_invitations_recipients_profiles WHERE uid=' " . $global_user_id . " ' AND pid IN( " . implode ( ',' , $ids ) . " ) " ;
$sqlQuery = sisplet_query ( $sql_string );
$sqlQuery = sisplet_query ( " COMMIT " );
}
if ( ! $sqlQuery ) {
$errors [] = $lang [ 'srv_inv_recipient_delete_error' ];
} else {
$return [ 'success' ] = 2 ;
//$this->showInvitationLists();
}
}
function removeDuplicates ( $pid ) {
# dodamo tracking
if (( int ) $pid > 0 ) {
$sql_string = " SELECT respondents FROM srv_invitations_recipients_profiles WHERE pid = ' $pid ' " ;
$sql_query = sisplet_query ( $sql_string );
$respondents = array ();
list ( $new_recipients ) = mysqli_fetch_row ( $sql_query );
$new_recipients = str_replace ( " \n \r " , " \n " , $new_recipients );
$new_recipients = explode ( " \n " , $new_recipients );
$new_recipients = implode ( " \n " , array_unique ( $new_recipients ));
$sql_string_update = " UPDATE srv_invitations_recipients_profiles SET respondents=' " . $new_recipients . " ' WHERE pid = ' $pid ' " ;
$sqlQuery = sisplet_query ( $sql_string_update );
sisplet_query ( " COMMIT " );
}
}
function displayListAccess ( $pid ) {
global $lang , $global_user_id , $admin_type ;
# polovimo avtorja profila
$uidQuery = sisplet_query ( " SELECT uid FROM srv_invitations_recipients_profiles WHERE pid =' $pid ' " );
list ( $uid ) = mysqli_fetch_row ( $uidQuery );
# polovimo id-je userjev ki imajo dostop do tega profila
$accessArray = array ();
$accessQuery = sisplet_query ( " SELECT uid FROM srv_invitations_recipients_profiles_access WHERE pid =' $pid ' " );
while ( list ( $uid_ ) = mysqli_fetch_row ( $accessQuery )) {
$accessArray [] = $uid_ ;
}
$sqlQuery = null ;
// tip admina: 0=>admin, 1=>manager, 2=>clan, 3=>user
switch ( $admin_type ) {
case 0 : // admin vidi vse
$sqlQuery = sisplet_query ( " SELECT name, surname, id, email FROM users ORDER BY name ASC " );
break ;
case 1 : // manager vidi ljudi pod sabo
// polovimo vse clane ki spo pod managerjem
$sqlQuery = sisplet_query ( " SELECT DISTINCT name, surname, id, email FROM users WHERE id IN (SELECT DISTINCT user FROM srv_dostop_manage WHERE manager=' $global_user_id ') OR id = ' $global_user_id ' " );
break ;
case 2 :
case 3 :
// TODO
// clani in userji lahko vidijo samo tiste ki so jim poslali maile in so se registrirali
$sqlQuery = sisplet_query ( " SELECT name FROM users WHERE 1 = 0 " );
break ;
}
echo '<span>' . $lang [ 'srv_inv_list_access' ] . '</span><br/>' ;
echo '<span class="gray small">' . $lang [ 'srv_inv_list_access_legend' ] . '</span><br/><br/>' ;
echo '<span id="invListAccessShow1"><a href="#" onClick="inv_listAccess(\'true\'); return false;">' . $lang [ 'srv_dostop_show_all' ] . '</a></span>' ;
echo '<span id="invListAccessShow2" class="displayNone"><a href="#" onClick="inv_listAccess(\'false\'); return false;">' . $lang [ 'srv_dostop_hide_all' ] . '</a></span>' ;
echo '<div id="invListAccess">' ;
while ( $row1 = mysqli_fetch_assoc ( $sqlQuery )) {
$checked = ( in_array ( $row1 [ id ], $accessArray ) || $uid == $row1 [ 'id' ]) ? ' checked="checked"' : '' ;
$_css_hidden = ( $checked != '' ? '' : ' displayNone' );
echo '<div id="div_for_uid_' . $row1 [ 'id' ] . '" name="listAccess" class="floatLeft listAccess_uid' . $_css_hidden . '">' ;
echo '<label nowrap title="' . $row1 [ 'email' ] . '"' . ( $uid == $row1 [ 'id' ] ? ' class="gray"' : '' ) . '>' ;
echo '<input type="checkbox" name="uid[]" value="' . $row1 [ 'id' ] . '" id="uid_' . $row1 [ 'id' ] . '"' . $checked . ( $uid == $row1 [ 'id' ] ? ' disabled="disabled"' : '' ) . ' autocomplete="off"/>' ;
echo $row1 [ 'name' ] . ( $uid == $row1 [ 'id' ] ? ' (' . $lang [ 'author' ] . ')' : '' ) . '</label>' ;
echo '</div>' ;
}
echo '</div>' ;
}
function changeInvRecListEdit () {
session_start ();
$_SESSION [ 'inv_edit_rec_profile' ][ $this -> sid ] = ( $_POST [ 'checked' ] == 'true' ? true : false );
session_commit ();
}
function getUrlLists () {
global $lang , $site_url ;
$result = array ();
$p = new Prevajanje ( $this -> sid );
$lang_array = $p -> get_all_translation_langs ();
$link = SurveyInfo :: getSurveyLink ();
$sqll = sisplet_query ( " SELECT link FROM srv_nice_links WHERE ank_id = ' $this->sid ' ORDER BY id ASC " );
$default_checked = false ;
$cnt = 0 ;
#lepi linki
while ( $rowl = mysqli_fetch_assoc ( $sqll )) {
$result [ $cnt ] = array ( 'url' => $site_url . $rowl [ 'link' ], 'name' => $site_url . $rowl [ 'link' ] . ( count ( $lang_array ) > 0 ? ' - ' . $lang [ 'language' ] . ' ' : '' ));
if ( $default_checked == false ) {
$result [ $cnt ][ 'dc' ] = true ;
$default_checked = true ;
}
$cnt ++ ;
if ( count ( $lang_array ) > 0 ) {
#jezikovni podlinki
foreach ( $lang_array AS $lang_id => $lang_name ) {
$result [ $cnt ] = array ( 'url' => $site_url . $rowl [ 'link' ] . '?language=' . $lang_id , 'name' => $site_url . $rowl [ 'link' ] . '?language=' . $lang_id . ' - ' . $lang_name );
$cnt ++ ;
}
}
}
$link1 = $site_url . 'a/' . Common :: encryptAnketaID ( $this -> sid );
# normalen link
$result [ $cnt ] = array ( 'url' => $link1 , 'name' => $link1 . ( count ( $lang_array ) > 0 ? ' - ' . $lang [ 'language' ] : '' ));
if ( $default_checked == false ) {
$result [ $cnt ][ 'dc' ] = true ;
$default_checked = true ;
}
$cnt ++ ;
#jezikovni link
if ( count ( $lang_array ) > 0 ) {
foreach ( $lang_array AS $lang_id => $lang_name ) {
$result [ $cnt ] = array ( 'url' => $link1 . '?language=' . $lang_id , 'name' => $link1 . '?language=' . $lang_id . ' - ' . $lang_name );
if ( $default_checked == false ) {
$result [ $cnt ][ 'dc' ] = true ;
$default_checked = true ;
}
$cnt ++ ;
}
}
return $result ;
}
function upload_list () {
global $lang , $site_path , $site_url ;
$fields = array ();
$field_list = array ();
# odvisno od tipa sporočil prikažemo različna polja
# Personalizirano e-poštno vabilo
$default_fields = array (
'inv_field_email' => 1 ,
'inv_field_firstname' => 0 ,
'inv_field_lastname' => 0 ,
'inv_field_password' => 0 ,
'inv_field_salutation' => 0 ,
'inv_field_phone' => 0 ,
'inv_field_custom' => 0 ,
);
// Ce imamo modul 360 imamo tudi odnos
if ( SurveyInfo :: getInstance () -> checkSurveyModule ( '360_stopinj' )){
$default_fields [ 'inv_field_relation' ] = 0 ;
}
# pri personaliziranih aporočilih je e-mail obvezno polje
2020-11-19 11:15:32 +01:00
array_push ( $fields , 'inv_field_email' );
2020-08-14 13:36:36 +02:00
# skreiramo nov vrstni red polj
if ( count ( $fields ) > 0 ) {
foreach ( $fields as $key => $field ) {
$field_list [ $field ] = 1 ;
if ( isset ( $default_fields [ $field ])) {
unset ( $default_fields [ $field ]);
}
}
}
if ( count ( $default_fields ) > 0 ) {
foreach ( $default_fields as $key => $field ) {
$field_list [ $key ] = $field ;
unset ( $default_fields [ $key ]);
}
}
echo '<div id="inv_upload_list">' ;
echo '<h2>' . $lang [ 'srv_inv_list_upload_header' ] . '</h2>' ;
echo '<span class="inv_note">' . $lang [ 'srv_inv_recipiens_field_note' ] . ':</span>' ;
echo '<div id="inv_field_container">' ;
echo '<ul class="connectedSortable">' ;
$field_lang = array ();
if ( count ( $field_list ) > 0 ) {
foreach ( $field_list AS $field => $checked ) {
# ali je polje izbrano ( če imamo personalizirano e-vabilo, moramo nujno imeti polje email
# $is_selected = ($checked == 1 || $field == 'inv_field_email' ) ? true : false;
$is_selected = ( $checked == 1 ) ? true : false ;
# če je polje obkljukano
$css = $is_selected ? ' class="inv_field_enabled"' : '' ;
# ali prikazujemo checkbox
# $hidden_checkbox = $field == 'inv_field_email' ? ' hidden' : '';
# ali labela sproži klik checkboxa
# $label_for = $field != 'inv_field_email' ? ' for="'.$field.'_chk"' : '';
$label_for = ' for="' . $field . '_chk"' ;
echo '<li id="' . $field . '"' . $css . '>' ;
echo '<input id="' . $field . '_chk" type="checkbox" class="inv_checkbox' . $hidden_checkbox . '"' . ( $is_selected == true ? ' checked="checked"' : '' ) . '>' ;
echo '<label' . $label_for . '>' . $lang [ 'srv_' . $field ] . '</label>' ;
echo '</li>' ;
if ( $is_selected == 1 ) {
$field_lang [] = $lang [ 'srv_' . $field ];
}
}
}
echo '</ul>' ;
echo '</div>' ;
echo '<br class="clr" />' ;
echo '<script type="text/javascript">' ;
echo " $ ('ul.connectedSortable').sortable( { update : function () { refreshFieldsList(); }, forcePlaceholderSize: 'true',tolerance: 'pointer',placeholder: 'inv_field_placeholder',}); " ;
echo '</script>' ;
echo '<form id="inv_recipients_upload_form" name="resp_uploader" method="post" enctype="multipart/form-data" action="' . $site_url . 'admin/survey/index.php?anketa=' . $this -> sid . '&a=' . A_INVITATIONS . '&m=send_upload_list" autocomplete="off">' ;
echo '<input type="hidden" name="fields" id="inv_recipients_upoad_fields" value="' . implode ( ',' , $fields ) . '" />' ;
echo '<input type="hidden" name="posted" value="1" />' ;
echo '<span class="inv_note">' . $lang [ 'srv_inv_recipiens_file_note_1' ] . '</span>' ;
echo '<br class="clr" />' . $lang [ 'srv_inv_recipiens_fields' ] . ' <span id="inv_field_list" class="inv_type_1">' ;
echo implode ( ',' , $field_lang );
echo '</span>' ;
echo '<br class="clr" />' ;
echo $lang [ 'srv_mailing_upload_list' ];
echo '<input type="file" name="invListFile" id="invListFile" size="42" >' ;
if ( count ( $errors ) > 0 ) {
echo '<br class="clr" />' ;
echo '<span class="inv_error_note">' ;
foreach ( $errors as $error ) {
echo '* ' . $error . '<br />' ;
}
echo '</span>' ;
}
echo '<br/><br/><label>' . $lang [ 'srv_inv_recipient_import_file_delimiter' ] . '</label> <input type="radio" name="recipientsDelimiter" id="recipientsDelimiter1" value="," checked><label for="recipientsDelimiter1">' . $lang [ 'srv_inv_recipient_delimiter_comma' ] . ' (,)</label>' ;
echo ' <input type="radio" name="recipientsDelimiter" id="recipientsDelimiter2" value=";"><label for="recipientsDelimiter2">' . $lang [ 'srv_inv_recipient_delimiter_semicolon' ] . ' (;)</label>' ;
echo '</form>' ;
echo '<span class="inv_sample" >' ;
echo $lang [ 'srv_inv_recipiens_sample' ] . ' </span><span class="inv_sample">' ;
echo $lang [ 'srv_inv_recipiens_sample1' ];
echo '</span>' ;
echo '<br class="clr" />' ;
echo '<div class="buttons_holder">' ;
echo '<span class="buttonwrapper floatRight spaceLeft" ><a class="ovalbutton ovalbutton_gray" href="#" onclick="$(\'#inv_upload_list, #fullscreen, #fade\').hide();return false;"><span>' . $lang [ 'srv_cancel' ] . '</span></a></span>' ;
echo '<span class="buttonwrapper floatRight spaceLeft" ><a class="ovalbutton ovalbutton_orange" href="#" onclick="inv_upload_list_check(); return false;"><span>' . $lang [ 'srv_inv_btn_add_recipients_add' ] . '</span></a></span>' ;
echo '</div>' ;
echo '</div>' ;
}
function send_upload_list () {
global $lang , $global_user_id ;
$errors = array ();
$allowedExtensions = array ( " txt " , " csv " , " dat " );
$_fields = trim ( $_POST [ 'fields' ]);
if ( $_fields != null && $_fields != '' ) {
$fields = explode ( ',' , $_fields );
} else {
$fields = array ();
}
$file_name = $_FILES [ " invListFile " ][ " name " ];
$file_type = $_FILES [ " invListFile " ][ " type " ];
$file_size = $_FILES [ " invListFile " ][ " size " ] > 0 ? $_FILES [ " invListFile " ][ " size " ] / 1024 : 0 ;
$file_tmp = $_FILES [ " invListFile " ][ " tmp_name " ];
$okFileType = ( $file_type == 'text/plain' || $file_type == 'text/csv' || $file_type == 'application/vnd.ms-excel' );
$okFileEnd = ( pathinfo ( $file_name , PATHINFO_EXTENSION ) != 'txt'
|| pathinfo ( $file_name , PATHINFO_EXTENSION ) != 'csv'
|| pathinfo ( $file_name , PATHINFO_EXTENSION ) != 'dat' );
# preverimo ali smo uploadali datoteko in če smo izbrali katero polje
if ( $_POST [ 'posted' ] == '1' && count ( $fields ) == 0 ) {
$errors [] = $lang [ 'srv_inv_recipiens_upload_error_no_fields' ];
}
#preverimo ime datoteke
if ( trim ( $file_name ) == '' || $file_name == null ) {
$errors [] = $lang [ 'srv_respondents_invalid_file' ];
# preverimo tip:
} else if ( $okFileType == false ) {
$errors [] = $lang [ 'srv_respondents_invalid_file_type' ];
# prevermio še končnico (.txt)
} else if ( $okFileEnd == false ) {
$errors [] = $lang [ 'srv_respondents_invalid_file_type' ];
}
# preverimo velikost
else if ( ( float ) $file_size == 0 ) {
$errors [] = $lang [ 'srv_respondents_invalid_file_size' ];
}
# če so napake jih prikažemo če ne obdelamo datoteko
if ( count ( $errors ) > 0 ) {
echo '<br class="clr" />' ;
echo '<span class="inv_message_errors">' . $lang [ 'srv_inv_recipiens_upload_error' ] . '</span>' ;
echo '<br class="clr" />' ;
echo '<br class="clr" />' ;
echo '<span class="inv_error_note">' ;
foreach ( $errors as $error ) {
echo '* ' . $error . '<br />' ;
}
echo '</span>' ;
#$this->addRecipientsView($fields, $invalid_recipiens_array);
} else {
$fh = @ fopen ( $file_tmp , " rb " );
if ( $fh ) {
$_recipients = fread ( $fh , filesize ( $file_tmp ));
fclose ( $fh );
}
$_recipients = str_replace ( " \n \r " , " \n " , $_recipients );
$recipients_list = explode ( " \n " , $_recipients );
$num_recipients_list = count ( $recipients_list );
# pri prejemnikih odrežemo "polja", katerih nismo navedli
$fields_cont = ( int ) count ( $fields );
$fields = str_replace ( 'inv_field_' , '' , $fields );
$clean_recipients = array ();
if ( count ( $recipients_list ) > 0 ) {
if ( isset ( $_POST [ 'recipientsDelimiter' ])) {
$delimiter = $_POST [ 'recipientsDelimiter' ];
}
else {
$delimiter = " |~| " ;
}
foreach ( $recipients_list AS $recipient ) {
#poiščemo n-ti delimiter
$clean_recipients [] = trim ( substr ( $recipient , 0 , $this -> strpos_offset ( $delimiter , $recipient , $fields_cont )));
}
}
$clean_fields = trim ( implode ( ',' , $fields ));
$clean_recipients = trim ( implode ( " \n " , $clean_recipients ));
if ( $fields != null && $fields != '' && $clean_recipients != null && $clean_recipients != '' ) {
$sql_insert = " INSERT INTO srv_invitations_recipients_profiles " .
" (name,uid,fields,respondents,insert_time,comment, from_survey) " .
" VALUES ('Uploaded list', ' $global_user_id ', ' $clean_fields ', ' $clean_recipients ', NOW(), 'Uploaded list', ' " . $this -> sid . " ' ) " ;
$sqlQuery = sisplet_query ( $sql_insert );
}
}
$this -> showInvitationLists ();
}
/*
function strpos_index ( $haystack = '' , $needle = '' , $offset = 0 , $limit = 99 , $return = null )
{
$length = strlen ( $needle );
$occurances = array ();
while ((( $count = count ( $occurances )) < $limit ) && ( false !== ( $offset = strpos ( $haystack , $needle , $offset ))))
{
$occurances [ $count ][ 'length' ] = $length ;
$occurances [ $count ][ 'start' ] = $offset ;
$occurances [ $count ][ 'end' ] = $offset = $offset + $length ;
}
return $return === null ? $occurances : $occurances [ $return ];
}
*/
/**
* Find position of Nth $occurrence of $needle in $haystack
* Starts from the beginning of the string
**/
function strpos_offset ( $needle , $haystack , $occurrence ) {
// explode the haystack
$arr = explode ( $needle , $haystack );
// check the needle is not out of bounds
switch ( $occurrence ) {
case $occurrence == 0 :
return false ;
case $occurrence > max ( array_keys ( $arr )) :
return strlen ( $haystack );
default :
$index = ( int ) strlen ( implode ( $needle , array_slice ( $arr , 0 , $occurrence )));
return $index ;
}
}
function changePaginationLimit () {
session_start ();
if ( isset ( $_POST [ 'limit' ]) && ( int ) $_POST [ 'limit' ] > 0 ) {
$_SESSION [ 'rec_on_send_page' ] = ( int ) $_POST [ 'limit' ];
$this -> rec_send_page_limit = ( int ) $_POST [ 'limit' ];
}
session_commit ();
$this -> displaySendPagination (( int ) $_POST [ 'cnt' ]);
}
function displayMessagePreview () {
global $lang ;
$sql_string_m = " SELECT id, naslov, subject_text, body_text, reply_to, isdefault, comment, url FROM srv_invitations_messages WHERE ank_id = ' $this->sid ' AND isdefault='1' " ;
$sql_query_m = sisplet_query ( $sql_string_m );
$preview_message = mysqli_fetch_assoc ( $sql_query_m );
# polovimo imena vseh sporocil
$sql_string_m = " SELECT id, naslov FROM srv_invitations_messages WHERE ank_id = ' $this->sid ' " ;
echo '<table id="inv_send_mail_preview">' ;
echo '<tr><th>' . $lang [ 'srv_inv_message_draft_content_name' ] . ':</th>' ;
echo '<td class="inv_bt">' ;
echo '<span>' ;
$sql_query_m = sisplet_query ( $sql_string_m );
if ( mysqli_num_rows ( $sql_query_m ) > 0 ) {
echo '<select onchange="mailSourceMesageChange(this);">' ;
while ( $row = mysqli_fetch_assoc ( $sql_query_m )) {
echo '<option value="' . $row [ 'id' ] . '"' . ( $row [ 'id' ] == $preview_message [ 'id' ] ? ' selected="selected"' : '' ) . '>' . $row [ 'naslov' ] . '</option>' ;
}
echo '</select>' ;
}
#.$preview_message['naslov'];
echo '</span>' ;
echo '</td></tr>' ;
echo '<tr><th>' . $lang [ 'srv_inv_message_draft_content_subject' ] . ':</th>' ;
echo '<td class="inv_bt">' ;
echo '<span>' . $preview_message [ 'subject_text' ] . '</span>' ;
echo '</td></tr>' ;
echo '<tr><th>' . $lang [ 'srv_inv_message_draft_content_body' ] . ':</th>' ;
echo '<td >' ;
echo '<span class="nl2br">' . ( $preview_message [ 'body_text' ]) . '</span>' ;
echo '</td></tr>' ;
echo '</table>' ;
// Opozorilo ce manjka #URL# v besedilu maila in imamo individualizirano vabilo
if ( strpos ( $preview_message [ 'body_text' ], '#URL#' ) == false && $this -> surveySettings [ 'usercode_required' ] == 0 && $this -> surveySettings [ 'individual_invitation' ] != 0 )
echo '<span class="red">' . $lang [ 'srv_inv_message_draft_nourl_warning' ] . '</span><br />' ;
// Opozorilo ce je #URL# v besedilu maila in imamo neindividualizirano vabilo
elseif ( strpos ( $preview_message [ 'body_text' ], '#URL#' ) == true && $this -> surveySettings [ 'individual_invitation' ] == 0 )
echo '<span class="red">' . $lang [ 'srv_inv_message_draft_url_warning' ] . '</span><br />' ;
// Popravi sporocilo
echo '<a href="' . $this -> addUrl ( 'view_message' ) . '">' . $lang [ 'srv_invitation_reedit_message' ] . '</a>' ;
}
function addSortField ( $field ){
$type = 'ASC' ;
session_start ();
if ( $_SESSION [ 'rec_sort_field' ] == $field ) {
if ( $_SESSION [ 'rec_sort_type' ] == 'DESC' ) {
$type = 'ASC' ;
} else {
$type = 'DESC' ;
}
} else {
$type = 'ASC' ;
}
return ' onclick="inv_set_sort_field(\'' . $field . '\',\'' . $type . '\');" ' ;
}
function addSortIcon ( $field ){
session_start ();
if ( $_SESSION [ 'rec_sort_field' ] == $field ) {
if ( $_SESSION [ 'rec_sort_type' ] == 'DESC' ) {
return ' <span class="faicon sort_descending icon-blue"></span>' ;
} else {
return ' <span class="faicon sort_ascending icon-blue"></span>' ;
}
}
return ;
}
function setSortField () {
session_start ();
if ( isset ( $_POST [ 'field' ]) && trim ( $_POST [ 'field' ]) != '' ) {
$_SESSION [ 'rec_sort_field' ] = trim ( $_POST [ 'field' ]);
} else {
$_SESSION [ 'rec_sort_field' ] = 'date_inserted' ;
}
if ( isset ( $_POST [ 'type' ]) && trim ( $_POST [ 'type' ]) != '' ) {
$_SESSION [ 'rec_sort_type' ] = trim ( $_POST [ 'type' ]);
} else {
$_SESSION [ 'rec_sort_type' ] = 'ASC' ;
}
session_commit ();
}
function getSortString () {
session_start ();
$sort_string = ' ORDER BY i.last_status' ;
if ( isset ( $_SESSION [ 'rec_sort_field' ]) && trim ( $_SESSION [ 'rec_sort_field' ]) != '' ) {
$prefix = 'i.' ;
if ( $_SESSION [ 'rec_sort_field' ] == 'count_inv' ) {
$prefix = '' ;
}
if ( $_SESSION [ 'rec_sort_field' ] == 'date(date_expired)' ) {
$sort_string = ' ORDER BY ' . $prefix . 'date_expired' ;
}
else {
$sort_string = ' ORDER BY ' . $prefix . trim ( $_SESSION [ 'rec_sort_field' ]);
}
if ( $_SESSION [ 'rec_sort_type' ] == 'DESC' ) {
$sort_string .= ' DESC' ;
} else {
$sort_string .= ' ASC' ;
}
}
// Vedno dodatno se sortirtamo po mailu
$sort_string .= ', i.email' ;
return $sort_string ;
}
function getAvailableSysVars () {
$result = array ();
$qry = sisplet_query ( " SELECT s.variable, s.naslov FROM srv_spremenljivka s, srv_grupa g WHERE g.ank_id=' " . $this -> sid . " ' AND s.gru_id=g.id AND s.tip!='5' AND (s.tip < '10' OR s.tip = '22' OR s.tip = '25' OR s.tip='21') AND s.sistem='1' " );
while ( $row = mysqli_fetch_assoc ( $qry )) {
$result [ $row [ 'variable' ]] = $row [ 'naslov' ];
}
return $result ;
}
function getAvailableIndicators () {
$result = array ();
$_indicators = array ( 'email' , 'password' , 'firstname' , 'lastname' , 'salutation' , 'phone' , 'custom' , 'relation' );
#za vsako spremenljivko preverimo zapise v bazi
foreach ( $_indicators AS $indicator ) {
$sql_string = " SELECT count(*) FROM srv_invitations_recipients WHERE ank_id = ' " . $this -> sid . " ' AND deleted = '0' AND $indicator IS NOT NULL " ;
list ( $cnt ) = mysqli_fetch_row ( sisplet_query ( $sql_string ));
if (( int ) $cnt > 0 ) {
$result [] = $indicator ;
}
}
return $result ;
}
function createSystemVariablesMapping () {
global $lang ;
# polovimo sistemske variable
$sys_db_maps = array ( 'email' );
$strSelect = " SELECT spr_id, field FROM srv_invitations_mapping WHERE sid = ' " . $this -> sid . " ' " ;
$qrySelect = sisplet_query ( $strSelect );
$mappingArray = array ();
while ( list ( $spr_id , $field ) = mysqli_fetch_row ( $qrySelect )) {
$mappingArray [ $spr_id ] = $field ;
}
$qryString = " SELECT s.id, s.naslov, s.variable, s.variable_custom, s.coding FROM srv_spremenljivka s, srv_grupa g WHERE s.sistem='1' AND s.tip IN (1,3,17,21) AND s.gru_id=g.id AND g.ank_id=' " . $this -> sid . " ' ORDER BY g.vrstni_red, s.vrstni_red " ;
$sqlSpremenlivka = sisplet_query ( $qryString );
if ( mysqli_num_rows ( $sqlSpremenlivka ) > 0 ) {
echo '<form id="inv_ValidateSysVarsMappingFrm" name="inv_ValidateSysVarsMappingFrm">' ;
echo $lang [ 'srv_invitation_system_email_choose' ];
echo '<table>' ;
while ( $row = mysqli_fetch_assoc ( $sqlSpremenlivka )) {
$system_variables [ $row [ 'id' ]] = $row ;
echo '<tr>' ;
echo '<td>' ;
$checked = ( isset ( $mappingArray [ $row [ 'id' ]]) && $mappingArray [ $row [ 'id' ]] == 'email' ) ? ' checked="checked"' : '' ;
echo '<input type="radio" name="sysVarMap" id="sysVarMap_' . $row [ 'id' ] . '" value="' . $row [ 'id' ] . '"' . $checked . '>' ;
echo '</td>' ;
echo '<td><label for="sysVarMap_' . $row [ 'id' ] . '"><span style="color: #78a971;">' . $row [ 'variable' ] . '</span></label></td>' ;
echo '<td><label for="sysVarMap_' . $row [ 'id' ] . '">' . $row [ 'naslov' ] . '</label></td>' ;
echo '</tr>' ;
}
echo '</table>' ;
echo '<form/>' ;
echo '<br/>' ;
echo '<div id="inv_ValidateSysVarsMappingDiv">' ;
echo '<span onclick="inv_ValidateSysVarsMapping();" class="buttonwrapper floatLeft spaceLeft" ><a class="ovalbutton ovalbutton_orange" ><span>' . $lang [ 'srv_invitation_system_validate' ] . '</span></a></span>' ;
echo '</div>' ;
} else {
echo '<span>' . $lang [ 'srv_invitation_system_error3' ] . '</span>' ;
}
}
function validateSysVarsMapping () {
global $lang , $global_user_id ;
# preverimo sistemske spremenljivke
$strSistemske = " SELECT count(*) FROM srv_spremenljivka s, srv_grupa g WHERE s.sistem='1' AND s.gru_id=g.id AND g.ank_id=' " . $this -> sid . " ' AND variable IN( " . " ' " . implode ( " ',' " , $this -> inv_variables ) . " ') ORDER BY g.vrstni_red, s.vrstni_red " ;
list ( $cntSistemske ) = mysqli_fetch_row ( sisplet_query ( $strSistemske ));
$emailsToAdd = array ();
$invalidEmails = array ();
$errors = array ();
$emailSpr = ( int ) $_POST [ 'sysVarMap' ];
if (( int ) $emailSpr > 0 ) {
# preverimo ali lovimo samo ustrezne ali vse userje , preverimo kako imamo nastavljeno pri podatkih
global $global_user_id ;
$_POST [ 'meta_akcija' ] = 'data' ;
SurveyStatusProfiles :: Init ( $this -> sid , $global_user_id );
$currentProfileId = SurveyStatusProfiles :: getCurentProfileId ();
$statusProfileCondition = SurveyStatusProfiles :: getStatusAsQueryString ( $currentProfileId );
#zloopamo skozi userje in dodamo kateri še niso bili dodani
$selectUser = " SELECT id,cookie,pass,last_status,lurker,unsubscribed FROM srv_user where ank_id=' " . $this -> sid . " ' AND inv_res_id IS NULL AND deleted='0' " . $statusProfileCondition ;
$queryUser = sisplet_query ( $selectUser );
if ( mysqli_num_rows ( $queryUser ) ) {
#zakeširamo vrednosti za email
$this -> getUsersDataForSpr ( $emailSpr );
while ( $row = mysqli_fetch_assoc ( $queryUser )) {
$email = trim ( $this -> cacheArrayVrednost [ $emailSpr ][ $row [ 'id' ]]);
if ( $this -> validEmail ( $email )) {
$emailsToAdd [] = $email ;
} else {
$invalidEmails [] = $email ;
}
}
if ( count ( $invalidEmails ) > 0 ) {
$errors [] = $lang [ 'srv_invitation_system_error1' ] . " ( " . count ( $invalidEmails ) . ')' ;
}
} else {
$errors [] = $lang [ 'srv_invitation_system_error2' ];
}
} else {
if (( int ) $cntSistemske == 0 ) {
# ni sistemskih spremenljivk
$errors [] = $lang [ 'srv_invitation_system_error3' ];
} else {
# ni določena email spremenljivka
$errors [] = $lang [ 'srv_invitation_system_error4' ];
}
}
echo '<span onclick="inv_ValidateSysVarsMapping();" class="buttonwrapper floatLeft spaceLeft spaceRight" ><a class="ovalbutton ovalbutton_gray" ><span>' . $lang [ 'srv_invitation_system_validate' ] . '</span></a></span>' ;
if ( count ( $emailsToAdd )) {
echo '<span onclick="inv_addSysVarsMapping();" class="buttonwrapper floatLeft spaceLeft spaceRight" ><a class="ovalbutton ovalbutton_orange" ><span>' . $lang [ 'srv_invitation_system_validateAndAdd' ] . '</span></a></span>' ;
}
if ( mysqli_num_rows ( $queryUser ) > 0 )
{ # če je kaj novih zapisov v bazi
# če že imamo prejemnike v bazi ponudimo gumb naprej
echo '<span class="buttonwrapper floatLeft spaceLeft" ><a class="ovalbutton ovalbutton_orange" href="' . $this -> addUrl ( 'view_recipients' ) . '"><span>' . $lang [ 'srv_invitation_forward' ] . '</span></a></span>' ;
echo '<br class="clr"/>' ;
echo '<br/>' ;
echo '<span class="strong">' ;
printf ( $lang [ 'srv_invitation_system_found' ], mysqli_num_rows ( $queryUser ));
echo '</span>' ;
echo '<br/>' ;
echo $lang [ 'srv_invitation_system_from_this' ];
if ( count ( $emailsToAdd )) {
echo $lang [ 'srv_invitation_system_from_this_valid' ] . ( int ) count ( $emailsToAdd );
if ( count ( $invalidEmails ) > 0 ) {
echo '<br/>' ;
echo $lang [ 'srv_invitation_system_and' ];
}
}
if ( count ( $invalidEmails ) > 0 ) {
echo $lang [ 'srv_invitation_system_from_this_invalid' ] . ( int ) count ( $invalidEmails );
}
}
else
{
echo '<br class="clr"/>' ;
echo '<br/>' ;
echo $lang [ 'srv_invitation_system_not_found' ];
}
}
function addSysVarsMapping () {
global $lang , $global_user_id ;
$addedEmails = array ();
$errorEmails = array ();
$invalidEmails = array ();
$errors = array ();
#pobrišemo obstoječe povezave
$strDelete = " DELETE FROM srv_invitations_mapping WHERE sid = ' " . $this -> sid . " ' " ;
$qryDelete = sisplet_query ( $strDelete );
$emailSpr = ( int ) $_POST [ 'sysVarMap' ];
if (( int ) $emailSpr > 0 ) {
$insertString = " INSERT INTO srv_invitations_mapping (sid, spr_id, field) VALUES (' $this->sid ',' $emailSpr ','email') " ;
sisplet_query ( $insertString );
sisplet_query ( " COMMIT " );
# preverimo ali lovimo samo ustrezne ali vse userje , preverimo kako imamo nastavljeno pri podatkih
global $global_user_id ;
$_POST [ 'meta_akcija' ] = 'data' ;
SurveyStatusProfiles :: Init ( $this -> sid , $global_user_id );
$currentProfileId = SurveyStatusProfiles :: getCurentProfileId ();
$statusProfileCondition = SurveyStatusProfiles :: getStatusAsQueryString ( $currentProfileId );
#zloopamo skozi userje in dodamo kateri še niso bili dodani
$selectUser = " SELECT id,cookie,pass,last_status,lurker,unsubscribed FROM srv_user where ank_id=' " . $this -> sid . " ' AND inv_res_id IS NULL AND deleted='0' " . $statusProfileCondition ;
$queryUser = sisplet_query ( $selectUser );
if ( mysqli_num_rows ( $queryUser )) {
#zakeširamo vrednosti za email
$this -> getUsersDataForSpr ( $emailSpr );
while ( $row = mysqli_fetch_assoc ( $queryUser )) {
$email = trim ( $this -> cacheArrayVrednost [ $emailSpr ][ $row [ 'id' ]]);
if ( $this -> validEmail ( $email )) {
$pass = ( trim ( $row [ 'pass' ]) != '' ) ? trim ( $row [ 'pass' ]) : substr ( $row [ 'cookie' ], 0 , 6 );
#dodamo respondenra in naredimo povezav
$sql_insert = " INSERT IGNORE INTO srv_invitations_recipients (ank_id,email,password,cookie,sent,responded,unsubscribed,deleted,date_inserted,inserted_uid,list_id,last_status) VALUES " ;
$sql_insert .= " (' " . $this -> sid . " ',' $email ',' $pass ',' " . $row [ 'cookie' ] . " ' " ;
$sql_insert .= " ,'0','0',' " . ( int ) $row [ 'unsubscribed' ] . " ','0',NOW(),' " . $global_user_id . " ',' " . $list_id . " ',' " . $row [ 'last_status' ] . " ') " ;
$sqlQuery = sisplet_query ( $sql_insert );
if ( ! $sqlQuery ) {
$error = mysqli_error ( $GLOBALS [ 'connect_db' ]);
$errorEmails [] = $email ;
} else {
$rid = mysqli_insert_id ( $GLOBALS [ 'connect_db' ]);
if (( int ) $rid > 0 ) {
# updejtamo srv user
$sqlString2 = " UPDATE srv_user SET inv_res_id=' $rid ' WHERE id=' " . $row [ 'id' ] . " ' " ;
$updateQuery2 = sisplet_query ( $sqlString2 );
$addedEmails [] = $email ;
} else {
$errorEmails [] = $email ;
}
}
sisplet_query ( " COMMIT " );
} else {
if ( $email != '' ) {
$invalidEmails [] = $email ;
} else {
$invalidEmails [] = $lang [ 'srv_invitation_system_empty_email' ];
}
}
}
} else {
#V bazi ni respondentov, katere lahko dodam v vabila!
$errors [] = $lang [ 'srv_invitation_system_error2' ];
}
} else {
# ni določena email spremenljivka
$errors [] = $lang [ 'srv_invitation_system_error4' ];
}
echo '<span onclick="inv_ValidateSysVarsMapping();" class="buttonwrapper floatLeft spaceLeft" ><a class="ovalbutton ovalbutton_orange" ><span>' . $lang [ 'srv_invitation_system_validate' ] . '</span></a></span>' ;
echo '<br class="clr"/>' ;
echo '<br/>' ;
if ( count ( $errors ) > 0 ) {
foreach ( $errors AS $error ) {
echo '<br/><span class="strong">' . $error . '</span>' ;
}
}
if ( count ( $addedEmails ) > 0 ) {
echo '<span class="strong">' . $lang [ 'srv_invitation_system_added_users_finish' ] . " ( " . ( int ) count ( $addedEmails ) . " ): </span> " ;
foreach ( $addedEmails AS $email ) {
echo '<br/><span>' . $email . '</span>' ;
}
}
if ( count ( $errorEmails ) > 0 ) {
echo $lang [ 'srv_invitation_system_error6' ] . " ( " . ( int ) count ( $errorEmails ) . " ): " ;
foreach ( $errorEmails AS $email ) {
echo '<br/><span>' . $email . '</span>' ;
}
}
if ( count ( $invalidEmails ) > 0 ) {
echo '<span class="strong gray">' . $lang [ 'srv_invitation_system_error6' ] . '(' . ( int ) count ( $invalidEmails ) . '): </span><br/>' ;
foreach ( $invalidEmails AS $email ) {
echo '<span>' . $email . '</span><br/>' ;
}
}
}
private $cacheArrayVrednost = array ();
function getUsersDataForSpr ( $spr_id = 0 ) {
if (( int ) $spr_id > 0 ) {
if ( ! isset ( $this -> cacheArrayVrednost [ $spr_id ])) {
list ( $tip ) = mysqli_fetch_row ( sisplet_query ( " SELECT tip FROM srv_spremenljivka WHERE id = ' $spr_id ' " ));
switch ( $tip ) {
case 21 :
$str = " SELECT u.id, sdt.text FROM srv_data_text " . $this -> db_table . " AS sdt LEFT JOIN srv_user AS u ON u.id=sdt.usr_id WHERE sdt.spr_id =' $spr_id ' AND ank_id=' " . $this -> sid . " ' AND inv_res_id IS NULL AND deleted='0' " ;
$sql = sisplet_query ( $str );
while ( list ( $uid , $txt ) = mysqli_fetch_row ( $sql )) {
if (( int ) $uid > 0 && trim ( $txt ) != '' ) {
$this -> cacheArrayVrednost [ $spr_id ][ $uid ] = $txt ;
}
}
break ;
return $this -> cacheArrayVrednost [ $spr_id ];
}
} else {
return $this -> cacheArrayVrednost [ $spr_id ];
}
}
}
function saveRecipientListName () {
global $lang , $site_url , $global_user_id ;
$array_profiles = array ();
#ne vem če je fino da lahko dodaja kar na vse sezname
session_start ();
$_only_this_survey = ( isset ( $_SESSION [ 'inv_rec_only_this_survey' ]) && ( int ) $_SESSION [ 'inv_rec_only_this_survey' ] == 1 ) ? '' : " AND from_survey = ' " . $this -> sid . " ' " ;
# polovimo še ostale porfile
2021-02-22 15:26:32 +01:00
$sql_string = " SELECT pid, name,comment FROM srv_invitations_recipients_profiles WHERE uid in(' " . $global_user_id . " ') " . $_only_this_survey ;
2020-08-14 13:36:36 +02:00
$sql_query = sisplet_query ( $sql_string );
while ( $sql_row = mysqli_fetch_assoc ( $sql_query )) {
$array_profiles [ $sql_row [ 'pid' ]] = array ( 'name' => $sql_row [ 'name' ], 'comment' => $sql_row [ 'comment' ]);
}
echo '<div style="margin-top:10px; padding:5px; background-color:#f2f2f2; border:1px solid #c2c2c2;">' ;
# echo '<span class="inv_new_list_note">';
# echo $lang[''].'Izberite seznam kamor želite dodati prejemnike. Izbirate lahko med:<br/><ul><li>\'Nov seznam\' - prejemniki se dodajo v nov seznam, kateremu določite ime</li><li>\'Začasen seznam\' - seznam obstaja samo v času seje brskalnika</li><li>ali izberete obstoječ seznam, h kateremu se bodo dodali prejemniki</li></ul><br/>';
# echo '</span>';
echo $lang [ 'srv_invitation_recipients_list_add' ] . ': ' ;
echo '<select id="sel_inv_list_type" onchange="inv_new_recipients_list_change(this);" autofocus="autofocus">' ;
echo '<option value="0" class="gray bold"' . (( int ) $_POST [ 'pid' ] > 0 ? '' : ' selected="selected"' ) . '>' . $lang [ 'srv_invitation_new_list' ] . '</option>' ;
echo '<option value="-1" class="gray bold">' . $lang [ 'srv_invitation_new_templist' ] . '</option>' ;
if ( count ( $array_profiles ) > 0 ){
foreach ( $array_profiles AS $key => $profile ) {
echo '<option value="' . $key . '" comment="' . $profile [ 'comment' ] . '"' . ( $_POST [ 'pid' ] == $key ? ' selected="selected"' : '' ) . '>' . $profile [ 'name' ] . '</option>' ;
}
}
echo '</select>' ;
echo '<span id="new_recipients_list_span_note" ' . (( int ) $_POST [ 'pid' ] < 1 ? ' class="displayNone"' : '' ) . '>' ;
echo '<br>' ;
echo '<br>' ;
echo $lang [ '' ] . 'Uporabniki bodo dodani v seznam: ' ;
echo $array_profiles [ $_POST [ 'pid' ]][ 'name' ];
echo '<span id="new_recipients_list_span_note_name"></span>' ;
echo '</span>' ;
echo '<span id="new_recipients_list_span" ' . (( int ) $_POST [ 'pid' ] > 0 ? ' class="displayNone"' : '' ) . '>' ;
echo '<br>' ;
echo '<br>' ;
echo '<label>' . $lang [ 'srv_inv_recipient_list_name' ];
# zaporedno številčimo ime seznama1,2.... če slučajno ime že obstaja
$new_name = $lang [ 'srv_inv_recipient_list_new' ];
$names = array ();
$s = " SELECT name FROM srv_invitations_recipients_profiles WHERE name LIKE '% " . $new_name . " %' AND uid=' $global_user_id ' " ;
$q = sisplet_query ( $s );
while ( $r = mysqli_fetch_assoc ( $q )) {
$names [] = $r [ 'name' ];
}
if ( count ( $names ) > 0 ) {
$cnt = 1 ;
while ( in_array ( $lang [ 'srv_inv_recipient_list_new' ] . $cnt , $names )) {
$cnt ++ ;
}
$new_name = $lang [ 'srv_inv_recipient_list_new' ] . $cnt ;
}
echo '<input type="text" id="rec_profile_name" value="' . $new_name . '" tabindex="1" autofocus="autofocus">' ;
echo '</label>' ;
echo '</span>' ;
echo '<br/><br/>' ;
echo $lang [ 'srv_inv_recipient_list_comment' ];
echo '<textarea id="rec_profile_comment" tabindex="3" rows="2" >' ;
echo $array_profiles [ $_POST [ 'pid' ]][ 'comment' ];
echo '</textarea>' ;
echo '</div>' ;
}
function getCleanString ( $string ) {
return preg_replace ( " /'/ " , " ` " , $string );
}
function recipientsAddForward () {
$doSave = $_POST [ 'doSave' ] == 'true' ? true : false ;
$doAdd = $_POST [ 'doAdd' ] == 'true' ? true : false ;
$fields = $_POST [ 'fields' ];
$recipients_list = $this -> getCleanString ( $_POST [ 'recipients_list' ]);
$delimiter = $_POST [ 'recipientsDelimiter' ];
$profileName = $_POST [ 'profile_name' ];
$profileComment = $_POST [ 'profile_comment' ];
$pid = $_POST [ 'profile_id' ];
// Bom kar tule rešil konverzijo iz delimiterja v |~|
$recipients_list = str_replace ( $delimiter , " |~| " , $recipients_list );
# če shranjujemo respondente
if ( $doSave == true ){
$pid = $this -> saveAppendRecipientList ( $pid , $fields , $recipients_list , $profileName , $profileComment );
}
# če dodajamo respondente v bazo
if ( $doAdd == true ){
#dodamo polja
$result = $this -> addMassRecipients ( $recipients_list , $fields , $pid );
# prikažemo napake
$invalid_recipiens_array = $this -> displayRecipentsErrors ( $result );
}
# če smo dodajali repsondente v bazo, prikažemo tabelo respondentov
if ( $doAdd == true ){
$this -> viewRecipients ();
}
# če ne prikažemo profile respondentov
else {
$this -> useRecipientsList ( $pid );
}
// Ce smo dodajali respondente rocno v bazo, to shranimo, ker potem ne smemo povezati mailov s podatki
// TEGA NE SMEMO NAREDITI, KER DRUGACE SE VSAKIC OB DODAJANJU NA NOVO UGASNE
/* if ( $doAdd == true ) {
$update = sisplet_query ( " UPDATE srv_anketa SET show_email='0' WHERE id=' " . $this -> sid . " ' " );
} */
}
function saveAppendRecipientList ( $pid , $fields , $recipients , $profileName , $profileComment ) {
global $lang , $site_url , $global_user_id ;
# shranjujemo v nov profil
$post_fields = str_replace ( 'inv_field_' , '' , implode ( ',' , $fields ));
$post_recipients = $this -> getCleanString ( $recipients );
$pid = ( int ) $pid ;
# če je pid < 0 shranimo v nov porfil
if ( $pid <= 0 )
{
# ali shranjujemo v sejo
if ( $pid == - 1 )
{
$this -> saveSessionRecipients ( $post_recipients , $post_fields , $profileComment );
}
else
{
# dodelimo ime
if ( $profileName == NULL || trim ( $profileName ) == '' )
{
#zaporedno številčimo ime seznama1,2.... če slučajno ime že obstaja
$profileName = $lang [ 'srv_inv_recipient_list_new' ];
$names = array ();
$s = " SELECT name FROM srv_invitations_recipients_profiles WHERE name LIKE '% " . $new_name . " %' AND uid=' $global_user_id ' " ;
$q = sisplet_query ( $s );
while ( $r = mysqli_fetch_assoc ( $q ))
{
$names [] = $r [ 'name' ];
}
if ( count ( $names ) > 0 )
{
$cnt = 1 ;
while ( in_array ( $lang [ 'srv_inv_recipient_list_new' ] . $cnt , $names ))
{
$cnt ++ ;
}
$profileName = $lang [ 'srv_inv_recipient_list_new' ] . $cnt ;
}
}
$sql_insert = " INSERT INTO srv_invitations_recipients_profiles " .
" (name,uid,fields,respondents,insert_time,comment, from_survey) " .
" VALUES (' $profileName ', ' $global_user_id ', ' $post_fields ', ' $post_recipients ', NOW(), ' $profileComment ', ' " . $this -> sid . " ' ) " ;
$sqlQuery = sisplet_query ( $sql_insert );
if ( ! $sqlQuery )
{
}
else
{
$pid = mysqli_insert_id ( $GLOBALS [ 'connect_db' ]);
}
}
} else {
# polovimo obstoječe podatke
$s = " SELECT fields, respondents FROM srv_invitations_recipients_profiles WHERE pid =' $pid ' " ;
$q = sisplet_query ( $s );
list ( $old_fields , $old_respondents ) = mysqli_fetch_row ( $q );
# najprej polja
$old_fields = explode ( ',' , $old_fields );
$post_fields = explode ( ',' , $post_fields );
foreach ( $post_fields AS $post_field )
{
#če polje še ni v bazi ga dodamo
if ( ! in_array ( $post_field , $old_fields ))
{
$old_fields [] = $post_field ;
}
}
# nato porihtamo podatke
$old_recipients_list = explode ( " \n " , $old_respondents );
$new_recipients_list = explode ( " \n " , $post_recipients );
foreach ( $new_recipients_list AS $post_recipient )
{
#če polje še ni v bazi ga dodamo
if ( ! in_array ( $post_recipient , $old_recipients_list ))
{
$old_recipients_list [] = $post_recipient ;
}
}
# počistimo prazne
foreach ( $old_recipients_list AS $k => $post_recipient )
{
if ( is_null ( $post_recipient ) || $post_recipient == '' )
{
unset ( $old_recipients_list [ $k ]);
}
}
$post_fields = implode ( " , " , $old_fields );;
$post_recipients = implode ( " \n " , $old_recipients_list );
# updejtamo obstoječ profil
$sql_update = " UPDATE srv_invitations_recipients_profiles " .
" SET fields = ' $post_fields ', respondents =' $post_recipients ' WHERE pid = ' $pid ' " ;
$sqlQuery = sisplet_query ( $sql_update );
if ( ! $sqlQuery )
{
}
else
{
}
}
sisplet_query ( " COMMIT " );
#vrnemo pid seznama (če smo kreirali nov seznam je tako now pid)
return $pid ;
}
function showAdvancedConditions ()
{
global $lang ;
$scp = new SurveyCondition ( $this -> sid );
$scp -> setChooseAction ( 'invitationSetCondition()' );
$scp -> displayConditions ( $_POST [ 'cid' ]);
}
function setAdvancedCondition ()
{
global $lang ;
SurveySession :: sessionStart ( $this -> sid );
SurveySession :: set ( 'invitationAdvancedConditionId' , ( int ) $_POST [ 'cid' ]);
$this -> invitationAdvancedConditionId = ( int ) $_POST [ 'cid' ];
$this -> viewRecipients ();
}
function getConditionUserIds ( $cid = 0 ){
global $global_user_id ;
if ( $cid > 0 ){
// Poskrbimo za datoteko s podatki
$SDF = SurveyDataFile :: get_instance ();
$SDF -> init ( $this -> sid );
$SDF -> prepareFiles ();
$headFileName = $SDF -> getHeaderFileName ();
$dataFileName = $SDF -> getDataFileName ();
$dataFileStatus = $SDF -> getStatus ();
if ( $dataFileStatus >= 0 ){
$_HEADERS = unserialize ( file_get_contents ( $headFileName ));
SurveyConditionProfiles :: Init ( $this -> sid , $global_user_id );
SurveyConditionProfiles :: setHeader ( $_HEADERS );
$_condition_profile_AWK = SurveyConditionProfiles :: getAwkConditionString ( $cid );
if ( IS_WINDOWS ) {
$_command = 'gawk -F"' . STR_DLMT . '" "' . $_condition_profile_AWK . ' { if (' . USER_ID_FIELD . '!=0) print \"$invUsrId[]=\",' . USER_ID_FIELD . ',\";\" }" ' . $dataFileName . ' >> ' . $dataFileName . '.tmp' ;
}
else {
$_command = 'awk -F"' . STR_DLMT . '" \' ' . $_condition_profile_AWK . ' { if (' . USER_ID_FIELD . '!=0) print "$invUsrId[]=",' . USER_ID_FIELD . ',";" }\' ' . $dataFileName . ' >> ' . $dataFileName . '.tmp' ;
}
$file_handler = fopen ( $dataFileName . '.tmp' , " w " );
fwrite ( $file_handler , " <?php \n " );
fclose ( $file_handler );
$out = shell_exec ( $_command );
$file_handler = fopen ( $dataFileName . '.tmp' , " a " );
fwrite ( $file_handler , '?>' );
fclose ( $file_handler );
include ( $dataFileName . '.tmp' );
if ( file_exists ( $dataFileName . '.tmp' )) {
unlink ( $dataFileName . '.tmp' );
}
if ( is_array ( $invUsrId ) && count ( $invUsrId ) > 0 ){
return $invUsrId ;
}
}
else {
echo '!!!OLD DATA FILE!!!' ;
}
}
return array ();
}
function advancedCondition ()
{
global $lang ;
echo '<span id="conditionProfileNote" class="simple">' ;
echo $lang [ 'srv_inv_condition_filter' ] . ' ' ;
if (( int ) $this -> invitationAdvancedConditionId > 0 )
{
$scp = new SurveyCondition ( $this -> sid );
echo ' <strong>' . $scp -> getConditionName (( int ) $this -> invitationAdvancedConditionId ) . '</strong> ' ;
$this -> user_inv_ids = $this -> getConditionUserIds ( $this -> invitationAdvancedConditionId );
$note = $scp -> getConditionString ( $this -> invitationAdvancedConditionId );
echo $note ;
if ( is_array ( $this -> user_inv_ids ) && count ( $this -> user_inv_ids ) > 0 )
{
}
else
{
}
echo '<span class="as_link spaceLeft" onclick="showInvitationAdvancedConditions(\'' . ( int ) $this -> invitationAdvancedConditionId . '\'); return false;">' . $lang [ 'srv_profile_edit' ] . '</span>' ;
echo '<span class="as_link spaceLeft" onclick="invitationSetCondition(\'0\'); return false;">' . $lang [ 'srv_profile_remove' ] . '</span>' ;
}
else
{
echo '<strong>' . $lang [ 'srv_inv_condition_no_filter' ] . '</strong>' ;
echo '<a href="#" class="faicon if_add" onclick="showInvitationAdvancedConditions(); return false;" data-cid="' . ( int ) $this -> invitationAdvancedConditionId . '"> </a>' ;
}
echo '</span>' ;
}
function listCondition ()
{
global $lang ;
# get all lists
$lists = $this -> getSurveyInvitationLists ( true );
$selected = ( int )( isset ( $_SESSION [ 'inv_filter' ][ 'list' ]) ? ( int ) $_SESSION [ 'inv_filter' ][ 'list' ] : - 2 );
echo ' ' ;
echo '<label>' . $lang [ 'srv_invitation_recipients_filter_list' ];
echo '<select id="inv_rec_filter_list" onchange="inv_filter_recipients();">' ;
foreach ( $lists AS $list_id => $list )
{
echo '<option value="' . $list_id . '"' . (( int ) $selected == $list_id ? ' selected="selected"' : '' ) . '>' . $list [ 'name' ] . '</option>' ;
}
echo '</select></label>' ;
}
function getSurveyInvitationLists ( $add_all = false )
{
global $lang ;
# polovimo sezname
$lists = array ();
if ( $add_all )
{
$lists [ '-2' ] = array ( 'name' => $lang [ 'srv_invitation_recipients_filter_list_all' ]);
}
$lists [ '-1' ] = array ( 'name' => $lang [ 'srv_invitation_new_templist' ]);
$lists [ '0' ] = array ( 'name' => $lang [ 'srv_invitation_new_templist_author' ]);
$sql_string_lists = " SELECT * from srv_invitations_recipients_profiles WHERE pid IN(SELECT i.list_id FROM srv_invitations_recipients AS i WHERE i.ank_id = ' { $this -> sid } ' AND i.deleted = '0' GROUP BY i.list_id ORDER BY i.id) " ;
$sql_query_lists = sisplet_query ( $sql_string_lists );
while ( $row_lists = mysqli_fetch_assoc ( $sql_query_lists )) {
$lists [ $row_lists [ 'pid' ]] = array ( 'name' => $row_lists [ 'name' ]);
}
return $lists ;
}
function viewServerSettings (){
global $lang ;
global $site_url ;
2021-02-10 13:15:04 +01:00
global $site_url ;
2020-08-14 13:36:36 +02:00
global $site_path ;
global $admin_type ;
global $global_user_id ;
global $mysql_database_name ;
2021-02-10 13:15:04 +01:00
global $aai_instalacija ;
2021-03-17 12:09:58 +01:00
2020-08-14 13:36:36 +02:00
$row = SurveyInfo :: getInstance () -> getSurveyRow ();
echo '<form name="settingsanketa_' . $row [ 'id' ] . '" action="ajax.php?a=editanketasettings&m=inv_server" method="post" autocomplete="off">' . " \n \r " ;
echo ' <input type="hidden" name="anketa" value="' . $this -> sid . '" />' . " \n \r " ;
echo ' <input type="hidden" name="location" value="' . $_GET [ 'a' ] . '" />' . " \n \r " ;
echo ' <input type="hidden" name="submited" value="1" />' . " \n \r " ;
$MA = new MailAdapter ( $this -> sid , $type = 'invitation' );
// Dostop za posiljanje mailov preko 1ka serverja
2021-02-10 13:15:04 +01:00
$enabled1ka = $MA -> is1KA () ? true : false ;
// 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 ;
2021-03-17 12:09:58 +01:00
2021-02-01 10:59:50 +01:00
2021-03-17 12:09:58 +01:00
// Squalo
$squalo = new SurveyInvitationsSqualo ( $this -> sid );
if ( $squalo -> squaloEnabled ()){
// Vklop squalo
echo '<div class="squalo_switch">' ;
echo '<span class="bold">' . $lang [ 'srv_squalo' ] . ':</span> ' ;
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 $lang [ 'srv_squalo_sending' ] . ' </label>' ;
echo '</div>' ;
// Squalo nastavitve...
echo '<div class="squalo_settings ' . ( ! $squalo -> squaloActive () ? ' displayNone' : '' ) . '">' ;
echo $lang [ 'srv_squalo_active' ];
echo '</div>' ;
}
// Izbira streznika
echo '<div class="mail_mode_switch ' . ( $squalo -> squaloActive () ? ' displayNone' : '' ) . '">' ;
2021-02-01 10:59:50 +01:00
// Opozorilo, ce imamo vklopljena vabila, da gre za iste nastavitve
echo '<p class="red bold">' . $lang [ 'srv_email_server_settings_warning' ] . '</p>' ;
2021-02-10 13:15:04 +01:00
// Izbira SMTP streznika
2020-08-14 13:36:36 +02:00
echo '<span class="bold">' . $lang [ 'srv_email_setting_select_server' ] . '</span> ' ;
2021-02-10 13:15:04 +01:00
// AAI ima Arnesov smtp
2021-02-12 09:30:41 +01:00
if ( $aai_instalacija ){
2021-02-10 13:15:04 +01:00
echo '<label><input type="radio" name="SMTPMailMode" value="0" ' . ( $MA -> is1KA () ? 'checked ="checked" ' : '' ) . ' onclick="smtpAAIPopupShow();">' ;
echo $lang [ 'srv_email_setting_adapter0_aai' ] . ' </label>' ;
}
else {
echo '<label><input type="radio" name="SMTPMailMode" value="0" ' . ( $MA -> is1KA () ? 'checked ="checked" ' : '' ) . ' ' . ( $enabled1ka ? '' : ' disabled="disabled"' ) . ' onclick="$(\'#send_mail_mode1, #send_mail_mode2\').hide();$(\'#send_mail_mode0\').show();">' ;
echo $lang [ 'srv_email_setting_adapter0' ] . ' </label>' ;
}
2020-08-14 13:36:36 +02:00
// Google smtp je viden samo starim, kjer je ze vklopljen
if ( $MA -> isGoogle ()){
echo '<label><input type="radio" name="SMTPMailMode" value="1" ' . ( $MA -> isGoogle () ? 'checked ="checked" ' : '' ) . ' onclick="$(\'#send_mail_mode0, #send_mail_mode2\').hide(); $(\'#send_mail_mode1\').show();">' ;
echo $lang [ 'srv_email_setting_adapter1' ] . ' </label>' ;
}
2021-02-10 13:15:04 +01:00
// Lastni smtp
echo '<label><input type="radio" name="SMTPMailMode" value="2" ' . ( $MA -> isSMTP () ? 'checked ="checked" ' : '' ) . ' onclick="$(\'#send_mail_mode0, #send_mail_mode1\').hide(); $(\'#send_mail_mode2\').show();">' ;
echo $lang [ 'srv_email_setting_adapter2' ] . ' </label>' ;
echo Help :: display ( 'srv_mail_mode' );
2021-03-17 12:09:58 +01:00
echo '</div>' ;
2020-08-14 13:36:36 +02:00
#1KA
$enkaSettings = $MA -> get1KASettings ( $raziskave = true );
2021-03-17 12:09:58 +01:00
echo '<div id="send_mail_mode0" ' . ( ! $MA -> is1KA () || $squalo -> squaloActive () ? ' class="displayNone"' : '' ) . '>' ;
2020-08-14 13:36:36 +02:00
echo '<br /><span class="bold">' . $lang [ 'srv_email_setting_settings' ] . '</span>' ;
echo '<br />' ;
# from
echo '<p><label>' . $lang [ 'srv_email_setting_from' ] . '<span>' . $enkaSettings [ 'SMTPFrom' ] . '</span><input type="hidden" name="SMTPFrom0" value="' . $enkaSettings [ 'SMTPFrom' ] . '"></label>' ;
echo '</p>' ;
# replyTo
echo '<p><label>' . $lang [ 'srv_email_setting_reply' ] . '<input type="text" name="SMTPReplyTo0" value="' . $enkaSettings [ 'SMTPReplyTo' ] . '" ></label>' ;
2020-09-07 08:26:34 +02:00
echo '</p>' ;
#delay
2020-10-29 12:25:14 +01:00
echo '<p><label>' . $lang [ 'srv_email_setting_smtp_delay' ] . ' ' . Help :: display ( 'srv_inv_delay' ) . ': <select name="SMTPDelay0">'
/*. '<option value="0" ' . ( $enkaSettings [ 'SMTPDelay' ] == " 0 " ? 'selected="selected"' : '' ) . '>0 </option>'
2020-09-07 08:26:34 +02:00
. '<option value="10000" ' . ( $enkaSettings [ 'SMTPDelay' ] == " 10000 " ? 'selected="selected"' : '' ) . '>0.01 sec (max 100 / sec)</option>'
. '<option value="20000" ' . ( $enkaSettings [ 'SMTPDelay' ] == " 20000 " ? 'selected="selected"' : '' ) . '>0.02 sec (max 50 / sec)</option>'
. '<option value="50000" ' . ( $enkaSettings [ 'SMTPDelay' ] == " 50000 " ? 'selected="selected"' : '' ) . '>0.05 sec (max 20 / sec)</option>'
. '<option value="100000" ' . ( $enkaSettings [ 'SMTPDelay' ] == " 100000 " ? 'selected="selected"' : '' ) . '>0.1 sec (max 10 / sec)</option>'
2020-10-29 12:25:14 +01:00
. '<option value="200000" ' . ( $enkaSettings [ 'SMTPDelay' ] == " 200000 " ? 'selected="selected"' : '' ) . '>0.2 sec (max 5 / sec)</option>' */
2020-09-07 08:26:34 +02:00
. '<option value="500000" ' . ( $enkaSettings [ 'SMTPDelay' ] == " 500000 " ? 'selected="selected"' : '' ) . '>0.5 sec (max 2 / sec)</option>'
. '<option value="1000000" ' . ( $enkaSettings [ 'SMTPDelay' ] == " 1000000 " ? 'selected="selected"' : '' ) . '>1 sec (max 1 / sec)</option>'
. '<option value="2000000" ' . ( $enkaSettings [ 'SMTPDelay' ] == " 2000000 " ? 'selected="selected"' : '' ) . '>2 sec (max 30 / min)</option>'
. '<option value="4000000" ' . ( $enkaSettings [ 'SMTPDelay' ] == " 4000000 " ? 'selected="selected"' : '' ) . '>4 sec (max 15 / min)</option>'
. '<option value="5000000" ' . ( $enkaSettings [ 'SMTPDelay' ] == " 5000000 " ? 'selected="selected"' : '' ) . '>5 sec (max 12 / min)</option>'
. '<option value="10000000" ' . ( $enkaSettings [ 'SMTPDelay' ] == " 10000000 " ? 'selected="selected"' : '' ) . '>10 sec (max 6 / min)</option>'
. '<option value="20000000" ' . ( $enkaSettings [ 'SMTPDelay' ] == " 20000000 " ? 'selected="selected"' : '' ) . '>20 sec (max 3 / min)</option>'
. '<option value="30000000" ' . ( $enkaSettings [ 'SMTPDelay' ] == " 30000000 " ? 'selected="selected"' : '' ) . '>30 sec (max 2 / min)</option>'
. '</select></label>' ;
echo '</p>' ;
2020-08-14 13:36:36 +02:00
echo '</div>' ;
#GMAIL - Google
$enkaSettings = $MA -> getGoogleSettings ();
2021-03-17 12:09:58 +01:00
echo '<div id="send_mail_mode1" ' . ( ! $MA -> isGoogle () || $squalo -> squaloActive () ? ' class="displayNone"' : '' ) . '>' ;
2020-08-14 13:36:36 +02:00
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
echo '<p><label>' . $lang [ 'srv_email_setting_from' ] . '<input type="text" name="SMTPFrom1" value="' . $enkaSettings [ 'SMTPFrom' ] . '"></label>' ;
echo '</p>' ;
# replyTo
echo '<p><label>' . $lang [ 'srv_email_setting_reply' ] . '<input type="text" name="SMTPReplyTo1" value="' . $enkaSettings [ 'SMTPReplyTo' ] . '" ></label>' ;
echo '</p>' ;
#Password
echo '<p><label>' . $lang [ 'srv_email_setting_password' ] . '<input type="password" name="SMTPPassword1" placeholder="' . $lang [ 'srv_email_setting_password_placeholder' ] . '"></label>' ;
echo '</p>' ;
echo '</div>' ;
#SMTP
$enkaSettings = $MA -> getSMTPSettings ();
2021-03-17 12:09:58 +01:00
echo '<div id="send_mail_mode2" ' . ( ! $MA -> isSMTP () || $squalo -> squaloActive () ? ' class="displayNone"' : '' ) . '>' ;
2020-08-14 13:36:36 +02:00
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
echo '<p><label>' . $lang [ 'srv_email_setting_from_nice' ] . '<input type="text" name="SMTPFromNice2" value="' . $enkaSettings [ 'SMTPFromNice' ] . '"></label>' ;
echo '</p>' ;
# from
echo '<p><label>' . $lang [ 'srv_email_setting_from' ] . '<input type="text" name="SMTPFrom2" value="' . $enkaSettings [ 'SMTPFrom' ] . '"></label>' ;
echo '</p>' ;
# replyTo
echo '<p><label>' . $lang [ 'srv_email_setting_reply' ] . '<input type="text" name="SMTPReplyTo2" value="' . $enkaSettings [ 'SMTPReplyTo' ] . '" ></label>' ;
echo '</p>' ;
#Username
echo '<p><label>' . $lang [ 'srv_email_setting_username' ] . '<input type="text" name="SMTPUsername2" value="' . $enkaSettings [ 'SMTPUsername' ] . '" ></label>' ;
echo '</p>' ;
#Password
echo '<p><label>' . $lang [ 'srv_email_setting_password' ] . '<input type="password" name="SMTPPassword2" placeholder="' . $lang [ 'srv_email_setting_password_placeholder' ] . '"></label>' ;
echo '</p>' ;
#autentikacija
echo '<p>' ;
echo $lang [ 'srv_email_setting_autentication' ];
echo '<input type="radio" name="SMTPAuth2" value="0" ' . (( int ) $enkaSettings [ 'SMTPAuth' ] != 1 ? 'checked ="checked" ' : '' ) . '>' ;
echo $lang [ 'srv_email_setting_no' ] . '</label>' ;
echo '<label><input type="radio" name="SMTPAuth2" value="1" ' . (( int ) $enkaSettings [ 'SMTPAuth' ] == 1 ? 'checked ="checked" ' : '' ) . '>' ;
echo $lang [ 'srv_email_setting_yes' ] . '</label>' ;
echo '</p>' ;
#Varnost SMTPSecure
echo '<p>' ;
echo $lang [ 'srv_email_setting_encryption' ];
echo '<input type="radio" name="SMTPSecure2" value="0" ' . (( int ) $enkaSettings [ 'SMTPSecure' ] == 0 ? 'checked ="checked" ' : '' ) . '>' ;
echo $lang [ 'srv_email_setting_encryption_none' ] . '</label>' ;
echo '<label><input type="radio" name="SMTPSecure2" value="ssl" ' . ( $enkaSettings [ 'SMTPSecure' ] == 'ssl' ? 'checked ="checked" ' : '' ) . '>' ;
echo $lang [ 'srv_email_setting_encryption_ssl' ] . '</label>' ;
echo '<label><input type="radio" name="SMTPSecure2" value="tls" ' . ( $enkaSettings [ 'SMTPSecure' ] == 'tls' ? 'checked ="checked" ' : '' ) . '>' ;
echo $lang [ 'srv_email_setting_encryption_tls' ] . '</label>' ;
echo '</p>' ;
#port
echo '<p><label>' . $lang [ 'srv_email_setting_port' ] . '<input type="number" min="0" max="65535" name="SMTPPort2" value="' . ( int ) $enkaSettings [ 'SMTPPort' ] . '" style="width:80px;"></label>' ;
echo ' ' . $lang [ 'srv_email_setting_port_note' ];
echo '</p>' ;
#host
echo '<p><label>' . $lang [ 'srv_email_setting_host' ] . '<input type="text" name="SMTPHost2" value="' . $enkaSettings [ 'SMTPHost' ] . '" ></label>' ;
echo '</p>' ;
#delay
2020-10-29 12:25:14 +01:00
echo '<p><label>' . $lang [ 'srv_email_setting_smtp_delay' ] . ' ' . Help :: display ( 'srv_inv_delay' ) . ': <select name="SMTPDelay2">'
/*. '<option value="0" ' . ( $enkaSettings [ 'SMTPDelay' ] == " 0 " ? 'selected="selected"' : '' ) . '>0 </option>'
2020-08-14 13:36:36 +02:00
. '<option value="10000" ' . ( $enkaSettings [ 'SMTPDelay' ] == " 10000 " ? 'selected="selected"' : '' ) . '>0.01 sec (max 100 / sec)</option>'
. '<option value="20000" ' . ( $enkaSettings [ 'SMTPDelay' ] == " 20000 " ? 'selected="selected"' : '' ) . '>0.02 sec (max 50 / sec)</option>'
. '<option value="50000" ' . ( $enkaSettings [ 'SMTPDelay' ] == " 50000 " ? 'selected="selected"' : '' ) . '>0.05 sec (max 20 / sec)</option>'
. '<option value="100000" ' . ( $enkaSettings [ 'SMTPDelay' ] == " 100000 " ? 'selected="selected"' : '' ) . '>0.1 sec (max 10 / sec)</option>'
2020-10-29 12:25:14 +01:00
. '<option value="200000" ' . ( $enkaSettings [ 'SMTPDelay' ] == " 200000 " ? 'selected="selected"' : '' ) . '>0.2 sec (max 5 / sec)</option>' */
2020-08-14 13:36:36 +02:00
. '<option value="500000" ' . ( $enkaSettings [ 'SMTPDelay' ] == " 500000 " ? 'selected="selected"' : '' ) . '>0.5 sec (max 2 / sec)</option>'
. '<option value="1000000" ' . ( $enkaSettings [ 'SMTPDelay' ] == " 1000000 " ? 'selected="selected"' : '' ) . '>1 sec (max 1 / sec)</option>'
. '<option value="2000000" ' . ( $enkaSettings [ 'SMTPDelay' ] == " 2000000 " ? 'selected="selected"' : '' ) . '>2 sec (max 30 / min)</option>'
. '<option value="4000000" ' . ( $enkaSettings [ 'SMTPDelay' ] == " 4000000 " ? 'selected="selected"' : '' ) . '>4 sec (max 15 / min)</option>'
. '<option value="5000000" ' . ( $enkaSettings [ 'SMTPDelay' ] == " 5000000 " ? 'selected="selected"' : '' ) . '>5 sec (max 12 / min)</option>'
. '<option value="10000000" ' . ( $enkaSettings [ 'SMTPDelay' ] == " 10000000 " ? 'selected="selected"' : '' ) . '>10 sec (max 6 / min)</option>'
. '<option value="20000000" ' . ( $enkaSettings [ 'SMTPDelay' ] == " 20000000 " ? 'selected="selected"' : '' ) . '>20 sec (max 3 / min)</option>'
. '<option value="30000000" ' . ( $enkaSettings [ 'SMTPDelay' ] == " 30000000 " ? 'selected="selected"' : '' ) . '>30 sec (max 2 / min)</option>'
. '</select></label>' ;
echo '</p>' ;
echo '</div>' ;
echo '</form>' ;
echo '<br class="clr" />' ;
// Gumb shrani
echo '<span class="floatRight" ><div class="buttonwrapper"><a class="ovalbutton ovalbutton_orange btn_savesettings" href="#" onclick="document.settingsanketa_' . $row [ 'id' ] . '.submit(); return false;">' ;
echo $lang [ 'srv_email_setting_btn_save' ] . '</a></div></span>' ;
// Gumb preveri nastavitve
echo '<span id="send_mail_mode_test" class="floatRight spaceRight"><div class="buttonwrapper"><a class="ovalbutton ovalbutton_green" href="#" onclick="showTestSurveySMTP(); return false;">' ;
echo $lang [ 'srv_email_setting_btn_test' ] . '</a></div></span>' ;
if ( $_GET [ 's' ] == '1' ) {
echo '<div id="success_save" style="float:left; display:inline; margin: -2px 0 0 0;"></div>' ;
echo '<script type="text/javascript">$(document).ready(function() {show_success_save();});</script>' ;
}
}
// V session nastavimo nastavitev da se posilja z/brez email posiljanja
function setNoEmailing (){
if ( isset ( $_POST [ 'value' ])){
SurveySession :: sessionStart ( $this -> sid );
SurveySession :: set ( 'inv_noEmailing' , ( int ) $_POST [ 'value' ]);
// Ce preklopimo na drugo posiljanje (posta, sms...) moramo tudi preklopiti na rocni vnos kode
if ( $_POST [ 'value' ] == '1' ){
sisplet_query ( " UPDATE srv_anketa SET usercode_required='1' WHERE id=' " . $this -> sid . " ' " );
}
}
}
// V session nastavimo tip posiljanja (ce ni email - posta, sms, drugo...)
function setNoEmailingType (){
if ( isset ( $_POST [ 'value' ])){
SurveySession :: sessionStart ( $this -> sid );
SurveySession :: set ( 'inv_noEmailing_type' , ( int ) $_POST [ 'value' ]);
}
}
2021-02-10 13:15:04 +01:00
// Prikazemo popup za vklop arnes smtp-ja na aai
private function showAAISmtpPopup (){
global $lang ;
echo '<div class="popup_close"><a href="#" onClick="quick_title_edit_cancel(); return false;">✕</a></div>' ;
echo '<h2>' . $lang [ 'srv_email_setting_adapter0_aai_title' ] . '</h2>' ;
echo '<div class="popup_content">' ;
echo $lang [ 'srv_email_setting_adapter0_aai_popup' ];
echo '<br /><br />' ;
echo '<input type="checkbox" id="aai_smtp_checkbox" name="aai_smtp_checkbox" class="pointer" onClick="smtpAAIAccept();">' ;
echo ' <label for="aai_smtp_checkbox"><b>' . $lang [ 'srv_email_setting_adapter0_aai_popup2' ] . '</b></label>' ;
echo '</div>' ;
echo '<div class="buttons_holder">' ;
echo '<span class="buttonwrapper floatRight spaceLeft" id="aai_smtp_button" style="display:none;" title="' . $lang [ 'srv_save_profile_yes' ] . '"><a class="ovalbutton ovalbutton_orange" href="#" onClick="smtpAAISet(); return false;"><span>' . $lang [ 'srv_save_profile_yes' ] . '</span></a></span>' ;
echo '<span class="buttonwrapper floatRight" title="' . $lang [ 'srv_cancel' ] . '"><a class="ovalbutton ovalbutton_gray" href="#" onclick="smtpAAIPopupClose(); return false;"><span>' . $lang [ 'srv_cancel' ] . '</span></a></span>' ;
echo '</div>' ;
}
2020-08-14 13:36:36 +02:00
}