';
//Zlistamo vse lepe url-je
$title = 0;
$sqll = sisplet_query("SELECT id, link FROM srv_nice_links WHERE ank_id = '$this->anketa' ORDER BY id ASC");
while ($rowl = mysqli_fetch_assoc($sqll)) {
if ($title == 0) {
echo '
'.$lang['srv_publication_survey_niceurl'].'
';
$title = 1;
}
$link_nice = $site_url . $rowl['link'];
echo '
';
echo '
'.$link_nice.''.(count($lang_array) > 0 ? ' - '.$base_lang_resp : '');
echo '
';
echo '
';
echo '
';
}
echo '
'.$lang['srv_publication_survey_grouplang'].'
';
// Navaden url
$row = SurveyInfo::getInstance()->getSurveyRow();
$p->include_lang($p->lang_resp);
$base_lang_resp = $lang['language'];
$p->include_base_lang();
$link1 = $site_url.'a/'.$row['hash'];
echo '
';
echo '
'.$link1.''.(count($lang_array) > 0 ? ' - '.$base_lang_resp : '');
echo '
';
echo '
';
// Imamo vec linkov za skupine
$ss = new SurveySkupine($this->anketa);
$spr_id = $ss->hasSkupine();
if($spr_id > 0){
$vrednosti = $ss->getVrednosti($spr_id);
foreach($vrednosti as $vrednost){
$link_skupine = isset($vrednost['nice_url']) ? $vrednost['nice_url'] : $vrednost['url'];
echo '
';
echo '
'.$link_skupine.''.(count($lang_array) > 0 ? ' - '.$base_lang_resp : '').' - '.$vrednost['naslov'];
echo '
';
echo '
';
}
}
// Imamo vec linkov za jezike
if (count($lang_array) > 0) {
foreach ($lang_array AS $lang_id => $lang_name) {
echo '
';
if($spr_id > 0){
foreach($vrednosti as $vrednost){
$link_skupine = isset($vrednost['nice_url']) ? $vrednost['nice_url'] : $vrednost['url'];
echo '
';
}
}
}
}
}
function displayInvSurveyPopup() {
global $lang;
echo '
';
}
/**
* nastavitve za obveščanje na email
*
*/
function email_nastavitve ($show_fieldset = true) {
global $lang;
global $site_url;
global $site_path;
global $admin_type;
global $global_user_id;
$row = SurveyInfo::getInstance()->getSurveyRow();
# echo '
';
// če ni aktivna damo opozorilo
echo '
';
echo '
';
if ($_GET['s'] == '1') {
echo '
';
echo '';
}
#echo '
';
}
/**
* vrne kodo ankete, ki se jo uporabi za embed
*
*/
function getEmbed ($js = true) {
global $site_url;
$link = SurveyInfo::getSurveyLink();
SurveyInfo::getInstance()->SurveyInit($this->anketa);
$row = SurveyInfo::getInstance()->getSurveyRow();
$iframe = '
';
$javascript = '';
if ($js)
return htmlentities($iframe.$javascript, ENT_QUOTES);
else
return htmlentities($iframe, ENT_QUOTES);
}
/**
* vrne kodo ankete, ki se jo uporabi za popup embed
*
*/
function getPopup () {
global $site_url;
$link = SurveyInfo::getSurveyLink().'&popup=1';
SurveyInfo::getInstance()->SurveyInit($this->anketa);
$row = SurveyInfo::getInstance()->getSurveyRow();
$javascript = '';
// Dodatek ce bomo delali se naprej popup embed (cross domain problem)
//if(window.addEventListener){window.addEventListener("message", function(e){if(e.data == "closePopup"){document.getElementById("popup_iframe").remove();document.getElementById("popup_div").remove();}});}
return htmlentities($javascript, ENT_QUOTES);
}
/**
* @desc prika?e nastavitve alerta za formo
*/
function alert_nastavitve() {//OSTANE
global $lang;
global $site_url;
global $admin_type;
$anketa = $this->anketa;
$preklici_url = ltrim(str_replace("&s=1","",$_SERVER['REQUEST_URI']),"/");
$preklici_url = "'". $site_url . $preklici_url . "'";
/* moznosti:
* 'complete' -> obvsetilo o izpolnjeni anketi (respondent, respondent iz cms, avtor + dostop, dodatn-emaili)
* 'delete' -> obvestilo o izbrisani anketi (avtor + dostop, dodatni -emaili)
* 'active' -> obvestilo o aktivnosti, neaktivnosti ankete (avtor + dostop, dodatni -emaili)
* 'expire' -> obvestilo o izteku ankete (avtor + dostop, dodatni -emaili)
* 'email_server' -> nastavitve mail streznika
*/
if ( isset($_GET['m']) && $_GET['m'] != "") {
$tab = $_GET['m'];
}
else {
$tab = $_GET['m'] = 'complete';
}
// preberemo nastavitve alertov
$sqlAlert = sisplet_query("SELECT * FROM srv_alert WHERE ank_id = '$anketa'");
if (!$sqlAlert)
echo mysqli_error($GLOBALS['connect_db']);
if (mysqli_num_rows($sqlAlert) > 0) {
$rowAlert = mysqli_fetch_array($sqlAlert);
}
else {
SurveyAlert::getInstance()->Init($anketa, $global_user_id);
$rowAlert = SurveyAlert::setDefaultAlertBeforeExpire();
}
$days = $rowAlert['expire_days'];
$sqlS = sisplet_query("SELECT id, expire, survey_type, insert_uid, DATE_SUB(expire,INTERVAL $days DAY) as newdate FROM srv_anketa WHERE id = '$anketa'");
if (!$sqlS) echo mysqli_error($GLOBALS['connect_db']);
$rowS = mysqli_fetch_array($sqlS);
$rowAlert['newdate'] = $rowS['newdate'];
$sqlu = sisplet_query("SELECT email FROM users WHERE id = '$rowS[insert_uid]'");
$rowu = mysqli_fetch_array($sqlu);
$MailReply = $rowu['email'];
$custom_alert = array();
$sql_custom_alert = sisplet_query("SELECT uid, type FROM srv_alert_custom WHERE ank_id = '$this->anketa'");
while ($row_custom_alert = mysqli_fetch_array($sql_custom_alert)) {
$custom_alert[$row_custom_alert['type']][$row_custom_alert['uid']] = 1;
}
if ($tab == 'complete') {
//Obveščanje o izpolnjeni anketi
echo '
';
} else if ($tab == 'expired') {
global $site_path, $global_user_id;
//Obveščanje o izteku ankete
echo '
';
}
// Obveščanje o spremembi aktivnosti ankete
else if ($tab == 'active') {
echo '
';
}
else if ($tab == 'delete') {
echo '
';
} else if ($tab == 'email_server') {
// Gorenje tega nima
if (!Common::checkModule('gorenje') && $admin_type == '0')
$this->viewServerSettings();
} else {
print_r($tab);
}
?>
';
echo '
';
$row = SurveyInfo::getInstance()->getSurveyRow();
// Opozorilo, ce imamo vklopljena vabila, da gre za iste nastavitve
$isEmail = (int)SurveyInfo::getInstance()->checkSurveyModule('email');
if($isEmail)
echo '
'.$lang['srv_email_server_settings_warning'].'
';
echo '
';
echo '';
// Gumb shrani
echo '
';
// Gumb preveri nastavitve
echo '
';
if ($_GET['s'] == '1') {
echo '
';
echo '';
}
}
/**
* @desc poslje maile userjem iz baze
*/
function usermailing() {//OSTANE
global $lang;
global $site_url;
global $site_path;
global $global_user_id;
// preverimo aktivnost
//$sql = sisplet_query("SELECT active FROM srv_anketa WHERE id = '$this->anketa'");
//$row = mysqli_fetch_array($sql);
$row = SurveyInfo::getInstance()->getSurveyRow();
// ce ne postamo ali ce anketa ni aktivna
if (!isset ($_POST['mailto']) || ($row['active'] != 1)) {
echo '
';
echo '
';
$sa = new SurveyAdmin(1, $this->anketa);
$sa->show_mailto_users('all', null);
echo '
';
} else { // pošljemo emaile
$errorMsg = null;
//v odvisnosti od statusa polovimo emaile
$mailto_radio = $_POST['mailto'];
$mailto_status = (isset ($_POST['mailto_status']) && count($_POST['mailto_status']) > 0) ? implode(",", $_POST['mailto_status']) : null;
$sa = new SurveyAdmin(1, $this->anketa);
$arrayMailtoSqlString = $sa->getMailtoSqlString($mailto_radio, $mailto_status);
$errorMsg = $arrayMailtoSqlString['errorMsg'];
$sqlString = $arrayMailtoSqlString['sqlString'];
// preberemo tekst za trenutno anketo
$subject = "";
$text = "";
$sql_userbase_email = sisplet_query("SELECT * FROM srv_userbase_setting WHERE ank_id = '$this->anketa'");
if (mysqli_num_rows($sql_userbase_email) > 0) {
// anketa že ima nastavljen text
$row_userbase_email = mysqli_fetch_array($sql_userbase_email);
} else {
// anketa še nima nastavljenega teksta, preberemo privzetega (id=1) iz tabele srv_userbase_invitations
$sql_userbase_invitations = sisplet_query("SELECT * FROM srv_userbase_invitations WHERE id = 1");
$row_userbase_email = mysqli_fetch_array($sql_userbase_invitations);
}
if ($row_userbase_email['replyto'] == '') {
$sqluu = sisplet_query("SELECT email FROM users WHERE id = '$global_user_id'");
$rowuu = mysqli_fetch_array($sqluu);
$row_userbase_email['replyto'] = $rowuu['email'];
}
// poiščemo sistemske spremenljivke iz vsebine
preg_match_all( "/#(.*?)#/s", $row_userbase_email['text'], $sisVars);
// poiščemo sistemske spremenljivke iz vsebine
$sisVars =$sisVars[1];
// Poiščemo še sistemske spremenljivke iz ankete
$sqlSistemske = sisplet_query("SELECT s.id, s.naslov, s.variable FROM srv_spremenljivka s, srv_grupa g WHERE s.sistem='1' AND s.gru_id=g.id AND g.ank_id='".$this->anketa."' ORDER BY g.vrstni_red, s.vrstni_red");
if (mysqli_num_rows($sqlSistemske) > 0) {
while ($rowSistemske = mysqli_fetch_assoc($sqlSistemske)) {
if (!isset($sisVars[strtoupper($rowSistemske['variable'])]))
$sisVars[] = strtoupper($rowSistemske['variable']);
}
}
$sql_userbase = sisplet_query("SELECT MAX(b.tip) AS tip FROM srv_userbase b, srv_user u WHERE b.usr_id=u.id AND u.ank_id='$this->anketa'");
if (!$sql_userbase)
echo mysqli_error($GLOBALS['connect_db']);
$row_userbase = mysqli_fetch_array($sql_userbase);
$tip = $row_userbase['tip'] + 1;
if ($errorMsg == null) {
$sql = sisplet_query($sqlString);
// preprečimo izisovanje warningov
$warnings_msg = "";
$send_success = array ();
$send_errors = array ();
// ob_start();
// $htmlContent = ob_get_contents();
// ob_start();
$cnt = 0;
while ($row = mysqli_fetch_array($sql)) {
// dodamo sistemske spremenljivke in poiščemo njihove vrednosti
$userSysData = array();
foreach ( $sisVars as $sysVar ) {
$sqlUser = sisplet_query("SELECT d.text FROM srv_data_text".$this->db_table." d, srv_spremenljivka s , srv_grupa g
WHERE d.spr_id=s.id AND d.usr_id='" . $row['id'] . "' AND
s.variable = '".strtolower($sysVar)."' AND g.ank_id='" . $this->anketa . "' AND s.sistem = 1 AND s.gru_id=g.id
");
if (!$sqlUser)
echo mysqli_error($GLOBALS['connect_db']);
$rowUser = mysqli_fetch_assoc($sqlUser);
if ($rowUser['text'] != null)
$userSysData[strtolower($sysVar)] = $rowUser['text'];
}
$email = $userSysData['email'];
if (trim($email) != '' && $email != null) {
// shranimo komu in kdaj je kdo poslal mail
sisplet_query("INSERT INTO srv_userbase (usr_id, tip, datetime, admin_id) VALUES ('$row[id]', '$tip', NOW(), '" . $this->uid() . "')");
$url = SurveyInfo::getSurveyLink() . '?code=' . $row['pass'] . '';
if (trim($row['pass']) != '') {
$unsubscribe = $site_url . 'admin/survey/unsubscribe.php?anketa=' . $this->anketa . '&code=' . $row['pass'] . '';
} else {
$unsubscribe = $site_url . 'admin/survey/unsubscribe.php?anketa=' . $this->anketa . '&email=' . trim($email) . '&uid='.$row['id'];
}
// zamenjamo sistemske vrednosti
$content = $row_userbase_email['text'];
// za staro verzijo
$content = str_replace('[URL]', '#URL#', $content);
$content = str_replace('[CODE]', '#CODE#', $content);
$content = str_replace(array (
'#URL#',
'#CODE#',
), array (
'
' . $url . '',
$row['pass'],
), $content);
$content = str_replace('#UNSUBSCRIBE#', '
'.$lang['user_bye_hl'].'', $content);
// poiščemo prestale variable katere je potrebno zamenjati v vsebini
preg_match_all( "/#(.*?)#/s", $content, $toReplace);
foreach ($toReplace[0] as $key => $seed) {
$content = str_replace($toReplace[0][$key], $userSysData[strtolower($toReplace[1][$key])],$content);
}
$subject = $row_userbase_email['subject'];
try
{
$MA = new MailAdapter($this->anketa, $type='alert');
$MA->addRecipients($email);
if ($cnt++ == 0)
{ # en mail pošljemo tudi na enklikanketa
$MA->addRecipients('enklikanketa@gmail.com');
}
$resultX = $MA->sendMail(stripslashes($content), $subject);
}
catch (Exception $e)
{
}
if ($resultX) {
$status = 1; // poslalo ok
$send_success[] = $email;
} else {
$status = 2; // ni poslalo
$send_errors[] = $email;
}
// nastavimo status
sisplet_query("INSERT INTO srv_userstatus (usr_id, tip, status, datetime) VALUES ('$row[id]', '$tip', '$status', NOW())");
# laststatus updejtamo samo če je bil pred tem status 0 - email še ni poslan ali 2 - napaka pri pošiljanju maila
sisplet_query("UPDATE srv_user SET last_status = '$status' WHERE id = '$row[id]' AND last_status IN (0,2)");
}
// počistimo warninge
// ob_end_clean();
// echo $htmlContent;
}
echo '
Spodnje sporočilo:' . $row_userbase_email['subject'] . ',
' . $row_userbase_email['text'] . '
';
if (count($send_success) > 0) {
echo '
je bilo uspešno poslano na naslednje naslove:
';
foreach ($send_success as $email) {
echo $email . ",
";
}
}
if (count($send_errors) > 0) {
echo '
ni bilo uspešno poslano. Pri pošiljanju na naslednje naslove je prišlo do napake:
';
foreach ($send_errors as $email) {
echo $email . ",
";
}
}
//echo '
Done';
// izpipemo warninge na koncu
} else {
echo '

' . $errorMsg . '
';
}
}
}
/**
* @desc prikaze tab Socialna omrezja
*/
function SN_Settings() {
global $lang;
global $site_url;
global $site_path;
echo '
'.$lang['srv_social_settings_text1'].'
';
echo '
'.$lang['srv_social_settings_text2'].$lang['srv_social_settings_text3'].$lang['srv_social_settings_text4'].'
';
echo '
'.$lang['srv_social_settings_text5'].''.$lang['srv_social_settings_text6'].'.
';
// Omrežja so sestavljane vprašanja. Začnejo se iz generatorja imen (name generator). S tem respondent (ego) navede objekte, prijatelje - alterje. , s katerim pridobimo imena pzanke in vprašanj. Druga kompnenta je zanka, ki za vse alterje določenega ega sproži enaka vprašanja. Dretja komponenta so vprašanja. Primer omrežja je tukaj, http://www.1ka.si/a/3510, vprašalnik pa najdemo v knjižnjic med Primerov 1KA anket http://www.1ka.si/admin/survey/index.php?a=knjiznica
}
/**
* @desc prikaze tab arhivi
*/
function arhivi() {
global $lang;
echo '
';
}
function arhivi_data() {
global $lang;
echo '
';
}
function arhivi_testdata() {
global $lang;
echo '
';
}
function arhivi_survey() {
global $lang;
// Izvoz samo ankete
if($_GET['m'] == 'survey'){
echo '
';
}
// Izvoz ankete s podatki
else{
echo '
';
}
}
// Preveri ce gre za prvo popravljanje podatkov in ce da, potem ustvari arhiv podatkov
function checkFirstDataChange($inserted=false){
global $connect_db;
$sql = sisplet_query('SELECT count(*) AS cnt FROM srv_tracking'.$this->db_table.' WHERE ank_id=\''.$this->anketa.'\'
AND (`get` LIKE \'%edit_data%\'
OR (`get` LIKE \'%a: "data", m: "quick_edit"%\' AND `get` LIKE \'%post: "1"%\')
OR (`get` LIKE \'%a: "dataCopyRow"%\')
OR (`get` LIKE \'%a: "dataDeleteMultipleRow"%\')
OR (`get` LIKE \'%a: "dataDeleteRow"%\')
OR (`get` LIKE \'%urejanje: "1"%\' AND status=\'4\'))
ORDER BY datetime DESC');
$row = mysqli_fetch_array($sql);
// Naredimo arhiv podatkov
if($row['cnt'] == 0 || ($inserted && $row['cnt'] == 1)){
SurveyCopy::setSrcSurvey($this->anketa);
SurveyCopy::setSrcConectDb($connect_db);
SurveyCopy::saveArrayFile($data=true);
}
}
/**
* @desc skopira anketo
*/
function anketa_copy($anketa = 0) {//OSTANE
// stara kopija kode je v classu class.SurveyCopy.php na dnu :)
global $connect_db;
if ($anketa > 0)
$this->anketa = $anketa;
$site = $_GET['site'];
SurveyCopy :: setSrcSurvey($this->anketa);
SurveyCopy :: setSrcConectDb($connect_db);
SurveyCopy :: setDestSite($site);
$new_anketa_id = SurveyCopy :: doCopy();
$napake = SurveyCopy :: getErrors();
if (count($napake) > 0)
print_r($napake);
if (!$new_anketa_id)
die("Can not create new survey!");
if (!$site || $site == 0)
return $new_anketa_id;
elseif ($site != -1)
header("Refresh:1; url=index.php?anketa=$this->anketa&a=arhivi");
}
/**
* @desc kreira backup (skopira celotno anketo v novo)
*/
function backup_create($NoRedirect = false) {//OSTANE
$anketa = $this->anketa_copy();
sisplet_query("UPDATE srv_anketa SET backup='$this->anketa', active='0', naslov = CONCAT( naslov, ' ', DAY(NOW()), '.', MONTH(NOW()), '.', YEAR(NOW()) ), intro_opomba='{$_POST['intro_opomba']}' WHERE id='$anketa'");
// vsilimo refresh podatkov
SurveyInfo :: getInstance()->resetSurveyData();
if ($NoRedirect == false) {
header("Refresh:1; url=index.php?anketa=$this->anketa&a=arhivi");
//header("Location: index.php?anketa=$this->anketa&a=arhivi");
}
}
/**
* @desc kreira backup in da obvestilo o uspešnosti (skopira celotno anketo v novo)
*/
function backup_create_popup() {//OSTANE
global $lang;
$anketa = $this->anketa_copy();
sisplet_query("UPDATE srv_anketa SET backup='$this->anketa', active='0', naslov = CONCAT( naslov, ' ', DAY(NOW()), '.', MONTH(NOW()), '.', YEAR(NOW()) ) WHERE id='$anketa'");
// vsilimo refresh podatkov
SurveyInfo :: getInstance()->resetSurveyData();
if ($anketa > 0 || true) {
echo $lang['srv_backup_create_popup_ok'];
}
echo '
'.$lang['srv_backup_create_popup_view'].'';
echo '
'.$lang['srv_backup_create_popup_close'].'';
}
/**
* @desc prenese arhivsko anketo v folderje
*/
function backup_restore() {//OSTANE
$row = SurveyInfo::getInstance()->getSurveyRow();
$active = 0;
$backup = 0;
$sql = sisplet_query("UPDATE srv_anketa SET active='$active', backup='$backup' WHERE id = '$this->anketa'");
// vsilimo refresh podatkov
SurveyInfo :: getInstance()->resetSurveyData();
header("Location: index.php?anketa=$this->anketa");
}
/**
* prikaze tab z opcijami za vnos
*/
function vnos () {
global $lang;
$row = SurveyInfo::getInstance()->getSurveyRow();
echo '
';
echo '
';
echo '
';
echo '
';
echo '
';
echo '';
echo '';
if ($_GET['s'] == '1') {
echo '
';
echo '';
}
}
/**
* @desc prikaze tab za uporabnost - nastavitve
*/
function uporabnost() {
global $site_url;
global $lang;
$preklici_url = ltrim(str_replace("&s=1","",$_SERVER['REQUEST_URI']),"/");
$preklici_url = "'". $site_url . $preklici_url . "'";
SurveySetting::getInstance()->Init($this->anketa);
if (count($_POST) > 0 && (isset($_POST['uporabnost_link']) || isset($_POST['uporabnost_razdeli']))) {
$uporabnost_link = $_POST['uporabnost_link'];
$uporabnost = $_POST['uporabnost'];
sisplet_query("UPDATE srv_anketa SET uporabnost_link = '$uporabnost_link' WHERE id = '$this->anketa'");
$sqlg = sisplet_query("SELECT id FROM srv_grupa WHERE ank_id = '$this->anketa'");
while ($rowg = mysqli_fetch_array($sqlg)) {
if ( isset($_POST['uporabnost_link_'.$rowg['id']])) {
SurveySetting::getInstance()->setSurveyMiscSetting('uporabnost_link_'.$rowg['id'], $_POST['uporabnost_link_'.$rowg['id']]);
}
}
if (isset($_POST['uporabnost_razdeli'])) {
SurveySetting::getInstance()->setSurveyMiscSetting('uporabnost_razdeli', $_POST['uporabnost_razdeli']);
}
// vsilimo refresh podatkov
SurveyInfo :: getInstance()->resetSurveyData();
}
$row = SurveyInfo::getInstance()->getSurveyRow();
echo '
';
echo '
';
// Gumb shrani
echo '
';
echo '';
echo '';
echo '
';
echo '';
}
/**
* @desc prikaze vnose v anketo
*/
function displayIzvozi() {
global $lang, $site_url, $global_user_id;
$sdf = SurveyDataFile::get_instance();
$sdf->init($this->anketa);
$sdf->prepareFiles();
$headFileName = $sdf->getHeaderFileName();
$dataFileName = $sdf->getDataFileName();
$dataFileStatus = $sdf->getStatus();
if ($dataFileStatus== FILE_STATUS_NO_DATA
|| $dataFileStatus == FILE_STATUS_NO_FILE
|| $dataFileStatus == FILE_STATUS_SRV_DELETED){
Common::noDataAlert();
return false;
}
if ($_GET['m'] == 'excel') {
echo '
';
}
/**
* @desc prikaze vnose v anketo
* /
function displayVnosi() {//OSTANE
global $lang;
$row = SurveyInfo::getInstance()->getSurveyRow();
if ($_GET['m'] == 'SN_izvozi') {
echo '
' . "\n\r";
//Excel izvozi
echo '
';
echo '
';
//SPSS izvozi
echo '
';
// EGO
echo '
';
echo '
';
} else { // data iz baze
echo '
' . "\n\r";
$this->displayData();
echo '
';
}
}
*/
/**
* @desc prikaze podatke v tabeli
*/
function displayData() {
global $lang;
global $site_url;
//include_once ('DisplaySurveyData.php');
$dsd = new DisplaySurveyData($this->anketa);
$dsd->display();
}
/**
* @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 vse nepobrisane uporabnike iz baze
*/
private static function db_select_users_forLevel($anketa = null) {
global $global_user_id, $admin_type;
// tip admina: 0=>admin, 1=>manager, 2=>clan, 3=>user
switch ( $admin_type ) {
// admin vidi vse
case 0:
return sisplet_query("SELECT name, surname, id, email FROM users WHERE status!='0' ORDER BY name ASC");
break;
// manager vidi ljudi pod sabo
case 1:
if ($anketa === null)
return sisplet_query("SELECT a.name, a.surname, a.id, a.email FROM users a, srv_dostop_manage m WHERE a.status!='0' AND m.manager='" .$global_user_id ."' AND m.user=a.id");
else
return sisplet_query("SELECT a.name, a.surname, a.id, a.email FROM users a, srv_dostop_manage m WHERE a.status!='0' AND m.manager='" .$global_user_id ."' AND m.user=a.id UNION SELECT u.name, u.surname, u.id, u.email FROM users u, srv_dostop d WHERE d.ank_id='$anketa' AND d.uid=u.id");
break;
case 2:
case 3:
// TODO // clani in userji lahko vidijo samo tiste ki so jim poslali maile in so se registrirali
// ce smo v urejanju nastavitve ankete vidijo vse, ki so dodeljeni anketi, da jim lahko nastavijo
if ($anketa === null)
return sisplet_query("SELECT name, surname, id, email FROM users WHERE 1 = 0");
else
return sisplet_query("SELECT u.name, u.surname, u.id, u.email FROM users u, srv_dostop d WHERE u.status!='0' AND d.ank_id='$anketa' AND d.uid=u.id");
break;
}
return null;
}
function display_dostop_users($show_all=0){
global $global_user_id, $admin_type, $lang;
$avtorRow = SurveyInfo::getInstance()->getSurveyRow();
echo '
'.$lang['srv_dostop_users_list'].'
';
// Prikazemo samo userje ki lahko urejajo anketo
if($show_all == 0){
echo '
' . "\n";
echo '
';
//echo '
'.$lang['srv_dostop_users_removeselected'].'';
}
// Prikazemo vse userje, ki jih lahko uporabnik dodaja
else{
$sql1 = $this->db_select_users_forLevel($this->anketa);
if ( mysqli_num_rows($sql1) > 0 ) {
echo '
'.$lang['srv_dostop_show_all'].'';
echo '
'.$lang['srv_dostop_hide_all'].'';
echo '
' . "\n";
while ($row1 = mysqli_fetch_array($sql1)) {
$sql2 = sisplet_query("SELECT ank_id, uid FROM srv_dostop WHERE ank_id='$this->anketa' AND uid='$row1[id]'");
$checked = (mysqli_num_rows($sql2) > 0) ? ' checked="checked"' : '';
// Da ga ne pocistimo ce je disablan (sam sebe ne more odstranit in avtorja se ne sme odstranit)
if($avtorRow['insert_uid'] == $row1['id'] || $global_user_id == $row1['id'])
echo '
' . "\n";
echo '
' . "\n";
echo '';
if ($checked != '')
echo ' ';
echo '
' . "\n";
}
}
}
}
// Dodajanje uredniskega dostopa do ankete
public function display_add_survey_dostop(){
global $lang;
global $admin_type;
echo '
';
// Admini in managerji lahko dodajo dostop komurkoli
if($admin_type == 0 || $admin_type == 1){
echo $lang['srv_dostop_adduserstxt_admin'].' '.AppSettings::getInstance()->getSetting('app_settings-app_name').'. ';
}
// Ostali uporabniki lahko dodajo dostop samo ze registriranim uporabnikom
else{
echo $lang['srv_dostop_adduserstxt'].' '.AppSettings::getInstance()->getSetting('app_settings-app_name').'! ';
}
// AAI ima poseben link na help
if(isAAI()){
echo $lang['srv_dostop_adduserstxt_aai_more'];
}
echo '
';
echo '
';
echo '
';
echo '';
echo '';
echo '
';
echo '
'.$lang['srv_dostop_adduserstxt_end'].'
';
//Opcijsko sporočilo
echo '
';
echo '
';
echo '';
echo '';
echo '
';
echo '
';
echo '';
echo '
';
echo '
';
// Gumb za dodajanje in posiljanje
echo '
';
echo '';
echo '
';
}
/**
* @desc Vrne podatke o uporabniku
*/
static function db_select_user($uid) {
return sisplet_query("SELECT name, surname, id, email FROM users WHERE id='$uid'");
}
/** Preveri ali uporabnik ustreza minimalni zahtevi statusa
*
* @param $minimum_role_request minimalna zahteva (lahko podamo kot array posamezno)
* @return true/false
*/
function user_role_cehck($minimum_role_request = U_ROLE_ADMIN) {
global $admin_type;
if (is_array($minimum_role_request) && count($minimum_role_request) > 0) { // ce podamo kot array preverimo za vsak zapis posebej
foreach ($minimum_role_request as $role) {
if ($admin_type == $role)
return true;
}
} else {
if ($admin_type <= $minimum_role_request)
return true;
}
return false;
}
var $getSurvey_type = null;
function getSurvey_type($sid) {
if ($this->getSurvey_type != null)
return $this->getSurvey_type;
// polovimo tip ankete
$str_survey_type = sisplet_query("SELECT survey_type FROM srv_anketa WHERE id = '" . $sid . "'");
$row_survey_type = mysqli_fetch_assoc($str_survey_type);
$this->getSurvey_type = $row_survey_type['survey_type'];
return $this->getSurvey_type;
}
/**
* TODO ???
*
* @param mixed $what
* @param mixed $isChecked
* $forma - pri hitirh nastavitvah forme prikazemo nekje krajsi text
*/
function display_alert_label($what, $isChecked = false, $forma = false) {
global $lang, $global_user_id;
$custom_alert = array();
$sql_custom_alert = sisplet_query("SELECT uid, type FROM srv_alert_custom WHERE ank_id = '$this->anketa'");
while ($row_custom_alert = mysqli_fetch_array($sql_custom_alert)) {
$custom_alert[$row_custom_alert['type']][$row_custom_alert['uid']] = 1;
}
switch ($what) {
case 'finish_respondent_language': // respondent ki je zakljucil anketo v drugem jeziku (mu omogocimo nastavljanje custom maila za obvescanje)
if ($isChecked) {
$p = new Prevajanje($this->anketa);
$p->dostop();
$jeziki = $p->get_all_translation_langs();
if(!empty($jeziki)){
$row = SurveyInfo::getInstance()->getSurveyRow();
foreach($jeziki as $key => $jezik){
echo '
';
echo '
';
echo '
';
echo '
';
}
}
}
break;
case 'finish_respondent': // respondent ki je zakljucil anketo
if ($isChecked) {
// preverimo, ali obstaja sistemska spremenljivka email, če ne jo dodamo
$sqlEmail = sisplet_query("SELECT s.sistem, s.variable, s.id FROM srv_spremenljivka s, srv_grupa g WHERE s.sistem='1' AND s.variable='email' AND s.gru_id=g.id AND g.ank_id='$this->anketa'");
$sqlIme = sisplet_query("SELECT s.sistem, s.variable, s.id FROM srv_spremenljivka s, srv_grupa g WHERE s.sistem='1' AND s.variable='ime' AND s.gru_id=g.id AND g.ank_id='$this->anketa'");
// ce sta dodani obe sistemski spremenljivki, je vse ok
$email_ok = $ime_ok = false;
if ( mysqli_num_rows($sqlEmail) > 0 && mysqli_num_rows($sqlIme) > 0) {
$email_ok = $ime_ok = true;
}
else {
// manjka ena ali obe potrebni sistemski spremenljivki
// email je nujen, zato ga dodamo avtomatsko
if ( mysqli_num_rows($sqlEmail) == 0 ) {
//dodamo email
$sa = new SurveyAdmin(1, $this->anketa);
if (in_array('email',$sa->alert_add_necessary_sysvar( array('email') , false))) {
$email_ok = true;
}
// email v tem primeru spremenimo, da je viden, ker gre za alert
$sqlEmail = sisplet_query("SELECT s.id FROM srv_spremenljivka s, srv_grupa g WHERE s.sistem='1' AND s.variable='email' AND s.gru_id=g.id AND g.ank_id='$this->anketa'");
$rowEmail = mysqli_fetch_array($sqlEmail);
sisplet_query("UPDATE srv_spremenljivka SET visible='1' WHERE id = '$rowEmail[id]'");
// emailu po novem nastavimo preverjanje pravilnosti emaila in mehko opozorilo na to preverjanje
$v = new Vprasanje($this->anketa);
$v->spremenljivka = $rowEmail['id'];
$v->set_email($reminder=1);
}
else {
// email je ze dodan, damo tekst za ok
$email_ok = true;
}
// preverimo še za ime
if ( mysqli_num_rows($sqlIme) == 0 ) {
}
else{
$ime_ok = true;
}
}
echo '
';
echo '
';
if ($email_ok && $ime_ok) {
echo '
';
$sql1 = sisplet_query("SELECT finish_respondent_if FROM srv_alert WHERE ank_id='$this->anketa'");
$row1 = mysqli_fetch_array($sql1);
echo '
';
if ($row1['finish_respondent_if']>0) { if ($b==null) $b = new Branching($this->anketa); $b->conditions_display($row1['finish_respondent_if']); }
echo '
'.$lang['srv_alert_respondent_note_ok_email_ime'].' ';
} else {
if ($ime_ok) {
// pomeni da email ni ok! napaka
echo '
'.$lang['srv_alert_respondent_note_notok_email'].'';
} else {
// email je ok, ime ni, uporabnika vprasamo, ali hoce se ime
echo '
';
$sql1 = sisplet_query("SELECT finish_respondent_if FROM srv_alert WHERE ank_id='$this->anketa'");
$row1 = mysqli_fetch_array($sql1);
echo '
';
if ($row1['finish_respondent_if']>0) { if ($b==null) $b = new Branching($this->anketa); $b->conditions_display($row1['finish_respondent_if']); }
echo '
'.$lang['srv_alert_respondent_note_ok_email'].'
';
if(!$forma){
echo '
'.$lang['srv_alert_respondent_note_ime'].'';
echo ' '.$lang['srv_alert_respondent_note_link'].'
';
}
}
}
// preverimo sistemske nastavitve in spremenljivke ime
} else {
echo '
';
echo '
';
}
break;
case 'finish_respondent_cms': // respondent prepoznan iz CMS ko je izpolnil anketo
//respondent iz cms
echo '
';
echo '
';
if ($isChecked) {
// preverimo sistemske nastavitve in spremenljivke
//$sqlCMS = sisplet_query("SELECT user_from_cms FROM srv_anketa WHERE id='$this->anketa'");
//$rowCMS = mysqli_fetch_assoc($sqlCMS);
$rowCMS = SurveyInfo::getInstance()->getSurveyRow();
if ($rowCMS['user_from_cms'] > 0) {
echo '
';
$sql1 = sisplet_query("SELECT finish_respondent_cms_if FROM srv_alert WHERE ank_id='$this->anketa'");
$row1 = mysqli_fetch_array($sql1);
echo '
';
if ($row1['finish_respondent_cms_if']>0) { if ($b==null) $b = new Branching($this->anketa); $b->conditions_display($row1['finish_respondent_cms_if']); }
echo '
'.$lang['srv_alert_respondent_cms_note_ok'].' ';
} else {
echo '
'.$lang['srv_alert_respondent_cms_note'].'';
echo ' '.$lang['srv_alert_respondent_cms_note_link'].'
';
}
}
break;
case 'finish_author': // obveščanje o izpolnjeni anketi
case 'expire_author': // obveščanje o poteku ankete
case 'active_author': // obveščanje o aktivaciji/deaktivaciej ankete
case 'delete_author': // obveščanje o izbrisu ankete
// preberemo nastavitve alertov
$sqlAlert = sisplet_query("SELECT * FROM srv_alert WHERE ank_id = '$this->anketa'");
if (!$sqlAlert)
echo mysqli_error($GLOBALS['connect_db']);
if (mysqli_num_rows($sqlAlert) > 0) {
$rowAlert = mysqli_fetch_array($sqlAlert);
}
else {
SurveyAlert::getInstance()->Init($this->anketa, $global_user_id);
$rowAlert = SurveyAlert::setDefaultAlertBeforeExpire();
}
// avtor ankete
if($forma) {
echo '
';
echo '
';
}
else {
echo '
';
echo '
';
}
if ($isChecked) {
//$sql = sisplet_query("SELECT insert_uid, edit_uid FROM srv_anketa WHERE id='$this->anketa'");
//$row = mysqli_fetch_assoc($sql);
$b = null;
$row = SurveyInfo::getInstance()->getSurveyRow();
if ($what == 'finish_author')
$db_field = 'alert_complete';
else if ($what == 'expire_author')
$db_field = 'alert_expire';
else if ($what == 'active_author')
$db_field = 'alert_active';
else if ($what == 'delete_author')
$db_field = 'alert_delete';
// polovimo avtorja - novo kjer se ga lahko tudi izklopi (zaenkrat samo pri koncani anketi)
if($what == 'finish_author'){
$sqlAuthor = $this->db_select_user($row['insert_uid']);
$rowAuthor = mysqli_fetch_array($sqlAuthor);
$sql1 = sisplet_query("SELECT *, uid AS id FROM srv_dostop WHERE ank_id='$this->anketa' AND uid='".$row['insert_uid']."'");
$row1 = mysqli_fetch_array($sql1);
// Ce smo ravno z ajaxom vklopili obvescanje avtorja, ga tudi aktiviramo
if(isset($_POST['checked']) && isset($_POST['what']) && $_POST['what']=='finish_author'){
$checked = ($_POST['checked'] == true) ? ' checked="checked" ' : '';
}
else{
$checked = ($row1[$db_field] == '1') ? ' checked="checked" ' : '';
}
echo '
';
echo '
';
echo '
';
echo '
';
if ($what == 'finish_author') {
echo '
';
echo ' ';
echo ' ';
if ($row1['alert_complete_if']>0) { if ($b==null) $b = new Branching($this->anketa); $b->conditions_display($row1['alert_complete_if']); }
echo '';
}
echo '
';
echo '
';
}
// polovimo avtorja pri ostalih obvestilih
else{
$sqlAuthor = $this->db_select_user($row['insert_uid']);
$rowAuthor = mysqli_fetch_array($sqlAuthor);
$sql1 = sisplet_query("SELECT *, uid AS id FROM srv_dostop WHERE ank_id='$this->anketa' AND uid='".$row['insert_uid']."'");
$row1 = mysqli_fetch_array($sql1);
echo '
';
echo '
';
echo '
';
echo '
';
if ($what == 'finish_author') {
echo '
';
echo ' ';
echo ' ';
if ($row1['alert_complete_if']>0) { if ($b==null) $b = new Branching($this->anketa); $b->conditions_display($row1['alert_complete_if']); }
echo '';
}
echo '
';
echo '
';
}
// polovimo ostale userje ki imajo dostop
$sql1 = sisplet_query("SELECT u.id, u.name, u.surname, u.email, dostop.".$db_field.", dostop.alert_complete_if FROM users as u "
." RIGHT JOIN (SELECT sd.uid, sd.".$db_field.", sd.alert_complete_if FROM srv_dostop as sd WHERE sd.ank_id='".$this->anketa."') AS dostop ON u.id = dostop.uid WHERE u.id != '".$row['insert_uid']."'");
while ($row1 = mysqli_fetch_assoc($sql1)) {
if ($row1['id']) { // se zgodi da je prazno za metauserje
// avtor je vedno chekiran
$checked = ( $row1[$db_field] == '1') ? ' checked="checked"' : '';
echo '
';
echo '
';
echo '
';
echo '
';
if ($what == 'finish_author') {
echo '
';
echo ' ';
echo ' ';
if ($row1['alert_complete_if']>0) { if ($b==null) $b = new Branching($this->anketa); $b->conditions_display($row1['alert_complete_if']); }
echo '';
}
echo '
';
echo '
';
}
}
}
break;
}
}
/**
* TODO ???
*
* @param mixed $row
*/
function showUserCodeSettings($row = null) {
global $lang;
if ($row == null) {
$row = SurveyInfo::getInstance()->getSurveyRow();
}
$disabled = true;
$disabled2 = false;
if (SurveyInfo::getInstance()->checkSurveyModule('email') || SurveyInfo::getInstance()->checkSurveyModule('phone')){
$disabled = false;
}
if ($row['usercode_skip'] == 1) {
$disabled2 = true;
}
#echo '
';
echo '
' . $lang['usercode_skip'] . Help::display('usercode_skip') . ':';
echo '' . "\n\r";
echo '' . "\n\r";
echo '' . "\n\r";
echo '';
echo '
';
echo '
';
#echo '
';
echo '
' . $lang['usercode_required'] . help::display('usercode_required') . ': ';
echo '' . "\n\r";
echo '' . "\n\r";
echo '';
echo '
';
echo '
';
$nagovorText = ($row['usercode_text'] && $row['usercode_text'] != null && $row['usercode_text'] != "") ? $row['usercode_text'] : $lang['srv_basecode'];
#echo ' ';
echo '' . $lang['usercode_text'] . ': ';
echo ' ' . "\n\r";
echo '';
echo '
';
}
/**
* TODO ???
*
* @param mixed $row
*/
function respondenti_iz_baze($row = null, $show_fieldset=true) {
global $lang;
global $admin_type;
if ($row == null) {
$row = SurveyInfo::getInstance()->getSurveyRow();
}
/* aktivnost vec ni pogoj za vklop email vabil:
* - omogočiti aktiviranje emial zavihka, četudi je anketa neaktivna (preprečiti pa pošijanje emailov če je ankete neaktivna)
*/
if ($admin_type <= 1) {
$_cssDisabled = '';
$_disabled = '';
} else {
$_cssDisabled = ' gray';
$_disabled = ' disabled="disabled"';
}
echo '
' . "\n\r";
echo '
' . "\n\r";
echo '
' . "\n\r";
if ($show_fieldset) {
echo '
';
}
}
/**
* TODO ???
*
*/
function anketa_aktivacija_note() {
global $lang;
$row = SurveyInfo::getInstance()->getSurveyRow();
if ($row['active'] == 0) {
echo $lang['srv_url_survey_not_active'];
echo '
' . "\n\r";
echo ' ';
echo ' ';
echo ' ' . $lang['srv_anketa_setActive'] . '';
echo ' ' . "\n\r";
echo ' ' . "\n\r";
} else {
echo $lang['srv_url_intro_active'];
echo '
' . "\n\r";
echo ' ';
echo ' ';
echo ' ' . $lang['srv_anketa_setNoActive'] . '';
echo ' ' . "\n\r";
echo ' ' . "\n\r";
}
}
function anketa_diagnostika_note($diagnostics,$show_link = false) {
global $lang;
$diagnostics->printNote($show_link);
}
/**
* @desc prikaze dropdown z nastavitvami ankete (globalne, za celo 1ko) -- Prva stran -> Nastavitve -> Sistemske nastavitve
* Sistemske nastavitve: mora biti admin da ima dostop
*/
function anketa_nastavitve_system() {
global $lang;
global $site_url;
global $site_path;
global $admin_type;
global $global_user_id;
$preklici_url = ltrim(str_replace("&s=1","",$_SERVER['REQUEST_URI']),"/");
$preklici_url = "'". $site_url . $preklici_url . "'";
// Ni admin - nima pravic
if ($admin_type != 0) {
echo '
';
echo $lang['srv_settingsSystemNoRights'];
echo '
';
return;
}
echo '
';
echo '
';
echo '';
/* Missingi - zakomentirano, prenova po redizajnu
$smv = new SurveyMissingValues();
$smv->SystemFilters();
*/
// save gumb
echo '
';
echo '';
echo '';
echo '
';
// div za prikaz uspešnosti shranjevanja
if ($_GET['s'] == '1') {
echo '
';
echo '';
}
echo '
';
}
/**
* nastavitve predvidenih casov za komponente ankete in vprasanj iz katerih se nato racuna celotna dolzina vprasanj in ankete
*
*/
function anketa_nastavitve_predvidenicasi () {
global $lang;
global $site_url;
$preklici_url = ltrim(str_replace("&s=1","",$_SERVER['REQUEST_URI']),"/");
$preklici_url = "'". $site_url . $preklici_url . "'";
echo '
';
echo '
';
echo '
';
}
function tabTestiranje () {
global $lang;
// predvideni casi
if ($_GET['m'] == 'predvidenicas') {
$this->testiranje_predvidenicas();
}
// testni podatki
elseif ($_GET['m'] == 'testnipodatki') {
$this->testiranje_testnipodatki();
}
// cas
elseif ($_GET['m'] == M_TESTIRANJE_CAS) {
$this->testiranje_cas();;
}
// cas
elseif ($_GET['m'] == 'cas') {
$this->testiranje_cas();
}
}
/**
* izracuna predvidene case po straneh glede na število in dolžino vprašanj
*
*/
function testiranje_predvidenicas($samo_izracunaj_skupini_cas=0) {
global $lang;
$expected_time = array();
$expected_time_block = array();
$block_labels_by_number = array();
$expected_vprasanja = array();
$verjetnost = array();
$verjetnost_block = array();
//from php 7.2 this helps to round numbers calculated in bcmod() - without it, it always rounds down to int
bcscale(1);
$sql = sisplet_query("SELECT introduction FROM srv_anketa WHERE id = '$this->anketa'");
$row = mysqli_fetch_array($sql);
// nagovor racunamo kot da gre za labelo
$expected_vprasanja[0][0] = strlen(strip_tags($row['introduction'])) * GlobalMisc::getMisc('timing_vprasanje_5') / 100;
$expected_vprasanja[0][1] = 1;
$expected_vprasanja[0][2] = $lang['srv_vprasanje_tip_5'];
$expected_vprasanja[0][3] = $lang['srv_intro_label'];
$expected_time[0][0] = $expected_vprasanja[0][0] + GlobalMisc::getMisc('timing_stran');
$expected_time[0][1] = $expected_time[0][0];
$block_spr_data = $this->get_block_data_by_spr_id();
$sql = sisplet_query("SELECT id, naslov, vrstni_red FROM srv_grupa g WHERE g.ank_id='$this->anketa' ORDER BY g.vrstni_red ASC");
while ($row = mysqli_fetch_array($sql)) {
$expected_time[$row['vrstni_red']][0] = 0;
$expected_time[$row['vrstni_red']][1] = 0;
$sql1 = sisplet_query("SELECT id, naslov FROM srv_spremenljivka WHERE gru_id='$row[id]' AND visible = '1'");
while ($row1 = mysqli_fetch_array($sql1)) {
$expected_vprasanja[$row1['id']][0] = $this->vprasanje_predvideni_cas($row1['id']);
$expected_vprasanja[$row1['id']][1] = $this->vprasanje_verjetnost($row1['id']);
$expected_vprasanja[$row1['id']][2] = strip_tags($row1['naslov']);
$expected_vprasanja[$row1['id']][3] = strip_tags($row['naslov']);
$expected_vprasanja[$row1['id']][4] = strip_tags($block_spr_data[$row1['id']]['label']);
$expected_time[$row['vrstni_red']][0] += $expected_vprasanja[$row1['id']][0] * $expected_vprasanja[$row1['id']][1]; // dejanski
$expected_time[$row['vrstni_red']][1] += $expected_vprasanja[$row1['id']][0]; // bruto - z vsemi vprasanji
if ( $expected_vprasanja[$row1['id']][1] > $verjetnost[$row['vrstni_red']])
$verjetnost[$row['vrstni_red']] = $expected_vprasanja[$row1['id']][1];
}
$expected_time[$row['vrstni_red']][0] += GlobalMisc::getMisc('timing_stran') * $verjetnost[$row['vrstni_red']]; // pri dejanskem trajanju strani upostevamo verjetnost najverjetnejsega vprasanja na strani (stran se pojavi z najvisjo verjetnostjo vseh vprasanj na strani)
$expected_time[$row['vrstni_red']][1] += GlobalMisc::getMisc('timing_stran');
}
$sql = sisplet_query("SELECT * FROM srv_if as bl LEFT JOIN srv_branching as br ON br.parent = bl.id WHERE bl.enabled='0' AND bl.tip='1' AND br.ank_id = '$this->anketa' ORDER BY bl.number ASC, br.vrstni_red ASC");
$last_block_st = -1;
while ($row = mysqli_fetch_array($sql)) {
$new_block = $last_block_st != $row['number'];
if($new_block){
$last_block_st = $row['number'];
$label = $row['label'] ? $row['label']: $lang['srv_blok'].' '.$last_block_st;
$block_labels_by_number[$last_block_st] = $label;
$expected_time_block[$last_block_st-1][0] = 0;
$expected_time_block[$last_block_st-1][1] = 0;
}
if(!$row['element_if']){
$expected_time_block[$last_block_st-1][0] += $expected_vprasanja[$row['element_spr']][0] * $expected_vprasanja[$row['element_spr']][1]; // dejanski
$expected_time_block[$last_block_st-1][1] += $expected_vprasanja[$row['element_spr']][0]; // bruto - z vsemi vprasanji
if ( $expected_vprasanja[$row['element_spr']][1] > $verjetnost_block[$last_block_st-1])
$verjetnost_block[$last_block_st-1] = $expected_vprasanja[$row['element_spr']][1];
}
else{
$sql1 = sisplet_query("SELECT * FROM srv_branching WHERE parent='".$row['element_if']."' ORDER BY vrstni_red ASC");
while ($row1 = mysqli_fetch_array($sql1)) {
$expected_time_block[$last_block_st-1][0] += $expected_vprasanja[$row1['element_spr']][0] * $expected_vprasanja[$row1['element_spr']][1]; // dejanski
$expected_time_block[$last_block_st-1][1] += $expected_vprasanja[$row1['element_spr']][0]; // bruto - z vsemi vprasanji
$expected_vprasanja[$row1['element_spr']][4] = $label;
if ( $expected_vprasanja[$row1['element_spr']][1] > $verjetnost_block[$last_block_st-1])
$verjetnost_block[$last_block_st-1] = $expected_vprasanja[$row1['element_spr']][1];
}
}
if($new_block){
$expected_time_block[$last_block_st-1][0] += GlobalMisc::getMisc('timing_stran') * $verjetnost_block[$last_block_st-1]; // pri dejanskem trajanju strani upostevamo verjetnost najverjetnejsega vprasanja na strani (stran se pojavi z najvisjo verjetnostjo vseh vprasanj na strani)
$expected_time_block[$last_block_st-1][1] += GlobalMisc::getMisc('timing_stran');
}
}
// izpis za strani
$max = 0;
$total = 0;
$total_brez_pogojev = 0;
foreach ($expected_time AS $key => $val) {
if ($val[1] > $max)
$max = $val[1];
$total += $val[0];
$total_brez_pogojev += $val[1];
}
if ($max == 0) return;
if ($samo_izracunaj_skupini_cas == 2) {
return $total;
}
$skupni_cas = (bcdiv($total, 60, 0)>0?bcdiv($total, 60, 0).'min ':'').''.round(bcmod($total, 60), 0).'s';
$skupni_cas_brez_pogojev = (bcdiv($total_brez_pogojev, 60, 0)>0?bcdiv($total_brez_pogojev, 60, 0).'min ':'').''.round(bcmod($total_brez_pogojev, 60), 0).'s';
if ($samo_izracunaj_skupini_cas == 1)
return $skupni_cas;
echo '
';
echo '
';
// izpis za vprasanja
$max = 0;
$bruto_total = 0;
$neto_total = 0;
foreach ($expected_vprasanja AS $vpr) {
if ($vpr[0] > $max) $max = $vpr[0];
$bruto_total += $vpr[0];
$neto_total += $vpr[0] * $vpr[1];
}
$prevstran = false;
echo '
';
//CASI PO BLOKIH
if($block_spr_data){
// izpis za bloke
$maxb = 0;
$totalb = 0;
foreach ($expected_time_block AS $key => $val) {
if ($val[1] > $maxb) $maxb = $val[1];
$totalb += $val[0];
}
echo '
';
// izpis za vprasanja po blokih
$max = 0;
$bruto_total = 0;
$neto_total = 0;
foreach ($expected_vprasanja AS $vpr) {
if($vpr[4]){
if ($vpr[0] > $max) $max = $vpr[0];
$bruto_total += $vpr[0];
$neto_total += $vpr[0] * $vpr[1];
}
}
$prevstran = false;
echo '
';
}
}
/**
* Dobi podatke o bloku za vsako spremenljivko, ali false, ce ni blokov
*/
function get_block_data_by_spr_id(){
global $lang;
$data = array();
$block_query = sisplet_query("SELECT * FROM srv_if as bl LEFT JOIN srv_branching as br ON br.parent = bl.id WHERE bl.enabled='0' AND bl.tip='1' AND br.ank_id = '$this->anketa' ORDER BY br.vrstni_red ASC", 'array');
if($block_query){
foreach ($block_query as $row) {
$label = $row['label'] ? $row['label']: $lang['srv_blok'].' '.$row['number'];
$data[$row['element_spr']] = array('label' => $label);
}
return $data;
}
return false;
}
/**
* oceni predvideni cas za vprasanje
*
* @param mixed $spremenljivka
*/
function vprasanje_predvideni_cas ($spremenljivka) {
$sql1 = sisplet_query("SELECT id, naslov, tip FROM srv_spremenljivka WHERE id = '$spremenljivka'");
$row1 = mysqli_fetch_array($sql1);
$expected_time = strlen(strip_tags($row1['naslov'])) * GlobalMisc::getMisc('timing_vprasanje_'.$row1['tip']) / 100;
// vprasanja, ki imajo tudi kategorije/vrednosti
if ($row1['tip'] <= 3 || $row1['tip'] == 6 || $row1['tip'] == 16 || $row1['tip'] == 17 || $row1['tip'] == 18 || $row1['tip'] == 19 || $row1['tip'] == 20) {
$sql2 = sisplet_query("SELECT naslov FROM srv_vrednost WHERE spr_id='$row1[id]'");
//for those types we have max time option
if($row1['tip'] == 3){
while ($row2 = mysqli_fetch_array($sql2)) {
$expected_time_temp += strlen(strip_tags($row2['naslov'])) * GlobalMisc::getMisc('timing_kategorija_'.$row1['tip']) / 100;
}
//if time is greater than max time, use max time
$max_time = GlobalMisc::getMisc('timing_kategorija_max_'.$row1['tip']);
$expected_time += ($max_time > $expected_time_temp) ? $expected_time_temp : $max_time;
}
//types that doesnt have max time option
else{
while ($row2 = mysqli_fetch_array($sql2)) {
$expected_time += strlen(strip_tags($row2['naslov'])) * GlobalMisc::getMisc('timing_kategorija_'.$row1['tip']) / 100;
}
}
}
return $expected_time;
}
/**
* oceni verjetnost prikaza vprasanja glede na pogoje, ki so mu nastavljeni
*
* @param mixed $spremenljivka
*/
function vprasanje_verjetnost ($spremenljivka) {
$sql = sisplet_query("SELECT parent FROM srv_branching WHERE element_spr = '$spremenljivka'");
$row = mysqli_fetch_array($sql);
if ($row['parent'] == 0) return 1; // vprasanje se vedno prikaze
//echo $this->if_verjetnost($row['parent']).'
';
return $this->if_verjetnost($row['parent']);
}
/**
* oceni verjetnost da bo pogoj (if) izpolnjen
*
* @param mixed $if
*/
function if_verjetnost ($if) {
$sql = sisplet_query("SELECT parent FROM srv_branching WHERE element_if = '$if'");
if (mysqli_num_rows($sql) == 0) return 0;
$row = mysqli_fetch_array($sql);
// izracunamo se verjetnost parentov
if ($row['parent'] > 0){
// dodaten pogoj da nismo v deadlocku (zaradi bugov se znata v branchingu pojavit ifa, ki imata drug drugega za parenta)
$sqlX = sisplet_query("SELECT parent, element_if FROM srv_branching WHERE parent='".$if."' AND element_if='".$row['parent']."'");
if(mysqli_num_rows($sqlX) > 0){
return 0;
}
$parent = $this->if_verjetnost($row['parent']);
}
else
$parent = 1;
$sql = sisplet_query("SELECT tip FROM srv_if WHERE id = '$if'");
$row = mysqli_fetch_array($sql);
if ($row['tip'] == 1) return 1 * $parent; // blok je vedno 'izpolnjen'
$eval = ' $total = ';
$i = 0;
// racunanje verjetnosti za podani if
$sql = sisplet_query("SELECT * FROM srv_condition WHERE if_id = '$if' ORDER BY vrstni_red ASC");
while ($row = mysqli_fetch_array($sql)) {
$value = '';
if(($value = $this->condition_verjetnost($row['id'])) !== false){
if ($i++ != 0){
if ($row['conjunction'] == 0)
$eval .= ' * ';
else
$eval .= ' + ';
}
for ($i=1; $i<=$row['left_bracket']; $i++)
$eval .= ' ( ';
$eval .= $value;
for ($i=1; $i<=$row['right_bracket']; $i++)
$eval .= ' ) ';
}
}
$eval .= ';';
if($eval != ' $total = ;')
@eval($eval); //echo '--'.$eval.'--';
else
$total = 1;
if ($total > 1) return 1 * $parent; else return $total * $parent;
}
/**
* vrne verjetnost, da je izpolnjen condition (ena vrstica v IFu)
*
* @param mixed $condition
*/
function condition_verjetnost ($condition) {
$sql = sisplet_query("SELECT * FROM srv_condition WHERE id = '$condition'");
if (mysqli_num_rows($sql) == 0) return 0;
$row = mysqli_fetch_array($sql);
// obicne spremenljivke
if ($row['spr_id'] > 0) {
$row2 = Cache::srv_spremenljivka($row['spr_id']);
// radio, checkbox, dropdown in multigrid
if ($row2['tip'] <= 3 || $row2['tip'] == 6) {
// obicne spremenljivke
if ($row['vre_id'] == 0) {
$sql1 = sisplet_query("SELECT id FROM srv_vrednost WHERE spr_id='$row[spr_id]'");
$vse_vrednosti = mysqli_num_rows($sql1);
$sql1 = sisplet_query("SELECT * FROM srv_condition_vre WHERE cond_id = '$condition'");
$izbrane_vrednosti = mysqli_num_rows($sql1);
if ($vse_vrednosti > 0)
$p = $izbrane_vrednosti / $vse_vrednosti;
else
$p = 0;
if ($row['operator'] == 0)
return $p;
else
return 1 - $p;
// multigrid
} elseif ($row['vre_id'] > 0) {
$sql1 = sisplet_query("SELECT id FROM srv_grid WHERE spr_id='$row[spr_id]'");
$vse_vrednosti = mysqli_num_rows($sql1);
$sql1 = sisplet_query("SELECT * FROM srv_condition_grid WHERE cond_id = '$condition'");
$izbrane_vrednosti = mysqli_num_rows($sql1);
if ($vse_vrednosti > 0)
$p = $izbrane_vrednosti / $vse_vrednosti;
else
$p = 0;
if ($row['operator'] == 0)
return $p;
else
return 1 - $p;
}
// number in text
} else {
return 0.5;
}
// recnum
} elseif ($row['spr_id'] == -1) {
return 1 / $row['modul'];
// calculations
} elseif ($row['spr_id'] == -2) {
return 0.5;
// quotas
} elseif ($row['spr_id'] == -3) {
return 1;
}
return false;
}
/**
* prikazuje povprecne case po straneh ipd....
*
*/
function testiranje_cas($samo_izracunaj_skupini_cas=0) {
global $lang;
global $global_user_id;
global $admin_type;
SurveyUserSetting :: getInstance()->Init($this->anketa, $global_user_id);
// nastavitve iz popupa
$rezanje = SurveyUserSetting::getInstance()->getSettings('rezanje'); if ($rezanje == '') $rezanje = 1;
$rezanje_meja_sp = SurveyUserSetting::getInstance()->getSettings('rezanje_meja_sp'); if ($rezanje_meja_sp == '') $rezanje_meja_sp = 5;
$rezanje_meja_zg = SurveyUserSetting::getInstance()->getSettings('rezanje_meja_zg'); if ($rezanje_meja_zg == '') $rezanje_meja_zg = 5;
$rezanje_predvidena_sp = SurveyUserSetting::getInstance()->getSettings('rezanje_predvidena_sp'); if ($rezanje_predvidena_sp == '') $rezanje_predvidena_sp = 10;
$rezanje_predvidena_zg = SurveyUserSetting::getInstance()->getSettings('rezanje_predvidena_zg'); if ($rezanje_predvidena_zg == '') $rezanje_predvidena_zg = 200;
$rezanje_preskocene = SurveyUserSetting::getInstance()->getSettings('rezanje_preskocene'); if ($rezanje_preskocene == '') $rezanje_preskocene = 1;
/* ++ Predvideni casi */
if ($_GET['predvideni'] == 1 || $rezanje == 1) {
$expected_time = array();
$expected_vprasanja = array();
$verjetnost = array();
$sql = sisplet_query("SELECT introduction FROM srv_anketa WHERE id = '$this->anketa'");
$row = mysqli_fetch_array($sql);
// nagovor racunamo kot da gre za labelo
$expected_vprasanja[0][0] = strlen(strip_tags($row['introduction'])) * GlobalMisc::getMisc('timing_vprasanje_5') / 100;
$expected_vprasanja[0][1] = 1;
$expected_vprasanja[0][2] = $lang['srv_vprasanje_tip_5'];
$expected_vprasanja[0][3] = $lang['srv_intro_label'];
$expected_time[0][0] = $expected_vprasanja[0][0] + GlobalMisc::getMisc('timing_stran');
$expected_time[0][1] = $expected_time[0][0];
$sql = sisplet_query("SELECT id, naslov, vrstni_red FROM srv_grupa g WHERE g.ank_id='$this->anketa' ORDER BY g.vrstni_red ASC");
while ($row = mysqli_fetch_array($sql)) {
$expected_time[$row['vrstni_red']][0] = 0;
$expected_time[$row['vrstni_red']][1] = 0;
$sql1 = sisplet_query("SELECT id, naslov FROM srv_spremenljivka WHERE gru_id='$row[id]' AND visible='1'");
while ($row1 = mysqli_fetch_array($sql1)) {
$expected_vprasanja[$row1['id']][0] = $this->vprasanje_predvideni_cas($row1['id']);
$expected_vprasanja[$row1['id']][1] = $this->vprasanje_verjetnost($row1['id']);
$expected_vprasanja[$row1['id']][2] = strip_tags($row1['naslov']);
$expected_vprasanja[$row1['id']][3] = strip_tags($row['naslov']);
$expected_time[$row['vrstni_red']][0] += $expected_vprasanja[$row1['id']][0] * $expected_vprasanja[$row1['id']][1]; // dejanski
$expected_time[$row['vrstni_red']][1] += $expected_vprasanja[$row1['id']][0]; // bruto - z vsemi vprasanji
if ( $expected_vprasanja[$row1['id']][1] > $verjetnost[$row['vrstni_red']])
$verjetnost[$row['vrstni_red']] = $expected_vprasanja[$row1['id']][1];
}
$expected_time[$row['vrstni_red']][0] += GlobalMisc::getMisc('timing_stran') * $verjetnost[$row['vrstni_red']]; // pri dejanskem trajanju strani upostevamo verjetnost najverjetnejsega vprasanja na strani (stran se pojavi z najvisjo verjetnostjo vseh vprasanj na strani)
$expected_time[$row['vrstni_red']][1] += GlobalMisc::getMisc('timing_stran');
}
}
/* -- Predvideni casi */
// statusi
SurveyStatusCasi :: Init($this->anketa);
$izbranStatusCasi = SurveyStatusCasi :: getCurentProfileId();
$statusArray = SurveyStatusCasi::getStatusArray($izbranStatusCasi);
$status = '';
foreach ($statusArray AS $key => $val) {
if ($key == 'statusnull' && $val == 1) $status .= ($status!=''?',':'') . '-1';
if ($key == 'status0' && $val == 1) $status .= ($status!=''?',':'') . '0';
if ($key == 'status1' && $val == 1) $status .= ($status!=''?',':'') . '1';
if ($key == 'status2' && $val == 1) $status .= ($status!=''?',':'') . '2';
if ($key == 'status3' && $val == 1) $status .= ($status!=''?',':'') . '3';
if ($key == 'status4' && $val == 1) $status .= ($status!=''?',':'') . '4';
if ($key == 'status5' && $val == 1) $status .= ($status!=''?',':'') . '5';
if ($key == 'status6' && $val == 1) $status .= ($status!=''?',':'') . '6';
if ($key == 'statuslurker' && $val == 1) $lurker = ""; else $lurker = " AND lurker='0' ";
}
// preberemo vse timestampe za strani v anketi
$sql = sisplet_query("SELECT ug.usr_id, UNIX_TIMESTAMP(ug.time_edit) AS time_edit_u, g.vrstni_red FROM srv_user_grupa".$this->db_table." ug, srv_grupa g, srv_user u WHERE ug.usr_id=u.id AND u.last_status IN ($status) $lurker AND ug.gru_id=g.id AND g.ank_id='$this->anketa' ORDER BY usr_id, gru_id");
if (!$sql) echo mysqli_error($GLOBALS['connect_db']);
if (mysqli_num_rows($sql) == 0) {
if ($samo_izracunaj_skupini_cas == 1) {
return null;
} else {
echo '
'.$lang['srv_analiza_no_entry'].'
';
}
}
$user_grupa = array();
while ($row = mysqli_fetch_array($sql)) {
$user_grupa[$row['usr_id']][$row['vrstni_red']] = $row['time_edit_u'];
}
if (mysqli_num_rows($sql) == 0) {
die();
}
// cache mysql-a
$usrs_id = array();
foreach ($user_grupa AS $usr_id => $val) {
$usrs_id[] = $usr_id;
}
$cache_row = array();
$sql_c = sisplet_query("SELECT id, recnum, time_insert, UNIX_TIMESTAMP(time_insert) AS time_insert_u FROM srv_user WHERE id IN (".implode(',', $usrs_id).")");
if (!$sql_c) echo mysqli_error($GLOBALS['connect_db']);
while ($row_c = mysqli_fetch_array($sql_c)) {
$cache_row[ $row_c['id'] ] = $row_c;
}
$cache_row1 = array();
$sql1_c = sisplet_query("SELECT usr_id, time_edit, UNIX_TIMESTAMP(time_edit) AS time_edit_u FROM srv_user_grupa".$this->db_table." WHERE usr_id IN (".implode(',', $usrs_id).") AND gru_id = '0'");
if (!$sql1_c) echo mysqli_error($GLOBALS['connect_db']);
while ($row1_c = mysqli_fetch_array($sql1_c)) {
$cache_row1[ $row1_c['usr_id'] ] = $row1_c;
}
// izracunamo razlike v casih, da dobimo za vsakega userja koliko casa je bil na posamezni strani
$casi = array();
foreach ($user_grupa AS $usr_id => $val) {
//$sql = sisplet_query("SELECT recnum, time_insert, UNIX_TIMESTAMP(time_insert) AS time_insert_u FROM srv_user WHERE id = '$usr_id'");
//$row = mysqli_fetch_array($sql);
$row = $cache_row[$usr_id];
//$sql1 = sisplet_query("SELECT time_edit, UNIX_TIMESTAMP(time_edit) AS time_edit_u FROM srv_user_grupa".$this->db_table." WHERE usr_id = '$usr_id' AND gru_id = '0'");
//$row1 = mysqli_fetch_array($sql1);
$row1 = $cache_row1[$usr_id];
//echo $row1['time_edit'].' ('.($row1['time_edit_u'] - strtotime($row1['time_edit'])).') - '.$row['time_insert'].' ('.($row['time_insert_u'] - strtotime($row['time_insert'])).')
';
$prev = ($row1['time_edit'] != '' ? $row1['time_edit_u'] : $row['time_insert_u']);
// nagovor
//if ($row1['time_edit'] != '') $casi[0][$usr_id] = $this->diff($row1['time_edit'], $row['time_insert']);
if ($row1['time_edit'] != '') $casi[0][$usr_id] = abs($row1['time_edit_u'] - $row['time_insert_u']);
if ($row['recnum'] > 0) { // zapisi brez recnuma ne pridejo v poštev, ker nimajo pravih časov
foreach ($val AS $vrstni_red => $time_edit) {
//$casi[$vrstni_red][$usr_id] = $this->diff($time_edit, $prev);
$casi[$vrstni_red][$usr_id] = abs($time_edit - $prev);
$prev = $time_edit;
}
}
}
// porezemo zgornjih in spodnjih 5% casov vsake strani
//if (isset($_GET['truncate'])) $truncate = ((int)$_GET['truncate'])/100; else $truncate = 0.05;
$spodnja = $rezanje_meja_sp / 100;
$zgornja = $rezanje_meja_zg / 100;
// REZANJE
foreach ($casi AS $vrstni_red => $val1) {
asort($casi[$vrstni_red]);
$len = count($casi[$vrstni_red]);
$odrezi_sp = (int) round ( $len * $spodnja , 0);
$odrezi_zg = (int) round ( $len * $zgornja , 0);
$i = 1;
foreach ($casi[$vrstni_red] AS $key => $val2) {
if ($rezanje == 0) { // rezanje po zgornji in spodnji meji
if ($i <= $odrezi_sp || $i > $len-$odrezi_zg) {
unset($casi[$vrstni_red][$key]);
}
} else { // rezanje glede na 10% in 200% predvidenih vrednosti
if ($val2 < $expected_time[$vrstni_red][0]*$rezanje_predvidena_sp/100 || $val2 > $expected_time[$vrstni_red][0]*$rezanje_predvidena_zg/100) {
unset($casi[$vrstni_red][$key]);
}
}
$i++;
}
}
//foreach ($casi AS $key => $val) { echo $key.': '; foreach ($val AS $k => $v) { echo $v.', '; } echo '
'; }
// izracunamo povprecne case
$sql = sisplet_query("SELECT MAX(vrstni_red) AS max FROM srv_grupa WHERE ank_id = '$this->anketa'");
$row = mysqli_fetch_array($sql);
$count = array();
$count_bruto = array();
$povprecni_casi = array();
$povprecni_casi_bruto = array();
$max_time = 0;
for ($i=0; $i<=$row['max']; $i++) $povprecni_casi[$i] = 0;
foreach ($casi AS $vrstni_red => $val) {
// pogledamo za preskocene strani
$preskocene = array();
if ($rezanje_preskocene == 0) {
$sqlp = sisplet_query("SELECT ug.usr_id FROM srv_user_grupa".$this->db_table." ug, srv_grupa g WHERE g.id=ug.gru_id AND g.vrstni_red='$vrstni_red' AND ug.preskocena='1'");
while ($rowp = mysqli_fetch_array($sqlp)) {
array_push($preskocene, $rowp['usr_id']);
}
}
foreach ($casi[$vrstni_red] AS $usr_id => $time) {
if (!in_array($usr_id, $preskocene)) {
$povprecni_casi_bruto[$vrstni_red] += $time; // bruto so kao brez upoštevanja strani ki so se preskocile (0s, 1s)
$count_bruto[$vrstni_red] ++; // to je dejansko trajanje strani, ce uporabnik pride nanjo
}
if (!in_array($usr_id, $preskocene) || $rezanje_preskocene==1) {
$povprecni_casi[$vrstni_red] += $time; // neto je kao povprecno trajanje strani in uposteva tudi 0s, 1s ce se je preskocilo
$count[$vrstni_red] ++; // ta cas pride potem dejansko krajsi od bruto casa
}
if ($time > $max_time) $max_time = $time;
}
}
foreach ($povprecni_casi AS $vrstni_red => $time) {
if ($count[$vrstni_red] > 0)
$povprecni_casi[$vrstni_red] = $time / $count[$vrstni_red];
}
foreach ($povprecni_casi_bruto AS $vrstni_red => $time) {
if ($count_bruto[$vrstni_red] > 0)
$povprecni_casi_bruto[$vrstni_red] = $time / $count_bruto[$vrstni_red];
}
$max = 0;
$total = 0;
$total_predvideni = 0;
foreach ($povprecni_casi AS $key => $val) {
if ($val > $max) $max = $val;
$total += $val;
}
/*foreach ($povprecni_casi AS $key => $val) {
if ($val > $max) $max = $val;
//$total += $val;
}*/
if ($_GET['predvideni'] == 1) {
if ($rezanje_preskocene == 1) {
foreach ($expected_time AS $key => $val) {
if ($val[0] > $max) $max = $val[0];
$total_predvideni += $val[0];
}
} else {
foreach ($expected_time AS $key => $val) {
if ($val[1] > $max) $max = $val[1];
$total_predvideni += $val[1];
}
}
}
if ($max == 0) return;
if ($samo_izracunaj_skupini_cas == 1)
return (bcdiv($total, 60, 0)>0?bcdiv($total, 60, 0).'min ':'').''.round(bcmod($total, 60), 0).'s';
// izpis
$skupni_cas = (bcdiv($total, 60, 0)>0?bcdiv($total, 60, 0).'min ':'').''.round(bcmod($total, 60), 0).'s';
$predviden_cas = (bcdiv($total_predvideni, 60, 0)>0?bcdiv($total_predvideni, 60, 0).'min ':'').''.round(bcmod($total_predvideni, 60), 0);
echo '
';
echo '
';
if ($max_time > 1000 && $admin_type > 0) return; // pridejo prevelike tabele
if ($_GET['prikazi01'] == 1)
$t_min = 0;
else
$t_min = 2;
// izpis histograma casov za vsako stran
echo '
';
}
/**
* opcije za rezanje
*/
function show_rezanje_casi () {
global $lang;
global $global_user_id;
SurveyUserSetting :: getInstance()->Init($this->anketa, $global_user_id);
$rezanje = SurveyUserSetting::getInstance()->getSettings('rezanje'); if ($rezanje == '') $rezanje = 0;
$rezanje_meja_sp = SurveyUserSetting::getInstance()->getSettings('rezanje_meja_sp'); if ($rezanje_meja_sp == '') $rezanje_meja_sp = 5;
$rezanje_meja_zg = SurveyUserSetting::getInstance()->getSettings('rezanje_meja_zg'); if ($rezanje_meja_zg == '') $rezanje_meja_zg = 5;
$rezanje_predvidena_sp = SurveyUserSetting::getInstance()->getSettings('rezanje_predvidena_sp'); if ($rezanje_predvidena_sp == '') $rezanje_predvidena_sp = 10;
$rezanje_predvidena_zg = SurveyUserSetting::getInstance()->getSettings('rezanje_predvidena_zg'); if ($rezanje_predvidena_zg == '') $rezanje_predvidena_zg = 200;
$rezanje_preskocene = SurveyUserSetting::getInstance()->getSettings('rezanje_preskocene'); if ($rezanje_preskocene == '') $rezanje_preskocene = 1;
echo '
'.$lang['srv_rezanje_0'].'
';
echo '
'.$lang['srv_rezanje_meja_sp'].':
';
echo '
'.$lang['srv_rezanje_meja_zg'].':
';
echo '
'.$lang['srv_rezanje_1'].'
';
echo '
'.$lang['srv_rezanje_meja_sp'].': '.$lang['srv_rezanje_predvidenega'].'
';
echo '
'.$lang['srv_rezanje_meja_zg'].': '.$lang['srv_rezanje_predvidenega'].'
';
echo '
';
echo '
'.$lang['srv_rezanje_preskocene'].'
';
echo '
'.$lang['srv_rezanje_preskocene_txt'].'
';
echo '
'.$lang['srv_save_run_profile'].'';
echo '
'.$lang['srv_close_profile'].'';
}
/**
* shrani nastavitve
*
*/
function save_rezanje_casi () {
global $global_user_id;
SurveyUserSetting::getInstance()->Init($this->anketa, $global_user_id);
SurveyUserSetting::getInstance()->saveSettings('rezanje', $_POST['rezanje']);
SurveyUserSetting::getInstance()->saveSettings('rezanje_meja_sp', $_POST['rezanje_meja_sp']);
SurveyUserSetting::getInstance()->saveSettings('rezanje_meja_zg', $_POST['rezanje_meja_zg']);
SurveyUserSetting::getInstance()->saveSettings('rezanje_predvidena_sp', $_POST['rezanje_predvidena_sp']);
SurveyUserSetting::getInstance()->saveSettings('rezanje_predvidena_zg', $_POST['rezanje_predvidena_zg']);
SurveyUserSetting::getInstance()->saveSettings('rezanje_preskocene', $_POST['rezanje_preskocene']);
}
function string_format($cnt,$lang_root) {
global $lang;
$txt = '';
//if ($cnt > 0) $txt .= '
';
if (isset($lang[$lang_root.'_'.$cnt])) {
$txt .= $cnt.' '.$lang[$lang_root.'_'.$cnt];
} else {
$txt .= $cnt.' '.$lang[$lang_root.'_more'];
}
//if ($cnt > 0) $txt .= '';
return $txt;
}
/**
* izpise komentarje na anketo - stara ki se ne uporablja
*
*/
function testiranje_komentarji_anketa_old () {
global $lang;
global $site_url;
global $admin_type;
global $global_user_id;
$rowa = SurveyInfo::getInstance()->getSurveyRow();
SurveySetting::getInstance()->Init($this->anketa);
$sortpostorder = SurveySetting::getInstance()->getSurveyMiscSetting('sortpostorder');
$f = new Forum;
$sql = sisplet_query("SELECT * FROM post WHERE tid='$rowa[thread]'");
echo '
';
echo '
'.$lang['srv_admin_s_comments'].'
';
if (mysqli_num_rows($sql) > 0) {
$rows = mysqli_num_rows($sql);
if ($rows > 0) echo '
!['.($sortpostorder==1?$lang['forum_desc']:$lang['forum_asc']).'](img_0/'.($sortpostorder==1?'up':'down').'.gif)
';
}
$i=0;
while ($row = mysqli_fetch_array($sql)) {
if (($i != 0 && $sortpostorder==0) || ($i < $rows-1 && $sortpostorder==1)) {
if ($row['ocena'] == 0) echo '
';
elseif ($row['ocena'] == 1) echo '';
elseif ($row['ocena'] == 2) echo '';
elseif ($row['ocena'] == 3) echo '';
else echo '';
echo ''.$f->user($row['uid']).' ('.$f->datetime1($row['time']).'):';
echo '
'.$row['vsebina'].'
';
echo '';
}
$i++;
}
echo '';
}
/**
* izpise komentarje na anketo
*
*/
function testiranje_komentarji_anketa () {
global $lang;
global $site_url;
global $admin_type;
global $global_user_id;
$b = new Branching($this->anketa);
$f = new Forum;
$d = new Dostop();
SurveySetting::getInstance()->Init($this->anketa);
$sortpostorder = SurveySetting::getInstance()->getSurveyMiscSetting('sortpostorder');
$commentmarks = SurveySetting::getInstance()->getSurveyMiscSetting('commentmarks');
$survey_comment = SurveySetting::getInstance()->getSurveyMiscSetting('survey_comment');
$survey_comment_resp = SurveySetting::getInstance()->getSurveyMiscSetting('survey_comment_resp');
$comment_count = $this->testiranje_komentarji_count();
$commentmarks_who = SurveySetting::getInstance()->getSurveyMiscSetting('commentmarks_who');
$rowa = SurveyInfo::getInstance()->getSurveyRow();
echo '';
echo '
';
# VV: privzeto naj bodo samo nerešeni komentarji
if (!isset($_GET['only_unresolved'])) {
$_GET['only_unresolved'] = 1;
}
# samo nerešeni komentarji
if ($commentmarks == 0) {
echo '
';
echo '';
echo '';
echo '
';
}
else {
echo $lang['move_show'].':
';
}
$only_unresolved = " ";
switch($_GET['only_unresolved']){
case 1:
$only_unresolved = " AND ocena <= '1' ";
break;
case 2:
$only_unresolved = " AND ocena = '0' ";
break;
case 3:
$only_unresolved = " AND ocena = '1' ";
break;
case 4:
$only_unresolved = " AND ocena = '2' ";
break;
case 5:
$only_unresolved = " AND ocena = '3' ";
break;
default:
break;
}
echo '
';
// Splosni komentarji urednikov - levo
echo '
';
echo '
';
echo '
';
// Splosni komentarji respondentov - desno
echo '
';
echo '
';
echo '
';
echo '
'; // div.komentarji_anketa_holder
}
function testiranje_komentarji_komentarji_na_anketo ($return = true) {
$rowi = SurveyInfo::getInstance()->getSurveyRow();
#komentarji na anketo
# vsi komentarji na anketo
$strta = "SELECT count(*) FROM post WHERE tid='".$rowi['thread']."' AND parent > 0";
$sqlta = sisplet_query($strta);
list($rowta) = mysqli_fetch_row($sqlta);
# nerešeni komentarji: only_unresolved => ocena <= 1
$strtu = "SELECT count(*) FROM post WHERE tid='".$rowi['thread']."' AND parent > 0 AND ocena <= 1 ";
$sqltu = sisplet_query($strtu);
list($rowtu) = mysqli_fetch_row($sqltu);
if ($return)
return '(
'.(int)$rowtu.'/'.(int)$rowta.')';
else
return (int)$rowtu;
}
public function testiranje_komentarji_count () {
$comment_count = array();
$rowi = SurveyInfo::getInstance()->getSurveyRow();
// KOMENTARJI NA ANKETO - UREDNIK
# vsi komentarji na anketo
$strta = "SELECT count(*) FROM post WHERE tid='".$rowi['thread']."' AND parent > 0";
$sqlta = sisplet_query($strta);
list($rowta) = mysqli_fetch_row($sqlta);
# nerešeni komentarji: only_unresolved => ocena <= 1
$strtu = "SELECT count(*) FROM post WHERE tid='".$rowi['thread']."' AND parent > 0 AND ocena <= 1 ";
$sqltu = sisplet_query($strtu);
list($rowtu) = mysqli_fetch_row($sqltu);
//(int)$rowtu.'/'.(int)$rowta;
$comment_count['survey_admin']['all'] = (int)$rowta;
$comment_count['survey_admin']['unresolved'] = (int)$rowtu;
// KOMENTARJI NA ANKETO - RESPONDENT
# vsi komentarji na anketo
$strta = "SELECT count(*) FROM srv_comment_resp WHERE ank_id='".$this->anketa."'";
$sqlta = sisplet_query($strta);
list($rowta) = mysqli_fetch_row($sqlta);
# nerešeni komentarji: only_unresolved => ocena <= 1
$strtu = "SELECT count(*) FROM srv_comment_resp WHERE ank_id='".$this->anketa."' AND ocena <= 1 ";
$sqltu = sisplet_query($strtu);
list($rowtu) = mysqli_fetch_row($sqltu);
//(int)$rowtu.'/'.(int)$rowta;
$comment_count['survey_resp']['all'] = (int)$rowta;
$comment_count['survey_resp']['unresolved'] = (int)$rowtu;
// KOMENTARJI NA VPRASANJE
# naenkrat preberemo vse spremenljivke, da ne delamo queryja vsakic posebej
$spremenljivke = Cache::cache_all_srv_spremenljivka($this->anketa, true);
$spr_id=array();
$threads=array();
if ( is_array($spremenljivke) && count($spremenljivke) > 0 ) {
foreach ($spremenljivke as $id=>$value) {
$spr_id[] = $id;
if ((int)$value['thread'] > 0) {
$threads[] = $value['thread'];
}
}
}
if (count($spr_id) > 0) {
#preštejemo komentarje uporabnikov na vprašanja
# srv_data_text where spr_id = 0 AND vre_id IN (id-ji spremenljivk)
$strqr = "SELECT count(*) FROM srv_data_text".$this->db_table." WHERE spr_id=0 AND vre_id IN (".implode(',',$spr_id).")";
$sqlqr = sisplet_query($strqr);
list($rowqr) = mysqli_fetch_row($sqlqr);
#končani komentarji respondentov
#text2 = 2 => končan
#text2 = 3 => nerelevantno
$strqrf = "SELECT count(*) FROM srv_data_text".$this->db_table." WHERE spr_id=0 AND vre_id IN (".implode(',',$spr_id).") AND text2 IN (2,3)";
$sqlqrf = sisplet_query($strqrf);
list($rowqrf) = mysqli_fetch_row($sqlqrf);
# preštejemo
if (count($threads) > 0) {
# vsi komentarji na anketo
$strta = "SELECT count(*) FROM post WHERE tid IN (".implode(',',$threads).") AND parent > 0";
$sqlta = sisplet_query($strta);
list($rowtqa) = mysqli_fetch_row($sqlta);
# nerešeni komentarji: only_unresolved => ocena <= 1
$strtu = "SELECT count(*) FROM post WHERE tid IN (".implode(',',$threads).") AND parent > 0 AND ocena IN (2,3) ";
$sqltu = sisplet_query($strtu);
list($rowtqu) = mysqli_fetch_row($sqltu);
}
}
#vsi
//$all = (int)((int)$rowqr + (int)$rowtqa);
#nerešeni
//$unresolved = $all - (int)((int)$rowqrf + (int)$rowtqu);
$comment_count['question']['all'] = (int)((int)$rowqr + (int)$rowtqa);
$comment_count['question']['unresolved'] = $comment_count['question']['all'] - (int)((int)$rowqrf + (int)$rowtqu);
// KOMENTARJI NA IF ALI BLOK
# naenkrat preberemo vse ife in bloke, da ne delamo queryja vsakic posebej
$ifi = Cache::cache_all_srv_if($this->anketa, true);
$if_id = array();
$threads_if = array();
if ( is_array($ifi) && count($ifi) > 0 ) {
foreach ($ifi as $id=>$value) {
$if_id[] = $id;
if ((int)$value['thread'] > 0) {
$threads_if[] = $value['thread'];
}
}
}
if (count($if_id) > 0) {
#preštejemo komentarje uporabnikov na vprašanja
# srv_data_text where if_id = 0 AND vre_id IN (id-ji spremenljivk)
$strqr = "SELECT count(*) FROM srv_data_text".$this->db_table." WHERE spr_id=0 AND vre_id IN (".implode(',',$if_id).")";
$sqlqr = sisplet_query($strqr);
list($rowqr_if) = mysqli_fetch_row($sqlqr);
#končani komentarji respondentov
#text2 = 2 => končan
#text2 = 3 => nerelevantno
$strqrf = "SELECT count(*) FROM srv_data_text".$this->db_table." WHERE spr_id=0 AND vre_id IN (".implode(',',$if_id).") AND text2 IN (2,3)";
$sqlqrf = sisplet_query($strqrf);
list($rowqrf_if) = mysqli_fetch_row($sqlqrf);
# preštejemo
if (count($threads_if) > 0) {
# vsi komentarji na anketo
$strta = "SELECT count(*) FROM post WHERE tid IN (".implode(',',$threads_if).") AND parent > 0";
$sqlta = sisplet_query($strta);
list($rowtqa_if) = mysqli_fetch_row($sqlta);
# nerešeni komentarji: only_unresolved => ocena <= 1
$strtu = "SELECT count(*) FROM post WHERE tid IN (".implode(',',$threads_if).") AND parent > 0 AND ocena IN (2,3) ";
$sqltu = sisplet_query($strtu);
list($rowtqu_if) = mysqli_fetch_row($sqltu);
}
}
$comment_count['question']['all'] += (int)((int)$rowqr_if + (int)$rowtqa_if);
$comment_count['question']['unresolved'] += ((int)((int)$rowqr_if + (int)$rowtqa_if)) - ((int)((int)$rowqrf_if + (int)$rowtqu_if));
return $comment_count;
}
/**
* $return pove a vrne text (true) ali samo številko (false)
*/
function testiranje_komentarji_komentarji_na_vprasanje ($return = true) {
# naenkrat preberemo vse spremenljivke, da ne delamo queryja vsakic posebej
$spremenljivke = Cache::cache_all_srv_spremenljivka($this->anketa, true);
$spr_id=array();
$threads=array();
if ( is_array($spremenljivke) && count($spremenljivke) > 0 ) {
foreach ($spremenljivke as $id=>$value) {
$spr_id[] = $id;
if ((int)$value['thread'] > 0) {
$threads[] = $value['thread'];
}
}
}
if (count($spr_id) > 0) {
#preštejemo komentarje uporabnikov na vprašanja
# srv_data_text where spr_id = 0 AND vre_id IN (id-ji spremenljivk)
$strqr = "SELECT count(*) FROM srv_data_text".$this->db_table." WHERE spr_id=0 AND vre_id IN (".implode(',',$spr_id).")";
$sqlqr = sisplet_query($strqr);
list($rowqr) = mysqli_fetch_row($sqlqr);
#končani komentarji respondentov
#text2 = 2 => končan
#text2 = 3 => nerelevantno
$strqrf = "SELECT count(*) FROM srv_data_text".$this->db_table." WHERE spr_id=0 AND vre_id IN (".implode(',',$spr_id).") AND text2 IN (2,3)";
$sqlqrf = sisplet_query($strqrf);
list($rowqrf) = mysqli_fetch_row($sqlqrf);
# preštejemo
if (count($threads) > 0) {
# vsi komentarji na anketo
$strta = "SELECT count(*) FROM post WHERE tid IN (".implode(',',$threads).") AND parent > 0";
$sqlta = sisplet_query($strta);
list($rowtqa) = mysqli_fetch_row($sqlta);
# nerešeni komentarji: only_unresolved => ocena <= 1
$strtu = "SELECT count(*) FROM post WHERE tid IN (".implode(',',$threads).") AND parent > 0 AND ocena IN (2,3) ";
$sqltu = sisplet_query($strtu);
list($rowtqu) = mysqli_fetch_row($sqltu);
}
}
#vsi
$all = (int)((int)$rowqr + (int)$rowtqa);
# nerešeni
$unresolved = $all - (int)((int)$rowqrf + (int)$rowtqu);
if ($return)
// '(
'.$unresolved.'/'.$all.')';
return $unresolved;
else
return $unresolved;
}
/**
* izpise vprasanja, ki imajo komentarje in poleg tudi razprte komentarje
*
*/
function testiranje_komentarji () {
global $lang;
global $site_url;
global $admin_type;
global $global_user_id;
$lang_admin = $lang;
//$sa = new SurveyAdmin(1, $this->anketa);
include_once('../../main/survey/app/global_function.php');
new \App\Controllers\SurveyController(true);
save('forceShowSpremenljivka', true);
$f = new Forum;
$c = 0;
$lang = $lang_admin;
$b = new Branching($this->anketa);
$d = new Dostop();
$rowi = SurveyInfo::getInstance()->getSurveyRow();
SurveySetting::getInstance()->Init($this->anketa);
$question_resp_comment_viewadminonly = SurveySetting::getInstance()->getSurveyMiscSetting('question_resp_comment_viewadminonly');
$question_comment_viewadminonly = SurveySetting::getInstance()->getSurveyMiscSetting('question_comment_viewadminonly');
$question_comment_viewauthor = SurveySetting::getInstance()->getSurveyMiscSetting('question_comment_viewauthor');
$sortpostorder = SurveySetting::getInstance()->getSurveyMiscSetting('sortpostorder');
$question_note_view = SurveySetting::getInstance()->getSurveyMiscSetting('question_note_view');
$addfieldposition = SurveySetting::getInstance()->getSurveyMiscSetting('addfieldposition');
$commentmarks = SurveySetting::getInstance()->getSurveyMiscSetting('commentmarks');
$commentmarks_who = SurveySetting::getInstance()->getSurveyMiscSetting('commentmarks_who');
$question_comment_viewadminonly = ($question_comment_viewadminonly == '') ? 4 : $question_comment_viewadminonly;
$question_resp_comment_viewadminonly = ($question_resp_comment_viewadminonly == '') ? 4 : $question_resp_comment_viewadminonly;;
$comment_count = $this->testiranje_komentarji_count();
echo '';
/* - ZAČASNO ZAKOMENTIRAN TOOLTIP (prekriva vsebino za redizajn) @TGecho '
';
echo '';
echo '' . $lang['srv_survey_testdata2'] . ': '.$lang['srv_testdata_text'].'';
echo ''.$lang['srv_preview_testdata_longtext'].'
';
echo '';
echo ''; // expanded-tooltip bottom
echo ''; // tooltip */
echo '
';
# VV: privzeto naj bodo samo nerešeni komentarji
if (!isset($_GET['only_unresolved'])) {
$_GET['only_unresolved'] = 1;
}
$sqlf1 = sisplet_query("SELECT p.id FROM post p WHERE p.tid='$rowi[thread]' AND p.ocena='5'");
while ($rowf1 = mysqli_fetch_array($sqlf1)) {
$s = sisplet_query("SELECT * FROM views WHERE pid='$rowf1[id]' AND uid='$global_user_id'");
if (mysqli_num_rows($s) == 0)
$show_survey_comment = 1;
}
// vsa vprasanja
echo '';
// echo ' '.Help::display('srv_comments_only_unresolved').'';
// Nov nacin kjer se sprehodimo cez branching, ker imamo lahko tudi komentarje na ife in bloke
Common::getInstance()->Init($this->anketa);
$branching_array = Common::getBranchingOrder();
if (count($branching_array) > 0) {
$view = 1;
$b = new Branching($this->anketa);
echo '
';
foreach($branching_array AS $element){
// Gre za if ali blok
if($element['if_id'] > 0){
$if_id = $element['if_id'];
$sql1 = sisplet_query("SELECT * FROM srv_if WHERE id = '$if_id'");
$row1 = mysqli_fetch_array($sql1);
$orderby = $sortpostorder == 1 ? 'DESC' : 'ASC' ;
$tid = $row1['thread'];
$only_unresolved = " ";
$only_unresolved2 = " ";
if ($_GET['only_unresolved'] == 1) $only_unresolved = " AND ocena <= 1 ";
if ($_GET['only_unresolved'] == 1) $only_unresolved2 = " AND text2 <= 1 ";
if ($_GET['only_unresolved'] == 2) $only_unresolved = " AND ocena = 0 ";
if ($_GET['only_unresolved'] == 2) $only_unresolved2 = " AND text2 = 0 ";
if ($_GET['only_unresolved'] == 3) $only_unresolved = " AND ocena = 1 ";
if ($_GET['only_unresolved'] == 3) $only_unresolved2 = " AND text2 = 1 ";
if ($_GET['only_unresolved'] == 4) $only_unresolved = " AND ocena = 2 ";
if ($_GET['only_unresolved'] == 4) $only_unresolved2 = " AND text2 = 2 ";
if ($_GET['only_unresolved'] == 5) $only_unresolved = " AND ocena = 3 ";
if ($_GET['only_unresolved'] == 5) $only_unresolved2 = " AND text2 = 3 ";
$tema_vsebuje = substr($lang['srv_forum_intro'],0,10); // da ne prikazujemo 1. default sporocila
if ($admin_type <= $question_comment_viewadminonly) { // vidi vse komentarje
$sqlt = sisplet_query("SELECT * FROM post WHERE vsebina NOT LIKE '%{$tema_vsebuje}%' AND tid='$tid' $only_unresolved ORDER BY time $orderby, id $orderby");
} elseif ($question_comment_viewauthor==1) { // vidi samo svoje komentarje
$sqlt = sisplet_query("SELECT * FROM post WHERE vsebina NOT LIKE '%{$tema_vsebuje}%' AND tid='$tid' $only_unresolved AND uid='$global_user_id' ORDER BY time $orderby, id $orderby");
} else { // ne vidi nobenih komentarjev
$sqlt = sisplet_query("SELECT * FROM post WHERE 1=0");
}
if (($_GET['all_questions']=='1') OR (mysqli_num_rows($sqlt) > 0)) {
$c++;
echo '- ';
echo '
';
// Blok
if($row1['tip'] == 1){
echo '
';
echo 'BLOCK ('.$row1['number'].')';
echo '
';
}
// If
else{
echo '
';
$b->conditions_display($if_id);
echo '
';
}
echo '
';
echo ' ';
echo '';
echo '
';
}
}
// Gre za navadno vprasanje
else{
$spr_id = $element['spr_id'];
$sql1 = sisplet_query("SELECT tip, thread, note FROM srv_spremenljivka WHERE id = '$spr_id'");
$row1 = mysqli_fetch_array($sql1);
$orderby = $sortpostorder == 1 ? 'DESC' : 'ASC';
$tid = $row1['thread'];
$only_unresolved = " ";
$only_unresolved2 = " ";
if ($_GET['only_unresolved'] == 1) $only_unresolved = " AND ocena <= 1 ";
if ($_GET['only_unresolved'] == 1) $only_unresolved2 = " AND text2 <= 1 ";
if ($_GET['only_unresolved'] == 2) $only_unresolved = " AND ocena = 0 ";
if ($_GET['only_unresolved'] == 2) $only_unresolved2 = " AND text2 = 0 ";
if ($_GET['only_unresolved'] == 3) $only_unresolved = " AND ocena = 1 ";
if ($_GET['only_unresolved'] == 3) $only_unresolved2 = " AND text2 = 1 ";
if ($_GET['only_unresolved'] == 4) $only_unresolved = " AND ocena = 2 ";
if ($_GET['only_unresolved'] == 4) $only_unresolved2 = " AND text2 = 2 ";
if ($_GET['only_unresolved'] == 5) $only_unresolved = " AND ocena = 3 ";
if ($_GET['only_unresolved'] == 5) $only_unresolved2 = " AND text2 = 3 ";
$tema_vsebuje = substr($lang['srv_forum_intro'],0,10); // da ne prikazujemo 1. default sporocila
if ($admin_type <= $question_comment_viewadminonly) { // vidi vse komentarje
$sqlt = sisplet_query("SELECT * FROM post WHERE vsebina NOT LIKE '%{$tema_vsebuje}%' AND tid='$tid' $only_unresolved ORDER BY time $orderby, id $orderby");
}
elseif ($question_comment_viewauthor==1) { // vidi samo svoje komentarje
$sqlt = sisplet_query("SELECT * FROM post WHERE vsebina NOT LIKE '%{$tema_vsebuje}%' AND tid='$tid' $only_unresolved AND uid='$global_user_id' ORDER BY time $orderby, id $orderby");
}
else { // ne vidi nobenih komentarjev
$sqlt = sisplet_query("SELECT * FROM post WHERE 1=0");
}
$sql2 = sisplet_query("SELECT COUNT(*) AS count FROM srv_data_text".$this->db_table." WHERE spr_id='0' AND vre_id='$spr_id' $only_unresolved2");
$row2 = mysqli_fetch_array($sql2);
if ( ($_GET['all_questions']=='1') OR ( mysqli_num_rows($sqlt) > 0 || $row2['count'] > 0 || $row1['note'] != '' ) ) {
$c++;
echo '
';
$b->vprasanje($spr_id);
echo '';
if ($admin_type <= $question_note_view || $question_note_view == '') {
if ($row1['note'] != '') {
echo '
';
}
}
echo ''; #div.question_comment_holder
}
}
}
echo '';
if ($c == 0) {
echo '
';
}
}
else {
echo '
';
echo $lang['srv_no_comments'];
echo '
';
}
echo '
'; // branching
echo '