588 lines
22 KiB
PHP
588 lines
22 KiB
PHP
<?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) )
|
|
{
|
|
$this->db_table = SurveyInfo::getInstance()->getSurveyArchiveDBString();
|
|
}
|
|
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);
|
|
}
|
|
} |