From 19985dbb8c0aa66dc4bf7905abc1148de909097d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anton=20Luka=20=C5=A0ijanec?= Date: Tue, 11 Jan 2022 12:35:47 +0100 Subject: prvi-commit --- .../classes/class.SurveyConditionProfiles.php | 977 +++++++++++++++++++++ 1 file changed, 977 insertions(+) create mode 100644 admin/survey/classes/class.SurveyConditionProfiles.php (limited to 'admin/survey/classes/class.SurveyConditionProfiles.php') diff --git a/admin/survey/classes/class.SurveyConditionProfiles.php b/admin/survey/classes/class.SurveyConditionProfiles.php new file mode 100644 index 0000000..20ae21a --- /dev/null +++ b/admin/survey/classes/class.SurveyConditionProfiles.php @@ -0,0 +1,977 @@ + 0) { + self :: $uid = $uid ; + } else { + global $global_user_id; + self :: $uid = $global_user_id; + } + + SurveyUserSetting :: getInstance()->Init(self::$sid, self::$uid); + if (self::$inited == false) { + self::$inited = self :: RefreshData(); + } + } + + + static function RefreshData() { + self::$profiles = array(); + # dodamo sistemske profile, skreiramo jih "on the fly" + self :: addSystemProfiles(); + + # preberemo podatke vseh profilov ki so na voljo in jih dodamo v array + $stringSelect = "SELECT * FROM srv_condition_profiles WHERE sid='" . self::$sid . "' AND uid='" . self::$uid . "' "; + $querySelect = sisplet_query($stringSelect); + + if (mysqli_num_rows($querySelect)) { + while ( $rowSelect = mysqli_fetch_assoc($querySelect) ) { + self::$profiles[$rowSelect['id']] = $rowSelect; + } + } + # poiscemo privzet profil + self::$currentProfileId = SurveyUserSetting :: getInstance()->getSettings('default_condition_profile'); + + if (!self::$currentProfileId) { + self::$currentProfileId = 1; + } + + # ce imamo nastavljen curent pid in profil z tem pid ne obstaja nastavomo na privzet profil + if (self::$currentProfileId != 1) { + if (!isset(self::$profiles[self::$currentProfileId])) { + self::$currentProfileId = 1; + self::setDefaultProfileId(self::$currentProfileId); + } + } + + # ce ne obstajajo podatki za cpid damo error + if (!isset(self::$profiles[self::$currentProfileId])) { + die("Profile data is missing!"); + return false; + } else { + return true; + } + + } + + public static function getSystemDefaultProfile() { + return (int)1; + } + + public static function getCurentProfileId() { + return (int)self::$currentProfileId; + } + + public static function setCurrentProfileId($id) { + if (isset(self::$profiles[$id])) + { + self::$currentProfileId = $id; + } + } + + public function getProfileName($pid) { + return self::$profiles[$pid]['name']; + } + + /* Vrne ID in ime trenutno izbranega profila + * + */ + function getCurentProfile() { + return array('id'=>self::$currentProfileId,'name'=>self::$profiles[self::$currentProfileId]['name']); + } + + + static function setDefaultProfileId($pid = 0) { + if (!$pid) { + $pid = 1; + } + + # profila inspect ne pustimo nastavit za privzetega, ker je tako izbran preko inspect, pustimo pa urejanje + if( self::$profiles[$pid]['type'] != 'inspect') { + # če smo izbrali drug profil resetiramo še profil profilov na trenutne nastavitve + SurveyUserSetting :: getInstance()->saveSettings('default_profileManager_pid', '0'); + + SurveyUserSetting :: getInstance()->saveSettings('default_condition_profile', $pid); + self::$currentProfileId = $pid; + } + return true; + } + + static function addSystemProfiles() { + global $lang; + + # skreiramo sistemske profile za vse spremenljivke + self::$profiles['1'] = array('id'=>'1','uid'=>self::$uid,'name'=>$lang['srv_condition_profile_all'],'system'=>1, 'if_id'=>0); + } + + static function DisplayLink($hideAdvanced = true) { + global $lang; + // profili statusov + $allProfiles = self :: $profiles; + $css = (self :: $currentProfileId == SCP_DEFAULT_PROFILE ? ' gray' : ''); + + if ($hideAdvanced == false || self :: $currentProfileId != SCP_DEFAULT_PROFILE) { + echo '
  •  
  • '; + echo '
  • '; + echo '' . $lang['srv_condition'] . ''."\n"; + echo '
  • '; + } + } + + static function getProfileData($pid) { + // preverimo ali smo v razredu že lovili podatke za ta profil, potem jih preberemo čene jih osvežimo + if ( isset( self::$profiles[$pid] ) ) { + return self::$profiles[$pid]; + } else { + self::$inited = self :: RefreshData(); + return self::$profiles[$pid]; + } + } + + + static function ajax() { + $pid = $_POST['pid']; + switch ($_GET['a']) { + case 'show_condition_profile' : + self :: showProfiles($pid); + break; + case 'change_condition_profile' : +# if (isset($_POST['condition_label']) && $_POST['condition_label'] != '') { +# self :: setConditionLabel($pid,$_POST['condition_label']); +# } + if (isset($_POST['condition_error']) && $_POST['condition_error'] != '') { + self :: setConditionError($pid,$_POST['condition_error']); + } + self :: setDefaultProfileId($pid); + break; + case 'condition_remove' : + self :: conditionRemove(); + break; + case 'create_condition_profile' : + self :: createNewProfile(); + break; + case 'delete_condition_profile' : + self :: deleteProfile(); + break; + case 'rename_condition_profile' : + self :: renameProfile(); + break; + default: + echo 'ERROR! Missing function for action: '.$_GET['a'].'! (SurveyConditionProfile)'; + break; + } + } + + static function showProfiles ($pid = -1) { + global $global_user_id, $lang; + + if ($pid > 0) { + $_currMPID = $pid; + } else { + // poiščmo uporabniški privzeti profil + $_currMPID = self::$currentProfileId; + } + + // Naslov + echo '

    '.$lang['srv_condition_settings'].'

    '; + + echo ''; + + if ( self :: $currentProfileId != SCP_DEFAULT_PROFILE ) { + echo '
    '; + echo $lang['srv_not_default_setting']; + echo '

    '; + } + + echo '
    '; + + echo '
    '; + foreach (self :: $profiles as $key => $value) { + + echo '
    '; + + echo $value['name']; + + if($_currMPID == $value['id']){ + if ( self :: $profiles[$_currMPID]['if_id'] != 0) { + echo ''; + } + if ( self :: $profiles[$_currMPID]['if_id'] != 0) { + echo ''; + } + } + + echo '
    '; + } + echo '
    '; + echo '
    '; + echo '
    '; + + + // tukaj prikazemo vsebino ifa + echo '
    '; + echo '
    '; + + if (self :: $profiles[$_currMPID]['if_id'] > 0) { + $b = new Branching(self::$sid); + $b->condition_editing(self :: $profiles[$_currMPID]['if_id'], -2); + } + else { + echo $lang['srv_filter_profiles_note']; + } + + echo '
    '; + echo '
    '; + + + echo ''; + + + echo '
    '; + // gumbi: preklici, ustvari nov, pozeni trenutni + echo ''.$lang['srv_run_selected_profile'].''; + echo ''.$lang['srv_create_new_profile'].''; + echo ''.$lang['srv_close_profile'].''; + echo '
    '; + + + // cover Div + echo '
    '; + + // div za shranjevanje novega profila + echo '
    '.$lang['srv_missing_profile_name'].': '; + echo ''; + echo ''.$lang['srv_close_profile'].''; + echo ''.$lang['srv_save_profile'].''; + echo '
    '; + + // div za preimenovanje + echo '
    '.$lang['srv_missing_profile_name'].': '; + echo ''; + echo ''; + echo ''.$lang['srv_close_profile'].''; + echo ''.$lang['srv_rename_profile_yes'].''; + echo '
    '; + + // div za brisanje + echo '
    '.$lang['srv_missing_profile_delete_confirm'].': ' . self :: $profiles[$_currMPID]['name'] . '?'; + echo ''; + echo ''.$lang['srv_close_profile'].''; + echo ''.$lang['srv_delete_profile_yes'].''; + echo '
    '; + } + + + static function createNewProfile() { + $name = isset($_POST['name']) ? $_POST['name'] : 'Nov profil'; + + $sql = sisplet_query("INSERT INTO srv_if (id) VALUES ('')"); + if (!$sql) echo '-1'; + $if_id = mysqli_insert_id($GLOBALS['connect_db']); + + sisplet_query("INSERT INTO srv_condition (id, if_id, vrstni_red) VALUES ('', '$if_id', '1')"); + + $sql = sisplet_query("INSERT INTO srv_condition_profiles (id, sid, uid, name, if_id) VALUES ('', '".self::$sid."', '".self::$uid."', '$name', '$if_id')"); + if (!$sql) echo '-2'; + + $pid = mysqli_insert_id($GLOBALS['connect_db']); + echo $pid; + } + + static function deleteProfile() { + $pid = $_POST['pid']; + if ($pid > 0 ) { + $sql = sisplet_query("SELECT * FROM srv_condition_profiles WHERE id = '$pid'"); + $row = mysqli_fetch_array($sql); + $if = $row['if_id']; + + # če je inspect pobrišemo inspect profil + if ($row['type'] == 'inspect') { + #preverimi ali imamo nastavljen pogoj za inspect + $if_id = (int)SurveyUserSetting :: getInstance()->getSettings('inspect_if_id'); + if ($if_id > 0) { + #odstranimo zapis za inspect + SurveyUserSetting :: getInstance()->removeSettings('inspect_if_id'); + } + } + + /* pobrisemo se za ifom*/ + $sql = sisplet_query("SELECT * FROM srv_condition WHERE if_id = '$if'"); + while ($row = mysqli_fetch_array($sql)) { + if ((int)$row[id] > 0) { + sisplet_query("DELETE FROM srv_condition_vre WHERE cond_id='$row[id]'"); + } + } + if ((int)$if > 0) { + sisplet_query("DELETE FROM srv_condition WHERE if_id = '$if'"); + sisplet_query("DELETE FROM srv_if WHERE id = '$if'"); + } + /*-- pobrisemo se za ifom*/ + + $deleteString = "DELETE FROM srv_condition_profiles WHERE id = '" . $pid . "' "; + $sqlDelete = sisplet_query($deleteString); + if (!$sqlDelete) echo mysqli_error($GLOBALS['connect_db']); + } + $pid = 1; + SurveyUserSetting :: getInstance()->saveSettings('default_condition_profile', $pid); + + self::$currentProfileId = $pid; + + } + + static function renameProfile() { + global $lang; + $sqlInsert = -1; + + $name = isset($_POST['name']) ? $_POST['name'] : 'Nov profil'; + $pid = $_POST['pid']; + + if ( $pid != null && $pid != "" && $pid > 1) { + if ( $name == null || $name == "" ) { + $name = $lang['srv_new_profile_ime']; + } + + $updateString = "UPDATE srv_condition_profiles SET name = '" . $name . "' WHERE id = '" . $pid . "'"; + $sqlInsert = sisplet_query($updateString); + } + return $sqlInsert; + } + + static public function setHeader($_header) { + self::$_HEADER = $_header; + } + + static function getAwkConditionString($if_id = null) { + + $awkFilter = ''; + if ($if_id != null) + { + $awkFilter = self :: generateAwkCondition($if_id); + } + else + if (self :: $currentProfileId > 1 && (int)self::$profiles[self :: $currentProfileId]['condition_error'] == 0) + { + $awkFilter = self :: $currentProfileId; + $stringSelect = "SELECT if_id from srv_condition_profiles where id = '".self :: $currentProfileId."'"; + $querySelect = sisplet_query($stringSelect); + list($if_id) = mysqli_fetch_row($querySelect); + if ($if_id > 0) { + $awkFilter = self :: generateAwkCondition($if_id); + } + } + return $awkFilter; + } + + /** + * @desc zgenerira pogoje za AWK branching + */ + static function generateAwkCondition ($if) { + global $lang; + + $echo = ''; + + $sql = Cache::srv_condition($if); + + if (!$sql) echo mysqli_error($GLOBALS['connect_db']); + + $i = 0; + while ($row = mysqli_fetch_assoc($sql)) { + $_spr_id = $row['spr_id']; + + if ($i++ != 0) + if ($row['conjunction'] == 0) + $echo .= '&&'; + else + $echo .= '||'; + + + for ($i=1; $i<=$row['left_bracket']; $i++) + $echo .= '('; + + # imamo spremenljivke (ni kalkulacija ali modercnum) + if ($_spr_id > 0) { + $echo .= self::getAWKSpremenljivka($row); + + // recnum + } elseif ($_spr_id == -1) { + + $echo .= '('.MOD_REC_FIELD.' % '.$row['modul'].'=='.$row['ostanek'].')'; + + // naprava + } elseif ($_spr_id == -4) { + + foreach (self::$_HEADER['meta']['grids'] as $vkey => $variables) { + + if ($variables['variables'][0]['variable'] == 'Device') { + + $sequence = $variables['variables'][0]['sequence']; + $echo .= '($'.$sequence.' == '; + + $device = $lang['srv_para_graph_device'.$row['text']]; + + # ta tekstovne + if (IS_WINDOWS) { + # za windows + $echo .= "\\\"".$device."\\\""; + } + else { + # za linux + $echo .= '"'.$device.'"'; + } + + $echo .= ')'; + } + } + + // calculations - TODO + } elseif ($_spr_id == -2) { + + /*$_calc = self :: generateCalculationAWK($row['id']); + + $echo .= '('; + $echo .= $_calc; + + # dodoamo operacijo + $echo .= self::echoOperator($row['negation'], $row['operator']); + + $echo .= $row['text']; + + $echo .= ')';*/ + } + + for ($i=1; $i<=$row['right_bracket']; $i++) + $echo .= ')'; + + } + + // failsafe, ce se poklika if, pa se ne nastavi pogoja + if ($echo == '') { + $echo .= ' true '; + } + else { + $echo = '('.$echo.')'; + } + + return $echo; + } + + private static function getAWKSpremenljivka($row) { + $_spr_id = $row['spr_id']; + + $row2 = self :: select_from_srv_spremenljivka($_spr_id); + + $_spr_tip = $row2['tip']; + + $echo = ''; + // radio, checkbox, dropdown in multigrid, in multi check + if ( $_spr_tip <= 3 || $_spr_tip == 6 || $_spr_tip == 16 || $_spr_tip == 17) { + + #radio, drop, checkbox + if ($_spr_tip <= 3) { + $sql3 = sisplet_query("SELECT * FROM srv_condition_vre c, srv_vrednost v WHERE cond_id='$row[id]' AND c.vre_id=v.id"); + if (!$sql3) echo mysqli_error($GLOBALS['connect_db']); + + $j = 0; + + # pogoje z več opcijami združenimi z OR dodamo v oklepaj zaradi pravilnosti + if (mysqli_num_rows($sql3) > 1) { + $echo .= '('; + } + + while ($row3 = mysqli_fetch_assoc($sql3)) { + if ($j++ != 0) { + $echo .= '||'; + } + + if ($_spr_tip == 1 || $_spr_tip == 3|| $_spr_tip == 17) { # radio, dropdown + $seq = self ::getSequenceForAWKCondition(array('spr'=>$_spr_id)); + } else if ($_spr_tip == 2) { # checkbox + $seq = self ::getSequenceForAWKCondition(array('spr'=>$_spr_id,'vre'=>$row3['vre_id'])); + } + + $echo .= '$'.$seq; + + # dodoamo operacijo + $echo .= self::echoOperator($row['negation'], $row['operator']); + + # dodamo vrednost ali 1 za checkbox + if ($_spr_tip == 1 || $_spr_tip == 3 || $_spr_tip == 17) { + $echo .= $row3['variable']; + } else if ($_spr_tip == 2) { + $echo .='1'; + } + } + + # pogoje z več opcijami združenimi z OR dodamo v oklepaj zaradi pravilnosti + if (mysqli_num_rows($sql3) > 1) { + $echo .= ')'; + } + + + // multigrid tip = 6,16 + } elseif ( $_spr_tip == 6 || $_spr_tip == 16 || $_spr_tip == 17) { + + $sql3 = sisplet_query("SELECT * FROM srv_condition_grid c WHERE cond_id='$row[id]'"); + if (!$sql3) echo mysqli_error($GLOBALS['connect_db']); + + $sqlMgrid = sisplet_query("SELECT id FROM srv_vrednost WHERE id = '$row[vre_id]'"); + if (!$sqlMgrid) echo mysqli_error($GLOBALS['connect_db']); + $rowMgrid = mysqli_fetch_assoc($sqlMgrid); + + $j = 0; + + # pogoje z več opcijami združenimi z OR dodamo v oklepaj zaradi pravilnosti + if (mysqli_num_rows($sql3) > 1) { + $echo .= '('; + } + # preverimo ali je dvojna tabela + $isDouble == false; + if ($row2['enota'] == 3 ) { + $isDouble=true; + } + while ($row3 = mysqli_fetch_assoc($sql3)) { + if ($j++ != 0) $echo .= '||'; + + if ($isDouble == false || 1) { + $seq = self ::getSequenceForAWKCondition(array('spr'=>$_spr_id, 'vre'=>$rowMgrid['id'], 'grd'=>$row3['grd_id'], 'isDouble' => $isDouble)); + $echo .= '$'.$seq; + + # dodoamo operacijo + $echo .= self::echoOperator($row['negation'], $row['operator']); + + if ($row2['tip'] == 16) { + $echo .= '1'; + } else { + if (!$isDouble) { + $echo .= $row3['grd_id']; + } else { + $str = "select variable from srv_grid where spr_id='$_spr_id' AND id= '$row3[grd_id]'"; + $qry = sisplet_query($str); + list($variable) = mysqli_fetch_row($qry); + $echo .= $variable; + } + + } + } else { + echo 'Error! (SurveyConditionProdiles)'; + var_dump($_spr_id); + var_dump($rowMgrid['id']); + var_dump($row3['grd_id']); + + } + } + # pogoje z več opcijami združenimi z OR dodamo v oklepaj zaradi pravilnosti + if (mysqli_num_rows($sql3) > 1) { + $echo .= ')'; + } + } + + // textbox, number in compute majo drugacne pogoje in opcije + } + elseif ($_spr_tip == 4 || $_spr_tip == 7 || $_spr_tip == 18 || $_spr_tip == 19 || $_spr_tip == 20 || $_spr_tip == 21 || $_spr_tip == 22 || $_spr_tip == 25) + { + + if ($_spr_tip == 7 || $_spr_tip == 18 || $_spr_tip == 19 || $_spr_tip == 20 ) { + $grd = $row['grd_id']; + } else { + $grd = null; + } + if (isset($row['vre_id'])) { + $vre = $row['vre_id']; + } else { + $vre = null; + } + + $seq = self ::getSequenceForAWKCondition(array('spr'=>$_spr_id, 'vre'=>$vre, 'grd'=> $grd)); + + $echo .= '$'.$seq; + + # dodoamo operacijo + $echo .= self::echoOperator($row['negation'], $row['operator']); + + # za numerične + if ($_spr_tip == 7 || $_spr_tip == 18) + { + $echo .= $row['text']; + } + else + { + # ta tekstovne + if (IS_WINDOWS) { + # za windows + $echo .= "\\\"".$row['text']."\\\""; + } else { + # za linux + $echo .= '"'.$row['text'].'"'; + } + } + } + #DATUM + elseif ($_spr_tip == 8) + { + $grd = $row['grd_id']; + if (isset($row['vre_id'])) { + $vre = $row['vre_id']; + } else { + $vre = null; + } + + $seq = self ::getSequenceForAWKCondition(array('spr'=>$_spr_id, 'vre'=>$vre, 'grd'=> $grd)); + + $echo .= 'substr($'.$seq.',7,4)substr($'.$seq.',4,2)substr($'.$seq.',1,2)'; + + # dodoamo operacijo + $echo .= self::echoOperator($row['negation'], $row['operator']); + + $echo .= date("Ymd", strtotime($row['text']));; + #$echo .= $row['text']; + } + return $echo; + } + + /** Vrne awk matematični operator glede na polje operator in negacijo + * + * @param (0,1) $negation + * @param (0,1) $operator + */ + private static function echoOperator($negation = 0, $operator= 0) { + $echo = '=='; + if ($negation == 0) { + if ($operator == 0) + $echo = '=='; + elseif ($operator == 1) + $echo = '!='; + elseif ($operator == 2) + $echo = '<'; + elseif ($operator == 3) + $echo = '<='; + elseif ($operator == 4) + $echo = '>'; + elseif ($operator == 5) + $echo = '>='; + } else { + if ($operator == 0) + $echo = '!='; + elseif ($operator == 1) + $echo = '=='; + elseif ($operator == 2) + $echo = '>'; + elseif ($operator == 3) + $echo = '>='; + elseif ($operator == 4) + $echo = '<'; + elseif ($operator == 5) + $echo = '<='; + } + return $echo; + } + + private static $select_from_srv_spremenljivka = array(); + /** + * pobere in zakesira podatke o spremenljivki (ker se to zlo velikokrat bere) + * + * @param mixed $spremenljivka + */ + static function select_from_srv_spremenljivka ($spremenljivka) { + + if (array_key_exists($spremenljivka, self::$select_from_srv_spremenljivka)) { + return self::$select_from_srv_spremenljivka[$spremenljivka]; + } + + // tole se splaca tam kjer se itak vse spremenljivke preberejo, sam vprasanje, ce se povsod?? + $sql = sisplet_query("SELECT s.* FROM srv_spremenljivka s, srv_grupa g WHERE s.gru_id=g.id AND g.ank_id='".self::$sid."'"); + while ($row = mysqli_fetch_assoc($sql)) { + self :: $select_from_srv_spremenljivka[$row['id']] = $row; + } + + if (array_key_exists($spremenljivka, self :: $select_from_srv_spremenljivka)) { + return self :: $select_from_srv_spremenljivka[$spremenljivka]; + } + + $sql = sisplet_query("SELECT * FROM srv_spremenljivka WHERE id = '$spremenljivka'"); + + self::$select_from_srv_spremenljivka[$spremenljivka] = mysqli_fetch_assoc($sql); + + return self::$select_from_srv_spremenljivka[$spremenljivka]; + + } + + static function getSequenceForAWKCondition ($options = array()) { + $spr_id = (isset($options['spr']) && $options['spr'] != null) ? $options['spr'] : null; + $vre_id = (isset($options['vre']) && $options['vre'] != null) ? $options['vre'] : null; + $grd_id = (isset($options['grd']) && $options['grd'] != null) ? $options['grd'] : null; + $isDouble = (isset($options['isDouble']) && $options['isDouble'] != null) ? $options['isDouble'] : false; + $tip = self::$_HEADER[$spr_id.'_0']['tip']; + if ( $spr_id != null && count(self::$_HEADER[$spr_id.'_0']['grids']) > 0 ) { + switch ($tip) { + case 1 : + case 3 : + $grd = 0; + $var = 0; + break; + case 2: + case 21: + case 17: + case 18: + $grd = 0; + if ($vre_id > 0 && count(self::$_HEADER[$spr_id.'_0']['grids'][$grd]['variables']) > 0) { + foreach (self::$_HEADER[$spr_id.'_0']['grids'][$grd]['variables'] AS $vkey =>$variables) { + if ($variables['vr_id'] == $vre_id && $variables['other'] != 1) { + $var = $vkey; + } + } + } else { + $var = 0; + } + break; + case 7: + $grd = 0; + $var = $grd_id; + break; + case 8: + $grd = 0; + $var = $grd_id; + break; + + case 6: + case 16: + case 19: + case 20: + if ($isDouble == true) { + #polovimo part + $str = "select part from srv_grid where spr_id='$spr_id' AND id= '$grd_id'"; + $qry = sisplet_query($str); + list($part) = mysqli_fetch_row($qry); + } else { + $part = 1; + } + + if (count(self::$_HEADER[$spr_id.'_0']['grids']) > 0) { + + foreach (self::$_HEADER[$spr_id.'_0']['grids'] AS $gkey => $grids) { + if (count ($grids['variables']) > 0) { + foreach ($grids['variables'] AS $vkey => $variables) { + if (($tip == 6 && $variables['vr_id'] == $vre_id && $variables['other'] != 1 && $part == $grids['part']) + || ( + ($tip == 16 || $tip == 19 || $tip == 20) + && $variables['vr_id'] == $vre_id && $grd_id == $variables['gr_id']) && $variables['other'] != 1) { + $grd = $gkey; + $var = $vkey; + } + } + } + } + } + break; + } + + if ($grd !== null && $var !== null) { + return self::$_HEADER[$spr_id.'_0']['grids'][$grd]['variables'][$var]['sequence']; + } + } + return; + + } + +# static function setConditionLabel($pid,$condition_label) { +# if ((int)$pid > 0 ) { +# $updateString = "UPDATE srv_condition_profiles SET condition_label = '" . $condition_label . "' WHERE id = '" . $pid . "'"; +# $sqlInsert = sisplet_query($updateString); +# } +# } + + static function setConditionError($pid,$condition_error) { + if ((int)$pid > 0 ) { + $updateString = "UPDATE srv_condition_profiles SET condition_error = '" . $condition_error . "' WHERE id = '" . $pid . "'"; + $sqlInsert = sisplet_query($updateString); + } + } + + static function getConditionString($if_id = null) + { + global $lang; + + # $condition_label = self::$profiles[self::$currentProfileId]['condition_label']; + ob_start(); + $b = new Branching(self::$sid ); + + if ($if_id == null || (int)$if_id == 0) + { + $if_id = (int)self::$profiles[self :: $currentProfileId]['if_id']; + } + $b->display_if_label($if_id); + #$condition_label = mysqli_escape_string(ob_get_contents()); + $condition_label = ob_get_contents(); + ob_end_clean(); + + if ( $if_id > 0 && $condition_label != '') { + + echo '
    '; + #if (self::$profiles[self :: $currentProfileId]['type'] == 'inspect') { + # echo ''.$lang['srv_profile_data_is_filtred_zoom'].''; + #} else { + echo ''.$lang['srv_profile_data_is_filtred'].''; + #} + echo '('.self::$profiles[self :: $currentProfileId]['name'].')'; + echo ''.$condition_label.''; + // ali imamo napake v ifu + if ((int)self::$profiles[$if_id]['condition_error'] != 0) { + echo '
    '; + echo ' '; + echo ''.$lang['srv_profile_condition_has_error'].''; + echo ''; + } + echo ''.$lang['srv_profile_edit'].''; + echo ''.$lang['srv_profile_remove'].''; + #if (self::$profiles[self :: $currentProfileId]['type'] == 'inspect') { + # echo ''.$lang['srv_zoom_link_whoisthis'].''; + #} + echo '
    '; + echo '
    '; + return true; + } + + return false; + } + + /** + * @desc zgenerira kalkulacijo za vstavitev v AWK + */ + # TODO!!!! + # kalkulacije so rešene samo za silo (delujejo samo za tip radio + function generateCalculationAWK ($condition) { + $result = ''; + $sql = sisplet_query("SELECT * FROM srv_calculation WHERE cnd_id = '$condition' ORDER BY vrstni_red ASC"); + if (!$sql) echo mysqli_error($GLOBALS['connect_db']); + + $i = 0; + while ($row = mysqli_fetch_assoc($sql)) { + $_tmp_result = ''; + $_valid = false; + $_spr_id = $row['spr_id']; + + if ($i++ != 0) { + if ($row['operator'] == 0) + $_tmp_result .= '+'; + elseif ($row['operator'] == 1) + $_tmp_result .= '-'; + elseif ($row['operator'] == 2) + $_tmp_result .= '*'; + elseif ($row['operator'] == 3) + $_tmp_result .= '/'; + } + for ($j=1; $j<=$row['left_bracket']; $j++) { + $_tmp_result .= '('; + } + + // obi�ajne spremenljivke + if ($_spr_id > 0) { + + $_tmp_result .= self::getAWKSpremenljivka($row); + + // konstante + } elseif ($row['spr_id'] == -1) { + $_tmp_result .= $row['number']; + $_valid = true; + + } + + for ($j=1; $j<=$row['right_bracket']; $j++) { + $_tmp_result .= ')'; + } + + if ($_valid === true) { + $result .= $_tmp_result; + } + } + + return $result; + } + + static function conditionRemove() { + # nastavimo privzet profil oziroma brez pogojev. + #Če pa je izbran profil bil slučajno inspect, ga v celoti odstranimo, da pobrišemo predhodne nastavitve zaradi gnezdenja + if (isset($_POST['pid']) && (int)$_POST['pid'] > 0) { + $currentProfileId = (int)$_POST['pid']; + } else { + $currentProfileId = SurveyUserSetting :: getInstance()->getSettings('default_condition_profile'); + } + + echo ($currentProfileId); + + # preberemo podatke o profilu + $stringSelect = "SELECT * FROM srv_condition_profiles WHERE sid='" . self::$sid . "' AND uid='" . self::$uid . "' AND id = '".$currentProfileId."'"; + $querySelect = sisplet_query($stringSelect); + + # če je if_profil inspect, ga v celoti zbrišemo + if (mysqli_num_rows($querySelect)) { + $rowSelect = mysqli_fetch_assoc($querySelect); + # če je inspect + if ($rowSelect['type'] == 'inspect') { + $if_id = $rowSelect['if_id']; + if ((int)$if_id > 0) { + $delStr = "DELETE FROM srv_if WHERE if = '".(int)$if_id."'"; + sisplet_query($delStr); + } + # zbrišemo še condition_profil + if ($currentProfileId > 0) { + $delStr = "DELETE FROM srv_condition_profiles WHERE sid='" . self::$sid . "' AND uid='" . self::$uid . "' AND id = '".$currentProfileId."'"; + sisplet_query($delStr); + } + sisplet_query("COMMIT"); + } + + # če smo izbrali drug profil resetiramo še profil profilov na trenutne nastavitve + SurveyUserSetting :: getInstance()->saveSettings('default_profileManager_pid', '0'); + + SurveyUserSetting :: getInstance()->removeSettings('default_condition_profile'); + + } + # drugače samo nastavimo na privzet profil = 1 + $currentProfileId = 1; + SurveyUserSetting :: getInstance()->saveSettings('default_condition_profile', $currentProfileId); + + self::$currentProfileId = $currentProfileId; + + } + + + /** preveri obstoj profila in vrne enak id če obstaja, če ne vrne id privzetega profila + * + * @param unknown_type $pid + * @return unknown + */ + function checkProfileExist($pid) + { + if (isset(self::$profiles[$pid])) + { + return true; + } + return false; + } +} +?> \ No newline at end of file -- cgit v1.2.3