'; # id=inv_import_list_container
echo ' ';
}
/**
*
* 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;
//echo '
'.$lang['srv_invitation_comment'].' '. trim ($sql_row['comment']).'
';
}
echo '
'; #inv_messages_profiles_holder
$MA = new MailAdapter($this->sid, $type='invitation');
# zlistamo seznam vseh sporočil
# izpišemo primer besedila
echo '
'.$lang['srv_invitation_comment'].' '. trim ($sql_row['comment']).'
';
}
echo '
'; #inv_messages_profiles_holder
$MA = new MailAdapter($this->sid, $type='invitation');
# zlistamo seznam vseh sporočil
# izpišemo primer besedila
echo '
'; //inv_send_mail
}
function displayMailToSourceLists($source_type) {
global $lang,$site_url;
$canShowSubOption = false;
echo '
';
echo $lang['srv_inv_send_who_create1'].''.$lang['srv_inv_send_who_create2'].' ';
if ((int)$source_type == 0) {
# vsi respondenti v bazi
echo $lang['srv_inv_send_who_database_note'];
$canShowSubOption = true;
} elseif ((int)$source_type == 1) {
# 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) {
$canShowSubOption = true;
echo $lang['srv_inv_send_who_archive_note'];
echo '
';
echo '
';
echo '
';
echo '
'.$lang['srv_inv_send_who_table_address'].'
';
echo '
'.$lang['srv_inv_send_who_table_respondents'].'
';
echo '
'.$lang['srv_inv_send_who_table_date_create'].'
';
echo '
';
while ($row_arc = mysqli_fetch_assoc($sql_query_arc)) {
echo '
';
} else{
echo $lang['srv_inv_send_who_archive_no_archive'];
}
} elseif ((int)$source_type == 2) {
# seznami respondentov
# zloopamo skozi posamezne sezname respondentov
$sql_string_arc ="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";
#$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) {
$canShowSubOption = true;
echo $lang['srv_inv_send_who_all_units_note'];
echo '
';
echo '
';
echo '
';
echo '
'.$lang['srv_inv_send_who_table_list_name'].'
';
echo '
'.$lang['srv_inv_send_who_table_respondents'].'
';
echo '
'.$lang['srv_inv_send_who_table_date_create'].'
';
echo '
';
while ($row_arc = mysqli_fetch_assoc($sql_query_arc)) {
if ($row_arc['id'] > 0 && $row_arc['naslov'] == '') {
# če ni imena in je id < 0 je bil izbrisan
} else {
if ($row_arc['id'] > 0) {
if ($row_arc['naslov'] != '') {
$_naslov = $row_arc['naslov'];
} else {
$_naslov = $lang['srv_inv_send_who_table_list_deleted'];
}
} else if ($row_arc['id'] == 0) {
$_naslov = $lang['srv_inv_send_who_table_list_temporary'];
} else if ($row_arc['id'] < 0) {
$_naslov = $lang['srv_inv_send_who_table_list_noname'];
}
echo '
';
# 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 '
';
# 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 '
';
# 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 '
';
# poslal
$avtor = array();
if (trim($row['name'])) {
$avtor[] = trim ($row['name']);
}
if (trim($row['surname'])) {
$avtor[] = trim ($row['surname']);
}
echo '
';
# poslal
$avtor = array();
if (trim($row['name'])) {
$avtor[] = trim ($row['name']);
}
if (trim($row['surname'])) {
$avtor[] = trim ($row['surname']);
}
echo '
';
echo ''.implode(' ',$avtor).'';
echo '
';
echo '
';
}
echo '
';
}
} else {
echo '';
}
echo '
'; # id="div_archive_content">';
echo ' ';
}
function sendMail() {
global $lang, $site_path, $site_url, $global_user_id, $lastna_instalacija;
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'])){
// 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;
}
#echo '
';
// Je uporabnik poslal na ...
$return['msg'] .= sprintf($lang['srv_invitation_note8b'], $who, date("d.m.y", time()));
$return['msg'] .= ''.sprintf($lang['srv_invitation_note8'], count($send_ok)).' ';
// Arhivi
$return['msg'] .= ''.sprintf($lang['srv_invitation_note8c'], $site_url.'admin/survey/index.php?anketa='.$this->sid.'&a='.A_INVITATIONS.'&m=view_archive').' ';
// Seznam emailov...
$return['msg'] .= ''.$lang['srv_invitation_note8d'].' ';
// Seznam mailov na katere je bilo uspesno poslano
if (count($send_ok) > 0) {
$return['msg'] .= '
';
echo ''.$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 '';
echo '';
echo '';
echo '
';
}
}
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 '
';
echo '';
$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 '
';
}
function showArchiveRecipients($_arch_id = null, $archType = 'all') {
global $lang,$site_url,$global_user_id;
echo '
';
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();
$sql_string = "SELECT pid, name,comment FROM srv_invitations_recipients_profiles WHERE uid in('0', '".$global_user_id."')";
$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 '
';
}
function showInvitationStatus() {
global $admin_type, $app_settings, $global_user_id;
$isEmail = (int)SurveyInfo::getInstance()->checkSurveyModule('email');
$d = new Dostop();
echo '
';
# nov način z trackingom
if ($this->newTracking == true) {
$userAccess = UserAccess::getInstance($global_user_id);
// Ce so izklopljena ne prikazemo leve strani
if((int)$isEmail > 0 && $userAccess->checkUserAccess($what='invitations')){
echo '
';
$this->displayInvitationStatusNew();
echo '
';
}
}
# star način brez trackinga
else {
echo '
';
$this->displayInvitationStatusOld();
echo '
';
}
echo '
';
}
function displayInvitationStatusOld() {
global $lang, $admin_type, $global_user_id, $site_url, $site_path;
$isEmail = (int)SurveyInfo::getInstance()->checkSurveyModule('email');
# polovimo lurkerje
echo '';
#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 '';
}
}
function displayInvitationStatusNew() {
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 '';
}
// Email vabila niso omogocena
else {
echo '';
}
// predpripravimo podatke za vsa pošiljanja
$cnt_by_sendings = array();
$all_units_count = count($cnt_by_user);
if ($all_units_count > 0) {
foreach ($cnt_by_user AS $uid => $ucnt) {
$cnt_by_sendings[$ucnt]++;
}
echo ' ';
#pregled po pošiljanjih
echo '';
}
}
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 '';
}
// Vabila so vklopljena - NASTAVITVE
else{
if($noEmailing == 1){
echo '
';
}
else{
echo '
';
echo '
';
echo '
';
}
echo '
';
// Leva stran - navadne nastavitve
echo '
';
echo '';
echo '
';
// desna stran - nastavitve streznika - samo ce imamo posiljanje preko emaila
if($noEmailing != 1){
// Gorenje tega nima
if (!Common::checkModule('gorenje')){
echo '
';
echo '';
echo '
';
}
}
echo '
';
}
}
# navadni uporabniki, ki nimajo dostopa - text kako lahko pridobijo dostop
else {
echo '';
}
}
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 '
';
}
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
$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('0', '".$global_user_id."')".($accPid != '' ? ' OR pid IN ('.$accPid.')':'');
$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 '
';
} 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'].' ';
}
session_start();
$infoBox = null;
if (is_array($pids) && count($pids) > 0)
{
echo '
'.$lang['srv_inv_list_edit'].'
';
$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 .= '';
$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 .= ' '.$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 .= ' '.$lang['srv_inv_list_edit_name'].$sql_row['name'].'';
$infoBox .= ' '.$lang['srv_inv_list_edit_comment'].$sql_row['comment'].'';
}
#$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 '
';
echo '
';
$fields_cnt = 0;
foreach ($field_list AS $field => $checked)
{
if ($checked == 1) {
$fields_cnt++;
echo '
'.$lang['srv_'.$field].'
';
}
}
echo '
';
if (is_array($respondents) && count($respondents) > 0 )
{
foreach ($respondents AS $respondent_data) {
$row_cnt = 0;
echo '
';
$respondent_data_array = explode('|~|',$respondent_data);
if (count($respondent_data_array) > 0) {
foreach ($respondent_data_array AS $tekst) {
if ($row_cnt < $fields_cnt) {
echo '
'.str_replace ("|~|", ",", $tekst).'
';
$row_cnt++;
}
}
}
echo '
';
}
}
echo '
';
}
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'].' ';
}
session_start();
if (is_array($pids) && !empty($pids))
{
echo '
'.$lang['srv_inv_list_edit'].'
';
$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 = '';
$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 .= ' '.$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 .= ' '.$lang['srv_inv_list_edit_name'].'';
$infoBox .= ' '.$lang['srv_inv_list_edit_comment'].'';
}
#$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 '
';
echo '
';
$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 '
'; # id="inv_view_arch_recipients"
/* echo '';
*/
}
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
$sql_string = "SELECT pid, name,comment FROM srv_invitations_recipients_profiles WHERE uid in('0', '".$global_user_id."')";
$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 '
';
if ($saveNew == true) {
echo '';
echo ''.$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 '';
echo '';
echo '';
} else {
echo '';
echo ''.$lang['srv_inv_recipient_list_name'];
echo '';
echo '';
echo '';
}
echo '
';
echo $lang['srv_inv_recipient_list_comment'];
echo '';
# skrita polja za respondente in polja
$_fields = str_replace('inv_field_','',implode(',',$_POST['fields']));
echo '';
echo '';
echo '';
echo '';
echo '
';
if ($_GET['s'] == '1') {
echo '';
echo '';
}
}
// 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']);
}
}
}