Init(self::$sid, self::$uid);
# polovimo profile iz baze
$stringSelect = "SELECT * FROM srv_zoom_profiles WHERE sid='" . self::$sid . "' AND uid='" . self::$uid . "'";
$querySelect = sisplet_query($stringSelect);
#prvi profil je privezti - brez zooma
self::$profiles[0] = array('id'=>0, 'name'=>$lang['srv_default_without']);
# če obstajajo profili iz baze jih dodamo
if (mysqli_num_rows($querySelect)) {
#najprej dodamo sejo če obstaja
session_start();
if (isset($_SESSION['surveyZoom'][self::$sid])) {
self::$profiles[-1] = $_SESSION['surveyZoom'][self::$sid];
}
while ( $rowSelect = mysqli_fetch_assoc($querySelect) ) {
self::$profiles[$rowSelect['id']] = $rowSelect;
self::$profiles[$rowSelect['id']]['vars'] = unserialize($rowSelect['vars']);
self::$profiles[$rowSelect['id']]['conditions'] = unserialize($rowSelect['conditions']);
}
} else {
# v bazi ni profilov
#nato dodamo sejo če obstaja
session_start();
if (isset($_SESSION['surveyZoom'][self::$sid])) {
self::$profiles[-1] = $_SESSION['surveyZoom'][self::$sid];
}
}
# preverimo ali ima uporabnik nastavljen privzet profil
$dzp = SurveyUserSetting :: getInstance()->getSettings('default_zoom_profile');
if ($dzp == -1 || $dzp > 0 ) {
self::$currentProfileId = $dzp;
} else {
self::$currentProfileId = 0;
self::SetDefaultProfile(0);
}
# če uporabnik nima profilov, in obstajajo demografske spremenljivke naredimo nov DM profil
if (count(self::$profiles) == 1 ) { # 1profil je vedno (privzeti)
$all_spr = Cache::cache_all_srv_spremenljivka(self::$sid);
$variables_to_add = array();
if (is_countable($all_spr) && count($all_spr) > 0) {
foreach ($all_spr AS $id => $spr) {
if (in_array($spr['variable'], array('XSPOL','XIZOBRAZBA','XSTAROST','DMspol','DMizobrazba','DMstarost'))
|| Demografija::getInstance()->isDemografija($spr['variable'])) {
$variables_to_add[] = $id;
}
}
}
if (count ($variables_to_add) > 0 ) {
# dodamo profil in ga izberemo za privzetega
$_SESSION['surveyZoom'][self::$sid] = array('id'=>-1, 'name'=>$lang['srv_zoom_profile_demografija'],'vars'=>$variables_to_add, 'conditions'=> '', 'if_id'=>0);
self::$profiles[-1] = array('id'=>$pid, 'sid'=>self::$sid, 'uid'=>self::$uid, 'name'=>$lang['srv_zoom_profile_demografija'], 'vars'=>$variables_to_add,'conditions'=>'');
if (!isset($_POST['pid']) && !((int)$_POST['pid'] > 0)) {
#self::SetDefaultProfile(-1);
#self::$currentProfileId = -1;
}
}
}
}
static function DisplayLink($hideAdvanced = true) {
global $lang;
$css = (self::$currentProfileId == 0 ? ' gray' : '');
if ($hideAdvanced == false || self::$currentProfileId != 0) {
echo '
';
echo ' '.$lang['srv_zoom_setting'].'';
echo '
';
}
}
function ajax() {
switch ($_GET['a']) {
case 'showProfile':
self::showProfile();
break;
case 'changeProfile':
self::changeProfile($_POST['pid']);
break;
case 'saveProfile':
self::saveProfile();
break;
case 'deleteProfile':
self::deleteProfile($_POST['pid']);
break;
case 'renameProfile':
self::renameProfile();
break;
case 'changeZoomCheckbox':
self::changeZoomCheckbox();
break;
case 'removeZoomCheckbox':
self::removeZoomCheckbox();
break;
case 'createNewProfile':
self::createNewProfile();
break;
case 'togleExtended':
self::togleExtended();
break;
case 'toggleShowZoomVariables':
self::toggleShowZoomVariables();
break;
case 'doZoomFromInspect':
self::doZoomFromInspect();
break;
default:
print_r("
");
print_r($_GET);
print_r($_POST);
print_r("
");
break;
}
}
static function getCurentProfileId() { return self::$currentProfileId; }
/** Ponastavi id privzetega profila
*
*/
static function SetDefaultProfile($pid) {
self::$currentProfileId = $pid;
$saved = SurveyUserSetting :: getInstance()->saveSettings('default_zoom_profile',$pid);
}
function changeProfile($pid) {
$tmp_profiles = self::$profiles;
# če profil z pid ne obstaja nastavimo prvega iz baze (ki pa ni demografija)
if (!isset($tmp_profiles[$pid]) && count($tmp_profiles) > 0) {
if (isset($tmp_profiles[-1]) && (int)$pid != -1) {
unset($tmp_profiles[-1]);
}
if (count($tmp_profiles) > 0){
$pid = key(self::$profiles);
} else {
$pid = 0;
}
}
self::SetDefaultProfile($pid);
}
function showProfile() {
global $lang;
echo '
'."\n";
}
/** Funkcija prikaze osnovnih informacije profila
*
*/
function DisplayProfileData($current_pid=null) {
global $lang;
if (isset($_POST['error'])) {
echo '* '.$lang[$_POST['error']].' ';
}
# podatki profila
if ($current_pid == null) {
$current_pid = self::$currentProfileId;
}
$cp = self::$profiles[$current_pid];
$vars = $cp['vars'];
$all_spr = Cache::cache_all_srv_spremenljivka(self::$sid,true);
echo '
';
echo $lang['srv_zoom_choose'];
echo '
';
if (count($all_spr) > 0)
foreach ($all_spr AS $id => $spremenljivka) {
if ( in_array($spremenljivka['tip'], array(1,2,3) ) ) {
echo '
';
echo '
';
echo ' ';
echo ' ';
echo '
';
echo '
';
}
else if ( in_array($spremenljivka['tip'], array(6,16,17))) {
echo '
';
# izpišemo glavno spremenljivko
echo '
';
echo ' ';
echo '
';
# izpišemo gride (zamaknjeno)
$sql = sisplet_query("SELECT id, naslov, variable FROM srv_vrednost WHERE spr_id='$id' AND other = 0 ORDER BY vrstni_red");
while ($row = mysqli_fetch_assoc($sql)) {
echo '
';
echo ' ';
echo ' ';
echo '
';
}
echo '
';
}
}
}
/* Shranimo izbrane variable in resetiramo if na 0, ter pobrišemo morebitni pogoj če obstaja
*
*/
static function SaveProfile() {
global $lang, $global_user_id;
$pid = isset($_POST['pid']) && (int)$_POST['pid'] > 0
? (int)$_POST['pid'] # normaln profil
: -1; #seja
$profil_data = self::$profiles[$pid];
# preverimo ali je star profil imel kak if če ja ga pobrišemo
if ((int)$profil_data['if_id'] > 0 ) {
if ((int)$if_id > 0) {
$delStr = "DELETE FROM srv_if WHERE id = '$if_id'";
sisplet_query($delStr);
$delStr = "DELETE FROM srv_condition WHERE if_id = '$if_id'";
sisplet_query($delStr);
sisplet_query("COMMIT");
}
}
# ali delamo preko seje ali baze
if ($pid > 0) {
# shranimo v bazo
$vars = serialize(isset($_POST['vars']) ? $_POST['vars'] : '');
$updateString = "UPDATE srv_zoom_profiles SET vars = '$vars', conditions='', if_id=0 WHERE id='$pid'";
$updatequery = sisplet_query($updateString);
sisplet_query("COMMIT");
} else {
session_start();
# shranjujenmo v sejo
$pid=-1;
#LANG
$_SESSION['surveyZoom'][self::$sid] = array('id'=>-1,'vars'=>$_POST['vars'], 'conditions'=> '', 'if_id'=>0);
if (!isset($_SESSION['surveyZoom'][self::$sid]['name']) || $_SESSION['surveyZoom'][self::$sid]['name'] == '') {
$_SESSION['surveyZoom'][self::$sid]['name'] = $lang['srv_zoom_profile_session'];
}
session_commit();
}
self::SetDefaultProfile($pid);
}
/** shranimo nov profil
*
* Enter description here ...
*/
function createNewProfile() {
global $lang,$global_user_id;
$return = array('newId' => -1, 'error'=>'1','msg'=> 'Profila ni bilo mogoče kreirati!' );
#LANG
$name = isset($_POST['name']) ? $_POST['name'] : 'Nov profil';
$vars = serialize(isset($_POST['vars']) ? $_POST['vars'] : '');
$iStr = "INSERT INTO srv_zoom_profiles (sid, uid, name,vars,conditions) VALUES ('".self::$sid."', '".self::$uid."', '$name','$vars','')";
$sql = sisplet_query($iStr);
$return['msg'] =$iStr;
if (!$sql) {
$return['error'] = '1';
$return['msg'] = 'Pri kreiranju profila so bile težave!';
} else {
$pid = mysqli_insert_id($GLOBALS['connect_db']);
sisplet_query("COMMIT");
$return['newId'] = $pid;
self::getProfiles();
self::SetDefaultProfile($pid);
$return['error'] = '0';
$return['msg'] = 'Profil je bil uspešno kreiran:'.$pid;
}
echo json_encode($return);
exit;
}
static function deleteProfile($pid = 0) {
#pobrišemo pogoj če obstaha
$if_id = self::$profiles[$pid]['if_id'];
if ((int)$if_id > 0) {
$stringUpdate = "DELETE FROM srv_if WHERE id = ".$if_id;
$updated = sisplet_query($stringUpdate);
sisplet_query("COMMIT");
}
if (isset($pid) && $pid == -1) {
session_start();
unset($_SESSION['surveyZoom'][self::$sid]);
session_commit();
} else if (isset($pid) && $pid > 0) {
// Izbrišemo profil in nastavimo privzetega
$stringUpdate = "DELETE FROM srv_zoom_profiles WHERE id = ".$pid;
$updated = sisplet_query($stringUpdate);
sisplet_query("COMMIT");
}
# nastavimo privzet profil
self::getProfiles();
self::SetDefaultProfile('0');
}
static function displayZoomConditions($showDiv = true) {
global $lang;
$vars = self::$profiles[self::$currentProfileId]['vars'];
$all_spr = Cache::cache_all_srv_spremenljivka(self::$sid);
if (is_countable($vars) && count($vars) > 0) {
$conditions = self::$profiles[self::$currentProfileId]['conditions'];
if ($showDiv == true) {
echo '
';
if (isset($vre) && $vre > 0) {
# imamo multigride polovimo grids
$sql = sisplet_query("SELECT id, naslov, variable FROM srv_grid WHERE spr_id='$spr' AND other = 0 ORDER BY vrstni_red");
while ($row = mysqli_fetch_assoc($sql)) {
echo '';
echo " ";
}
} else {
# imamo navaden polovimo vrednosti
$sql = sisplet_query("SELECT id, naslov, variable FROM srv_vrednost WHERE spr_id='$spr' AND other = 0 ORDER BY vrstni_red");
while ($row = mysqli_fetch_assoc($sql)) {
echo '';
echo " ";
}
}
echo '