'; # 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;
}
$rids = $_POST['rids'];
$return = array();
$return['error'] = '0';
$return['msg'] = '
'.$lang['srv_invitation_note5'].'
';
// 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 '';
echo $lang['srv_invitation_note6'];
echo '';
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 ) {
$sql_row_m = mysqli_fetch_assoc($sql_query_m);
}
else {
#nimamo še vsebine sporočila skreiramo privzeto.
echo '';
echo $lang['srv_invitation_note6'];
echo '';
exit();
}
}
$subject_text = $sql_row_m['subject_text'];
$body_text = $sql_row_m['body_text'];
$msg_url = $sql_row_m['url'];
$message_naslov = $sql_row_m['naslov'];
// naslov za odgovor je avtor ankete
if ($this->validEmail($sql_row_m['reply_to'])) {
$reply_to = $sql_row_m['reply_to'];
}
else {
$reply_to = Common::getInstance()->getReplyToEmail();
}
// 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
");
$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'];
}
}
# zakeširamo user_id za datapiping
$arryDataPiping = array();
$qryDataPiping = sisplet_query("SELECT id,inv_res_id FROM srv_user WHERE ank_id='$this->sid' AND inv_res_id IS NOT NULL");
while (list($dpUid,$dpInvResId) = mysqli_fetch_row($qryDataPiping)) {
if ((int)$dpInvResId > 0 && (int)$dpUid > 0) {
$arryDataPiping[$dpInvResId] = (int)$dpUid;
}
}
# 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;
$sqlinfo_query = sisplet_query("SELECT email, name, surname FROM users WHERE id = '".$global_user_id."'");
list($infoEmail,$infoName,$infoSurname) = mysqli_fetch_row($sqlinfo_query);
$infourl = 'anketi';
$format = $lang['srv_inv_send_finish_note'];
$info1ka_mass_email_note = sprintf($format, $infoName, $infoSurname, $infoEmail, $infourl, $numRows);
try{
$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.')');
}
catch (Exception $e){
}
}
}
// 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'");
list($count_all) = mysqli_fetch_row($sql_query_all);
$archive_naslov = 'mailing_'.date("d.m.Y").', '.date("H:i:s");
$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')
");
$arch_id = mysqli_insert_id($GLOBALS['connect_db']);
$duplicated = array();
while ($sql_row = mysqli_fetch_assoc($sql_query)) {
$password = $sql_row['password'];
$email = $sql_row['email'];
if ($dont_send_duplicated == true && isset($duplicated[$email])) {
$duplicated[$email] ++;
continue;
}
$duplicated[$email] = 1;
$individual = (int)$this->surveySettings['individual_invitation'];
if ( ($individual == 1 && trim($email) != '' && trim($password) != '') || ($individual == 0 && trim($email) != '') ){
// odvisno ali imamo url za jezik.
if ($msg_url != null && trim($msg_url) != '' ) {
$url = $msg_url . ($individual == 1 ? '?code='.$password : '');
}
else {
$url = $nice_url . ($individual == 1 ? '&code='.$password : '');
}
$url .= '&ai='.(int)$arch_id;
// odjava
$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(
'' . $url . '',
$url,
'' . $lang['user_bye_hl'] . '',
$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
);
// naredimo DataPiping;
if (isset($arryDataPiping[$sql_row['id']])) {
$user_body_text = Common::getInstance()->dataPiping($user_body_text, $arryDataPiping[$sql_row['id']], 0);
}
$resultX = null;
try{
$MA = new MailAdapter($this->sid, $type='invitation');
$MA->addRecipients($email);
$resultX = $MA->sendMail($user_body_text, $subject_text);
}
catch (Exception $e){
// 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
}
else {
// ni poslalo
$send_error[] = $email;
$send_error_ids[] = $sql_row['id'];
$_user_data['status'] = 2;
}
$send_users_data[] = $_user_data;
// updejtamo userja da mu je bilo poslano - PO NOVEM TO DELAMO SPROTI
if ( count($send_ok_ids) > 0) {
$sqlQuery = sisplet_query("UPDATE srv_invitations_recipients SET sent = '1', date_sent = '".$date_sent."' WHERE id IN (".implode(',',$send_ok_ids).")");
if (!$sqlQuery) {
$error = mysqli_error($GLOBALS['connect_db']);
}
// statuse popravimo samo če vabilo še ni bilo poslano ali je bila napaka
$sqlQuery = sisplet_query("UPDATE srv_invitations_recipients SET last_status = '1' WHERE id IN (".implode(',',$send_ok_ids).") AND last_status IN ('0','2')");
if (!$sqlQuery) {
$error = mysqli_error($GLOBALS['connect_db']);
}
}
# updejtamo 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();
$_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']."'
");
$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
}
// 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);
}
}
}
}
// dodajmo še userje v povezovalno tabelo (arhiv)
if ($arch_id > 0) {
// 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'");
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($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);
}
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);
}
}
// Izpis rezultatov - errors and successes
if (count($send_error) > 0 ) {
$return['error'] = '1';
$return['msg'] = '
';
// 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'] .= '
';
}
}
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 '';
$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 .= ' ';
$infoBox .= ' ';
}
#$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 '';
$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 .= ' ';
$infoBox .= ' ';
}
#$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 ($_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']);
}
}
}