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)
* 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
/**
* @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 (isset ($_GET['anketa']))
$this->anketa = $_GET['anketa'];
elseif (isset ($_POST['anketa']))
$this->anketa = $_POST['anketa'];
elseif ($anketa != 0)
$this->anketa = $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);
if (SurveyInfo::getInstance()->getSurveyColumn('db_table') == 1)
$this->db_table = '_active';
$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;
global $aai_instalacija;
$sql = sisplet_query("SELECT email FROM users WHERE id='$global_user_id'");
$row = mysqli_fetch_assoc($sql);
if ($row['email'] == "test@1ka.si") {
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 '
';
/***** SEZNAM ANKET - Ce ni nastavljene ankete, potem prikazujemo seznam na prvi strani *****/
if (!($this->anketa > 0)) {
$this->displaySeznamAnket();
}
/***** GLAVNA VSEBINA - Znotraj posamezne ankete *****/
else{
echo '
anketa == 0 ? ' class="prva"' : '') . '>';
// Prikaze podatke o anketi in navigacijo - na vrhu (top bar)
$this->displayAnketaTop();
echo '
';
$this->displayAnketa();
echo '
';
echo '
';
// Predpregled tipa vprašanj - prikazujemo samo kadar smo v urejanju ankete
if (($_GET['a'] == '' && isset($_GET['anketa'])) || $_GET['a'] == 'branching') {
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 '';
// 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 '';
echo '
';
echo '
';
}
// Prikaze podatke o anketi na vrhu
private function displayAnketaTop(){
global $lang;
global $site_url;
// Aktivacija ankete, preview...
echo '
';
$this->anketa_active();
echo '
';
// Prvi nivo navigacije
$this->showMainNavigation();
// Drugi nivo navigacije
$this->secondNavigation();
// Tretji nivo navigacije po potrebi glede na podstran
$this->thirdNavigation();
}
// Priakz footerja
private function displayFooter(){
global $lang;
global $app_settings;
global $site_frontend;
global $aai_instalacija;
global $mysql_database_name;
echo ''; // END #main
echo '
'; // END #main_holder
}
// Prikaze ime ankete, zvezdico in tiste linke spodi (ker se vse refresha z ajaxom)
private function anketa_active() {
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 '
';
SurveySetting::getInstance()->Init($this->anketa);
// komentar na anketo, ki je vedno viden
if (SurveySetting::getInstance()->getSurveyMiscSetting('survey_comment_showalways') == 1 &&
$admin_type <= SurveySetting::getInstance()->getSurveyMiscSetting('survey_comment')
) {
echo ' ';
}
}
}
// Prikazemo prvi nivo navigacije in nastavimo stran in podstran na katerem se nahajamo
private function showMainNavigation(){
global $lang, $site_url, $admin_type;
$hierarhija_type = (!empty($_SESSION['hierarhija'][$this->anketa]['type']) ? $_SESSION['hierarhija'][$this->anketa]['type'] : null);
$row = SurveyInfo::getInstance()->getSurveyRow();
SurveyInfo:: getInstance()->SurveyInit($this->anketa);
$modules = SurveyInfo::getSurveyModules();
# vse tri nivoje akcij pohendlamo tukaj, da bo lažje ob kakih spremnjanjih
# prvi in drugi nivo
$navigationArray = CrossRoad::MainNavigation($this->anketa, true);
$this->first_action = $navigationArray['first_action'];
$this->second_action = $navigationArray['second_action'];
$css_status = 'off';
$css_urejanje = 'off';
$css_testiranje = 'off';
$css_objava = 'off';
$css_data = 'off';
$css_analysis = 'off';
$separatorli = '
';
if ($this->first_action == NAVI_STATUS) {
$css_status = 'on';
}
if ($this->first_action == NAVI_UREJANJE) {
$css_urejanje = 'on';
}
if ($this->first_action == NAVI_TESTIRANJE) {
$css_testiranje = 'on';
}
if ($this->first_action == NAVI_OBJAVA) {
$css_objava = 'on';
}
if ($this->first_action == NAVI_RESULTS && $_GET['m'] != 'monitoring') {
$css_data = 'on';
}
if ($this->first_action == NAVI_ANALYSIS) {
$css_analysis = 'on';
}
$d = new Dostop();
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 $separatorli;
echo '
';
}
elseif (UserSetting::getInstance()->getUserSetting('showLanguageShortcut')) {
// Ikona za vklop jezika, če je v globalnih nastavitvah vklopljena opcija
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);
if ((int)$testdata > 0) {
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
$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 '
';
}
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 showGlobalSettingsLinks(){
global $lang;
global $site_url;
global $site_path;
global $admin_type;
global $global_user_id;
$get = $_GET['a'];
$d = new Dostop();
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 '
';
}
// Linki za napredne module
function showAdvancedModulesLinks()
{
global $lang;
global $site_url;
global $site_path;
global $admin_type;
global $global_user_id;
$hierarhija_type = (!empty($_SESSION['hierarhija'][$this->anketa]['type']) ? $_SESSION['hierarhija'][$this->anketa]['type'] : null);
$get = $_GET['a'];
$row = SurveyInfo::getInstance()->getSurveyRow();
$d = new Dostop();
if ($d->checkDostopAktiven()) {
$userAccess = UserAccess::getInstance($global_user_id);
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 seznam anket in polje za dodajanje na prvi strani
*
*/
function displaySeznamAnket(){
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 == 'https://www.1ka.si/' || $site_url == 'http://test.1ka.si/' || $site_url == 'https://1ka.arnes.si/' || ($cookie_domain == '.1ka.si' && $virtual_domain == true))
&& User::getInstance()->getSetting($setting='gdpr_agree') == '-1') {
// Avtomatsko prikazemo po loadu
echo '';
}
echo '
';
echo '
';
echo '
';
$SL->display_tabs();
echo '
';
echo '
';
# smo v knjižnici
$SL->display_sub_tabs();
// 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;
//return '<iframe id="1ka" src="'.$site_url.'main/survey/index.php?anketa='.$this->anketa.'" scrolling="auto" frameborder="0" width="100%"></iframe><script type="text/javascript">function r(){var a=window.location.hash.replace("#","");if(a.length==0)return;document.getElementById("1ka").style.height=a+"px";window.location.hash=""};window.setInterval(\\\'r()\\\',100);</script>';
$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 '
';
}
// 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 '
';
echo '';
}
// zbrisemo iz clipboarda (kukija)
if ($spremenljivka == -1) {
setcookie('srv_clipboard_' . $this->anketa, '', time() - 3600);
setcookie('srv_cut_' . $this->anketa, '', time() - 3600);
echo '';
}
}
/**
* @desc prestevilci variable vseh vprasanj v anketi
*/
function prestevilci($spremenljivka = 0, $all = false)
{
Common::getInstance()->Init($this->anketa);
Common::getInstance()->prestevilci($spremenljivka, $all);
}
/**
* @desc prestevilci ife
*/
function prestevilci_if($parent = 0, & $number = 1)
{
Common::getInstance()->Init($this->anketa);
Common::getInstance()->prestevilci_if($parent, $number);
}
/**
* @desc popravi celotno anketo
*/
function repareAnketa($anketa = 0)
{
if ($anketa == 0)
$anketa = $this->anketa;
Common::repareAnketa($anketa);
}
/**
* @desc popravi vrstni red v tabeli srv_grupa
*/
function repareGrupa($anketa)
{
Common::repareGrupa($anketa);
}
/**
* @desc popravi vrstni red v tabeli srv_spremenljivka
*/
function repareSpremenljivka($grupa)
{
Common::repareSpremenljivka($grupa);
}
/**
* @desc popravi vrstni red v tabeli srv_vrednost
*/
function repareVrednost($spremenljivka)
{
Common::repareVrednost($spremenljivka);
}
/**
* @desc preveri pravice trenutnega userja za urejanje ankete
*/
function checkDostop($anketa = 0)
{
$d = new Dostop();
return $d->checkDostop($anketa);
}
/**
* preveri nivo dostopa za uporabnika (ce je aktiven ali pasiven)
*/
function checkDostopAktiven($anketa = 0)
{
$d = new Dostop();
return $d->checkDostopAktiven($anketa);
}
/**
* @desc Vrne ID trenutnega uporabnika (ce ni prijavljen vrne 0)
*/
function uid()
{
global $global_user_id;
return $global_user_id;
}
/**
* @desc Vrne vse uporabnike iz baze
*/
static function db_select_users()
{
return sisplet_query("SELECT name, surname, id, email FROM users ORDER BY name ASC");
}
/**
* @desc Vrne podatke o uporabniku
*/
static function db_select_user($uid)
{
return sisplet_query("SELECT * FROM users WHERE id='$uid'");
}
/**
* TODO ???
*
* @param mixed $spremenljivka
*/
function addMissingGrids($spremenljivka)
{
$row = Cache::srv_spremenljivka($spremenljivka);
$maxGrids = $row['grids'];
// najprej pobrišemo polja 99,98,97 (na koncu jih spet dodamo)
$deleteString = "DELETE FROM srv_grid WHERE spr_id='" . $spremenljivka . "' AND (id IN (99,98,97))";
$sqlD = sisplet_query($deleteString);
$sqlGrids = sisplet_query("SELECT id, vrstni_red FROM srv_grid WHERE spr_id='$spremenljivka' ORDER BY id");
$countGrids = mysqli_num_rows($sqlGrids);
// če imamo v gridu več spremenljivk kot jih rabimo jih pobrišemo
if ($countGrids > $maxGrids) {
$deleteString = "DELETE FROM srv_grid WHERE spr_id='" . $spremenljivka . "' AND id > $maxGrids";
$deleteQuery = sisplet_query($deleteString);
}
// dodamo manjkajoče spremenljivke
if ($countGrids < $maxGrids) {
for ($i = $countGrids + 1; $i <= $maxGrids; $i++) {
$rowG = mysqli_fetch_array($sqlGrids);
if ($rowG['vrstni_red'] != $i) {
//nastavimo id na najvecji v vprasanju
$sqlID = sisplet_query("SELECT MAX(id) FROM srv_grid WHERE spr_id='$spremenljivka' ");
$rowID = mysqli_fetch_array($sqlID);
$newId = $rowID['MAX(id)'] + 1;
$insertString = "INSERT INTO srv_grid (id, spr_id, vrstni_red, variable) VALUES ('$newId', '$spremenljivka', '$i', '$i')";
$sqlInsert = sisplet_query($insertString);
}
}
}
$this->repareVrednost($spremenljivka);
// nato samo še dodamo sistemske če je potrebno
$_otherStatus = array(99 => "-99", 98 => "-98", 97 => "-97");
$_otherStatusFields = array(
99 => 'undecided',
98 => 'rejected',
97 => 'inappropriate'
);
$_otherStatusDefaults = array(
99 => 'Ne vem',
98 => 'Zavrnil',
97 => 'Neustrezno'
);
$_updateState = "";
foreach ($_otherStatus as $status => $statusVariable) {
// dodamo samo če je čekirano polje v spremenljivki
if ($row[$_otherStatusFields[$status]] == 1) {
$sqlUD = sisplet_query("SELECT id FROM srv_grid WHERE spr_id='$spremenljivka' AND vrstni_red='" . $status . "'");
$rowUD = mysqli_fetch_array($sqlUD);
if ($rowUD == FALSE) {
$sqlUD2 = sisplet_query("SELECT MAX(vrstni_red) FROM srv_grid WHERE spr_id='$spremenljivka' ");
$rowUD2 = mysqli_fetch_array($sqlUD2);
//nastavimo id na najvecji v vprasanju
$id = $rowUD2['MAX(vrstni_red)'] + 1;
//vnesemo polje (ne vem, zavrnil, neustrezno) v bazo (default vrednosti: NE VEM, vrstni_red 99, variable 99
$sqlUD3String = "INSERT INTO srv_grid (id, spr_id, naslov, vrstni_red, variable) " .
"VALUES ('$status', '$spremenljivka', '" . $_otherStatusDefaults[$status] . "', '" . $status . "', '" . $statusVariable . "')";
$sqlUD3 = sisplet_query($sqlUD3String);
}
}
}
}
/**
* TODO ???
*
* @param mixed $spremenljivka
*/
function getSpremenljivkaZaporedna($spremenljivka)
{
$rowSpr = Cache::srv_spremenljivka($spremenljivka);
// Preštejemo koliko vprašanj je bilo do sedaj na prejšnih straneh
$sqlg = sisplet_query("SELECT vrstni_red FROM srv_grupa WHERE id='" . $rowSpr['gru_id'] . "'");
$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='$this->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'];
// preštejemo katera premenljivka je trenutna
$stringCountPast = "SELECT count(*) as cnt FROM srv_spremenljivka WHERE gru_id = '" . $rowSpr['gru_id'] . "' AND vrstni_red <= '" . $rowSpr['vrstni_red'] . "' ORDER BY vrstni_red ASC";
$sqlCountPast = sisplet_query($stringCountPast);
$rowCountPast = mysqli_fetch_assoc($sqlCountPast);
return $offset + $rowCountPast['cnt'];
}
/**
* @desc Če je anketa aktivna, preverimo da ni slučajno potekel čas aktivnosti,
* če je, jo deaktiviramo
*/
function checkSurveyActive($anketa = null)
{
// pretecena anketa, kontroliramo datum na: starts in expire
sisplet_query("UPDATE srv_anketa SET active = '0' WHERE id='" . ($anketa ? $anketa : $this->anketa) . "' AND active = '1' AND expire < CURDATE()");
SurveyInfo:: getInstance()->SurveyInit($this->anketa);
// vsilimo refresh podatkov
SurveyInfo:: getInstance()->resetSurveyData();
$sqls = sisplet_query("SELECT active FROM srv_anketa WHERE id='" . ($anketa ? $anketa : $this->anketa) . "'");
$rows = mysqli_fetch_assoc($sqls);
return $rows['active'];
}
/**
* preview
*
*/
function getTipPreviewHtml(){
global $lang;
global $global_user_id;
// Preverimo, ce je funkcionalnost v paketu, ki ga ima uporabnik
$userAccess = UserAccess::getInstance($global_user_id);
// tip 9999 - IF
echo '