From 19985dbb8c0aa66dc4bf7905abc1148de909097d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anton=20Luka=20=C5=A0ijanec?= Date: Tue, 11 Jan 2022 12:35:47 +0100 Subject: prvi-commit --- admin/survey/classes/class.SurveyRespondents.php | 816 +++++++++++++++++++++++ 1 file changed, 816 insertions(+) create mode 100644 admin/survey/classes/class.SurveyRespondents.php (limited to 'admin/survey/classes/class.SurveyRespondents.php') diff --git a/admin/survey/classes/class.SurveyRespondents.php b/admin/survey/classes/class.SurveyRespondents.php new file mode 100644 index 0000000..07dac48 --- /dev/null +++ b/admin/survey/classes/class.SurveyRespondents.php @@ -0,0 +1,816 @@ + array('naslov'=>$lang['srv_system_variables_email']), + 'ime' => array('naslov'=>$lang['srv_system_variables_name']), + 'priimek' => array('naslov'=>$lang['srv_system_variables_surname']), + 'telefon' => array('naslov'=>$lang['srv_system_variables_phone']), + 'naziv' => array('naslov'=>$lang['srv_system_variables_title'])); + */ + + protected function __construct() { + global $lang; + self::$systemVariables = array( + 'email' => array('naslov'=>$lang['srv_system_variables_email']), + 'pass' => array('naslov'=>$lang['password']), + 'ime' => array('naslov'=>$lang['srv_system_variables_name']), + 'priimek' => array('naslov'=>$lang['srv_system_variables_surname']), + 'telefon' => array('naslov'=>$lang['srv_system_variables_phone']), + 'naziv' => array('naslov'=>$lang['srv_system_variables_title']), + 'drugo' => array('naslov'=>$lang['srv_system_variables_custom']), + 'odnos' => array('naslov'=>$lang['srv_system_variables_relation'])); + } + + final private function __clone() {} + + /** Poskrbimo za samo eno instanco razreda + * + */ + static function getInstance() + { + if(!self::$instance) + { + self::$instance = new SurveyRespondents(); + } + return self::$instance; + } + + /** napolnimo podatke + * + */ + static function Init($_surveyId) + { + global $global_user_id; + + if ($_surveyId && $global_user_id) + { + self::$surveyId = $_surveyId; + self::$uId = $global_user_id; + // inicializiramo datoteko z nastavitvami + SurveyUserSetting :: getInstance()->Init(self::$surveyId, self::$uId); + // polovimo uporabnikovo privzeto listo + self::getProfileId(); + self::getProfiles(); + self::getSistemVariables(); + } else { + die("Mandatory data missing in SurveyRespondents class!"); + } + } + + static function getSurveyId() { return self::$surveyId; } + static function getGlobalUserId() { return self::$uId; } + static function getCurentProfileId() { return self::$currentProfileId; } + + static function getProfileId() { + // preverimo ali obstaja nastavitev + // poiščemo kateri profil variabel imamo + $drl = SurveyUserSetting :: getInstance()->getSettings('default_respondent_profile'); + + + if ($drl == null || $drl < 1) { + $drl = self::checkDefaultProfile(); + if ($drl > 0) + SurveyUserSetting :: getInstance()->saveSettings('default_respondent_profile', $drl); + + } + self::$currentProfileId = $drl; + return self::$currentProfileId; + } + + static function checkDefaultProfile() { + global $lang; + + # če smo v telefonski anketi skreiramo začasen prazen profil, + if ($_GET['a'] == A_PHONE || $_POST['profile_from'] == A_PHONE) { + + // najprej preverimo ali obstaja seja začasin profil + if ( isset($_SESSION['respondent_profile']) ) { + # preverimo ali obstaja variabla telefon, potem je bil provil pravilno skreiran + if (strpos($_SESSION['respondent_profile']['variables'],'telefon')) { + // vrnemo id iz seje + return $_SESSION['respondent_profile']['id']; + } + } + # če profil ne obstaja skreiramo nov zacasni prodil v obliki seje + + $_SESSION['respondent_profile'] = array( 'id' => 0, + 'uid' => self::getGlobalUserId(), + 'variables' => 'telefon', + 'lines' => array()); + if (!isset($_SESSION['respondent_profile']['name'])) { + $_SESSION['respondent_profile']['name'] = $lang['srv_temp_profile_author']; + } + return 0; # vrnemo id = 0, pravkar skreiranega profila + } + # če pa smo v e-mail anketi pa skreiramo prazen e-mail profil + if ($_GET['a'] == A_EMAIL || $_POST['profile_from'] == A_EMAIL) { + + // najprej preverimo ali obstaja seja začasin profil + if ( isset($_SESSION['respondent_profile']) ) { + # preverimo ali obstaja variabla email, potem je bil provil pravilno skreiran + if (strpos($_SESSION['respondent_profile']['variables'],'email')) { + // vrnemo id iz seje + return $_SESSION['respondent_profile']['id']; + } + } + # če profil ne obstaja skreiramo nov zacasni prodil v obliki seje + # in dodamo listo z avtorjevim e-mailom + $qryEmail = sisplet_query("SELECT email FROM users WHERE id = '".self::getGlobalUserId()."'"); + $rowEmail = mysqli_fetch_assoc($qryEmail); + + $_SESSION['respondent_profile'] = array( 'id' => 0, + 'uid' => self::getGlobalUserId(), + 'variables' => 'email', + 'lines' => array($rowEmail['email'])); + if (!isset($_SESSION['respondent_profile']['name'])) { + $_SESSION['respondent_profile']['name'] = $lang['srv_temp_profile_author']; + } + return 0; # vrnemo id = 0, pravkar skreiranega profila + } + + # če smo tukaj je napaka ! + return 0; + } + + /** Pridobimo seznam vseh list uporabnika + * v obliki arraya + */ + static function getProfiles() { + + self::$profiles = array(); + // dodamo profil iz seje , če obstaja + if ( isset($_SESSION['respondent_profile']) ) { + self::$profiles[$_SESSION['respondent_profile']['id']] = $_SESSION['respondent_profile']; + } + + // dodamo še ostale profile iz baze + $stringSelect = "SELECT * FROM srv_respondent_profiles WHERE uid = '".self::getGlobalUserId()."' ORDER BY id"; + $querySelect = sisplet_query($stringSelect); + + while ( $rowSelect = mysqli_fetch_assoc($querySelect) ) { + self::$profiles[$rowSelect['id']] = $rowSelect; + } + return self::$profiles; + } + + static function getProfileData($pid = null) { + $result = array(); + if($pid == null) { + $pid = self::$currentProfileId; + } + if (isset($_SESSION['respondent_profile']['id']) && $pid == $_SESSION['respondent_profile']['id']) { + $result[$_SESSION['respondent_profile']['id']] = array('pid'=> $_SESSION['respondent_profile']['id'], 'lines'=>$_SESSION['respondent_profile']['lines']); + return $result; + } + + // cene dodamo podatke iz baze + + $selectString = "SELECT * FROM srv_respondents WHERE pid = '".$pid."'"; + $querySelect = sisplet_query($selectString); + $_lines = array(); + while ( $rowSelect = mysqli_fetch_assoc($querySelect) ){ + $_lines[] = $rowSelect['line']; + } + $result[$pid] = array('pid'=> $pid, 'lines'=>$_lines); + + return $result; + } + + static function getSistemVariables() { + // osnovnm sistemskim variablam dodamo tiste iz ankete + $sqlSistemske = 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='".self::getSurveyId()."' ORDER BY g.vrstni_red, s.vrstni_red"); + if (mysqli_num_rows($sqlSistemske) > 0) { + while ($rowSistemske = mysqli_fetch_assoc($sqlSistemske)) { + if (!isset(self::$systemVariables[$rowSistemske['variable']])) { + self::$systemVariables[$rowSistemske['variable']] = array('naslov'=>$rowSistemske['naslov']); + } + } + + } + return self::$systemVariables; + } + + static function displayProfiles() { + global $admin_type; + global $lang; + + ?> +
+
+ + $profile ) { + echo '
' . $profile['name'] . '
'; + } + ?> +
+
+ +
+
+
+ +

+
+
+
+ : +
+
+
+
+ + +
: + + + + +
+ + +
: + + + + +
+ + +
: ? + + + +
+ '.$lang['srv_respondents_variables'].':'; + echo '
'; + foreach (self::$systemVariables as $sysKey =>$sysVar) { + echo '',$sysVar['naslov']; + + + } + echo '
'; + echo '
'; + echo ' '; + echo '

'; + echo '

'.$lang['srv_respondents_respondents'].':'; + echo ''; + echo '

'; + + echo ' '; + echo ' '; + echo ' '; + + echo '
'; + + echo '
'; + } + + + static function CheckUploadedFile() { + global $lang; + $error = array(); + + $fileName = $_FILES['ul']['name']; + $tmpName = $_FILES['ul']['tmp_name']; + $fileSize = $_FILES['ul']['size']; + $fileType = $_FILES['ul']['type']; + + + $okFileType = ( $fileType == 'text/plain' || $fileType == 'application/vnd.ms-excel' ); + $okFileEnd = (pathinfo($fileName, PATHINFO_EXTENSION) != 'txt' || pathinfo($fileName, PATHINFO_EXTENSION) != 'csv'); + // preverimo tip: + if ( $okFileType = false ) { + $error[] = $lang['srv_respondents_invalid_file_type']; + } + // prevermio še končnico (.txt) + else if ($okFileEnd = false) + $error[] = $lang['srv_respondents_invalid_file_type']; + + // preverimo velikost + if ( $fileSize == 0 ) + $error[] = $lang['srv_respondents_invalid_file_size']; + + // ce je do tu vse ok pregledamo vsebino + $respondents = array(); + $fh = @fopen($tmpName, "rb"); + + if ($fh) { + //$data = fread($fh, 4096); // zakaj je ta limit? + $data = fread($fh, filesize($tmpName)); + fclose($fh); + + // počistimo prazne vrstice in kakšno zlonamerno kodo + $data = strip_tags(str_replace(array("\n\r","\n"),array("\n","\n"),$data)); + $respondents = explode("\n",$data); + $respondents = array_values(array_filter($respondents)); + + } else { + $error[] = 'file read'; + } + + // ce ni napak in ce imamo zapise kreiramo nov zacasni profil v seji + if (count($error) == 0 && count($respondents) > 0) { + + $_SESSION['respondent_profile'] = array( 'id' => 0, + 'uid' => self::getGlobalUserId(), + 'variables' => 'email', + 'lines' => $respondents); + $_SESSION['respondent_profile']['name'] = $lang['srv_respondents_temp_profile']; + // nastavimo profil + self::$currentProfileId = 0; + + } else { + echo $lang['error'].'
'; + foreach ( $error as $value ) { + echo $value,"
"; + } + } + // prikazemo vrednosti + self::getProfiles(); + self::displayProfiles(); + } + + static function checkSystemVariables($variables, $setUserbase=true) { + $user_base = 0; + global $site_path; + + $sqlb = sisplet_query("SELECT branching, user_base FROM srv_anketa WHERE id = '".self::getSurveyId()."'"); + $rowb = mysqli_fetch_array($sqlb); + + $ba = new BranchingAjax(self::getSurveyId()); + + if (count($variables) > 0) { + // zakaj je bi ta reverse??? + //$variables = array_reverse($variables,true); + foreach ($variables as $variable) { + + $sqlVariable = sisplet_query("SELECT s.id FROM srv_spremenljivka s, srv_grupa g WHERE s.variable='".$variable."' AND s.gru_id=g.id AND g.ank_id='".self::getSurveyId()."'"); + if (mysqli_num_rows($sqlVariable) == 0 && $variable!='pass') { // če varabla še ne obstaja jo kreiramo + // za polje pass - Geslo ne kreiramo sistemske variable + + if ($variable != 'language') $user_base = 1; + + // dodamo novo spremenljivko na konec, tip je 21 + ob_start(); + $ba->ajax_spremenljivka_new(0, 0, 1, 0, 21); + $spr_id = $ba->spremenljivka; + ob_clean(); + + $s = sisplet_query("UPDATE srv_spremenljivka SET variable='".$variable."', variable_custom='1', naslov='".((isset($allowed[$variable]['naslov']) ? $allowed[$variable]['naslov'] : $variable))."', sistem='1', visible='0' WHERE id='$spr_id'"); + if (!$s) echo 'err435'.mysqli_error($GLOBALS['connect_db']); + + } + } + } + // če je potreben updejt (ampak najbrž je itak na 1 zaradi e-mail) + if ($setUserbase == true && $user_base > 0 && $user_base != $rowb['user_base']) { + $sql = sisplet_query("UPDATE srv_anketa SET user_base='$user_base' WHERE id='" . self::getSurveyId() . "'"); + SurveyInfo :: getInstance()->resetSurveyData(); + } + + } + static function displayAddedUsers() { + global $site_path, $site_url, $lang; + + SurveyInfo::getInstance()->SurveyInit(self::getSurveyId()); + $db_table = (SurveyInfo::getInstance()->getSurveyColumn('db_table') == 1) ? '_active' : ''; + + echo ''.$lang['srv_respondents_added_respondents'].':'; + echo ''.$lang['forward'].''; + echo '
'; + echo '
'; + + $temp_user_data = array(); + $data = array(); + $header = array(); + + // poiščemo sistemske spremenljivke ki so navedene za spremenlivko + $sprList = ""; + $prefix=""; + + $sql = sisplet_query("SELECT s.id, s.variable, s.naslov FROM srv_spremenljivka s, srv_grupa g WHERE s.sistem='1' AND s.gru_id=g.id AND g.ank_id='".self::getSurveyId()."' ORDER BY g.vrstni_red, s.vrstni_red ASC"); + while($row = mysqli_fetch_assoc($sql)) { + $sprList .= $prefix.$row['id']; + $prefix=","; + $header[$row['id']] = $row['naslov']; + } + + // dodamo sistemske podatke + $header_sys = array('pass'=>$lang['srv_respondents_cookie'], + 'status'=>$lang['srv_respondents_status'], + 'datetime'=>$lang['srv_respondents_datetime'], + 'admin_id'=>$lang['srv_respondents_admin']); + + $str_qry_users = "SELECT u.id AS usr_id, u.cookie, u.pass, u.unsubscribed, IF(u.last_status = '-1','null',u.last_status) as status FROM srv_user as u WHERE u.ank_id = '".self::getSurveyId()."' AND u.preview = '0' "; + + $qry_users = sisplet_query($str_qry_users); + while ( $row_users = mysqli_fetch_assoc($qry_users)) { + // polovimo podatke sistemskih spremenljivk od userja + if ($sprList != "") { + $sqlSprData = sisplet_query("SELECT spr_id,text FROM srv_data_text".$db_table." WHERE usr_id='".$row_users['usr_id']."' AND spr_id IN (".$sprList.")"); + + while ($rowSprData = mysqli_fetch_assoc($sqlSprData)) { + $data[$row_users['usr_id']][$rowSprData['spr_id']] = $rowSprData['text']; + } + } + // uporabniku dodamo podatke o kookiju in statusu + $data[$row_users['usr_id']]['pass'] = $row_users['pass']; + $data[$row_users['usr_id']]['status'] = $row_users['status'] . ' - ' .$lang['srv_userstatus_'.$row_users['status']]; + + if ($row_users['unsubscribed'] == 1) $data[$row_users['usr_id']]['status'] .= ', '.$lang['srv_unsubscribed']; + + // polovimo podatke iz userbase +// $str_ub = "SELECT ub.*, usr.name, usr.surname, usr.email FROM srv_userbase AS ub LEFT JOIN (SELECT usr.* FROM users as usr) as usr ON usr.id = ub.admin_id WHERE ub.usr_id = '".$row_users['usr_id']."' ORDER BY ub.tip ASC LIMIT 1"; + $str_ub = "SELECT ub.* FROM srv_userbase AS ub WHERE ub.usr_id = '".$row_users['usr_id']."' ORDER BY ub.tip ASC LIMIT 1"; + $qry_ub = sisplet_query($str_ub); + $row_ub = mysqli_fetch_assoc($qry_ub); + + $data[$row_users['usr_id']]['datetime'] = $row_ub['datetime']; + + // user insert data + if (!isset($temp_user_data[$row_ub['admin_id']])) { + $str_user = "SELECT usr.name, usr.surname, usr.email FROM users as usr WHERE usr.id = '".$row_ub['admin_id']."'"; + $qry_user = sisplet_query($str_user); + $row_user = mysqli_fetch_assoc($qry_user); + $data[$row_users['usr_id']]['admin_id'] = $row_user['name']." ".$row_user['surname']; + $temp_user_data[$row_ub['admin_id']] = $row_user['name']." ".$row_user['surname']; + } else + $data[$row_users['usr_id']]['admin_id'] = $temp_user_data[$row_ub['admin_id']]; + + } + echo '' . "\n"; + // naslovna vrstica + echo ''; + echo ''; + echo ''; + foreach ($header as $header_key => $headerTitle) { + echo ''; + } + foreach ($header_sys as $header_key => $headerTitle) { + echo ''; + } + + echo ''."\n"; + foreach ( $data as $user_id => $user_data ) { + + echo ''; + echo ''; + echo ''; + // držimo se vrstnega reda header polij + foreach ($header as $header_key => $headerTitle) { + echo ''; + } + foreach ($header_sys as $header_key => $headerTitle) { + echo ''; + } + echo ''."\n"; + } + echo '
'.$lang['srv_anketadelete_txt'].''.$lang['srv_unsubscribe_1'].''. $headerTitle .''. $headerTitle .'
' . $lang['srv_delete_respondent'] . '' . $lang['srv_unsubscribe_2'] . ''.($data[$user_id][$header_key] != null && $data[$user_id][$header_key] != "" ? $data[$user_id][$header_key] : ' ').''.($data[$user_id][$header_key] != null && $data[$user_id][$header_key] != "" ? $data[$user_id][$header_key] : ' ').'
'. "\n"; + + } + + static function Ajax($action) { + switch ( $action ) { + case 'save_new_respondent_profile': + // shranimo podatek + self::ajaxSaveNewProfile(); + // osvezimo + self::getProfileId(); + self::getProfiles(); + self::displayProfiles(); + break; + + case 'change_respondent_profile': + // osvezimo + $pid = (isset($_POST['pid']) ? $_POST['pid'] : SurveyUserSetting :: getInstance()->getSettings('default_respondent_profile') ); +// if ($pid > 0) // če ni seja, shranimo kot privzeti + SurveyUserSetting :: getInstance()->saveSettings('default_respondent_profile', $pid); + self::$currentProfileId = $pid; + self::getProfileId(); + self::getProfiles(); + self::displayProfiles(); +// self::displayProfileData($pid); + break; + case 'save_respondent_profile': + // shranimo podatek + self::ajaxSaveProfile(); + self::getProfileId(); + self::getProfiles(); + self::displayProfiles(); + break; + case 'run_respondent_profile': + // shranimo podatek + self::ajaxRunProfile(); + // osvežimo + # odvisno ali smo v telefonu ali e-mail vabilih + if ($_POST['profile_from'] == A_PHONE) { + # če smo telefon + echo 'index.php?anketa=',self::getSurveyId(),'&a='.A_PHONE.'&m=start'; + } else { + # če smo e-mail + echo 'index.php?anketa=',self::getSurveyId(),'&a=email&m=respondenti_view'; + } + break; + case 'rename_respondent_profile': + // shranimo podatek + self::ajaxRenameProfile(); + // osvežimo + self::getProfileId(); + self::getProfiles(); + self::displayProfiles(); + break; + case 'delete_respondent_profile': + // pobrišemo + self::ajaxDeleteProfile(); + // osvežimo + self::getProfileId(); + self::getProfiles(); + self::displayProfiles(); + break; + + + default: + self::displayProfiles(); + break; + } + } + + static function ajaxSaveNewProfile() { + global $lang; + if ( isset($_POST['name']) && isset($_POST['pid']) ) { + + if ( !isset($_POST['variables']) ) + self::$messages[] = 'Manjka podatek spremenljivke!'; + if ( !isset($_POST['data']) ) + self::$messages[] = 'Polje respondenti je prazno!'; + + // shranimo vrednosti + $new_name = $_POST['name']; + $variables = $_POST['variables']; + $stringInsert = "INSERT INTO srv_respondent_profiles (uid, name, variables) VALUES ('".self::getGlobalUserId()."', '".$new_name."', '".$variables."')"; + $queryInsert = sisplet_query($stringInsert) or die(mysqli_error($GLOBALS['connect_db'])); + $newId = mysqli_insert_id($GLOBALS['connect_db']); + + if ($newId > 0) { + SurveyUserSetting :: getInstance()->saveSettings('default_respondent_profile', $newId); + self::$currentProfileId = $newId; + + // dodamo še podatke (najprej pobrišemo stare če obstajajo) + $lines = explode("\n",$_POST['data']); + if (count($lines)) { + foreach ( $lines as $line ) { + $stringInsert = "INSERT INTO srv_respondents (pid, line) VALUES ('".$newId."', '".$line."')"; + $queryInsert = sisplet_query($stringInsert) or die(mysqli_error($GLOBALS['connect_db'])); + } + } + } else { + self::$errors[] = $lang['srv_respondents_error_create']; + } + } else { + self::$errors[] = $lang['srv_respondents_error_data']; + } + // posodobimo podatke + } + + static function ajaxSaveProfile() { + + if (isset($_POST['pid'])) { + $pid = $_POST['pid']; + if ($pid == 0) { // imamo profil iz seje + //popravimo podatke v seji + + $lines = explode("\n",$_POST['data']); + $_SESSION['respondent_profile']['lines'] = $lines; + + $_SESSION['respondent_profile']['variables'] = $_POST['variables']; + + } else { + // popravimo podatek za variables v bazi + $stringUpdate = "UPDATE srv_respondent_profiles SET variables = '".$_POST['variables']."' WHERE id = '".$pid."'"; + sisplet_query($stringUpdate); + + // pobrisemo stare zapise (podatke) + $stringDelete = "DELETE FROM srv_respondents WHERE pid = '".$pid."'"; + sisplet_query($stringDelete); + // dodamo še podatke + $lines = explode("\n",$_POST['data']); + if (count($lines)) { + foreach ( $lines as $line ) { + $stringInsert = "INSERT INTO srv_respondents (pid, line) VALUES ('".$pid."', '".$line."')"; + $queryInsert = sisplet_query($stringInsert) or die(mysqli_error($GLOBALS['connect_db'])); + } + } + } + } + } + + static function ajaxRunProfile() { + global $admin_type; + + SurveyInfo::getInstance()->SurveyInit(self::getSurveyId()); + $db_table = (SurveyInfo::getInstance()->getSurveyColumn('db_table') == 1) ? '_active' : ''; + + // preverimo potrebne sistemske variable + // tu je lahko vejica + $variables = explode(",",$_POST['variables']); + self::checkSystemVariables($variables); + + // poskrbeti moramo za pravilni vrstni red shranjevanja (vrstni red in id-je spremenljivk) + $cnt=0; + $spremenlivke = array(); // array kam po vrstnem redu shranimo id-je spremenlivk + $vrednosti = array(); // poleg IDja spremenljivk potrebujemo tudi ID vrednosti (ker za tip 21 imamo lahko vec text fieldov) + foreach ($variables as $variabla) { + // za vsako variablo dobimo id spremenlivke + if ($variabla != 'pass') { + $sqlSpremenlivka = sisplet_query("SELECT s.id FROM srv_spremenljivka s, srv_grupa g WHERE s.sistem='1' AND s.variable = '".$variabla."' AND s.gru_id=g.id AND g.ank_id='".self::$surveyId."' ORDER BY g.vrstni_red, s.vrstni_red"); + $rowSpremenlivka = mysqli_fetch_assoc($sqlSpremenlivka); + $spremenlivke[$cnt] = $rowSpremenlivka['id']; + $sqlVrednost = sisplet_query("SELECT id FROM srv_vrednost WHERE spr_id = '$rowSpremenlivka[id]' ORDER BY vrstni_red ASC LIMIT 1"); + $rowVrednost = mysqli_fetch_array($sqlVrednost); + $vrednosti[$cnt] = $rowVrednost['id']; + } else { + $spremenlivke[$cnt] = -1; + $vrednosti[$cnt] = -1; + } + $cnt++; + } + $delimiter = $_POST['recipientsDelimiter']; + + $users = mysql_real_unescape_string($_POST['data']); + // najprej razdelimo vrstice + $vrstice = explode("\n", $users); + + // navadni userji lahko dodajo najvec 20 respondentov + if ($admin_type <= 1) { + $count = null; + } else { + $sql = sisplet_query("SELECT COUNT(*) AS count FROM srv_user WHERE ank_id='".self::$surveyId."' AND preview='0'"); + $row = mysqli_fetch_array($sql); + $count = $row['count']; + } + + // shranjujemo v session za progress bar + session_start(); + $_SESSION['progressBar'][self::$surveyId]['status'] = 'ok'; + $_SESSION['progressBar'][self::$surveyId]['total'] = (int)count($vrstice); + $_SESSION['progressBar'][self::$surveyId]['current'] = (int)0; + session_commit(); + + $progressCounter = 0; + + foreach ($vrstice AS $vrstica) { + + if ($count === null || $count < 20) { + if ($vrstica != '') { + + // izberemo random hash, ki se ni v bazi + do { + $rand = md5(mt_rand(1, mt_getrandmax()) . '@' . $_SERVER['REMOTE_ADDR']); + $sql = sisplet_query("SELECT id FROM srv_user WHERE SUBSTRING(cookie, 1, 6) = SUBSTRING('".$rand."', 1, 6)"); + } while (mysqli_num_rows($sql) > 0); + + sisplet_query("INSERT INTO srv_user (ank_id, cookie, pass, last_status, time_insert) VALUES ('".self::$surveyId."', '".$rand."', '".substr($rand, 0, 6)."', '0', NOW())"); + $usr_id = mysqli_insert_id($GLOBALS['connect_db']); + + sisplet_query("INSERT INTO srv_userbase (usr_id, tip, datetime, admin_id) VALUES ('".$usr_id."', '0', NOW(), '" . self::$uId . "')"); + sisplet_query("INSERT INTO srv_userstatus (usr_id, tip, status, datetime) VALUES ('".$usr_id."', '0', '0', NOW())"); + + // vrstico razbijemo v data, v $i pa mamo stevec in dodajamo po vrsti v while zanki + // pa smo spet pri vejicah ipd. + + $data = explode($delimiter, $vrstica); + + $i = 0; + if (count($data) > 0) { + foreach ( $data as $value ) { + $value = trim($value); + if (isset($spremenlivke[$i])) { + if ($spremenlivke[$i] > 0) { // sistemska + if (!isset($value) || $value == "") + $value = -1; + sisplet_query("INSERT INTO srv_data_text".$db_table." (spr_id, vre_id, text, usr_id) VALUES ('".$spremenlivke[$i]."', '".$vrednosti[$i]."', '" . trim($value) . "', '".$usr_id."')"); + } elseif ($spremenlivke[$i] == -1) { // pass - Geslo + sisplet_query("UPDATE srv_user SET pass='".strtolower($value)."' WHERE id='$usr_id'"); + } + } + $i++; + } + } + + session_start(); + $_SESSION['progressBar'][self::$surveyId]['current'] = (int)++$progressCounter; + session_commit(); + + } + } + if ($count !== null) $count++; + } + + session_start(); + $_SESSION['progressBar'][self::$surveyId]['status'] = 'end'; + session_commit(); + + } + + static function ajaxRenameProfile() { + + $pid = $_POST['pid']; + $name = $_POST['name']; + + if (isset($pid) && $pid > 0 && isset($name) && $name != "") { + // popravimo podatek za variables + $stringUpdate = "UPDATE srv_respondent_profiles SET name = '".$name."' WHERE id = '".$pid."'"; + sisplet_query($stringUpdate); + + } else { + global $lang; + die($lang['srv_respondents_error_data']); + } + } + static function ajaxDeleteProfile() { + $pid = $_POST['pid']; + if ($pid == 0) { + // brišemo session (to lahko samo če imamo še druge profile) + unset( $_SESSION['respondent_profile'] ); + } else if (isset($pid) && $pid > 0) { + // pobrišemo vrednosti + $stringDelete = "DELETE FROM srv_respondents WHERE pid = '".$pid."'"; + sisplet_query($stringDelete); + + // pobrišemo profil + $stringDelete = "DELETE FROM srv_respondent_profiles WHERE id = '".$pid."'"; + sisplet_query($stringDelete); + + // nastavimo nov privzet profil + $stringSelect = "SELECT id FROM srv_respondent_profiles WHERE uid = '".self::getGlobalUserId()."' ORDER BY id LIMIT 1"; + $querySelect = sisplet_query($stringSelect); + $rowSelect = mysqli_fetch_assoc($querySelect); + if ($rowSelect['id']) + SurveyUserSetting :: getInstance()->saveSettings('default_respondent_profile', $rowSelect['id']); + else + SurveyUserSetting :: getInstance()->saveSettings('default_respondent_profile', 0); + } + } +} +?> -- cgit v1.2.3