From 75160b12821f7f4299cce7f0b69c83c1502ae071 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anton=20Luka=20=C5=A0ijanec?= Date: Mon, 27 May 2024 13:08:29 +0200 Subject: 2024-02-19 upstream --- .../classes/surveyData/class.SurveyDataCollect.php | 490 +++-- .../classes/surveyData/class.SurveyDataDisplay.php | 2106 +++++++++++--------- .../classes/surveyData/class.SurveyDataFile.php | 7 +- .../classes/surveyData/class.SurveySNDataFile.php | 20 +- 4 files changed, 1466 insertions(+), 1157 deletions(-) (limited to 'admin/survey/classes/surveyData') diff --git a/admin/survey/classes/surveyData/class.SurveyDataCollect.php b/admin/survey/classes/surveyData/class.SurveyDataCollect.php index 75cdd06..6014ca0 100644 --- a/admin/survey/classes/surveyData/class.SurveyDataCollect.php +++ b/admin/survey/classes/surveyData/class.SurveyDataCollect.php @@ -36,6 +36,8 @@ class SurveyDataCollect{ private $header_file_name = null; // Ime header datoteke private $data_file_name = null; // Ime data datoteke private $data_file_time = null; // datum zadnjega userja v data datoteki + + private $new_line_seperator = null; private $max_anketa_time = null; // datum zadnje spremembe v anketi private $max_usr_time = null; // datum zadnje spremembe v tabelu userjev @@ -189,11 +191,10 @@ class SurveyDataCollect{ $qry_survey = sisplet_query("SELECT *, UNIX_TIMESTAMP(edit_time) AS srv_edit_time FROM srv_anketa WHERE id='".$this->sid."'"); $this->survey = mysqli_fetch_assoc($qry_survey); + SurveyInfo::getInstance()->SurveyInit($this->sid); + // Aktivne tabele za podatke v bazi - if ((int)$this->survey['db_table'] == 1) - $this->db_table = '_active'; - else - $this->db_table = ''; + $this->db_table = SurveyInfo::getInstance()->getSurveyArchiveDBString(); // Zadnji cas editiranja ankete $this->max_anketa_time = (int)$this->survey['srv_edit_time']; @@ -315,7 +316,7 @@ class SurveyDataCollect{ $_tmpCnt = 0; // v loopu dodamo podatke v data file - if ($this->noErrors && count($this->_str_users) > 0) { + if ($this->noErrors && is_countable($this->_str_users) && count($this->_str_users) > 0) { foreach ($this->_str_users AS $c => $string_user) { @@ -388,7 +389,7 @@ class SurveyDataCollect{ fclose($file_handler_new); // Pobrisemo staro datoteko - unlink($file_handler_old); + unlink($this->data_file_name); // Preimenujemo novo datoteko rename($data_file_name_new, $this->data_file_name); @@ -475,6 +476,22 @@ class SurveyDataCollect{ $_HEADER['uid']['sequences'] = $sequence; $sequence++; $_data_sequence++; + + // status uporabnika + $_HEADER['status']= array ('tip'=>'m', 'variable'=>'status', 'naslov' =>$lang['srv_data_status'], + 'grids' => array(0 => Array('variables'=>array(0 => Array ('variable'=>'status', 'naslov'=>$lang['srv_data_status'],'spss'=>'F3.0','sequence'=>$sequence)) + ,'naslov'=>$lang['srv_data_status'],'cnt_vars' => 1))); + $_HEADER['status']['sequences'] = $sequence; + $sequence++; + $_data_sequence++; + + // EMAIL VABILO - invitation + $_HEADER['invitation']= array ('tip'=>'m', 'variable'=>'invitation', 'naslov' =>$lang['srv_data_invitation'], + 'grids' => array(0 => Array('variables'=>array(0 => Array ('variable'=>'invitation', 'naslov'=>$lang['srv_data_invitation'],'spss'=>'F3.0','sequence'=>$sequence)) + ,'naslov'=>$lang['srv_data_invitation'],'cnt_vars' => 1))); + $_HEADER['invitation']['sequences'] = $sequence; + $sequence++; + $_data_sequence++; // ustreznost uporabnika $_HEADER['relevance']= array ('tip'=>'m', 'variable'=>'relevance', 'naslov' =>$lang['srv_data_relevance'], @@ -483,22 +500,6 @@ class SurveyDataCollect{ $_HEADER['relevance']['sequences'] = $sequence; $sequence++; $_data_sequence++; - - // EMAIL VABILO - invitation - $_HEADER['invitation']= array ('tip'=>'m', 'variable'=>'invitation', 'naslov' =>$lang['srv_data_invitation'], - 'grids' => array(0 => Array('variables'=>array(0 => Array ('variable'=>'invitation', 'naslov'=>$lang['srv_data_invitation'],'spss'=>'F3.0','sequence'=>$sequence)) - ,'naslov'=>$lang['srv_data_invitation'],'cnt_vars' => 1))); - $_HEADER['invitation']['sequences'] = $sequence; - $sequence++; - $_data_sequence++; - - // status uporabnika - $_HEADER['status']= array ('tip'=>'m', 'variable'=>'status', 'naslov' =>$lang['srv_data_status'], - 'grids' => array(0 => Array('variables'=>array(0 => Array ('variable'=>'status', 'naslov'=>$lang['srv_data_status'],'spss'=>'F3.0','sequence'=>$sequence)) - ,'naslov'=>$lang['srv_data_status'],'cnt_vars' => 1))); - $_HEADER['status']['sequences'] = $sequence; - $sequence++; - $_data_sequence++; // ali je uporabnik lurker $_HEADER['lurker']= array ('tip'=>'m', 'variable'=>'lurker', 'naslov' =>$lang['srv_data_lurker'], @@ -517,23 +518,23 @@ class SurveyDataCollect{ $_data_sequence++; // Recnum - $_HEADER['recnum'] = array('tip'=>'m', 'variable'=>'recnum', 'naslov' =>'Record number', - 'grids' => array(0 => Array('variables'=>array(0 => Array ('variable'=>'recnum','naslov'=>'Record number','spss'=>'F5.0','sortType'=>'number','sequence'=>$sequence)), + $_HEADER['recnum'] = array('tip'=>'m', 'variable'=>'recnum', 'naslov' =>$lang['srv_recnum'], + 'grids' => array(0 => Array('variables'=>array(0 => Array ('variable'=>'recnum','naslov'=>$lang['srv_recnum'],'spss'=>'F5.0','sortType'=>'number','sequence'=>$sequence)), 'naslov'=>'recnum','cnt_vars' => 1))); $_HEADER['recnum']['sequences'] = $sequence; $sequence++; $_data_sequence++; - + // Dodamo geslo - code if ($this->force_show_hiden_system == true) { - $_HEADER['code'] = array('tip'=>'m', 'variable'=>'code', 'naslov' =>'Geslo', - 'grids' => array(0 => Array('variables'=>array(0 => Array ('variable'=>'code','naslov'=>'Geslo','spss'=>'A6','sequence'=>$sequence)), - 'naslov'=>'Geslo','cnt_vars' => 1))); + $_HEADER['code'] = array('tip'=>'m', 'variable'=>'code', 'naslov' =>$lang['password'], + 'grids' => array(0 => Array('variables'=>array(0 => Array ('variable'=>'code','naslov'=>$lang['password'],'spss'=>'A6','sequence'=>$sequence)), + 'naslov'=>$lang['password'],'cnt_vars' => 1))); $_HEADER['code']['sequences'] = $sequence; $sequence++; $_data_sequence++; } - + // Ce vsebuje testne podatke dodamo tudi to polje if ($this->has_test_data) { $_HEADER['testdata']= array ('tip'=>'m', 'variable'=>'testdata', 'naslov' =>$lang['srv_data_test'], @@ -563,8 +564,6 @@ class SurveyDataCollect{ $_array_vrednosti = $this->get_vrednosti(); // za vrednosti ankete $_array_gridi = $this->get_gridi(); // za vrednosti ankete - - $cntHs = 0; // Stejemo loope za numeric vprasanje $num_loop_cnt = array(); @@ -574,22 +573,28 @@ class SurveyDataCollect{ foreach ($this->AllQuestionsOrder AS $_vprasanje_array) { - $cntHs++; + // Ce vrpasanje ni nastavljeno preskocimo + if(!isset($this->AllQuestionsData[$_vprasanje_array['id']])) + continue; # dodelimo vrednosti loopa $rowVprasanje = $this->AllQuestionsData[$_vprasanje_array['id']]; - // nastavimo vrstni red ce loopamo po numericu - $num_loop_cnt[$_vprasanje_array['id']]++; + // nastavimo vrstni red ce loopamo po numericu + if(!isset($num_loop_cnt[$_vprasanje_array['id']])) + $num_loop_cnt[$_vprasanje_array['id']] = 1; + else + $num_loop_cnt[$_vprasanje_array['id']]++; # spremenljivki dodamo loop_id da je konsistentno z podatki $rowVprasanje['spr_id'] = $rowVprasanje['spr_id'].'_'.$_vprasanje_array['loop_id']; - $_vrednosti = $this->get_vrednosti($this->_array_loop_on_spr[$rowVprasanje['if_id']]); - $_loop_vrednost = $this->_array_vre_on_loop[$rowVprasanje['if_id']][$_vprasanje_array['loop_id']]; + $loop_vre = isset($this->_array_loop_on_spr[$rowVprasanje['if_id']]) ? $this->_array_loop_on_spr[$rowVprasanje['if_id']] : null; + $_vrednosti = $this->get_vrednosti($loop_vre); + $_loop_vrednost = isset($this->_array_vre_on_loop[$rowVprasanje['if_id']][$_vprasanje_array['loop_id']]) ? $this->_array_loop_on_spr[$rowVprasanje['if_id']] : null; $spr_id = $rowVprasanje['spr_id']; $vrednostLoopSufix = ''; - + # popravimo ime variable če smo v loopu if(isset($this->_array_vre_on_loop[$rowVprasanje['if_id']][$_vprasanje_array['loop_id']])) { @@ -599,23 +604,28 @@ class SurveyDataCollect{ } else{ # id spremenljivke po kateri loopamo - $_loop_on_spr_id = $this->_array_loop_on_spr[$rowVprasanje['if_id']]; + $_loop_on_spr_id = isset($this->_array_loop_on_spr[$rowVprasanje['if_id']]) ? $this->_array_loop_on_spr[$rowVprasanje['if_id']] : null; #variabla spremenljivke po kateri loopamo $_loop_on_spr_variable = $this->AllQuestionsData[$_loop_on_spr_id]['variable']; + + if(isset($_vrednosti[$_loop_vrednost])){ + + # id variable po kateri loopamo (v okviru $_loop_on_spr_id) + $_loop_on_variable_id = $_vrednosti[$_loop_vrednost]; + + # naslov variable po keteri loopamo (v okviru $_loop_on_spr_id) + $_vrednost_naslov = $_array_vrednosti[$_loop_on_spr_id][$_loop_on_variable_id['id']]['naslov']; + $rowVprasanje['variable'] = strip_tags($rowVprasanje['variable'])."_".$_vrednosti[$_loop_vrednost]['variable']; + $vrednostLoopSufix = "_".$_vrednosti[$_loop_vrednost]['variable']; + + if ($_vrednost_naslov != '' && $_loop_on_spr_variable != '' && $rowVprasanje['naslov'] != '') { + # zamenjamo ime spremenljivke med #q1# (#q1# z naslovom trenutne variable) + $rowVprasanje['naslov'] = str_replace("#$_loop_on_spr_variable#", "$_vrednost_naslov", $rowVprasanje['naslov']); + } + } - # id variable po kateri loopamo (v okviru $_loop_on_spr_id) - $_loop_on_variable_id = $_vrednosti[$_loop_vrednost]; - - # naslov variable po keteri loopamo (v okviru $_loop_on_spr_id) - $_vrednost_naslov = $_array_vrednosti[$_loop_on_spr_id][$_loop_on_variable_id['id']]['naslov']; - $rowVprasanje['variable'] = strip_tags($rowVprasanje['variable'])."_".$_vrednosti[$_loop_vrednost]['variable']; - $vrednostLoopSufix = "_".$_vrednosti[$_loop_vrednost]['variable']; - - if ($_vrednost_naslov != '' && $_loop_on_spr_variable != '' && $rowVprasanje['naslov'] != '') { - # zamenjamo ime spremenljivke med #q1# (#q1# z naslovom trenutne variable) - $rowVprasanje['naslov'] = str_replace("#$_loop_on_spr_variable#", "$_vrednost_naslov", $rowVprasanje['naslov']); - } + } } @@ -648,8 +658,8 @@ class SurveyDataCollect{ # TODO $spss_lngth mora biti enak za vse in sicer je enak največjemu možnemu številu znakov # TODO zato je potrebno zdužit vse ($spss_lngth, $spss_lngth2, $spss_lngth3) - $spss_lngth = $this->_array_SPSS[$spr_id]['text']; - $spss_lngth2 = $this->_array_SPSS[$spr_id]['text2']; + $spss_lngth = isset($this->_array_SPSS[$spr_id]['text']) ? $this->_array_SPSS[$spr_id]['text'] : ''; + $spss_lngth2 = isset($this->_array_SPSS[$spr_id]['text2']) ? $this->_array_SPSS[$spr_id]['text2'] : ''; $spss_lngth3 = isset($this->_array_SPSS[$spr_id]['vrednost']) && $this->_array_SPSS[$spr_id]['vrednost'] != '' ? $this->_array_SPSS[$spr_id]['vrednost'] : 0; $_HEADER[$spr_data_id] = array('spr_id'=>$spr_id, 'tip'=>$tip, 'variable'=>$spr_variable, 'naslov'=>$spr_naslov, 'sistem'=>$spr_sistem, 'skala'=>$spr_skala, 'naslov_graf'=>$spr_naslov_graf, 'edit_graf'=>$spr_edit_graf, 'wide_graf'=>$spr_wide_graf); @@ -718,9 +728,9 @@ class SurveyDataCollect{ $_seq_prefix = '_'; $sequence++; $cnt++; - $arrayVrednost = $_array_vrednosti[$spr_id]; + $arrayVrednost = isset($_array_vrednosti[$spr_id]) ? $_array_vrednosti[$spr_id] : null; - if (count($arrayVrednost)>0) { + if (is_countable($arrayVrednost) && count($arrayVrednost)>0) { foreach ($arrayVrednost as $kid=> $vrednost) { # dodamo še eno polje za tekstovne odgovore drugo if ($vrednost['other'] == 1) { @@ -730,13 +740,21 @@ class SurveyDataCollect{ $_seq_prefix = '_'; $sequence++; $cnt++; - $_GRIDS[0]['cnt_other'] += 1; + + if(isset($_GRIDS[0]['cnt_other'])) + $_GRIDS[0]['cnt_other'] += 1; + else + $_GRIDS[0]['cnt_other'] = 1; } // end if #dodamo opcije (za spss) if ($vrednost['other'] == 0 || $vrednost['other'] == 1) { $_HEADER[$spr_data_id]['options'][$vrednost['variable']] = ($vrednost['naslov'] != null) ? $vrednost['naslov'] : $vrednost['variable']; $_HEADER[$spr_data_id]['options_graf'][$vrednost['variable']] = ($vrednost['naslov_graf'] != null) ? $vrednost['naslov_graf'] : $_HEADER[$spr_data_id]['options'][$vrednost['variable']]; } + //dodamo missing values + else if($vrednost['naslov'] != null){ + $_HEADER[$spr_data_id]['missing_values'][$vrednost['other']] = $vrednost['naslov']; + } } // end foreach } // end if @@ -755,7 +773,7 @@ class SurveyDataCollect{ case 2: $arrayVrednost = $_array_vrednosti[$spr_id]; $cnt=0; - if (count($arrayVrednost)>0) { + if (isset($arrayVrednost) && count($arrayVrednost)>0) { foreach ($arrayVrednost as $vrednost) { # dodamo header variable samo za ne -missing variable @@ -773,9 +791,17 @@ class SurveyDataCollect{ $_seq_prefix = '_'; $sequence++; $cnt++; - $_GRIDS[0]['cnt_other'] += 1; + + if(isset($_GRIDS[0]['cnt_other'])) + $_GRIDS[0]['cnt_other'] += 1; + else + $_GRIDS[0]['cnt_other'] = 1; } // end if } + //dodamo missing values + else if($vrednost['naslov'] != null){ + $_HEADER[$spr_data_id]['missing_values'][$vrednost['other']] = $vrednost['naslov']; + } } // end foreach } // end if @@ -817,7 +843,9 @@ class SurveyDataCollect{ # Pri multigridu je logika obratna. variable predstavljajo podvprašanja, srv_grid pa odgovore $cntGrid = 0; $arrayVrednost = $_array_vrednosti[$spr_id]; - if (count($arrayVrednost)>0) { + + if (is_countable($arrayVrednost) && count($arrayVrednost) > 0) { + # če imamo dvojni grid gremo 2_skozi for ($i=1; $i<=$double+1;$i++) { // for $double @@ -839,7 +867,7 @@ class SurveyDataCollect{ # dodamo header samo za nemissing variable if ($vrednost['other'] == 0 || $vrednost['other'] == 1) { - $cnt = 0; + $cnt = 0; $_GRIDS[$cntGrid]['variables'][$cnt] = array('vr_id'=>$vrednost['id'], 'naslov'=>$vrednost['naslov'], 'naslov2'=>$vrednost['naslov2'], @@ -858,12 +886,13 @@ class SurveyDataCollect{ $_seq_prefix = '_'; $sequence++; $cnt++; - $_GRIDS[$cntGrid]['cnt_other'] += 1; + $_GRIDS[$cntGrid]['cnt_other'] = (isset($_GRIDS[$cntGrid]['cnt_other']) ? $_GRIDS[$cntGrid]['cnt_other'] += 1 : 1); } // end if $_GRIDS[$cntGrid]['cnt_vars'] = $cnt; - $_GRIDS[$cntGrid]['naslov'] = $vrednost['variable'].$var_appendix; + $_GRIDS[$cntGrid]['naslov'] = $vrednost['variable'].$var_appendix.$vrednostLoopSufix; $_GRIDS[$cntGrid]['part'] = $i; - $_HEADER[$spr_data_id]['cnt_all'] += $cnt; + if(!isset($_HEADER[$spr_data_id]['cnt_all'])) $_HEADER[$spr_data_id]['cnt_all'] = $cnt; + else $_HEADER[$spr_data_id]['cnt_all'] += $cnt; $cntGrid++; } } // end foreach @@ -873,13 +902,17 @@ class SurveyDataCollect{ #dodamo opcije (za spss) $arrayGrids = $_array_gridi[$spr_id]; - if (count($arrayGrids) > 0) { + if (is_countable($arrayGrids) && count($arrayGrids) > 0) { foreach ($arrayGrids AS $kid => $grid) { if ($grid['other'] == 0 || $grid['other'] == 1) { $_HEADER[$spr_data_id]['options'][$grid['variable']] = ($grid['naslov'] != null) ? $grid['naslov'] : $grid['variable']; // Opcije za dodaten naslov grida pri grafu $_HEADER[$spr_data_id]['options_graf'][$grid['variable']] = ($grid['naslov_graf'] != null) ? $grid['naslov_graf'] : $_HEADER[$spr_data_id]['options'][$grid['variable']]; } + //dodamo missing values + else if($grid['naslov'] != null){ + $_HEADER[$spr_data_id]['missing_values'][$grid['other']] = $grid['naslov']; + } } } @@ -898,7 +931,7 @@ class SurveyDataCollect{ # pri number lahko imamo dve variabli grida, če je size 2 $cnt_v = 0; $arrayVrednost = $_array_vrednosti[$spr_id]; - if (count($arrayVrednost) > 0) { + if (is_countable($arrayVrednost) && count($arrayVrednost) > 0) { $cnt=0; foreach ($arrayVrednost as $kid=> $vrednost) { if ($vrednost['other'] == 0) { @@ -930,7 +963,8 @@ class SurveyDataCollect{ } // end if $_GRIDS[0]['enota'] = $spr_variable; $_HEADER[$spr_data_id]['cnt_grids'] = 1; - $_HEADER[$spr_data_id]['cnt_all'] += $cnt_v; + if(!isset($_HEADER[$spr_data_id]['cnt_all'])) $_HEADER[$spr_data_id]['cnt_all'] = $cnt_v; + else $_HEADER[$spr_data_id]['cnt_all'] += $cnt_v; $_HEADER[$spr_data_id]['sequences'] = $_sequences; break; @@ -950,7 +984,8 @@ class SurveyDataCollect{ $_HEADER[$spr_data_id]['cnt_grids'] = 1; $_GRIDS[0]['cnt_vars'] = $cnt; $_GRIDS[0]['naslov'] = $spr_variable; - $_HEADER[$spr_data_id]['cnt_all'] += $cnt; + if(!isset($_HEADER[$spr_data_id]['cnt_all'])) $_HEADER[$spr_data_id]['cnt_all'] = $cnt; + else $_HEADER[$spr_data_id]['cnt_all'] += $cnt; $_HEADER[$spr_data_id]['sequences'] = $_sequences; break; @@ -976,7 +1011,8 @@ class SurveyDataCollect{ $arrayGrids = $_array_gridi[$spr_id]; $arrayVrednost = $_array_vrednosti[$spr_id]; - if (count($arrayVrednost) > 0) { + + if (is_countable($arrayVrednost) && count($arrayVrednost) > 0) { foreach ($arrayVrednost as $kid=> $vrednost) { // Za kombinirane tabele popravimo ime variable @@ -990,9 +1026,9 @@ class SurveyDataCollect{ if (count($arrayGrids) > 0) { foreach ($arrayGrids AS $kid => $grid) { if ($grid['other'] == 0 || $grid['other'] == 1) { - $_GRIDS[$grid_id]['variables'][$cnt] = array('vr_id'=>$vrednost['id'], 'gr_id'=>$grid['id'], 'naslov'=>$grid['naslov'], 'variable'=>$vrednost['variable'].'_'.$grid['variable'].$vrednostLoopSufix, 'other'=>false, 'text'=>false,'spss'=>$_spss,'sequence'=>$sequence,'naslov_graf'=>$grid['naslov_graf']); + $_GRIDS[$grid_id]['variables'][$cnt] = array('vr_id'=>$vrednost['id'], 'gr_id'=>$grid['id'], 'naslov'=>$grid['naslov'].($grid['part'] == '2' ? '_'.$grid['part'] : ''), 'variable'=>$vrednost['variable'].'_'.$grid['variable'].($grid['part'] == '2' ? '_'.$grid['part'] : '').$vrednostLoopSufix, 'other'=>false, 'text'=>false,'spss'=>$_spss,'sequence'=>$sequence,'naslov_graf'=>$grid['naslov_graf']); - if((int)$is_datum === 1) { + if((int)$is_datum === 1) { $_GRIDS[$grid_id]['variables'][$cnt]['sortType'] ='date'; } $_sequences .= $_seq_prefix.$sequence; @@ -1000,6 +1036,10 @@ class SurveyDataCollect{ $sequence++; $cnt++; } + //dodamo missing values + else if($grid['naslov'] != null){ + $_HEADER[$spr_data_id]['missing_values'][$grid['other']] = $grid['naslov']; + } } // end foreach if ($vrednost['other'] == 1) { $_GRIDS[$grid_id]['variables'][$cnt] = array('vr_id'=>$vrednost['id'],'naslov'=>$vrednost['naslov'], 'variable'=>$vrednost['variable'].$vrednostLoopSufix.STR_OTHER_TEXT, 'other'=>true,'text'=>true,'spss'=>'A'.$spss_lngth,'sequence'=>$sequence,'naslov_graf'=>$vrednost['naslov_graf']); @@ -1016,7 +1056,12 @@ class SurveyDataCollect{ $_GRIDS[$grid_id]['naslov'] = $vrednost['naslov']; $_GRIDS[$grid_id]['variable'] = $vrednost['variable']; $_GRIDS[$grid_id]['naslov_graf'] = $vrednost['naslov_graf']; - $_HEADER[$spr_data_id]['cnt_all'] += $cnt; + + if(!isset($_HEADER[$spr_data_id]['cnt_all'])) + $_HEADER[$spr_data_id]['cnt_all'] = $cnt; + else + $_HEADER[$spr_data_id]['cnt_all'] += $cnt; + $grid_id++; } // end foreach } // end if @@ -1042,7 +1087,7 @@ class SurveyDataCollect{ $cnt=0; $arrayVrednost = $_array_vrednosti[$spr_id]; - if (count($arrayVrednost) > 0) { + if (is_countable($arrayVrednost) && count($arrayVrednost) > 0) { foreach ($arrayVrednost as $kid=> $vrednost) { $_GRIDS[0]['variables'][$cnt] = array('vr_id'=>$vrednost['id'],'naslov'=>$vrednost['naslov'], 'variable'=>$vrednost['variable'].$vrednostLoopSufix, 'other'=>false, 'text'=>false,'spss'=>$_spss,'sequence'=>$sequence,'naslov_graf'=>$vrednost['naslov_graf']); $_sequences .= $_seq_prefix.$sequence; @@ -1057,7 +1102,8 @@ class SurveyDataCollect{ $_HEADER[$spr_data_id]['cnt_grids'] = 1; $_GRIDS[0][ 'cnt_vars'] = $cnt; $_GRIDS[0]['naslov'] = $spr_variable; - $_HEADER[$spr_data_id]['cnt_all'] += $cnt; + if(!isset($_HEADER[$spr_data_id]['cnt_all'])) $_HEADER[$spr_data_id]['cnt_all'] = $cnt; + else $_HEADER[$spr_data_id]['cnt_all'] += $cnt; $_HEADER[$spr_data_id]['sequences'] = $_sequences; break; @@ -1066,7 +1112,7 @@ class SurveyDataCollect{ case 21: $cnt=0; $arrayVrednost = $_array_vrednosti[$spr_id]; - if (count($arrayVrednost) > 0) { + if (is_countable($arrayVrednost) && count($arrayVrednost) > 0) { foreach ($arrayVrednost as $kid=> $vrednost) { if ($vrednost['other'] == 0) { @@ -1085,7 +1131,8 @@ class SurveyDataCollect{ $_HEADER[$spr_data_id]['cnt_grids'] = 1; $_GRIDS[0]['cnt_vars'] = $cnt; $_GRIDS[0]['naslov'] = $spr_variable; - $_HEADER[$spr_data_id]['cnt_all'] += $cnt; + if(!isset($_HEADER[$spr_data_id]['cnt_all'])) $_HEADER[$spr_data_id]['cnt_all'] = $cnt; + else $_HEADER[$spr_data_id]['cnt_all'] += $cnt; $_HEADER[$spr_data_id]['sequences'] = $_sequences; break; @@ -1102,7 +1149,8 @@ class SurveyDataCollect{ $_HEADER[$spr_data_id]['cnt_grids'] = 1; $_GRIDS[0]['cnt_vars'] = $cnt; $_GRIDS[0]['naslov'] = $spr_variable; - $_HEADER[$spr_data_id]['cnt_all'] += $cnt; + if(!isset($_HEADER[$spr_data_id]['cnt_all'])) $_HEADER[$spr_data_id]['cnt_all'] = $cnt; + else $_HEADER[$spr_data_id]['cnt_all'] += $cnt; $_HEADER[$spr_data_id]['sequences'] = $_sequences; break; @@ -1119,7 +1167,8 @@ class SurveyDataCollect{ $_HEADER[$spr_data_id]['cnt_grids'] = 1; $_GRIDS[0]['cnt_vars'] = $cnt; $_GRIDS[0]['naslov'] = $spr_variable; - $_HEADER[$spr_data_id]['cnt_all'] += $cnt; + if(!isset($_HEADER[$spr_data_id]['cnt_all'])) $_HEADER[$spr_data_id]['cnt_all'] = $cnt; + else $_HEADER[$spr_data_id]['cnt_all'] += $cnt; $_HEADER[$spr_data_id]['sequences'] = $_sequences; break; @@ -1127,8 +1176,8 @@ class SurveyDataCollect{ # SN - IMENA case 9: $cnt=0; - $arrayVrednost = $this->SNVariablesForSpr[$_vprasanje_array['id']]; - if (count($arrayVrednost) > 0) { + $arrayVrednost = isset($this->SNVariablesForSpr[$_vprasanje_array['id']]) ? $this->SNVariablesForSpr[$_vprasanje_array['id']] : array(); + if (is_countable($arrayVrednost) && count($arrayVrednost) > 0) { foreach ($arrayVrednost as $kid=> $vrednost) { $_GRIDS[0]['variables'][$cnt] = array('vr_id'=>$vrednost,'naslov'=>($spr_variable.'_'.($cnt+1)), 'variable'=>($spr_variable.'_'.($cnt+1)), 'other'=>false, 'text'=>true,'spss'=>'A'.$spss_lngth,'sequence'=>$sequence); $_sequences .= $_seq_prefix.$sequence; @@ -1140,7 +1189,8 @@ class SurveyDataCollect{ $_HEADER[$spr_data_id]['cnt_grids'] = 1; $_GRIDS[0]['cnt_vars'] = $cnt; $_GRIDS[0]['naslov'] = $spr_variable; - $_HEADER[$spr_data_id]['cnt_all'] += $cnt; + if(!isset($_HEADER[$spr_data_id]['cnt_all'])) $_HEADER[$spr_data_id]['cnt_all'] = $cnt; + else $_HEADER[$spr_data_id]['cnt_all'] += $cnt; $_HEADER[$spr_data_id]['sequences'] = $_sequences; break; @@ -1152,7 +1202,7 @@ class SurveyDataCollect{ if($row['enota'] == 3){ $cnt=0; $arrayVrednost = $_array_vrednosti[$spr_id]; - if (count($arrayVrednost) > 0) { + if (is_countable($arrayVrednost) && count($arrayVrednost) > 0) { foreach ($arrayVrednost as $kid=> $vrednost) { if ($vrednost['other'] == 0) { @@ -1170,7 +1220,8 @@ class SurveyDataCollect{ $_HEADER[$spr_data_id]['cnt_grids'] = 1; $_GRIDS[0]['cnt_vars'] = $cnt; $_GRIDS[0]['naslov'] = $spr_variable; - $_HEADER[$spr_data_id]['cnt_all'] += $cnt; + if(!isset($_HEADER[$spr_data_id]['cnt_all'])) $_HEADER[$spr_data_id]['cnt_all'] = $cnt; + else $_HEADER[$spr_data_id]['cnt_all'] += $cnt; $_HEADER[$spr_data_id]['sequences'] = $_sequences; } else{ @@ -1223,8 +1274,8 @@ class SurveyDataCollect{ $cnt++; } //checkbox vrednosti za imena obmocij - $arrayVrednost = $_array_vrednosti[$spr_id]; - if (count($arrayVrednost)>0) { + $arrayVrednost = isset($_array_vrednosti[$spr_id]) ? $_array_vrednosti[$spr_id] : null; + if (is_countable($arrayVrednost) && count($arrayVrednost) > 0) { foreach ($arrayVrednost as $vrednost) { # dodamo header variable samo za ne -missing variable @@ -1262,14 +1313,14 @@ class SurveyDataCollect{ // s katero sekvenco se začnejo meta podatki $_HEADER['_settings']['metaSequence'] = $sequence; - $_HEADER['meta'] = array('tip'=>'sm', 'variable'=>'smeta', 'naslov' =>$lang['srv_displaydata_meta'],'cnt_all'=>2); + $_HEADER['meta'] = array('tip'=>'sm', 'variable'=>'smeta', 'naslov' =>$lang['srv_displaydata_meta2'],'cnt_all'=>2); // Datum insert, datum edit, datume in čase za posamezno stran $_g_cnt = 0; $_tmp_seq = $sequence; // Na zacetku prikazemo randomizacijo ce je prisotna pri kaksnem vprasanju ali bloku - foreach ($this->_array_random as $random_parent) { + foreach ($this->_array_random as $parent_id => $random_parent) { if($random_parent['type'] == 'spr'){ $_HEADER['meta']['grids'][$_g_cnt] = Array('naslov'=>'Random '.$random_parent['variable']); @@ -1321,16 +1372,24 @@ class SurveyDataCollect{ $page = 1; foreach ($this->_array_groups as $gid => $grupa) { - $_HEADER['meta']['grids'][$_g_cnt] = Array('naslov'=>$lang['page'].' '.$page); + // Uvod + if($gid == '0'){ + $_HEADER['meta']['grids'][$_g_cnt] = Array('naslov'=>$lang['intro']); - # date on page - $_HEADER['meta']['grids'][$_g_cnt]['variables'][0] = Array ('variable'=>'date_'.$page,'naslov'=>'datum_'.$page,'spss'=>'DATETIMEw','sortType'=>'date','sequence'=>$sequence); - $sequence++; + # date on page + $_HEADER['meta']['grids'][$_g_cnt]['variables'][0] = Array ('variable'=>'date_0','naslov'=>'datum_0','spss'=>'DATETIMEw','sortType'=>'date','sequence'=>$sequence); + } + else{ + $_HEADER['meta']['grids'][$_g_cnt] = Array('naslov'=>$lang['page'].' '.$page); + # date on page + $_HEADER['meta']['grids'][$_g_cnt]['variables'][0] = Array ('variable'=>'date_'.$page,'naslov'=>'datum_'.$page,'spss'=>'DATETIMEw','sortType'=>'date','sequence'=>$sequence); + + $page++; + } + $_HEADER['meta']['grids'][$_g_cnt]['cnt_vars'] = 1; - - $page++; - $_g_cnt++; + $sequence++; $_g_cnt++; } // IP @@ -1403,7 +1462,7 @@ class SurveyDataCollect{ $_tmpCnt = $c * MAX_USER_PER_LOOP; - $_dataLine = ""; + $_dataLine = ''; // Dobimo vse jezike za katere obstaja jezikovna datoteka include_once($site_path.'lang/jeziki.php'); @@ -1413,7 +1472,7 @@ class SurveyDataCollect{ $jeziki[$lang['id']] = $lang['language']; if ($this->noErrors) { - + while ($rowUser = mysqli_fetch_assoc($this->_qry_users[$c])) { #sleep(1); @@ -1422,9 +1481,9 @@ class SurveyDataCollect{ $uid = $rowUser['usr_id']; # dodamo usr id k podatkom $_dataLine .= $rowUser['usr_id']; - - # dodamo ustreznost k podatkom - relevance - $_dataLine .= STR_DLMT. (($rowUser['status'] == 5 || $rowUser['status'] == 6) && $rowUser['lurker'] == 0 ? '1' : '0'); + + # dodamo status k podatkom + $_dataLine .= STR_DLMT.$rowUser['status']; # dodamo email (invitation)k podatkom - če je bilo poslano z emailom ali je uporabnik ročno vnesel email $_dataLine .= STR_DLMT. ((int)$rowUser['inv_res_id'] > 0 || (int)$rowUser['inv_res_id'] == -1 @@ -1436,9 +1495,9 @@ class SurveyDataCollect{ : '2') # uporabnik ni bil dodan z email vabilom : '0'); - - # dodamo status k podatkom - $_dataLine .= STR_DLMT.$rowUser['status']; + + # dodamo ustreznost k podatkom - relevance + $_dataLine .= STR_DLMT. (($rowUser['status'] == 5 || $rowUser['status'] == 6) && $rowUser['lurker'] == 0 ? '1' : '0'); # dodamo lurkerje $_dataLine .= STR_DLMT.$rowUser['lurker']; @@ -1474,6 +1533,10 @@ class SurveyDataCollect{ if ($this->noErrors && count($this->AllQuestionsOrder) > 0) { foreach ($this->AllQuestionsOrder AS $_vprasanje_array) { + // Ce vrpasanje ni nastavljeno preskocimo + if(!isset($this->AllQuestionsData[$_vprasanje_array['id']])) + continue; + $rowVprasanje = $this->AllQuestionsData[$_vprasanje_array['id']]; # spremenljivki dodamo loop_id da je konsistentno z podatki @@ -1614,7 +1677,7 @@ class SurveyDataCollect{ $userAnswerLine .= STR_DLMT.$this->recode_answer($spr_id,$answer,$uid); // poiščemo polja drugo - if (count($spr_vrednosti) > 0){ + if (isset($spr_vrednosti) && is_countable($spr_vrednosti) && count($spr_vrednosti) > 0){ foreach ($spr_vrednosti AS $vid => $vrednost) { @@ -1732,7 +1795,7 @@ class SurveyDataCollect{ #ce smo meli checkboc obkljukan if (isset($_tmp_answers[$vid])) { - $answerOther = ($spr_data_text[$vid]['text'] == "" || $spr_data_text[$vid]['text'] == null) ? $VALUE_FOR_MISSING : $spr_data_text[$vid]['text']; + $answerOther = (!isset($spr_data_text[$vid]['text']) || $spr_data_text[$vid]['text'] == "" || $spr_data_text[$vid]['text'] == null) ? $VALUE_FOR_MISSING : $spr_data_text[$vid]['text']; } else if ($missing_answers !== null) { // Ce je bil 0 texta ni mogel vnesti in mora bit -2 if($VALUE_FOR_MISSING == -1) @@ -2293,28 +2356,27 @@ class SurveyDataCollect{ case 9: # zloopamo skozi podvprašanja in nastavimo izbrane odgovore - $arrayVrednost = $this->SNVariablesForSpr[$_vprasanje_array['id']]; - if (!is_array($arrayVrednost)) { - $arrayVrednost = array(); - } - if(count($spr_vrednosti) > 0) - foreach ($spr_vrednosti AS $vid => $vrednost) { - if (in_array($vid,$arrayVrednost)) { - $answer = null; - if (isset($spr_data_text[$vid]['text'])) { - # imamo normalno text vprašanje - $answer = $spr_data_text[$vid]['text']; - - } else if (is_array($spr_data_vred) && count($spr_data_vred) > 0 ) { - $answer = end($spr_data_vred); - } - - if ($answer == "" || $answer == null) { - $answer = $VALUE_FOR_MISSING; - } // end if - $userAnswerLine .= STR_DLMT.$this->recode_answer($spr_id,$answer,$uid); - - } + $arrayVrednost = isset($this->SNVariablesForSpr[$_vprasanje_array['id']]) ? $this->SNVariablesForSpr[$_vprasanje_array['id']] : array(); + + if(count($spr_vrednosti) > 0){ + foreach ($spr_vrednosti AS $vid => $vrednost) { + if (in_array($vid,$arrayVrednost)) { + $answer = null; + if (isset($spr_data_text[$vid]['text'])) { + # imamo normalno text vprašanje + $answer = $spr_data_text[$vid]['text']; + + } else if (is_array($spr_data_vred) && count($spr_data_vred) > 0 ) { + $answer = end($spr_data_vred); + } + + if ($answer == "" || $answer == null) { + $answer = $VALUE_FOR_MISSING; + } // end if + $userAnswerLine .= STR_DLMT.$this->recode_answer($spr_id,$answer,$uid); + + } + } } break; @@ -2376,7 +2438,7 @@ class SurveyDataCollect{ # ce imamo odgovor if (isset ($spr_data_map)) { $missing_value_temp = (is_array($spr_data_vred) && count($spr_data_vred) == 1 ) ? end($spr_data_vred) : $VALUE_FOR_MISSING; - $answerArr = (is_countable($spr_data_map['izpis']) && count($spr_data_map['izpis']) > 0) ? $spr_data_map['izpis'] : $missing_value_temp; + $answerArr = (isset($spr_data_map['izpis']) && is_countable($spr_data_map['izpis']) && count($spr_data_map['izpis']) > 0) ? $spr_data_map['izpis'] : $missing_value_temp; } else if (is_array($spr_data_map)) { $key = key($spr_data_map); @@ -2442,8 +2504,8 @@ class SurveyDataCollect{ $newParams = new enkaParameters($row['params']); // ce imamo odgovor - if (isset ($spr_data_heatmap)) { - $answerArr = (is_countable($spr_data_heatmap['izpis']) && count($spr_data_heatmap['izpis']) > 0) ? $spr_data_heatmap['izpis'] : $VALUE_FOR_MISSING; + if (isset ($spr_data_heatmap['izpis'])) { + $answerArr = (is_countable($spr_data_heatmap['izpis']) && count($spr_data_heatmap['izpis']) > 0) ? $spr_data_heatmap['izpis'] : $VALUE_FOR_MISSING; } else if (is_array($spr_data_heatmap)) { $key = key($spr_data_heatmap); @@ -2489,37 +2551,38 @@ class SurveyDataCollect{ $numberOfPointsInside=array(); if (count($spr_vrednosti) > 0) { - $i=0; - foreach ($this->_array_data_heatmap_regions[(int)$spr_id] AS $regions){ - $answerReg = null; - $numberOfPointsInside[$regions['region_name']] = 0; // Belezi stevilo tock znotraj trenutnega obmocja - - // Pretvori polje s tockami obmocja v ustrezno obliko - $poly = $this->convertPolyString($regions['region_coords']); - - // preveri, ali je posamezna tocka znotraj trenutnega obmocja - for ($z=0; $zinsidePoly($poly, $pointx[$z]["x"], $pointy[$z]["y"]); - if ($inside == true){ - $numberOfPointsInside[$regions['region_name']]++; - } - } - - // Priprava odgovora za preglednico s podatki - // Ce je missing - if($answerKoo < 0){ - $answerReg = $answerKoo; + $i=0; + if(isset($this->_array_data_heatmap_regions[(int)$spr_id])) + foreach ($this->_array_data_heatmap_regions[(int)$spr_id] AS $regions){ + $answerReg = null; + $numberOfPointsInside[$regions['region_name']] = 0; // Belezi stevilo tock znotraj trenutnega obmocja + + // Pretvori polje s tockami obmocja v ustrezno obliko + $poly = $this->convertPolyString($regions['region_coords']); + + // preveri, ali je posamezna tocka znotraj trenutnega obmocja + for ($z=0; $zinsidePoly($poly, $pointx[$z]["x"], $pointy[$z]["y"]); + if ($inside == true){ + $numberOfPointsInside[$regions['region_name']]++; + } + } + + // Priprava odgovora za preglednico s podatki + // Ce je missing + if($answerKoo < 0){ + $answerReg = $answerKoo; + } + else{ + $answerReg = $numberOfPointsInside[$regions['region_name']]; + } + + $i++; + + // dodamo odgovor s stevilom tock znotraj obmocja + $userAnswerLine .= STR_DLMT.$this->recode_answer($spr_id,$answerReg,$uid); + } - else{ - $answerReg = $numberOfPointsInside[$regions['region_name']]; - } - - $i++; - - // dodamo odgovor s stevilom tock znotraj obmocja - $userAnswerLine .= STR_DLMT.$this->recode_answer($spr_id,$answerReg,$uid); - - } } } //za območja - konec @@ -2577,7 +2640,7 @@ class SurveyDataCollect{ // Random vrstni redi - foreach ($this->_array_random as $random_parent) { + foreach ($this->_array_random as $parent_id => $random_parent) { $type = ($random_parent['type'] == 'spr') ? 'spr' : 'block'; $random_data = $this->get_array_data_random($uid, $random_parent['id'], $type); @@ -2601,9 +2664,10 @@ class SurveyDataCollect{ # strani in časi foreach ($this->_array_groups AS $gid => $grupa) { - if ($this->_array_user_grupa[$uid][$gid] != '') { + if (isset($this->_array_user_grupa[$uid][$gid]) && $this->_array_user_grupa[$uid][$gid] != '') { $_dataLine .= STR_DLMT.datetime($this->_array_user_grupa[$uid][$gid]); - } else { + } + else { $_dataLine .= STR_DLMT.''; } } @@ -2643,8 +2707,8 @@ class SurveyDataCollect{ $this->noErrors = false; } - $_dataLine = null; unset($_dataLine); + $_dataLine = ''; } else { # dodamo v log napako @@ -2765,6 +2829,13 @@ class SurveyDataCollect{ $cnt = 0; if ($this->_cnt_groups > 0) { $this->_array_groups = array(); + + // Uvod - ce je prikazan v anketi + if($this->survey['show_intro'] == '1'){ + $this->_array_groups['0'] = '0'; + $str .= '0,'; + } + $prefix =''; while ($row = mysqli_fetch_assoc($qry_groups)) { @@ -2880,7 +2951,7 @@ class SurveyDataCollect{ $rowVprasanja = array(); - if (!is_countable($sgmMap[$rowMainVprasanje['id']]) || count($sgmMap[$rowMainVprasanje['id']]) == 0) { + if (!isset($sgmMap[$rowMainVprasanje['id']]) || count($sgmMap[$rowMainVprasanje['id']]) == 0) { $rowVprasanja[] = $rowMainVprasanje; } else { @@ -2913,12 +2984,12 @@ class SurveyDataCollect{ $this->AllQuestionsData[$rowVprasanje['id']] = array( 'id' => $rowVprasanje['id'], 'spr_id' => $spr_id, - 'sgm_parrent' => $rowVprasanje['sgm_parrent'], + 'sgm_parrent' => isset($rowVprasanje['sgm_parrent']) ? $rowVprasanje['sgm_parrent'] : '', 'tip' => $rowVprasanje['tip'], 'gru_id' => $rowVprasanje['gru_id'], 'variable' => strip_tags($rowVprasanje['variable']), 'naslov' => strip_tags($rowVprasanje['naslov']), - 'label' => strip_tags($rowVprasanje['label']), + 'label' => (isset($rowVprasanje['label']) ? strip_tags($rowVprasanje['label']) : ''), 'size' => $rowVprasanje['size'], 'cela' => $rowVprasanje['cela'], 'grid_subtitle1' => $rowVprasanje['grid_subtitle1'], @@ -3034,6 +3105,8 @@ class SurveyDataCollect{ $this->_array_loop_on_spr = array(); $this->_array_loop_parent = array(); + $_cnt_loop = 0; + $qryLoop_spr_select = sisplet_query("SELECT l.if_id, l.spr_id FROM srv_branching AS b, srv_loop AS l WHERE b.ank_id = '".$this->sid."' AND b.element_if = l.if_id"); @@ -3084,6 +3157,22 @@ class SurveyDataCollect{ foreach ($spr_ids AS $spr_id) { $this->_array_spr_in_loop[$spr_id] = $lkey; $this->_array_loop_has_spr[$lkey][] = $spr_id; + + // Pri kombinirani tabeli dodamo v array se podtabele + $row = Cache::srv_spremenljivka($spr_id); + if($row['tip'] == 24){ + + $sqlMT = sisplet_query("SELECT s.id + FROM srv_spremenljivka s, srv_grid_multiple mt + WHERE mt.ank_id='".$this->sid."' AND mt.parent='".$spr_id."' AND mt.spr_id=s.id + ORDER BY mt.vrstni_red ASC + "); + while ($rowMT = mysqli_fetch_array($sqlMT)) { + $this->_array_spr_in_loop[$rowMT['id']] = $lkey; + $this->_array_loop_has_spr[$lkey][] = $rowMT['id']; + } + } + } } } @@ -3240,12 +3329,12 @@ class SurveyDataCollect{ } $this->_array_random = array(); - + $i=0; // Preberemo vsa VPRASANJA ki imajo vklopljeno randomizacijo $_qry_random_spr = sisplet_query("SELECT s.id, s.variable FROM srv_spremenljivka s, srv_grupa g WHERE g.ank_id='".$this->sid."' AND s.gru_id=g.id AND s.random='1' - ORDER BY s.vrstni_red"); + ORDER BY g.vrstni_red ASC, s.vrstni_red ASC"); if (!$_qry_random_spr) { $this->trigerError('get_random', mysqli_error($GLOBALS['connect_db'])); } @@ -3255,11 +3344,14 @@ class SurveyDataCollect{ // Napolnimo array z randomiziranimi vprasanji if ($cnt_rows > 0) { + + while ($row = mysqli_fetch_array($_qry_random_spr)) { - - $this->_array_random[$row['id']]['id'] = $row['id']; + $this->_array_random[$row['id']]['id'] = $row['id']; $this->_array_random[$row['id']]['variable'] = $row['variable']; $this->_array_random[$row['id']]['type'] = 'spr'; + + $i++; } } @@ -3297,7 +3389,9 @@ class SurveyDataCollect{ // Blok ima randomizirana vprasanja else{ $this->_array_random[$row['id']]['type'] = 'blok_spr'; - } + } + + $i++; } } } @@ -3662,7 +3756,7 @@ class SurveyDataCollect{ if($text == '' || $text == null) $text = '-1'; // Addslashes je potreben za analize - if($this->_array_data_map[(int)$usr_id][$spr_id.'_'.$loop_id]){ + if(isset($this->_array_data_map[(int)$usr_id][$spr_id.'_'.$loop_id])){ $this->_array_data_map[(int)$usr_id][$spr_id.'_'.$loop_id]['izpis'][$i] = array( 'address'=>addslashes(strip_tags($address)), 'vrednost'=>addslashes(strip_tags($text)), @@ -3670,11 +3764,15 @@ class SurveyDataCollect{ } else{ $this->_array_data_map[(int)$usr_id][$spr_id.'_'.$loop_id] = array( - 'izpis'=>array(array( - 'address'=>addslashes(strip_tags($address)), - 'vrednost'=>addslashes(strip_tags($text)), - 'koordinate'=>$lat . ', ' . $lng)), - 'spr_id' => $spr_id, 'usr_id' => $usr_id, 'loop_id' => $loop_id); + 'izpis'=>array( + array( + 'address'=>addslashes(strip_tags($address)), + 'vrednost'=>addslashes(strip_tags($text)), + 'koordinate'=>$lat . ', ' . $lng + ) + ), + 'spr_id' => $spr_id, 'usr_id' => $usr_id, 'loop_id' => $loop_id + ); } $i++; @@ -3715,19 +3813,24 @@ class SurveyDataCollect{ if($text == '' || $text == null) $text = '-1'; // adslashes je potreben za analize - if($this->_array_data_heatmap[(int)$usr_id][$spr_id.'_'.$loop_id]){ + if(isset($this->_array_data_heatmap[(int)$usr_id][$spr_id.'_'.$loop_id])){ $this->_array_data_heatmap[(int)$usr_id][$spr_id.'_'.$loop_id]['izpis'][$i] = array( 'address'=>addslashes(strip_tags($address)), 'vrednost'=>addslashes(strip_tags($text)), - 'koordinate'=> $lat . ', ' . $lng); + 'koordinate'=> $lat . ', ' . $lng + ); } else{ $this->_array_data_heatmap[(int)$usr_id][$spr_id.'_'.$loop_id] = array( - 'izpis'=>array(array( - 'address'=>addslashes(strip_tags($address)), - 'vrednost'=>addslashes(strip_tags($text)), - 'koordinate'=>$lat . ', ' . $lng)), - 'spr_id' => $spr_id, 'usr_id' => $usr_id, 'loop_id' => $loop_id); + 'izpis'=>array( + array( + 'address'=>addslashes(strip_tags($address)), + 'vrednost'=>addslashes(strip_tags($text)), + 'koordinate'=>$lat . ', ' . $lng + ) + ), + 'spr_id' => $spr_id, 'usr_id' => $usr_id, 'loop_id' => $loop_id + ); } $i++; @@ -3860,7 +3963,7 @@ class SurveyDataCollect{ if (mysqli_num_rows($_qry_data_random) > 0) { while($row2 = mysqli_fetch_array($_qry_data_random)){ - + // Zgradimo string z labelami vprasanj za prikaz v podatkih $vrstni_red_string = ''; @@ -4054,7 +4157,7 @@ class SurveyDataCollect{ // Pripravimo missing vrednosti za anketo private function setSurveyMissingValues() { - $smv = new SurveyMissingValues($sid); + $smv = new SurveyMissingValues($this->sid); $smv -> Init(); $_sys_missings = $smv->GetSurveyMissingValues(); @@ -4093,7 +4196,7 @@ class SurveyDataCollect{ return $result; } - if ($this->_user_spr_answer_count['last_seen'] == $this->_user_spr_answer_count['cnt']) { + if (isset($this->_user_spr_answer_count['last_seen']) && $this->_user_spr_answer_count['last_seen'] == $this->_user_spr_answer_count['cnt']) { return $result; } @@ -4101,12 +4204,12 @@ class SurveyDataCollect{ return $result; } - foreach ($this->_user_spr_answer_count['spremenljivke'] AS $cnt) { - - if ($this->_user_spr_answer_count['last_seen'] > $result) { - $result += $cnt; - } - } + if (isset($this->_user_spr_answer_count['last_seen'])) + foreach ($this->_user_spr_answer_count['spremenljivke'] AS $cnt) { + if ($this->_user_spr_answer_count['last_seen'] > $result) { + $result += $cnt; + } + } return $this->_user_spr_answer_count['cnt'] - $result; } @@ -4189,7 +4292,7 @@ class SurveyDataCollect{ // Pogledamo se ce je respondent videl vprasanje (tudi ce je -1, ker ga potem ne smemo spremenit v -3) if ($answer == -1 || $answer === '-2d') { - if (is_array($this->_array_user_grupa[$uid]) && array_key_exists($this->AllQuestionsData[$spr]['gru_id'], $this->_array_user_grupa[$uid])) { + if (isset($this->_array_user_grupa[$uid]) && is_array($this->_array_user_grupa[$uid]) && array_key_exists($this->AllQuestionsData[$spr]['gru_id'], $this->_array_user_grupa[$uid])) { $this->_user_spr_answer_count['last_seen'] = $this->_user_spr_answer_count['cnt'] - 1; } } @@ -4290,7 +4393,8 @@ class SurveyDataCollect{ $coordsWithComma = explode('
',$answerKoo); $pointx = array(); $pointy = array(); - + $coords = array(); + for($i = 1; $ifalse); #ali prikazujemo ikone za urejanje static private $displayEditIconsSettings = false; # ali prikazujemo okno s checkboxi za nastavitve tabele s podatki + + static private $displayDataFullscreen = false; # ali prikazujemo podatke v fullscreen pogledu static private $printPreview = false; # ali prikazujemo podatke kot print preview; static private $canDisplayRelevance = true; # ali prikazujemo ustreznost - relevance; + + static private $canDisplayStatus = true; # ali prikazujemo status; static private $quickEdit_recnum = array(); # array z prejsnjim in naslednjim recnumom (za vpogled - puscici naprej,nazaj) @@ -114,7 +119,9 @@ class SurveyDataDisplay{ VAR_PDF_TYPE => 0, # tip izpisa pdf (0 -> kratek, 1 -> dolg, 2 -> zelo kratek) VAR_SORT_SEQ => '', # po kateri sekvenci sortiramo VAR_SORT_TYPE => '', # način sortiranja (naraščajoče, padajoče) - VAR_RELEVANCE => 1, # ali prikazujemo ustreznost + // VAR_RELEVANCE je po novem podrobnosti stausa (leva stran) + VAR_RELEVANCE => 0, # ali prikazujemo ustreznost + VAR_STATUS => 1, # ali prikazujemo status (in vabila) VAR_EMAIL => 1, # ali prikazujemo email status VAR_CIRCLES => 0, # ali prikazujemo kroge antonučija VAR_SHOW_DATE => 0, # ali prikazujemo kroge antonučija @@ -165,8 +172,7 @@ class SurveyDataDisplay{ self::$survey = SurveyInfo::getInstance()->getSurveyRow(); # aktivne tabele - if (SurveyInfo::getInstance()->getSurveyColumn('db_table') == 1) - self::$db_table = '_active'; + self::$db_table = SurveyInfo::getInstance()->getSurveyArchiveDBString(); # ali je anketa tipa SN - social network self::$is_social_network = (SurveyInfo::getInstance()->checkSurveyModule('social_network')) ? true : false; @@ -177,8 +183,7 @@ class SurveyDataDisplay{ } # ali prikazujemo datum na začetku ankete (Če smo v identifikatorjih ne smemo zaradi povezovanja) - if ( (self::$_VARS[VAR_SHOW_DATE] == true || (int)SurveyInfo :: getInstance()->getSurveyColumn('showItime') == 1) && self::$_VARS[VAR_SHOW_SYSTEM] == false ) { - //if (self::$_VARS[VAR_SHOW_DATE] == true && self::$_VARS[VAR_SHOW_SYSTEM] == false) { + if ( self::$_VARS[VAR_SHOW_DATE] == true && self::$_VARS[VAR_SHOW_SYSTEM] == false ) { self::$showItime = true; } else { @@ -186,8 +191,7 @@ class SurveyDataDisplay{ } # ali prikazujemo zaporedno številko. (Če smo v identifikatorjih ne smemo zaradi povezovanja) - if ( (self::$_VARS[VAR_SHOW_NO] == true || (int)SurveyInfo :: getInstance()->getSurveyColumn('showLineNumber') == 1) && self::$_VARS[VAR_SHOW_SYSTEM] == false ) { - //if (self::$_VARS[VAR_SHOW_NO] == true) { + if ( self::$_VARS[VAR_SHOW_NO] == true && self::$_VARS[VAR_SHOW_SYSTEM] == false ) { self::$showLineNumber = true; } else { @@ -216,10 +220,13 @@ class SurveyDataDisplay{ if(isset($_SESSION['sid_'.self::$sid]['dataIcons_settings'])) self::$displayEditIconsSettings = ($_SESSION['sid_'.self::$sid]['dataIcons_settings']); + + if(isset($_SESSION['sid_'.self::$sid]['data_fullscreen'])) + self::$displayDataFullscreen = ($_SESSION['sid_'.self::$sid]['data_fullscreen']); # ali filtriramo cms usejreve datotekoe session_start(); - self::$doCMSUserFilter = $_SESSION['sid_'.$sid]['doCMSUserFilter']; + self::$doCMSUserFilter = isset($_SESSION['sid_'.$sid]['doCMSUserFilter']) ? $_SESSION['sid_'.$sid]['doCMSUserFilter'] : false; session_commit(); @@ -230,7 +237,7 @@ class SurveyDataDisplay{ // Ce imamo urlhash gre za javno povezavo in nikoli ne prikazemo loading okna $show_loading = (isset($_GET['urlhash'])) ? false : true; - self::$SDF->prepareFiles($show_loading); + self::$SDF->prepareFiles(); self::$headFileName = self::$SDF->getHeaderFileName(); self::$dataFileName = self::$SDF->getDataFileName(); @@ -296,13 +303,13 @@ class SurveyDataDisplay{ $awk_cnt_str = 'awk -F"'.STR_DLMT.'" \''.EMAIL_FIELD.'~/1/'.' {cnt++} END {print cnt}\' \''.self::$dataFileName.'\''; } - $emailCount = shell_exec($awk_cnt_str); - + //$emailCount = shell_exec($awk_cnt_str); + #self::$_VARS[VAR_EMAIL] = self::$_VARS[VAR_RELEVANCE] && ((int)self::$survey['email'] == 1 && (int)self::$survey['user_base'] == 1); - if (((int)self::$survey['email'] == 0 && (int)self::$survey['user_base'] == 0) ) { + if (!SurveyInfo::getInstance()->checkSurveyModule('email') || !isset(self::$survey['user_base']) || (int)self::$survey['user_base'] == 0 ) { self::$_VARS[VAR_EMAIL] = 0; } - + # nastavimo način sortiranja self::setUpSort(); @@ -506,299 +513,314 @@ class SurveyDataDisplay{ static public function setUpFilter() { # nastavimo filter po statusih - if (self::$headFileName != null && self::$headFileName != '' && file_exists(self::$headFileName)) { - # kadar zbiramo sistemske, moramo obvezno zbirati tudi podatke, ne smemo pa full meta - if (self::$_VARS[VAR_SHOW_SYSTEM]){ - self::$_VARS[VAR_DATA] = true; - self::$_VARS[VAR_META] = true; - self::$_VARS[VAR_METAFULL] = false; - self::$_VARS[VAR_SHOW_DATE] = false; - } - # filtriranje po statusih - self::$_CURRENT_STATUS_FILTER = SurveyStatusProfiles :: getStatusAsAWKString(); - - if (self::$dataFileStatus >= 0) { - self::$_HEADERS = unserialize(file_get_contents(self::$headFileName)); - - # ali imamo filter na testne podatke - if (isset(self::$_HEADERS['testdata']['grids'][0]['variables'][0]['sequence']) && (int)self::$_HEADERS['testdata']['grids'][0]['variables'][0]['sequence'] > 0) { - $test_data_sequence = self::$_HEADERS['testdata']['grids'][0]['variables'][0]['sequence']; - $filter_testdata = SurveyStatusProfiles :: getStatusTestAsAWKString($test_data_sequence); - } - # filtriranje po časih - $_time_profile_awk = SurveyTimeProfiles :: getFilterForAWK(self::$_HEADERS['unx_ins_date']['grids']['0']['variables']['0']['sequence']); - - # ali imamo filter na uporabnost - if (isset(self::$_HEADERS['usability']['variables'][0]['sequence']) && (int)self::$_HEADERS['usability']['variables'][0]['sequence'] > 0) { - $usability_data_sequence = self::$_HEADERS['usability']['variables'][0]['sequence']; - $filter_usability = SurveyStatusProfiles :: getStatusUsableAsAWKString($usability_data_sequence); - } - - # če nismo v indikatorjih (sistemske) - if (self::$_VARS[VAR_SHOW_SYSTEM] == false) { - # dodamo še ife - SurveyConditionProfiles :: setHeader(self::$_HEADERS); - $_condition_profile_AWK = SurveyConditionProfiles:: getAwkConditionString(); - - # dodamo še ife za inspect - $SI = new SurveyInspect(self::$sid); - $_inspect_condition_awk = $SI->generateAwkCondition(); - } - - # dodamo pogoj za filter prepoznave uporabnika iz cms - # vklopljeno more bit prepoznava userja iz cms - if (self::$doCMSUserFilter == true) { - $CMSUserCondition = self::createCMSUserFilter(); - } + # kadar zbiramo sistemske, moramo obvezno zbirati tudi podatke, ne smemo pa full meta + if (self::$_VARS[VAR_SHOW_SYSTEM]){ + self::$_VARS[VAR_DATA] = true; + self::$_VARS[VAR_META] = true; + self::$_VARS[VAR_METAFULL] = false; + self::$_VARS[VAR_SHOW_DATE] = false; + self::$_VARS[VAR_RELEVANCE] = false; + self::$_VARS[VAR_STATUS] = false; + } - if (($_condition_profile_AWK != "" && $_condition_profile_AWK != null ) - || ($_inspect_condition_awk != "" && $_inspect_condition_awk != null) - || ($_time_profile_awk != "" && $_time_profile_awk != null) - || ($CMSUserCondition != "" && $CMSUserCondition != null) - || ($filter_testdata != null) - || ($filter_usability != null)) { - self::$_CURRENT_STATUS_FILTER = '('.self::$_CURRENT_STATUS_FILTER; - if ($_condition_profile_AWK != "" && $_condition_profile_AWK != null ) { - self::$_CURRENT_STATUS_FILTER .= '&&'.$_condition_profile_AWK; - } - if ($_inspect_condition_awk != "" && $_inspect_condition_awk != null ) { - self::$_CURRENT_STATUS_FILTER .= ' && '.$_inspect_condition_awk; - } - if ($_time_profile_awk != "" && $_time_profile_awk != null) { - self::$_CURRENT_STATUS_FILTER .= '&&'.$_time_profile_awk; - } - if ($CMSUserCondition != "" && $CMSUserCondition != null) { - self::$_CURRENT_STATUS_FILTER .= '&&'.$CMSUserCondition; - } - if ($filter_testdata != null ) { - self::$_CURRENT_STATUS_FILTER .= '&&('.$filter_testdata.')'; - } - if ($filter_usability != null ) { - self::$_CURRENT_STATUS_FILTER .= '&&('.$filter_usability.')'; - } - self::$_CURRENT_STATUS_FILTER .= ')'; - } - - # preštejemo vse zapise ki ustrezajo filtru po statusu - if (IS_WINDOWS) { - $awk_string = 'awk -F"'.STR_DLMT.'" "'.self::$_CURRENT_STATUS_FILTER.' {cnt++} END {print cnt}" '.self::$dataFileName; - $recCount = shell_exec($awk_string); - if ($_GET['debug'] == 1) { - print_r('
'.$awk_string); - } - - } else { - $awk_string = 'awk -F"'.STR_DLMT.'" \''.self::$_CURRENT_STATUS_FILTER.' {cnt++} END {print cnt}\' \''.self::$dataFileName.'\''; - $recCount = shell_exec($awk_string); - if ($_GET['debug'] == 1) { - print_r('
'.$awk_string); - } - } - if ((int)$recCount > 0 ) { - self::$_RECORD_COUNT = (int)$recCount; - } + # filtriranje po statusih + self::$_CURRENT_STATUS_FILTER = SurveyStatusProfiles :: getStatusAsAWKString(); + + if (self::$dataFileStatus >= 0) { + self::$_HEADERS = unserialize(file_get_contents(self::$headFileName)); + $filter_testdata = null; + + # ali imamo filter na testne podatke + if (isset(self::$_HEADERS['testdata']['grids'][0]['variables'][0]['sequence']) && (int)self::$_HEADERS['testdata']['grids'][0]['variables'][0]['sequence'] > 0) { + $test_data_sequence = self::$_HEADERS['testdata']['grids'][0]['variables'][0]['sequence']; + $filter_testdata = SurveyStatusProfiles :: getStatusTestAsAWKString($test_data_sequence); + } + # filtriranje po časih + $_time_profile_awk = SurveyTimeProfiles :: getFilterForAWK(self::$_HEADERS['unx_ins_date']['grids']['0']['variables']['0']['sequence']); + + # ali imamo filter na uporabnost + $filter_usability = null; + if (isset(self::$_HEADERS['usability']['variables'][0]['sequence']) && (int)self::$_HEADERS['usability']['variables'][0]['sequence'] > 0) { + $usability_data_sequence = self::$_HEADERS['usability']['variables'][0]['sequence']; + $filter_usability = SurveyStatusProfiles :: getStatusUsableAsAWKString($usability_data_sequence); + } + + # če nismo v indikatorjih (sistemske) + if (self::$_VARS[VAR_SHOW_SYSTEM] == false) { + # dodamo še ife + SurveyConditionProfiles :: setHeader(self::$_HEADERS); + $_condition_profile_AWK = SurveyConditionProfiles:: getAwkConditionString(); + + # dodamo še ife za inspect + $SI = new SurveyInspect(self::$sid); + $_inspect_condition_awk = $SI->generateAwkCondition(); + } - - if (self::$_VARS[VAR_REC_ON_PAGE] != 'all') { - self::$_TOTAL_PAGES = bcdiv(self::$_RECORD_COUNT, self::$_VARS[VAR_REC_ON_PAGE]); - - if (bcmod(self::$_RECORD_COUNT, self::$_VARS[VAR_REC_ON_PAGE]) > 0) - self::$_TOTAL_PAGES += 1; - if (self::$_VARS[VAR_CUR_REC_PAGE] > self::$_TOTAL_PAGES ) { - self::$_VARS[VAR_CUR_REC_PAGE] = self::$_TOTAL_PAGES; - } elseif (self::$_VARS[VAR_CUR_REC_PAGE] < 1 ) { - self::$_VARS[VAR_CUR_REC_PAGE] = 1; - } - - # nastavimo limit za datoteko - - $up = self::$_VARS[VAR_REC_ON_PAGE] * self::$_VARS[VAR_CUR_REC_PAGE]; - $low = $up - self::$_VARS[VAR_REC_ON_PAGE]+1; - - self::$_REC_LIMIT = ' NR=='.$low.',NR=='.$up.''; - } else { - # nastavimo limit za datoteko - self::$_REC_LIMIT = ''; - } - } - if (self::$_VARS[VAR_DATA]) { - $tmp_svp_pv = SurveyVariablesProfiles :: getProfileVariables(self::$_PROFILE_ID_VARIABLE ); - - # če je $svp_pv = null potem prikazujemo vse variable - # oziroma če je sistemski dodamo tudi vse, ker drugače lahko filter skrije telefon in email - if (count($tmp_svp_pv) == 0 || self::$_VARS[VAR_SHOW_SYSTEM] == true ) { - - $_sv = self::$SDF->getSurveyVariables(); - if (count($_sv) > 0) { - foreach ( $_sv as $vid => $variable) { - $tmp_svp_pv[$vid] = $vid; - } - } - } - } - self::$lineoffset=1; - # če prikazujemo sistemske ne prikazujemo recnumber - if (!self::$_VARS[VAR_SHOW_SYSTEM] && self::$_VARS[VAR_META] && self::$_VARS[VAR_METAFULL]) { - $svp_pv['recnum'] = 'recnum'; - #$svp_pv['code'] = 'code'; - self::$lineoffset++; - # za code ni ofseta - #self::$lineoffset++; - } - - if (self::$_VARS[VAR_DATA] && count($tmp_svp_pv) > 0) { - foreach ($tmp_svp_pv AS $_svp_pv) { - - # če imamo sistemski email ali telefon, ime, priimek (v header je nastavljno "hide_system" = 1) - # potem v odvisnosti od nastavitve prikazujemo samo navadne podatke ali pa samo te sistemske, zaradizaščite podatkov - $_sistemski = false; - if (!self::$_VARS[VAR_SHOW_SYSTEM] && self::$_HEADERS[$_svp_pv]['hide_system'] == '1') { - # prikazujemo samo nesistemske (nezaščitene) - unset(self::$_HEADERS[$_svp_pv]); - } else if (self::$_VARS[VAR_SHOW_SYSTEM] && self::$_HEADERS[$_svp_pv]['hide_system'] !== '1') { - # prikazujemo samo sistemske (zaščitene) podatke - unset(self::$_HEADERS[$_svp_pv]); - } else { - # če ne dodamo - $svp_pv[$_svp_pv] = $_svp_pv; - } - } - } + # dodamo pogoj za filter prepoznave uporabnika iz cms + # vklopljeno more bit prepoznava userja iz cms + $CMSUserCondition = null; + if (self::$doCMSUserFilter == true) { + $CMSUserCondition = self::createCMSUserFilter(); + } - #status - če smo v meta ali imamo profil vse enote - if ( (self::$_VARS[VAR_META] && self::$_VARS[VAR_METAFULL]) - || ( $ssp_pid = SurveyStatusProfiles::getCurentProfileId() == 1 )) { - $svp_pv['status'] = 'status'; - self::$lineoffset++; - } - - #lurker - if ( (self::$_VARS[VAR_META] && self::$_VARS[VAR_METAFULL]) - || ( $ssp_pid = SurveyStatusProfiles::getCurentProfileId() == 1 )) { - // dodamo v array da se prikazujejo tudi ti stolpci - $svp_pv['lurker'] = 'lurker'; - self::$lineoffset++; - } - # ustreznost - if (self::$_VARS[VAR_RELEVANCE] && self::$canDisplayRelevance && self::$_VARS[VAR_SHOW_SYSTEM] == false) { - // dodamo v array da se prikazujejo tudi ti stolpci - $svp_pv['relevance'] = 'relevance'; - self::$lineoffset++; - } - - # email tion - #email prikazujemo skupaj z ustreznostjo - if ( self::$_VARS[VAR_EMAIL] && self::$_VARS[VAR_SHOW_SYSTEM] == false ) { - // dodamo v array da se prikazujejo tudi ti stolpci - $svp_pv['invitation'] = 'invitation'; - self::$lineoffset++; - } + if ((isset($_condition_profile_AWK) && $_condition_profile_AWK != "" && $_condition_profile_AWK != null ) + || (isset($_inspect_condition_awk) && $_inspect_condition_awk != "" && $_inspect_condition_awk != null) + || (isset($_time_profile_awk) && $_time_profile_awk != "" && $_time_profile_awk != null) + || (isset($CMSUserCondition) && $CMSUserCondition != "" && $CMSUserCondition != null) + || (isset($filter_testdata) && $filter_testdata != null) + || (isset($filter_usability) && $filter_usability != null)) { + self::$_CURRENT_STATUS_FILTER = '('.self::$_CURRENT_STATUS_FILTER; + if ($_condition_profile_AWK != "" && $_condition_profile_AWK != null ) { + self::$_CURRENT_STATUS_FILTER .= '&&'.$_condition_profile_AWK; + } + if ($_inspect_condition_awk != "" && $_inspect_condition_awk != null ) { + self::$_CURRENT_STATUS_FILTER .= ' && '.$_inspect_condition_awk; + } + if ($_time_profile_awk != "" && $_time_profile_awk != null) { + self::$_CURRENT_STATUS_FILTER .= '&&'.$_time_profile_awk; + } + if ($CMSUserCondition != "" && $CMSUserCondition != null) { + self::$_CURRENT_STATUS_FILTER .= '&&'.$CMSUserCondition; + } + if ($filter_testdata != null ) { + self::$_CURRENT_STATUS_FILTER .= '&&('.$filter_testdata.')'; + } + if ($filter_usability != null ) { + self::$_CURRENT_STATUS_FILTER .= '&&('.$filter_usability.')'; + } + self::$_CURRENT_STATUS_FILTER .= ')'; + } + + # preštejemo vse zapise ki ustrezajo filtru po statusu + if (IS_WINDOWS) { + $awk_string = 'awk -F"'.STR_DLMT.'" "'.self::$_CURRENT_STATUS_FILTER.' {cnt++} END {print cnt}" '.self::$dataFileName; + $recCount = shell_exec($awk_string); + if (isset($_GET['debug']) && $_GET['debug'] == 1) { + print_r('
'.$awk_string); + } + + } else { + $awk_string = 'awk -F"'.STR_DLMT.'" \''.self::$_CURRENT_STATUS_FILTER.' {cnt++} END {print cnt}\' \''.self::$dataFileName.'\''; + $recCount = shell_exec($awk_string); + if (isset($_GET['debug']) && $_GET['debug'] == 1) { + print_r('
'.$awk_string); + } + } + if ((int)$recCount > 0 ) { + self::$_RECORD_COUNT = (int)$recCount; + } - if (isset(self::$_HEADERS['testdata'])) { - self::$_HAS_TEST_DATA = true; - $svp_pv['testdata'] = 'testdata'; - self::$lineoffset++; - } - # $svp_pv['unx_ins_date'] = 'unx_ins_date'; + + if (self::$_VARS[VAR_REC_ON_PAGE] != 'all') { + self::$_TOTAL_PAGES = bcdiv(self::$_RECORD_COUNT, self::$_VARS[VAR_REC_ON_PAGE]); + + if (bcmod(self::$_RECORD_COUNT, self::$_VARS[VAR_REC_ON_PAGE]) > 0) + self::$_TOTAL_PAGES += 1; + if (self::$_VARS[VAR_CUR_REC_PAGE] > self::$_TOTAL_PAGES ) { + self::$_VARS[VAR_CUR_REC_PAGE] = self::$_TOTAL_PAGES; + } elseif (self::$_VARS[VAR_CUR_REC_PAGE] < 1 ) { + self::$_VARS[VAR_CUR_REC_PAGE] = 1; + } + + # nastavimo limit za datoteko + + $up = self::$_VARS[VAR_REC_ON_PAGE] * self::$_VARS[VAR_CUR_REC_PAGE]; + $low = $up - self::$_VARS[VAR_REC_ON_PAGE]+1; + + self::$_REC_LIMIT = ' NR=='.$low.',NR=='.$up.''; + } else { + # nastavimo limit za datoteko + self::$_REC_LIMIT = ''; + } + } - if (self::$_VARS[VAR_METAFULL] && self::$_VARS[VAR_SHOW_SYSTEM] == false) { - # dodamo tudi special meta - $svp_pv['meta'] = 'meta'; - } - - if (self::$showItime == true) { - $svp_pv['itime'] = 'itime'; - self::$lineoffset++; - } - - // ce imamo vklopljene sistemske ne smemo povezovat podatkov in zato urejamo po abecedi - if(self::$_VARS[VAR_SHOW_SYSTEM]){ - - $hasEmail = false; - - // Poiscemo sekvenco sistemske spremenljivke - foreach (self::$_HEADERS AS $spr => $spremenljivka) { - if (isset($spremenljivka['sistem']) && $spremenljivka['sistem'] == 1 && $spremenljivka['variable'] == 'email') { - $sequence = $spremenljivka['sequences']; - $hasEmail = true; - } - } - - if($hasEmail){ - # sortiramo - self::$do_sort = true; - - # nastavimo po kateri sekvenci / stolpcu sortiramo - self::$sort_seq = $sequence; - - self::$sort_type = 'sort_asc'; - } - } - - self::getQuestionCount(); - if (self::$_VARS[VAR_SPR_LIMIT] > self::$_ALL_QUESTION_COUNT) { - self::$_VARS[VAR_SPR_LIMIT] = 'all'; - } - - $spr_cont = 0; // za paginacijo spremenljivk - - if(self::$_VARS['spr_limit'] == 'all'){ - $_spr_on_pages_start = 0; - $_spr_on_pages_stop = self::$_VARS['spr_page']; - } - else{ - $_spr_on_pages_start = self::$_VARS['spr_page'] * self::$_VARS['spr_limit'] - self::$_VARS['spr_limit']; - $_spr_on_pages_stop = self::$_VARS['spr_page'] * self::$_VARS['spr_limit']; - } + $tmp_svp_pv = array(); + $svp_pv = array(); + if (self::$_VARS[VAR_DATA]) { + $tmp_svp_pv = SurveyVariablesProfiles :: getProfileVariables(self::$_PROFILE_ID_VARIABLE ); + + # če je $svp_pv = null potem prikazujemo vse variable + # oziroma če je sistemski dodamo tudi vse, ker drugače lahko filter skrije telefon in email + if (count($tmp_svp_pv) == 0 || self::$_VARS[VAR_SHOW_SYSTEM] == true ) { + + $_sv = self::$SDF->getSurveyVariables(); + if (count($_sv) > 0) { + foreach ( $_sv as $vid => $variable) { + $tmp_svp_pv[$vid] = $vid; + } + } + } + } - # skreiramo filter variabel za podatke - if (count(self::$_HEADERS) > 0) { - // zloopamo skozi spremenljivke in sestavimo filter po stolpcih - $_tmp_filter = ''; - foreach (self::$_HEADERS AS $spid => $spremenljivka) { - if (isset($svp_pv[$spid])) { - // paginacija spremenljivk - if (self::$_VARS['spr_limit'] == 'all' || ($spr_cont >= $_spr_on_pages_start && $spr_cont < $_spr_on_pages_stop)) { - if (count($spremenljivka['grids']) > 0 ) { - foreach ($spremenljivka['grids'] AS $gid => $grid) { - if (count ($grid['variables']) > 0) { - foreach ($grid['variables'] AS $vid => $variable ){ - $_tmp_filter .= $_prfx.$variable['sequence']; - $_prfx = ','; - } - } - } - } - } // end: paginacija spremenljivk - $spr_cont++; - } else - # če prikazujemo samo sistemske - if ( self::$_VARS[VAR_SHOW_SYSTEM] && in_array($spremenljivka['variable'], array('email','ime','priimek','telefon','naziv','drugo','odnos'))) { - if (count($spremenljivka['grids']) > 0 ) { - foreach ($spremenljivka['grids'] AS $gid => $grid) { - if (count ($grid['variables']) > 0) { - foreach ($grid['variables'] AS $vid => $variable ){ - $_tmp_filter .= $_prfx.$variable['sequence']; - $_prfx = ','; - } - } - } + self::$lineoffset=1; + + # če prikazujemo sistemske ne prikazujemo recnumber + if (!self::$_VARS[VAR_SHOW_SYSTEM] && self::$_VARS[VAR_RELEVANCE] /* self::$_VARS[VAR_META] && self::$_VARS[VAR_METAFULL] */) { + $svp_pv['recnum'] = 'recnum'; + self::$lineoffset++; + } + + if (self::$_VARS[VAR_DATA] && count($tmp_svp_pv) > 0) { + + foreach ($tmp_svp_pv AS $_svp_pv) { + + # če imamo sistemski email ali telefon, ime, priimek (v header je nastavljno "hide_system" = 1) + # potem v odvisnosti od nastavitve prikazujemo samo navadne podatke ali pa samo te sistemske, zaradizaščite podatkov + $_sistemski = false; + if (!self::$_VARS[VAR_SHOW_SYSTEM] && isset(self::$_HEADERS[$_svp_pv]['hide_system']) && self::$_HEADERS[$_svp_pv]['hide_system'] == '1') { + # prikazujemo samo nesistemske (nezaščitene) + unset(self::$_HEADERS[$_svp_pv]); + } else if (self::$_VARS[VAR_SHOW_SYSTEM] && (!isset(self::$_HEADERS[$_svp_pv]['hide_system']) || self::$_HEADERS[$_svp_pv]['hide_system'] !== '1')) { + # prikazujemo samo sistemske (zaščitene) podatke + unset(self::$_HEADERS[$_svp_pv]); + } else { + # če ne dodamo + $svp_pv[$_svp_pv] = $_svp_pv; + } + } + } + + #status - če smo v meta ali imamo profil vse enote + if ( self::$_VARS[VAR_STATUS] /* || ( $ssp_pid = SurveyStatusProfiles::getCurentProfileId() == 1 ) */ ) { + $svp_pv['status'] = 'status'; + self::$lineoffset++; + + # email tion + if ( self::$_VARS[VAR_EMAIL] && self::$_VARS[VAR_SHOW_SYSTEM] == false ) { + // dodamo v array da se prikazujejo tudi ti stolpci + $svp_pv['invitation'] = 'invitation'; + self::$lineoffset++; } - $svp_pv[$spid] = $spid; - } - } - } + } - # prilagodimo array profilov variabel - self::$_SVP_PV = $svp_pv; - if ($_tmp_filter != '') - { + #geslo vabil + if ( self::$_VARS[VAR_EMAIL] && (self::$_VARS[VAR_SHOW_SYSTEM] == true || self::$survey['show_email'] == '1') ) { + // dodamo v array da se prikazujejo tudi ti stolpci + $svp_pv['code'] = 'code'; + self::$lineoffset++; + } + #lurker + if ( self::$_VARS[VAR_RELEVANCE] && self::$_VARS[VAR_SHOW_SYSTEM] == false ) { + // dodamo v array da se prikazujejo tudi ti stolpci + $svp_pv['lurker'] = 'lurker'; + self::$lineoffset++; + } + # ustreznost + if (self::$_VARS[VAR_RELEVANCE] && self::$canDisplayRelevance && self::$_VARS[VAR_SHOW_SYSTEM] == false) { + // dodamo v array da se prikazujejo tudi ti stolpci + $svp_pv['relevance'] = 'relevance'; + self::$lineoffset++; + } + + if (isset(self::$_HEADERS['testdata'])) { + self::$_HAS_TEST_DATA = true; + + if(self::$_VARS[VAR_RELEVANCE]){ + $svp_pv['testdata'] = 'testdata'; + self::$lineoffset++; + } + } + # $svp_pv['unx_ins_date'] = 'unx_ins_date'; + + if (self::$_VARS[VAR_METAFULL] && self::$_VARS[VAR_SHOW_SYSTEM] == false) { + # dodamo tudi special meta + $svp_pv['meta'] = 'meta'; + } + + if (self::$_VARS[VAR_RELEVANCE] && self::$_VARS[VAR_SHOW_SYSTEM] == false ) { + $svp_pv['itime'] = 'itime'; + self::$lineoffset++; + } + + // ce imamo vklopljene sistemske ne smemo povezovat podatkov in zato urejamo po abecedi + if(self::$_VARS[VAR_SHOW_SYSTEM]){ + + $hasEmail = false; + + // Poiscemo sekvenco sistemske spremenljivke + foreach (self::$_HEADERS AS $spr => $spremenljivka) { + if (isset($spremenljivka['sistem']) && $spremenljivka['sistem'] == 1 && $spremenljivka['variable'] == 'email') { + $sequence = $spremenljivka['sequences']; + $hasEmail = true; + } + } + + if($hasEmail){ + # sortiramo + self::$do_sort = true; + + # nastavimo po kateri sekvenci / stolpcu sortiramo + self::$sort_seq = $sequence; + + self::$sort_type = 'sort_asc'; + } + } + + self::getQuestionCount(); + if (self::$_VARS[VAR_SPR_LIMIT] > self::$_ALL_QUESTION_COUNT) { + self::$_VARS[VAR_SPR_LIMIT] = 'all'; + } + + $spr_cont = 0; // za paginacijo spremenljivk + + if(self::$_VARS['spr_limit'] == 'all'){ + $_spr_on_pages_start = 0; + $_spr_on_pages_stop = self::$_VARS['spr_page']; + } + else{ + $_spr_on_pages_start = self::$_VARS['spr_page'] * self::$_VARS['spr_limit'] - self::$_VARS['spr_limit']; + $_spr_on_pages_stop = self::$_VARS['spr_page'] * self::$_VARS['spr_limit']; + } + + # skreiramo filter variabel za podatke + if (count(self::$_HEADERS) > 0) { + // zloopamo skozi spremenljivke in sestavimo filter po stolpcih + $_tmp_filter = ''; + $_prfx = ''; + foreach (self::$_HEADERS AS $spid => $spremenljivka) { + if (isset($svp_pv[$spid])) { + // paginacija spremenljivk + if (self::$_VARS['spr_limit'] == 'all' || ($spr_cont >= $_spr_on_pages_start && $spr_cont < $_spr_on_pages_stop)) { + if (count($spremenljivka['grids']) > 0 ) { + foreach ($spremenljivka['grids'] AS $gid => $grid) { + if (isset($grid['variables']) && count($grid['variables']) > 0) { + foreach ($grid['variables'] AS $vid => $variable ){ + $_tmp_filter .= $_prfx.$variable['sequence']; + $_prfx = ','; + } + } + } + } + } // end: paginacija spremenljivk + + if($spremenljivka['tip'] != 'm' && $spremenljivka['tip'] != 'sm') + $spr_cont++; + } else + # če prikazujemo samo sistemske + if ( isset($spremenljivka['variable']) && self::$_VARS[VAR_SHOW_SYSTEM] && in_array($spremenljivka['variable'], array('email','ime','priimek','telefon','naziv','drugo','odnos'))) { + if (count($spremenljivka['grids']) > 0 ) { + foreach ($spremenljivka['grids'] AS $gid => $grid) { + if (count ($grid['variables']) > 0) { + foreach ($grid['variables'] AS $vid => $variable ){ + $_tmp_filter .= $_prfx.$variable['sequence']; + $_prfx = ','; + } + } + } + } + $svp_pv[$spid] = $spid; + } + } + } + + # prilagodimo array profilov variabel + self::$_SVP_PV = $svp_pv; + if ($_tmp_filter != ''){ self::$_VARIABLE_FILTER = $_tmp_filter; } } - } /** Prikaže filtre za število podatkov.... @@ -815,99 +837,7 @@ class SurveyDataDisplay{ } # če imamo podatke - if (self::$dataFileStatus != FILE_STATUS_SRV_DELETED) { - - echo ''; - - + if (self::$dataFileStatus != FILE_STATUS_SRV_DELETED) { # ali imamo testne podatke if (self::$_HAS_TEST_DATA) { # izrišemo bar za testne podatke @@ -936,7 +866,7 @@ class SurveyDataDisplay{ //$_tmp_limit = array(10,50,100,250,500,1000,2500,5000,10000); $_tmp_limit = array(10,50,100,250,500); - $_select_records = ''; foreach ($_tmp_limit AS $limit) { if ($limit < self::$_RECORD_COUNT) { $_select_records .= ''; } @@ -960,7 +890,7 @@ class SurveyDataDisplay{ if (self::$_VARS[VAR_REC_ON_PAGE] != 'all' && self::$_TOTAL_PAGES > 1) { echo ''; // puscica levo @@ -968,7 +898,7 @@ class SurveyDataDisplay{ echo ''; } - $_records_page = ''; for ($i=1; $i<=self::$_TOTAL_PAGES; $i++) { $_records_page .= ''; @@ -999,7 +929,7 @@ class SurveyDataDisplay{ //$_spr_limit = array(5=>'5',10=>'10',20=>'20',30=>'30',50=>'50',100=>'100','all'=>$lang['hour_all2']); $_spr_limit = array(5=>'5',10=>'10',20=>'20',30=>'30',50=>'50'); - $_spr_on_page = ''; foreach ($_spr_limit AS $key => $label) { if ($key < self::$_ALL_QUESTION_COUNT) { $_spr_on_page .= ''; } @@ -1021,7 +951,7 @@ class SurveyDataDisplay{ # KATERA STRAN // prestejemo stevilo vprasanj - $questions = count(self::$_SVP_PV); + $questions = (self::$_SVP_PV !== null) ? count(self::$_SVP_PV) : 0; if (self::$_VARS[VAR_SPR_LIMIT] != 'all') { $spr_pages = bcdiv($questions, self::$_VARS[VAR_SPR_LIMIT]); @@ -1031,9 +961,9 @@ class SurveyDataDisplay{ if ($spr_pages > 1) { - $_spr_page = ''; echo ''; // puscica levo @@ -1064,82 +994,100 @@ class SurveyDataDisplay{ public static function displayLeftFilters() { global $lang, $site_url; - - // število zapisov na stran - echo '
    '; - - echo '
  • '.$lang['srv_show'].':
  • '; - + // ustreznost - if (self::$canDisplayRelevance) { + /* if (self::$canDisplayRelevance) { - echo '
  • '; + echo '
    '; if (self::$_VARS[VAR_SHOW_SYSTEM] != true) { - echo ''; + echo ''; } else { - echo ''; + echo ''; } - echo '
  • '; - } + echo ''; + } */ + + // podrobnosti statusa (novo - po starem levi parapodatki + datum + ustreznost) + echo '
    '; + if (self::$_VARS[VAR_SHOW_SYSTEM] != true) { + echo ''; + } + else { + echo ''; + } + echo '
    '; + + // podrobnosti statusa (novo - po starem levi parapodatki + datum + ustreznost) + echo '
    '; + if (self::$_VARS[VAR_SHOW_SYSTEM] != true) { + echo ''; + } + else { + echo ''; + } + echo '
    '; - // email prikazujemo skupaj z ustreznost - if ((int)self::$survey['email'] == 1 && (int)self::$survey['user_base'] == 1) { + // email prikazujemo skupaj z status + /* if (SurveyInfo::getInstance()->checkSurveyModule('email') && isset(self::$survey['user_base']) && (int)self::$survey['user_base'] == 1) { - echo '
  • '; + echo '
    '; if (self::$_VARS[VAR_SHOW_SYSTEM] != true ) { - echo ''; + echo ''; } else { - echo ''; + echo ''; } - echo '
  • '; - } + echo ''; + } */ // podatki - echo '
  • '; - echo ' '; - echo '
  • '; + echo '
    '; + echo ' '; + echo '
    '; + + // Labela + if(self::$_VARS[VAR_DATA]){ + echo '
    '; + echo ' '; + echo '
    '; + } // Preverimo ce je vklopljen modul za volitve - potem nimamo identifikatorjev if(!SurveyInfo::getInstance()->checkSurveyModule('voting')){ // Parapodatki - echo '
  • '; - echo ' '; - echo '
  • '; - + echo '
    '; + echo ' '; + echo '
    '; + // če imamo sistemske podatke katere moramo prikazovati ločeno - IDENTIFIKATORJI if(!isset(self::$_HEADERS['_settings']['count_system_data_variables']) || (isset(self::$_HEADERS['_settings']['count_system_data_variables']) && (int)self::$_HEADERS['_settings']['count_system_data_variables'] > 0)) { - echo '
  • '; - echo ' '; - echo '
  • '; + echo '
    '; + echo ' '; + echo '
    '; } // Po novem vedno prikazemo checkbox identifikatorji - samo je odkljukan in disablan - else{ - echo '
  • '; - echo ' '; - echo '
  • '; - } + /* else{ + echo '
    '; + echo ' '; + echo '
    '; + } */ // datum - echo '
  • '; - echo ''; - echo '
  • '; + /* echo '
    '; + echo ' '; + echo '
    '; */ } // zaporedna številka - echo '
  • '; - echo ''; - echo '
  • '; - - // pomoč - ? - echo '
  • '.Help :: display('displaydata_checkboxes').'
  • '; - echo '
'; + echo '
'; + echo ' '; + echo '
'; } // Search po tabeli s podatki @@ -1148,13 +1096,24 @@ class SurveyDataDisplay{ $search = isset($_SESSION['sid_'.self::$sid]['data_search_filter']) ? $_SESSION['sid_'.self::$sid]['data_search_filter'] : ''; - echo '
'; - - echo ' '; - if($search != ''){ - echo ''.$lang['srv_displayData_search'].' "'.$search.'"!'; - } + echo '
'; + echo '
'; + + echo ' '; + echo ''; + echo ''; + + //X za pocisti search + if($search != '') + echo ' '; + + echo '
'; + + /* if($search != ''){ + echo ''.$lang['srv_displayData_search'].' "'.$search.'"!'; + } */ + echo '
'; } @@ -1163,7 +1122,8 @@ class SurveyDataDisplay{ session_start(); - $search = (isset($_POST['value']) && $_POST['value'] != '') ? trim($_POST['value']) : ''; + $search = (isset($_POST['value']) && $_POST['value'] != '') ? trim($_POST['value']) : ''; + if($search != ''){ $_SESSION['sid_'.self::$sid]['data_search_filter'] = $search; } @@ -1181,17 +1141,17 @@ class SurveyDataDisplay{ } - // Prikazemo editiranje na dnu (brisanje vecih hkrati...) - public static function displayBottomEdit(){ + // Prikazemo brisanje vecih hkrati + public static function displayMassDelete(){ global $lang; + if ((int)self::$_RECORD_COUNT > 0){ - echo '
'; + echo '
'; - echo ' '; - echo ''.$lang['srv_select_all'].''; - echo ''; - echo '   '.$lang['srv_delete_selected'].''; - echo '

'.$lang['srv_delete_infotext'].' '.Help::display('srv_delete_infotext').'

'; + echo ''; + echo ''; + + echo ''; echo '
'; } @@ -1203,41 +1163,171 @@ class SurveyDataDisplay{ public static function displayVnosiHTML() { global $lang; global $site_path; + global $site_url; global $global_user_id; + // na vrhu in na dnu izrisemo paginacijo if(self::$dataFileStatus != FILE_STATUS_NO_DATA && (int)self::$_RECORD_COUNT > 0) { - echo '
'; - self::displayPaginacija($position='_top'); - echo '
'; - // Izrisemo search - if(!self::$_VARS[VAR_CODING]) - self::displayDataSearch(); - + // Zgornje nastavitve nad tabelo + echo '
'; + + + // SN preklop - ego alter (ce je vklopljen modul) + if(self::$is_social_network){ + echo '
'; + + echo ' '; + echo ' '; + + echo '
'; + } + + + // Navaden pogled / fullscreen + echo '
'; + + echo ' '; + echo ' '; + + echo '
'; + // Checkboxa za urejanje in izpise podatkov ter razpiranje dodatnih nastavitev - echo '
'; + echo '
'; + echo ' '; + echo '
'; + - echo ''; - if (self::$displayEditIcons['dataIcons_edit'] == true) { - echo ' '.Help::display('srv_podatki_urejanje_inline'); + // Search + if(!self::$_VARS[VAR_CODING]) + self::displayDataSearch(); + + //icons and export checkbox + if (self :: $is_social_network == false || self::$_VARS[VAR_CIRCLES] == 0) { + + echo '
'; + echo ' '; + echo ' '; + echo '
'; + + // Preverimo, ce je funkcionalnost v paketu, ki ga ima uporabnik + $userAccess = UserAccess::getInstance($global_user_id); + if(!$userAccess->checkUserAccess($what='data_export')) { + + echo '
'; + echo ' '; + echo ' '; + echo '
'; + } + else { + echo '
'; + echo ' '; + echo ' '; + echo '
'; + } } - echo '  '; - - // Preverimo, ce je funkcionalnost v paketu, ki ga ima uporabnik - $userAccess = UserAccess::getInstance($global_user_id); - echo 'checkUserAccess($what='data_export') ? 'disabled="disabled"' : '').' />'; - $arrow = (isset($_SESSION['sid_' . self::$sid]['dataIcons_settings'])) ? $_SESSION['sid_' . self::$sid]['dataIcons_settings'] : 0; - echo '
' . $lang['srv_extra_settings'] . '
'; + // Paginacija + echo '
'; + self::displayPaginacija($position='_top'); echo '
'; + + + // Dodatne nastavitve, ki se razprejo + echo ''; + + + echo '
'; } - echo '
'; - + // Vklopljeni filtri echo '
'; # če ne uporabljamo privzetega časovnega profila izpišemo opozorilo @@ -1265,12 +1355,7 @@ class SurveyDataDisplay{ echo '
'; - - - - - $folder = $site_path . EXPORT_FOLDER.'/'; - + // Div s tabelo echo '
'; if ((self::$dataFileStatus == 1 || self::$dataFileStatus == 0) && self::$dataFileName !== null) { @@ -1289,8 +1374,7 @@ class SurveyDataDisplay{ else { # imamo SN omrežje if (self::$_VARS[VAR_CIRCLES] == 0) { - self::DisplaySnLinks(); - self::DisplayDataTable(); + self::DisplayDataTable(); } } } @@ -1300,35 +1384,37 @@ class SurveyDataDisplay{ } } else { - echo '
Ni podatkov za prikaz. Preverite filtre (Podatki, Para podatki, Polni para podatki)
'; + echo 'Ni podatkov za prikaz. Preverite filtre (Podatki, Para podatki, Polni para podatki)'; } } if (self :: $is_social_network ) { if (self::$SSNDF != null && self::$_VARS[VAR_CIRCLES] == 1) { - self::DisplaySnLinks(); self::$SSNDF->outputSNDataFile(); } } echo '
'; // id="div_vnosi_data">'; - + + // Spodnje nastavitve pod tabelo + echo '
'; + #izrišemo legendo statusov self::displayStatusLegend(); self::displayMetaStatusLegend(); self::displayTestLegend(); - // na vrhu in na dnu izrisemo paginacijo - if(self::$dataFileStatus != FILE_STATUS_NO_DATA){ + /*if(self::$dataFileStatus != FILE_STATUS_NO_DATA){ echo '
'; self::displayPaginacija($position='_bottom'); echo '
'; - - echo '
'; - } + }*/ + echo '
'; + + // osvetlimo stolpec s spremenljivko if (isset($_GET['highlight_spr'])) { ?> ".$_command.""); } - - // Editiranje na dnu - brisanje vec userjev hkrati... - - if(self::$dataFileStatus != FILE_STATUS_NO_DATA && (int)self::$displayEditIcons['dataIcons_edit'] == 1){ - self::displayBottomEdit(); - } } static public function DisplayDataMultipleTable() { @@ -1936,8 +2138,7 @@ class SurveyDataDisplay{ foreach (self::$_HEADERS AS $spid => $spremenljivka) { if ( isset(self::$_SVP_PV[$spid]) && is_numeric($spremenljivka['tip']) ) { - - //$spr_id = explode('_', $spid)[0]; // PHP 5.4 + $spr_id = explode('_', $spid); $spr_id = $spr_id[0]; @@ -1957,23 +2158,18 @@ class SurveyDataDisplay{ $sequences[$spr] = explode('_', $multiple[$spr]['sequences'] ); // vsi stolpci trenutne spremenljivke (4 - 12) $subseq[$spr] = count($multiple[$spr]['grids']); // stevilo vrstic v vprasanju (4 - 4) (to je za vsa vprasanja enako) $cols[$spr] = round(count($sequences[$spr])/$subseq[$spr], 0); // koliko stolpcev zasede enkratna ponovitev vprasanja (1 - 3) - - #echo "\n\r vars: ".count($sequences[$spr]).' '.$subseq[$spr].' '.$cols[$spr].' '.$dataoffset."\n\r"; - } - $_svp_pv['uid'] = 'uid'; - //self::$_SVP_PV = array_merge($_svp_pv, self::$_SVP_PV); + + #izpišemo tabelo - echo '
'; echo '
'; # div v katerem po potrebi prikazujemo gumbe za skrolanje levo in desno echo '
'; - echo '<'; - echo ' '; - echo '>'; + echo '
'; + echo '
'; echo '
'; $display1kaIcon = self::$displayEditIcons['dataIcons_quick_view'] ; @@ -2002,6 +2198,10 @@ class SurveyDataDisplay{ echo ' 1 ? (' span="'.$stolpci.'"') : '').'>'; } + if (self::$showLineNumber /* && $spr_cont+1 == self::$lineoffset */) { + echo ''; + } + $spr_cont = 0; foreach (self::$_HEADERS AS $spid => $spremenljivka) { if (isset(self::$_SVP_PV[$spid]) && count($spremenljivka['grids']) > 0) { @@ -2013,11 +2213,7 @@ class SurveyDataDisplay{ $repeat = false; else $repeat = true; - - if (self::$showLineNumber && $spr_cont+1 == self::$lineoffset) { - echo ''; - } - + // paginacija spremenljivk if (self::$_VARS['spr_limit'] == 'all' || ($spr_cont >= $_spr_on_pages_start && $spr_cont < $_spr_on_pages_stop)) { foreach ($spremenljivka['grids'] AS $gid => $grid) { @@ -2054,6 +2250,12 @@ class SurveyDataDisplay{ # dodamo skrit stolpec uid echo ' '; + + if (self::$showLineNumber/* && $spr_cont+1 == self::$lineoffset */) { + echo ''; + echo '
'.$lang['srv_line_number'].'
'; + echo ''; + } $spr_cont = 0; foreach (self::$_HEADERS AS $spid => $spremenljivka) { @@ -2069,11 +2271,6 @@ class SurveyDataDisplay{ $colspan = $spremenljivka['cnt_all']; } - if (self::$showLineNumber && $spr_cont+1 == self::$lineoffset) { - echo ''; - echo '
'.$lang['srv_line_number'].'
'; - echo ''; - } // paginacija spremenljivk if (self::$_VARS['spr_limit'] == 'all' || ($spr_cont >= $_spr_on_pages_start && $spr_cont < $_spr_on_pages_stop)) { echo ''; @@ -2095,6 +2292,12 @@ class SurveyDataDisplay{ # dodamo skrit stolpec uid echo ' '; + if(self::$showLineNumber /* && $spr_cont+1 == self::$lineoffset */) { + echo ''; + echo '
'.$lang['srv_line_number'].'
'; + echo ''; + } + $spr_cont = 0; foreach (self::$_HEADERS AS $spid => $spremenljivka) { if (isset(self::$_SVP_PV[$spid]) && (count($spremenljivka['grids']) > 0 )) { @@ -2107,12 +2310,6 @@ class SurveyDataDisplay{ else $repeat = true; - if(self::$showLineNumber && $spr_cont+1 == self::$lineoffset) { - echo ''; - echo '
'.$lang['srv_line_number'].'
'; - echo ''; - } - // paginacija spremenljivk if (self::$_VARS['spr_limit'] == 'all' || ($spr_cont >= $_spr_on_pages_start && $spr_cont < $_spr_on_pages_stop)) { @@ -2132,14 +2329,28 @@ class SurveyDataDisplay{ # colspan za ikonce if ($stolpci > 0) { - //for ($i=0; $i<$stolpci; $i++) - // echo ' '; - echo ' 1 ? (' colspan="'.$stolpci.'"') : '').'> '; + + $show_mass_delete = (self::$dataFileStatus != FILE_STATUS_NO_DATA && (int)self::$displayEditIcons['dataIcons_edit'] == 1) ? true : false; + + echo ' 1 ? ('colspan="'.$stolpci.'"') : '').' '/* .($show_mass_delete ? 'style="min-width:190px"' : '') */.'>'; + + // Editiranje na dnu - brisanje vec userjev hkrati... + if($show_mass_delete){ + self::displayMassDelete(); + } + + echo ''; } # dodamo skrit stolpec uid echo ' '; + if (self::$showLineNumber /* && $spr_cont+1 == self::$lineoffset */) { + echo ''; + echo '
'.$lang['srv_line_number'].'
'; + echo ''; + } + $spr_cont = 0; foreach (self::$_HEADERS AS $spid => $spremenljivka) { if (isset(self::$_SVP_PV[$spid]) && count($spremenljivka['grids']) > 0) { @@ -2152,18 +2363,19 @@ class SurveyDataDisplay{ else $repeat = true; - if (self::$showLineNumber && $spr_cont+1 == self::$lineoffset) { - echo ''; - echo '
'.$lang['srv_line_number'].'
'; - echo ''; - } - // paginacija spremenljivk if (self::$_VARS['spr_limit'] == 'all' || ($spr_cont >= $_spr_on_pages_start && $spr_cont < $_spr_on_pages_stop)) { foreach ($spremenljivka['grids'] AS $gid => $grid) { if (count ($grid['variables']) > 0) { foreach ($grid['variables'] AS $vid => $variable ){ - echo ''; - + if ($stolpci > 0 ) { + if (self::$displayEditIcons['dataIcons_edit'] == true) { + // checkbox za brisanje vecih vrstic hkrati + echo ''; + } + } if ((int)$display1kaIcon == 1) { - echo ''; + echo ''; } if ($stolpci > 0 ) { if (self::$displayEditIcons['dataIcons_edit'] == true) { - // checkbox za brisanje vecih vrstic hkrati - echo ''; - echo ''; - echo ''; - echo ''; + echo ''; + echo ''; + echo ''; } if (self::$displayEditIcons['dataIcons_write'] == true) { - echo ''; - echo ''; + echo ''; + echo ''; } } @@ -2481,51 +2696,62 @@ class SurveyDataDisplay{ // JS za urejanje vnosov (click in hover) (funkciji sta definirani v postProcess.js) ?> - - ".$_command.""); } - - // Editiranje na dnu - brisanje vec userjev hkrati... - if(self::$dataFileStatus != FILE_STATUS_NO_DATA && (int)self::$displayEditIcons['dataIcons_edit'] == 1){ - self::displayBottomEdit(); - } } public static function url_to_link($text) { @@ -2562,6 +2783,9 @@ class SurveyDataDisplay{ return false; } + // Shranimo jezik vmesnika + $lang_old = $lang; + include_once('../../main/survey/app/global_function.php'); new \App\Controllers\SurveyController(true); save('usr_id', self::$usr_id); @@ -2571,7 +2795,7 @@ class SurveyDataDisplay{ } else { $quick_view = true; } - + $rowa = SurveyInfo::getInstance()->getSurveyRow(); if ($quick_view) { @@ -2592,22 +2816,11 @@ class SurveyDataDisplay{ echo ""."\n"; } + echo '
'; - echo '
'; - // title - echo '
'; - - //echo $rowa['naslov']; - if (self::$quickEdit_recnum[3]['hasPrev'] == true) { - echo ''; - } - echo 'Recnum '.self::$quickEdit_recnum[2]; - if (self::$quickEdit_recnum[3]['hasNext'] == true) { - echo ''; - } - - echo '
'; + + echo '
'; if ($quick_view == false) { echo '
'."\n"; @@ -2693,6 +2906,7 @@ class SurveyDataDisplay{ # V VPOGLEDU NE FILTRIRAMO SPREMENLJIVK (v.v.: 27.11.2011) #$tmp_svp_pv = SurveyVariablesProfiles :: getProfileVariables($_currentVariableProfile); + $tmp_svp_pv = array(); # če je $svp_pv = null potem prikazujemo vse variable # oziroma če je sistemski dodamo tudi vse, ker drugače lahko filter skrije telefon in email @@ -2726,33 +2940,38 @@ class SurveyDataDisplay{ while (get('grupa') != \App\Controllers\FindController::getInstance()->findNextGrupa() && (\App\Controllers\FindController::getInstance()->findNextGrupa() > 0 || (get('loop_id') != null && \App\Controllers\FindController::getInstance()->findNextLoopId() != null))); } - if ($quick_view == false) { - //echo ' ';... - echo ''; - echo ''; - #echo '
'."\n"; - } - else{ + if ($quick_view == false) { echo ''."\n"; } - echo '
'; # inner + // restavriramo jezik vmesnika ce je slucajno drugacen od ankete + $lang = $lang_old; - echo '
'; + echo '
'; self::displayVnosIcons(); - echo '
'; - - echo '



'; - + + if ($quick_view == false) { + echo '
'; + echo ' '; + echo ' '; + echo '
'; + } + echo '
'; + echo '
'; # inner + + // Div na desni z metapodatki + echo '
'; + echo '
'; + self::displayQuickEditMeta(); + echo '
'; + echo '
'; - // Div na desni z metapodatki - echo '
'; - self::displayQuickEditMeta(); echo '
'; + // Preverimo ce gre za prvo urejanje - potem avtomatsko ustvarimo arhiv podatkov if ($quick_view == false && isset($_GET['post']) && $_GET['post'] == '1') { ob_flush(); @@ -2766,18 +2985,19 @@ class SurveyDataDisplay{ global $lang; global $site_path; - //echo '

'.$lang['srv_data_title_quick_view'].'

'; - if (self::$dataFileStatus == FILE_STATUS_NO_DATA || self::$dataFileStatus == FILE_STATUS_NO_FILE || self::$dataFileStatus == FILE_STATUS_SRV_DELETED){ return false; } - + + // Paginacija self::displayQuickEditPagination(); - echo '
'; + + // Filtri - ?? todo ?? + /*echo '
'; echo '
    '; # div za filtre statusov SurveyStatusProfiles::DisplayLink(false); @@ -2809,11 +3029,18 @@ class SurveyDataDisplay{ if ($doNewLine) { echo '
    '; - } + }*/ - echo '
    '; + + // Zgrnja vrstica z ikonami in naslovom + echo '
    '; self::displayVnosIcons(); + + // title + echo '
    '; + echo $lang['srv_recnum_long'].': '.self::$quickEdit_recnum[2]; + echo '
    '; echo '
    '; } @@ -2870,27 +3097,19 @@ class SurveyDataDisplay{ $current = count($uids)-1; } - echo '