summaryrefslogtreecommitdiffstats
path: root/admin/survey/export/xmlClasses/class.XmlSurvey.php
diff options
context:
space:
mode:
authorAnton Luka Šijanec <anton@sijanec.eu>2022-01-11 12:35:47 +0100
committerAnton Luka Šijanec <anton@sijanec.eu>2022-01-11 12:35:47 +0100
commit19985dbb8c0aa66dc4bf7905abc1148de909097d (patch)
tree2cd5a5d20d7e80fc2a51adf60d838d8a2c40999e /admin/survey/export/xmlClasses/class.XmlSurvey.php
download1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar
1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar.gz
1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar.bz2
1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar.lz
1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar.xz
1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar.zst
1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.zip
Diffstat (limited to 'admin/survey/export/xmlClasses/class.XmlSurvey.php')
-rw-r--r--admin/survey/export/xmlClasses/class.XmlSurvey.php590
1 files changed, 590 insertions, 0 deletions
diff --git a/admin/survey/export/xmlClasses/class.XmlSurvey.php b/admin/survey/export/xmlClasses/class.XmlSurvey.php
new file mode 100644
index 0000000..c4f7250
--- /dev/null
+++ b/admin/survey/export/xmlClasses/class.XmlSurvey.php
@@ -0,0 +1,590 @@
+<?php
+
+/**
+ *
+ * Class ki skrbi za izris vprasalnika v xml
+ *
+ *
+ */
+
+include('../../vendor/autoload.php');
+
+class XmlSurvey{
+
+ var $anketa; // ID ankete
+ var $tex; //shrani tex kodo
+ var $texNewLine = '\\\\ ';
+ var $texPageBreak = "\\pagebreak";
+ //var $texPageBreak = "\\newpage";
+ var $export_format;
+ var $export_data_show_recnum;
+ var $exportDataPageBreak=0; //vsak respondent na svoji strani
+
+ var $commentType = 1; // tip izpisa komentarjev
+
+ var $loop_id = null; // id trenutnega loopa ce jih imamo
+
+ var $db_table = '';
+
+ protected $showIntro = 0;
+ protected $type = 0; // tip izpisa - 0->navaden, 1->iz prve strani, 2->s komentarji
+
+ protected $showIf = 0; // izpis if-ov
+
+ var $skipEmpty = 0; // izpusti vprasanja brez odgovora
+ var $skipEmptySub = 0; // izpusti podvprasanja brez odgovora
+
+ protected $recnum = 0;
+ protected $usr_id = 0;
+ protected $texBigSkip = '\bigskip';
+
+ protected $xml;
+
+ function __construct($anketa=null, $export_format='', $xml=null){
+ global $site_path, $global_user_id, $admin_type, $lang;
+
+ $this->anketa = $anketa;
+ $this->export_format = $export_format;
+ $this->xml = $xml;
+
+ $this->usr_id = $_GET['usr_id'];
+
+ if ($this->usr_id != '') {
+ $sqlR = sisplet_query("SELECT recnum FROM srv_user WHERE id = '$this->usr_id '");
+ $rowR = mysqli_fetch_array($sqlR);
+ $this->recnum = $rowR['recnum'];
+ }
+
+ //pridobitev nastavitev izvoza
+ SurveySetting::getInstance()->Init($this->anketa);
+ $this->export_data_show_recnum = SurveySetting::getInstance()->getSurveyMiscSetting('export_data_show_recnum'); //ali je potrebno pokazati recnum ob vsakem respondentu
+ $this->exportDataPageBreak = (int)SurveySetting::getInstance()->getSurveyMiscSetting('export_data_PB'); //ali mora vsak izpis odgovorov respondenta zaceti na svoji strani
+
+ //if ( SurveyInfo::getInstance()->SurveyInit($this->anketa['id']) && $this->init())
+ if ( SurveyInfo::getInstance()->SurveyInit($this->anketa) )
+ {
+ if (SurveyInfo::getInstance()->getSurveyColumn('db_table') == 1){
+ $this->db_table = '_active';
+ }
+ }
+ else{
+ return false;
+ }
+ }
+
+ #funkcija, ki skrbi za izpis praznega vprasalnika v xml
+ public function displaySurvey($export_subtype='', $export_data_type=''){
+ global $lang;
+
+ xmlwriter_start_element($this->xml, 'dataDscr'); //Zacetek elementa dataDscr
+
+ //echo "in function: ".$export_data_type."</br>";
+ $rowA = SurveyInfo::getInstance()->getSurveyRow();
+
+ // filtriramo spremenljivke glede na profil
+ SurveyVariablesProfiles :: Init($this->anketa);
+
+ $dvp = SurveyUserSetting :: getInstance()->getSettings('default_variable_profile');
+ $_currentVariableProfile = SurveyVariablesProfiles :: checkDefaultProfile($dvp);
+
+ $tmp_svp_pv = SurveyVariablesProfiles :: getProfileVariables($_currentVariableProfile);
+
+ foreach ( $tmp_svp_pv as $vid => $variable) {
+ $tmp_svp_pv[$vid] = substr($vid, 0, strpos($vid, '_'));
+ }
+
+ $sqlGrupeString = "SELECT id FROM srv_grupa WHERE ank_id='".$this->anketa."' ORDER BY vrstni_red";
+ $sqlGrupe = sisplet_query($sqlGrupeString);
+
+ //echo "__________________________________</br>";
+ //echo "Funkcija displaySurvey user: $this->usr_id</br>";
+
+ $question = new XmlSurveyElement($this->anketa, $this->export_format, $this->usr_id, $export_subtype, $this->xml);
+
+ while ( $rowGrupe = mysqli_fetch_assoc( $sqlGrupe ) ){ // sprehodmo se skozi grupe ankete
+ $this->grupa = $rowGrupe['id'];
+
+ // Pogledamo prvo spremenljivko v grupi ce je v loopu
+ $sql = sisplet_query("SELECT * FROM srv_spremenljivka WHERE gru_id='".$this->grupa."' AND visible='1' ORDER BY vrstni_red ASC");
+ $row = mysqli_fetch_array($sql);
+
+ // ce je ima loop za parenta
+ $if_id = $this->find_parent_loop($row['id']);
+
+ // Navadne spremenljivke ki niso v loopu
+
+ $loop_id = 'IS NULL';
+ //$zaporedna = 0;
+ $sqlSpremenljivke = sisplet_query("SELECT * FROM srv_spremenljivka WHERE gru_id='".$this->grupa."' AND visible='1' ORDER BY vrstni_red ASC");
+ while ($rowSpremenljivke = mysqli_fetch_assoc($sqlSpremenljivke)){ // sprehodimo se skozi spremenljivke grupe
+ $spremenljivka = $rowSpremenljivke['id'];
+ //echo "Ni v loop-u:".$rowSpremenljivke['tip']." </br>";
+
+ $preveriSpremenljivko = $this->checkSpremenljivka($spremenljivka); //preveri ali je spremenljivka vidna (zaradi branchinga)
+
+ if ($preveriSpremenljivko){ // lahko izrišemo spremenljivke
+ // če imamo številčenje Type = 1 potem številčimo V1
+/* if (SurveyInfo::getInstance()->getSurveyCountType()){
+ $zaporedna++;
+ } */
+
+ //$stevilcenje = ( SurveyInfo::getInstance()->getSurveyCountType() ) ? ( ( SurveyInfo::getInstance()->getSurveyCountType() == 2 ) ? $rowSpremenljivke['variable'].") " : $zaporedna.") " ) : null;
+
+
+ // izpis navadnega vprasalnika #####################
+ //izpisi posamezen element praznega vprasalnika
+ $question->displaySurveyElement($rowSpremenljivke, $export_subtype, $preveriSpremenljivko, $this->loop_id);
+ // izpis navadnega vprasalnika - konec #############
+
+ //$this->pdf->Ln(LINE_BREAK);
+ }
+ }
+ }
+ xmlwriter_end_element($this->xml); //Zakljucek elementa dataDscr
+ }
+ #funkcija, ki skrbi za izpis praznega vprasalnika v xml - konec
+
+ function getGrupa() {return $this->grupa;}
+
+
+ /**
+ * @desc preveri ali je spremenljivka vidna (zaradi branchinga)
+ */
+ function checkSpremenljivka ($spremenljivka=null) {
+
+ $sql = sisplet_query("SELECT * FROM srv_spremenljivka WHERE id = '".$spremenljivka."'");
+ if (!$sql) echo mysqli_error($GLOBALS['connect_db']);
+ $row = mysqli_fetch_array($sql);
+
+ if ($row['visible'] == 0) return false;
+
+ $sql1 = sisplet_query("SELECT * FROM srv_branching WHERE element_spr = '".$spremenljivka."'");
+ if (!$sql1) echo mysqli_error($GLOBALS['connect_db']);
+ $row1 = mysqli_fetch_array($sql1);
+
+ /*if (!$this->checkIf($row1['parent']))
+ return false;*/
+
+ return true;
+ }
+
+ /**
+ * @desc preveri ali je spremenljivka vidna (zaradi branchinga), ko je q_data ali q_data_all
+ */
+ //function checkSpremenljivkaData ($spremenljivka, $gridMultiple=false) {
+ function checkSpremenljivkaData ($spremenljivka=null, $loop_id_raw=null, $gridMultiple=false) {
+
+ $loop_id = $loop_id_raw == 'IS NULL' ? " IS NULL" : " = '".$loop_id_raw."'";
+
+ $sql = sisplet_query("SELECT * FROM srv_spremenljivka WHERE id = '".$spremenljivka."'");
+ if (!$sql) echo mysqli_error($GLOBALS['connect_db']);
+ $row = mysqli_fetch_array($sql);
+
+ // Ce vprasanje ni vidno ali ce uporabnik nima dostopa do vprasanja
+ if ($row['visible'] == 0 || !( ($this->admin_type <= $row['dostop'] && $this->admin_type>=0) || ($this->admin_type==-1 && $row['dostop']==4) ) )
+ return false;
+ //echo "skipEmpty: $this->skipEmpty </br>";
+ // Preverjamo ce je vprasanje prazno in ce preskakujemo prazne
+ if($this->skipEmpty==1 && !$gridMultiple){
+
+ $isEmpty = true;
+ //echo "isEmpty: ".$isEmpty."</br>";
+ switch ( $row['tip'] ){
+ case 1: //radio
+ case 2: //check
+ case 3: //select -> radio
+ //$sqlUserAnswer = sisplet_query("SELECT * FROM srv_data_vrednost".$this->db_table." WHERE spr_id='$row[id]' AND usr_id='".$this->usr_id."' AND vre_id!='-2'");
+ $sqlUserAnswerString = "SELECT * FROM srv_data_vrednost".$this->db_table." WHERE spr_id='$row[id]' AND usr_id='".$this->usr_id."' AND vre_id>'0' AND loop_id $loop_id ";
+ $sqlUserAnswer = sisplet_query($sqlUserAnswerString);
+ if(mysqli_num_rows($sqlUserAnswer) > 0){
+ $isEmpty = false;
+ }
+ break;
+
+ case 6: //multigrid
+ case 16:// multicheckbox
+ case 19:// multitext
+ case 20:// multinumber
+ if($row['tip'] == 6 && $row['enota'] != 3){
+ $sqlUserAnswerString = "SELECT * FROM srv_data_grid".$this->db_table." WHERE spr_id = '".$row['id']."' AND usr_id = '".$this->usr_id."' AND loop_id $loop_id";
+ }
+ elseif($row['tip'] == 16 || ($row['tip'] == 6 && $row['enota'] == 3)){
+ //$sqlUserAnswer = sisplet_query("SELECT * FROM srv_data_checkgrid".$this->db_table." WHERE spr_id = '".$row['id']."' AND usr_id = '".$this->usr_id."'");
+ $sqlUserAnswerString = "SELECT * FROM srv_data_checkgrid".$this->db_table." WHERE spr_id = '".$row['id']."' AND usr_id = '".$this->usr_id."' AND loop_id $loop_id";
+ }
+ else{
+ //$sqlUserAnswer = sisplet_query("SELECT * FROM srv_data_textgrid".$this->db_table." WHERE spr_id = '".$row['id']."' AND usr_id = '".$this->usr_id."'");
+ $sqlUserAnswerString ="SELECT * FROM srv_data_textgrid".$this->db_table." WHERE spr_id = '".$row['id']."' AND usr_id = '".$this->usr_id."' AND loop_id $loop_id";
+ }
+ $sqlUserAnswer = sisplet_query($sqlUserAnswerString);
+ //echo "stevilo podatkov: ".mysqli_num_rows($sqlUserAnswer)."</br>";
+ if(mysqli_num_rows($sqlUserAnswer) > 0){
+ $isEmpty = false;
+ }
+ break;
+
+ case 7: //number
+ case 8: //datum
+ case 18: //vsota
+ case 21: //besedilo*
+ $sqlUserAnswerString = "SELECT * FROM srv_data_text".$this->db_table." WHERE spr_id='".$row['id']."' AND usr_id='".$this->usr_id."' AND loop_id $loop_id";
+ $sqlUserAnswer = sisplet_query($sqlUserAnswerString);
+ if(mysqli_num_rows($sqlUserAnswer) > 0)
+ $isEmpty = false;
+ break;
+
+ case 17: //ranking
+ $sqlUserAnswerString = "SELECT * FROM srv_data_rating WHERE spr_id=".$row['id']." AND usr_id='".$this->usr_id."' AND loop_id $loop_id";
+ $sqlUserAnswer = sisplet_query($sqlUserAnswerString);
+ if(mysqli_num_rows($sqlUserAnswer) > 0)
+ $isEmpty = false;
+ break;
+
+ case 24: //mesan multigrid
+ // loop po podskupinah gridov
+ $sqlSubGrid = sisplet_query("SELECT m.spr_id, s.tip, s.enota FROM srv_grid_multiple m, srv_spremenljivka s WHERE m.parent='".$spremenljivka."' AND m.spr_id=s.id");
+ while($rowSubGrid = mysqli_fetch_array($sqlSubGrid)){
+ if($rowSubGrid['tip'] == 6){
+ //$sqlUserAnswerString = "SELECT grd_id FROM srv_data_grid".$this->db_table." WHERE spr_id = '".$rowSubGrid['spr_id']."' AND usr_id = '".$this->usr_id."'";
+ $sqlUserAnswerString = "SELECT grd_id FROM srv_data_grid".$this->db_table." WHERE spr_id = '".$rowSubGrid['spr_id']."' AND usr_id = '".$this->usr_id."' AND loop_id $loop_id";
+ }
+ elseif($rowSubGrid['tip'] == 16){
+ //$sqlUserAnswerString = "SELECT grd_id FROM srv_data_checkgrid".$this->db_table." WHERE spr_id = '".$rowSubGrid['spr_id']."' AND usr_id = '".$this->usr_id."'";
+ $sqlUserAnswerString ="SELECT grd_id FROM srv_data_checkgrid".$this->db_table." WHERE spr_id = '".$rowSubGrid['spr_id']."' AND usr_id = '".$this->usr_id."' AND loop_id $loop_id";
+ }
+ else{
+ //$sqlUserAnswerString = "SELECT grd_id, text FROM srv_data_textgrid".$this->db_table." WHERE spr_id = '".$rowSubGrid['spr_id']."' AND usr_id = '".$this->usr_id."'";
+ $sqlUserAnswerString = "SELECT grd_id, text FROM srv_data_textgrid".$this->db_table." WHERE spr_id = '".$rowSubGrid['spr_id']."' AND usr_id = '".$this->usr_id."' AND loop_id $loop_id";
+ }
+ $sqlUserAnswer = sisplet_query($sqlUserAnswerString);
+ if(mysqli_num_rows($sqlUserAnswer) > 0){
+ $isEmpty = false;
+ break;
+ }
+ }
+ break;
+
+ case 5: //nagovor
+ // Ce je nagovor v loopu, ga prikazemo
+ if($this->loop_id != null)
+ $isEmpty = false;
+ break;
+
+ case 26: //lokacija
+ //$sqlUserAnswerString ="SELECT lat, lng, address, text FROM srv_data_map WHERE spr_id='".$row['id']."' AND usr_id='".$this->usr_id."' ";
+ $sqlUserAnswerString ="SELECT lat, lng, address, text FROM srv_data_map WHERE spr_id='".$row['id']."' AND usr_id='".$this->usr_id."' AND loop_id $loop_id";
+ $sqlUserAnswer = sisplet_query($sqlUserAnswerString);
+ if(mysqli_num_rows($sqlUserAnswer) > 0)
+ $isEmpty = false;
+ break;
+
+ case 27: //heatmap
+ //$sqlUserAnswerString ="SELECT lat, lng, address, text FROM srv_data_heatmap WHERE spr_id='".$row['id']."' AND usr_id='".$this->usr_id."' ";
+ $sqlUserAnswerString ="SELECT lat, lng, address, text FROM srv_data_heatmap WHERE spr_id='".$row['id']."' AND usr_id='".$this->usr_id."' AND loop_id $loop_id";
+ $sqlUserAnswer = sisplet_query($sqlUserAnswerString);
+ if(mysqli_num_rows($sqlUserAnswer) > 0)
+ $isEmpty = false;
+ break;
+
+ default:
+ $isEmpty = false;
+ //$isEmpty = true;
+ break;
+ }
+ //echo "isEmpty na koncu: ".$isEmpty."</br>";
+ if($isEmpty == true){
+ return false;
+ }
+ }
+ return true;
+ }
+
+
+ function displayIf($if=null){
+ global $lang;
+ //echo "</br> displayIf funkcija </br> ";
+ $sql_if_string = "SELECT * FROM srv_if WHERE id = '$if'";
+ //echo "sql_if_string: ".$sql_if_string." </br>";
+ //$sql_if = sisplet_query("SELECT * FROM srv_if WHERE id = '$if'");
+ $sql_if = sisplet_query($sql_if_string);
+ $row_if = mysqli_fetch_array($sql_if);
+ //echo "tip: ".$row_if['tip']." </br>";
+ // Blok
+ if($row_if['tip'] == 1)
+ $output = strtoupper($lang['srv_block']).' ';
+ // Loop
+ elseif($row_if['tip'] == 2)
+ $output = strtoupper($lang['srv_loop']).' ';
+ // IF
+ else
+ $output = 'IF ';
+
+ $sql_if = sisplet_query("SELECT * FROM srv_if WHERE id = '$if'");
+ $row_if = mysqli_fetch_array($sql_if);
+ $output .= '('.$row_if['number'].') ';
+
+ $sql = Cache::srv_condition($if);
+
+ $bracket = 0;
+ $i = 0;
+ while ($row = mysqli_fetch_array($sql)) {
+
+ if ($i++ != 0)
+ if ($row['conjunction'] == 0)
+ $output .= ' and ';
+ else
+ $output .= ' or ';
+
+ if ($row['negation'] == 1)
+ $output .= ' NOT ';
+
+ for ($i=1; $i<=$row['left_bracket']; $i++)
+ $output .= ' ( ';
+
+ // obicajne spremenljivke
+ if ($row['spr_id'] > 0) {
+
+ $row2 = Cache::srv_spremenljivka($row['spr_id']);
+
+ // obicne spremenljivke
+ if ($row['vre_id'] == 0) {
+ $row1 = Cache::srv_spremenljivka($row['spr_id']);
+ // multigrid
+ } elseif ($row['vre_id'] > 0) {
+ $sql1 = sisplet_query("SELECT * FROM srv_vrednost WHERE id = '$row[vre_id]'");
+ $row1 = mysqli_fetch_array($sql1);
+ } else
+ $row1 = null;
+
+ $output .= $row1['variable'];
+
+ // radio, checkbox, dropdown in multigrid
+ if (($row2['tip'] <= 3 || $row2['tip'] == 6) && ($row['spr_id'] || $row['vre_id'])) {
+
+ if ($row['operator'] == 0)
+ $output .= ' = ';
+ else
+ $output .= ' != ';
+
+ $output .= '[';
+
+ // obicne spremenljivke
+ if ($row['vre_id'] == 0) {
+ $sql2 = sisplet_query("SELECT * FROM srv_condition_vre c, srv_vrednost v WHERE cond_id='$row[id]' AND c.vre_id=v.id");
+
+ $j = 0;
+ while ($row2 = mysqli_fetch_array($sql2)) {
+ if ($j++ != 0) $output .= ', ';
+ $output .= $row2['variable'];
+ }
+ // multigrid
+ } elseif ($row['vre_id'] > 0) {
+ $sql2 = sisplet_query("SELECT g.* FROM srv_condition_grid c, srv_grid g WHERE c.cond_id='$row[id]' AND c.grd_id=g.id AND g.spr_id='$row[spr_id]'");
+
+ $j = 0;
+ while ($row2 = mysqli_fetch_array($sql2)) {
+ if ($j++ != 0) $output .= ', ';
+ $output .= $row2['variable'];
+ }
+ }
+
+ $output .= ']';
+
+ // textbox in nubmer mata drugacne pogoje in opcije
+ } elseif ($row2['tip'] == 4 || $row2['tip'] == 21 || $row2['tip'] == 7 || $row2['tip'] == 22) {
+
+ if ($row['operator'] == 0)
+ $output .= ' = ';
+ elseif ($row['operator'] == 1)
+ $output .= ' <> ';
+ elseif ($row['operator'] == 2)
+ $output .= ' < ';
+ elseif ($row['operator'] == 3)
+ $output .= ' <= ';
+ elseif ($row['operator'] == 4)
+ $output .= ' > ';
+ elseif ($row['operator'] == 5)
+ $output .= ' >= ';
+
+ $output .= '\''.$row['text'].'\'';
+
+ }
+
+ // recnum
+ } elseif ($row['spr_id'] == -1) {
+
+ $output .= 'mod(recnum, '.$row['modul'].') = '.$row['ostanek'];
+
+ }
+
+ for ($i=1; $i<=$row['right_bracket']; $i++)
+ $output .= ' ) ';
+ }
+
+ if ($row_if['label'] != '') {
+ $output .= ' (';
+ $output .= ' '.$row_if['label'].' ';
+ $output .= ') ';
+ }
+ echo $output."</br>";
+/* $this->pdf->SetTextColor(0,0,150);
+ $this->pdf->setFont('','B',$this->font);
+ $this->pdf->MultiCell(90, 1, $this->encodeText($output),0,'L',0,1,0,0);
+ $this->pdf->SetTextColor(0,0,0);
+ $this->pdf->setFont('','',$this->font); */
+
+ return $output;
+ }
+
+ /* poisce, ce ima podani element parenta, ki je loop
+ *
+ */
+ function find_parent_loop ($element_spr=null, $element_if=0) {
+
+ //$sql = sisplet_query("SELECT parent FROM srv_branching WHERE element_spr = '$element_spr' AND element_if = '$element_if' AND ank_id='".$this->anketa['id']."'");
+ $sql = sisplet_query("SELECT parent FROM srv_branching WHERE element_spr = '$element_spr' AND element_if = '$element_if' AND ank_id='".$this->anketa."'");
+ if (!$sql) echo mysqli_error($GLOBALS['connect_db']);
+ $row = mysqli_fetch_array($sql);
+
+ if ($row['parent'] == 0) return 0;
+
+ $sql = sisplet_query("SELECT id FROM srv_if WHERE id = '$row[parent]' AND tip = '2'");
+ if (!$sql) echo mysqli_error($GLOBALS['connect_db']);
+ if (mysqli_num_rows($sql) > 0)
+ return $row['parent'];
+ else
+ return $this->find_parent_loop(0, $row['parent']);
+
+ }
+
+ /**
+ * poisce naslednjo vre_id v loopu
+ *
+ */
+ function findNextLoopId ($if_id=0) {
+ if ($if_id == 0) {
+ $sql = sisplet_query("SELECT * FROM srv_loop_data WHERE id='$this->loop_id'");
+ $row = mysqli_fetch_array($sql);
+ $if_id = $row['if_id'];
+ $loop_id = $this->loop_id;
+ } else{
+ $loop_id = 0;
+ }
+
+ $sql = sisplet_query("SELECT * FROM srv_loop WHERE if_id = '$if_id'");
+ $row = mysqli_fetch_array($sql);
+ $spr_id = $row['spr_id'];
+ $max = $row['max'];
+
+ $spr = Cache::srv_spremenljivka($spr_id);
+ //echo "spr tip: ".$spr['tip']."</br>";
+ if ($spr['tip'] == 2 || $spr['tip'] == 3 || $spr['tip'] == 9) {
+ $data_vrednost = array();
+ if($spr['tip'] == 9){
+ if($this->usr_id){
+ $sql1String = "SELECT vre_id FROM srv_data_text".$this->db_table." WHERE spr_id='$spr_id' AND usr_id='".$this->usr_id."' ";
+ }else{
+ $sql1String = "SELECT vre_id FROM srv_data_text".$this->db_table." WHERE spr_id='$spr_id' ";
+ }
+ }
+ else{
+ if($this->usr_id){
+ $sql1String = "SELECT vre_id FROM srv_data_vrednost".$this->db_table." WHERE spr_id='$spr_id' AND usr_id='".$this->usr_id."'";
+ }else{
+ $sql1String = "SELECT vre_id FROM srv_data_vrednost".$this->db_table." WHERE spr_id='$spr_id' ";
+ }
+ }
+ //echo $sql1String;
+ $sql1 = sisplet_query($sql1String);
+ while ($row1 = mysqli_fetch_array($sql1)) {
+ $data_vrednost[$row1['vre_id']] = 1;
+ }
+
+ $vre_id = '';
+ $i = 1;
+ //$sql = sisplet_query("SELECT * FROM srv_loop_vre WHERE if_id='$if_id'");
+
+ $sql = sisplet_query("SELECT * FROM srv_loop_vre lv, srv_vrednost v WHERE lv.if_id='$if_id' AND lv.vre_id=v.id ORDER BY v.vrstni_red ASC");
+ while ($row = mysqli_fetch_array($sql)) {
+
+ if ($row['tip'] == 0) { // izbran
+ if ( isset($data_vrednost[$row['vre_id']]) ) {
+ $vre_id .= ', '.$row['vre_id'];
+ $i++;
+ }
+ } elseif ($row['tip'] == 1) { // ni izbran
+ if ( !isset($data_vrednost[$row['vre_id']]) ) {
+ $vre_id .= ', '.$row['vre_id'];
+ $i++;
+ }
+ } elseif ($row['tip'] == 2) { // vedno
+ $vre_id .= ', '.$row['vre_id'];
+ $i++;
+ } // nikoli nimamo sploh v bazi, zato ni potrebno nic, ker se nikoli ne prikaze
+
+ if ($i > $max && $max>0) break;
+ }
+
+ $vre_id = substr($vre_id, 2);
+
+ if ($vre_id == '') return null;
+
+ $sql = sisplet_query("SELECT l.* FROM srv_loop_data l, srv_vrednost v WHERE l.if_id='$if_id' AND l.id > '$loop_id' AND l.vre_id IN ($vre_id) AND l.vre_id=v.id ORDER BY l.id ASC");
+ if (!$sql) { echo 'err56545'.mysqli_error($GLOBALS['connect_db']); die();}
+ $row = mysqli_fetch_array($sql);
+
+ if (mysqli_num_rows($sql) > 0)
+ return $row['id'];
+ else
+ return null;
+
+ // number
+ } elseif ($spr['tip'] == 7) {
+
+ //$sql1 = sisplet_query("SELECT text FROM srv_data_text".$this->db_table." WHERE spr_id='$spr_id' AND usr_id='".$this->getUserId()."'");
+ $sql1 = sisplet_query("SELECT text FROM srv_data_text".$this->db_table." WHERE spr_id='$spr_id' AND usr_id='".$this->user_id."'");
+ $row1 = mysqli_fetch_array($sql1);
+
+ $num = (int)$row1['text'];
+ $sql2 = sisplet_query("SELECT * FROM srv_loop_data WHERE if_id='$if_id' AND id <= '$loop_id'");
+ if (mysqli_num_rows($sql2) >= $num || (mysqli_num_rows($sql2) >= $max && $max>0))
+ return null;
+
+ $sql = sisplet_query("SELECT * FROM srv_loop_data WHERE if_id='$if_id' AND id > '$loop_id'");
+ $row = mysqli_fetch_array($sql);
+
+ if (mysqli_num_rows($sql) > 0)
+ return $row['id'];
+ else
+ return null;
+
+ }
+ }
+
+ /**
+ * @desc V podanem stringu poisce spremenljivke in jih spajpa z vrednostmi
+ */
+ function dataPiping ($text='') {
+ Common::getInstance()->Init($this->anketa);
+ echo Common::getInstance()->dataPiping($text, $this->usr_id, $this->loop_id)."</br>";
+ return Common::getInstance()->dataPiping($text, $this->usr_id, $this->loop_id);
+ }
+
+ function writeXmlAttr4Element($xml=null, $attribute=null, $element=null, $writeAttribute=0){
+ $this->xml = $xml;
+ if($writeAttribute){
+ xmlwriter_write_attribute($this->xml, $attribute, $element);
+ }else{
+ xmlwriter_start_attribute($this->xml, $attribute);
+ }
+ xmlwriter_text($this->xml, $element);
+ xmlwriter_end_attribute($this->xml);
+ }
+
+ function writeXmlElement($xml=null, $text=null, $element=null){
+ $this->xml = $xml;
+ xmlwriter_start_element($this->xml, $element);
+ xmlwriter_text($this->xml, $text);
+ xmlwriter_end_element($this->xml);
+ }
+} \ No newline at end of file