false); // za shrambo parametrov in sporocil var $rtf; var $db_table = ''; var $type = 0; // nacin izpisa vprasanj - kratek -> 0, dolg -> 1, 2 -> zelo kratek var $pageBreak = 0; // vsak respondent na svoji strani var $showIf = 0; // izpis if-ov var $font = 10; // velikost pisave var $numbering = 0; // ostevillcevanje vprasanj var $showRecnum = 1; // prikaz recnuma var $skipEmpty = 0; // izpusti vprasanja brez odgovora var $skipEmptySub = 0; // izpusti podvprasanja brez odgovora var $landscape = 0; // landscape izpis var $loop_id = null; // id trenutnega loopa ce jih imamo var $usr_type = null; // tip userja (null->iz vmesnika, author->avtor iz maila, respondent->respondent iz maila, other->other iz maila) var $usr_id = null; // id userja ki je odgovarjal (na katerega so vezani podatki) var $resp_id = null; // id userja na katerega so vezane nastavitve ankete (filtriranje spremenljivk...) var $admin_type = -1; // tip userja ki odpira pdf (posebej nastavimo ker global admin_type ne dela iz mailov) /** * @desc konstruktor */ function __construct ($anketa = null, $usr_type = null, $usr_id = null) { global $site_path; global $global_user_id; // preverimo ali imamo stevilko ankete if ( is_numeric($anketa) ) { $this->anketa['id'] = $anketa; $this->usr_id = $_GET['usr_id']; // Ce prihajamo iz maila imamo nastavljen usr_type in usr_id if($usr_type != null && $usr_id != null){ $this->usr_type = $usr_type; //$this->resp_id = $usr_id; // Ajda hoce da ce dobi po mailu pdf mora bit isti kot ga dobi respondent $this->resp_id = $_GET['usr_id']; } // Drugace prihajamo normalno iz podatkov (usr_id je avtorjev -> $global_user_id) else{ $this->resp_id = $global_user_id; } // Nastavimo admin type $sqlU = sisplet_query("SELECT type FROM users WHERE id='".$this->resp_id."'"); if($rowU = mysqli_fetch_array($sqlU)) $this->admin_type = $rowU['type']; // Po novem imamo globalne nastavitve SurveySetting::getInstance()->Init($anketa); $this->type = (int)SurveySetting::getInstance()->getSurveyMiscSetting('export_data_type'); $this->font = (int)SurveySetting::getInstance()->getSurveyMiscSetting('export_data_font_size'); $this->showIf = (int)SurveySetting::getInstance()->getSurveyMiscSetting('export_data_show_if'); $this->numbering = (int)SurveySetting::getInstance()->getSurveyMiscSetting('export_data_numbering'); $this->pageBreak = (int)SurveySetting::getInstance()->getSurveyMiscSetting('export_data_PB'); $this->showRecnum = (int)SurveySetting::getInstance()->getSurveyMiscSetting('export_data_show_recnum'); $this->skipEmpty = (int)SurveySetting::getInstance()->getSurveyMiscSetting('export_data_skip_empty'); $this->skipEmptySub = (int)SurveySetting::getInstance()->getSurveyMiscSetting('export_data_skip_empty_sub'); $this->landscape = (int)SurveySetting::getInstance()->getSurveyMiscSetting('export_data_landscape'); SurveyStatusProfiles::Init($anketa); // create new RTF document $orientation = ($this->landscape == 1) ? true : false; $this->rtf = new enka_RTF($orientation); } else { $this->pi['msg'] = "Anketa ni izbrana!"; $this->pi['canCreate'] = false; return false; } if ( SurveyInfo::getInstance()->SurveyInit($this->anketa['id']) && $this->init()) { SurveyUserSetting::getInstance()->Init($this->anketa['id'], $global_user_id); $this->db_table = SurveyInfo::getInstance()->getSurveyArchiveDBString(); } else return false; // ce smo prisli do tu je vse ok $this->pi['canCreate'] = true; return true; } function getAnketa() { return $this->anketa['id']; } function checkCreate() { return $this->pi['canCreate']; } function getFile($fileName) { //Close and output rtf document // $this->rtf->Output($fileName, 'I'); $this->rtf->display($fileName = 'anketa'.time().'.rtf',true); } function init() { global $lang; $orientation = ($this->landscape == 1) ? true : false; // dodamo avtorja in naslov $this->rtf->WriteTitle(); if($this->getUserId() && $this->showRecnum == 1){ $sqlu = sisplet_query("SELECT * FROM srv_user WHERE id = '".$this->getUserId()."'"); $rowu = mysqli_fetch_array($sqlu); $rightTitle = SurveyInfo::getInstance()->getSurveyAkronim().' (recnum '.$rowu['recnum'].') '; $this->rtf->WriteHeader($this->enkaEncode($rightTitle), 'right', $orientation); } else $this->rtf->WriteHeader($this->enkaEncode(SurveyInfo::getInstance()->getSurveyAkronim()), 'right', $orientation); $this->rtf->WriteFooter($lang['page']." {PAGE} / {NUMPAGES}", 'right', $orientation); $this->rtf->set_default_font(FNT_TIMES, $this->font); return true; } function createRtf() { // Izpis vseh odgovorov (vsi respondenti -> max 300) if(!$this->getUserId()) $this->outputAllResults(); // Izpis vprasalnika oz odgovorov enega respondenta else $this->outputSurvey(); } // Izpis vprasalnika z odgovori function outputSurvey(){ global $lang; $rowA = SurveyInfo::getInstance()->getSurveyRow(); // izpišemo prvo stran if (false) $this->createFrontPage(); // Izpisemo vprasalnik // ce obstaja intro izpisemo intro - pri izpisu vprasalnika brez odgovorov (ce smo na prvi strani moramo biti v razsirjenem nacinu) /*if(($rowA['expanded'] == 1 && $this->allResults == 3) || (!$this->getUserId() && $this->allResults == 0)){ if ( SurveyInfo::getInstance()->getSurveyShowIntro() ) { $intro = (SurveyInfo::getInstance()->getSurveyIntro() == '') ? $lang['srv_intro'] : SurveyInfo::getInstance()->getSurveyIntro(); // ce obstaja intro izpisemo intro $this->rtf->add_text($intro); $this->rtf->new_line(3); } }*/ // filtriramo spremenljivke glede na profil - SAMO CE NE PRIHAJAMO IZ MAILA! $tmp_svp_pv = array(); if($this->usr_type == null){ SurveyVariablesProfiles :: Init($this->anketa['id'], $this->resp_id, true, false); $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, '_')); } } if ( $this->getGrupa() ) { $sqlGrupeString = "SELECT id FROM srv_grupa WHERE ank_id='".$this->anketa['id']."' AND id = '".$this->getGrupa()."' ORDER BY vrstni_red"; } else { $sqlGrupeString = "SELECT id FROM srv_grupa WHERE ank_id='".$this->anketa['id']."' ORDER BY vrstni_red"; } $sqlGrupe = sisplet_query($sqlGrupeString); 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']); if ($if_id > 0){ $sql1 = sisplet_query("SELECT * FROM srv_loop WHERE if_id = '$if_id'"); $row1 = mysqli_fetch_array($sql1); $this->loop_id = $this->findNextLoopId($row1['if_id']); $if = Cache::srv_if($if_id); $loop_title = $if['label']; // gremo cez vse spremenljivke v trenutnem loopu while($this->loop_id != null){ // Izrisemo naslov loopa $this->rtf->add_text($this->rtf->color(9).$this->rtf->bold(1).$this->enkaEncode($this->dataPiping($loop_title)).$this->rtf->bold(0).$this->rtf->color(0)); $this->rtf->new_line(1); $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']; if ( $this->checkSpremenljivka ($spremenljivka) /*|| $this->showIf == 1*/ ) { // lahko izrišemo spremenljivke //nastavimo velikost pisave $this->rtf->MyRTF .= $this->rtf->_font_size($this->font * 2); // izpis vprasalnika z rezultati // Ce imamo kombinirano tabelo pogledamo ce prikazujemo katero od podtabel if($rowSpremenljivke['tip'] == 24){ $subGrids = array(); $showGridMultiple = false; // 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(in_array($rowSubGrid['spr_id'],$tmp_svp_pv) || count($tmp_svp_pv) == 0){ $showGridMultiple = true; break; } } } // ce je nastavljen profil s filtriranimi spremenljivkami if(in_array($spremenljivka,$tmp_svp_pv) || count($tmp_svp_pv) == 0 || ($rowSpremenljivke['tip'] == 24 && $showGridMultiple) || $rowSpremenljivke['tip'] == 5){ // NAVADEN IZPIS rezultatov spremenljivke - kratek samo pri radio, checkbox, multiradio, multicheckbox, besedilo if( $this->type == 0 && in_array($rowSpremenljivke['tip'], array(1,2,3,6,16)) ){ if($rowSpremenljivke['tip'] > 3) $this->outputVprasanje($rowSpremenljivke); $this->outputSpremenljivkeValues($rowSpremenljivke); } // KRATEK IZPIS rezultatov spremenljivke elseif($this->type == 2 && $rowSpremenljivke['tip'] != 24){ $this->outputSpremenljivkeValues($rowSpremenljivke); } // DOLG IZPIS rezultatov else{ $this->outputVprasanje($rowSpremenljivke); $this->outputSpremenljivke($rowSpremenljivke); } $this->rtf->new_line(1); } } } $this->loop_id = $this->findNextLoopId(); } } // Navadne spremenljivke ki niso v loopu else{ $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']; if ( $this->checkSpremenljivka ($spremenljivka) /*|| $this->showIf == 1*/ ) { // lahko izrišemo spremenljivke //nastavimo velikost pisave $this->rtf->MyRTF .= $this->rtf->_font_size($this->font * 2); // izpis vprasalnika z rezultati // Ce imamo kombinirano tabelo pogledamo ce prikazujemo katero od podtabel if($rowSpremenljivke['tip'] == 24){ $subGrids = array(); $showGridMultiple = false; // 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(in_array($rowSubGrid['spr_id'],$tmp_svp_pv) || count($tmp_svp_pv) == 0){ $showGridMultiple = true; break; } } } // ce je nastavljen profil s filtriranimi spremenljivkami if(in_array($spremenljivka,$tmp_svp_pv) || count($tmp_svp_pv) == 0 || $rowSpremenljivke['tip'] == 5 || ($rowSpremenljivke['tip'] == 24 && $showGridMultiple)){ // NAVADEN IZPIS rezultatov spremenljivke - kratek samo pri radio, checkbox, multiradio, multicheckbox, besedilo if( $this->type == 0 && in_array($rowSpremenljivke['tip'], array(1,2,3,6,16)) ){ if($rowSpremenljivke['tip'] > 3) $this->outputVprasanje($rowSpremenljivke); $this->outputSpremenljivkeValues($rowSpremenljivke); } // KRATEK IZPIS rezultatov spremenljivke elseif($this->type == 2 && $rowSpremenljivke['tip'] != 24){ $this->outputSpremenljivkeValues($rowSpremenljivke); } // DOLG IZPIS rezultatov else{ $this->outputVprasanje($rowSpremenljivke); $this->outputSpremenljivke($rowSpremenljivke); } $this->rtf->new_line(1); } } } } } // če izpisujemo grupo, ne izpisujemo zakljucka if ( !$this->getGrupa() ){ if ( SurveyInfo::getInstance()->getSurveyShowConcl() && SurveyInfo::getInstance()->getSurveyConcl() ) { // ce obstaja footer izpisemo footer $this->rtf->add_text(SurveyInfo::getInstance()->getSurveyConcl()); } } } // Izpis vseh userjev, ki so odgovorili function outputAllResults(){ global $lang; //loop cez vse userje, ki so odgovorili //$izbranStatusProfile = SurveyUserSetting :: getInstance()->getSettings('default_status_profile_export'); $izbranStatusProfile = SurveyStatusProfiles :: getStatusAsQueryString(); $sqlu = sisplet_query("SELECT * FROM srv_user WHERE ank_id = '".$this->anketa['id']."' ".$izbranStatusProfile." AND deleted='0' AND preview='0' ORDER BY recnum"); //ce imamo vec kot 300 anketirancev ne izpisemo $count = mysqli_num_rows($sqlu); if( $count > 300 ){ $this->rtf->set_font_size(14); $this->rtf->add_text($this->rtf->bold(1).'NAPAKA!'.$this->rtf->bold(0)); $this->rtf->new_line(2); $this->rtf->add_text($this->rtf->bold(1).'Izpis ni možen zaradi prevelikega števila odgovorov ('.$count.')'.$this->rtf->bold(0)); } else{ // izpišemo prvo stran $this->createFrontPage(); if($this->pageBreak == 0) $this->rtf->new_page(); while( $rowu = mysqli_fetch_array($sqlu) ){ //izpis statusa switch($rowu['last_status']){ case '0': $status = $lang['srv_userstatus_0']; break; case '1': $status = $lang['srv_userstatus_1']; break; case '2': $status = $lang['srv_userstatus_2']; break; case '3': $status = $lang['srv_userstatus_3']; break; case '4': $status = $lang['srv_userstatus_4']; break; case '5': $status = $lang['srv_userstatus_5']; break; case '6': $status = $lang['srv_userstatus_6']; $status .= ($rowu['lurker'] == '1') ? ' - lurker' : ''; break; } if($this->pageBreak == 1) $this->rtf->new_page(); $this->rtf->set_font_size(14); if($this->showRecnum == 1) $this->rtf->add_text($this->rtf->bold(1).$this->enkaEncode('Recnum '.$rowu['recnum'].' (status '.$rowu['last_status'].' - '.$status.')').$this->rtf->bold(0)); else $this->rtf->add_text($this->rtf->bold(1).$this->enkaEncode('Status '.$rowu['last_status'].' - '.$status).$this->rtf->bold(0)); $this->rtf->new_line(2); //izpis posameznega userja $this->usr_id = $rowu['id']; $this->outputUser(); } } } function outputVprasanje($spremenljivke) { //nastavimo velikost pisave $this->rtf->MyRTF .= $this->rtf->_font_size($this->font * 2); //izpis if-ov pri vprasanju if($this->showIf == 1){ /*$sqlIf = sisplet_query("SELECT * FROM srv_branching WHERE element_spr='$spremenljivke[id]'"); $rowIf = mysqli_fetch_array($sqlIf); if ($rowIf['parent'] > 0){ $rowb = Cache::srv_if($rowIf['parent']); if ($rowb['tip'] == 0){ $this->displayIf($rowIf['parent']); $this->rtf->new_line(1); } }*/ // Po novem izpisemo pred vsakim vprasanjem vse ife znotraj katerih se nahaja $b = new Branching($this->anketa['id']); $parents = $b->get_parents($spremenljivke['id']); $parents = explode('p_', $parents); foreach ($parents AS $key => $val) { if ( is_numeric(trim($val)) ) { $parents[$key] = (int)$val; } else { unset($parents[$key]); } } foreach ($parents AS $if) { $this->displayIf($if); $this->rtf->new_line(1); } } // stevilcenje vprasanj $numberingText = ($this->numbering == 1) ? $spremenljivke['variable'].' - ' : ''; $this->rtf->add_text($numberingText . $this->enkaEncode($this->dataPiping($spremenljivke['naslov']))); if($spremenljivke['tip'] != 5) $this->rtf->new_line(1); } function outputSpremenljivke($spremenljivke){ global $site_url; // razsiritev ce imamo landscape postavitev $expand_width = $this->landscape == 1 ? 1.5 : 1; // Ce je spremenljivka v loopu $loop_id = $this->loop_id == null ? " IS NULL" : " = '".$this->loop_id."'"; switch ( $spremenljivke['tip'] ) { case 1: //radio case 2: //check case 3: //select -> radio // če imamo vnose, pogledamo kaj je odgovoril uporabnik if ($this->getUserId()) { $sqlUserAnswer = sisplet_query("SELECT vre_id FROM srv_data_vrednost".$this->db_table." WHERE spr_id='$spremenljivke[id]' AND usr_id='".$this->getUserId()."' AND loop_id $loop_id"); while ($rowAnswers = mysqli_fetch_assoc($sqlUserAnswer)) $userAnswer[$rowAnswers['vre_id']] = $rowAnswers['vre_id']; } $this->rtf->new_line(1); $list = array(); // iz baze preberemo vse moznosti $sqlVrednosti = sisplet_query("SELECT id, naslov, naslov2, variable FROM srv_vrednost WHERE spr_id='".$spremenljivke['id']."' ORDER BY vrstni_red"); //ce imamo prikaz v vec stoplcih $spremenljivkaParams = new enkaParameters($spremenljivke['params']); $stolpci = ($spremenljivkaParams->get('stolpci') ? $spremenljivkaParams->get('stolpci') : 1); $checkbox_limit = ($spremenljivkaParams->get('checkbox_limit') ? $spremenljivkaParams->get('checkbox_limit') : 0); if ($stolpci > 1 && $spremenljivke['orientation']==1) { //echo '
'; $kategorij = mysqli_num_rows($sqlVrednosti); $v_stolpcu = ceil($kategorij / $stolpci); $width = round(10000*$expand_width / $stolpci); $this->rtf->MyRTF .= "{\par"; $tableHeader = '\trowd\trql\trrh400'; } $count = 0; while ($rowVrednost = mysqli_fetch_assoc($sqlVrednosti)) { //popravimo lokacijo ce imamo postavitev v vec stolpcih if ( ($stolpci > 1) && ($spremenljivke['orientation']==1) && ($count % $v_stolpcu == 0) ) { $yPos = floor($count / $v_stolpcu) + 1; $table .= '\clvertalc\cellx'.( $yPos * $width ); $tableEnd .= '\pard\intbl '; } $stringTitle = $this->enkaEncode( ( $rowVrednost['naslov'] ) ? $rowVrednost['naslov'] : ( ( $rowVrednost['naslov2'] ) ? $rowVrednost['naslov2'] : $rowVrednost['variable'] ) ); $list[] = $stringTitle; if( isset($userAnswer[$rowVrednost['id']]) ){ if(($stolpci > 1) && ($spremenljivke['orientation']==1)) $tableEnd .= $this->rtf->ImageToString( ( ( $spremenljivke['tip'] == 2 ) ? "checkbox2.png" : "radio2.png"), "15"); else $this->rtf->MyRTF .= $this->rtf->ImageToString( ( ( $spremenljivke['tip'] == 2 ) ? "checkbox2.png" : "radio2.png"), "15"); } else{ if(($stolpci > 1) && ($spremenljivke['orientation']==1)) $tableEnd .= $this->rtf->ImageToString( ( ( $spremenljivke['tip'] == 2 ) ? "checkbox.png" : "radio.png"), "15"); else $this->rtf->MyRTF .= $this->rtf->ImageToString( ( ( $spremenljivke['tip'] == 2 ) ? "checkbox.png" : "radio.png"), "15"); } if(($stolpci > 1) && ($spremenljivke['orientation']==1)) $tableEnd .= ' '.$stringTitle.'\\line\n'; else{ $this->rtf->add_text(" ".$stringTitle); $this->rtf->new_line(1); } $count++; if ( ($stolpci > 1) && ($spremenljivke['orientation']==1) && ($count % $v_stolpcu == 0 || $count == $kategorij) ) { $tableEnd .= '\qc\cell'; } } if ($stolpci > 1 && $spremenljivke['orientation']==1) { $tableEnd .= '\pard\intbl\row'; $this->rtf->MyRTF .= $this->rtf->enkaEncode($tableHeader.$table.$tableEnd); $this->rtf->MyRTF .= "}"; } $this->rtf->new_line(1); break; case 6: // multigrid case 16: // multicheckbox case 19: // multitext case 20: // multinumber //izris dvojnega multigrida if($spremenljivke['enota'] == 3){ $this->displayDoubleGrid($spremenljivke); break; } $this->rtf->MyRTF .= "{\\par\\fs22"; $sqlStVrednosti = sisplet_query("SELECT count(*) AS count FROM srv_grid WHERE spr_id='".$spremenljivke['id']."' ORDER BY id"); $rowStVrednost = mysqli_fetch_row($sqlStVrednosti); $defw_full = 10500*$expand_width; if($rowStVrednost[0] < 6 && ($spremenljivke['tip'] != 6 || $spremenljivke['enota'] != 1)){ $defw_fc = 4300*$expand_width; // first cell width } else{ $defw_fc = 2000*$expand_width; // first cell width } $kolon = $rowStVrednost[0]+1; // Ce imamo diferencial if($spremenljivke['tip'] == 6 && $spremenljivke['enota'] == 1) $w_oc = ( $defw_full - (2*$defw_fc) ) / $kolon; else $w_oc = ( $defw_full - $defw_fc ) / $kolon; $defw_max = floor($w_oc); $tableHeader_base = "\\trowd\\trhdr\\trgaph20\\trleft0\\trrh162"; $tableHeader_width = "\\cellx".$defw_fc; $tableHeader_title = "\\pard\\intbl\\qc{}\\cell"; $tableHeader_finish = "\\pard\\intbl\\row"; $sqlVsehVrednsti = sisplet_query("SELECT naslov, id, variable FROM srv_grid WHERE spr_id='".$spremenljivke['id']."' ORDER BY vrstni_red"); $rowCnt = 0; while ($rowVsehVrednosti = mysqli_fetch_assoc($sqlVsehVrednsti)) { $rowCnt++; $tableHeader_width .= "\\cellx". ( $rowCnt * $defw_max + $defw_fc ); // če ni naslova vzamemo variable $stringHeader_title = $this->enkaEncode( ( $rowVsehVrednosti['naslov'] ) ? $rowVsehVrednosti['naslov'] : $rowVsehVrednosti['variable'] ); $tableHeader_title .= "\\pard\\intbl\\qc{".$this->enkaEncode($stringHeader_title)."}\\cell"; } // izpišemo header celice $this->rtf->MyRTF .= $this->rtf->enkaEncode($tableHeader_base.$tableHeader_width.$tableHeader_title.$tableHeader_finish); // loopamo skozi vrstice in pripravimo podatke za tabelo z radii $row_count = 1; $sqlVrednosti = sisplet_query("SELECT * FROM srv_vrednost WHERE spr_id='".$spremenljivke['id']."' ORDER BY vrstni_red"); while ($rowVrednost = mysqli_fetch_assoc($sqlVrednosti)) { $skipRow = false; // barva vrstice $row_color = ($row_count%2 == 1) ? '\\clcbpat18' : ''; // Ce imamo nastavljeno preskakovanje podvprasanj preverimo ce je kaksen odgovor v vrstici if($this->skipEmptySub == 1){ $skipRow = true; if($spremenljivke['tip'] == 6) $sqlUserAnswer = sisplet_query("SELECT grd_id FROM srv_data_grid".$this->db_table." WHERE spr_id = '".$rowVrednost['spr_id']."' AND usr_id = '".$this->getUserId()."' AND vre_id = '".$rowVrednost['id']."' AND loop_id $loop_id"); elseif($spremenljivke['tip'] == 16) $sqlUserAnswer = sisplet_query("SELECT grd_id FROM srv_data_checkgrid".$this->db_table." WHERE spr_id = '".$rowVrednost['spr_id']."' AND usr_id = '".$this->getUserId()."' AND vre_id = '".$rowVrednost['id']."' AND loop_id $loop_id"); else $sqlUserAnswer = sisplet_query("SELECT grd_id, text FROM srv_data_textgrid".$this->db_table." WHERE spr_id = '".$rowVrednost['spr_id']."' AND usr_id = '".$this->getUserId()."' AND vre_id = '".$rowVrednost['id']."' AND loop_id $loop_id"); if(mysqli_num_rows($sqlUserAnswer) > 0) $skipRow = false; } if($skipRow == false){ $i=1; // če ni naslova vzamemo naslov2, če ne pa variable $stringCell_title = $this->enkaEncode( ( $rowVrednost['naslov'] ) ? $rowVrednost['naslov'] : ( ( $rowVrednost['naslov2'] ) ? $rowVrednost['naslov2'] : $rowVrednost['variable'] ) ); $tableHeader_base = "\\trowd\\trgaph12\\trleft0\\trrh262"; $tableHeader_width = $row_color."\\cellx".$defw_fc; $tableHeader_title = "\\pard\\intbl\\ql\cf0 ".$this->enkaEncode($stringCell_title)."\\cf0\\cell"; $tableHeader_finish = "\\pard\\intbl\\row"; $sqlVsehVrednsti = sisplet_query("SELECT id FROM srv_grid WHERE spr_id='".$spremenljivke['id']."' ORDER BY vrstni_red"); while ($rowVsehVrednosti = mysqli_fetch_assoc($sqlVsehVrednsti)){ // poiščemo kaj je odgovoril uporabnik: if($spremenljivke['tip'] == 6) $sqlUserAnswer = sisplet_query("SELECT grd_id FROM srv_data_grid".$this->db_table." WHERE spr_id = '".$rowVrednost['spr_id']."' AND usr_id = '".$this->getUserId()."' AND vre_id = '".$rowVrednost['id']."' AND loop_id $loop_id"); elseif($spremenljivke['tip'] == 16) $sqlUserAnswer = sisplet_query("SELECT grd_id FROM srv_data_checkgrid".$this->db_table." WHERE spr_id = '".$rowVrednost['spr_id']."' AND usr_id = '".$this->getUserId()."' AND vre_id = '".$rowVrednost['id']."' AND grd_id = '".$rowVsehVrednosti['id']."' AND loop_id $loop_id"); else $sqlUserAnswer = sisplet_query("SELECT grd_id, text FROM srv_data_textgrid".$this->db_table." WHERE spr_id = '".$rowVrednost['spr_id']."' AND usr_id = '".$this->getUserId()."' AND vre_id = '".$rowVrednost['id']."' AND grd_id = '".$rowVsehVrednosti['id']."' AND loop_id $loop_id"); $userAnswer = mysqli_fetch_assoc($sqlUserAnswer); $full = ($rowVsehVrednosti['id'] == $userAnswer['grd_id']) ? true : false; if($spremenljivke['tip'] == 6){ $tableHeader_width .= "\clvertalc".$row_color."\\cellx". ( $i * $defw_max + $defw_fc ); if($full) $tableHeader_title .= "\\pard\\intbl\\qc{". $this->rtf->ImageToString("radio2.png", "15")."}\\cell"; else $tableHeader_title .= "\\pard\\intbl\\qc{". $this->rtf->ImageToString("radio.png", "15")."}\\cell"; } elseif($spremenljivke['tip'] == 16){ $tableHeader_width .= "\clvertalc".$row_color."\\cellx". ( $i * $defw_max + $defw_fc ); if($full) $tableHeader_title .= "\\pard\\intbl\\qc{". $this->rtf->ImageToString("checkbox2.png", "15")."}\\cell"; else $tableHeader_title .= "\\pard\\intbl\\qc{". $this->rtf->ImageToString("checkbox.png", "15")."}\\cell"; } else{ $tableHeader_width .= "\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10".$row_color."\\cellx". ( $i * $defw_max + $defw_fc ); $tableHeader_width .= '\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10'; $tableHeader_title .= '\\pard\\intbl'.$this->rtf->color(12).' '.$this->rtf->enkaEncode($userAnswer['text']).$this->rtf->color(0).'\qc{}\\cell'; } $i++; } // Ce imamo diferencial if($spremenljivke['tip'] == 6 && $spremenljivke['enota'] == 1){ $stringCell_title2 = $this->enkaEncode($rowVrednost['naslov2']); $tableHeader_width .= $row_color."\\cellx".( ($i-1) * $defw_max + 2*$defw_fc ); $tableHeader_title .= "\\pard\\intbl\\ql\cf0 ".$this->enkaEncode($stringCell_title2)."\\cf0\\cell"; } $row_count++; $this->rtf->MyRTF .= $this->rtf->enkaEncode($tableHeader_base.$tableHeader_width.$tableHeader_title.$tableHeader_finish); } } $this->rtf->MyRTF .= "}"; $this->rtf->new_line(1); break; case 24: // mesan multigrid $this->displayGridMultiple($spremenljivke); break; case 4: //text $this->rtf->TextCell("", array('width' => 9500*$expand_width, 'height' => 3, 'border' => array('top','bottom', 'left','right') ) ); $this->rtf->new_line(1); break; case 21: //besedilo* $this->rtf->new_line(1); $list = array(); $this->rtf->MyRTF .= "{\par"; $defw_full = 9500*$expand_width; $defw_part = round($defw_full / $spremenljivke['text_kosov']); $tableHeader = '\trowd\trql\trrh800'; $podnapisi = '\trowd\trql'; // iz baze preberemo vse moznosti $sqlVrednosti = sisplet_query("SELECT id, naslov, naslov2, variable FROM srv_vrednost WHERE spr_id='".$spremenljivke['id']."' ORDER BY vrstni_red"); for($i=0; $i<$spremenljivke['text_kosov']; $i++){ $rowVrednost = mysqli_fetch_array($sqlVrednosti); $stringTitle = $this->enkaEncode( ( $rowVrednost['naslov'] ) ? $rowVrednost['naslov'] : ( ( $rowVrednost['naslov2'] ) ? $rowVrednost['naslov2'] : $rowVrednost['variable'] ) ); $list[] = $stringTitle; if ( $this->getUserId() ) { $sqlUserAnswer = sisplet_query("SELECT text FROM srv_data_text".$this->db_table." WHERE spr_id='".$spremenljivke['id']."' AND usr_id='".$this->getUserId()."' AND vre_id='".$rowVrednost['id']."' AND loop_id $loop_id"); $userAnswer = mysqli_fetch_assoc($sqlUserAnswer); // imamo upload vprašanje if ($spremenljivke['upload'] == 1){ # imena datotek if($userAnswer['text'] != '') $answer = ''.$site_url.'main/survey/download.php?anketa='.$this->anketa['id'].'&code='.$userAnswer['text'].''; else $answer = ''; } // imamo signature vprašanje elseif($spremenljivke['signature'] == 1){ $answer = $userAnswer['text']; // relativna pot $image = $site_url.'main/survey/uploads/'.$this->getUserId().'_'.$spremenljivke['id'].'_'.$this->anketa['id'].'.png'; $file = @file_get_contents($image); $answer .= "{"; $answer .= "\\pict\\jpegblip\\picscalex100\\picscaley100\\bliptag132000428 "; $answer .= trim(bin2hex($file)); $answer .= "\n}\n"; } else{ $answer = $userAnswer['text']; } } if($spremenljivke['text_orientation'] == 1){ $table .= '\cellx'.( $i * $defw_part + 1000*$expand_width).'\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\cellx'.( ($i+1) * $defw_part); $tableEnd .= '\pard\intbl '.$this->enkaEncode($stringTitle).'\qc\cell\pard\intbl'.$this->rtf->color(12).' '.$answer.$this->rtf->color(0).'\cell'; } else{ $table .= '\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\cellx'.( ($i+1) * $defw_part ); $tableEnd .= '\pard\intbl'.$this->rtf->color(12).' '.$answer.$this->rtf->color(0).'\cell'; } if($spremenljivke['text_orientation'] == 2){ $podnapisi .= '\cellx'.( ($i+1) * $defw_part ).''; $podnapisiEnd .= '\pard\intbl '.$this->enkaEncode($stringTitle).'\qc\cell'; } } $tableEnd .= '\pard\intbl\row'; $podnapisiEnd .= '\pard\intbl\row'; $this->rtf->MyRTF .= $this->rtf->enkaEncode($tableHeader.$table.$tableEnd.($spremenljivke['text_orientation'] == 2 ? $podnapisi.$podnapisiEnd : '')); $this->rtf->MyRTF .= "}"; $this->rtf->new_line(1); break; case 5: //label $this->rtf->new_line(2); break; case 7: //number $this->rtf->new_line(1); $list = array(); $this->rtf->MyRTF .= "{\par"; // iz baze preberemo vse moznosti $sqlVrednosti = sisplet_query("SELECT naslov, naslov2, variable FROM srv_vrednost WHERE spr_id='".$spremenljivke['id']."' ORDER BY vrstni_red"); $rowVrednost = mysqli_fetch_array($sqlVrednosti); $stringTitle = $this->enkaEncode( ( $rowVrednost['naslov'] ) ? $rowVrednost['naslov'] : ( ( $rowVrednost['naslov2'] ) ? $rowVrednost['naslov2'] : $rowVrednost['variable'] ) ); $list[] = $stringTitle; $userAnswerString = "SELECT text, text2 FROM srv_data_text".$this->db_table." WHERE spr_id='".$spremenljivke['id']."' AND usr_id='".$this->getUserId()."' AND loop_id $loop_id;"; $sqlUserAnswer = sisplet_query($userAnswerString); $userAnswer = mysqli_fetch_assoc($sqlUserAnswer); if($spremenljivke['size'] == 1) { if ($spremenljivke['enota'] == 1) { #enota na levi $table = '\trowd\trql\cellx1500\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\cellx3000' .'\qc\pard\intbl '.($this->snippet($this->enkaEncode($stringTitle),20,'...') ) .'\qc\cell\pard\intbl '.$this->rtf->color(12).' '.$this->enkaEncode($userAnswer['text']).$this->rtf->color(0) .'\qc\cell\pard\intbl\row'; } elseif ($spremenljivke['enota'] == 2) { #enota na desni $table = '\trowd\trql\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\cellx1500\cellx3000'; $table .= '\qc\pard \intbl '.$this->rtf->color(12).' '.$this->enkaEncode($userAnswer['text']).$this->rtf->color(0) .'\qc\cell \pard \intbl '.($this->snippet($this->enkaEncode($stringTitle),20,'...') ) .'\qc\cell\pard\intbl\row'; } else { #brez enote $table = '\trowd\trql\cellx1500\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\cellx3000' .'\qc\pard\intbl '. '\qc\cell\pard\intbl '.$this->rtf->color(12).' '.$this->enkaEncode($userAnswer['text']).$this->rtf->color(0) .'\qc\cell\pard\intbl\row'; } } else{ $rowVrednost = mysqli_fetch_array($sqlVrednosti); $stringTitle2 = $this->enkaEncode( ( $rowVrednost['naslov'] ) ? $rowVrednost['naslov'] : ( ( $rowVrednost['naslov2'] ) ? $rowVrednost['naslov2'] : $rowVrednost['variable'] ) ); if ($spremenljivke['enota'] == 1) { #enota na levi $table = '\trowd\trql\cellx1500\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\cellx3000\cellx4500\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\cellx6000'; $table .= '\qc\pard \intbl '.($this->snippet($this->enkaEncode($stringTitle),20,'...') ) .'\qc\cell \pard \intbl '.$this->rtf->color(12).' '.$this->enkaEncode($userAnswer['text']).$this->rtf->color(0) .'\qc\cell \pard \intbl '.($this->snippet($this->enkaEncode($stringTitle2),20,'...') ) .'\qc\cell \pard \intbl '.$this->rtf->color(12).' '.$this->enkaEncode($userAnswer['text2']).$this->rtf->color(0) .'\qc\cell \pard \intbl \row'; } else if ($spremenljivke['enota'] == 2) { #enota na desni $table = '\trowd\trql\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\cellx1500\cellx3000\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\cellx4500\cellx6000'; $table .= '\qc\pard \intbl '.$this->rtf->color(12).' '.$this->enkaEncode($userAnswer['text']).$this->rtf->color(0) .'\qc\cell \pard \intbl '.($this->snippet($this->enkaEncode($stringTitle),20,'...') ) .'\qc\cell \pard \intbl '.$this->rtf->color(12).' '.$this->enkaEncode($userAnswer['text2']).$this->rtf->color(0) .'\qc\cell \pard \intbl '.($this->snippet($this->enkaEncode($stringTitle2),20,'...') ) .'\qc\cell \pard \intbl \row'; } else { #brez eneote $table = '\trowd\trql\cellx1500\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\cellx3000\cellx4500\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\cellx6000'; $table .= '\qc\pard \intbl ' .'\qc\cell \pard \intbl '.$this->rtf->color(12).' '.$this->enkaEncode($userAnswer['text']).$this->rtf->color(0) .'\qc\cell \pard \intbl ' .'\qc\cell \pard \intbl '.$this->rtf->color(12).' '.$this->enkaEncode($userAnswer['text2']).$this->rtf->color(0) .'\qc\cell \pard \intbl \row'; } } $this->rtf->MyRTF .= $this->rtf->enkaEncode($table); $this->rtf->MyRTF .= "}"; $this->rtf->new_line(1); break; case 8: //datum if ( $this->getUserId() ) { $userAnswerString = "SELECT text FROM srv_data_text".$this->db_table." WHERE spr_id='".$spremenljivke['id']."' AND usr_id='".$this->getUserId()."' AND loop_id $loop_id;"; $sqlUserAnswer = sisplet_query($userAnswerString); $userAnswer = mysqli_fetch_assoc($sqlUserAnswer); } $this->rtf->MyRTF .= $this->rtf->color(12); $this->rtf->TextCell($this->enkaEncode($userAnswer['text']), array('width' => 2000*$expand_width, 'height' => 1, 'border' => array('top','bottom', 'left','right') ) ); $this->rtf->MyRTF .= $this->rtf->color(0); $this->rtf->new_line(1); break; case 18: //vsota $this->rtf->new_line(1); $list = array(); $this->rtf->MyRTF .= "{\par"; // iz baze preberemo vse moznosti $sum = 0; $sqlVrednosti = sisplet_query("SELECT id, naslov, naslov2, variable FROM srv_vrednost WHERE spr_id='".$spremenljivke['id']."' ORDER BY vrstni_red"); while ($rowVrednost = mysqli_fetch_assoc($sqlVrednosti)) { // če imamo vnose, pogledamo kaj je odgovoril uporabnik if ($this->getUserId()) { $sqlUserAnswer = sisplet_query("SELECT text FROM srv_data_text".$this->db_table." WHERE spr_id=".$spremenljivke['id']." AND usr_id='".$this->getUserId()."' AND vre_id='".$rowVrednost['id']."' AND loop_id $loop_id"); $rowAnswers = mysqli_fetch_assoc($sqlUserAnswer); } $stringTitle = $this->enkaEncode( ( $rowVrednost['naslov'] ) ? $rowVrednost['naslov'] : ( ( $rowVrednost['naslov2'] ) ? $rowVrednost['naslov2'] : $rowVrednost['variable'] ) ); $list[] = $stringTitle; $table .= '\trowd\trql\cellx'. 5000*$expand_width .'\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\cellx'. 5800*$expand_width .'\pard\intbl '.$this->snippet($this->enkaEncode($stringTitle),50,'...').'\~\~\qr\cell\pard\intbl'.$this->rtf->color(12).' '.$this->enkaEncode($rowAnswers['text']).$this->rtf->color(0).'\qc\cell\pard\intbl\row'; $sum += (int)$rowAnswers['text']; } $table .= '\trowd \trql\clbrdrb\brdrs\brdrw10\cellx'. 6000*$expand_width .'\pard \intbl \cell \pard \intbl \row'; $table .= '\trowd \trql\cellx'. 6000*$expand_width .'\pard \intbl \cell \pard \intbl \row'; $stringTitle = $spremenljivke['vsota']; $table .= '\trowd \trql\cellx'. 5000*$expand_width .'\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\cellx'. 5800*$expand_width .'\pard \intbl '.$this->snippet($this->enkaEncode($stringTitle),50,'...').'\~\~\qr\cell \pard \intbl '.$sum.'\qc\cell \pard \intbl \row'; $this->rtf->MyRTF .= $this->rtf->enkaEncode($table); $this->rtf->MyRTF .= "}"; $this->rtf->new_line(1); break; case 17: //ranking $this->rtf->new_line(1); $list = array(); $this->rtf->MyRTF .= "{\par"; // iz baze preberemo vse moznosti $sqlVrednosti = sisplet_query("SELECT id, naslov, naslov2, variable FROM srv_vrednost WHERE spr_id='".$spremenljivke['id']."' ORDER BY vrstni_red"); while ($rowVrednost = mysqli_fetch_assoc($sqlVrednosti)) { // če imamo vnose, pogledamo kaj je odgovoril uporabnik if ($this->getUserId()) { $sqlUserAnswer = sisplet_query("SELECT vrstni_red FROM srv_data_rating WHERE spr_id=".$spremenljivke['id']." AND usr_id='".$this->getUserId()."' AND vre_id='".$rowVrednost['id']."' AND loop_id $loop_id"); $rowAnswers = mysqli_fetch_assoc($sqlUserAnswer); } $stringTitle = $this->enkaEncode( ( $rowVrednost['naslov'] ) ? $rowVrednost['naslov'] : ( ( $rowVrednost['naslov2'] ) ? $rowVrednost['naslov2'] : $rowVrednost['variable'] ) ); $list[] = $stringTitle; $table .= '\trowd \trql\cellx'. 1500*$expand_width .'\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\cellx'. 2300*$expand_width .'\pard \intbl '.$this->enkaEncode($stringTitle).' \qc\cell \pard \intbl'.$this->rtf->color(12).' '.$this->enkaEncode($rowAnswers['vrstni_red']).$this->rtf->color(0).'\qc\cell \pard \intbl \row'; } $this->rtf->MyRTF .= $this->rtf->enkaEncode($table); $this->rtf->MyRTF .= "}"; $this->rtf->new_line(1); break; case 9: //generator imen if ( $this->getUserId() ){ $sqlUserAnswer = sisplet_query("SELECT text FROM srv_data_text".$this->db_table." WHERE spr_id='".$spremenljivke['id']."' AND usr_id='".$this->getUserId()."' AND loop_id $loop_id"); while($userAnswer = mysqli_fetch_array($sqlUserAnswer)){ $this->rtf->MyRTF .= $this->rtf->color(12); $this->rtf->TextCell($this->enkaEncode($userAnswer['text']), array('width' => 4000, 'height' => 1, 'border' => array('top','bottom', 'left','right') ) ); $this->rtf->MyRTF .= $this->rtf->color(0); } } $this->rtf->new_line(1); break; case 27: //error_log("Heatmap @outputSpremenljivke"); #spremenljivke############################## global $site_url; global $site_path; global $lang; $usr_id = $this->getUserId(); $spr_id = $spremenljivke['id']; $landscapeBgImgWidthMm = 140; //predefinirana sirina slike v mm za pdf dokument, ce je ta lezeca $portraitBgImgWidthMm = 100; //predefinirana sirina slike v mm za pdf dokument, ce je ta pokoncna #spremenljivke##############################konec #pridobitev informacij o sliki in klikih iz baze ################################################### $data4BgImage = sisplet_query("SELECT params from srv_spremenljivka WHERE id = $spr_id"); $rowBgImageHtml = mysqli_fetch_assoc($data4BgImage); $spremenljivkaParams = new enkaParameters($rowBgImageHtml['params']); $backgroundImgHtml = $spremenljivkaParams->get('hotspot_image'); $heatmap_show_counter_clicks = ($spremenljivkaParams->get('heatmap_show_counter_clicks') ? $spremenljivkaParams->get('heatmap_show_counter_clicks') : 0); //za prikazovanje/skrivanje stevca klikov $heatmap_show_clicks = ($spremenljivkaParams->get('heatmap_show_clicks') ? $spremenljivkaParams->get('heatmap_show_clicks') : 0); //za prikazovanje/skrivanje klikov $heatmap_num_clicks = ($spremenljivkaParams->get('heatmap_num_clicks') ? $spremenljivkaParams->get('heatmap_num_clicks') : 1); //stevilo moznih klikov $heatmap_click_color = ($spremenljivkaParams->get('heatmap_click_color') ? $spremenljivkaParams->get('heatmap_click_color') : ""); $heatmap_click_size = ($spremenljivkaParams->get('heatmap_click_size') ? $spremenljivkaParams->get('heatmap_click_size') : 5); $heatmap_click_shape = ($spremenljivkaParams->get('heatmap_click_shape') ? $spremenljivkaParams->get('heatmap_click_shape') : 1); #pridobitev informacij o sliki in klikih iz baze ###################################################konec #pridobitev slike za ozadje############################################################## $position = strpos($backgroundImgHtml, 'src="'); $backgroundImg = substr($backgroundImgHtml, $position+5); $position = strpos($backgroundImg, '"'); $backgroundImg = str_replace(substr($backgroundImg, $position),"",$backgroundImg); $bgImageType = substr($backgroundImg, -3); //koncnica slike, tip slike //$bgImageType = 'png'; //error_log($bgImageType); #pridobitev slike za ozadje##############################################################konec #pridobitev dimenzij slike za ozadje##################################################### //realna velikost slike pobrana iz datoteke - ni v redu, ker je potrebno dobiti dimenzije, ki jih je nastavil uporabnik $bgImgSize = getimagesize($backgroundImg); //error_log("Width: $bgImgSize[0]"); //error_log("Height: $bgImgSize[1]"); $bgImgWidthPx = $bgImgSize[0]; $bgImgHeightPx = $bgImgSize[1]; //realna velikost slike pobrana iz datoteke - konec //visina slike, ki jo je nastavil uporabnik $positionImgHeight = strpos($backgroundImgHtml, 'height:'); $ImgHeight = substr($backgroundImgHtml, $positionImgHeight+7); $positionImgheightPx = strpos($ImgHeight, 'px'); $ImgHeight = str_replace(substr($ImgHeight, $positionImgheightPx),"",$ImgHeight); //error_log($ImgHeight); //visina slike, ki jo je nastavil uporabnik - konec //sirina slike, ki jo je nastavil uporabnik $positionImgWidth = strpos($backgroundImgHtml, 'width:'); $ImgWidth = substr($backgroundImgHtml, $positionImgWidth+6); $positionImgWidthPx = strpos($ImgWidth, 'px'); $ImgWidth = str_replace(substr($ImgWidth, $positionImgWidthPx),"",$ImgWidth); //error_log($ImgWidth); //sirina slike, ki jo je nastavil uporabnik - konec #pridobitev dimenzij slike za ozadje#####################################################konec #ureditev ustrezne velikosti slike za ozadje############################################################## $bgImgWidthInMm = ($ImgWidth > $ImgHeight ? $landscapeBgImgWidthMm : $portraitBgImgWidthMm); $bgImgHeightInMm = ($bgImgWidthInMm / $ImgWidth) * $ImgHeight; //error_log("bgImgHeightInMm: $bgImgHeightInMm"); #ureditev ustrezne velikosti slike za ozadje##############################################################konec #pridobitev koordinat klikanih tock za uporabnika $usr_id################################################# $data4Coords = sisplet_query("SELECT lat, lng from srv_data_map WHERE usr_id = $usr_id AND spr_id = $spr_id"); $i = 0; //error_log($spr_id); #pridobitev koordinat klikanih tock za uporabnika $usr_id#################################################konec #izris tock na sliko###################################################################################### //if($heatmap_show_clicks == 1){ define('UPLOAD_DIR', $site_path.'admin/exportclases/temp/'); $imageFinal = $this->rtf->prepareHeatmapImage($data4Coords, $backgroundImg, $lat, $lng, $ImgWidth, $ImgHeight, $heatmap_click_size, $heatmap_click_color, $heatmap_click_shape, $spr_id, $bgImageType, UPLOAD_DIR); //} #izris tock na sliko######################################################################################konec #izris slike v rtf###################################################################################### $file = @file_get_contents($imageFinal); $image = "{"; $image .= "\\pict\\jpegblip\\picscalex100\\picscaley100\\bliptag132000428 "; $image .= trim(bin2hex($file)); $image .= "\n}\n"; $this->rtf->MyRTF .= $image; //izris slike v rtf######################################################################################konec //izbris slike iz mape streznika //if($heatmap_show_clicks == 1){ unlink($imageFinal); //} #izris stevca klikov###################################################################################### if($heatmap_show_counter_clicks){ $this->rtf->new_line(1); $clickCounter = $this->rtf->enkaEncode($lang['srv_vprasanje_heatmap_num_clicks']).': \line'; $clickCounter .= ' '.mysqli_num_rows($data4Coords).'/'.$heatmap_num_clicks; $this->rtf->MyRTF .= $clickCounter; $this->rtf->new_line(1); } #izris stevca klikov######################################################################################konec break; } } function outputSpremenljivkeValues($spremenljivke){ global $site_url; // razsiritev ce imamo landscape postavitev $expand_width = $this->landscape == 1 ? 1.5 : 1; // stevilcenje vprasanj $numberingText = ($this->numbering == 1) ? $spremenljivke['variable'].' - ' : ''; // Ce je spremenljivka v loopu $loop_id = $this->loop_id == null ? " IS NULL" : " = '".$this->loop_id."'"; switch ( $spremenljivke['tip'] ) { case 1: //radio case 2: //check case 3: //select -> radio $this->rtf->MyRTF .= "{\par"; $tableHeader = '\trowd\trql\trrh400'; //IZPIS NASLOVA VPRASANJA $table = '\cellx'.( 5000*$expand_width ); $tableEnd = '\pard\intbl '.$numberingText.$this->enkaEncode($this->dataPiping($spremenljivke['naslov'])). ' \ql\cell'; // če imamo vnose, pogledamo kaj je odgovoril uporabnik if ($this->getUserId()) { $sqlUserAnswerString = "SELECT vre_id FROM srv_data_vrednost".$this->db_table." WHERE spr_id='$spremenljivke[id]' AND usr_id='".$this->getUserId()."' AND loop_id $loop_id"; $sqlUserAnswer = sisplet_query($sqlUserAnswerString); while ($rowAnswers = mysqli_fetch_assoc($sqlUserAnswer)) $userAnswer[$rowAnswers['vre_id']] = $rowAnswers['vre_id']; } // iz baze preberemo vse moznosti - ko nimamo izpisa z odgovori respondenta $sqlVrednosti = sisplet_query("SELECT id, naslov, naslov2, variable, other FROM srv_vrednost WHERE spr_id='".$spremenljivke['id']."' ORDER BY vrstni_red"); $resultString = ''; while ($rowVrednost = mysqli_fetch_assoc($sqlVrednosti)) { //izpisemo samo izbrane vrednosti if( isset($userAnswer[$rowVrednost['id']]) ){ $stringTitle = ($this->enkaEncode(( $rowVrednost['naslov'] ) ? $rowVrednost['naslov'] : ( ( $rowVrednost['naslov2'] ) ? $rowVrednost['naslov2'] : $rowVrednost['variable'] ) )); // še dodamo textbox če je polj other $_txt = ''; if ( $rowVrednost['other'] == 1 && $this->getUserId() ) { $sqlOtherText = sisplet_query("SELECT * FROM srv_data_text".$this->db_table." WHERE spr_id='".$spremenljivke['id']."' AND vre_id='".$rowVrednost['id']."' AND usr_id='".$this->getUserId()."' AND loop_id $loop_id"); $row4 = mysqli_fetch_assoc($sqlOtherText); $_txt = ' '.$row4['text']; } $resultString .= ' '.$stringTitle.$_txt.','; } } $resultString = substr($resultString, 0, -1); $table .= '\cellx'.( 10000*$expand_width ); $tableEnd .= '\pard\intbl'.$this->rtf->color(12).' '.$this->enkaEncode($resultString).' '.$this->rtf->color(0).'\ql\cell'; $tableEnd .= '\pard\intbl\row'; $this->rtf->MyRTF .= $this->rtf->enkaEncode($tableHeader.$table.$tableEnd); $this->rtf->MyRTF .= "}"; break; case 6: //multigrid case 16:// multicheckbox //izris dvojnega multigrida if($spremenljivke['enota'] == 3){ $this->displayDoubleGridValues($spremenljivke); break; } $sqlVrstic = sisplet_query("SELECT count(*) FROM srv_vrednost WHERE spr_id='".$spremenljivke['id']."'"); $rowVrstic = mysqli_fetch_row($sqlVrstic); $sqlVrednosti = sisplet_query("SELECT *,id, naslov, naslov2, variable FROM srv_vrednost WHERE spr_id='".$spremenljivke['id']."' ORDER BY vrstni_red"); $this->rtf->MyRTF .= "{\par"; while ($rowVrednost = mysqli_fetch_assoc($sqlVrednosti)) { $skipRow = false; // Ce imamo nastavljeno preskakovanje podvprasanj preverimo ce je kaksen odgovor v vrstici if($this->skipEmptySub == 1){ $skipRow = true; if($spremenljivke['tip'] == 6) $sqlUserAnswer = sisplet_query("SELECT grd_id FROM srv_data_grid".$this->db_table." WHERE spr_id = '".$rowVrednost['spr_id']."' AND usr_id = '".$this->getUserId()."' AND vre_id = '".$rowVrednost['id']."' AND loop_id $loop_id"); else $sqlUserAnswer = sisplet_query("SELECT grd_id FROM srv_data_checkgrid".$this->db_table." WHERE spr_id = '".$rowVrednost['spr_id']."' AND usr_id = '".$this->getUserId()."' AND vre_id = '".$rowVrednost['id']."' AND loop_id $loop_id"); if(mysqli_num_rows($sqlUserAnswer) > 0) $skipRow = false; } if($skipRow == false){ $stringCell_title = $this->enkaEncode(( $rowVrednost['naslov'] ) ? $rowVrednost['naslov'] : ( ( $rowVrednost['naslov2'] ) ? $rowVrednost['naslov2'] : $rowVrednost['variable'] ) ); // še dodamo textbox če je polj other $_txt = ''; if ( $rowVrednost['other'] == 1 && $this->getUserId() ) { $sqlOtherText = sisplet_query("SELECT * FROM srv_data_text".$this->db_table." WHERE spr_id='".$spremenljivke['id']."' AND vre_id='".$rowVrednost['id']."' AND usr_id='".$this->getUserId()."' AND loop_id $loop_id"); $row4 = mysqli_fetch_assoc($sqlOtherText); $_txt = ' '.$row4['text']; } $stringCell_title .= $_txt.':'; $tableHeader = '\trowd\trql\trrh400'; /*Izpis bočnega stolpca*/ $table = '\cellx'.( 5000*$expand_width ); $tableEnd = '\pard\intbl '.$this->enkaEncode($stringCell_title). '\qr\cell'; $sqlVsehVrednsti = sisplet_query("SELECT id, naslov FROM srv_grid WHERE spr_id='".$spremenljivke['id']."' ORDER BY 'vrstni_red'"); //izpis rezultatov $resultString = ''; while ($rowVsehVrednosti = mysqli_fetch_assoc($sqlVsehVrednsti)) { // poiščemo kaj je odgovoril uporabnik: if($spremenljivke['tip']==16) $sqlUserAnswer = sisplet_query("SELECT grd_id FROM srv_data_checkgrid".$this->db_table." WHERE spr_id = '".$rowVrednost['spr_id']."' AND usr_id = '".$this->getUserId()."' AND vre_id = '".$rowVrednost['id']."' AND grd_id = '".$rowVsehVrednosti['id']."' AND loop_id $loop_id"); else $sqlUserAnswer = sisplet_query("SELECT grd_id FROM srv_data_grid".$this->db_table." where spr_id = '".$rowVrednost['spr_id']."' and usr_id = '".$this->getUserId()."' AND vre_id = '".$rowVrednost['id']."' AND loop_id $loop_id"); $userAnswer = mysqli_fetch_assoc($sqlUserAnswer); if($rowVsehVrednosti['id'] == $userAnswer['grd_id']) $resultString .= ' '.$this->enkaEncode($rowVsehVrednosti['naslov']).','; } $resultString = substr($resultString, 0, -1); $table .= '\cellx'.( 10000*$expand_width ); $tableEnd .= '\pard\intbl'.$this->rtf->color(12).' '.$this->enkaEncode($resultString).' '.$this->rtf->color(0).'\ql\cell'; $tableEnd .= '\pard\intbl\row'; $this->rtf->MyRTF .= $this->rtf->enkaEncode($tableHeader.$table.$tableEnd); } } $this->rtf->MyRTF .= "}"; break; case 21: //besedilo* $list = array(); $this->rtf->MyRTF .= "{\par"; $defw_full = 7500*$expand_width; $defw_part = round($defw_full / $spremenljivke['text_kosov']); $tableHeader = '\trowd\trql\trrh800'; $podnapisi = '\trowd\trql'; $table .= '\cellx'.(2000*$expand_width); $tableEnd .= '\pard\intbl '.$numberingText.$this->enkaEncode($this->dataPiping($spremenljivke['naslov'])). ' \ql\cell'; // iz baze preberemo vse moznosti $sqlVrednosti = sisplet_query("SELECT id, naslov, naslov2, variable FROM srv_vrednost WHERE spr_id='".$spremenljivke['id']."' ORDER BY vrstni_red"); for($i=0; $i<$spremenljivke['text_kosov']; $i++){ $rowVrednost = mysqli_fetch_array($sqlVrednosti); $stringTitle = $this->enkaEncode( ( $rowVrednost['naslov'] ) ? $rowVrednost['naslov'] : ( ( $rowVrednost['naslov2'] ) ? $rowVrednost['naslov2'] : $rowVrednost['variable'] ) ); $list[] = $stringTitle; if ( $this->getUserId() ) { $sqlUserAnswer = sisplet_query("SELECT text FROM srv_data_text".$this->db_table." WHERE spr_id='".$spremenljivke['id']."' AND usr_id='".$this->getUserId()."' AND vre_id='".$rowVrednost['id']."' AND loop_id $loop_id"); $userAnswer = mysqli_fetch_assoc($sqlUserAnswer); // imamo upload vprašanje if ($spremenljivke['upload'] == 1){ # imena datotek if($userAnswer['text'] != '') $answer = ''.$site_url.'main/survey/download.php?anketa='.$this->anketa['id'].'&code='.$userAnswer['text'].''; else $answer = ''; } // imamo signature vprašanje elseif($spremenljivke['signature'] == 1){ $answer = $userAnswer['text']; // relativna pot $image = $site_url.'main/survey/uploads/'.$this->getUserId().'_'.$spremenljivke['id'].'_'.$this->anketa['id'].'.png'; $file = @file_get_contents($image); $answer .= "{"; $answer .= "\\pict\\jpegblip\\picscalex100\\picscaley100\\bliptag132000428 "; $answer .= trim(bin2hex($file)); $answer .= "\n}\n"; } else{ $answer = $userAnswer['text']; } } if($spremenljivke['text_orientation'] == 1){ $table .= '\cellx'.( $i * $defw_part + ((1000 + 2000)*$expand_width)).'\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\cellx'.( ($i+1) * $defw_part + 2000*$expand_width); $tableEnd .= '\pard\intbl '.$this->enkaEncode($stringTitle).'\qc\cell\pard\intbl'.$this->rtf->color(12).' '.$answer.$this->rtf->color(0).'\cell'; } else{ $table .= '\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\cellx'.( ($i+1) * $defw_part + 2000*$expand_width); $tableEnd .= '\pard\intbl'.$this->rtf->color(12).' '.$answer.$this->rtf->color(0).'\cell'; } if($spremenljivke['text_orientation'] == 2){ $podnapisi .= '\cellx'.( ($i+1) * $defw_part + 2000*$expand_width).''; $podnapisiEnd .= '\pard\intbl '.$this->enkaEncode($stringTitle).'\qc\cell'; } } $tableEnd .= '\pard\intbl\row'; $podnapisiEnd .= '\pard\intbl\row'; $this->rtf->MyRTF .= $this->rtf->enkaEncode($tableHeader.$table.$tableEnd.($spremenljivke['text_orientation'] == 2 ? $podnapisi.$podnapisiEnd : '')); $this->rtf->MyRTF .= "}"; break; case 7: //number $list = array(); $this->rtf->MyRTF .= "{\par"; // iz baze preberemo vse moznosti $sqlVrednosti = sisplet_query("SELECT naslov, naslov2, variable FROM srv_vrednost WHERE spr_id='".$spremenljivke['id']."' ORDER BY vrstni_red"); $rowVrednost = mysqli_fetch_array($sqlVrednosti); $stringTitle = $this->enkaEncode( ( $rowVrednost['naslov'] ) ? $rowVrednost['naslov'] : ( ( $rowVrednost['naslov2'] ) ? $rowVrednost['naslov2'] : $rowVrednost['variable'] ) ); $list[] = $stringTitle; $userAnswerString = "SELECT text, text2 FROM srv_data_text".$this->db_table." WHERE spr_id='".$spremenljivke['id']."' AND usr_id='".$this->getUserId()."' AND loop_id $loop_id;"; $sqlUserAnswer = sisplet_query($userAnswerString); $userAnswer = mysqli_fetch_assoc($sqlUserAnswer); if($spremenljivke['size'] == 1) { if ($spremenljivke['enota'] == 1) { #enota na levi $table = '\trowd\trql\cellx3000\cellx4500\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\cellx6000' .'\pard\intbl '.$numberingText.$this->enkaEncode($this->dataPiping($spremenljivke['naslov'])).'\ql\cell' .'\pard\intbl '.($this->snippet($this->enkaEncode($stringTitle),20,'...') ).'\qc\cell' .'\pard\intbl '.$this->rtf->color(12).' '.$this->enkaEncode($userAnswer['text']).$this->rtf->color(0).'\qc\cell' .'\pard\intbl\row'; } elseif ($spremenljivke['enota'] == 2) { #enota na desni $table = '\trowd\trql\cellx3000\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\cellx4500\cellx6000'; $table .= '\pard\intbl '.$numberingText.$this->enkaEncode($this->dataPiping($spremenljivke['naslov'])).'\ql\cell' .'\pard\intbl '.$this->rtf->color(12).' '.$this->enkaEncode($userAnswer['text']).$this->rtf->color(0).'\qc\cell' .'\pard\intbl '.($this->snippet($this->enkaEncode($stringTitle),20,'...') ).'\qc\cell' .'\pard\intbl\row'; } else { #brez enote $table = '\trowd\trql\cellx3000\cellx4500\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\cellx6000' .'\pard\intbl '.$numberingText.$this->enkaEncode($this->dataPiping($spremenljivke['naslov'])).'\ql\cell' .'\pard\intbl ' .'\pard\intbl '.$this->rtf->color(12).' '.$this->enkaEncode($userAnswer['text']).$this->rtf->color(0).'\qc\cell' .'\pard\intbl\row'; } } else{ $rowVrednost = mysqli_fetch_array($sqlVrednosti); $stringTitle2 = $this->enkaEncode( ( $rowVrednost['naslov'] ) ? $rowVrednost['naslov'] : ( ( $rowVrednost['naslov2'] ) ? $rowVrednost['naslov2'] : $rowVrednost['variable'] ) ); if ($spremenljivke['enota'] == 1) { #enota na levi $table = '\trowd\trql\cellx3000\cellx4500\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\cellx6000\cellx7500\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\cellx9000'; $table .= '\pard\intbl '.$numberingText.$this->enkaEncode($this->dataPiping($spremenljivke['naslov'])).'\ql\cell' .'\pard\intbl '.($this->snippet($this->enkaEncode($stringTitle),20,'...') ).'\qc\cell' .'\pard\intbl '.$this->rtf->color(12).' '.$this->enkaEncode($userAnswer['text']).$this->rtf->color(0).'\qc\cell' .'\pard\intbl '.($this->snippet($this->enkaEncode($stringTitle2),20,'...') ).'\qc\cell' .'\pard\intbl '.$this->rtf->color(12).' '.$this->enkaEncode($userAnswer['text2']).$this->rtf->color(0).'\qc\cell' .'\pard\intbl \row'; } else if ($spremenljivke['enota'] == 2) { #enota na desni $table = '\trowd\trql\cellx3000\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\cellx4500\cellx7000\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\cellx6500\cellx9000'; $table .= '\pard\intbl '.$numberingText.$this->enkaEncode($this->dataPiping($spremenljivke['naslov'])).'\ql\cell' .'\pard\intbl '.$this->rtf->color(12).' '.$this->enkaEncode($userAnswer['text']).$this->rtf->color(0).'\qc\cell' .'\pard\intbl '.($this->snippet($this->enkaEncode($stringTitle),20,'...') ).'\qc\cell' .'\pard\intbl '.$this->rtf->color(12).' '.$this->enkaEncode($userAnswer['text2']).$this->rtf->color(0).'\qc\cell' .'\pard\intbl '.($this->snippet($this->enkaEncode($stringTitle2),20,'...') ).'\qc\cell' .'\pard\intbl\row'; } else { #brez eneote $table = '\trowd\trql\cellx3000\cellx4500\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\cellx6000\cellx7500\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\cellx9000'; $table .= '\pard\intbl '.$numberingText.$this->enkaEncode($this->dataPiping($spremenljivke['naslov'])).'\ql\cell' .'\pard\intbl ' .'\pard\intbl '.$this->rtf->color(12).' '.$this->enkaEncode($userAnswer['text']).$this->rtf->color(0).'\qc\cell' .'\pard\intbl ' .'\pard\intbl '.$this->rtf->color(12).' '.$this->enkaEncode($userAnswer['text2']).$this->rtf->color(0).'\qc\cell' .'\pard\intbl\row'; } } $this->rtf->MyRTF .= $this->rtf->enkaEncode($table); $this->rtf->MyRTF .= "}"; break; case 8: //datum if ( $this->getUserId() ) { $userAnswerString = "SELECT text FROM srv_data_text".$this->db_table." WHERE spr_id='".$spremenljivke['id']."' AND usr_id='".$this->getUserId()."' AND loop_id $loop_id;"; $sqlUserAnswer = sisplet_query($userAnswerString); $userAnswer = mysqli_fetch_assoc($sqlUserAnswer); } $this->rtf->MyRTF .= "{\par"; $tableHeader = '\trowd\trql\trrh400'; //IZPIS NASLOVA VPRASANJA $table = '\cellx'.( 5000*$expand_width ); $tableEnd = '\pard\intbl '.$numberingText.$this->enkaEncode($this->dataPiping($spremenljivke['naslov'])). ' \ql\cell'; $table .= '\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\cellx'.( 7000*$expand_width ); $tableEnd .= '\pard\intbl'.$this->rtf->color(12).' '.$this->enkaEncode($userAnswer['text']).' '.$this->rtf->color(0).'\ql\cell'; $tableEnd .= '\pard\intbl\row'; $this->rtf->MyRTF .= $this->rtf->enkaEncode($tableHeader.$table.$tableEnd); $this->rtf->MyRTF .= "}"; break; case 18: //vsota $this->rtf->new_line(1); $list = array(); // Izpisemo tekst vprasanja $this->rtf->add_text($numberingText.$this->enkaEncode($this->dataPiping($spremenljivke['naslov']))); $this->rtf->new_line(1); $this->rtf->MyRTF .= "{\par"; // iz baze preberemo vse moznosti $sum = 0; $sqlVrednosti = sisplet_query("SELECT id, naslov, naslov2, variable FROM srv_vrednost WHERE spr_id='".$spremenljivke['id']."' ORDER BY vrstni_red"); while ($rowVrednost = mysqli_fetch_assoc($sqlVrednosti)) { // če imamo vnose, pogledamo kaj je odgovoril uporabnik if ($this->getUserId()) { $sqlUserAnswer = sisplet_query("SELECT text FROM srv_data_text".$this->db_table." WHERE spr_id=".$spremenljivke['id']." AND usr_id='".$this->getUserId()."' AND vre_id='".$rowVrednost['id']."' AND loop_id $loop_id"); $rowAnswers = mysqli_fetch_assoc($sqlUserAnswer); } $stringTitle = $this->enkaEncode( ( $rowVrednost['naslov'] ) ? $rowVrednost['naslov'] : ( ( $rowVrednost['naslov2'] ) ? $rowVrednost['naslov2'] : $rowVrednost['variable'] ) ); $list[] = $stringTitle; $table .= '\trowd\trql\cellx5000\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\cellx5800\pard\intbl '.$this->snippet($this->enkaEncode($stringTitle),50,'...').'\~\~\qr\cell\pard\intbl'.$this->rtf->color(12).' '.$this->enkaEncode($rowAnswers['text']).$this->rtf->color(0).'\qc\cell\pard\intbl\row'; $sum += (int)$rowAnswers['text']; } $table .= '\trowd \trql\clbrdrb\brdrs\brdrw10\cellx6000\pard \intbl \cell \pard \intbl \row'; $table .= '\trowd \trql\cellx6000\pard \intbl \cell \pard \intbl \row'; $stringTitle = $spremenljivke['vsota']; $table .= '\trowd \trql\cellx5000\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\cellx5800\pard \intbl '.$this->snippet($this->enkaEncode($stringTitle),50,'...').'\~\~\qr\cell \pard \intbl '.$sum.'\qc\cell \pard \intbl \row'; $this->rtf->MyRTF .= $this->rtf->enkaEncode($table); $this->rtf->MyRTF .= "}"; break; case 17: //ranking $this->rtf->new_line(1); $list = array(); // Izpisemo tekst vprasanja $this->rtf->add_text($numberingText.$this->enkaEncode($this->dataPiping($spremenljivke['naslov']))); $this->rtf->new_line(1); $this->rtf->MyRTF .= "{\par"; // iz baze preberemo vse moznosti $sqlVrednosti = sisplet_query("SELECT id, naslov, naslov2, variable FROM srv_vrednost WHERE spr_id='".$spremenljivke['id']."' ORDER BY vrstni_red"); while ($rowVrednost = mysqli_fetch_assoc($sqlVrednosti)) { // če imamo vnose, pogledamo kaj je odgovoril uporabnik if ($this->getUserId()) { $sqlUserAnswer = sisplet_query("SELECT vrstni_red FROM srv_data_rating WHERE spr_id=".$spremenljivke['id']." AND usr_id='".$this->getUserId()."' AND vre_id='".$rowVrednost['id']."' AND loop_id $loop_id"); $rowAnswers = mysqli_fetch_assoc($sqlUserAnswer); } $stringTitle = $this->enkaEncode( ( $rowVrednost['naslov'] ) ? $rowVrednost['naslov'] : ( ( $rowVrednost['naslov2'] ) ? $rowVrednost['naslov2'] : $rowVrednost['variable'] ) ); $list[] = $stringTitle; $table .= '\trowd \trql\cellx1500\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\cellx2300\pard \intbl '.$this->enkaEncode($stringTitle).' \qc\cell \pard \intbl'.$this->rtf->color(12).' '.$this->enkaEncode($rowAnswers['vrstni_red']).$this->rtf->color(0).'\qc\cell \pard \intbl \row'; } $this->rtf->MyRTF .= $this->rtf->enkaEncode($table); $this->rtf->MyRTF .= "}"; break; case 9: //generator imen $this->rtf->MyRTF .= "{\par"; $tableHeader = '\trowd\trql\trrh400'; //IZPIS NASLOVA VPRASANJA $table = '\cellx'.( 5000*$expand_width ); $tableEnd = '\pard\intbl '.$numberingText.$this->enkaEncode($this->dataPiping($spremenljivke['naslov'])). ' \ql\cell'; $answer = ''; if ( $this->getUserId() ){ $sqlUserAnswer = sisplet_query("SELECT text FROM srv_data_text".$this->db_table." WHERE spr_id='".$spremenljivke['id']."' AND usr_id='".$this->getUserId()."' AND loop_id $loop_id"); while($userAnswer = mysqli_fetch_array($sqlUserAnswer)){ $answer .= $this->enkaEncode($userAnswer['text']).', '; } $answer = substr($answer, 0, -2); } $table .= '\cellx'.( 10000*$expand_width ); $tableEnd .= '\pard\intbl'.$this->rtf->color(12).' '.$this->enkaEncode($answer).' '.$this->rtf->color(0).'\ql\cell'; $tableEnd .= '\pard\intbl\row'; $this->rtf->MyRTF .= $this->rtf->enkaEncode($tableHeader.$table.$tableEnd); $this->rtf->MyRTF .= "}"; break; } } function displayDoubleGridValues($spremenljivke) { // razsiritev ce imamo landscape postavitev $expand_width = $this->landscape == 1 ? 1.5 : 1; //prvi del grida //naslov 1. grida $this->rtf->TextCell($this->enkaEncode($spremenljivke['grid_subtitle1']), array('width' => 9500*$expand_width, 'height' => 1, 'align' => 'center') ); $sqlVrednosti = sisplet_query("SELECT *,id, naslov, naslov2, variable FROM srv_vrednost WHERE spr_id='".$spremenljivke['id']."' ORDER BY vrstni_red"); $this->rtf->MyRTF .= "{\par"; while ($rowVrednost = mysqli_fetch_assoc($sqlVrednosti)) { $stringCell_title = $this->enkaEncode(( $rowVrednost['naslov'] ) ? $rowVrednost['naslov'] : ( ( $rowVrednost['naslov2'] ) ? $rowVrednost['naslov2'] : $rowVrednost['variable'] ) ); // še dodamo textbox če je polj other $_txt = ''; if ( $rowVrednost['other'] == 1 && $this->getUserId() ) { $sqlOtherText = sisplet_query("SELECT * FROM srv_data_text".$this->db_table." WHERE spr_id='".$spremenljivke['id']."' AND vre_id='".$rowVrednost['id']."' AND usr_id='".$this->getUserId()."'"); $row4 = mysqli_fetch_assoc($sqlOtherText); $_txt = ' '.$row4['text']; } $stringCell_title .= $_txt.':'; $tableHeader = '\trowd\trql\trrh400'; /*Izpis bočnega stolpca*/ $table = '\cellx'.( 5000*$expand_width ); $tableEnd = '\pard\intbl '.$this->enkaEncode($stringCell_title). '\qr\cell'; $sqlVsehVrednsti = sisplet_query("SELECT id, naslov FROM srv_grid WHERE spr_id='".$spremenljivke['id']."' AND part='1' ORDER BY 'vrstni_red'"); //izpis rezultatov $resultString = ''; while ($rowVsehVrednosti = mysqli_fetch_assoc($sqlVsehVrednsti)) { // poiščemo kaj je odgovoril uporabnik: $sqlUserAnswer = sisplet_query("SELECT grd_id FROM srv_data_checkgrid".$this->db_table." WHERE spr_id = '".$rowVrednost['spr_id']."' AND usr_id = '".$this->getUserId()."' AND vre_id = '".$rowVrednost['id']."' AND grd_id = '".$rowVsehVrednosti['id']."'"); $userAnswer = mysqli_fetch_assoc($sqlUserAnswer); if($rowVsehVrednosti['id'] == $userAnswer['grd_id']) $resultString .= ' '.$this->enkaEncode($rowVsehVrednosti['naslov']).','; } $resultString = substr($resultString, 0, -1); $table .= '\cellx'.( 10000*$expand_width ); $tableEnd .= '\pard\intbl'.$this->rtf->color(12).' '.$this->enkaEncode($resultString).' '.$this->rtf->color(0).'\ql\cell'; $tableEnd .= '\pard\intbl\row'; $this->rtf->MyRTF .= $this->rtf->enkaEncode($tableHeader.$table.$tableEnd); } $this->rtf->MyRTF .= "}"; //drugi del grida //naslov 2. grida $this->rtf->TextCell($this->enkaEncode($spremenljivke['grid_subtitle2']), array('width' => 9500*$expand_width, 'height' => 1, 'align' => 'center') ); $sqlVrednosti = sisplet_query("SELECT *,id, naslov, naslov2, variable FROM srv_vrednost WHERE spr_id='".$spremenljivke['id']."' ORDER BY vrstni_red"); $this->rtf->MyRTF .= "{\par"; while ($rowVrednost = mysqli_fetch_assoc($sqlVrednosti)) { $stringCell_title = $this->enkaEncode(( $rowVrednost['naslov'] ) ? $rowVrednost['naslov'] : ( ( $rowVrednost['naslov2'] ) ? $rowVrednost['naslov2'] : $rowVrednost['variable'] ) ); // še dodamo textbox če je polj other $_txt = ''; if ( $rowVrednost['other'] == 1 && $this->getUserId() ) { $sqlOtherText = sisplet_query("SELECT * FROM srv_data_text".$this->db_table." WHERE spr_id='".$spremenljivke['id']."' AND vre_id='".$rowVrednost['id']."' AND usr_id='".$this->getUserId()."'"); $row4 = mysqli_fetch_assoc($sqlOtherText); $_txt = ' '.$row4['text']; } $stringCell_title .= $_txt.':'; $tableHeader = '\trowd\trql\trrh400'; /*Izpis bočnega stolpca*/ $table = '\cellx'.( 5000*$expand_width ); $tableEnd = '\pard\intbl '.$this->enkaEncode($stringCell_title). '\qr\cell'; $sqlVsehVrednsti = sisplet_query("SELECT id, naslov FROM srv_grid WHERE spr_id='".$spremenljivke['id']."' AND part='2' ORDER BY 'vrstni_red'"); //izpis rezultatov $resultString = ''; while ($rowVsehVrednosti = mysqli_fetch_assoc($sqlVsehVrednsti)) { // poiščemo kaj je odgovoril uporabnik: $sqlUserAnswer = sisplet_query("SELECT grd_id FROM srv_data_checkgrid".$this->db_table." WHERE spr_id = '".$rowVrednost['spr_id']."' AND usr_id = '".$this->getUserId()."' AND vre_id = '".$rowVrednost['id']."' AND grd_id = '".$rowVsehVrednosti['id']."'"); $userAnswer = mysqli_fetch_assoc($sqlUserAnswer); if($rowVsehVrednosti['id'] == $userAnswer['grd_id']) $resultString .= ' '.$this->enkaEncode($rowVsehVrednosti['naslov']).','; } $resultString = substr($resultString, 0, -1); $table .= '\cellx'.( 10000*$expand_width ); $tableEnd .= '\pard\intbl'.$this->rtf->color(12).' '.$this->enkaEncode($resultString).' '.$this->rtf->color(0).'\ql\cell'; $tableEnd .= '\pard\intbl\row'; $this->rtf->MyRTF .= $this->rtf->enkaEncode($tableHeader.$table.$tableEnd); } $this->rtf->MyRTF .= "}"; } function displayDoubleGrid($spremenljivke) { // razsiritev ce imamo landscape postavitev $expand_width = $this->landscape == 1 ? 1.5 : 1; $this->rtf->MyRTF .= "{\\par\\fs22"; $defw_full = 9500*$expand_width; $defw_fc = 1200*$expand_width; // first cell width $defw_max = 800*$expand_width; // max other cell width $maxcellx = 9500*$expand_width; $sqlStVrednosti = sisplet_query("SELECT count(*) AS count FROM srv_grid WHERE spr_id='".$spremenljivke['id']."' ORDER BY id"); $rowStVrednost = mysqli_fetch_row($sqlStVrednosti); $kolon = $rowStVrednost[0]+1; $w_oc = ( $defw_full - $defw_fc ) / $kolon; if ( $w_oc > $defw_max ) $w_oc = $defw_max; //izpis dveh podnaslovov gridov $tableHeader_base = "\\trowd\\trhdr\\trgaph20\\trleft0\\trrh162"; $tableHeader_width = "\\cellx".$defw_fc; $tableHeader_title = "\\pard\\intbl\\qc{}\\cell"; $tableHeader_width .= "\\clbrdrb\\brdrs\\brdrw10\\cellx". ( ($kolon-1)*400 + $defw_fc ); $tableHeader_title .= "\\pard\\intbl\\qc{".$this->enkaEncode($spremenljivke['grid_subtitle1'])."}\\cell"; $tableHeader_width .= "\\clbrdrl\\brdrs\\brdrw10\\clbrdrb\\brdrs\\brdrw10\\cellx". ( ($kolon-1)*800 + $defw_fc ); $tableHeader_title .= "\\pard\\intbl\\qc{".$this->enkaEncode($spremenljivke['grid_subtitle2'])."}\\cell"; $tableHeader_finish = "\\pard\\intbl\\row"; $this->rtf->MyRTF .= $this->rtf->enkaEncode($tableHeader_base.$tableHeader_width.$tableHeader_title.$tableHeader_finish); $tableHeader_base = "\\trowd\\trhdr\\trgaph20\\trleft0\\trrh162"; $tableHeader_width = "\\cellx".$defw_fc; $tableHeader_title = "\\pard\\intbl\\qc{}\\cell"; $tableHeader_finish = "\\pard\\intbl\\row"; $sqlVsehVrednsti = sisplet_query("SELECT naslov, id, variable, part FROM srv_grid WHERE spr_id='".$spremenljivke['id']."' ORDER BY part, vrstni_red"); $rowCnt = 0; $border = false; while ($rowVsehVrednosti = mysqli_fetch_assoc($sqlVsehVrednsti)) { //izris srednjega borderja if($border == false && $rowVsehVrednosti['part'] == 2){ $border = true; $leftBorder = '\clbrdrl\brdrs\brdrw10'; } else $leftBorder = ''; $rowCnt++; $tableHeader_width .= $leftBorder."\\cellx". ( $rowCnt * 800 +$defw_fc ); // če ni naslova vzamemo variable $stringHeader_title = $this->enkaEncode( ( $rowVsehVrednosti['naslov'] ) ? $rowVsehVrednosti['naslov'] : $rowVsehVrednosti['variable'] ); $tableHeader_title .= "\\pard\\intbl\\qc{".$this->enkaEncode($stringHeader_title)."}\\cell"; } // izpišemo header celice $this->rtf->MyRTF .= $this->rtf->enkaEncode($tableHeader_base.$tableHeader_width.$tableHeader_title.$tableHeader_finish); // loopamo skozi vrstice in pripravimo podatke za tabelo z radii $sqlVrednosti = sisplet_query("SELECT * FROM srv_vrednost WHERE spr_id='".$spremenljivke['id']."' ORDER BY vrstni_red"); while ($rowVrednost = mysqli_fetch_assoc($sqlVrednosti)) { $i=1; // če ni naslova vzamemo naslov2, če ne pa variable $stringCell_title = $this->enkaEncode( ( $rowVrednost['naslov'] ) ? $rowVrednost['naslov'] : ( ( $rowVrednost['naslov2'] ) ? $rowVrednost['naslov2'] : $rowVrednost['variable'] ) ); // še dodamo textbox če je polj other $_txt = ''; if ( $rowVrednost['other'] == 1 && $this->getUserId() ) { $sqlOtherText = sisplet_query("SELECT * FROM srv_data_text".$this->db_table." WHERE spr_id='".$spremenljivke['id']."' AND vre_id='".$rowVrednost['id']."' AND usr_id='".$this->getUserId()."'"); $row4 = mysqli_fetch_assoc($sqlOtherText); $_txt = ' '.$row4['text']; } $stringCell_title .= $_txt; $tableHeader_base = "\\trowd\\trgaph12\\trleft0\\trrh262"; $tableHeader_width = "\\cellx".$defw_fc; $tableHeader_title = "\\pard\\intbl\\ql\cf0 ".$this->enkaEncode($stringCell_title)."\\cf0\\cell"; $tableHeader_finish = "\\pard\\intbl\\row"; $border = false; $sqlVsehVrednsti = sisplet_query("SELECT id, part FROM srv_grid WHERE spr_id='".$spremenljivke['id']."' ORDER BY part, vrstni_red"); while ($rowVsehVrednosti = mysqli_fetch_assoc($sqlVsehVrednsti)){ // poiščemo kaj je odgovoril uporabnik: $sqlUserAnswer = sisplet_query("SELECT grd_id FROM srv_data_checkgrid".$this->db_table." WHERE spr_id = '".$rowVrednost['spr_id']."' AND usr_id = '".$this->getUserId()."' AND vre_id = '".$rowVrednost['id']."' AND grd_id = '".$rowVsehVrednosti['id']."' "); $userAnswer = mysqli_fetch_assoc($sqlUserAnswer); //izris srednjega borderja if($border == false && $rowVsehVrednosti['part'] == 2){ $border = true; $leftBorder = '\clbrdrl\brdrs\brdrw10'; } else $leftBorder = ''; $full = ($rowVsehVrednosti['id'] == $userAnswer['grd_id']) ? true : false; if($spremenljivke['tip'] == 6){ $tableHeader_width .= "\clvertalc".$leftBorder."\\cellx". ( $i * 800 +$defw_fc ); if($full) $tableHeader_title .= "\\pard\\intbl\\qc{". $this->rtf->ImageToString("radio2.png", "15")."}\\cell"; else $tableHeader_title .= "\\pard\\intbl\\qc{". $this->rtf->ImageToString("radio.png", "15")."}\\cell"; } elseif($spremenljivke['tip'] == 16){ $tableHeader_width .= "\clvertalc".$leftBorder."\\cellx". ( $i * 800 +$defw_fc ); if($full) $tableHeader_title .= "\\pard\\intbl\\qc{". $this->rtf->ImageToString("checkbox2.png", "15")."}\\cell"; else $tableHeader_title .= "\\pard\\intbl\\qc{". $this->rtf->ImageToString("checkbox.png", "15")."}\\cell"; } $i++; } $this->rtf->MyRTF .= $this->rtf->enkaEncode($tableHeader_base.$tableHeader_width.$tableHeader_title.$tableHeader_finish); } $this->rtf->MyRTF .= "}"; $this->rtf->new_line(1); } // Izpis mesanega multigrida function displayGridMultiple($spremenljivke){ // razsiritev ce imamo landscape postavitev $expand_width = $this->landscape == 1 ? 1.5 : 1; $this->rtf->MyRTF .= "{\\par\\fs22"; $kolon = 0; // Preverjamo ce imamo filter na podskupini grida - SAMO CE NE PRIHAJAMO IZ MAILA! $tmp_svp_pv = array(); if($this->usr_type == null){ $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, '_')); } } // 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='".$spremenljivke['id']."' AND m.spr_id=s.id"); while($rowSubGrid = mysqli_fetch_array($sqlSubGrid)){ if((in_array($rowSubGrid['spr_id'],$tmp_svp_pv) || count($tmp_svp_pv) == 0) && $this->checkSpremenljivka($rowSubGrid['spr_id'], $gridMultiple=true)){ // Ce gre za podskupino multigrid z dropdowni - potem izrisemo samo en stolpec if($rowSubGrid['tip'] == 6 && $rowSubGrid['enota'] == 2){ $kolon ++; } else{ $sqlStVrednosti = sisplet_query("SELECT count(*) FROM srv_grid WHERE spr_id='".$rowSubGrid['spr_id']."' "); $rowStVrednost = mysqli_fetch_array($sqlStVrednosti); $kolon += $rowStVrednost['count(*)']; } } } $defw_full = 10500*$expand_width; if($kolon < 6){ $defw_fc = 4300*$expand_width; // first cell width } else{ $defw_fc = 2000*$expand_width; // first cell width } $kolon ++; $w_oc = ( $defw_full - $defw_fc ) / $kolon; $defw_max = floor($w_oc); $tableHeader_base = "\\trowd\\trhdr\\trgaph20\\trleft0\\trrh162"; $tableHeader_width = "\\cellx".$defw_fc; $tableHeader_title = "\\pard\\intbl\\qc{}\\cell"; $tableHeader_finish = "\\pard\\intbl\\row"; /*$sqlVsehVrednsti = sisplet_query("SELECT g.naslov,g.variable,m.vrstni_red FROM srv_grid g, srv_grid_multiple m WHERE m.parent='".$spremenljivke['id']."' AND g.spr_id=m.spr_id ORDER BY m.vrstni_red"); $rowCnt = 0; while ($rowVsehVrednosti = mysqli_fetch_assoc($sqlVsehVrednsti)) { $rowCnt++; $tableHeader_width .= "\\cellx". ( $rowCnt * $defw_max + $defw_fc ); // če ni naslova vzamemo variable $stringHeader_title = $this->enkaEncode( ( $rowVsehVrednosti['naslov'] ) ? $rowVsehVrednosti['naslov'] : $rowVsehVrednosti['variable'] ); $tableHeader_title .= "\\pard\\intbl\\qc{".$this->enkaEncode($stringHeader_title)."}\\cell"; } // izpišemo header celice $this->rtf->MyRTF .= $this->rtf->enkaEncode($tableHeader_base.$tableHeader_width.$tableHeader_title.$tableHeader_finish);*/ // izišemo header celice $rowCnt = 0; $sqlSubGrid = sisplet_query("SELECT m.spr_id, m.vrstni_red, s.tip, s.enota FROM srv_grid_multiple m, srv_spremenljivka s WHERE m.parent='".$spremenljivke['id']."' AND m.spr_id=s.id ORDER BY m.vrstni_red"); while($rowSubGrid = mysqli_fetch_array($sqlSubGrid)){ if((in_array($rowSubGrid['spr_id'],$tmp_svp_pv) || count($tmp_svp_pv) == 0) && $this->checkSpremenljivka($rowSubGrid['spr_id'], $gridMultiple=true)){ $sqlVsehVrednsti = sisplet_query("SELECT naslov, variable FROM srv_grid WHERE spr_id='".$rowSubGrid['spr_id']."' "); while ($rowVsehVrednosti = mysqli_fetch_assoc($sqlVsehVrednsti)) { // Pri multigrid dropdownih ne izpisujemo naslova if($rowSubGrid['tip'] != 6 || $rowSubGrid['enota'] != 2){ $rowCnt++; $tableHeader_width .= "\\cellx". ( $rowCnt * $defw_max + $defw_fc ); // če je naslov null izpišemo variable $stringHeader_title = $this->enkaEncode( $rowVsehVrednosti['naslov'] ? $rowVsehVrednosti['naslov'] : $rowVsehVrednosti['variable'] ); $tableHeader_title .= "\\pard\\intbl\\qc{".$this->enkaEncode($stringHeader_title)."}\\cell"; } else{ $rowCnt++; $tableHeader_width .= "\\cellx". ( $rowCnt * $defw_max + $defw_fc ); $tableHeader_title .= "\\pard\\intbl\\qc{}\\cell"; break; } } } } // izpišemo header celice $this->rtf->MyRTF .= $this->rtf->enkaEncode($tableHeader_base.$tableHeader_width.$tableHeader_title.$tableHeader_finish); // loopamo skozi vrstice in pripravimo podatke za tabelo z radii $row_count = 1; $sqlVrednosti = sisplet_query("SELECT * FROM srv_vrednost WHERE spr_id='".$spremenljivke['id']."' ORDER BY vrstni_red"); while ($rowVrednost = mysqli_fetch_assoc($sqlVrednosti)) { $skipRow = false; // barva vrstice $row_color = ($row_count%2 == 1) ? '\\clcbpat18' : ''; // Ce imamo nastavljeno preskakovanje podvprasanj preverimo ce je kaksen odgovor v vrstici if($this->skipEmptySub == 1){ $skipRow = true; // Loop po podskupinah gridov $sqlSubGrid = sisplet_query("SELECT m.spr_id, s.tip FROM srv_grid_multiple m, srv_spremenljivka s WHERE m.parent='".$spremenljivke['id']."' AND m.spr_id=s.id ORDER BY m.vrstni_red"); while($rowSubGrid = mysqli_fetch_array($sqlSubGrid)){ if((in_array($rowSubGrid['spr_id'],$tmp_svp_pv) || count($tmp_svp_pv) == 0) && $this->checkSpremenljivka($rowSubGrid['spr_id'], $gridMultiple=true)){ $sqlSubVar = sisplet_query("SELECT * FROM srv_vrednost WHERE spr_id='".$rowSubGrid['spr_id']."' AND vrstni_red='".$rowVrednost['vrstni_red']."' "); $rowSubVar = mysqli_fetch_array($sqlSubVar); if($rowSubGrid['tip'] == 6) $sqlUserAnswer = sisplet_query("SELECT grd_id FROM srv_data_grid".$this->db_table." WHERE spr_id = '".$rowSubGrid['spr_id']."' AND usr_id = '".$this->getUserId()."' AND vre_id = '".$rowSubVar['id']."'"); elseif($rowSubGrid['tip'] == 16) $sqlUserAnswer = sisplet_query("SELECT grd_id FROM srv_data_checkgrid".$this->db_table." WHERE spr_id = '".$rowSubGrid['spr_id']."' AND usr_id = '".$this->getUserId()."' AND vre_id = '".$rowSubVar['id']."'"); else $sqlUserAnswer = sisplet_query("SELECT grd_id, text FROM srv_data_textgrid".$this->db_table." WHERE spr_id = '".$rowSubGrid['spr_id']."' AND usr_id = '".$this->getUserId()."' AND vre_id = '".$rowSubVar['id']."'"); if(mysqli_num_rows($sqlUserAnswer) > 0){ $skipRow = false; break; } } } } if($skipRow == false){ $i=1; // če ni naslova vzamemo naslov2, če ne pa variable $stringCell_title = $this->enkaEncode( ( $rowVrednost['naslov'] ) ? $rowVrednost['naslov'] : ( ( $rowVrednost['naslov2'] ) ? $rowVrednost['naslov2'] : $rowVrednost['variable'] ) ); $tableHeader_base = "\\trowd\\trgaph12\\trleft0\\trrh262"; $tableHeader_width = $row_color."\\cellx".$defw_fc; $tableHeader_title = "\\pard\\intbl\\ql\cf0 ".$this->enkaEncode($stringCell_title)."\\cf0\\cell"; $tableHeader_finish = "\\pard\\intbl\\row"; // 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='".$spremenljivke['id']."' AND s.id=m.spr_id ORDER BY m.vrstni_red"); while($rowSubGrid = mysqli_fetch_array($sqlSubGrid)){ if((in_array($rowSubGrid['spr_id'],$tmp_svp_pv) || count($tmp_svp_pv) == 0) && $this->checkSpremenljivka($rowSubGrid['spr_id'], $gridMultiple=true)){ // Dobimo se var_id od trenutne podskupine $sqlSubVar = sisplet_query("SELECT * FROM srv_vrednost WHERE spr_id='".$rowSubGrid['spr_id']."' AND vrstni_red='".$rowVrednost['vrstni_red']."' "); $rowSubVar = mysqli_fetch_array($sqlSubVar); // Ce imamo dropdown mg izpisemo samo izbrani odg. if($rowSubGrid['tip'] == 6 && $rowSubGrid['enota'] == 2){ $sqlUserAnswer = sisplet_query("SELECT d.grd_id, g.naslov, g.variable FROM srv_grid g INNER JOIN srv_data_grid".$this->db_table." d ON g.id=d.grd_id AND g.spr_id=d.spr_id WHERE d.spr_id='".$rowSubGrid['spr_id']."' AND d.usr_id='".$this->getUserId()."' AND d.vre_id='".$rowSubVar['id']."'"); if(mysqli_num_rows($sqlUserAnswer) > 0){ $userAnswer = mysqli_fetch_assoc($sqlUserAnswer); $title = $this->enkaEncode( $userAnswer['naslov'] ? $userAnswer['naslov'] : $userAnswer['variable'] ); } else $title = ''; $tableHeader_width .= "\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10".$row_color."\\cellx". ( $i * $defw_max + $defw_fc ); $tableHeader_title .= '\\pard\\intbl'.$this->rtf->color(12).' '.$this->rtf->enkaEncode($title).$this->rtf->color(0).'\qc{}\\cell'; $i++; } else{ $sqlVsehVrednsti = sisplet_query("SELECT id FROM srv_grid WHERE spr_id='".$rowSubGrid['spr_id']."' ORDER BY vrstni_red"); while ($rowVsehVrednosti = mysqli_fetch_assoc($sqlVsehVrednsti)){ // poiščemo kaj je odgovoril uporabnik: if($rowSubGrid['tip'] == 6) $sqlUserAnswer = sisplet_query("SELECT grd_id FROM srv_data_grid".$this->db_table." WHERE spr_id = '".$rowSubVar['spr_id']."' AND usr_id = '".$this->getUserId()."' AND vre_id = '".$rowSubVar['id']."'"); elseif($rowSubGrid['tip'] == 16) $sqlUserAnswer = sisplet_query("SELECT grd_id FROM srv_data_checkgrid".$this->db_table." WHERE spr_id = '".$rowSubVar['spr_id']."' AND usr_id = '".$this->getUserId()."' AND vre_id = '".$rowSubVar['id']."' AND grd_id = '".$rowVsehVrednosti['id']."' "); else $sqlUserAnswer = sisplet_query("SELECT grd_id, text FROM srv_data_textgrid".$this->db_table." WHERE spr_id = '".$rowSubVar['spr_id']."' AND usr_id = '".$this->getUserId()."' AND vre_id = '".$rowSubVar['id']."' AND grd_id = '".$rowVsehVrednosti['id']."' "); $userAnswer = mysqli_fetch_assoc($sqlUserAnswer); $full = ($rowVsehVrednosti['id'] == $userAnswer['grd_id']) ? true : false; if($rowSubGrid['tip'] == 6){ $tableHeader_width .= "\clvertalc".$row_color."\\cellx". ( $i * $defw_max + $defw_fc ); if($full) $tableHeader_title .= "\\pard\\intbl\\qc{". $this->rtf->ImageToString("radio2.png", "15")."}\\cell"; else $tableHeader_title .= "\\pard\\intbl\\qc{". $this->rtf->ImageToString("radio.png", "15")."}\\cell"; } elseif($rowSubGrid['tip'] == 16){ $tableHeader_width .= "\clvertalc".$row_color."\\cellx". ( $i * $defw_max + $defw_fc ); if($full) $tableHeader_title .= "\\pard\\intbl\\qc{". $this->rtf->ImageToString("checkbox2.png", "15")."}\\cell"; else $tableHeader_title .= "\\pard\\intbl\\qc{". $this->rtf->ImageToString("checkbox.png", "15")."}\\cell"; } else{ $tableHeader_width .= "\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10".$row_color."\\cellx". ( $i * $defw_max + $defw_fc ); $tableHeader_title .= '\\pard\\intbl'.$this->rtf->color(12).' '.$this->rtf->enkaEncode($userAnswer['text']).$this->rtf->color(0).'\qc{}\\cell'; } $i++; } } } } $row_count++; $this->rtf->MyRTF .= $this->rtf->enkaEncode($tableHeader_base.$tableHeader_width.$tableHeader_title.$tableHeader_finish); } } $this->rtf->MyRTF .= "}"; $this->rtf->new_line(1); } function createFrontPage() { global $lang; // razsiritev ce imamo landscape postavitev $expand_width = $this->landscape == 1 ? 1.5 : 1; $this->rtf->new_line(10); if(!$this->getUserId()){ $this->rtf->TextCell($this->rtf->bold(1).$this->enkaEncode( SurveyInfo::getInstance()->getSurveyTitle()).$this->rtf->bold(0).'\\line\n '.$lang['export_firstpage_results'], array('width' => 9500*$expand_width, 'height' => 3, 'align' => 'center', 'valign' => 'middle' , 'border' => array('top','bottom', 'left','right'), 'colorF' => "0", 'colorB' => "0" ) ); } else{ $this->rtf->TextCell($this->enkaEncode( SurveyInfo::getInstance()->getSurveyTitle()), array('width' => 9500*$expand_width, 'height' => 3, 'align' => 'center', 'valign' => 'middle' , 'border' => array('top','bottom', 'left','right'), 'colorF' => "0", 'colorB' => "0" ) ); } $this->rtf->new_line(3); // dodamo info: $this->rtf->TextCell("", array('width' => 9500*$expand_width, 'height' => 1, 'align' => 'left', 'valign' => 'bottom' , 'border' => array('bottom'),'colorF' => "0" ) ); $infoTable = array(); array_push( $infoTable, array( $lang['export_firstpage_shortname'].': '.$this->enkaEncode(SurveyInfo::getInstance()->getSurveyTitle()), "" ) ); if ( SurveyInfo::getInstance()->getSurveyTitle() != SurveyInfo::getInstance()->getSurveyAkronim() ) array_push( $infoTable, array( $lang['export_firstpage_longname'].': '.$this->enkaEncode(SurveyInfo::getInstance()->getSurveyAkronim()), "" ) ); array_push( $infoTable, array( $lang['export_firstpage_qcount'].': '.SurveyInfo::getInstance()->getSurveyQuestionCount(), "" ) ); // Aktiviranost $activity = SurveyInfo:: getSurveyActivity(); $_last_active = end($activity); if (SurveyInfo::getSurveyColumn('active') == 1) { array_push( $infoTable, array( $this->rtf->color(11).$this->enkaEncode($lang['srv_anketa_active2']).$this->rtf->color(0), "") ); } else { # preverimo ali je bila anketa že aktivirana if (!isset($_last_active['starts'])) { # anketa še sploh ni bila aktivirana array_push( $infoTable, array( $this->rtf->color(17).$this->enkaEncode($lang['srv_survey_non_active_notActivated']).$this->rtf->color(0), "") ); } else { # anketa je že bila aktivirna ampak je sedaj neaktivna array_push( $infoTable, array( $this->rtf->color(17).$this->enkaEncode($lang['srv_survey_non_active']).$this->rtf->color(0), "") ); } } // Aktivnost if( count($activity) > 0 ){ array_push( $infoTable, array( $lang['export_firstpage_active_from'].': '.SurveyInfo::getInstance()->getSurveyStartsDate(), $lang['export_firstpage_active_until'].': '.SurveyInfo::getInstance()->getSurveyExpireDate() ) ); } array_push( $infoTable, array( $lang['export_firstpage_author'].': '.SurveyInfo::getInstance()->getSurveyInsertName(), $lang['export_firstpage_edit'].': '.SurveyInfo::getInstance()->getSurveyEditName() ) ); array_push( $infoTable, array( $lang['export_firstpage_date'].': '.SurveyInfo::getInstance()->getSurveyInsertDate(), $lang['export_firstpage_date'].': '.SurveyInfo::getInstance()->getSurveyEditDate() ) ); array_push( $infoTable, array( $lang['export_firstpage_desc'].': '.SurveyInfo::getInstance()->getSurveyInfo(), "" ) ); $this->rtf->TableFromArray( array( 4750*$expand_width, 4750*$expand_width ), $infoTable, array('spacer' => 0)); if($this->getUserId()) $this->rtf->new_page(); } function enkaEncode($text) { global $site_url; // preverimo text za img tage in jih zamenjamo z ustrezno sliko $pattern = '/]+src[\\s=\'"]'; $pattern .= '+([^"\'>\\s]+)/is'; if(preg_match($pattern, $text, $match, PREG_OFFSET_CAPTURE)){ // relativna pot if(substr($match[1][0], 0, 1) == '/') $image = $site_url.$match[1][0]; else $image = $match[1][0]; $file = @file_get_contents($image); $result .= "{"; $result .= "\\pict\\jpegblip\\picscalex100\\picscaley100\\bliptag132000428 "; $result .= trim(bin2hex($file)); $result .= "\n}\n"; $text = preg_replace("/]+\>/i", $result, $text); } // popravimo sumnike ce je potrebno $text = html_entity_decode($text, ENT_NOQUOTES, 'UTF-8'); return strip_tags($text); } /* Skrajsa niz in doda ... nakoncu * snippet(phrase,[max length],[phrase tail]) * snippetgreedy(phrase,[max length before next space],[phrase tail]) * * iz: http://snipplr.com/view/9520/php-substring-without-breaking-words/ */ function snippet($text,$length=64,$tail="...") { $text = trim($text); $txtl = strlen($text); if($txtl > $length) { for($i=1;$text[$length-$i]!=" ";$i++) { if($i == $length) { return substr($text,0,$length) . $tail; } } $text = substr($text,0,$length-$i+1) . $tail; } return $text; } function setGrupa($grupa) {$this->grupa = $grupa;} function getGrupa() {return $this->grupa;} function setUserId($usrId) {$this->usr_id = $usrId;} function getUserId() {return ($this->usr_id)?$this->usr_id:false;} function setDisplayFrontPage($display) {$this->pi['displayFrontPage'] = $display;} function getDisplayFrontPage() {return ($this->pi['displayFrontPage'] == true || $this->pi['displayFrontPage'] == 1);} /** * @desc preveri ali so na trenutni grupi prikazana vprasanja (zaradi branchinga) */ function checkGrupa () { $sql = sisplet_query("SELECT id FROM srv_spremenljivka WHERE gru_id = '".$this->grupa."'"); if (!$sql) echo mysqli_error($GLOBALS['connect_db']); while ($row = mysqli_fetch_array($sql)) { if ($this->checkSpremenljivka($row['id'])) return true; } return false; } /** * @desc preveri ali je spremenljivka vidna (zaradi branchinga) */ function checkSpremenljivka ($spremenljivka, $gridMultiple=false) { $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; // Kalklulacije in kvote ne prikazujemo if($row['tip'] == 22 || $row['tip'] == 25) return false; // Preverjamo ce je vprasanje prazno in ce preskakujemo prazne if($this->skipEmpty == 1 && !$gridMultiple){ $isEmpty = true; 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->getUserId()."' AND vre_id!='-2'"); 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) $sqlUserAnswer = sisplet_query("SELECT * FROM srv_data_grid".$this->db_table." WHERE spr_id = '".$row['id']."' AND usr_id = '".$this->getUserId()."'"); 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->getUserId()."'"); else $sqlUserAnswer = sisplet_query("SELECT * FROM srv_data_textgrid".$this->db_table." WHERE spr_id = '".$row['id']."' AND usr_id = '".$this->getUserId()."'"); if(mysqli_num_rows($sqlUserAnswer) > 0) $isEmpty = false; break; case 7: //number case 8: //datum case 18: //vsota case 21: //besedilo* $sqlUserAnswer = sisplet_query("SELECT * FROM srv_data_text".$this->db_table." WHERE spr_id='".$row['id']."' AND usr_id='".$this->getUserId()."'"); if(mysqli_num_rows($sqlUserAnswer) > 0) $isEmpty = false; break; case 17: //ranking $sqlUserAnswer = sisplet_query("SELECT * FROM srv_data_rating WHERE spr_id=".$row['id']." AND usr_id='".$this->getUserId()."'"); 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) $sqlUserAnswer = sisplet_query("SELECT grd_id FROM srv_data_grid".$this->db_table." WHERE spr_id = '".$rowSubGrid['spr_id']."' AND usr_id = '".$this->getUserId()."'"); elseif($rowSubGrid['tip'] == 16) $sqlUserAnswer = sisplet_query("SELECT grd_id FROM srv_data_checkgrid".$this->db_table." WHERE spr_id = '".$rowSubGrid['spr_id']."' AND usr_id = '".$this->getUserId()."'"); else $sqlUserAnswer = sisplet_query("SELECT grd_id, text FROM srv_data_textgrid".$this->db_table." WHERE spr_id = '".$rowSubGrid['spr_id']."' AND usr_id = '".$this->getUserId()."'"); 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; default: $isEmpty = false; break; } if($isEmpty == true){ return false; } } return true; } /** * @desc preveri ali se elementi v podanem IFu prikazejo ali ne */ function checkIf ($if) { if ($if == 0) return true; // preverimo po strukturi navzgor $sql = sisplet_query("SELECT * FROM srv_branching WHERE element_if = '".$if."'"); if (!$sql) echo mysqli_error($GLOBALS['connect_db']); $row = mysqli_fetch_array($sql); if (!$this->checkIf($row['parent'])) return false; // ce je IF oznacen kot blok, potem se vedno prikaze $sql = sisplet_query("SELECT * FROM srv_if WHERE id = '$if'"); if (!$sql) echo mysqli_error($GLOBALS['connect_db']); $row = mysqli_fetch_array($sql); if ($row['tip'] == 1) return true; $eval = "if ("; $sql = sisplet_query("SELECT * FROM srv_condition WHERE if_id = '$if' ORDER BY vrstni_red ASC"); if (!$sql) echo mysqli_error($GLOBALS['connect_db']); $i = 0; // zgeneriramo pogoje z oklepaji, ki jih potem spustimo skozi eval while ($row = mysqli_fetch_array($sql)) { if ($i++ != 0) if ($row['conjunction'] == 0) $eval .= ' && '; else $eval .= ' || '; if ($row['negation'] == 1) $eval .= ' ! '; for ($i=1; $i<=$row['left_bracket']; $i++) $eval .= ' ( '; if ($this->checkCondition($row[id])) $eval .= ' true '; else $eval .= ' false '; for ($i=1; $i<=$row['right_bracket']; $i++) $eval .= ' ) '; } $eval .= ") return true; else return false; "; // ne glih best practice, ampak takle mamo... return eval($eval); } /** * @desc preveri podani condition */ function checkCondition ($condition) { $sql = sisplet_query("SELECT * FROM srv_condition WHERE id = '$condition'"); if (!$sql) echo mysqli_error($GLOBALS['connect_db']); $row = mysqli_fetch_array($sql); // obicne spremenljivke if ($row['spr_id'] > 0) { $sql2 = sisplet_query("SELECT * FROM srv_spremenljivka WHERE id = '$row[spr_id]'"); $row2 = mysqli_fetch_array($sql2); // radio, checkbox, dropdown in multigrid if ($row2['tip'] <= 3 || $row2['tip'] == 6) { // obicne spremenljivke if ($row['vre_id'] == 0) { $sql3 = sisplet_query("SELECT * FROM srv_condition_vre c, srv_data_vrednost v WHERE c.cond_id='$condition' AND c.vre_id=v.vre_id AND v.spr_id='$row[spr_id]' AND usr_id='".$this->getUserId()."'"); if ($row['operator'] == 0 && mysqli_num_rows($sql3) == 0) return false; elseif ($row['operator'] == 1 && mysqli_num_rows($sql3) > 0) return false; // multigrid } elseif ($row['vre_id'] > 0) { $sql3 = sisplet_query("SELECT * FROM srv_condition_grid c, srv_data_grid d WHERE c.cond_id='$condition' AND d.spr_id='$row[spr_id]' AND c.grd_id=d.grd_id AND d.usr_id='".$this->getUserId()."'"); if (!$sql3) echo mysqli_error($GLOBALS['connect_db']); if ($row['operator'] == 0 && !mysqli_num_rows($sql3) > 0) return false; elseif ($row['operator'] == 1 && !mysqli_num_rows($sql3) == 0) return false; } // number in text } else { $sql3 = sisplet_query("SELECT * FROM srv_data_text".$this->db_table." WHERE spr_id='$row[spr_id]' AND usr_id='".$this->getUserId()."'"); if (!$sql3) echo mysqli_error($GLOBALS['connect_db']); $row3 = mysqli_fetch_array($sql3); if ($row['operator'] == 0 && !($row3['text'] == $row['text'])) return false; elseif ($row['operator'] == 1 && !($row3['text'] != $row['text'])) return false; elseif ($row['operator'] == 2 && !($row3['text'] < $row['text'])) return false; elseif ($row['operator'] == 3 && !($row3['text'] <= $row['text'])) return false; elseif ($row['operator'] == 4 && !($row3['text'] > $row['text'])) return false; elseif ($row['operator'] == 5 && !($row3['text'] >= $row['text'])) return false; } // recnum } elseif ($row['spr_id'] == -1) { $sqlu = sisplet_query("SELECT * FROM srv_user WHERE id = '".$this->getUserId()."'"); $rowu = mysqli_fetch_array($sqlu); if (!($rowu['recnum'] % $row['modul'] == $row['ostanek'])) return false; } return true; } /** * @desc poisce naslednjo stran - grupo, 0 pomeni konec */ function findNextGrupa() { //vrstni red trenutne grupe if ($this->grupa > 0) { $sql = sisplet_query("SELECT * FROM srv_grupa WHERE id = '".$this->grupa."'"); $row = mysqli_fetch_array($sql); $vrstni_red = $row['vrstni_red']; } else { $vrstni_red = 0; } $sql = sisplet_query("SELECT * FROM srv_grupa WHERE ank_id='".$this->anketa['id']."' AND vrstni_red>'".$vrstni_red."' ORDER BY vrstni_red ASC LIMIT 1"); // naslednja stran if (mysqli_num_rows($sql) > 0) { $row = mysqli_fetch_array($sql); return $row['id']; } // konec else { return 0; } } // preverja ce je v stringu img in vrne razbit niz ce je function checkImage($text) { $textArray = array(); $pattern = '/]+src[\\s=\'"]'; $pattern .= '+([^"\'>\\s]+)/is'; if(preg_match($pattern, $text, $match, PREG_OFFSET_CAPTURE)){ $textArray['image'] = $match[1][0]; $text = preg_replace("/]+\>/i", "", $text); $textArray['text1'] = substr($text, 0, $match[0][1]); $textArray['text2'] = substr($text, $match[0][1]); } return $textArray; } function displayIf($if){ global $lang; $sql_if = sisplet_query("SELECT * FROM srv_if WHERE id = '$if'"); $row_if = mysqli_fetch_array($sql_if); // 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 .= ') '; } $this->rtf->add_text($this->rtf->bold(1).$this->enkaEncode($output).$this->rtf->bold(0)); } /** * poisce, ce ima podani element parenta, ki je loop * */ function find_parent_loop ($element_spr, $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']."'"); 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); if ($spr['tip'] == 2 || $spr['tip'] == 3 || $spr['tip'] == 9) { $data_vrednost = array(); if($spr['tip'] == 9) $sql1 = sisplet_query("SELECT vre_id FROM srv_data_text".$this->db_table." WHERE spr_id='$spr_id' AND usr_id='".$this->getUserId()."'"); else $sql1 = sisplet_query("SELECT vre_id FROM srv_data_vrednost".$this->db_table." WHERE spr_id='$spr_id' AND usr_id='".$this->getUserId()."'"); 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()."'"); $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['id']); return Common::getInstance()->dataPiping($text, $this->usr_id, $this->loop_id); } function outputUser() { $sqlGrupeString = "SELECT id FROM srv_grupa WHERE ank_id='".$this->anketa['id']."' ORDER BY vrstni_red"; $sqlGrupe = sisplet_query($sqlGrupeString); // filtriramo spremenljivke glede na profil - SAMO CE NE PRIHAJAMO IZ MAILA! $tmp_svp_pv = array(); if($this->usr_type == null){ SurveyVariablesProfiles :: Init($this->anketa['id'], $this->resp_id, true, false); $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, '_')); } } 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']); if ($if_id > 0){ $sql1 = sisplet_query("SELECT * FROM srv_loop WHERE if_id = '$if_id'"); $row1 = mysqli_fetch_array($sql1); $this->loop_id = $this->findNextLoopId($row1['if_id']); $if = Cache::srv_if($if_id); $loop_title = $if['label']; // gremo cez vse spremenljivke v trenutnem loopu while($this->loop_id != null){ // Izrisemo naslov loopa $this->rtf->add_text($this->rtf->color(9).$this->rtf->bold(1).$this->enkaEncode($this->dataPiping($loop_title)).$this->rtf->bold(0).$this->rtf->color(0)); $this->rtf->new_line(1); $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']; if ( $this->checkSpremenljivka ($spremenljivka) /*|| $this->showIf == 1*/ ) { // lahko izrišemo spremenljivke //nastavimo velikost pisave $this->rtf->MyRTF .= $this->rtf->_font_size($this->font * 2); // Ce imamo kombinirano tabelo pogledamo ce prikazujemo katero od podtabel if($rowSpremenljivke['tip'] == 24){ $subGrids = array(); $showGridMultiple = false; // 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(in_array($rowSubGrid['spr_id'],$tmp_svp_pv) || count($tmp_svp_pv) == 0){ $showGridMultiple = true; break; } } } // ce je nastavljen profil s filtriranimi spremenljivkami if(in_array($spremenljivka,$tmp_svp_pv) || count($tmp_svp_pv) == 0 || ($rowSpremenljivke['tip'] == 24 && $showGridMultiple)){ //kratek izpis rezultatov spremenljivke - samo pri radio, checkbox, multiradio, multicheckbox, besedilo if( $this->type == 0 && $this->getUserId() && ($rowSpremenljivke['tip'] < 4 || $rowSpremenljivke['tip'] == 6 || $rowSpremenljivke['tip'] == 16 /*|| $rowSpremenljivke['tip'] == 21*/) ){ if($rowSpremenljivke['tip'] > 3 ) $this->outputVprasanje($rowSpremenljivke); $this->outputSpremenljivkeValues($rowSpremenljivke); } elseif($this->type == 2 && $rowSpremenljivke['tip'] != 24){ $this->outputSpremenljivkeValues($rowSpremenljivke); } else{ $this->outputVprasanje($rowSpremenljivke); $this->outputSpremenljivke($rowSpremenljivke); } // dodamo presledek (prazno vrstico) $this->rtf->new_line(1); } } } $this->loop_id = $this->findNextLoopId(); } } // Navadne spremenljivke ki niso v loopu else{ $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']; if ( $this->checkSpremenljivka ($spremenljivka) /*|| $this->showIf == 1*/ ) { // lahko izrišemo spremenljivke //nastavimo velikost pisave $this->rtf->MyRTF .= $this->rtf->_font_size($this->font * 2); // Ce imamo kombinirano tabelo pogledamo ce prikazujemo katero od podtabel if($rowSpremenljivke['tip'] == 24){ $subGrids = array(); $showGridMultiple = false; // 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(in_array($rowSubGrid['spr_id'],$tmp_svp_pv) || count($tmp_svp_pv) == 0){ $showGridMultiple = true; break; } } } // ce je nastavljen profil s filtriranimi spremenljivkami if(in_array($spremenljivka,$tmp_svp_pv) || count($tmp_svp_pv) == 0 || ($rowSpremenljivke['tip'] == 24 && $showGridMultiple)){ //kratek izpis rezultatov spremenljivke - samo pri radio, checkbox, multiradio, multicheckbox, besedilo if( $this->type == 0 && $this->getUserId() && ($rowSpremenljivke['tip'] < 4 || $rowSpremenljivke['tip'] == 6 || $rowSpremenljivke['tip'] == 16 /*|| $rowSpremenljivke['tip'] == 21*/) ){ if($rowSpremenljivke['tip'] > 3 ) $this->outputVprasanje($rowSpremenljivke); $this->outputSpremenljivkeValues($rowSpremenljivke); } elseif($this->type == 2 && $rowSpremenljivke['tip'] != 24){ $this->outputSpremenljivkeValues($rowSpremenljivke); } else{ $this->outputVprasanje($rowSpremenljivke); $this->outputSpremenljivke($rowSpremenljivke); } // dodamo presledek (prazno vrstico) $this->rtf->new_line(1); } } } } } if($this->pageBreak == 0){ $this->rtf->TextCell('', array('width' => 9500, 'height' => 0, 'align' => 'center', 'valign' => 'middle' , 'border' => 'top', 'colorF' => "0", 'colorB' => "0" ) ); $this->rtf->new_line(1); } } } ?>