'ASC'); // vrstni red zapisov - rekordov static private $_REC_LIMIT = ' NR==1,NR==50'; # string za limiz tapisov static private $_RECORD_COUNT = 0; # koliko zapisov dobimo po filtriranju static private $_TOTAL_PAGES = 0; # koliko strani dobimo po filtriranju static private $_ALL_QUESTION_COUNT = null; # koliko je vseh vprasanj static private $_ALL_VARIABLES_COUNT = null; # koliko je vseh variables static private $SSNDF = null; # Class za SN_data fajle static private $is_social_network = false; # ali je anketa tipa SN (social network) static private $_HEADERS = array(); static private $_HAS_TEST_DATA = false; # ali anketa vsebuje testne podatke static private $do_sort = false; # ali sploh sortiramo podatke static private $sort_seq = null; # po katerem stolpcu sortiramo static private $sort_type = null; # na kak način sortiramo sort_asc = / sort_dsc = static private $doCMSUserFilter = false; # ali filtriramo samo svoje ankete static private $usr_id = null; #id respondenta za ki ga trenutno prikazujemo static private $showItime = false; #ali prikazujemo insert time static private $showLineNumber = false; #ali vrivamo line number static private $lineoffset = 0; #po koliko celicah vrivamo line number static private $displayEditIcons = array( 'dataIcons_quick_view' => true, 'dataIcons_edit' => false, 'dataIcons_write'=>false); #ali prikazujemo ikone za urejanje static private $displayEditIconsSettings = false; # ali prikazujemo okno s checkboxi za nastavitve tabele s podatki static private $printPreview = false; # ali prikazujemo podatke kot print preview; static private $canDisplayRelevance = true; # ali prikazujemo ustreznost - relevance; static private $quickEdit_recnum = array(); # array z prejsnjim in naslednjim recnumom (za vpogled - puscici naprej,nazaj) # LIMITI static public $_VARS = array( VAR_DATA => 1, # ali prikazujemo podatke VAR_REC_ON_PAGE => 50, VAR_CUR_REC_PAGE => 1, VAR_META => 0, # ali prikazujemo meta (status) VAR_METAFULL => 0, # ali prikazujemo full meta VAR_SPR_LIMIT => 10, VAR_SPR_PAGE => 1, VAR_EDIT => 0, # ali imamo možnost urejanja (brisanje popravljanje) VAR_PRINT => 0, # ali imamo možnost izpisa v PDF, RTF VAR_MONITORING => 0, # ali smo v zavihku monitoring VAR_CODING => 0, # ali smo v zavihku kodiranje VAR_SHOW_SYSTEM => 0, # ali prikazujemo sistemske variable (telefon, email) 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_EMAIL => 1, # ali prikazujemo email status VAR_CIRCLES => 0, # ali prikazujemo kroge antonučija VAR_SHOW_DATE => 0, # ali prikazujemo kroge antonučija VAR_SHOW_NO => 0, # ali prikazujemo kroge antonučija ); static public $_CURRENT_STATUS_FILTER = ''; static public $_VARIABLE_FILTER = ''; # sed string array z prikazanimi variablami z upoštevanjem filtrov static private $_SVP_PV = array(); # array z prikazanimi variablami z upoštevanjem filtrov static public $_PROFILE_ID_STATUS = null; static public $_PROFILE_ID_VARIABLE = null; static public $_PROFILE_ID_CONDITION = null; function __construct($anketa) { self::Init($anketa); } /** Inicializacija * * @param $sid */ static public function Init($sid) { # nastavimo privzeto pot do folderjev global $site_path, $global_user_id, $lang; self::$folder = $site_path . EXPORT_FOLDER.'/'; # nastavimo id ankete self::$sid = $sid; Common::deletePreviewData($sid); SurveySession::sessionStart(self::$sid); # nastavimo limite self::setVars(); # podakcija self::$subAction = isset($_GET['m']) && $_GET['m'] != '' ? $_GET['m'] : M_COLLECT_DATA_VIEW; # informacije ankete SurveyInfo::getInstance()->SurveyInit($sid); self::$survey = SurveyInfo::getInstance()->getSurveyRow(); # aktivne tabele self::$db_table = SurveyInfo::getInstance()->getSurveyArchiveDBString(); # ali je anketa tipa SN - social network self::$is_social_network = (SurveyInfo::getInstance()->checkSurveyModule('social_network')) ? true : false; # Ce imamo vklopljeno povezovanje z identifikatorji, potem prikaz identifikatorjev izklopimo if(self::$survey['show_email'] == '1'){ self::$_VARS[VAR_SHOW_SYSTEM] = false; } # 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) { self::$showItime = true; } else { self::$showItime = false; } # 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) { self::$showLineNumber = true; } else { self::$showLineNumber = false; } self::$_CURRENT_STATUS_FILTER = STATUS_FIELD.'~/6|5/'; if (self::$subAction == M_COLLECT_DATA_MONITORING) $monitoring = true; else $monitoring = false; SurveyStatusProfiles :: Init(self::$sid); SurveyVariablesProfiles :: Init($sid, $global_user_id, true, $monitoring); SurveyConditionProfiles :: Init($sid, $global_user_id); SurveyTimeProfiles :: Init($sid, $global_user_id); SurveyUserSetting :: getInstance()->Init($sid, $global_user_id); SurveyDataSettingProfiles :: Init($sid); SurveySetting::getInstance()->Init($sid); $sdsp_displayEditIcons = SurveyDataSettingProfiles :: getSetting('dataShowIcons'); if ($sdsp_displayEditIcons != null && is_array($sdsp_displayEditIcons)) { self::$displayEditIcons = $sdsp_displayEditIcons; } if(isset($_SESSION['sid_'.self::$sid]['dataIcons_settings'])) self::$displayEditIconsSettings = ($_SESSION['sid_'.self::$sid]['dataIcons_settings']); # ali filtriramo cms usejreve datotekoe session_start(); self::$doCMSUserFilter = $_SESSION['sid_'.$sid]['doCMSUserFilter']; session_commit(); // Inicializiramo class za datoteke self::$SDF = SurveyDataFile::get_instance(); self::$SDF->init($sid); // 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::$headFileName = self::$SDF->getHeaderFileName(); self::$dataFileName = self::$SDF->getDataFileName(); self::$dataFileStatus = self::$SDF->getStatus(); self::$dataFileUpdated = self::$SDF->getFileUpdated(); // Ce ni datoteke izpisemo samo text if ( self::$dataFileStatus == FILE_STATUS_NO_DATA || self::$dataFileStatus == FILE_STATUS_SRV_DELETED) { Common::noDataAlert(); return false; } // Ce smo v identifikatorjih potem ne omogočamo urejanja if (self::$_VARS[VAR_SHOW_SYSTEM] == true) { foreach (self::$displayEditIcons AS $key => $value) { self::$displayEditIcons[$key] = false; } } # nastavimo ali smo v urejanju. Po novem gledamo url - zaenkrat imamo pregled urejanje in izvoz skupaj if(self::$subAction == M_COLLECT_DATA_VIEW){ self::$_VARS[VAR_PRINT] = true; } if (self::$subAction == M_COLLECT_DATA_EDIT && self::$_VARS[VAR_SHOW_SYSTEM] == false) { self::$_VARS[VAR_EDIT] = true; } // gorazd, ti si nekaj spremenil tole EDIT variablo - tuki se zdej v vsakem primeru nastavi edit if (self::$displayEditIcons['dataIcons_edit'] == true && self::$_VARS[VAR_SHOW_SYSTEM] == false) { self::$_VARS[VAR_EDIT] = true; } else { self::$_VARS[VAR_EDIT] = false; } if ( self::$displayEditIcons['dataIcons_multiple'] ) { self::$_VARS['spr_limit'] = 'all'; } if (self::$subAction == M_COLLECT_DATA_MONITORING) { self::$_VARS[VAR_MONITORING] = true; self::$_VARS[VAR_PRINT] = true; } if (self::$subAction == 'coding') { self::$_VARS[VAR_CODING] = true; } self::$_VARS[VAR_META] = self::$_VARS[VAR_METAFULL]; # Če so izbrani VSI vnosi, naj bo označena USTREZNOST, # če pa so označeni le USTREZNI, je spoloh ni treba tega stolpca, saj so itak vsi ustrezni in je odveč. $ssp_pid = SurveyStatusProfiles::getCurentProfileId(); if ($ssp_pid == 2) { self::$canDisplayRelevance = false; } # preštejemo vsa vabila, če so vsi na ne, potem ne prikažemo vabil if (IS_WINDOWS) { $awk_cnt_str = 'awk -F"'.STR_DLMT.'" "'.EMAIL_FIELD.'~/1/'.' {cnt++} END {print cnt}" '.self::$dataFileName; } else { $awk_cnt_str = 'awk -F"'.STR_DLMT.'" \''.EMAIL_FIELD.'~/1/'.' {cnt++} END {print cnt}\' \''.self::$dataFileName.'\''; } $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) ) { self::$_VARS[VAR_EMAIL] = 0; } # nastavimo način sortiranja self::setUpSort(); # plovimo privzete id-je uporabniškega filtra self::setUserFilters(); # nastavimo uporabniške filtere self::setUpFilter(); # nastavimo SN class if (self :: $is_social_network) { self::$SSNDF = new SurveySNDataFile(self::$sid); self::$SSNDF->setVars(self::$_VARS); self::$SSNDF->setParameter('canDisplayRelevance',self::$canDisplayRelevance); self::$SSNDF->setParameter('showItime',self::$showItime); self::$SSNDF->setParameter('showLineNumber',self::$showLineNumber); } # nastavimo trenuten id respondenta (ce ga imamo) if(isset($_GET['usr_id'])) { self::$usr_id = $_GET['usr_id']; } } public function ajax() { switch ($_GET['a']) { case 'displayDataPrintPreview' : self :: displayDataPrintPreview(); break; case 'setSnDisplayFullTableCheckbox' : self :: setSnDisplayFullTableCheckbox(); break; case 'set_data_search_filter' : self :: setDataSearchFilter(); break; default: echo 'Error! (class: SurveyAnalysis->ajax() - missing action)'; break; } } /** vrne število vseh vprašanj * */ public static function getQuestionCount() { if (self::$_ALL_QUESTION_COUNT == null) { self::$_ALL_VARIABLES_COUNT = 0; self::$_ALL_QUESTION_COUNT = 0; if (self::$headFileName != null && self::$headFileName != '') { foreach (unserialize(file_get_contents(self::$headFileName)) AS $_spremenljivka) { if (isset($_spremenljivka['tip']) && $_spremenljivka['tip'] != 'm' && $_spremenljivka['tip'] != 'sm') { self::$_ALL_VARIABLES_COUNT += $_spremenljivka['cnt_all']; self::$_ALL_QUESTION_COUNT++; } } } } return self::$_ALL_QUESTION_COUNT; } /** vrne število vseh variabel * */ public function getVariablesCount() { if (self::$_ALL_VARIABLES_COUNT == null) { self::$_ALL_VARIABLES_COUNT = 0; self::$_ALL_QUESTION_COUNT = 0; if (self::$headFileName != null && self::$headFileName != '') { foreach (unserialize(file_get_contents(self::$headFileName)) AS $_spremenljivka) { if (isset($_spremenljivka['tip']) && $_spremenljivka['tip'] != 'm' && $_spremenljivka['tip'] != 'sm') { self::$_ALL_VARIABLES_COUNT += $_spremenljivka['cnt_all']; self::$_ALL_QUESTION_COUNT++; } } } } return self::$_ALL_VARIABLES_COUNT; } /** * @desc nastavi default vrednosti spremenljivk in prebere kar je blo GETano */ static function setVars () { // preberemo kar je GETano $data_view_settings = SurveySession::get('data_view_settings'); foreach (self::$_VARS AS $var => $val) { if (isset($data_view_settings[$var])) { $_val = $data_view_settings[$var]; if (is_string($_val) && $_val == 'true') { $_val = (int)true; } else if (is_string($_val) && $_val == 'false') { $_val = (int)false; } else if (is_numeric($_val)) { if( (float)$_val != (int)$_val ) { $_val = (float)$_val; } else { $_val = (int)$_val; } } self::$_VARS[$var] = $_val; } else if (isset($_REQUEST[$var])) { self::$_VARS[$var] = $_REQUEST[$var]; } } } /** * @desc vrne vse spremenljivki v obliki, ki se poslje preko GETa * v parametrih se poda spremenljivko, ki se bo nastavla (se prav ni taka, kot je zdej v self::$_VARS) */ static function getVars ($new_var=null, $new_val=null) { $str = ''; foreach (self::$_VARS AS $var => $val) { if ($var == $new_var) { $str .= '&'.$var.'='.$new_val; } else { $str .= '&'.$var.'='.$val; } } return $str; } /** * @desc vrne vse spremenljivki v obliki, ki se poslje preko GETa brez sorta, ker dodamo naknadno z javascriptom * v parametrih se poda spremenljivko, ki se bo nastavla (se prav ni taka, kot je zdej v self::$_VARS) */ static function getVarsNoSort ($new_var=null, $new_val=null) { $str = ''; foreach (self::$_VARS AS $var => $val) { if ($var != VAR_SORT_SEQ && $var != VAR_SORT_TYPE) { if ($var == $new_var) { $str .= '&'.$var.'='.$new_val; } else { $str .= '&'.$var.'='.$val; } } } return $str; } static private function setUpSort() { # če smo postali sort nastavitve preko geta if (isset($_GET['sort_seq']) && (int)$_GET['sort_seq'] > 0 ) { # sortiramo self::$do_sort = true; # nastavimo po kateri sekvenci / stolpcu sortiramo self::$sort_seq = (int)$_GET['sort_seq']; if (isset($_GET['sort_type']) && $_GET['sort_type'] === 'sort_dsc' ) { self::$sort_type = 'sort_dsc'; } else { self::$sort_type = 'sort_asc'; } } else { # ne sortiramo self::$do_sort = false; } } static private function setUserFilters() { #SurveyStatusProfiles :: setCurentProfileId(); self::$_PROFILE_ID_STATUS = SurveyStatusProfiles :: getDefaultProfile(); # Nastavimo filtre variabel $dvp = SurveyUserSetting :: getInstance()->getSettings('default_variable_profile'); $_currentVariableProfile = SurveyVariablesProfiles :: checkDefaultProfile($dvp); if ($dvp != $_currentVariableProfile) { SurveyUserSetting :: getInstance()->saveSettings('default_variable_profile', $_currentVariableProfile); } self::$_PROFILE_ID_VARIABLE = $_currentVariableProfile; } 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(); } 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; } 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; } } } #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(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_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']; } # 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 = ','; } } } } $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.... * */ public static function displayFilters() { global $site_url, $site_path, $lang, $global_user_id; #debug echo ''; if (self::$dataFileStatus == FILE_STATUS_NO_DATA) { return false; } # če imamo podatke if (self::$dataFileStatus != FILE_STATUS_SRV_DELETED) { # ali imamo testne podatke if (self::$_HAS_TEST_DATA) { # izrišemo bar za testne podatke $SSH = new SurveyStaticHtml(self::$sid); $SSH -> displayTestDataBar(); } } else { print_r("Anketa je bila izbrisana! Prikaz podatkov ni mogoč!"); } } public static function displayPaginacija($position='_top') { global $lang, $site_url; if ((int)self::$_RECORD_COUNT == 0) { return false; } # ŠTEVILO VNOSOV NA STRAN echo '
'; echo ''; if (self::$_VARS[VAR_REC_ON_PAGE] > self::$_RECORD_COUNT) { self::$_VARS[VAR_REC_ON_PAGE] = 'all'; } //$_tmp_limit = array(10,50,100,250,500,1000,2500,5000,10000); $_tmp_limit = array(10,50,100,250,500); $_select_records = ''; echo $_select_records; # KATERA STRAN if (self::$_VARS[VAR_REC_ON_PAGE] != 'all' && self::$_TOTAL_PAGES > 1) { echo ''; // puscica levo if (self::$_VARS[VAR_CUR_REC_PAGE] > 1){ echo ''; } $_records_page = ''; echo $_records_page; // puscica desno if (self::$_VARS[VAR_CUR_REC_PAGE] < self::$_TOTAL_PAGES){ echo ''; } } echo '
'; # ŠTEVILO SPREMENLJIVK NA STRAN echo '
'; echo ''; self::getQuestionCount(); if (self::$_VARS[VAR_SPR_LIMIT] > self::$_ALL_QUESTION_COUNT) { self::$_VARS[VAR_SPR_LIMIT] = 'all'; } //$_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 = ''; echo $_spr_on_page; # KATERA STRAN // prestejemo stevilo vprasanj $questions = count(self::$_SVP_PV); if (self::$_VARS[VAR_SPR_LIMIT] != 'all') { $spr_pages = bcdiv($questions, self::$_VARS[VAR_SPR_LIMIT]); if (bcmod($questions, self::$_VARS[VAR_SPR_LIMIT]) > 0) $spr_pages += 1; if ($spr_pages > 1) { $_spr_page = ''; echo $_spr_page; // puscica desno if (self::$_VARS[VAR_SPR_PAGE] < $spr_pages){ echo ''; } } } echo '
'; } public static function displayLeftFilters() { global $lang, $site_url; // ustreznost if (self::$canDisplayRelevance) { 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) { echo '
'; if (self::$_VARS[VAR_SHOW_SYSTEM] != true ) { echo ''; } else { echo ''; } echo '
'; } // podatki echo '
'; echo ' '; echo '
'; // Preverimo ce je vklopljen modul za volitve - potem nimamo identifikatorjev if(!SurveyInfo::getInstance()->checkSurveyModule('voting')){ // Parapodatki 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 '
'; } // Po novem vedno prikazemo checkbox identifikatorji - samo je odkljukan in disablan else{ echo '
'; echo ' '; echo '
'; } // datum echo '
'; echo ' '; echo '
'; } // zaporedna številka echo '
'; echo ' '; echo '
'; // Labela echo '
'; echo ' '; echo '
'; } // Search po tabeli s podatki public static function displayDataSearch(){ global $lang; $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 '
'; } // Shranimo iskanje v session private function setDataSearchFilter(){ session_start(); $search = (isset($_POST['value']) && $_POST['value'] != '') ? trim($_POST['value']) : ''; if($search != ''){ $_SESSION['sid_'.self::$sid]['data_search_filter'] = $search; } else{ $_SESSION['sid_'.self::$sid]['data_search_filter'] = ''; } session_commit(); // Na koncu se popravimo paginacijo na prvo stran SurveySession::sessionStart(self::$sid); SurveySession::append('data_view_settings','cur_rec_page',1); return; } // Prikazemo brisanje vecih hkrati public static function displayMassDelete(){ global $lang; if ((int)self::$_RECORD_COUNT > 0){ echo '
'; echo ''; echo ''; echo ''; echo '
'; } } /** Naredi output podatkov v HTML tabelo * */ public static function displayVnosiHTML() { global $lang; global $site_path; global $global_user_id; // na vrhu in na dnu izrisemo paginacijo if(self::$dataFileStatus != FILE_STATUS_NO_DATA && (int)self::$_RECORD_COUNT > 0) { // Zgornje nastavitve nad tabelo echo '
'; // Checkboxa za urejanje in izpise podatkov ter razpiranje dodatnih nastavitev echo '
'; $arrow = (isset($_SESSION['sid_' . self::$sid]['dataIcons_settings'])) ? $_SESSION['sid_' . self::$sid]['dataIcons_settings'] : 0; echo ' '; echo '
'; // Search if(!self::$_VARS[VAR_CODING]) self::displayDataSearch(); // Paginacija echo '
'; self::displayPaginacija($position='_top'); echo '
'; // Dodatne nastavitve, ki se razprejo echo ''; echo '
'; } // Vklopljeni filtri echo '
'; # če ne uporabljamo privzetega časovnega profila izpišemo opozorilo SurveyTimeProfiles :: printIsDefaultProfile(); # če nismo v identifikatorjih if (self::$_VARS[VAR_SHOW_SYSTEM] == false) { # če imamo filter ifov ga izpišemo SurveyConditionProfiles:: getConditionString(); # če imamo filter ifov za inspect ga izpišemo $SI = new SurveyInspect(self::$sid); $SI->getConditionString(); # če imamo filter spremenljivk ga izpišemo SurveyVariablesProfiles:: getProfileString(); } else{ echo '

'.$lang['srv_data_settings_identifier_notice'].'

'; } # če imamo rekodiranje $SR = new SurveyRecoding(self::$sid); $SR -> getProfileString(); echo '
'; // Div s tabelo echo '
'; if ((self::$dataFileStatus == 1 || self::$dataFileStatus == 0) && self::$dataFileName !== null) { # filtri morajo prikazovat vsaj eno spremenljivko ali meta podatek if (count(self::$_SVP_PV) > 0) { # če imamo kaj podatkov za prikaz if ((int)self::$_RECORD_COUNT > 0){ if (self :: $is_social_network == false) { if ( self::showMultiple() && self::$displayEditIcons['dataIcons_multiple'] ) self::DisplayDataMultipleTable(); else self::DisplayDataTable(); } else { # imamo SN omrežje if (self::$_VARS[VAR_CIRCLES] == 0) { self::DisplaySnLinks(); self::DisplayDataTable(); } } } # ni vrstic za prikaz else{ echo $lang['srv_data_no_data_filtred']; } } else { 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){ echo '
'; self::displayPaginacija($position='_bottom'); echo '
'; }*/ echo '
'; // osvetlimo stolpec s spremenljivko if (isset($_GET['highlight_spr'])) { ?> '; echo '
'; # div v katerem po potrebi prikazujemo gumbe za skrolanje levo in desno echo '
'; echo '
'; echo '
'; echo '
'; $display1kaIcon = self::$displayEditIcons['dataIcons_quick_view'] ; if (self::$printPreview == true) { self::$displayEditIcons['dataIcons_edit'] = false; self::$displayEditIcons['dataIcons_write'] = false; $display1kaIcon = false; } # koliko stolpcev je colspan $stolpci = ((int)self::$displayEditIcons['dataIcons_edit']*4) + ((int)self::$displayEditIcons['dataIcons_write']*2) + (int)$display1kaIcon; // Evoli ikona (ce je vklopljen modul) if((SurveyInfo::getInstance()->checkSurveyModule('evoli') || SurveyInfo::getInstance()->checkSurveyModule('evoli_employmeter')) && self::$displayEditIcons['dataIcons_write'] == '1') $stolpci += 3; // MFDPS ikona (ce je vklopljen modul) if(SurveyInfo::getInstance()->checkSurveyModule('mfdps') && self::$displayEditIcons['dataIcons_write'] == '1') $stolpci += 1; // BORZA ikona (ce je vklopljen modul) if(SurveyInfo::getInstance()->checkSurveyModule('borza') && self::$displayEditIcons['dataIcons_write'] == '1') $stolpci += 1; echo ''; # ali smo v edit načinu ali monitoringu $cssEdit = (self::$_VARS[VAR_EDIT] || self::$_VARS[VAR_MONITORING]?' editData':''); echo ''; echo ''; echo ''; # colspan za ikonce if ($stolpci > 0) { echo ''; $spr_cont = 0; foreach (self::$_HEADERS AS $spid => $spremenljivka) { if($spremenljivka['tip'] == 'm') $class = 'cell_info'; elseif($spremenljivka['tip'] == 'sm') $class = 'cell_paradata'; else $class = 'cell_data'; if (isset(self::$_SVP_PV[$spid])) { 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)) { echo ''; } $spr_cont++; } } echo ''; echo ''; # colspan za ikonce if ($stolpci > 0) { echo ''; $spr_cont = 0; foreach (self::$_HEADERS AS $spid => $spremenljivka) { if($spremenljivka['tip'] == 'm') $class = 'cell_info'; elseif($spremenljivka['tip'] == 'sm') $class = 'cell_paradata'; else $class = 'cell_data'; if (isset(self::$_SVP_PV[$spid]) && (count($spremenljivka['grids']) > 0 )) { 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) { if($spremenljivka['tip'] == 16 || $spremenljivka['tip'] == 19 || $spremenljivka['tip'] == 20){ echo ''; } else{ echo ''; } } } $spr_cont++; } } echo ''; echo ''; # colspan za ikonce if ($stolpci > 0) { $show_mass_delete = (self::$dataFileStatus != FILE_STATUS_NO_DATA && (int)self::$displayEditIcons['dataIcons_edit'] == 1) ? true : false; echo ''; } # dodamo skrit stolpec uid echo ''; $spr_cont = 0; $system_columns = array(); foreach (self::$_HEADERS AS $spid => $spremenljivka) { if($spremenljivka['tip'] == 'm') $class = 'cell_info'; elseif($spremenljivka['tip'] == 'sm') $class = 'cell_paradata'; else $class = 'cell_data'; if (isset(self::$_SVP_PV[$spid]) && count($spremenljivka['grids']) > 0) { 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) { if (count ($grid['variables']) > 0) { foreach ($grid['variables'] AS $vid => $variable ){ echo ''; } } } } $spr_cont++; } } echo''; echo ''; # PREBEREMO PODATKE $_command = ''; # najprej po potrebi presortiramo # na vindowsih ne delamo sorta (zaenkrat) if (self::$do_sort == true) { $sortString = '-k '.self::$sort_seq; #ker tekstovnih ne sortira vredu sem odstranil parameter -n # iz navodil: sorting keys can be interpreted numerically (-n option) instead of alphabetically (which is the default). # če bodo težave bo potrebno parameter -n dodajat po potrebi # $sort_numeric => $sort_numeric = ''; //$sort_numeric = '-n '; foreach (self::$_HEADERS AS $spid => $spremenljivka) { if (count($spremenljivka['grids']) > 0 ) { foreach ($spremenljivka['grids'] AS $gid => $grid) { if (count ($grid['variables']) > 0) { foreach ($grid['variables'] AS $vid => $variable ){ if (self::$sort_seq == $variable['sequence']) { // za datumska polja je potrebno malo potelovadit if ($variable['spss'] == 'DATETIMEw' || $variable['sortType'] == 'date') { #12.09.2011 $sortString = '-k '.self::$sort_seq.'.7,'.self::$sort_seq.'.10 -k'.self::$sort_seq.'.4,'.self::$sort_seq.'.5 -k'.self::$sort_seq.'.1,'.self::$sort_seq.'.2'; } // za numericne spremenljivke in recnum uporabimo parameter -n da ne sortira po stringu if ($variable['sortType'] == 'number') { $sort_numeric = '-n '; } } } } } } } if (IS_WINDOWS) { #Cygwin Sort Command On Windows # popravi pot do svojega sort-a $_path_to_CygwinSort = PATH_TO_CYGWIN_FOLDER; # $_command = $_path_to_CygwinSort.' -t"'.STR_DLMT.'"'.(self::$sort_type == 'sort_dsc' ? '-r' : '').' +'.(int)(self::$sort_seq-1).' '.self::$dataFileName.''; $_command = $_path_to_CygwinSort.' -t"'.STR_DLMT.'" '.(self::$sort_type == 'sort_asc' ? '' : '-r ').$sort_numeric.$sortString.' '.self::$dataFileName; } else { # smo na linuxu $_command = 'sort -t \\'.STR_DLMT.' '.(self::$sort_type == 'sort_asc' ? '' : '-r ' ).$sort_numeric.$sortString.' '.self::$dataFileName; } } // polovimo vrstice z statusom 5,6 in jih damo v začasno datoteko if (IS_WINDOWS) { if (self::$do_sort == true){ $_command .= ' | gawk -F"'.STR_DLMT.'" "BEGIN {OFS=\"\x7C\"} '.self::$_CURRENT_STATUS_FILTER.' { print $0 }" '; #$_command = 'awk -F"'.STR_DLMT.'" "BEGIN {OFS=\"\x7C\"} '.self::$_CURRENT_STATUS_FILTER.' { print $0 }" '.self::$dataFileName; } else{ $_command = 'gawk -F"'.STR_DLMT.'" "BEGIN {OFS=\"\x7C\"} '.self::$_CURRENT_STATUS_FILTER.' { print $0 }" '.self::$dataFileName; } } else { # če smo predhodno sortirali if (self::$do_sort){ $_command .= ' | awk -F"'.STR_DLMT.'" \'BEGIN {OFS="\x7C"} '.self::$_CURRENT_STATUS_FILTER.' { print $0 }\' '; } else{ $_command = 'awk -F"'.STR_DLMT.'" \'BEGIN {OFS="\x7C"} '.self::$_CURRENT_STATUS_FILTER.' { print $0 }\' '.self::$dataFileName; } } // pobrisemo vrstice ki ne vsebujejo iskalnega stringa (ce searchamo) in rdece boldamo rezultat $search = isset($_SESSION['sid_'.self::$sid]['data_search_filter']) ? $_SESSION['sid_'.self::$sid]['data_search_filter'] : ''; if($search != ''){ if (IS_WINDOWS) { $_command .= ' | sed "/'.$search.'/!d"'; $_command .= ' | sed "s*'.$search.'*'.$search.'*g"'; } else { $_command .= ' | sed \'/'.$search.'/!d\''; $_command .= ' | sed \'s*'.$search.'*'.$search.'*g\''; } } // paginacija po stolpcih (spremenljivkah) if (IS_WINDOWS) { $_command .= ' | cut -d "|" -f 1,'.self::$_VARIABLE_FILTER; } else { $_command .= ' | cut -d \'|\' -f 1,'.self::$_VARIABLE_FILTER; } if (self::$_REC_LIMIT != '') { #paginating if (IS_WINDOWS) { $_command .= ' | awk '.self::$_REC_LIMIT; } else { $_command .= ' | awk '.self::$_REC_LIMIT; } } // zamenjamo | z '; if (file_exists($folder.'tmp_export_'.self::$sid.'_data'.TMP_EXT)) { if(self::$_VARS[VAR_REC_ON_PAGE] == 'all'){ $up = 0; $low = 1; } else{ $up = self::$_VARS[VAR_REC_ON_PAGE] * self::$_VARS[VAR_CUR_REC_PAGE]; $low = $up - self::$_VARS[VAR_REC_ON_PAGE]+1; } $cntLines=$low ; $f = fopen ($folder.'tmp_export_'.self::$sid.'_data'.TMP_EXT, 'r'); while ($line = fgets ($f)) { echo ''; if ($stolpci > 0 ) { if (self::$displayEditIcons['dataIcons_edit'] == true) { // checkbox za brisanje vecih vrstic hkrati echo ''; } } if ((int)$display1kaIcon == 1) { echo ''; } if ($stolpci > 0 ) { if (self::$displayEditIcons['dataIcons_edit'] == true) { echo ''; echo ''; echo ''; } if (self::$displayEditIcons['dataIcons_write'] == true) { echo ''; echo ''; // Evoli ikona (ce je vklopljen modul) if(SurveyInfo::getInstance()->checkSurveyModule('evoli')) { echo ''; echo ''; echo ''; } if(SurveyInfo::getInstance()->checkSurveyModule('evoli_employmeter')) { echo ''; echo ''; echo ''; } // MFDPS ikona (ce je vklopljen modul) if(SurveyInfo::getInstance()->checkSurveyModule('mfdps')) { echo ''; } // BORZA ikona (ce je vklopljen modul) if(SurveyInfo::getInstance()->checkSurveyModule('borza')) { echo ''; } } } // URLje v besedilu spremenimo v __hiperlinke__ $line = stripslashes(self::url_to_link($line)); # po potrebi vrinemo zaporedno številko if (self::$showLineNumber) { $pos = self::getLineNumberCellOffset($line); $line = substr_replace($line, ''; echo ''; $cntLines++; } } else { echo 'File does not exist (err.No.1)! :'.'tmp_export_'.self::$sid.'_data'.TMP_EXT; } echo ''; echo '
1 ? (' colspan="'.$stolpci.'"') : '').'> '; } # dodamo skrit stolpec uid echo ''; echo '
'.$lang['srv_line_number'].'
'; echo '
'; echo '
'.$spremenljivka['naslov'].'
'; echo '
1 ? (' colspan="'.$stolpci.'"') : '').'> '; } # dodamo skrit stolpec uid echo ' '; echo '
'.$lang['srv_line_number'].'
'; echo '
'; echo '
'.$grid['variable'].'
'; echo '
'; echo '
'.$grid['naslov'].'
'; 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 ' '; echo '
'.$lang['srv_line_number'].'
'; echo '
'; if ($variable['sequence'] == self::$sort_seq && self::$sort_seq != null) { $img_src = self::$sort_type == 'sort_dsc' ? 'sort_descending' : 'sort_ascending' ; echo ''; } // Zabelezimo sekvenco sistemskih identifikatorjev da jih pobarvamo if($spremenljivka['is_system'] == 1) $system_columns[] = $spremenljivka['sequences']; echo '
'.$variable['naslov']; if ($variable['other'] == 1) { echo ' (text)'; } /*// urejanje kalkulacije -- izracunane vrednosti v podatkih if ($spremenljivka['tip'] == 22) { echo ' ('.$lang['edit3'].')'; }*/ echo '
'; echo '
if (IS_WINDOWS) { $_command .= ' | sed "s*'.STR_DLMT.'*'.STR_LESS_THEN.'/td'.STR_GREATER_THEN.STR_LESS_THEN.'td'.STR_GREATER_THEN.'*g" >> '.$folder.'tmp_export_'.self::$sid.'_data'.TMP_EXT; } else { $_command .= ' | sed \'s*'.STR_DLMT.'**g\' >> ' .$folder.'tmp_export_'.self::$sid.'_data'.TMP_EXT; } if (IS_WINDOWS) { # ker so na WINsih težave z sortom, ga damo v bat fajl in izvedemo :D $file_handler = fopen($folder.'cmd_'.self::$sid.'_to_run.bat',"w"); fwrite($file_handler,$_command); fclose($file_handler); $out_command = shell_exec($folder.'cmd_'.self::$sid.'_to_run.bat'); unlink($folder.'cmd_'.self::$sid.'_to_run.bat'); } else { $out_command = shell_exec($_command); } echo '
'.$cntLines, $pos, 0); } echo ''.$line.'
'; echo '
'; // end div tableContainer /** * kliki na ikonice za urejanje in izpis so definirane v script_analiza.js, analiza_init(); */ // JS za urejanje vnosov (click in hover) (funkciji sta definirani v postProcess.js) ?> ".$_command.""); } } static public function DisplayDataMultipleTable() { global $lang, $site_path; if ( self::$dataFileStatus == FILE_STATUS_OLD) { echo "Posodobljeno: ".date("d.m.Y, H:i:s", strtotime(self::$dataFileUpdated)); } $folder = $site_path . EXPORT_FOLDER.'/'; // paginacija spremenljivk $_spr_on_pages_stop = self::$_VARS['spr_page'] * self::$_VARS['spr_limit']; $_spr_on_pages_start = self::$_VARS['spr_page'] * self::$_VARS['spr_limit'] - self::$_VARS['spr_limit']; $sql = sisplet_query("SELECT s.id, s.tip FROM srv_spremenljivka s, srv_grupa g WHERE s.tip='24' AND s.gru_id=g.id AND g.ank_id='".self::$sid."'"); if ( mysqli_num_rows($sql) != 1 ) return; $row = mysqli_fetch_assoc($sql); $parent = $row['id']; $childs = array(); $sql1 = sisplet_query("SELECT spr_id FROM srv_grid_multiple WHERE parent='$parent' AND ank_id='".self::$sid."'"); while ( $row1 = mysqli_fetch_assoc($sql1) ) { if ( isset( self::$_SVP_PV[$row1['spr_id'].'_0'] ) ) $childs[] = $row1['spr_id']; } #preberemo HEADERS iz datoteke self::$_HEADERS = unserialize(file_get_contents(self::$headFileName)); $multiple = array(); 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]; if ( in_array($spr_id, $childs) ) { $spremenljivka['seq'] = explode('_', $spremenljivka['sequences']); $spremenljivka['spr_id'] = $spid; $multiple[] = $spremenljivka; } } } $sequences = array(); $subseq = array(); $cols = array(); for ($spr=0; $spr'; echo '
'; # div v katerem po potrebi prikazujemo gumbe za skrolanje levo in desno echo '
'; echo '
'; echo '
'; echo '
'; $display1kaIcon = self::$displayEditIcons['dataIcons_quick_view'] ; if (self::$printPreview == true) { self::$displayEditIcons['dataIcons_edit'] = false; self::$displayEditIcons['dataIcons_write'] = false; $display1kaIcon = false; } # koliko stolpcev je colspan $stolpci = ((int)self::$displayEditIcons['dataIcons_edit']*4) + ((int)self::$displayEditIcons['dataIcons_write']*2) + (int)$display1kaIcon ; echo ''; # ali smo v edit načinu ali monitoringu $cssEdit = (self::$_VARS[VAR_EDIT] || self::$_VARS[VAR_MONITORING]?' editData':''); echo ''; // Nastavimo colgroup, da na njega vezemo vse sirine v tabeli, zaradi resizinga stolpcev echo ''; # colspan za ikonce if ($stolpci > 0) { //for ($i=0; $i<$stolpci; $i++) // echo ''; echo '1 ? (' span="'.$stolpci.'"') : '').'>'; } $spr_cont = 0; foreach (self::$_HEADERS AS $spid => $spremenljivka) { if (isset(self::$_SVP_PV[$spid]) && count($spremenljivka['grids']) > 0) { $spr_id = explode('_', $spid); $spr_id = $spr_id[0]; if ( in_array($spr_id, $childs) ) $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) { if (count ($grid['variables']) > 0) { foreach ($grid['variables'] AS $vid => $variable ){ echo ''; } } if (!$repeat) break; } } $spr_cont++; } } echo ''; echo ''; echo ''; # colspan za ikonce if ($stolpci > 0) { echo ''; $spr_cont = 0; foreach (self::$_HEADERS AS $spid => $spremenljivka) { if (isset(self::$_SVP_PV[$spid])) { $spr_id = explode('_', $spid); $spr_id = $spr_id[0]; if ( in_array($spr_id, $childs) ) { $colspan = $cols[ array_search($spr_id, $childs) ]; } else { $colspan = $spremenljivka['cnt_all']; } 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)) { echo ''; } $spr_cont++; } } echo ''; # colspan za ikonce if ($stolpci > 0) { echo ''; $spr_cont = 0; foreach (self::$_HEADERS AS $spid => $spremenljivka) { if (isset(self::$_SVP_PV[$spid]) && (count($spremenljivka['grids']) > 0 )) { $spr_id = explode('_', $spid); $spr_id = $spr_id[0]; if ( in_array($spr_id, $childs) ) $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) { echo ''; if (!$repeat) break; } } $spr_cont++; } } echo ''; # colspan za ikonce if ($stolpci > 0) { $show_mass_delete = (self::$dataFileStatus != FILE_STATUS_NO_DATA && (int)self::$displayEditIcons['dataIcons_edit'] == 1) ? true : false; echo ''; } # dodamo skrit stolpec uid echo ''; $spr_cont = 0; foreach (self::$_HEADERS AS $spid => $spremenljivka) { if (isset(self::$_SVP_PV[$spid]) && count($spremenljivka['grids']) > 0) { $spr_id = explode('_', $spid); $spr_id = $spr_id[0]; if ( in_array($spr_id, $childs) ) $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) { if (count ($grid['variables']) > 0) { foreach ($grid['variables'] AS $vid => $variable ){ echo ''; } } if (!$repeat) break; } } $spr_cont++; } } echo''; echo ''; $_command = ''; #preberemo podatke # najprej po potrebi presortiramo # na vindowsih ne delamo sorta (zaenkrat) // zdej ga že? :) if (self::$do_sort == true) { # $sortString = '-k '.self::$sort_seq; #ker tekstovnih ne sortira vredu sem odstranil parameter -n # iz navodil: sorting keys can be interpreted numerically (-n option) instead of alphabetically (which is the default). # če bodo težave bo potrebno parameter -n dodajat po potrebi # $sort_numeric => $sort_numeric = ''; #$sort_numeric = '-n ' # za datumska polja je potrebno malo potelovadit foreach (self::$_HEADERS AS $spid => $spremenljivka) { if (count($spremenljivka['grids']) > 0 ) { foreach ($spremenljivka['grids'] AS $gid => $grid) { if (count ($grid['variables']) > 0) { foreach ($grid['variables'] AS $vid => $variable ){ if (self::$sort_seq == $variable['sequence']) { if ($variable['spss'] == 'DATETIMEw' || $variable['sortType'] == 'date') { #12.09.2011 $sortString = '-k '.self::$sort_seq.'.7,'.self::$sort_seq.'.10 -k'.self::$sort_seq.'.4,'.self::$sort_seq.'.5 -k'.self::$sort_seq.'.1,'.self::$sort_seq.'.2'; } } } } } } } if (IS_WINDOWS) { #Cygwin Sort Command On Windows # popravi pot do svojega sort-a $_path_to_CygwinSort = PATH_TO_CYGWIN_FOLDER; # $_command = $_path_to_CygwinSort.' -t"'.STR_DLMT.'"'.(self::$sort_type == 'sort_dsc' ? '-r' : '').' +'.(int)(self::$sort_seq-1).' '.self::$dataFileName.''; $_command = $_path_to_CygwinSort.' -t"'.STR_DLMT.'" '.(self::$sort_type == 'sort_asc' ? '' : '-r ').$sort_numeric.$sortString.' '.self::$dataFileName; } else { # smo na linuxu $_command = 'sort -t \\'.STR_DLMT.' '.(self::$sort_type == 'sort_asc' ? '' : '-r ' ).$sort_numeric.$sortString.' '.self::$dataFileName; } } // polovimo vrstice z statusom 5,6 in jih damo v začasno datoteko if (IS_WINDOWS) { #$cmdLn1 = 'awk -F"'.STR_DLMT.'" "BEGIN {OFS=\"\x7C\"} '.self::$_CURRENT_STATUS_FILTER.' { print $0 }" '.self::$dataFileName.' > '.$tmp_files['filtred_status']; #$out1 = shell_exec($cmdLn1); # če smo predhodno sortirali if (self::$do_sort == true) { $_command .= ' | gawk -F"'.STR_DLMT.'" "BEGIN {OFS=\"\x7C\"} '.self::$_CURRENT_STATUS_FILTER.' { print $0 }" '; #$_command = 'awk -F"'.STR_DLMT.'" "BEGIN {OFS=\"\x7C\"} '.self::$_CURRENT_STATUS_FILTER.' { print $0 }" '.self::$dataFileName; } else { $_command = 'gawk -F"'.STR_DLMT.'" "BEGIN {OFS=\"\x7C\"} '.self::$_CURRENT_STATUS_FILTER.' { print $0 }" '.self::$dataFileName; } } else { #$cmdLn1 = 'awk -F"'.STR_DLMT.'" \'BEGIN {OFS="\x7C"} '.self::$_CURRENT_STATUS_FILTER.' { print $0 }\' '.self::$dataFileName.' > '.$tmp_files['filtred_status']; #$out1 = shell_exec($cmdLn1); # če smo predhodno sortirali if (self::$do_sort) { $_command .= ' | awk -F"'.STR_DLMT.'" \'BEGIN {OFS="\x7C"} '.self::$_CURRENT_STATUS_FILTER.' { print $0 }\' '; } else { $_command = 'awk -F"'.STR_DLMT.'" \'BEGIN {OFS="\x7C"} '.self::$_CURRENT_STATUS_FILTER.' { print $0 }\' '.self::$dataFileName; } } // paginacija po stolpcih (spremenljivkah) if (IS_WINDOWS) { #$cmdLn1_1 = 'cut -d "|" -f 1,'.self::$_VARIABLE_FILTER.' '.$tmp_files['filtred_status'].' > '.$tmp_files['filtred_spr_pagination']; #$out1 = shell_exec($cmdLn1_1); $_command .= ' | cut -d "|" -f 1,'.self::$_VARIABLE_FILTER; } else { #$cmdLn1_1 = 'cut -d \'|\' -f 1,'.self::$_VARIABLE_FILTER.' '.$tmp_files['filtred_status'].' > '.$tmp_files['filtred_spr_pagination']; #$out1 = shell_exec($cmdLn1_1); $_command .= ' | cut -d \'|\' -f 1,'.self::$_VARIABLE_FILTER; } if (self::$_REC_LIMIT != '') { #paginating if (IS_WINDOWS) { #$cmdLn2 = 'awk '.self::$_REC_LIMIT.' '.$tmp_files['filtred_spr_pagination'].' > '.$tmp_files['filtred_pagination']; #$out2 = shell_exec($cmdLn2); $_command .= ' | awk '.self::$_REC_LIMIT; } else { #$cmdLn2 = 'awk '.self::$_REC_LIMIT.' '.$tmp_files['filtred_spr_pagination'].' > '.$tmp_files['filtred_pagination']; #$out2 = shell_exec($cmdLn2); $_command .= ' | awk '.self::$_REC_LIMIT; } #$file_sufix = 'filtred_pagination'; } else { #$file_sufix = 'filtred_spr_pagination'; } // zamenjamo | z '; #$f = fopen ($tmp_files['filtred_sed'], 'r'); if (file_exists($folder.'tmp_export_'.self::$sid.'_data'.TMP_EXT)) { if(self::$_VARS[VAR_REC_ON_PAGE] == 'all'){ $up = 0; $low = 1; } else{ $up = self::$_VARS[VAR_REC_ON_PAGE] * self::$_VARS[VAR_CUR_REC_PAGE]; $low = $up - self::$_VARS[VAR_REC_ON_PAGE]+1; } $cntLines=$low ; $f = fopen ($folder.'tmp_export_'.self::$sid.'_data'.TMP_EXT, 'r'); $data = array(); while ($line= fgets ($f)) { $data[] = explode(''; if ($stolpci > 0 ) { if (self::$displayEditIcons['dataIcons_edit'] == true) { // checkbox za brisanje vecih vrstic hkrati echo ''; } } if ((int)$display1kaIcon == 1) { echo ''; } if ($stolpci > 0 ) { if (self::$displayEditIcons['dataIcons_edit'] == true) { echo ''; echo ''; echo ''; } if (self::$displayEditIcons['dataIcons_write'] == true) { echo ''; echo ''; } } // URLje v besedilu spremenimo v __hiperlinke__ $line = stripslashes(self::url_to_link($line)); # po potrebi vrinemo zaporedno številko if (self::$showLineNumber && self::$_VARS[VAR_DATA]) { $pos = self::getLineNumberCellOffset($line); $line = substr_replace($line, ''; echo ''; $cntLines++; } } else { echo 'File does not exist (err.No.1)! :'.'tmp_export_'.self::$sid.'_data'.TMP_EXT; #echo $folder.'tmp_export_'.self::$sid.'_data'.TMP_EXT; } echo ''; echo '
1 ? (' colspan="'.$stolpci.'"') : '').'> '; } # dodamo skrit stolpec uid echo ' '; echo '
'.$lang['srv_line_number'].'
'; echo '
'; echo '
'.$spremenljivka['naslov'].'
'; echo '
1 ? (' colspan="'.$stolpci.'"') : '').'> '; } # dodamo skrit stolpec uid echo ' '; echo '
'.$lang['srv_line_number'].'
'; echo '
'; echo '
'.$grid['naslov'].'
'; 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 ' '; echo '
'.$lang['srv_line_number'].'
'; echo '
'; echo '
'.$variable['naslov']; if ($variable['other'] == 1) { echo ' (text)'; } /*// urejanje kalkulacije -- izracunane vrednosti v podatkih if ($spremenljivka['tip'] == 22) { echo ' ('.$lang['edit3'].')'; }*/ if ($variable['sequence'] == self::$sort_seq && self::$sort_seq != null) { $img_src = self::$sort_type == 'sort_dsc' ? 'sort_descending' : 'sort_ascending' ; echo ''; } echo '
'; echo '
if (IS_WINDOWS) { #$cmdLn3 = 'sed "s*'.STR_DLMT.'**g" '.$tmp_files[$file_sufix].' > '.$tmp_files['filtred_sed']; #$out3 = shell_exec($cmdLn3); $_command .= ' | sed "s*'.STR_DLMT.'*'.STR_LESS_THEN.'/td'.STR_GREATER_THEN.STR_LESS_THEN.'td'.STR_GREATER_THEN.'*g" >> '.$folder.'tmp_export_'.self::$sid.'_data'.TMP_EXT; } else { #$cmdLn3 = 'sed \'s*'.STR_DLMT.'**g\' '.$tmp_files[$file_sufix].' > '.$tmp_files['filtred_sed']; #$out3 = shell_exec($cmdLn3); $_command .= ' | sed \'s*'.STR_DLMT.'**g\' >> ' .$folder.'tmp_export_'.self::$sid.'_data'.TMP_EXT; } if (IS_WINDOWS) { # ker so na WINsih težave z sortom, ga damo v bat fajl in izvedemo :D $file_handler = fopen($folder.'cmd_'.self::$sid.'_to_run.bat',"w"); fwrite($file_handler,$_command); fclose($file_handler); $out_command = shell_exec($folder.'cmd_'.self::$sid.'_to_run.bat'); unlink($folder.'cmd_'.self::$sid.'_to_run.bat'); } else { $out_command = shell_exec($_command); } echo '
', $line); } $dataoffset = 1; $vrstni_red = array(); foreach (self::$_HEADERS AS $key => $val) { if ($key != '_settings') { $spr = explode('_', $key); $spr = $spr[0]; $vrstni_red[$key] = $dataoffset; if ( in_array($key, self::$_SVP_PV) ) { // TODO: tukaj je nekaj pocasno.. if (is_numeric($spr)) { $dataoffset += $val['cnt_all']; } else { $dataoffset++; } } } } $newdata = array(); for ($dataline=0; $dataline=0; $spr--) { for ($j=0; $j<$cols[$spr]; $j++) { if ( ! in_array(trim($newlines[$i][ $vrstni_red[$multiple[$spr]['spr_id']] + ($cols[$spr]*($i)) + $j ]), array('-1', '-3', '-4')) ) { $add = true; break; } } } if ( $add ) { // preverjamo da niso same -3 // pri vseh, razen prvi vrstici odstranimo podvojene vrednosti if ($i > 0) { $leave = array(); for ($spr=count($multiple)-1; $spr>=0; $spr--) { for ($j=0; $j<$cols[$spr]; $j++) { $leave[] = $vrstni_red[$multiple[$spr]['spr_id']] + ($cols[$spr]*($i)) + $j; } } for ($j=0; $j=0; $spr--) { // zacnemo od zadaj da si ne pokvarjamo indexov // zbrisemo na koncu (najprej na koncu, da si ne pokvarjamo indexov) array_splice($newlines[$i], $vrstni_red[$multiple[$spr]['spr_id']] + ($cols[$spr]*($i+1)), $subseq[0]*$cols[$spr] - $cols[$spr]*($i+1) ); // zbrisemo na zacetku array_splice($newlines[$i], $vrstni_red[$multiple[$spr]['spr_id']], $cols[$spr]*($i)); } # dodamo UID. Mitja, tole sem jaz dodal, # da se na začetek vsake vrstice doda UID, kateri je potreben za postprocess JS funkcije # za urejanje, ker Ajda joka da v kombinirani tabeli ne deluje urejanje za podvojene vrstice # Gorazd $newlines[$i][0] = $origline[0]; // dodamo v nov array $newdata[] = $newlines[$i]; } } } unset($data); $data = &$newdata; foreach ($data AS $line) { $line = implode('', $line); echo '
'.$cntLines, $pos, 0); } echo ''.$line.'
'; echo '
'; // end div tableContainer /** * kliki na ikonice za urejanje in izpis so definirane v script_analiza.js, analiza_init(); */ // JS za urejanje vnosov (click in hover) (funkciji sta definirani v postProcess.js) ?> ".$_command.""); } } public static function url_to_link($text) { if ((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') || $_SERVER['SERVER_PORT'] == 443) return preg_replace('!(https://[a-z0-9_./?=&-]+)!i', '$1 ', $text." "); else return preg_replace('!(http://[a-z0-9_./?=&-]+)!i', '$1 ', $text." "); } /** Prikaze reseno anketo za posameznega uporabnika v hitrem nacinu * */ public static function displayQuickEdit(){ global $lang; global $site_path; if (self::$dataFileStatus == FILE_STATUS_NO_DATA || self::$dataFileStatus == FILE_STATUS_NO_FILE || self::$dataFileStatus == FILE_STATUS_SRV_DELETED){ return false; } include_once('../../main/survey/app/global_function.php'); new \App\Controllers\SurveyController(true); save('usr_id', self::$usr_id); if (isset($_GET['quick_view']) && $_GET['quick_view'] == 0 ) { $quick_view = false; } else { $quick_view = true; } $rowa = SurveyInfo::getInstance()->getSurveyRow(); if ($quick_view) { # če smo v quick_view disejblamo vse elemente forem echo ""; } else{ # če urejamo dodamo prazno js funkcijo submitForm da ne mece errorja (submit izvedemo rocno) 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 '
'; if ($quick_view == false) { echo '
'."\n"; } if (isset($_GET['anketa'])) { save('anketa', $_GET['anketa']); if ($quick_view == false) { //JS potreben za branching \App\Controllers\JsController::getInstance()->generateBranchingJS(); echo ''; // shranimo popravke v bazo if(isset($_GET['post']) && $_GET['post'] == '1'){ \App\Models\SaveSurvey::getInstance()->posted(); } } $first_loop = 0; // prikažemo spremenljivke - vse grupe do { // nastavimo naslednjo grupo / loop if(get('loop_AW') == 0 && get('loop_id') == null){ save('grupa', \App\Controllers\FindController::getInstance()->findNextGrupa()); } elseif (get('loop_id') != null) { save('loop_id', \App\Controllers\FindController::getInstance()->findNextLoopId()); if (get('loop_id') == null) save('grupa', \App\Controllers\FindController::getInstance()->findNextGrupa()); } echo '
'."\n"; // zgeneriramo sistemske spremenljivke \App\Controllers\HeaderController::getInstance()->displaySistemske();; $offset = 0; $zaporedna = 1; if (SurveyInfo::getInstance()->getSurveyCountType() > 0) { // Preštejemo koliko vprašanj je bilo do sedaj $sqlg = sisplet_query("SELECT vrstni_red FROM srv_grupa WHERE id='".get('grupa')."'"); $rowg = mysqli_fetch_assoc($sqlg); $vrstni_red = $rowg['vrstni_red']; $sqlCountPast = sisplet_query("SELECT count(*) as cnt FROM srv_spremenljivka s, srv_grupa g WHERE g.ank_id='".get('anketa')."' AND s.gru_id=g.id AND g.vrstni_red < '$vrstni_red' ORDER BY g.vrstni_red ASC, s.vrstni_red ASC"); $rowCount = mysqli_fetch_assoc($sqlCountPast); $offset = $rowCount['cnt']; } // poiscemo vprasanja / spremenljivke $sql = sisplet_query("SELECT id FROM srv_spremenljivka WHERE gru_id='".get('grupa')."' AND visible='1' ORDER BY vrstni_red ASC"); while ($row = mysqli_fetch_array($sql)) { //ce gre za glasovanje in smo eno vprasanje ze prikazali, ostalih ne prikazemo if( (SurveyInfo::getInstance()->getSurveyType() != 0) || ($zaporedna == 1)){ // preverimo, ce je na tej strani LOOP if (get('loop_id') ==null) { // nastavimo pravi id trenutnega loopa $if_id = \App\Controllers\FindController::find_parent_loop($row['id']); if ($if_id > 0) { // Ce je prva spremenljivka v loopih izpisemo warning za urejanje $first_loop = ($first_loop == 0) ? 1 : 2; if($first_loop == 1) echo '
'.$lang['srv_loop_warning'].''.$lang['srv_loop_warning2'].'.
'; save('loop_id', \App\Controllers\FindController::getInstance()->findNextLoopId($if_id)); } } // filtriramo spremenljivke glede na profil $dvp = SurveyUserSetting :: getInstance()->getSettings('default_variable_profile'); $_currentVariableProfile = SurveyVariablesProfiles :: checkDefaultProfile($dvp); # V VPOGLEDU NE FILTRIRAMO SPREMENLJIVK (v.v.: 27.11.2011) #$tmp_svp_pv = SurveyVariablesProfiles :: getProfileVariables($_currentVariableProfile); # č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 (!is_countable($tmp_svp_pv) || 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] = substr($vid, 0, strpos($vid, '_')); } } } else{ foreach ( $tmp_svp_pv as $vid => $variable) { $tmp_svp_pv[$vid] = substr($vid, 0, strpos($vid, '_')); } } # V VPOGLEDU NE FILTRIRAMO SPREMENLJIVK (v.v.: 27.11.2011) //if(in_array($row['id'],$tmp_svp_pv)) \App\Controllers\Vprasanja\VprasanjaController::getInstance()->displaySpremenljivka($row['id'], $offset, $zaporedna); } $zaporedna++; } if ($quick_view == false) { \App\Controllers\JsController::getInstance()->generateSubmitJS(); } echo '
'."\n"; } 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{ echo ''."\n"; } echo '
'; # inner echo '
'; self::displayVnosIcons(); echo '
'; 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(); $sas = new SurveyAdminSettings(); $sas->checkFirstDataChange($inserted=true); } } public static function displayQuickEditFilters(){ 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; } self::displayQuickEditPagination(); echo '
'; echo ''; echo '
'; # če ne uporabljamo privzetega časovnega profila izpišemo opozorilo $doNewLine = SurveyTimeProfiles :: printIsDefaultProfile(false); if ($doNewLine) { echo '
'; } # če imamo filter ifov ga izpišemo $doNewLine = SurveyConditionProfiles:: getConditionString($doNewLine ) || $doNewLine; # če imamo filter ifov za inspect ga izpišemo $SI = new SurveyInspect(self::$sid); $SI->getConditionString(); # če imamo filter spremenljivk ga izpišemo # ker v vpogledu ne filtriramo spremenljivk, ne izpisujemo obvestila #$doNewLine = SurveyVariablesProfiles:: getProfileString($doNewLine ) || $doNewLine; if ($doNewLine) { echo '
'; } echo '
'; self::displayVnosIcons(); echo '
'; } public static function displayQuickEditPagination() { global $site_url, $lang; #Userje polovimo iz datoteke s pomočjo filtrov z AWK-jem $_command = ''; #preberemo podatke $tmp_file = self::$folder.'tmp_export_'.self::$sid.'_data'.TMP_EXT; $file_handler = fopen($tmp_file,"w"); fwrite($file_handler,"> '.$tmp_file; } else { $_command = 'awk -F"'.STR_DLMT.'" \'BEGIN {OFS=""} '.self::$_CURRENT_STATUS_FILTER.' { print "$uids[]=",'.USER_ID_FIELD.',";$uid_rec[",'.USER_ID_FIELD.',"]=",'.MOD_REC_FIELD.',";"}\' '.self::$dataFileName.' >> '.$tmp_file; } if (IS_WINDOWS) { $out_command = shell_exec($_command); } else { $out_command = shell_exec($_command); } include($tmp_file); if (file_exists($tmp_file)) { unlink($tmp_file); } # če imamo zapise $all = count($uids); # current nastavimo na zadnji element if ( $all > 0) { // Če trenutni user ni nastavljen ga nastavimo. Upoštevamo tudi filtre, zato preberemo prvega iz filtriranega seznama if(self::$usr_id == 0){ self::$usr_id = reset($uids); } if (isset($_GET['quick_view']) && $_GET['quick_view'] == 0 ) { $baseUrl = $site_url.'admin/survey/index.php?anketa='.self::$sid.'&a=data&m=quick_edit&quick_view='.$_GET['quick_view'].'&usr_id='; } else { $baseUrl = $site_url.'admin/survey/index.php?anketa='.self::$sid.'&a=data&m=quick_edit&usr_id='; } if (self::$usr_id > 0 && isset(self::$usr_id,$uids)) { $current = array_search(self::$usr_id,$uids); } else { $current = count($uids)-1; } echo ''; // vrnemo link na prejsnega, link na naslednjega in recnum trenutnega //return array($baseUrl.$prev_page, $baseUrl.$next_page, $uid_rec[self::$usr_id], $controls); self::$quickEdit_recnum = array($baseUrl.$prev_page, $baseUrl.$next_page, $uid_rec[self::$usr_id], $controls); } else { // dobimo trenutnega userja - ce ni nastavljen v get-u if(self::$usr_id == 0){ $sqlu = sisplet_query("SELECT id FROM srv_user WHERE ank_id='".self::$sid."' ORDER BY recnum DESC LIMIT 1"); $rowu = mysqli_fetch_array($sqlu); self::$usr_id = $rowu['id']; } } } public static function displayQuickEditMeta(){ global $lang; global $site_path; global $admin_type; $rowa = SurveyInfo::getInstance()->getSurveyRow(); // dobimo trenutnega userja if(self::$usr_id > 0){ $sqlu = sisplet_query("SELECT * FROM srv_user WHERE ank_id='".self::$sid."' AND id='".self::$usr_id."' "); $rowu = mysqli_fetch_array($sqlu); } else{ $sqlu = sisplet_query("SELECT * FROM srv_user WHERE ank_id='".self::$sid."' ORDER BY recnum DESC "); $rowu = mysqli_fetch_array($sqlu); } self::$usr_id = $rowu['id']; echo '
'.$lang['srv_metapodatki'].'
'; echo ''; echo ''; echo ''; // IP $ip = SurveySetting::getInstance()->getSurveyMiscSetting('survey_ip'); $ip_show = SurveySetting::getInstance()->getSurveyMiscSetting('survey_show_ip'); if($ip==0 && $ip_show==1 && ($admin_type == 0 || $admin_type == 1)){ echo ''; echo ''; } // recnum echo ''; echo ''; // Pri volitvah nimamo parapodatkov if (!SurveyInfo::getInstance()->checkSurveyModule('voting')){ // browser echo ''; echo ''; // javascript echo ''; echo ''; // jezik // Dobimo vse jezike za katere obstaja jezikovna datoteka include_once($site_path.'lang/jeziki.php'); $jeziki = $lang_all_global['ime']; $jeziki['0'] = $lang['language']; echo ''; echo ''; } // status echo ''; echo ''; // lurker echo ''; echo ''; // Pri volitvah nimamo parapodatkov if (!SurveyInfo::getInstance()->checkSurveyModule('voting')){ // referer echo ''; echo ''; // email - samo forma if($rowa['survey_type'] == 1){ echo ''; echo ''; } // spreminjal $datetime = strtotime($rowu['time_insert']); $text = date("d.m.Y, H:i:s", $datetime); echo ''; echo ''; $datetime = strtotime($rowu['time_edit']); $text = date("d.m.Y, H:i:s", $datetime); echo ''; echo ''; // preberemo popravljanje po straneh $sqlG = sisplet_query("SELECT ug.time_edit, g.naslov FROM srv_user_grupa".self::$db_table." ug, srv_grupa g WHERE g.ank_id = '".self::$sid."' AND ug.usr_id = '".self::$usr_id."' AND g.id = ug.gru_id ORDER BY g.vrstni_red ASC"); while($rowG = mysqli_fetch_array($sqlG)){ $datetime = strtotime($rowG['time_edit']); $text = date("d.m.Y, H:i:s", $datetime); echo ''; echo ''; } if ( $admin_type <= 1) { echo ''; echo ''; } } # preberemo vklopljene module //potrebuje se za modul MAZA, da aplikacija izpolni te hidden inpute //rabi pa se to za povezavo respondenta med tebelama maza_app_users in srv_user if(SurveyInfo::checkSurveyModule('maza')){ $maza_query = "SELECT mau.identifier, mau.deviceInfo, mau.tracking_log FROM maza_app_users as mau JOIN maza_srv_users AS msu ON mau.id = msu.maza_user_id JOIN srv_user AS su ON msu.srv_user_id = su.id WHERE su.id = '".self::$usr_id."';"; $sql = sisplet_query($maza_query, 'array'); //it is already there if(count($sql) > 0){ //NextPin link echo ''; echo ''; //Device info echo ''; echo ''; //Tracking logs echo ''; echo ''; } } echo '
'.$lang['srv_info_type'].':'.$lang['srv_vrsta_survey_type_'.SurveyInfo::getSurveyType()].'
'.$lang['ip'].':'.($rowu['ip'] ? $rowu['ip'] : ' ').'
'.$lang['srv_recnum_long'].':'.($rowu['recnum'] ? $rowu['recnum'] : ' ').'
'.$lang['browser'].':'.($rowu['useragent'] ? $rowu['useragent'] : ' ').'
'.$lang['javascript'].':'.(($rowu['javascript'] == 1) ? $lang['yes'] : $lang['no1']).'
'.$lang['lang'].':'.$jeziki[$rowu['language']].'
'.$lang['status'].':'.($rowu['last_status'] ? $rowu['last_status'] : ' ').'
'.$lang['srv_data_lurker'].':'.(($rowu['lurker'] == 1) ? $lang['yes'] : $lang['no1']).'
'.$lang['referer'].':'.($rowu['referer'] ? $rowu['referer'] : ' ').'
'.$lang['email'].':'.($rowu['email'] ? $rowu['email'] : ' ').'
'.$lang['timeinsert'].':'.$text.'
'.$lang['timeedit'].':'.$text.'
'.$rowG['naslov'].':'.$text.'
'.$lang['srv_sc_txt1'].':'.$lang['srv_sc_txt2'].'
'.$lang['srv_maza_nextpin_link'].':' . 'http://traffic.ijs.si/NextPin/?user=1KAPanel_'.$sql[0]['identifier'].'
'.$lang['srv_maza_device_info'].':'.$sql[0]['deviceInfo'].'
'.$lang['srv_maza_user_app_logs'].':'.$sql[0]['tracking_log'].'
'; echo ''; } /* funkcija vrne AWK string za pogoj ali iščemo zapise trenutnega userja * vklopljeno more bit prepoznava userja iz cms * */ static function createCMSUserFilter() { #poiščemo sekvenco meta podatka: usr_from_cms $found=false; $sequence = null; if (count(self::$_HEADERS['meta']['grids']) > 0 && $found==false) { foreach (self::$_HEADERS['meta']['grids'] AS $gid => $grids) { if (count($grids['variables']) > 0 && $found==false) { foreach ($grids['variables'] AS $vids => $variables) { if ($variables['variable'] == 'usr_from_cms') { $sequence = $variables['sequence']; $found=true; } } } } } if ($found == true && (int)$sequence > 0) { # polovimo email global $global_user_id; $sqlu = sisplet_query("SELECT email FROM users WHERE id = '".$global_user_id."'"); list($email) = mysqli_fetch_row($sqlu); if ($email != null &&trim($email) != '') { # nardimo awk string da primerjamo email if (IS_WINDOWS) { # za windows $awkString = '($'.$sequence.'=='."\\\"".$email."\\\"".')'; } else { # za linux $awkString = '($'.$sequence.'=='.'"'.$email.'"'.')'; } return $awkString; } } return null; } static function displayOnlyCMS() { global $lang; # prikažemo samo če imamo ankete uporabnika iz cms echo ''; } static function displayPublicData($properties = array()) { global $lang; global $site_url; header('Cache-Control: no-cache'); header('Pragma: no-cache'); $anketa = self::$sid; if ($anketa > 0) { $sql = sisplet_query("SELECT lang_admin FROM srv_anketa WHERE id = '$anketa'"); $row = mysqli_fetch_assoc($sql); $lang_admin = $row['lang_admin']; } else { $sql = sisplet_query("SELECT value FROM misc WHERE what = 'SurveyLang_admin'"); $row = mysqli_fetch_assoc($sql); $lang_admin = $row['value']; } #izpišemo HTML echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo '

'.$lang['srv_publc_data_title_for'].self::$survey['naslov'].'

'; echo ''; echo '
'; //Izvoz v PDF / RTF / XLS $_url1 = $site_url.'admin/survey/izvoz.php?dc='.base64_encode( serialize( array( 'b'=>'export', 'a'=>'list_pdf', 'anketa'=>$anketa))); $_url2 = $site_url.'admin/survey/izvoz.php?dc='.base64_encode( serialize( array( 'b'=>'export', 'a'=>'list_rtf', 'anketa'=>$anketa))); $_url3 = $site_url.'admin/survey/izvoz.php?dc='.base64_encode( serialize( array( 'b'=>'export', 'a'=>'list_xls', 'anketa'=>$anketa))); echo '
'; echo '  '; echo '  '; echo ''; if (isset($properties['profile_id_status'])) { self::$_PROFILE_ID_STATUS = $properties['profile_id_status']; SurveyStatusProfiles :: setCurentProfileId(self::$_PROFILE_ID_STATUS); } if (isset($properties['profile_id_variable'])) { self::$_PROFILE_ID_VARIABLE = $properties['profile_id_variable']; SurveyVariablesProfiles::setCurrentProfileId(self::$_PROFILE_ID_VARIABLE); } if (isset($properties['profile_id_condition'])) { self::$_PROFILE_ID_CONDITION = $properties['profile_id_condition']; SurveyConditionProfiles::setCurrentProfileId(self::$_PROFILE_ID_CONDITION); } self::$printPreview = true; self::$_VARS[VAR_DATA] = 1; self::$_VARS[VAR_EDIT] = 0; self::$_VARS[VAR_PRINT] = 0; self::$_VARS[VAR_MONITORING] = 0; if (isset(self::$_SVP_PV['invitation'])) { unset(self::$_SVP_PV['invitation']); } # ponastavimo nastavitve- filter self::setUpFilter(); self::DisplayDataTable(); // JS ki vedno doda labele ?>'; echo ''; echo ''; echo ''; } function displayDataPrintPreview() { global $lang; global $site_url; header('Cache-Control: no-cache'); header('Pragma: no-cache'); $anketa = $_REQUEST['anketa']; if ($anketa > 0) { $sql = sisplet_query("SELECT lang_admin FROM srv_anketa WHERE id = '$anketa'"); $row = mysqli_fetch_assoc($sql); $lang_admin = $row['lang_admin']; } else { $sql = sisplet_query("SELECT value FROM misc WHERE what = 'SurveyLang_admin'"); $row = mysqli_fetch_assoc($sql); $lang_admin = $row['value']; } #izpišemo HTML echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; #echo '
'; echo '
'; //Izvoz v PDF / RTF / XLS $_url1 = $site_url.'admin/survey/izvoz.php?dc='.base64_encode( serialize( array( 'b'=>'export', 'a'=>'list_pdf', 'anketa'=>$anketa))); $_url2 = $site_url.'admin/survey/izvoz.php?dc='.base64_encode( serialize( array( 'b'=>'export', 'a'=>'list_rtf', 'anketa'=>$anketa))); $_url3 = $site_url.'admin/survey/izvoz.php?dc='.base64_encode( serialize( array( 'b'=>'export', 'a'=>'list_xls', 'anketa'=>$anketa))); echo '
'; echo '  '; echo '  '; echo ''; echo '
'; echo $lang['srv_data_print_preview']; echo '
'; self::$printPreview = true; self::$_VARS[VAR_DATA] = 1; self::$_VARS[VAR_SPR_LIMIT] = 5; self::$_VARS[VAR_META] = 0; self::$_VARS[VAR_EMAIL] = 0; self::$_VARS[VAR_RELEVANCE] = 0; self::$_VARS[VAR_EDIT] = 0; self::$_VARS[VAR_PRINT] = 0; self::$_VARS[VAR_MONITORING] = 0; if (isset(self::$_SVP_PV['invitation'])) { unset(self::$_SVP_PV['invitation']); } # ponastavimo nastavitve- filter self::setUpFilter(); self::DisplayDataTable(); echo '
'; echo ''; echo ''; echo ''; } static function displayVnosIcons() { global $lang; global $global_user_id; $userAccess = UserAccess::getInstance($global_user_id); // gumbi na levi (delete, edit, izvozi...) echo '
'; echo ''; echo ''; echo ''; // Ce imamo izvoze v paketu if($userAccess->checkUserAccess($what='data_export')){ echo ''; echo ''; } else{ echo ''; echo ''; } echo ''; // omogocimo/onemogocimo popravljanje vnosa if(isset($_GET['quick_view']) && $_GET['quick_view'] == 0){ echo ''; echo ''; } else{ echo ''; echo ''; } echo '
'; } static function displayStatusLegend (){ if (self::$dataFileStatus >= 0) { #status - če smo v meta ali imamo profil vse enote if (true|| (self::$_VARS[VAR_META] && self::$_VARS[VAR_METAFULL]) || ( SurveyStatusProfiles::getCurentProfileId() == 1 )) { SurveyAnalysisHelper::getInstance()->displayStatusLegend(); } } } static function displayTestLegend (){ if (self::$dataFileStatus >= 0) { #testni vnosi - samo ce imamo testne if (self::$_HAS_TEST_DATA) { SurveyAnalysisHelper::getInstance()->displayTestLegend(); } } } static function displayMetaStatusLegend (){ if (self::$dataFileStatus >= 0) { SurveyAnalysisHelper::getInstance()->displayMissingLegend(); } } static function DisplaySnLinks() { global $lang, $site_url; echo '
'; // Gumb za preklop na EGO echo ''; echo ''.$lang['srv_lnk_ego'].''; echo ''; // Gumb za preklop na ALTER echo ''; echo ''.$lang['srv_lnk_alter'].''; echo ''; echo '
'; } static function setSnDisplayFullTableCheckbox() { session_start(); $_SESSION['sid_'.self::$sid]['snCreateFullTable'] = (int)$_POST['fullTable'] == 1; session_commit(); } static function getLineNumberCellOffset($line) { $offset = 0; // Ce nismo na prvi strani spremenljivk je offset drugacen in prikazemo stevilko na zacetku if(self::$_VARS[VAR_SPR_PAGE] > 1){ $offset = strpos($line, ''); } elseif (self::$lineoffset > 0 ) { for ($i = 0; $i < self::$lineoffset; $i++) { $offset = strpos($line,'',$offset+1); } } return $offset; } static function showMultiple () { $sql = sisplet_query("SELECT * FROM srv_grid_multiple WHERE ank_id = ".self::$sid." GROUP BY parent"); if ( mysqli_num_rows($sql) == 1 ) return true; return false; } } ?>