293 lines
8.7 KiB
PHP
293 lines
8.7 KiB
PHP
<?php
|
|
|
|
class SurveyAnalysisGorenje{
|
|
|
|
private $ank_id;
|
|
|
|
private $spremenljivke = array();
|
|
|
|
// Pogoji nastavljeni za trenutno anketo in urednika
|
|
private $filters = array(
|
|
'rekid' => '0',
|
|
'brand' => '',
|
|
'drzava' => '',
|
|
'ser' => '',
|
|
'serenota' => '',
|
|
'sercenter' => ''
|
|
);
|
|
|
|
|
|
public function __construct($ank_id){
|
|
|
|
$this->ank_id = $ank_id;
|
|
|
|
if($this->ank_id > 0){
|
|
|
|
// Napolnimo sistemske spremenljivke potrebne za Gorenje analizo
|
|
$this->getGorenjeSpremenljivke();
|
|
|
|
// Napolnimo nastavljene filtre za anketo in urednika
|
|
$this->getGorenjeFilters();
|
|
}
|
|
else
|
|
die();
|
|
}
|
|
|
|
|
|
// Prikazemo filtre na vrhu v analizah
|
|
public function displayFilters(){
|
|
global $lang;
|
|
|
|
// Ce imamo ustrezne sistemske spremenljivke v anketi
|
|
if($this->hasSpremenljivke()){
|
|
|
|
echo '<form name="gorenje_filters" id="gorenje_filters">';
|
|
echo '<h2>Filtriranje</h2>';
|
|
|
|
// Dobimo vse podatke v bazi med katerimi filtriramo
|
|
$data = array();
|
|
foreach($this->spremenljivke as $key => $val){
|
|
$data[$key] = $this->getGorenjeData($val['vre_id']);
|
|
}
|
|
|
|
|
|
// Filter po znamki
|
|
echo '<span class="spaceRight spaceLeft">Znamka: ';
|
|
echo '<select name="brand" id="brand">';
|
|
echo ' <option value="">Vse</option>';
|
|
foreach($data['brand'] as $val){
|
|
echo ' <option value="'.$val.'" '.($this->filters['brand'] == $val ? ' selected="selected"' : '').'>'.$val.'</option>';
|
|
}
|
|
echo '</select>';
|
|
echo '</span>';
|
|
|
|
// Filter po drzavi
|
|
echo '<span class="spaceRight spaceLeft">Država: ';
|
|
echo '<select name="drzava" id="drzava">';
|
|
echo ' <option value="">Vse</option>';
|
|
foreach($data['drzava'] as $val){
|
|
echo ' <option value="'.$val.'" '.($this->filters['drzava'] == $val ? ' selected="selected"' : '').'>'.$val.'</option>';
|
|
}
|
|
echo '</select>';
|
|
echo '</span>';
|
|
|
|
echo '<br /><br />';
|
|
|
|
// Filter po serviserju
|
|
echo '<span class="spaceRight spaceLeft">Serviser: ';
|
|
echo '<select name="ser" id="ser">';
|
|
echo ' <option value="">Vse</option>';
|
|
foreach($data['ser'] as $val){
|
|
echo ' <option value="'.$val.'" '.($this->filters['ser'] == $val ? ' selected="selected"' : '').'>'.$val.'</option>';
|
|
}
|
|
echo '</select>';
|
|
echo '</span>';
|
|
|
|
// Filter po servisni enoti
|
|
echo '<span class="spaceRight spaceLeft">Servisna enota: ';
|
|
echo '<select name="serenota" id="serenota">';
|
|
echo ' <option value="">Vse</option>';
|
|
foreach($data['serenota'] as $val){
|
|
echo ' <option value="'.$val.'" '.($this->filters['serenota'] == $val ? ' selected="selected"' : '').'>'.$val.'</option>';
|
|
}
|
|
echo '</select>';
|
|
echo '</span>';
|
|
|
|
// Filter po servisnem centru
|
|
echo '<span class="spaceLeft">Servisni center: ';
|
|
echo '<select name="sercenter" id="sercenter">';
|
|
echo ' <option value="">Vse</option>';
|
|
foreach($data['sercenter'] as $val){
|
|
echo ' <option value="'.$val.'" '.($this->filters['sercenter'] == $val ? ' selected="selected"' : '').'>'.$val.'</option>';
|
|
}
|
|
echo '</select>';
|
|
echo '</span>';
|
|
|
|
echo '<br /><br />';
|
|
|
|
// Gumb Pozeni filtriranje
|
|
echo '<span class="floatRight" title="Poženi"><div class="buttonwrapper">';
|
|
echo '<a class="ovalbutton ovalbutton_orange" href="#" onClick="setGorenjeFilters(); return false;"><span>Poženi</span></a>';
|
|
echo '</div></span>';
|
|
|
|
echo '<br />';
|
|
|
|
echo '</form>';
|
|
|
|
|
|
//var_dump($data);
|
|
//var_dump($this->spremenljivke);
|
|
//var_dump($this->filters);
|
|
}
|
|
}
|
|
|
|
|
|
// Dobimo awk string za gorenje filtriranje
|
|
public function getAWKString($_HEADER){
|
|
|
|
$awkFilter = '';
|
|
|
|
// Sprehodimo se cez vse mozne filtre
|
|
foreach($this->filters as $key => $val){
|
|
|
|
// Ce je nastavljen filter za doloceno spremenljivko
|
|
if($key != 'rekid' && $val != ''){
|
|
|
|
$awkFilter .= '(';
|
|
|
|
$spr_id = $this->spremenljivke[$key]['spr_id'];
|
|
$vre_id = $this->spremenljivke[$key]['vre_id'];
|
|
$sequence = $this->getSequenceForAWKCondition($spr_id, $vre_id, $_HEADER);
|
|
|
|
$awkFilter .= '$'.$sequence.'==';
|
|
|
|
if (IS_WINDOWS) {
|
|
# za windows
|
|
$awkFilter .= "\\\"".$val."\\\"";
|
|
} else {
|
|
# za linux
|
|
$awkFilter .= '"'.$val.'"';
|
|
}
|
|
|
|
$awkFilter .= ')&&';
|
|
}
|
|
}
|
|
|
|
// Pobrisemo odvecen zadnji &&
|
|
$awkFilter = substr($awkFilter, 0, -2);
|
|
|
|
return $awkFilter;
|
|
}
|
|
|
|
// Dobimo sekvenco za ustrezno spremenljivko po kateri filtriramo
|
|
private function getSequenceForAWKCondition ($spr_id, $vre_id, $_HEADER){
|
|
|
|
if ($spr_id != null && count($_HEADER[$spr_id.'_0']['grids']) > 0) {
|
|
$grd = 0;
|
|
if ($vre_id > 0 && count($_HEADER[$spr_id.'_0']['grids'][$grd]['variables']) > 0) {
|
|
foreach ($_HEADER[$spr_id.'_0']['grids'][$grd]['variables'] AS $vkey =>$variables) {
|
|
if ($variables['vr_id'] == $vre_id && $variables['other'] != 1) {
|
|
$var = $vkey;
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
$var = 0;
|
|
}
|
|
|
|
if ($grd !== null && $var !== null) {
|
|
return $_HEADER[$spr_id.'_0']['grids'][$grd]['variables'][$var]['sequence'];
|
|
}
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
// Preverimo ce obstaja kaksen filter za doloceno anketo in urednika
|
|
public function hasFilters(){
|
|
|
|
if($this->filters['rekid'] == '0'
|
|
&& $this->filters['brand'] == ''
|
|
&& $this->filters['drzava'] == ''
|
|
&& $this->filters['ser'] == ''
|
|
&& $this->filters['servisni_enota'] == ''
|
|
&& $this->filters['sercenter'] == '')
|
|
return false;
|
|
else
|
|
return true;
|
|
}
|
|
|
|
// Preverimo ce obstajajo vse potrebne sistemske spremenljivke (rekid, brand, drzava, ser, serenota, sercenter)
|
|
public function hasSpremenljivke(){
|
|
|
|
$count = count($this->spremenljivke);
|
|
|
|
if($count == 6)
|
|
return true;
|
|
|
|
// Ce nimamo vseh preverimo katere manjkajo
|
|
if($count > 0){
|
|
if(!isset($this->spremenljivke['rekid']))
|
|
echo 'Manjka sistemska spremenljivka "rekid" (id reklamacije)!<br />';
|
|
if(!isset($this->spremenljivke['brand']))
|
|
echo 'Manjka sistemska spremenljivka "brand" (znamka)!<br />';
|
|
if(!isset($this->spremenljivke['drzava']))
|
|
echo 'Manjka sistemska spremenljivka "drzava"!<br />';
|
|
if(!isset($this->spremenljivke['ser']))
|
|
echo 'Manjka sistemska spremenljivka "ser" (serviser)!<br />';
|
|
if(!isset($this->spremenljivke['serenota']))
|
|
echo 'Manjka sistemska spremenljivka "serenota" (servisna enota)!<br />';
|
|
if(!isset($this->spremenljivke['sercenter']))
|
|
echo 'Manjka sistemska spremenljivka "sercenter (servisni center)"!<br />';
|
|
|
|
echo '<br />';
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
// Preberemo nastavljen filter za gorenje (ce obstaja)
|
|
private function getGorenjeFilters(){
|
|
global $global_user_id;
|
|
|
|
$sql = sisplet_query("SELECT brand, drzava, ser, serenota, sercenter FROM srv_gorenje_analysis WHERE ank_id='".$this->ank_id."' AND usr_id='".$global_user_id."'");
|
|
if(mysqli_num_rows($sql) > 0){
|
|
$row = mysqli_fetch_assoc($sql);
|
|
|
|
foreach($row as $key => $val){
|
|
$this->filters[$key] = $val;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Pridobimo vse id-je spremenljivk in vrednosti vezanih na posebno analizo za Gorenje (rekid, brand, drzava, ser, serenota, sercenter)
|
|
private function getGorenjeSpremenljivke(){
|
|
global $global_user_id;
|
|
|
|
// Napolnimo spr_id in vre_id za potrebna sistemska vprasanja
|
|
$sql = sisplet_query("SELECT s.id AS spr_id, s.variable, v.id AS vre_id FROM srv_vrednost v, srv_spremenljivka s, srv_grupa g
|
|
WHERE s.variable IN ('rekid', 'brand', 'drzava', 'ser', 'serenota', 'sercenter')
|
|
AND g.ank_id='".$this->ank_id."' AND s.gru_id=g.id
|
|
AND v.spr_id=s.id");
|
|
while($row = mysqli_fetch_array($sql)){
|
|
$this->spremenljivke[$row['variable']]['spr_id'] = $row['spr_id'];
|
|
$this->spremenljivke[$row['variable']]['vre_id'] = $row['vre_id'];
|
|
}
|
|
}
|
|
|
|
// Dobimo vse mozne vrednosti (distinct vnose) za doloceno spremenljivko
|
|
private function getGorenjeData($vre_id){
|
|
|
|
$data = array();
|
|
|
|
$sql = sisplet_query("SELECT DISTINCT(text) AS text FROM srv_data_text_active WHERE vre_id='".$vre_id."'");
|
|
while($row = mysqli_fetch_array($sql)){
|
|
$data[] = $row['text'];
|
|
}
|
|
|
|
return $data;
|
|
}
|
|
|
|
|
|
// Ajax klici
|
|
public function ajax(){
|
|
global $global_user_id;
|
|
global $lang;
|
|
global $site_path;
|
|
|
|
$brand = (isset($_POST['brand'])) ? $_POST['brand'] : '';
|
|
$drzava = (isset($_POST['drzava'])) ? $_POST['drzava'] : '';
|
|
$ser = (isset($_POST['ser'])) ? $_POST['ser'] : '';
|
|
$serenota = (isset($_POST['serenota'])) ? $_POST['serenota'] : '';
|
|
$sercenter = (isset($_POST['sercenter'])) ? $_POST['sercenter'] : '';
|
|
|
|
$sql = sisplet_query("INSERT INTO srv_gorenje_analysis
|
|
(ank_id, usr_id, brand, drzava, ser, serenota, sercenter)
|
|
VALUES ('".$this->ank_id."', '".$global_user_id."', '".$brand."', '".$drzava."', '".$ser."', '".$serenota."', '".$sercenter."')
|
|
ON DUPLICATE KEY UPDATE
|
|
brand='".$brand."', drzava='".$drzava."', ser='".$ser."', serenota='".$serenota."', sercenter='".$sercenter."'");
|
|
if(!$sql)
|
|
echo mysqli_error($GLOBALS['connect_db']);
|
|
}
|
|
} |