diff options
author | Anton Luka Šijanec <anton@sijanec.eu> | 2022-01-11 12:35:47 +0100 |
---|---|---|
committer | Anton Luka Šijanec <anton@sijanec.eu> | 2022-01-11 12:35:47 +0100 |
commit | 19985dbb8c0aa66dc4bf7905abc1148de909097d (patch) | |
tree | 2cd5a5d20d7e80fc2a51adf60d838d8a2c40999e /admin/survey/classes/class.SurveyCondition.php | |
download | 1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar 1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar.gz 1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar.bz2 1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar.lz 1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar.xz 1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar.zst 1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.zip |
Diffstat (limited to '')
-rw-r--r-- | admin/survey/classes/class.SurveyCondition.php | 316 |
1 files changed, 316 insertions, 0 deletions
diff --git a/admin/survey/classes/class.SurveyCondition.php b/admin/survey/classes/class.SurveyCondition.php new file mode 100644 index 0000000..08b6239 --- /dev/null +++ b/admin/survey/classes/class.SurveyCondition.php @@ -0,0 +1,316 @@ +<?php
+class SurveyCondition
+{
+ private $_sid;
+
+ private $_conditions = array();
+
+ private $_chooseProfileJSAction = null;
+
+ function __construct($sid)
+ {
+ global $lang;
+ $this->_sid = $sid;
+ # polovimo vse obstoječe ife
+ $this->_conditions[0] = array(
+ 'id' => '0',
+ 'name' => $lang['srv_inv_condition_new_filter'],
+ 'number' => '0',
+ 'tip' => '0',
+ 'label' => $lang['srv_inv_condition_new_filter'],
+ 'collapsed' => '0',
+ 'folder' => '0',
+ 'enabled' => '1',
+ 'tab' => '0'
+ );
+ $str = "SELECT sif.*, ssc.name FROM srv_if AS sif JOIN srv_survey_conditions AS ssc ON (sif.id = ssc.if_id) WHERE ssc.ank_id = '$this->_sid'";
+ $qry = sisplet_query($str);
+ while ($row = mysqli_fetch_assoc($qry))
+ {
+ if (isset($row['id']) && (int)$row['id'] > 0)
+ {
+ $this->_conditions[$row['id']] = $row;
+ }
+ }
+ if (isset($_REQUEST['surveyConditionProfileAction']) && !empty($_REQUEST['surveyConditionProfileAction']))
+ {
+ $this->_chooseProfileJSAction = $_REQUEST['surveyConditionProfileAction'];
+ }
+ }
+
+ public function ajax()
+ {
+ switch ($_GET['a']) {
+ case 'showCondition' :
+ $this->displayConditions((int)$_POST['cid']);
+ break;
+ case 'newCondition' :
+ $this->newCondition();
+ break;
+ case 'deleteCondition' :
+ $this->deleteCondition((int)$_POST['cid']);
+ break;
+ case 'showRename' :
+ $this->showRename();
+ break;
+ case 'renameCondition' :
+ $this->renameCondition();
+ break;
+ default:
+ echo 'ERROR! Missing function for action: '.$_GET['a'].'! (SurveyConditionProfile)';
+ break;
+ }
+ }
+
+ public function displayConditions($pid)
+ {
+ global $lang;
+
+ $popUp = new PopUp();
+ $popUp->setId('divConditionProfiles');
+ $popUp->setHeaderText($lang[''].'Filtriranje s pogoji');
+
+ #vsebino shranimo v buffer
+
+ ob_start();
+
+ echo '<input type="hidden" id="chooseProfileJSAction" value="'.$this->_chooseProfileJSAction.'" />';
+ echo '<div class="condition_profile_holder">';
+
+ echo '<div id="condition_profile" class="select">';
+ if (count($this->_conditions) > 0)
+ {
+ foreach ($this->_conditions as $key => $value) {
+ echo '<div class="option' . ( $pid == $value['id'] ? ' active' : '') . '" data-cid="' . $value['id'] . '" onclick="showSurveyCondition(\''.$value['id'].'\')">' . $value['name'] .'</div>';
+ }
+ }
+ echo '</div>';
+ echo '</div>';
+ # tukaj prikazemo vsebino ifa
+ echo '<div id="div_cp_preview">';
+ echo '<div id="div_cp_preview_content">';
+ if ($pid > 0)
+ {
+ $b = new Branching($this->_sid);
+ $b->condition_editing($pid, -2);
+
+ } else {
+ echo 'Dodaj nov pogoj:';
+ echo '<input id="newSurveyConditionName" placeholder="Ime pogoja" >';
+ echo '<a href="#" onclick="newSurveyCondition(); return false;" class="faicon if_add" style="margin-left: 5px;" title="Dodaj nov pogoj"> Dodaj nov pogoj</a>';
+ }
+ echo '</div>';
+ echo '</div>';
+ echo '<div id="surveyConditionCover"></div>';
+ echo '<div id="renameProfileDiv"></div>';
+ $content = ob_get_clean();
+
+ #dodamo vsebino
+ $popUp->setContent($content);
+
+ # dodamo gumb Prekliči
+ $popUp->addButton(new PopUpCancelButton());
+
+ #dodamo gumb izberi profil
+ $confirmAction = 'alert(\'No action set\')';
+ if (isset($this->_chooseProfileJSAction) && !empty($this->_chooseProfileJSAction))
+ {
+ $confirmAction = $this->_chooseProfileJSAction;
+ }
+ $button = new PopUpButton($lang['srv_choose_profile']);
+ $button -> setFloat('right')
+ -> setButtonColor('orange')
+ -> addAction('onClick',$confirmAction.'; return false;');
+ $popUp->addButton($button);
+
+ if ($pid > 0) {
+ # dodamo gumb preimenuj
+ $button = new PopUpButton($lang['srv_rename_profile']);
+ $button -> setFloat('right')
+ -> addAction('onClick','showRenameSurveyCondition(\''.$pid.'\'); return false;');
+ $popUp->addButton($button);
+
+ # dodamo gumb izbriši
+ $button = new PopUpButton($lang['srv_delete_profile']);
+ $button -> setFloat('right')
+ -> addAction('onClick','deleteSurveyCondition(\''.$pid.'\'); return false;');
+ $popUp->addButton($button);
+ }
+
+ echo $popUp;
+
+
+ }
+
+ private function newCondition()
+ {
+ global $lang;
+ $result= array('error'=>1, 'if_id'=>0);
+
+ $name = isset($_POST['name']) && !empty($_POST['name']) ? $_POST['name'] : $lang['srv_inv_condition_new_filter_name'];
+ $result['name'] = $name;
+
+ #kreiramo osnovo za if
+ $str = "INSERT INTO srv_if (id) VALUES (NULL)";
+ $sql = sisplet_query($str);
+ $if_id = mysqli_insert_id($GLOBALS['connect_db']);
+
+ if ((int)$if_id > 0)
+ {
+ $str = "INSERT INTO srv_condition (id, if_id, vrstni_red) VALUES ('', '$if_id', '1')";
+ $sql = sisplet_query($str);
+ $cond_id = mysqli_insert_id($GLOBALS['connect_db']);
+
+ if ((int)$cond_id > 0)
+ {
+ $result['cond_id'] = (int)$cond_id;
+ $str = "INSERT INTO srv_survey_conditions (ank_id, if_id, name) VALUES ('$this->_sid', '$if_id', '$name')";
+ $sql = sisplet_query($str);
+ if (!sql)
+ {
+ }
+ else
+ {
+ $result['error'] = 0;
+ $result['if_id'] = (int)$if_id;
+ }
+ }
+ }
+
+ if ($result['error'] > 0)
+ {
+ # pobrišemo zgoraj kreiran if;
+ if ((int)$if_id > 0)
+ {
+ $sql = sisplet_query("DELETE FROM srv_condition where if_id ='$if_id'");
+ $sql = sisplet_query("DELETE FROM srv_if where id ='$if_id'");
+ }
+ }
+
+
+ echo json_encode($result);
+ return;
+ }
+
+ private function deleteCondition($cid = 0)
+ {
+ global $lang;
+ $result= array('error'=>1, 'cid'=>$cid);
+
+ if ($cid > 0)
+ {
+ /* pobrisemo se za ifom*/
+ $sql = sisplet_query("SELECT * FROM srv_condition WHERE if_id = '$cid'");
+ 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)$cid> 0)
+ {
+ sisplet_query("DELETE FROM srv_condition WHERE if_id = '$cid'");
+ sisplet_query("DELETE FROM srv_if WHERE id = '$cid'");
+
+ }
+ /*-- pobrisemo se za ifom*/
+
+ $result['error'] = 0;
+ $result['cid'] = 0;
+ }
+
+ # pobrišemo še morebitne seje
+ SurveySession::sessionStart($this->_sid);
+ SurveySession::remove('invitationAdvancedConditionId');
+
+ echo json_encode($result);
+ return;
+ }
+
+ public function setChooseAction($action)
+ {
+ if (!empty($action))
+ {
+ $this->_chooseProfileJSAction = $action;
+ }
+ }
+
+ function getConditionName($if_id)
+ {
+ if (isset($this->_conditions[$if_id]['name']))
+ {
+ return $this->_conditions[$if_id]['name'];
+ }
+ global $lang;
+ return $lang['srv_inv_condition_no_filter'];
+ }
+
+
+ function getConditionString($if_id)
+ {
+ $condition_label = '';
+ ob_start();
+ $b = new Branching($this->_sid);
+
+ if ((int)$if_id > 0)
+ {
+ $b->display_if_label($if_id);
+ #$condition_label = mysqli_escape_string(ob_get_contents());
+ $condition_label = ob_get_contents();
+ ob_end_clean();
+ }
+ return $condition_label;
+ }
+
+ function showRename()
+ {
+ global $lang;
+ // div za preimenovanje
+
+ echo $lang['srv_missing_profile_name'].': ';
+ echo '<input id="renameProfileName" name="renameProfileName" type="text" value="' . $this->_conditions[$_POST['cid']]['name'] . '" size="45" />';
+ echo '<input id="renameProfileId" type="hidden" value="' . $_POST['cid'] . '" />';
+ $button = new PopUpButton($lang['srv_rename_profile_yes']);
+ echo $button -> setFloat('right')
+ ->setButtonColor('orange')
+ -> addAction('onClick','renameSurveyCondition(); return false;');
+
+ $button = new PopUpButton($lang['srv_cancel']);
+ echo $button -> setFloat('right')
+ -> addAction('onClick','$(\'#divConditionProfiles #renameProfileDiv, #surveyConditionCover\').hide(); return false;');
+ }
+
+ function renameCondition()
+ {
+ global $lang;
+
+ $result = array('error'=>1);
+
+ $name = $_POST['name'];
+ $cid = (int)$_POST['cid'];
+
+ if ($this->_sid > 0 && isset($name) && !empty($name) && (int)$cid > 0)
+ {
+ $str = "UPDATE srv_survey_conditions SET name='$name' WHERE ank_id='$this->_sid' AND if_id='$cid'";
+ $qry = sisplet_query($str);
+ if ($qry)
+ {
+ $result['error'] = 0;
+ $result['errorMsg'] = '';
+ $result['if_id'] = (int)$cid;
+ }
+ else
+ {
+ $result['errorMsg'] = 'Prišlo je do napake!';
+ }
+ }
+ if (!isset($name) || empty($name))
+ {
+ $result['errorMsg'] = 'Ime ne sme biti prazno!';
+ }
+ echo json_encode($result);
+ return;
+ }
+}
\ No newline at end of file |