tip)
* 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
* Lokacija -> tip = 26
* HeatMap -> tip = 27
*
*
* Tipi anket: (srv_anketa -> survey_type)
* Glasovanja -> survey_type = 0
* Forma -> survey_type = 1
* Navadna anketa -> survey_type = 2 || survey_type = 3 (oboje enako - ostanek starih verzij)
*
*
* Moduli anket: (srv_anketa_module)
* email (email vabila)
* phone (telefonska anketa)
* slideshow (prezentacija)
* social_network (socialna omrežja - generator imen)
* quiz (kviz s pravilnimi/napacnimi odgovori)
* voting (volitve z anonimnimi vabili)
* uporabnost (evalvacija strani - split screen)
* panel (povezovanje ankete s panelom - npr. Valicon, GFK...)
* 360_stopinj (adecco)
* 360_stopinj_1ka
* evoli
* evoli team meter
* evoli employeeship meter
* hierarhija
* mfdps
* borza
* mju
* excelleration matrix
* advanced paradata (zbiranje in izvoz naprednih parapodatkov)
* maza (mobilna aplikacija za anketirance - 1kapanel)
* wpn (web push notifications)
**/
/**
* KONSTANTE
*
*/
// STARO
define("A_IZVOZI", "izvozi");
define("M_IZVOZI_EXCEL", "excel");
define("M_IZVOZI_SPSS", "spss");
define("M_IZVOZI_txt", "txt");
define("A_REPORT_VPRASALNIK_PDF", "vprasalnik_pdf");
define("A_REPORT_VPRASALNIK_RTF", "vprasalnik_rtf");
define("M_REPORT_TEXT", "text");
define("M_REPORT_GRAPHICAL", "graphical");
define("M_REPORT_TOTAL", "total");
// ali je enka še v fazi razvoja (za potrebe skrivanja navigacije,zavihkov,ipd...)
// skrite elemente prikaže samo administratorju
define("SRV_DEVELOPMENT_VERSION", true);
// tipi uporabnikov, (za kontrolo prikaza posameznih elementov) za preverjanje kličemo funkcijo user_role_cehck
define("U_ROLE_ADMIN", 0);
define("U_ROLE_MANAGER", 1);
define("U_ROLE_CLAN", 2);
define("U_ROLE_NAROCNIK", 3);
global $site_path;
class SurveyAdmin
{
var $anketa; // trenutna anketa
var $grupa; // trenutna grupa
var $spremenljivka; // trenutna spremenljivka
var $branching = 0; // pove, ce smo v branchingu
var $stran;
var $podstran;
var $skin = 0;
var $survey_type; // privzet tip je anketa na vecih straneh
var $displayLinkIcons = false; // zaradi nenehnih sprememb je trenutno na false, se kasneje lahko doda v nastavitve
var $displayLinkText = true; // zaradi nenehnih sprememb je trenutno na true, se kasneje lahko doda v nastavitve
var $setting = null;
var $db_table = '';
var $icons_always_on = false; # ali ima uporabnik nastavljeno da so ikone vedno vidne
var $full_screen_edit = false; # ali ima uporabnik nastavljeno da ureja vprašanja v fullscreen načinu
var $isAnketar = false; # Ali je uporabnik anketar ankete privzeto je ne
var $first_action = ''; // Prvi nivo navigacije kjer se nahajamo
var $second_action = ''; // Drugi nivo navigacije kjer se nahajamo
var $third_action = ''; // Tretji nivo navigacije kjer se nahajamo
var $layout_width = ''; // Layout strani kjer se nahajamo - "fullwidth", "wide" ali "narrow"
var $layout_menu = ''; // Layout strani kjer se nahajamo - "menu_lef" (prisoten levi meni)
/**
* @desc konstruktor
*/
function __construct($action = 0, $anketa = 0)
{
global $surveySkin, $site_url, $global_user_id;
if (isset ($surveySkin))
$this->skin = $surveySkin;
else
$this->skin = 0;
// polovimo anketa ID
if ($anketa != 0)
$this->anketa = $anketa;
elseif (isset ($_GET['anketa']))
$this->anketa = $_GET['anketa'];
elseif (isset ($_POST['anketa']))
$this->anketa = $_POST['anketa'];
# clearing E_NOTICE
if (!isset($_GET['a'])) {
$_GET['a'] = null;
}
if (!isset($_GET['m'])) {
$_GET['m'] = null;
}
if (!isset($_GET['t'])) {
$_GET['t'] = null;
}
if (!isset($_GET['mode'])) {
$_GET['mode'] = null;
}
UserSetting:: getInstance()->Init($global_user_id);
$this->icons_always_on = UserSetting:: getInstance()->getUserSetting('icons_always_on');
$this->full_screen_edit = UserSetting:: getInstance()->getUserSetting('full_screen_edit');
$this->isAnketar = Common::isUserAnketar($this->anketa, $global_user_id);
SurveyInfo::getInstance()->SurveyInit($this->anketa);
$this->db_table = SurveyInfo::getInstance()->getSurveyArchiveDBString();
$this->survey_type = $this->getSurvey_type($this->anketa);
if ($_GET['a'] == 'branching' || $this->survey_type > 1)
$this->branching = 1;
if ($this->anketa > 0) {
// preverimo ali anketa sploh obstaja
if (!$this->checkAnketaExist()) {
header('location: ' . $site_url . 'admin/survey/index.php');
}
else {
// preverimo userjev dostop
//if ($this->checkDostop() || $this->checkDostopAktiven() || $_GET['a'] == A_ANALYSIS || $_GET['a'] == 'analiza' || $_GET['a'] == 'analizaReloadData' || $_GET['t'] == A_ANALYSIS || $_GET['a'] == A_REPORTI) {
if ($this->checkDostop() && ($this->isAnketar || $this->checkDostopAktiven() || $_GET['a']==A_ANALYSIS || $_GET['a']=='analiza' || $_GET['a']=='analizaReloadData' || $_GET['t']==A_ANALYSIS || $_GET['a']==A_REPORTI)) {
// pasivne uporabnike preusmerimo na status tudi pri neaktivni anketi
if ($this->checkDostop() && !$this->checkDostopAktiven() && !isset($_GET['a'])) {
header('location: ' . $site_url . 'admin/survey/index.php?anketa=' . $this->anketa . '&a=' . A_REPORTI);
die();
}
// ugotovimo ali je uporabnik telefonski anketar
else if ($this->isAnketar && $_GET['a'] != A_TELEPHONE) {
#če je anketar lahko samo kliče
header('Location: index.php?anketa=' . $this->anketa . '&a=' . A_TELEPHONE . '&m=start_call');
exit();
}
// ok
}
else {
// pri ajax klicih ne sme naprej, da ne more pisat v bazo
header('location: ' . $site_url . 'admin/survey/');
die();
}
}
}
if ($action == 0) {
if (isset ($_GET['anketa'])) {
SurveyInfo:: getInstance()->SurveyInit($this->anketa);
if (isset ($_GET['grupa'])) {
$this->grupa = $_GET['grupa'];
}
elseif (!isset ($_GET['a'])) {
$sql = sisplet_query("SELECT id FROM srv_grupa WHERE ank_id='$this->anketa' ORDER BY vrstni_red LIMIT 1");
$row = mysqli_fetch_array($sql);
$this->grupa = $row['id'];
}
// meta podatki, ki jih beremo z JS
echo '
';
?>
}
}
// tole je, ce se inicializira v branhingu z $action=-1 (pa mogoce/najbrz se kje), da se ne prikazujejo 2x te meta podatki in redirecta...
else {
if ($this->anketa == 0)
die();
}
$this->stran = $_GET['a'];
}
/**
* @desc pohendla zadeve in prikaze ustrezne elemente ankete
*/
function display(){
global $site_url;
global $global_user_id;
global $lang;
global $admin_type;
global $site_domain;
// prvi in drugi nivo (tretji samo za mobilno navigacijo)
$navigationArray = CrossRoad::MainNavigation($this->anketa, true);
$this->first_action = $navigationArray['first_action'];
$this->second_action = $navigationArray['second_action'];
$this->third_action = $navigationArray['third_action'];
// Layout strani
$this->layout_width = $navigationArray['layout_width'];
$this->layout_menu = $navigationArray['layout_menu'];
$this->hide_header = $navigationArray['hide_header'];
echo '
';
// Znotraj posamezne ankete
if($this->anketa > 0){
// Prikaze podatke o anketi in navigacijo - na vrhu (top bar)
$this->displayHeaderAnketa();
}
// Seznam anket
else{
$this->displayHeaderSeznamAnket();
}
echo '
';
// MOBILE HEADER
echo '
';
$mobile_admin = new MobileSurveyAdmin($this);
$mobile_admin->displayHeaderMobile();
echo '
';
echo '';
/********************* GLAVA - END *********************/
/********************* MAIN *********************/
echo '
';
// SEZNAM ANKET - Ce ni nastavljene ankete, potem prikazujemo seznam na prvi strani *****/
if (!($this->anketa > 0)) {
$this->displaySeznamAnket();
}
// ZNOTRAJ ANKETE
else{
echo '
';
// div za setiranje trajanja ankete ob aktiviranju
echo '
';
echo '
';
echo '
';
// urejanje pogojev -- v tem pogledu se uporabi za urejanje vrednosti v editorju
echo '';
echo '';
// za dodajanje IFov v normalnem pogledu -- da se zapise sm not, kar se pac zapise - drugac ne dela naprej
echo '';
// fullscreen urejanje spremenljivke
echo '';
// fullscreen urejanje vprasanja
echo '';
// popup za urejanje vrednosti
echo '';
// Generičen popup
echo '';
// Knjiznica popup
echo '';
// urejanje calculation-ov
echo '';
// urejanje kvote
echo '';
echo '';
echo '';
// div za prikaz neprebranih sporocil
echo '';
// div za uvoz vprasanj iz texta
echo '';
// div za opozorilo, da funkcionalnost ni na voljo v paketu
echo '';
// alert za paste from Word
echo '
';
echo $lang['pasteFromWordAlert'];
echo '
';
// Alert
echo '';
// Preverjanje pravilnosti pogojev
echo '';
// ANALIZE
# skrit div za izbor profilov nastavitev
echo '';
# skrit div za izbor profilov nastavitev
echo '';
# skrit div za izbor profilov nastavitev
echo '';
# skrit div za izbor profilov zank
echo '';
# skrit div za izbor if-profilov
echo '';
# skrit div za izbor manjkajočih vrednosti
echo '';
# skrit div za izbor profilov intervala
echo '';
# skrit div za izbor skina grafov
echo '';
//div za float edit grafov
echo '';
//div za opozorilo pri vkljucevanju v report
echo '';
// Skriti divi za profile
echo '';
// Creport
echo '';
// REKODIRANJE
echo '';
echo '';
// NAROCILA in PLACILA
echo '';
echo '';
//Telefonska anketa
echo '';
echo '
';
echo '
';
}
// Utripajoc napis "Demo anketa"
private function displayHeaderDemoSurvey(){
global $lang;
$row = SurveyInfo::getInstance()->getSurveyRow();
// Demo anketa utripanje
if ($row['invisible'] == 1 && !Dostop::isMetaAdmin()) {
echo '';
echo '
' . $lang['srv_close_invisible'] . '
';
?>
}
}
// Prikaze podatke o anketi na vrhu
private function displayHeaderAnketa(){
global $lang;
global $site_url;
// Zgornja vrstica v headerju
$this->displayHeaderTopLine();
// Prvi nivo navigacije
$this->showMainNavigation();
// Drugi nivo navigacije
$this->secondNavigation();
// Tretji nivo navigacije po potrebi glede na podstran
$this->thirdNavigation();
}
/**
* prikaze glavo v seznamu anket
*
*/
private function displayHeaderSeznamAnket(){
global $lang, $site_url, $global_user_id, $admin_type, $site_domain;
// Pobrisemo vse preview vnose
Common::deletePreviewData($this->anketa);
# naložimo razred z seznamom anket
$SL = new SurveyList();
$SLCount = $SL->countSurveys();
$SLCountPhone = $SL->countPhoneSurveys();
// Obvestilo da ima uporabnik neprebrano sporocilo
$NO = new Notifications();
$countMessages = $NO->countMessages();
if ($countMessages > 0) {
echo '
';
echo $lang['srv_notifications_alert'];
echo '
';
// Ce imamo vklopljen avtomatski prikaz sporcila (za pomembne zadeve), ga prikazemo po loadu
if($NO->checkForceShow())
echo '';
}
// GDPR popup za prejemanje obvestil - force ce ga se ni izpolnil - SAMO NA www.1ka.si, test.1ka.si in virtualkah
if ( ($site_url == 'http://test.1ka.si/'
|| isWWW()
|| isAAI()
|| ($cookie_domain == '.1ka.si' && isVirtual()))
&& User::getInstance()->getSetting($setting='gdpr_agree') == '-1'
) {
// Avtomatsko prikazemo po loadu
echo '';
}
// Zgornja vrstica v headerju
$this->displayHeaderTopLine($class='folders');
// Navigacija
echo '
';
$SL->display_tabs();
echo '
';
# smo v knjižnici
$SL->display_sub_tabs();
}
public function displayHeaderTopLine($class=''){
global $lang, $site_url, $global_user_id, $admin_type, $site_domain;
echo '
';
}
// Prikazemo podatke zgoraj desno v glavi (search, user, help)
private function displayHeaderRight(){
global $site_url;
global $global_user_id;
global $lang;
// user navigacija
echo '
';
// Hitra pomoč - povezave na linke s pomočjo na www.1ka.si
$subdomain = ($lang['id'] == "1") ? 'www' : 'english';
$help_url = Common::getHelpUrl($subdomain, $this->first_action);
echo '
';
// povezava na fieldwork sync
if ($this->anketa > 0) {
// poglej če je tale ID ankete v srv_fieldwork
$sql = sisplet_query("SELECT id FROM srv_fieldwork where sid_server='" . $this->anketa . "'");
if (mysqli_num_rows($sql) > 0) {
// nariši link.
echo '
';
// Odjava na nov nacin preko frontend/api
echo '
';
echo ' ';
echo '
';
echo '
';
echo '
';
echo '
';
}
// Prikazemo logo zgoraj levo
private function displayHeaderLogo(){
global $lang;
global $site_url;
// Logo glede na jezik in namestitev
if(isLastnaInstalacija() || isVirtual())
$logo_class = ' class="namestitev"';
elseif($lang['id'] != "1")
$logo_class = ' class="english"';
else
$logo_class = '';
$url = ($site_url == "https://www.1ka.si/" && $lang['id'] != "1") ? "https://www.1ka.si/d/en/" : $site_url;
echo '
';
echo ' ';
echo '
';
}
// Prikaze ime ankete, zvezdico in tiste linke spodi (ker se vse refresha z ajaxom)
private function displayHeaderAnketaSettings() {
global $lang;
global $site_url;
global $admin_type;
$hierarhija_type = (!empty($_SESSION['hierarhija'][$this->anketa]['type']) ? $_SESSION['hierarhija'][$this->anketa]['type'] : null);
// ajaxa se poslje skupaj z ajaxom, da ob updatu vemo kaksen 'a' je bil na originalni strani
// (drugace se ob updatu z ajaxom informacija o 'a'ju zgubi)
$get = $_GET['a'];
if (isset ($_GET['ajaxa']))
$get = $_GET['ajaxa'];
SurveyInfo::getInstance()->SurveyInit($this->anketa);
$row = SurveyInfo::getInstance()->getSurveyRow();
SurveySetting::getInstance()->Init($this->anketa);
if ($this->skin == 0) {
// Top navigacija
echo '
';
// aktivni ki lahko tudi urejajo
if ($this->checkDostopAktiven()) {
echo '
';
}
# če je manj kot 20 variabel naj gre default na graf
$sql = sisplet_query("SELECT COUNT(*) AS count FROM srv_spremenljivka s, srv_grupa g WHERE s.gru_id=g.id AND g.ank_id='$this->anketa'");
[$varcount] = mysqli_fetch_array($sql);
if ($varcount < 20) {
SurveyDataSettingProfiles:: Init($this->anketa);
$goto = SurveyDataSettingProfiles::getSetting('analysisGoTo');
$_goto_m = '&m=' . $goto;
} else {
$_goto_m = '&m=' . M_ANALYSIS_SUMMARY;
}
echo '
';
}
// Ikona za vklop jezika, če je v globalnih nastavitvah vklopljena opcija
//elseif (UserSetting::getInstance()->getUserSetting('showLanguageShortcut')) {
else{
echo '
'; # id="surveyNavigation"
}
// Prikazemo drugi nivo navigacije
private function secondNavigation(){
global $lang, $site_url, $admin_type;
$hierarhija_type = (!empty($_SESSION['hierarhija'][$this->anketa]['type']) ? $_SESSION['hierarhija'][$this->anketa]['type'] : null);
# ajaxa se poslje skupaj z ajaxom, da ob updatu vemo kaksen 'a' je bil na originalni strani
# (drugace se ob updatu z ajaxom informacija o 'a'ju zgubi)
$get = $_GET['a'];
if (isset ($_GET['ajaxa']))
$get = $_GET['ajaxa'];
if (trim($get) == '') {
$get = A_BRANCHING;
}
//*** druga vrstica navigacije ***//
echo '
';
// Ce imamo testne vnose prikazemo povezavo na arhiv testnih vnosov
if ($this->survey_type > 1) {
$str_testdata = "SELECT count(*) FROM srv_user WHERE ank_id='" . $this->anketa . "' AND (testdata='1' OR testdata='2') AND deleted='0'";
$query_testdata = sisplet_query($str_testdata);
[$testdata] = mysqli_fetch_row($query_testdata);
# link arhivi
if ((int)$testdata > 0) {
echo '';
echo '
';
}
# Ikonce za pdf rtf word
if($hierarhija_type < 5) {
echo '
';
# Ikonce za delete, copy ....
$d = new Dostop();
if ($d->checkDostopAktiven()) {
$this->displaySecondNavigationLinks(1);
}
$this->displaySecondNavigationLinks(0);
echo '
';
echo '
'; #
}
}
// Prikazemo dodaten tretji nivo navigacije po potrebi
private function thirdNavigation(){
global $global_user_id;
$podstran = '';
if($_GET['a'] == 'theme-editor'){
$podstran = 'theme-editor';
}
elseif($_GET['a'] == A_COLLECT_DATA_EXPORT){
$podstran = 'export';
}
elseif($_GET['a'] == A_HIERARHIJA && ($_GET['m'] == M_ANALIZE)){
$podstran = 'means';
}
// Zavihki TESTIRANJE
elseif($_GET['a'] == 'testiranje' && $_GET['m'] == 'predvidenicas'){
$podstran = 'ocena_trajanja';
}
elseif($_GET['a'] == 'testiranje' && $_GET['m'] == 'cas'){
$podstran = 'dejanski_casi';
}
elseif($_GET['a'] == 'komentarji_anketa'){
$podstran = 'komentarji_anketa';
}
elseif($_GET['a'] == 'komentarji'){
$podstran = 'komentarji';
}
// Zavihki PODATKI
elseif($_GET['a'] == 'data'){
if(!isset($_GET['m']) || $_GET['m'] == 'view'){
$podstran = 'data';
}
elseif($_GET['m'] == 'quick_edit'){
$podstran = 'quick_edit';
}
elseif($_GET['m'] == 'variables'){
$podstran = 'variables';
}
}
// Zavihki ANALIZA
elseif($_GET['a'] == 'analysis' && $_GET['m'] != 'anal_arch' && $_GET['m'] != 'vizualizacija'){
if (isset($_GET['podstran'])) {
$podstran = $_GET['podstran'];
}
else if (isset($_POST['podstran'])) {
$podstran = $_POST['podstran'];
}
else if (isset($_GET['m'])) {
$podstran = $_GET['m'];
}
else {
$podstran = M_ANALYSIS_SUMMARY;
}
}
elseif($_GET['a'] == 'usable_resp'){
$podstran = 'usable_resp';
}
elseif($_GET['a'] == 'AAPOR'){
$podstran = 'aapor';
}
elseif($_GET['a'] == 'reminder_tracking'){
$podstran = 'reminder_tracking';
}
elseif($_GET['a'] == 'para_graph'){
$podstran = 'para_graph';
}
elseif($_GET['a'] == 'nonresponse_graph'){
$podstran = 'para_analysis_graph';
}
elseif($_GET['a'] == 'status_advanced'){
$podstran = 'status_advanced';
}
// Izrisemo ustrezen meni, ce je prisoten
if($podstran != ''){
SurveyStatusProfiles::Init($this->anketa, $global_user_id);
$SSH = new SurveyStaticHtml($this->anketa);
$SSH->displayTopSettings($podstran);
}
}
// Priakz footerja
private function displayFooter(){
global $lang;
global $site_frontend;
global $mysql_database_name;
echo '';
}
// Pohendla prikazovanje vsebine ankete
private function displayAnketa(){
global $global_user_id;
// Imamo levi meni
if($this->layout_menu == 'menu_left'){
// Prikazemo meni na levi po potrebi glede na podstran
echo '
';
$this->displayLeftMenu();
echo '
';
// Preverimo, ce je funkcionalnost v paketu, ki ga ima uporabnik
$userAccess = UserAccess::getInstance($global_user_id);
if(!$userAccess->checkUserAccess()){
$userAccess->displayNoAccess();
return;
}
// Prikazemo glavni del urejanja ankete
echo '
';
$this->displayAnketaMain();
echo '
';
}
// Ni levega menija
else{
// Preverimo, ce je funkcionalnost v paketu, ki ga ima uporabnik
$userAccess = UserAccess::getInstance($global_user_id);
if(!$userAccess->checkUserAccess()){
$userAccess->displayNoAccess();
return;
}
// Prikazemo glavni del urejanja ankete
$this->displayAnketaMain();
}
}
// Prikazemo glavni del urejanja ankete
private function displayAnketaMain(){
// Ustrezno redirectamo anketo na ustrezno stran
if ($_GET['a'] == 'redirectLink') {
// Preverimo, če gre za anketo, ki vsebuje hierarhijo
unset($_SESSION['hierarhija'][$this->anketa]);
if(SurveyInfo::checkSurveyModule('hierarhija', $this->anketa))
$_SESSION['hierarhija'][$this->anketa]['type'] = \Hierarhija\HierarhijaHelper::preveriTipHierarhije($this->anketa);
$this->redirectLink();
}
// Kreira arhiv
elseif ($_GET['a'] == 'backup_create') {
$sas = new SurveyAdminSettings();
$sas->backup_create();
}
// Skopira anketo na drugo stran
elseif ($_GET['a'] == 'anketa_copy') {
$sas = new SurveyAdminSettings();
$sas->anketa_copy();
}
// Restore ankete
elseif ($_GET['a'] == 'backup_restore') {
$sas = new SurveyAdminSettings();
$sas->backup_restore();
}
// Prikazemo arhive
elseif(in_array($_GET['a'], ['arhivi', 'tracking', 'tracking-hierarhija'])){
$this->displayAnketaTabArhiv();
}
// Prikazemo vsebino glede na zavihek
else{
switch($this->first_action){
// Zavihek status
case NAVI_STATUS:
$this->displayAnketaTabStatus();
break;
// Zavihek urejanje
case NAVI_UREJANJE:
$this->displayAnketaTabUrejanje();
break;
// Zavihek testiranje
case NAVI_TESTIRANJE:
$this->displayAnketaTabTestiranje();
break;
// Zavihek objava
case NAVI_OBJAVA:
$this->displayAnketaTabObjava();
break;
// Zavihek podatki
case NAVI_RESULTS:
$this->displayAnketaTabPodatki();
break;
// Zavihek analize
case NAVI_ANALYSIS:
$this->displayAnketaTabAnalize();
break;
// Zavihek hierarhija
case NAVI_HIERARHIJA:
$this->displayAnketaTabHierarhija();
break;
default:
break;
}
}
}
// Prikazemo levi meni po potrebi
private function displayLeftMenu(){
global $lang;
$hierarhija_type = (!empty($_SESSION['hierarhija'][$this->anketa]['type']) ? $_SESSION['hierarhija'][$this->anketa]['type'] : null);
// Levi meni v nastavitvah ankete
if ($_GET['a'] == 'nastavitve'
|| $_GET['a'] == 'urejanje'
|| $_GET['a'] == 'alert'
|| $_GET['a'] == 'dostop'
|| $_GET['a'] == 'jezik'
|| $_GET['a'] == 'osn_pod'
|| $_GET['a'] == 'piskot'
|| $_GET['a'] == 'trajanje'
|| $_GET['a'] == 'forma'
|| $_GET['a'] == 'metadata'
|| $_GET['a'] == 'mobile_settings'
|| $_GET['a'] == A_PRIKAZ
|| $_GET['a'] == A_MISSING
|| $_GET['a'] == A_SKUPINE
|| $_GET['a'] == A_EXPORTSETTINGS
|| $_GET['a'] == A_GDPR
|| $_GET['a'] == 'uporabnost'
|| ($_GET['a'] == 'hierarhija_superadmin' && $hierarhija_type < 5)
|| $_GET['a'] == 'kviz'
|| $_GET['a'] == 'voting'
|| $_GET['a'] == 'slideshow'
|| $_GET['a'] == 'vnos'
|| $_GET['a'] == A_TELEPHONE
|| $_GET['a'] == A_CHAT
|| $_GET['a'] == A_PANEL
|| $_GET['a'] == A_FIELDWORK
|| $_GET['a'] == A_MAZA
|| $_GET['a'] == A_WPN
|| $_GET['a'] == 'social_network'
|| $_GET['a'] == A_360
|| $_GET['a'] == A_360_1KA
|| $_GET['a'] == 'evoli'
|| $_GET['a'] == 'evoli_teammeter'
|| $_GET['a'] == 'evoli_quality_climate'
|| $_GET['a'] == 'evoli_teamship_meter'
|| $_GET['a'] == 'evoli_organizational_employeeship_meter'
|| $_GET['a'] == 'evoli_employmeter'
|| $_GET['a'] == 'mfdps'
|| $_GET['a'] == 'borza'
|| $_GET['a'] == 'mju'
|| $_GET['a'] == 'excell_matrix'
|| $_GET['a'] == 'advanced_paradata'
|| $_GET['a'] == 'json_survey_export'
){
if ($this->isAnketar) {
return;
}
$this->showGlobalSettingsLinks();
if ($this->survey_type > 1) {
$this->showAdvancedModulesLinks();
}
$this->showAdditionalSettingsLinks();
}
// Uvoz podatkov levi meni
elseif ($_GET['a'] == A_COLLECT_DATA && in_array($_GET['m'], ['append', 'merge', 'upload_xls', 'append_xls'])) {
echo '
';
echo '
';
$this->showImportLinks();
echo '
';
echo '
';
}
// Kalkulacija podatkov levi meni
elseif ($_GET['a'] == A_COLLECT_DATA && in_array($_GET['m'], ['calculation', 'coding_auto', 'coding', M_COLLECT_DATA_RECODING])) {
echo '
';
echo '
';
$this->showcalculationsLinks();
echo '
';
echo '
';
}
// Izvoz podatkov levi meni
elseif ($_GET['a'] == A_COLLECT_DATA_EXPORT) {
echo '
';
echo '
';
$this->showExportLinks();
echo '
';
echo '
';
}
// Arhiv levi meni
elseif(in_array($_GET['a'], ['arhivi', 'tracking', 'tracking-hierarhija']) || in_array($_GET['m'], ['anal_arch', 'view_archive'])){
echo ''.$lang['srv_arhivi'].'';
echo '
';
$SSH = new SurveyStaticHtml($this->anketa);
$SSH->displayArchiveNavigation();
echo '
';
}
}
private function displayAnketaTabStatus(){
global $lang;
global $admin_type;
// Osnovni statusi
if ($_GET['a'] == A_REPORTI) {
Common::deletePreviewData($this->anketa);
$ss = new SurveyStatistic();
$ss->Init($this->anketa);
echo '
';
}
// IP lokacija - gorenje ima to ugasnjeno, volitve imajo tudi ugasnjeno
if (!Common::checkModule('gorenje') && !SurveyInfo::getInstance()->checkSurveyModule('voting')) {
echo '';
echo '
';
}
// AAPOR
// aapor naj bo viden samo če so vabila
if (SurveyInfo::getSurveyColumn('user_base') == 1 || SurveyInfo::getInstance()->checkSurveyModule('email')) {
echo '';
echo '
';
}
// langStatistic
// langStatistic naj bo viden samo če imamo različne jezike in nimamo volitev
if (!Common::checkModule('gorenje') && !SurveyInfo::getInstance()->checkSurveyModule('voting')) {
$qry_string = "SELECT language FROM srv_user WHERE ank_id = '" . $this->anketa . "' AND preview = '0' AND deleted='0' group by language";
$qry = (sisplet_query($qry_string));
$cntLang = mysqli_num_rows($qry);
if ($cntLang > 1) {
echo '';
echo '
';
}
private function displayAnketaTabHierarhija(){
echo '
';
$hir_nav = new \Hierarhija\Hierarhija($this->anketa);
$hir_nav->displayHierarhijaNavigation();
echo '
';
echo '
';
$hierarhija = new \Hierarhija\Hierarhija($this->anketa);
// m=uredi-sifrante
if ($_GET['m'] == M_ADMIN_UREDI_SIFRANTE) {
$hierarhija->hierarhijaSuperadminSifranti();
}
elseif ($_GET['m'] == M_ADMIN_UVOZ_SIFRANTOV) {
$hierarhija->hierarhijaSuperadminUvoz();
}
elseif ($_GET['m'] == M_ANALIZE) {
// V kolikor gre za poročila po meri
if($_GET['r'] == 'custom'){
$HC = new \Hierarhija\HierarhijaPorocilaClass($this->anketa);
$HC->izvoz();
}
else{
$HA = new HierarhijaAnalysis($this->anketa);
$HA->Display();
}
}
elseif ($_GET['m'] == M_ADMIN_AKTIVACIJA) {
$hierarhija->aktivacijaHierarhijeInAnkete();
}
elseif ($_GET['m'] == M_HIERARHIJA_STATUS) {
$hierarhija->statistikaHierjearhije();
}
elseif($_GET['m'] == M_UREDI_UPORABNIKE && $_GET['izvoz'] == 1) {
// za vse ostalo je uredi uporabnike - M_UREDI_UPORABNIKE
\Hierarhija\HierarhijaIzvoz::getInstance($this->anketa)->csvIzvozVsehUporabnikov();
}
else {
// za vse ostalo je ure uredi uporabnike - M_UREDI_UPORABNIKE
$hierarhija->izberiDodajanjeUporabnikovNaHierarhijo();
}
echo '
';
echo ' ';
}
function showExportLinks()
{
global $lang;
global $site_url;
global $site_path;
global $admin_type;
global $global_user_id;
if (trim($_GET['m']) == '') {
$_GET['m'] = M_EXPORT_SPSS;
}
echo '
';
}
function showcalculationsLinks(){
global $lang;
global $site_url;
global $site_path;
global $admin_type;
global $global_user_id;
echo ''.$lang['srv_data_navigation_calculate'].'';
echo '
';
}
function showImportLinks(){
global $lang;
global $site_url;
global $site_path;
global $admin_type;
global $global_user_id;
echo ''.$lang['srv_data_navigation_import'].'';
echo '
';
}
function showGlobalSettingsLinks(){
global $lang;
global $site_url;
global $site_path;
global $admin_type;
global $global_user_id;
$get = $_GET['a'];
$d = new Dostop();
echo ''.$lang['srv_survey_settings'].'';
echo '
';
// Gorenje tega nima, po novem to vidijo samo admini, ostali posiljajo preko default
if (!Common::checkModule('gorenje') && $admin_type == '0'){
echo '
';
}
function showAdditionalSettingsLinks()
{
global $lang;
global $site_url;
global $site_path;
global $admin_type;
global $global_user_id;
$get = $_GET['a'];
$d = new Dostop();
echo '' . $lang['set_links'] . '';
echo '
';
# Samoevalvacija hirarhija - hierarhija_superadmin
//$row_user se zacasno uporabi tudi za modul MAZA
$row_user = SurveyUserSetting::getInstance()->getUserRow();
if (\Hierarhija\HierarhijaHelper::preveriDostop($this->anketa)) {
echo '
';
# Napredni parapodatki - samo admini oz. ce je vklopljen
if ($admin_type == 0 || SurveyInfo::getInstance()->checkSurveyModule('advanced_paradata')) {
echo '
';
}
# JSON izvoz ankete - samo admini oz. ce je vklopljen
if ($admin_type == 0 || SurveyInfo::getInstance()->checkSurveyModule('json_survey_export')) {
echo '
';
}
}
/**
* prikaze admin vmesnik izven specificne ankete (seznam anket in polje za dodajanje na prvi strani, nastavitve uporabnika, uporabnike...)
*
*/
private function displaySeznamAnket(){
global $lang, $site_url, $global_user_id, $admin_type, $site_domain;
# naložimo razred z seznamom anket
$SL = new SurveyList();
$SLCount = $SL->countSurveys();
$SLCountPhone = $SL->countPhoneSurveys();
// VSEBINA POSAMEZNEGA TABA PRI MOJIH ANKETAH
echo '
';
// izpis pregledovanja
if ((!isset($_GET['a']) && !isset($_GET['anketa'])) || ($_GET['a'] == 'pregledovanje')) {
if ($SLCount > 0) {
echo '
';
$SL->getSurveys();
echo '
';
}
else {
$newSurvey = new NewSurvey();
if (isset($_GET['b']) && $_GET['b'] == 'new_survey'){
echo '
';
$newSurvey->displayNewSurveyPage();
echo '
';
}
else{
echo '
';
$newSurvey->displayNoSurveySequence();
echo '
';
}
}
}
// Izpis okna za ustvarjanje ankete (enako kot ce nimamo nobene ankete)
if ($_GET['a'] == 'ustvari_anketo') {
echo '
';
$newSurvey = new NewSurvey();
$newSurvey->displayNewSurveyPage();
echo '
';
}
// izpis pregledovanja
if ($_GET['a'] == 'phoneSurveys') {
if ($SLCountPhone > 0) {
echo '
';
$SL->getSurveys();
echo '
';
}
else {
echo '
';
$newSurvey = new NewSurvey();
$newSurvey->displayNewSurveyPage();
echo '
';
}
// nastavitve, izvozi... za UL evalvacije
if ($_GET['a'] == 'ul_evalvation') {
if (!isset($_GET['t']) || $_GET['t'] == 'export') {
echo '
';
$EVAL = new Evalvacija();
$EVAL->displayExport();
echo '
';
}
elseif ($_GET['t'] == 'import') {
echo '
';
$EVAL = new Evalvacija();
$EVAL->displayImport();
echo '
';
}
elseif ($_GET['t'] == 'emailing') {
echo '
';
$EVAL = new Evalvacija();
$EVAL->displayEmailing();
echo '
';
}
elseif ($_GET['t'] == 'test') {
echo '
';
$EVAL = new Evalvacija();
$EVAL->displayTestSurveys();
echo '
';
}
elseif ($_GET['t'] == 'gc') {
echo '
';
$GC = new GC();
$GC->displayGC();
echo '
';
}
}
// Konec moje_ankete_edit
echo '
';
}
/**
* vrne kodo ankete, ki se jo uporabi za embed
*
*/
function getEmbed($js = true)
{
global $site_url;
$iframe = '';
$javascript = '';
if ($js)
return htmlentities($iframe . $javascript, ENT_QUOTES);
else
return htmlentities($iframe, ENT_QUOTES);
}
function check_online_users(){
global $global_user_id;
global $lang;
$hierarhija_type = (!empty($_SESSION['hierarhija'][$this->anketa]['type']) ? $_SESSION['hierarhija'][$this->anketa]['type'] : null);
$sqlx = sisplet_query("SELECT uid FROM srv_dostop WHERE ank_id = '$this->anketa'");
if (mysqli_num_rows($sqlx) <= 1) return;
$sql = sisplet_query("SELECT DISTINCT user FROM srv_tracking".$this->db_table." WHERE ank_id='$this->anketa' AND user != '$global_user_id' AND datetime > NOW() - INTERVAL 15 MINUTE");
if (!$sql) return;
if (mysqli_num_rows($sql) > 0 && $hierarhija_type < 5) {
echo '
';
}
// Tooltip "aktivnost ankete"
public function tooltip_survey_activity(){
global $lang;
$row = SurveyInfo::getInstance()->getSurveyRow();
echo '
';
// Aktivna
if($row['active'] == 1){
echo '
'.$lang['srv_anketa_active2'].'
';
echo '
'.$lang['srv_anketa_active2_text'].'
';
}
// Ni aktivna
else{
echo '
'.$lang['srv_anketa_noactive2'].'
';
echo '
'.$lang['srv_anketa_noactive2_text'].'
';
}
echo '
';
}
// Tooltip "zaklenjena/odklenjena anketa"
public function tooltip_survey_locked(){
global $lang;
$row = SurveyInfo::getInstance()->getSurveyRow();
echo '
';
// Zaklenjena
if($row['locked'] == 1){
echo '
'.$lang['srv_anketa_locked'].'
';
echo '
'.$lang['srv_anketa_locked_text'].'
';
}
// Ni zaklenjena
else{
echo '
'.$lang['srv_anketa_unlocked'].'
';
echo '
'.$lang['srv_anketa_unlocked_text'].'
';
}
echo '
';
}
// Tooltip "testni vnos"
public function tooltip_test_data(){
global $lang;
$row = SurveyInfo::getInstance()->getSurveyRow();
echo '
';
echo '
'.$lang['srv_survey_testdata'].'
';
echo '
'.$lang['srv_testdata_text'].'
';
echo '
';
}
// Tooltip "predogled anekte"
public function tooltip_preview_data(){
global $lang;
$row = SurveyInfo::getInstance()->getSurveyRow();
$link = SurveyInfo::getSurveyLink();
echo '
';
echo '
'.$lang['srv_poglejanketo2'].'
';
echo '
'.$lang['srv_monitor_toolbox_preview'].'
';
echo '
';
// Ce imamo izklopljene mobilne prilagoditve ne pustimo preview-ja na mobile, ker itak ne prikaze scalano
$mobile_friendly = SurveySetting::getInstance()->getSurveyMiscSetting('mobile_friendly');
if($mobile_friendly != '0'){
echo '
';
}
// prikazemo if
if ($if > 0) {
$sql = sisplet_query("SELECT tip, label FROM srv_if WHERE id = '$if'");
$row = mysqli_fetch_array($sql);
$b = new Branching($this->anketa);
if ($row['tip'] == 0) {
echo '
';
}
function surveyAutoActivate()
{
global $global_user_id;
# preverimo ali je anketa že bila aktivirana
$str = "SELECT * FROM srv_activity WHERE sid =" . $this->anketa;
$qry = sisplet_query($str);
if (mysqli_num_rows($qry) == 0) {
# če anketa še ni bila kativirana jo aktiviramo za tri mesece
$row = SurveyInfo::getInstance()->getSurveyRow();
#(3) čim klikne na OBJAVA naj se zadeva tudi ze kar aktivira (kot bi kliknil na AKTIVIRAJ (vendar brez popupa in dajte daafulut trajanje na 3 miesece.
if ($row['active'] != 1) {
$uString = "UPDATE srv_anketa SET active = '1', starts=NOW(), expire = date_add(NOW(), INTERVAL 3 MONTH) WHERE id='" . $this->anketa . "'";
$s = sisplet_query($uString);
if (!$s) echo mysqli_error($GLOBALS['connect_db']);
#updejtamo še stv_activity
$uString = "INSERT INTO srv_activity (sid, starts, expire, uid) VALUES ('" . $this->anketa . "', NOW(), date_add(NOW(), INTERVAL 3 MONTH), '" . $global_user_id . "')";
$s = sisplet_query($uString);
if (!$s) echo mysqli_error($GLOBALS['connect_db']);
SurveyInfo:: getInstance()->SurveyInit($this->anketa);
# vsilimo refresh podatkov
SurveyInfo:: getInstance()->resetSurveyData();
}
}
}
}
?>