2020-08-14 13:36:36 +02:00
< ? php
/***************************************
* Description : Tukaj kličemo vse tipe vprašanj , ki so nato v posameznih razredih
* Autor : Robert Šmalc
* Created date : 29.02 . 2016
**************************************
* TIPI VPRAŠANJ :
* radio -> tip = 1
* checkbox -> tip = 2
* select -> tip = 3
* text -> tip = 4 // ni vec v uporabi
* besedilo * -> tip = 21
* label -> tip = 5
* multigrid -> tip = 6
* multicheckbox -> tip = 16
* multitext -> tip = 19
* multinumber -> tip = 20
* number -> tip = 7
* compute -> tip = 22 // samo v naprednejših anketah (ifi ali test anketa)
* quota -> tip = 25 // samo v naprednejših anketah (ifi ali test anketa)
* datum -> tip = 8
* ranking -> tip = 17
* vsota -> tip = 18
* grid - multiple -> tip = 24
* iz knjiznice -> tip = 23 // podtip nam pove za tip vprasanja, ki ga poiscemo glede na variablo
* SN - imena -> tip = 9
* Map - lokacija -> tip = 26
* HeatMap -> tip = 27
*****************************************/
namespace App\Controllers\Vprasanja ;
use App\Controllers\Controller ;
use App\Controllers\FindController as Find ;
use App\Controllers\HeaderController as Header ;
use App\Controllers\HelperController as Helper ;
use App\Controllers\LanguageController as Language ;
use App\Controllers\StatisticController as Statistic ;
use App\Controllers\Vprasanja\ComputeController as Compute ;
use App\Controllers\Vprasanja\DatumController as Datum ;
use App\Controllers\Vprasanja\DoubleController as Double ;
use App\Controllers\Vprasanja\DragDropController as DragDrop ;
use App\Controllers\Vprasanja\DynamicController as Dynamic ;
use App\Controllers\Vprasanja\ImenaController as Imena ;
use App\Controllers\Vprasanja\MaxDiffController as MaxDiff ;
use App\Controllers\Vprasanja\MultigridController as Multigrid ;
use App\Controllers\Vprasanja\MultigridMobileController as MultigridMobile ;
use App\Controllers\Vprasanja\NumberController as Number ;
use App\Controllers\Vprasanja\OneAgainstAnotherController as OneAgainstAnother ;
use App\Controllers\Vprasanja\QuotaController as Quota ;
use App\Controllers\Vprasanja\RadioCheckboxSelectController as RadioCheckboxSelect ;
use App\Controllers\Vprasanja\RankingController as Ranking ;
use App\Controllers\Vprasanja\SystemVariableController as SystemVariable ;
use App\Controllers\Vprasanja\TextController as Text ;
use App\Controllers\Vprasanja\VprasanjaController as Vprasanja ;
use App\Controllers\Vprasanja\VsotaController as Vsota ;
use App\Controllers\Vprasanja\MapsController as Maps ;
use App\Controllers\Vprasanja\ImageHotSpotController as HotSpot ;
use App\Controllers\Vprasanja\HeatMapController as HeatMap ;
use App\Models\Model ;
use Branching ;
use enkaParameters ;
use SurveyInfo ;
use SurveySetting ;
use SurveySlideshow ;
use UserAccess ;
class VprasanjaController extends Controller
{
public function __construct ()
{
parent :: getGlobalVariables ();
}
/************************************************
* Get instance
************************************************/
private static $_instance ;
public static function getInstance ()
{
if ( self :: $_instance ) {
self :: refreshVariables ();
return self :: $_instance ;
}
return new VprasanjaController ();
}
private function refreshVariables ()
{
return parent :: getAllVariables ();
}
/**
* @ desc prikaze spremenljivke v trenutni grupi
*/
2020-09-30 22:15:21 +02:00
public function displaySpremenljivke (){
2020-08-14 13:36:36 +02:00
if ( ! get ( 'printPreview' )) {
// poiscemo vprasanja s prejsnje strani, ki imajo vklopljeno statistiko
Statistic :: displayStatistika ();
// zgeneriramo sistemske spremenljivke
2020-09-30 22:15:21 +02:00
Header :: getInstance () -> displaySistemske ();
2020-08-14 13:36:36 +02:00
// prikazemo skrita ze odgovorjena vprasanja
Vprasanja :: getInstance () -> displaySpremenljivkeHidden ();
}
2020-09-30 22:15:21 +02:00
2020-08-14 13:36:36 +02:00
$offset = 0 ;
$zaporedna = 1 ;
2020-09-30 22:15:21 +02:00
2020-08-14 13:36:36 +02:00
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
// če imamo pri posamezni spremenljivki nastavljeno da jo prikazujemo na začetku vsake strani
if ( get ( 'displayAllPages' )) {
$sql = sisplet_query ( " SELECT s.id FROM srv_spremenljivka AS s, srv_grupa g WHERE s.gru_id=g.id AND g.ank_id=' " . get ( 'anketa' ) . " ' ORDER BY g.vrstni_red, s.vrstni_red ASC " );
2020-09-30 22:15:21 +02:00
}
else {
2020-08-14 13:36:36 +02:00
// Optimizirano
$sql = sisplet_query ( " SELECT s.id FROM srv_spremenljivka AS s, srv_grupa g WHERE ((s.gru_id=' " . get ( 'grupa' ) . " ' AND s.visible='1' AND g.ank_id=' " . get ( 'anketa' ) . " ') OR (s.showOnAllPages = '1' AND s.visible='1' AND g.ank_id=' " . get ( 'anketa' ) . " ')) AND s.gru_id=g.id ORDER BY g.vrstni_red, s.vrstni_red ASC " );
}
if ( SurveyInfo :: getInstance () -> checkSurveyModule ( 'evoli_teammeter' )
|| SurveyInfo :: getInstance () -> checkSurveyModule ( 'evoli_quality_climate' )
|| SurveyInfo :: getInstance () -> checkSurveyModule ( 'evoli_teamship_meter' )
|| SurveyInfo :: getInstance () -> checkSurveyModule ( 'evoli_organizational_employeeship_meter' )
)
$evoli_teammeter = true ;
else
2020-12-07 09:43:59 +01:00
$evoli_teammeter = false ;
2020-08-14 13:36:36 +02:00
while ( $row = mysqli_fetch_array ( $sql )) {
// Izbira departmenta za modul EVOLI TEAMMETER / evoli_quality_climate / evoli_teamship_meter / evoli_organizational_employeeship_meter na prvi strani
if ( $evoli_teammeter ){
// Ce smo na prvi strani in izpisujemo drugo vprasanje
$sqlg = sisplet_query ( " SELECT vrstni_red FROM srv_grupa WHERE id=' " . get ( 'grupa' ) . " ' " );
$rowg = mysqli_fetch_assoc ( $sqlg );
$vrstni_red = $rowg [ 'vrstni_red' ];
if ( $zaporedna == 2 && $rowg [ 'vrstni_red' ] == 1 ){
// Dobimo id skupine (podjetja) za respondenta
$sqlGroupTM = sisplet_query ( " SELECT d.* FROM srv_data_vrednost_active d, srv_spremenljivka s, srv_grupa g
WHERE g . ank_id = '" . get(' anketa ') . "' AND d . usr_id = '" . get(' usr_id ') . "' AND s . skupine = '1'
AND s . id = d . spr_id AND g . id = s . gru_id " );
$rowGroupTM = mysqli_fetch_array ( $sqlGroupTM );
// Loop cez vse oddelke (departments) za izbrano skupino (podjetje)
$sqlTM = sisplet_query ( " SELECT d.* FROM srv_evoli_teammeter_department d, srv_evoli_teammeter tm WHERE d.tm_id=tm.id AND tm.skupina_id=' " . $rowGroupTM [ 'vre_id' ] . " ' " );
if ( mysqli_num_rows ( $sqlTM ) > 0 ){
2020-10-12 15:32:14 +02:00
echo ' <div id="spremenljivka_evoli_tm_department" class="spremenljivka lang_pick">' . " \n " ;
2020-08-14 13:36:36 +02:00
// Izbira oddelka z dropdown menijem
2020-10-09 14:15:20 +02:00
if ( isset ( $_GET [ 'language' ]) && $_GET [ 'language' ] == '1' ){
2020-10-12 15:32:14 +02:00
echo ' <p><div class="naslov"><span class="reminder">*</span>Prosimo izberite vašo ekipo, oddelek ali delovno skupino v vaši organizaciji:</div>' ;
2020-10-09 14:15:20 +02:00
echo ' <div class="variable_holder clr"><div class="variabla"><select name="evoli_tm_department" id="evoli_tm_department">' ;
echo '<option value="0">Izberite s seznama</option>' ;
while ( $rowTM = mysqli_fetch_array ( $sqlTM )){
echo '<option value="' . $rowTM [ 'id' ] . '">' . $rowTM [ 'department' ] . '</option>' ;
}
echo ' </select></div></div>' ;
echo '</p>' . " \n " ;
}
else {
2020-10-12 15:32:14 +02:00
echo ' <p><div class="naslov"><span class="reminder">*</span>Please indicate your team, department or working group in your organisation:</div>' ;
2020-10-09 14:15:20 +02:00
echo ' <div class="variable_holder clr"><div class="variabla"><select name="evoli_tm_department" id="evoli_tm_department">' ;
echo '<option value="0">Select from dropdown</option>' ;
while ( $rowTM = mysqli_fetch_array ( $sqlTM )){
echo '<option value="' . $rowTM [ 'id' ] . '">' . $rowTM [ 'department' ] . '</option>' ;
}
echo ' </select></div></div>' ;
echo '</p>' . " \n " ;
}
2020-08-14 13:36:36 +02:00
echo ' </div>' . " \n " ;
}
}
}
if ( $zaporedna == 1 && get ( 'loop_id' ) == null ) { // preverimo, ce je na tej strani LOOP in redirectamo na prvo vrednost
$if_id = Find :: find_parent_loop ( $row [ 'id' ]);
if ( $if_id > 0 ) {
$sql1 = sisplet_query ( " SELECT if_id FROM srv_loop WHERE if_id = ' $if_id ' " );
$row1 = mysqli_fetch_array ( $sql1 );
save ( 'loop_id' , Find :: getInstance () -> findNextLoopId ( $row1 [ 'if_id' ]));
if ( get ( 'loop_id' ) != null ) {
$loop_id = '&loop_id=' . get ( 'loop_id' );
}
else {
$loop_id = '' ;
save ( 'grupa' , Find :: getInstance () -> findNextGrupa ());
if ( get ( 'grupa' ) == 0 ) save ( 'grupa' , 'end' );
}
header ( 'Location: ' . SurveyInfo :: getSurveyLink () . '&grupa=' . get ( 'grupa' ) . $loop_id . Header :: getSurveyParams () . get ( 'cookie_url' ) . '' );
return ;
}
}
//ce gre za glasovanje in smo eno vprasanje ze prikazali, ostalih ne prikazemo
if (( SurveyInfo :: getInstance () -> getSurveyType () != 0 ) || ( $zaporedna == 1 ))
Vprasanja :: getInstance () -> displaySpremenljivka ( $row [ 'id' ], $offset , $zaporedna );
$zaporedna ++ ;
}
// JS za mobilno razpiranje tabel
SurveySetting :: getInstance () -> Init ( get ( 'anketa' ));
$mobile_tables = SurveySetting :: getInstance () -> getSurveyMiscSetting ( 'mobile_tables' );
2022-08-25 12:27:38 +02:00
$pc_tables = SurveySetting :: getInstance () -> getSurveyMiscSetting ( 'pc_tables' );
if (( $mobile_tables == 2 && get ( 'mobile' ) == 1 ) || ( $pc_tables == 2 && get ( 'mobile' ) != 1 )){
2020-08-14 13:36:36 +02:00
echo ' < script >
$ ( document ) . ready (
function (){
mobileMultigridExpandable ();
}
);
</ script > ' ;
}
// JS za razpiranje tabel znotraj bloka s to nastavitvijo
echo ' < script >
$ ( document ) . ready (
function (){
questionsExpandable ();
}
);
</ script > ' ;
2021-02-15 10:15:24 +01:00
echo ' < script >
2020-08-14 13:36:36 +02:00
var comments = init_comments_save ();
// GDPR popup
2021-02-15 10:15:24 +01:00
$ ( " .gdpr_popup_trigger " ) . click ( function (){ show_gdpr_about ( \ '' . get ( 'lang_id' ) . ' \ ' ); });
</ script > ' ;
2020-08-14 13:36:36 +02:00
}
/**
* @ desc prikazemo skrita ze odgovorjena vprasanja
*/
public function displaySpremenljivkeHidden ()
{
$sqlg = sisplet_query ( " SELECT vrstni_red FROM srv_grupa WHERE id=' " . get ( 'grupa' ) . " ' " );
$rowg = mysqli_fetch_array ( $sqlg );
$vrstni_red = $rowg [ 'vrstni_red' ];
echo " \n " ;
echo '<!-- hidden -->' . " \n " ;
echo '<div id="spremenljivke_hidden" style="display:none">' . " \n " ;
// pri skritih gledamo za nazaj, in ce smo v loopu ne smemo upostevat trenutnega loopa
$loop_id = get ( 'loop_id' );
save ( 'loop_id' , null , 1 );
// Izpisemo vprasanja ki so uporabljena v pogoju in so bila resena na prejsnjih straneh oz. tudi na isti strani ce gre za skupine ali jezike
$sql = sisplet_query ( " SELECT s.id 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 ' OR (g.vrstni_red=' $vrstni_red ' AND s.skupine>'0')) ORDER BY g.vrstni_red ASC, s.vrstni_red ASC " );
while ( $row = mysqli_fetch_array ( $sql )) {
if ( $this -> inCondition ( $row [ 'id' ])) {
$this -> displaySpremenljivka ( $row [ 'id' ]);
}
}
save ( 'loop_id' , $loop_id , 1 );
echo '</div>' . " \n " ;
echo '<!-- /hidden -->' . " \n \r \n \r " ;
}
/**
* @ desc prikaze komentar spremenljivke
* shrani se v srv_Data_text , kjer je spr_id = 0 in vre_id = $spremenljivka
*/
public function displaySpremenljivkaComment ( $spremenljivka ){
// Preverimo, ce so komentarji v placljivem paketu
$userAccess = UserAccess :: getInstance ( self :: $global_user_id );
if ( ! $userAccess -> checkUserAccess ( $what = 'komentarji' ))
return ;
SurveySetting :: getInstance () -> Init ( get ( 'anketa' ));
$srv_qct = SurveySetting :: getInstance () -> getSurveyMiscSetting ( 'question_comment_text' );
$question_resp_comment_show_open = SurveySetting :: getInstance () -> getSurveyMiscSetting ( 'question_resp_comment_show_open' );
SurveySetting :: getInstance () -> Init ( get ( 'anketa' ));
if ( get ( 'lang_id' ) != null ) $_lang = '_' . get ( 'lang_id' ); else $_lang = '' ;
$srv_comment = SurveySetting :: getInstance () -> getSurveyMiscSetting ( 'srvlang_srv_question_respondent_comment' . $_lang );
$comment = $srv_comment != '' ? $srv_comment : self :: $lang [ 'srv_question_respondent_comment' ];
if ( get ( 'lang_id' ) != null ) {
$qct = SurveySetting :: getInstance () -> getSurveyMiscSetting ( 'srvlang_srv_question_comment_text_' . get ( 'lang_id' ));
if ( $qct != '' ) $srv_qct = $qct ;
}
$loop_id = get ( 'loop_id' ) == null ? " IS NULL " : " = ' " . get ( 'loop_id' ) . " ' " ;
$sql = sisplet_query ( " SELECT text FROM srv_data_text " . get ( 'db_table' ) . " WHERE spr_id='0' AND vre_id=' $spremenljivka ' AND usr_id=' " . get ( 'usr_id' ) . " ' AND loop_id $loop_id " );
$row = mysqli_fetch_array ( $sql );
echo '<div class="comment red" onclick="$(\'#question_resp_comment_' . $spremenljivka . '\').toggle();" >' . $comment . ' </ div >
< div class = " variable_holder ' . ( $question_resp_comment_show_open == 1 ? 'display_none' : '') . ' " id = " question_resp_comment_' . $spremenljivka . ' " >
< div class = " variabla question_comment " >
< textarea name = " question_comment_' . $spremenljivka . ' " id = " question_comment_' . $spremenljivka . ' " > ' . $row[' text '] . ' </ textarea >
</ div >
</ div > ' ;
}
/**
* @ desc prikaze spremenljivko
*/
public function displaySpremenljivka ( $spremenljivka , $offset = 0 , $zaporedna = null )
{
$rowa = SurveyInfo :: getInstance () -> getSurveyRow ();
$row = Model :: select_from_srv_spremenljivka ( $spremenljivka );
$rowl = Language :: srv_language_spremenljivka ( $spremenljivka );
if ( strip_tags ( $rowl [ 'naslov' ]) != '' ) $row [ 'naslov' ] = $rowl [ 'naslov' ];
if ( strip_tags ( $rowl [ 'info' ]) != '' ) $row [ 'info' ] = $rowl [ 'info' ];
if ( $rowl [ 'vsota' ] != '' ) $row [ 'vsota' ] = $rowl [ 'vsota' ];
// da dela tudi userjem brez JS, po defaultu vedno prikazemo vsa vprasanja, ki jih potem skrivamo z JS
$display = '' ;
// smo v vpogledu in izpisujemo spremenljivko iz loopa
$loop_style = ( get ( 'loop_id' ) != null && $_GET [ 'm' ] == 'quick_edit' ) ? ' quick_edit_loop' : '' ;
// hidden_default je pri radio buttnu opcija, da je vprasanje skrito, shrani pa se po defaultu prvi odgovor
if ( $row [ 'tip' ] == 22 || $row [ 'tip' ] == 25 /*|| ($row['tip']==1 && $row['hidden_default']==1)*/ ) {
$display = 'display_none' ; // compute ali kvota vprašanje je vedno skrito
}
// Class za tipe ki jih v hitrem urejanju izpisemo v eni vrstici
$simple = ( ! in_array ( $row [ 'tip' ], array ( 5 , 6 , 16 , 19 , 20 , 17 ))) ? ' simple' : '' ;
// Class za nagovor - ce ima crto ali ne
$nagovor_line = '' ;
if ( $row [ 'tip' ] == 5 ) {
$spremenljivkaParams = new enkaParameters ( $row [ 'params' ]);
$nagovorLine = ( $spremenljivkaParams -> get ( 'nagovorLine' ) ? $spremenljivkaParams -> get ( 'nagovorLine' ) : 0 );
// Brez crte
if ( $nagovorLine == 1 )
$nagovor_line = 'hide_border' ;
// S crto
elseif ( $nagovorLine == 2 )
$nagovor_line = 'show_border' ;
}
/*
* V kolikor sistemsk spremenljivka je uporabljena v pogoju , potem preverimo , vrednost odgovora sistemske spremenljivke in omenjen odgovor v našem primeru samo nagovor prikažemo
*/
$display_sistemske = '' ;
$sql_if = sisplet_query ( " SELECT * FROM srv_branching WHERE element_spr=' $spremenljivka ' " );
$row_if = mysqli_fetch_object ( $sql_if );
if ( ! empty ( $row_if -> parent )) {
$sql_condition = sisplet_query ( " SELECT * FROM srv_condition WHERE if_id=' $row_if->parent ' " );
$row_condition = mysqli_fetch_object ( $sql_condition );
# V kolikor imamo pogoj, potem preverimo, če je pogoj vezan na sistemske in skrite spremenljivke
if ( ! empty ( $row_condition )) {
$sql_spr_sistem = sisplet_query ( " SELECT id FROM srv_spremenljivka WHERE id=' $row_condition->spr_id ' AND sistem=1 AND visible=0 " );
if ( $sql_spr_sistem -> num_rows > 0 )
$display_sistemske = 'display_none' ;
}
$sql_condition_vred = sisplet_query ( " SELECT * FROM srv_condition_vre WHERE cond_id=' $row_condition->id ' " );
$row_condition_vred = mysqli_fetch_object ( $sql_condition_vred );
//preverimo, še če je bilo to vprašanje odgovorjeno in izbrana vrednost odgovora enaka našemu pogoji pri IF stavku
$sql_data_cond = sisplet_query ( " SELECT * FROM srv_data_vrednost_active WHERE usr_id=' " . get ( 'usr_id' ) . " ' AND spr_id=' $row_condition->spr_id ' " );
$row_data_cond = mysqli_fetch_object ( $sql_data_cond );
if ( ! empty ( $row_data_cond -> vre_id ) && ! empty ( $row_condition_vred -> vre_id ) && ( $row_data_cond -> vre_id == $row_condition_vred -> vre_id )) {
$display_sistemske = '' ;
}
}
if (( self :: $admin_type <= $row [ 'dostop' ] && self :: $admin_type >= 0 ) || ( self :: $admin_type == - 1 && $row [ 'dostop' ] == 4 )) {
// ok
} else {
$display = 'display_none' ; // user iz sispleta nima dostopa do vprasanja
return ; // ce damo samo display na none, se npr. v IFih spet pokaze vprasanje...
}
if ( get ( 'forceShowSpremenljivka' )) { // za prikaz spremenljivke v analizi in mogoče še kje
$display = '' ;
}
echo " \n \r \n \r " ;
echo ' <!-- spremenljivka -->' . " \n " ;
echo ' <div id="spremenljivka_' . $spremenljivka . '" class="spremenljivka ' . $simple . ' ' . $nagovor_line . ' tip_' . $row [ 'tip' ] . ' ' . $loop_style . ' ' . $display . $display_sistemske . ( $row [ 'dostop' ] < 4 ? ' limited' : '' ) . '" data-vrstni_red="' . $row [ 'vrstni_red' ] . '">' . " \n " ;
// izpis tekstovnega pogoja
if ( isset ( $_GET [ 'displayifs' ]) && $_GET [ 'displayifs' ] == '1' ) {
$b = new Branching ( get ( 'anketa' ));
$parents = $b -> get_parents ( $row [ 'id' ]);
$parents = explode ( 'p_' , $parents );
foreach ( $parents AS $key => $val ) {
if ( is_numeric ( trim ( $val ))) {
$parents [ $key ] = ( int ) $val ;
} else {
unset ( $parents [ $key ]);
}
}
echo '<div>' ;
foreach ( $parents AS $if ) {
echo '<p>' ;
$b -> conditions_display ( $if );
$b -> blocks_display ( $if );
echo '</p>' ;
}
echo '</div>' ;
}
echo ' <input type="hidden" name="visible_' . $spremenljivka . '" id="visible_' . $spremenljivka . '" value="' . ( $display == '' || $row [ 'hidden_default' ] == 1 ? '1' : '0' ) . '">' . " \n " ;
$oblika = array ();
$oblika [ 'orientation' ] = $row [ 'orientation' ];
// pri multigridu ne pustimo spremembe orientacije - spremembe ne pustimo tudi ce je resevalec mobitl
if (( $row [ 'orientation' ] == 0 || $row [ 'orientation' ] == 2 )
&& $row [ 'tip' ] != 6 && $row [ 'tip' ] != 16 && $row [ 'tip' ] != 19 && $row [ 'tip' ] != 20
&& get ( 'mobile' ) == 0
) {
// ce ni besedilo
if ( $row [ 'tip' ] != 21 ){
$oblika [ 'cssFloat' ] = ' floatLeft' ;
}
// ce je besedilo in postavitev vodoravno ob vprasanju
else {
$oblika [ 'cssFloat' ] = ' besediloObVprasanju' ;
}
// ce je vodoravno ob vprasanju
if ( $row [ 'orientation' ] == 0 ) {
$oblika [ 'divClear' ] = '' ;
}
// ce je vodoravno pod vprasanjem
else {
$oblika [ 'divClear' ] = 'clr' ;
$oblika [ 'cssLineBreak' ] = '<br>' ;
}
}
else {
$oblika [ 'cssFloat' ] = '' ;
$oblika [ 'divClear' ] = 'clr' ;
}
// datapiping
$row [ 'naslov' ] = Helper :: dataPiping ( $row [ 'naslov' ]);
// izpisemo statistiko za radio, checkbox, dropdown in multigrid
if ( $row [ 'stat' ] == 1 && ( $row [ 'tip' ] <= 3 || $row [ 'tip' ] == 6 )) {
echo ' <div id="stat_' . $spremenljivka . '" class="stat">' . " \n " ;
echo ' </div>' . " \n " ;
}
// stevilcenje
if (( SurveyInfo :: getInstance () -> getSurveyCountType () > 0 || isset ( $_GET [ 'displayvariables' ]) && $_GET [ 'displayvariables' ] > 0 ) && get ( 'forceShowSpremenljivka' ) == false ) {
echo '<div class="counter">' ;
if ( SurveyInfo :: getInstance () -> getSurveyCountType () == 1 ) {
echo $zaporedna + $offset . " ) " ;
}
if ( SurveyInfo :: getInstance () -> getSurveyCountType () == 2 || isset ( $_GET [ 'displayvariables' ]) && $_GET [ 'displayvariables' ] == 1 ) {
echo strip_tags ( $row [ 'variable' ]) . ' - ' ;
}
if ( SurveyInfo :: getInstance () -> getSurveyCountType () == 3 ) {
echo $zaporedna + $offset . " ) " . strip_tags ( $row [ 'variable' ]) . ' - ' ;
}
echo '</div>' ;
}
echo '<div class="naslov ' . $oblika [ 'cssFloat' ] . '">' ;
if ( $row [ 'reminder' ] > 0 ) // statusi: reminder, in še kaj
echo '<span class="reminder">*</span>' ;
echo $row [ 'naslov' ];
if ( $row [ 'info' ] != '' )
echo '<p class="spremenljivka_info">' . $row [ 'info' ] . '</p>' ;
echo '</div>' ;
// nagovor nima nicesar
if ( $row [ 'tip' ] != 5 ) {
// ce je besedilo in postavitev vodoravno ob vprasanju
if ( $row [ 'tip' ] == 21 && $row [ 'orientation' ] == 0 ){
echo '<div class="variable_holder besediloObVprasanju ' . $oblika [ 'divClear' ] . '" ' . ( $row [ 'hidden_default' ] == 1 ? 'style="display:none"' : '' ) . '>' ;
}
else {
// ce je postavitev vodoravno pod vprasanjem
if ( $row [ 'orientation' ] == 2 ){
echo '<div class="variable_holder vodoravno_pod_vprasanjem ' . $oblika [ 'divClear' ] . '" ' . ( $row [ 'hidden_default' ] == 1 ? 'style="display:none"' : '' ) . '>' ;
}
// ce je postavitev vodoravno ob vprasanju
elseif ( $row [ 'orientation' ] == 0 ){
echo '<div class="variable_holder vodoravno_ob_vprasanju ' . $oblika [ 'divClear' ] . '" ' . ( $row [ 'hidden_default' ] == 1 ? 'style="display:none"' : '' ) . '>' ;
}
else {
//echo '<div class="variable_holder '.$oblika['divClear'].'" ' . ($row['hidden_default'] == 1 ? 'style="display:none"' : 'style="display:inline"').'>';
echo '<div class="variable_holder ' . $oblika [ 'divClear' ] . '" ' . ( $row [ 'hidden_default' ] == 1 ? 'style="display:none"' : '' ) . '>' ;
}
}
if ( $rowa [ 'mass_insert' ] == '1' && $_GET [ 'm' ] != 'quick_edit' )
$this -> displayMassVnos ( $spremenljivka , $oblika );
else
$this -> displayVnos ( $spremenljivka , $oblika );
echo '</div>' ;
}
SurveySetting :: getInstance () -> Init ( get ( 'anketa' ));
if ( SurveySetting :: getInstance () -> getSurveyMiscSetting ( 'question_resp_comment' ) == 1 &&
get ( 'forceShowSpremenljivka' ) == false &&
! $_GET [ 'hidecomment' ] == 1 &&
( $_GET [ 'preview' ] == 'on' && $_GET [ 'testdata' ] == 'on' )
) {
$this -> displaySpremenljivkaComment ( $spremenljivka );
}
$ss = new SurveySlideshow ( get ( 'anketa' ));
$ss_setings = $ss -> getSettings ();
// timer na spremenljivki
if ( $row [ 'timer' ] > 0 && $row [ 'gru_id' ] == $_GET [ 'grupa' ]) {
echo '<script>' . " \n " ;
echo 'setTimeout(\'submitForm()\', ' . ( $row [ 'timer' ] * 1000 ) . ');' . " \n " ;
echo '</script>' . " \n " ;
}
else if (( int ) $row [ 'timer' ] > 0 && SurveyInfo :: getInstance () -> checkSurveyModule ( 'slideshow' )) {
echo '<script>' . " \n " ;
# če smo v prezentaciji in imamo nastavljen autostart
# če smo na prvi strani in mamo nastavljen autostart z timerjem
if ( ! isset ( $_GET [ 'grupa' ]) && ( $ss_setings [ 'autostart' ] == 1 || $ss_setings [ 'autostart' ] == 3 )) {
echo 'setTimeout(\'submitForm()\', ' . ( $row [ 'timer' ] * 1000 ) . ');' . " \n " ;
}
if ( ! isset ( $_GET [ 'grupa' ]) && (( int ) $ss_setings [ 'autostart' ] == 2 || ( int ) $ss_setings [ 'autostart' ] == 3 )) {
echo '$(".spremenljivka").addClass("pointer");' . " \n " ;
# autostart z klikom
echo '$(".spremenljivka").live("click", function(event) {submitForm()});' . " \n " ;
}
echo ' </script>' . " \n " ;
}
echo '</div>' ; // spremenljivka
}
/**
* preveri , ce se spremenljivka pojavi v katerem izmed pogojev , da jo je potrebno izpisati
*
* @ param mixed $spremenljivka
*/
private function inCondition ( $spremenljivka )
{
$sql = sisplet_query ( " SELECT COUNT(*) AS count FROM srv_condition WHERE spr_id=' $spremenljivka ' " );
$row = mysqli_fetch_array ( $sql );
if ( $row [ 'count' ] > 0 )
return true ;
$sql = sisplet_query ( " SELECT COUNT(*) AS count FROM srv_calculation WHERE spr_id=' $spremenljivka ' " );
$row = mysqli_fetch_array ( $sql );
if ( $row [ 'count' ] > 0 )
return true ;
return false ;
}
/**
* prikaze vnos spremenljivke za masovno vnasanje vprasalnika
*
* @ param mixed $spremenljivka
* @ param mixed $oblika
*/
function displayMassVnos ( $spremenljivka , $oblika )
{
$row = Model :: select_from_srv_spremenljivka ( $spremenljivka );
switch ( $row [ 'tip' ]) {
case 1 :
case 3 :
$sql = sisplet_query ( " SELECT id, vrstni_red FROM srv_vrednost WHERE spr_id=' $spremenljivka ' AND other='1' ORDER BY vrstni_red ASC " );
$input = '' ;
$js = '' ;
while ( $row = mysqli_fetch_array ( $sql )) {
$input .= ' <input type="text" name="textfield_' . $row [ 'id' ] . '" style="display:none" id="textfield_' . $row [ 'id' ] . '">' ;
$js .= ' if (this.value == \'' . $row [ 'vrstni_red' ] . '\') document.getElementById(\'textfield_' . $row [ 'id' ] . '\').style.display = \'inline\'; else document.getElementById(\'textfield_' . $row [ 'id' ] . '\').style.display = \'none\'; ' ;
}
echo '<input type="text" name="vrednost_' . $spremenljivka . '" onkeyup="checkBranching(); ' . $js . '" id="vrednost_' . $spremenljivka . '">' ;
echo $input ;
break ;
case 2 :
$sql = sisplet_query ( " SELECT id, naslov, other FROM srv_vrednost WHERE spr_id=' $spremenljivka ' ORDER BY vrstni_red ASC " );
echo '<table>' ;
while ( $row = mysqli_fetch_array ( $sql )) {
echo '<tr><td>' . $row [ 'naslov' ] . '</td><td><input type="text" name="vrednost_' . $spremenljivka . '[]" onkeyup="checkBranching();" id="spremenljivka_' . $spremenljivka . '_vrednost_' . $row [ 'id' ] . '"></td>' ;
if ( $row [ 'other' ] == 1 ) echo '<td><input type="text" name="textfield_' . $row [ 'id' ] . '"></td>' ;
echo '</tr>' ;
}
echo '</table>' ;
break ;
case 6 :
$sql = sisplet_query ( " SELECT id, naslov, other FROM srv_vrednost WHERE spr_id=' $spremenljivka ' ORDER BY vrstni_red ASC " );
echo '<table>' ;
while ( $row = mysqli_fetch_array ( $sql )) {
echo '<tr><td>' . $row [ 'naslov' ] . '</td><td><input type="text" name="vrednost_' . $row [ 'id' ] . '" onkeyup="checkBranching();" id="spremenljivka_' . $spremenljivka . '_vrednost_' . $row [ 'id' ] . '"></td>' ;
if ( $row [ 'other' ] == 1 ) echo '<td><input type="text" name="textfield_' . $row [ 'id' ] . '"></td>' ;
echo '</tr>' ;
}
echo '</table>' ;
break ;
default :
$this -> displayVnos ( $spremenljivka , $oblika );
break ;
}
}
/**
* @ desc prikaze polja za vnos
*/
function displayVnos ( $spremenljivka , $oblika = null )
{
$loop_id = get ( 'loop_id' ) == null ? " IS NULL " : " = ' " . get ( 'loop_id' ) . " ' " ;
$row = Model :: select_from_srv_spremenljivka ( $spremenljivka );
// Pridobimo parametre
// nalozimo parametre spremenljivke
$spremenljivkaParams = new enkaParameters ( $row [ 'params' ]);
$selected = Model :: getOtherValue ( $spremenljivka );
// Izrisemo ustrezno vsebino vprasanja glede na tip
switch ( $row [ 'tip' ]){
// Radio, checkbox, dropdown
case 1 :
case 2 :
case 3 :
if ( $row [ 'orientation' ] != 8 && $row [ 'orientation' ] != 10 ) {
RadioCheckboxSelect :: getInstance () -> display ( $spremenljivka , $oblika );
}
elseif ( $row [ 'orientation' ] == 8 ) {
if ( get ( 'mobile' ) == 1 )
RadioCheckboxSelect :: getInstance () -> display ( $spremenljivka , $oblika );
else
DragDrop :: getInstance () -> display ( $spremenljivka );
}
elseif ( $row [ 'orientation' ] == 10 ){
HotSpot :: getInstance () -> display ( $spremenljivka );
}
break ;
// Tabela - radio
case 6 :
SurveySetting :: getInstance () -> Init ( get ( 'anketa' ));
$mobile_tables = SurveySetting :: getInstance () -> getSurveyMiscSetting ( 'mobile_tables' );
2022-08-25 12:27:38 +02:00
$pc_tables = SurveySetting :: getInstance () -> getSurveyMiscSetting ( 'pc_tables' );
2020-08-14 13:36:36 +02:00
// Izris multigrida s postopnim resevanjem
if ( $row [ 'dynamic_mg' ] > 0 && ! get ( 'printPreview' )){
if ( $row [ 'dynamic_mg' ] == 1 || $row [ 'dynamic_mg' ] == 3 || $row [ 'dynamic_mg' ] == 5 )
Dynamic :: getInstance () -> multigrid ( $spremenljivka );
else
Dynamic :: getInstance () -> verticalMultigrid ( $spremenljivka );
}
// Izris radio multigrida na mobitelu
2022-08-25 12:27:38 +02:00
elseif (( get ( 'mobile' ) == 1 && $mobile_tables > 0 ) || ( get ( 'mobile' ) != 1 && $pc_tables > 0 )) {
2020-08-14 13:36:36 +02:00
// Dvojni multigrid
if ( $row [ 'enota' ] == 3 )
MultigridMobile :: getInstance () -> radioDoubleMultigrid ( $spremenljivka );
else
MultigridMobile :: getInstance () -> radioMultigrid ( $spremenljivka );
}
// Ostali podtipi tabel
else {
// Izris glede na podtip
switch ( $row [ 'enota' ]){
// Multigrid z dropdownom
case 2 :
Multigrid :: getInstance () -> dropdown ( $spremenljivka );
break ;
// Dvojni multigrid
case 3 :
Double :: getInstance () -> grid ( $spremenljivka );
break ;
// OneAgainstAnother
case 4 :
OneAgainstAnother :: getInstance () -> display ( $spremenljivka );
break ;
// MaxDiff
case 5 :
MaxDiff :: getInstance () -> display ( $spremenljivka );
break ;
// SelectBox
case 6 :
Multigrid :: getInstance () -> selectBox ( $spremenljivka );
break ;
// Grid drag and drop
case 9 :
DragDrop :: getInstance () -> grid ( $spremenljivka );
break ;
// Image hotspot za radio grid
case 10 :
HotSpot :: getInstance () -> grid ( $spremenljivka );
break ;
// Navaden multigrid
default :
Multigrid :: getInstance () -> display ( $spremenljivka );
break ;
}
}
break ;
// Tabela - checkbox
case 16 :
SurveySetting :: getInstance () -> Init ( get ( 'anketa' ));
$mobile_tables = SurveySetting :: getInstance () -> getSurveyMiscSetting ( 'mobile_tables' );
2022-08-25 12:27:38 +02:00
$pc_tables = SurveySetting :: getInstance () -> getSurveyMiscSetting ( 'pc_tables' );
2020-08-14 13:36:36 +02:00
// Izris checkbox multigrida na mobitelu
2022-08-25 12:27:38 +02:00
if (( get ( 'mobile' ) == 1 && $mobile_tables > 0 ) || ( get ( 'mobile' ) != 1 && $pc_tables > 0 )) {
2020-08-14 13:36:36 +02:00
// Dvojni multigrid
if ( $row [ 'enota' ] == 3 )
MultigridMobile :: getInstance () -> checkboxDoubleMultigrid ( $spremenljivka );
else
MultigridMobile :: getInstance () -> checkboxMultigrid ( $spremenljivka );
}
// Izris glede na podtip
else {
switch ( $row [ 'enota' ]){
// Dvojni multicheckboxa
case 3 :
Double :: getInstance () -> checkGrid ( $spremenljivka );
break ;
// SelectBox
case 6 :
Multigrid :: getInstance () -> selectBox ( $spremenljivka );
break ;
// Navaden checkbox
case 0 :
Multigrid :: getInstance () -> checkbox ( $spremenljivka );
break ;
// Grid drag and drop
case 9 :
DragDrop :: getInstance () -> grid ( $spremenljivka );
break ;
}
}
break ;
// Tabela - multitext in multinumber
case 19 :
case 20 :
SurveySetting :: getInstance () -> Init ( get ( 'anketa' ));
$mobile_tables = SurveySetting :: getInstance () -> getSurveyMiscSetting ( 'mobile_tables' );
2022-08-25 12:27:38 +02:00
$pc_tables = SurveySetting :: getInstance () -> getSurveyMiscSetting ( 'pc_tables' );
2020-08-14 13:36:36 +02:00
// Izris text in number multigrida na mobitelu
2022-08-25 12:27:38 +02:00
if (( get ( 'mobile' ) == 1 && $mobile_tables > 0 ) || ( get ( 'mobile' ) != 1 && $pc_tables > 0 )) {
2020-08-14 13:36:36 +02:00
MultigridMobile :: getInstance () -> textMultigrid ( $spremenljivka );
}
// Izris navadnega text in number multigrida
else {
Text :: getInstance () -> multitext ( $spremenljivka );
}
break ;
// Multi Tabela
case 24 :
Multigrid :: getInstance () -> multiple ( $spremenljivka );
break ;
// Textbox - tega ni vec... naj zaenkrat se ostane za kaksno staro anketo...
case 4 :
echo '<div class="variabla ' . $oblika [ 'cssFloat' ] . '">' ;
$sql1 = sisplet_query ( " SELECT text FROM srv_data_text " . get ( 'db_table' ) . " WHERE spr_id=' $spremenljivka ' AND usr_id=' " . get ( 'usr_id' ) . " ' AND loop_id $loop_id " );
$row1 = mysqli_fetch_array ( $sql1 );
$taSize = ( $spremenljivkaParams -> get ( 'taSize' ) ? $spremenljivkaParams -> get ( 'taSize' ) : 1 );
$taWidth = ( $spremenljivkaParams -> get ( 'taWidth' ) ? $spremenljivkaParams -> get ( 'taWidth' ) : - 1 );
//default sirina
if ( $taWidth == - 1 )
$taWidth = 30 ;
if ( $taSize > 1 )
echo ' <textarea name="vrednost_' . $spremenljivka . '" id="vrednost_' . $spremenljivka . '" rows="' . $taSize . '" style="width: ' . $taWidth . 'em;" onkeyup="checkBranching();"' . ( $selected ? ' disabled' : '' ) . '>' . $row1 [ 'text' ] . '</textarea>' ;
else
echo ' <input type="text" name="vrednost_' . $spremenljivka . '" id="vrednost_' . $spremenljivka . '" style="width: ' . $taWidth . 'em;" onkeyup="checkBranching();" value="' . $row1 [ 'text' ] . '" ' . ( $selected ? ' disabled' : '' ) . '>' ;
echo '</div>' ;
SystemVariable :: getInstance () -> display ( $spremenljivka , $oblika );
break ;
// Textbox
case 21 :
Text :: getInstance () -> textbox ( $spremenljivka , $oblika );
break ;
// Number
case 7 :
Number :: getInstance () -> display ( $spremenljivka , $oblika );
break ;
// Datum
case 8 :
Datum :: getInstance () -> display ( $spremenljivka , $oblika );
break ;
// Generator imen (SN)
case 9 :
Imena :: getInstance () -> display ( $spremenljivka , $oblika );
break ;
// Ranking
case 17 :
// Image hotspot ranking
if ( $row [ 'design' ] == 3 ){
HotSpot :: getInstance () -> ranking ( $spremenljivka , $oblika );
}
else {
Ranking :: getInstance () -> display ( $spremenljivka , $oblika );
}
break ;
// Vsota
case 18 :
Vsota :: getInstance () -> display ( $spremenljivka , $oblika );
break ;
// Compute
case 22 :
Compute :: getInstance () -> display ( $spremenljivka );
break ;
// Kvota
case 25 :
Quota :: getInstance () -> display ( $spremenljivka );
break ;
// Maps / lokacija
case 26 :
Maps :: getInstance () -> display ( $spremenljivka , $oblika );
break ;
// HeatMap
case 27 :
HeatMap :: getInstance () -> display ( $spremenljivka , $oblika );
break ;
// Nagovor - prazno
case 5 :
default :
break ;
}
}
}