0){
$row = mysqli_fetch_assoc($sql);
$activity[] = array('starts'=>$row['starts'],'expire'=>$row['expire']);
}
return $activity;
}
static function DisplayInfoBox($showIcons = false) {
global $lang;
global $site_url;
global $global_user_id;
// Ce smo v seznamu anket upostevamo splosni jezik in ne jezik ankete
if(isset($_GET['a']) && $_GET['a'] == 'surveyList_display_info'){
$lang_orig = $lang['id'];
$sql = sisplet_query("SELECT lang FROM users WHERE id = '$global_user_id'");
$row = mysqli_fetch_array($sql);
$lang_admin = $row['lang'];
// Naložimo jezikovno datoteko
if($lang_admin != $lang_orig){
$file = '../../lang/'.$lang_admin.'.php';
include($file);
}
echo '
';
}
echo ''.$lang['srv_status_osnovni'].'
';
// spremenljivk
echo '' . $lang['srv_info_name'] . ':' . self::getSurveyTitle() . '
';
echo '' . $lang['srv_info_type'] . ':' . $lang['srv_vrsta_survey_type_'.self::getSurveyType()] . '
';
echo '' . $lang['srv_info_questions']. ':' .self::getSurveyQuestionCount().'
';
echo '' . $lang['srv_info_variables']. ':' .self::getSurveyVariableCount().'
';
echo '' . $lang['srv_info_answers']. ':' .self::getSurveyAnswersCount().'
';
echo '' . $lang['srv_info_answers_valid']. ':' .self::getSurveyApropriateAnswersCount().'
';
# jezik izpolnjevanja
echo '' . $lang['srv_info_language']. ':'.self::getRespondentLanguage().'
';
echo '' . ($showIcons ? ' ' : '' )
. $lang['srv_info_author']. ':' .self::getSurveyInsertEmail();
if (self::getSurveyInsertDate() && self::getSurveyInsertDate() != "00.00.0000")
echo self::$dateTimeSeperator . self::getSurveyInsertDate();
if (self::getSurveyInsertTime() && self::getSurveyInsertTime() != "00:00:00")
echo self::$dateTimeSeperator . self::getSurveyInsertTime();
echo '
';
echo '' . ($showIcons ? ' ' : '' )
. $lang['srv_info_modify']. ':' .self::getSurveyEditEmail();
if (self::getSurveyEditDate() && self::getSurveyEditDate() != "00.00.0000")
echo self::$dateTimeSeperator . self::getSurveyEditDate() ;
if (self::getSurveyEditTime() && self::getSurveyEditTime() != "00:00:00")
echo self::$dateTimeSeperator . self::getSurveyEditTime();
echo '
';
$dostop = self::getSurveyAccessUsers();
// dostop, Kdo razen avtorja ima dostop
if ($dostop) {
$cnt=0;
foreach ( $dostop as $user) {
if ($cnt==0) {
echo '';
echo ($showIcons ? ' ' : '');
echo $lang['srv_info_access']. ': '.$user['name']." (".$user['email'].")
";
}
else
echo ''.$user['name']." (".$user['email'].')
';
$cnt++;
}
}
// aktivnost
echo '';
echo ($showIcons ? ' ' : '');
echo $lang['srv_info_activity']. ': ';
$activity = self:: getSurveyActivity();
if (is_countable($activity) && count($activity) > 0 ) {
$prefix = '';
foreach ($activity as $active) {
$_starts = explode('-',$active['starts']);
$_expire = explode('-',$active['expire']);
echo $prefix.$_starts[2].'.'.$_starts[1].'.'.$_starts[0].'-'.$_expire[2].'.'.$_expire[1].'.'.$_expire[0];
$prefix = '; ';
}
}
else {
echo $lang['srv_anketa_noactive2'].'!';
}
echo "
";
// prvi / zadnj vnos
if (trim(self::getSurveyFirstEntryDate()) != '') {
echo '';
echo ($showIcons ? ' ' : '');
echo $lang['srv_info_first_entry']. ': ' . self::getSurveyFirstEntryDate() . self::$dateTimeSeperator .self::getSurveyFirstEntryTime() . '
';
}
if (trim(self::getSurveyLastEntryDate()) != '') {
echo '';
echo ($showIcons ? ' ' : '');
echo $lang['srv_info_last_entry']. ': ' . self::getSurveyLastEntryDate() . self::$dateTimeSeperator . self::getSurveyLastEntryTime() . '
';
}
echo '
';
$link = $site_url.'admin/survey/index.php?anketa=' . self::$surveyId.'&a=reporti';
echo ''.$lang['srv_more'].' >>';
// Ce smo v seznamu anket upostevamo splosni jezik in ne jezik ankete
if(isset($_GET['a']) && $_GET['a'] == 'surveyList_display_info'){
// Naložimo originalno jezikovno datoteko
if($lang_admin != $lang_orig){
$file = '../../lang/'.$lang_orig.'.php';
include($file);
}
}
}
static function doVariablesCount($query){
// zloopamo skozi vprašanja in za vsako vprašan je preberemo št variabel
$cnt= 0;
while ($rowVprasanje = mysqli_fetch_assoc($query)) {
$spr_id= $rowVprasanje['id'];
// v odvisnosti od tipa vprašanja pohandlamo podatke
switch ( $rowVprasanje['tip'] ) {
case 1: // radio
case 3: // dropdown
$cnt++; // za sam header
$sqlSrvVred = self::select_sql_vrednost($rowVprasanje['id']);
while ( $rowSrvVred = mysqli_fetch_assoc($sqlSrvVred) ) {
if ($rowSrvVred['other'] == 1)
{
$cnt++; // za text polje
}
}
break;
case 2: // checkbox
case 6: // multigrid
case 18: // vsota
case 17: // ranking
case 21: // text*
$sqlSrvVred = self::select_sql_vrednost($rowVprasanje['id']);
while ( $rowSrvVred = mysqli_fetch_assoc($sqlSrvVred) ) {
$cnt++; // za vsako variablo
if ($rowSrvVred['other'] == 1) {
$cnt++; // za text polje (polj edrugo še ima tekstovni vnos
}
}
break;
case 4: // text
case 8: // datum
case 7: // number
case 22:// compute
case 25:// kvota
$cnt++;
if ( $rowVprasanje['tip'] == 7 && $rowVprasanje['size'] != 1 ) {
$cnt+=2;
}
break;
case 16: // multicheckbox
case 19: // multitext
case 20: // multinumber
$cnt++; // za sam header
$sqlSrvVred = self::select_sql_vrednost($spr_id);
//gridi s katerimi sestavljamo header (vrstica_grid)
while ( $rowSrvVred = mysqli_fetch_assoc($sqlSrvVred) ) {
//loop cez gride znotraj ene vrstice - ponovimo za vsako vrstico
$sqlSrvGrid = self::select_sql_grid($spr_id);
while ( $colSrvVred = mysqli_fetch_assoc($sqlSrvGrid) ) {
$cnt++;
}
if ($rowSrvVred['other'] == 1) {
$cnt++;
}
}
break;
// lokacija
case 26:
if($rowVprasanje['enota'] == 3){
$sqlSrvVred = self::select_sql_vrednost($rowVprasanje['id']);
while ( $rowSrvVred = mysqli_fetch_assoc($sqlSrvVred) ) {
$cnt++; // za vsako variablo
}
}
else
$cnt++; // moja lokacija in multilokacija je 1
break;
// heatmap
case 27:
$cnt++; // za koordinate
$sqlSrvVred = self::select_sql_vrednost($rowVprasanje['id']);
while ( $rowSrvVred = mysqli_fetch_assoc($sqlSrvVred) ) { //za morebitna obmocja
$cnt++; // za vsako variablo
if ($rowSrvVred['other'] == 1) {
$cnt++; // za text polje (polj edrugo še ima tekstovni vnos
}
}
break;
} // end switch
} // end while
return $cnt;
}
// pointerji do vrednosti zaradi hitrosti
/**
* @desc vrne sisplet_query za podan spr_id. v bistvu kesramo queryje, ker jih uporabljamo (zlo pogosto) v izpisu
*/
//static private $otherCondition = ' AND other NOT IN (99,98,97,96)';
static private $otherCondition = '';
private static $_select_sql_vrednost = array();
static function select_sql_vrednost ($spr_id) {
if ( isset(self::$_select_sql_vrednost[$spr_id]) ) {
// resetiramo pointer in vrnemo ke�iran query
if (mysqli_num_rows(self::$_select_sql_vrednost[$spr_id]))
mysqli_data_seek(self::$_select_sql_vrednost[$spr_id], 0);
return self::$_select_sql_vrednost[$spr_id];
}
else {
self::$_select_sql_vrednost[$spr_id] = sisplet_query("SELECT * FROM srv_vrednost WHERE spr_id='".$spr_id."' AND vrstni_red > 0".self::$otherCondition." ORDER BY vrstni_red ASC");
return self::$_select_sql_vrednost[$spr_id];
}
}
/**
* @desc vrne sisplet_query za podan spr_id. v bistvu kesramo queryje, ker jih uporabljamo (zlo pogosto) v izpisu
*/
private static $_select_sql_grid = array();
static function select_sql_grid ($spr_id) {
if ( isset(self::$_select_sql_grid[$spr_id]) ) {
// resetiramo pointer in vrnemo ke�iran query
if (mysqli_num_rows(self::$_select_sql_grid[$spr_id]))
mysqli_data_seek(self::$_select_sql_grid[$spr_id], 0);
return self::$_select_sql_grid[$spr_id];
}
else {
self::$_select_sql_grid[$spr_id] = sisplet_query("SELECT * FROM srv_grid WHERE spr_id='".$spr_id."' ORDER BY vrstni_red");
return self::$_select_sql_grid[$spr_id];
}
}
/**
* vrne URL naslov ankete (lahko je lep :) )
*
*/
static private $surveyLink = array();
static function getSurveyLink ($anketa = false, $uporabnost = true) {
global $site_url;
if ($anketa == false)
$anketa = self::$surveyId;
$anketa_string = self::getSurveyHash();
if ( ! isset( self::$surveyLink[$anketa_string] ) ) {
$sqll = sisplet_query("SELECT link FROM srv_nice_links WHERE ank_id = '".$anketa."' ORDER BY id ASC LIMIT 1");
if (mysqli_num_rows($sqll) > 0) {
$rowl = mysqli_fetch_array($sqll);
$link = $site_url . $rowl['link'] ;
}
else {
if (self::checkSurveyModule('uporabnost') && $uporabnost == true) // na redirectih pa v form action ne sme it na uporabnost (ker se odpira znotraj frama)
$link = $site_url.'main/survey/uporabnost.php?anketa=' . $anketa_string;
else
$link = $site_url.'a/' . $anketa_string ;
}
self::$surveyLink[$anketa_string] = $link;
}
return self::$surveyLink[$anketa_string];
}
static function getRawSurveyLink ($uporabnost = true) {
global $site_url;
$anketa_string = self::getSurveyHash();
if (self::checkSurveyModule('uporabnost') && $uporabnost == true) // na redirectih pa v form action ne sme it na uporabnost (ker se odpira znotraj frama)
return $site_url.'main/survey/uporabnost.php?anketa=' . $anketa_string;
else
return $site_url.'a/' . $anketa_string ;
}
static function getRespondentLanguage() {
global $lang;
$lang_resp = SurveyInfo::getSurveyColumn('lang_resp');
if ($lang['id'] <> $lang_resp && $lang_resp > 0) {
$lang_old= $lang;
$file = dirname(__FILE__).'/../../../lang/'.$lang_resp.'.php';
if (file_exists($file)) {
include($file);
$_lang_name = $lang['language'];
$lang = $lang_old;
}
} else {
$_lang_name = $lang['language'];
}
$p = new Prevajanje(self::$surveyId);
$arr = $p->get_all_translation_langs();
$dodatni = '';
foreach ($arr AS $l) {
if ($dodatni != '') $dodatni .= ', ';
$dodatni .= $l;
}
if ($dodatni != '') $_lang_name .= ' ('.$dodatni.')';
return $_lang_name;
}
/**
* Polovimo vse module, ki so vklopljeni na anketi
*/
public static function getSurveyModules($ime = null) {
global $global_user_id;
if (!self::$surveyModules) {
$modules = array();
$userAccess = UserAccess::getInstance($global_user_id);
$sql = sisplet_query("SELECT modul, vrednost FROM srv_anketa_module WHERE ank_id='".self::getSurveyId()."'");
while($row = mysqli_fetch_array($sql)){
$module_availible = true;
// Preverimo, ce je modul omogocen v placljivem paketu
switch($row['modul']){
case 'uporabnost':
if(!$userAccess->checkUserAccess($what='uporabnost'))
$module_availible = false;
break;
case 'quiz':
if(!$userAccess->checkUserAccess($what='kviz'))
$module_availible = false;
break;
case 'voting':
if(!$userAccess->checkUserAccess($what='voting'))
$module_availible = false;
break;
case 'social_network':
if(!$userAccess->checkUserAccess($what='social_network'))
$module_availible = false;
break;
case 'slideshow':
if(!$userAccess->checkUserAccess($what='slideshow'))
$module_availible = false;
break;
case 'phone':
if(!$userAccess->checkUserAccess($what='telephone'))
$module_availible = false;
break;
case 'chat':
if(!$userAccess->checkUserAccess($what='chat'))
$module_availible = false;
break;
case 'panel':
if(!$userAccess->checkUserAccess($what='panel'))
$module_availible = false;
break;
}
// Ce je modul na voljo v paketu, ga dodamo v array
if($module_availible)
$modules[$row['modul']] = $row['vrednost'];
}
self::$surveyModules = $modules;
}
if(!is_null($ime) && isset(self::$surveyModules[$ime]))
return self::$surveyModules[$ime];
elseif(!is_null($ime) && sizeof(self::$surveyModules) == 0)
return 0;
else
return self::$surveyModules;
}
/**
* Preverimo, ce je specificen modul vklopljen na anketi
*/
public static function checkSurveyModule($module, $anketa_id = null) {
global $global_user_id;
if(is_null($anketa_id))
$anketa_id = self::getSurveyId();
if($anketa_id > 0 && $module != ''){
// Preverimo, ce je modul omogocen v placljivem paketu
$userAccess = UserAccess::getInstance($global_user_id);
switch($module){
case 'uporabnost':
if(!$userAccess->checkUserAccess($what='uporabnost'))
return false;
break;
case 'quiz':
if(!$userAccess->checkUserAccess($what='kviz'))
return false;
break;
case 'voting':
if(!$userAccess->checkUserAccess($what='voting'))
return false;
break;
case 'social_network':
if(!$userAccess->checkUserAccess($what='social_network'))
return false;
break;
case 'slideshow':
if(!$userAccess->checkUserAccess($what='slideshow'))
return false;
break;
case 'phone':
if(!$userAccess->checkUserAccess($what='telephone'))
return false;
break;
case 'chat':
if(!$userAccess->checkUserAccess($what='chat'))
return false;
break;
case 'panel':
if(!$userAccess->checkUserAccess($what='panel'))
return false;
break;
}
if (!self::$surveyModules) {
$sql = sisplet_query("SELECT EXISTS (SELECT 1 FROM srv_anketa_module WHERE ank_id='".$anketa_id."' AND modul='".$module."')");
$row = mysqli_fetch_array($sql);
if($row[0] > 0)
return true;
else
return false;
}
else{
if(isset(self::$surveyModules[$module]) && self::$surveyModules[$module] > 0)
return true;
else
return false;
}
}
else
return false;
}
// Vrnemo pripeto ime tabele s podatki ce gre za arhivsko ali aktivno anketo (_active, archive1, archive2...)
public static function getSurveyArchiveDBString() {
$db_table = self::getSurveyColumn('db_table');
switch($db_table){
// Arhivska 1
case '0':
$db_table_string = '_archive1';
break;
// Arhivska 2
case '2':
$db_table_string = '_archive2';
break;
// Arhivska 3
case '3':
$db_table_string = '_archive3';
break;
// Aktivna anketa
case '1':
default:
$db_table_string = '_active';
break;
}
return $db_table_string;
}
// Preverimo, ce je anketa ze potekla oz. bi se morala avtomatsko aktivirati
public static function checkSurveyActive(){
$anketa = self::$surveyId;
$active = self::getSurveyActive();
$starts = self::getSurveyStartsDate();
$expire = self::getSurveyExpireDate();
$currentDate = new DateTime();
$startDateTime = new DateTime($starts . ' 00:00:00');
$endDateTime = new DateTime($expire . ' 23:59:59');
// Anketa je aktivna - pogledamo, ce jo moramo deaktivirati
if($active == '1' && ($currentDate < $startDateTime || $currentDate > $endDateTime)){
// pretecena anketa, kontroliramo datum na: starts in expire
sisplet_query("UPDATE srv_anketa SET active='0' WHERE id='".$anketa."'");
SurveyInfo:: getInstance()->SurveyInit($anketa);
// vsilimo refresh podatkov
SurveyInfo:: getInstance()->resetSurveyData();
$active = '0';
}
// Anketa ni aktivna - pogledamo, ce jo moramo aktivirati
/*elseif($active == '0' && $currentDate >= $startDateTime && $currentDate <= $endDateTime){
// neaktivna anketa, kontroliramo datum na: starts in expire
sisplet_query("UPDATE srv_anketa SET active='1' WHERE id='".$anketa."'");
SurveyInfo:: getInstance()->SurveyInit($anketa);
// vsilimo refresh podatkov
SurveyInfo:: getInstance()->resetSurveyData();
$active = '1';
}*/
return $active;
}
}
?>