644 lines
24 KiB
PHP
644 lines
24 KiB
PHP
![]() |
<?php
|
||
|
/** @author: Gorazd Veselič
|
||
|
*
|
||
|
* @Desc: za upravljanje z profili missingov za analize
|
||
|
|
||
|
* @Date: 28.09.2010
|
||
|
*/
|
||
|
|
||
|
session_start();
|
||
|
define('SMP_DEFAULT_PROFILE', 1);
|
||
|
|
||
|
class SurveyMissingProfiles
|
||
|
{
|
||
|
static private $sid = null; # id ankete
|
||
|
static private $uid = null; # id userja
|
||
|
static private $inited = false; # ali so profili ze inicializirani
|
||
|
static private $currentProfileId = null; # trenutno profil
|
||
|
static private $profiles = array(); # seznam vseh profilov od uporabnika
|
||
|
static private $smv = null; # manjkajoče vrednosti
|
||
|
|
||
|
|
||
|
// lurker je mal poseben, ker je neodvisen od ostalih (user je npr. 6 in lurker)
|
||
|
// static private $allStatus = array('null',0,1,2,3,4,5,6,'lurker'); // Statusi anket katere štejemo kot ustrezne
|
||
|
// static private $appropriateStatus = array(6,5); // Statusi anket katere štejemo kot ustrezne
|
||
|
// static private $unAppropriateStatus = array(4,3,2,1,0); // Statusi anket katere štejemo kot neustrezne
|
||
|
// static private $unKnownStatus = array('null'); // Statusi anket katere štejemo kot neustrezne
|
||
|
// # za awk komando
|
||
|
// static private $_AWK_FILTER_TEXT = array(6=>'6',5=>'5',4=>'4',3=>'3',2=>'2',1=>'^1',0=>'0','null'=>'-1'); # texti za statuse. 6=>'6',5=>'5',4=>'4',3=>'3',2=>'2',1=>'^1',0=>'0',null=>'-1' Pri 1 je ^pomemben, če ne lahko vzame tudi -1
|
||
|
|
||
|
static function Init($sid, $uid = null) {
|
||
|
# nastavimo surveyId
|
||
|
self::setSId($sid);
|
||
|
self::$smv = new SurveyMissingValues($sid);
|
||
|
self::$smv -> Init();
|
||
|
# nastavimo userja
|
||
|
self::setGlobalUserId($uid);
|
||
|
SurveyUserSetting :: getInstance()->Init(self::$sid, self::getGlobalUserId());
|
||
|
if (self::$inited == false) {
|
||
|
self::$inited = self :: RefreshData();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
static function RefreshData() {
|
||
|
|
||
|
self::$profiles = array();
|
||
|
# dodamo sejo če obstaja
|
||
|
|
||
|
if (isset($_SESSION['missingProfile'])) {
|
||
|
self::$profiles[$_SESSION['missingProfile']['id']] = $_SESSION['missingProfile'];
|
||
|
}
|
||
|
# dodamo sistemske profile, skreiramo jih "on the fly"
|
||
|
self :: addSystemProfiles();
|
||
|
|
||
|
# preberemo podatke vseh porfilov ki so na voljo in jih dodamo v array
|
||
|
$stringSelect = "SELECT * FROM srv_missing_profiles WHERE uid = '".self::getGlobalUserId()."' OR (uid = '0' AND system = 1) ORDER BY id";
|
||
|
$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_missing_profile');
|
||
|
|
||
|
if (!self::$currentProfileId || self::$currentProfileId == 1)
|
||
|
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;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
static function DisplayProfile( $pid = null) {
|
||
|
global $lang;
|
||
|
|
||
|
echo '<h2>'.$lang['srv_missing_settings'].'</h2>';
|
||
|
|
||
|
if ($pid == null ) {
|
||
|
$pid = self::$currentProfileId;
|
||
|
}
|
||
|
|
||
|
if ( self::$currentProfileId != SMP_DEFAULT_PROFILE ) {
|
||
|
echo '<div id="not_default_setting">';
|
||
|
echo $lang['srv_not_default_setting'];
|
||
|
echo '</div><br class="clr displayNone">';
|
||
|
}
|
||
|
|
||
|
//echo '<div class="profileHeader">'.$lang['srv_missing_profiles_profile_title'].'</div>';
|
||
|
|
||
|
|
||
|
echo ' <div id="missing_profile_holder">';
|
||
|
self :: DisplayProfileOptions($pid);
|
||
|
echo ' </div>';
|
||
|
|
||
|
|
||
|
echo ' <div id="missing_profile_data_holder">';
|
||
|
self :: DisplayProfileData($pid);
|
||
|
echo ' </div>';
|
||
|
|
||
|
|
||
|
// GUMBI
|
||
|
echo '<div style="margin: 15px 0 0 0; float:right;">';
|
||
|
# shrani kot seja
|
||
|
if (self::$profiles[$pid]['system'] == 1 || $pid == -1) {
|
||
|
$run_lbl = $lang['srv_run_as_session_profile'];
|
||
|
echo '<span class="floatRight spaceLeft" ><span class="buttonwrapper"><a class="ovalbutton ovalbutton_orange" href="#" onclick="missingProfileAction(\'runSession\'); return false;"><span>'.$run_lbl.'</span></a></span></span>';
|
||
|
} else {
|
||
|
# shrani - pozeni
|
||
|
$run_lbl = $lang['srv_run_profile'];
|
||
|
echo '<span class="floatRight spaceLeft" ><span class="buttonwrapper"><a class="ovalbutton ovalbutton_orange" href="#" onclick="missingProfileAction(\'run\'); return false;"><span>'.$run_lbl.'</span></a></span></span>';
|
||
|
}
|
||
|
# shrani kot nov profil
|
||
|
echo '<span class="floatRight spaceLeft" ><span class="buttonwrapper"><a class="ovalbutton ovalbutton_gray" href="#" onclick="missingProfileAction(\'newName\'); return false;"><span>'.$lang['srv_create_new_profile'].'</span></a></span></span>';
|
||
|
# preklici - zapri
|
||
|
echo '<span class="floatRight spaceLeft" ><span class="buttonwrapper"><a class="ovalbutton ovalbutton_gray" href="#" onclick="missingProfileAction(\'cancle\'); return false;"><span>'.$lang['srv_close_profile'].'</span></a></span></span>';
|
||
|
echo '</div>';
|
||
|
|
||
|
|
||
|
// cover Div
|
||
|
echo '<div id="missingProfileCoverDiv"></div>'."\n";
|
||
|
|
||
|
// div za shranjevanje novega profila
|
||
|
echo '<div id="newProfile">'.$lang['srv_missing_profile_name'].': '."\n";
|
||
|
echo '<input id="newProfileName" name="newProfileName" type="text" size="45" />'."\n";
|
||
|
echo '<span class="floatRight spaceLeft" ><span class="buttonwrapper"><a class="ovalbutton ovalbutton_orange" href="#" onclick="missingProfileAction(\'newSave\'); return false;"><span>'.$lang['srv_save_profile'].'</span></a></span></span>'."\n";
|
||
|
echo '<span class="floatRight spaceLeft" ><span class="buttonwrapper"><a class="ovalbutton ovalbutton_gray" href="#" onclick="missingProfileAction(\'newCancle\');; return false;"><span>'.$lang['srv_close_profile'].'</span></a></span></span>'."\n";
|
||
|
echo '</div>'."\n";
|
||
|
|
||
|
// div za preimenovanje
|
||
|
echo '<div id="renameProfileDiv">'.$lang['srv_missing_profile_name'].': '."\n";
|
||
|
echo '<input id="renameProfileName" name="renameProfileName" type="text" value="' . self::$profiles[$pid]['name'] . '" size="45" />'."\n";
|
||
|
echo '<input id="renameProfileId" type="hidden" value="' . $pid . '" />'."\n";
|
||
|
echo '<span class="floatRight spaceLeft" ><span class="buttonwrapper"><a class="ovalbutton ovalbutton_orange" href="#" onclick="missingProfileAction(\'rename\'); return false;"><span>'.$lang['srv_rename_profile_yes'].'</span></a></span></span>'."\n";
|
||
|
echo '<span class="floatRight spaceLeft" ><span class="buttonwrapper"><a class="ovalbutton ovalbutton_gray" href="#" onclick="missingProfileAction(\'renameCancle\'); return false;"><span>'.$lang['srv_close_profile'].'</span></a></span></span>'."\n";
|
||
|
echo '</div>'."\n";
|
||
|
|
||
|
// div za brisanje
|
||
|
echo '<div id="deleteProfileDiv">'.$lang['srv_missing_profile_delete_confirm'].': <b>' . self::$profiles[$pid]['name'] . '</b>?'."\n";
|
||
|
echo '<input id="deleteProfileId" type="hidden" value="' . $pid . '" />'."\n";
|
||
|
echo '<span class="floatRight spaceLeft" ><span class="buttonwrapper"><a class="ovalbutton ovalbutton_gray" href="#" onclick="missingProfileAction(\'deleteCancle\'); return false;"><span>'.$lang['srv_close_profile'].'</span></a></span></span>'."\n";
|
||
|
echo '<span class="floatRight spaceLeft" ><span class="buttonwrapper"><a class="ovalbutton ovalbutton_orange" href="#" onclick="missingProfileAction(\'deleteConfirm\'); return false;"><span>'.$lang['srv_delete_profile_yes'].'</span></a></span></span>'."\n";
|
||
|
echo '</div>'."\n";
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
static function DisplayProfileData($pid) {
|
||
|
global $lang;
|
||
|
$curentProfileData = self :: getProfileValues($pid);
|
||
|
|
||
|
$_tpes_array = array(MISSING_TYPE_DESCRIPTOR=>$lang['srv_analiza_arhiviraj_type_'.MISSING_TYPE_DESCRIPTOR],MISSING_TYPE_FREQUENCY=>$lang['srv_analiza_arhiviraj_type_'.MISSING_TYPE_FREQUENCY],MISSING_TYPE_CROSSTAB=>$lang['srv_analiza_arhiviraj_type_'.MISSING_TYPE_CROSSTAB]);
|
||
|
$_sys_missings = self::$smv->GetMissingValuesForSurvey();
|
||
|
$_sys_unset = self::$smv->GetUnsetValuesForSurvey();
|
||
|
echo '<div id="infoMissingProfile">' . $lang['srv_missing_profile_title1'] . '</div >';
|
||
|
echo '<div id="missingProfileFieldsetHolder1">'.NEW_LINE;
|
||
|
|
||
|
echo '<fieldset id="missingProfileFieldset">'.NEW_LINE;
|
||
|
echo '<legend>' . $lang['srv_missing_profile_title2'] . '</legend>'.NEW_LINE;
|
||
|
foreach ($_tpes_array AS $tkey => $tlabel) {
|
||
|
echo '<div style="float:left; width:100px; text-align:center;">'. $tlabel .'</div>'.NEW_LINE;
|
||
|
}
|
||
|
echo '<div class="clr"></div>'.NEW_LINE;
|
||
|
echo '<form name="" id="" autocomplete="off">'.NEW_LINE;
|
||
|
# loop sozi sistemske missinge
|
||
|
foreach ($_sys_unset as $mkey => $mvalue) {
|
||
|
# loop skozi tipe
|
||
|
foreach ($_tpes_array AS $tkey => $tlabel) {
|
||
|
echo '<div style="float:left; width:100px; text-align:center;">'.NEW_LINE;
|
||
|
echo '<input name="profile_value[]" type="checkbox" id="mv_'.$tkey.'_'.$mkey . '"' .
|
||
|
(isset($curentProfileData[$tkey][$mkey]) ? ' checked' : '').
|
||
|
'/>'.NEW_LINE;
|
||
|
echo '</div>'.NEW_LINE;
|
||
|
}
|
||
|
echo '<div style="float:left; width:150px;">'.NEW_LINE;
|
||
|
echo '(' . $mkey . ") " . $mvalue;
|
||
|
echo '</div>'.NEW_LINE;
|
||
|
echo '<div class="clr"></div>'.NEW_LINE;
|
||
|
}
|
||
|
echo '</form>'.NEW_LINE;
|
||
|
echo '</fieldset>'.NEW_LINE;
|
||
|
|
||
|
echo '<fieldset id="missingProfileFieldset">'.NEW_LINE;
|
||
|
echo '<legend>' . $lang['srv_missing_profile_title3'] . '</legend>'.NEW_LINE;
|
||
|
foreach ($_tpes_array AS $tkey => $tlabel) {
|
||
|
echo '<div style="float:left; width:100px; text-align:center;">'. $tlabel .'</div>'.NEW_LINE;
|
||
|
}
|
||
|
echo '<div class="clr"></div>'.NEW_LINE;
|
||
|
echo '<form name="" id="" autocomplete="off">'.NEW_LINE;
|
||
|
# loop sozi sistemske missinge
|
||
|
foreach ($_sys_missings as $mkey => $mvalue) {
|
||
|
# loop skozi tipe
|
||
|
foreach ($_tpes_array AS $tkey => $tlabel) {
|
||
|
echo '<div style="float:left; width:100px; text-align:center;">'.NEW_LINE;
|
||
|
echo '<input name="profile_value[]" type="checkbox" id="mv_'.$tkey.'_'.$mkey . '"' .
|
||
|
(isset($curentProfileData[$tkey][$mkey]) ? ' checked' : '').
|
||
|
'/>'.NEW_LINE;
|
||
|
echo '</div>'.NEW_LINE;
|
||
|
}
|
||
|
echo '<div style="float:left; width:150px;">'.NEW_LINE;
|
||
|
echo '(' . $mkey . ") " . $mvalue;
|
||
|
echo '</div>'.NEW_LINE;
|
||
|
echo '<div class="clr"></div>'.NEW_LINE;
|
||
|
}
|
||
|
echo '</form>'.NEW_LINE;
|
||
|
echo '</fieldset>'.NEW_LINE;
|
||
|
echo '</div>'.NEW_LINE;
|
||
|
|
||
|
echo '<div id="missingProfileFieldsetHolder1">'.NEW_LINE;
|
||
|
echo '<fieldset id="missingProfileFieldset">';
|
||
|
echo '<legend>'.$lang['srv_missing_profile_title5'].'</legend>';
|
||
|
# prikažemo še radio gumbe za način prikaza MV
|
||
|
|
||
|
$radio_selected = self::$profiles[$pid]['display_mv_type'];
|
||
|
echo '<div style="margin-bottom:8px;">';
|
||
|
echo '<input name="display_mv_type" id="display_mv_type_0" type="radio" value="0"'.($radio_selected == 0 ? ' checked' : '').'><label for="display_mv_type_0">'.$lang['srv_missing_profile_display_radio0'].'</label>';
|
||
|
echo ' <input name="display_mv_type" id="display_mv_type_1" type="radio" value="1"'.($radio_selected == 1 ? ' checked' : '').'><label for="display_mv_type_1">'.$lang['srv_missing_profile_display_radio1'].'</label>';
|
||
|
echo ' <input name="display_mv_type" id="display_mv_type_2" type="radio" value="2"'.($radio_selected == 2 ? ' checked' : '').'><label for="display_mv_type_2">'.$lang['srv_missing_profile_display_radio2'].'</label>';
|
||
|
echo '</div>';
|
||
|
echo '<div style=" width:auto; text-align:left;">'.NEW_LINE;
|
||
|
echo '<input name="show_zerro" id="show_zerro" type="checkbox" ' .
|
||
|
(self::$profiles[$pid]['show_zerro'] == 1 ? ' checked="checked"' : '') . ' autocomplete="off"/>'.NEW_LINE;
|
||
|
echo $lang['srv_missing_profile_other_show_zerro'];
|
||
|
echo '</div>'.NEW_LINE;
|
||
|
echo '<div style=" width:auto; text-align:left;">'.NEW_LINE;
|
||
|
echo '<input name="merge_missing" id="merge_missing" type="checkbox" ' .
|
||
|
(self::$profiles[$pid]['merge_missing'] == 1 ? ' checked="checked"' : '') . ' autocomplete="off"/>'.NEW_LINE;
|
||
|
echo $lang['srv_missing_profile_other_merge_missing'];
|
||
|
echo '</div>';
|
||
|
echo ' <div class="clr"></div>';
|
||
|
echo '</fieldset>';
|
||
|
echo '</div>'.NEW_LINE;
|
||
|
}
|
||
|
|
||
|
static function DisplayProfileOptions($pid) {
|
||
|
global $lang;
|
||
|
|
||
|
echo '<div id="missing_profile" class="select">';
|
||
|
foreach ( self::$profiles as $key => $profile ) {
|
||
|
|
||
|
echo '<div id="missing_profile_'.$profile['id'].'" class="option' . ($profile['id'] == $pid ? ' active' : '') . '" value="' . $profile['id'] . '">';
|
||
|
|
||
|
echo $profile['name'];
|
||
|
|
||
|
if($profile['id'] == $pid){
|
||
|
if (self::$profiles[$pid]['system'] != 1 ) {
|
||
|
echo '<a href="#" title="'.$lang['srv_delete_profile'].'" onclick="missingProfileAction(\'deleteAsk\'); return false;"><span class="faicon delete_circle icon-orange_link floatRight" style="margin-top:1px;"></span></a>'."\n";
|
||
|
}
|
||
|
if (self::$profiles[$pid]['system'] != 1 && $pid != -1) {
|
||
|
echo '<a href="#" title="'.$lang['srv_rename_profile'].'" onclick="missingProfileAction(\'renameAsk\'); return false;"><span class="faicon edit floatRight spaceRight"></span></a>'."\n";
|
||
|
}
|
||
|
}
|
||
|
|
||
|
echo '</div>';
|
||
|
}
|
||
|
echo '</div>';
|
||
|
|
||
|
echo '<script>';
|
||
|
echo '$(function() {';
|
||
|
echo 'scrollToProfile("#missing_profile_'.$pid.'");';
|
||
|
echo '});';
|
||
|
echo '</script>';
|
||
|
|
||
|
}
|
||
|
|
||
|
/** klici ajax funkcij
|
||
|
*
|
||
|
*/
|
||
|
static function ajax() {
|
||
|
|
||
|
$pid = $_POST['pid'];
|
||
|
switch ($_GET['a']) {
|
||
|
case 'change_profile' :
|
||
|
self :: setDefaultProfileId($pid);
|
||
|
break;
|
||
|
|
||
|
break;
|
||
|
case 'show_profile' :
|
||
|
self :: DisplayProfile($pid);
|
||
|
break;
|
||
|
case 'run_profile' :
|
||
|
self :: SaveProfile($pid);
|
||
|
self :: setDefaultProfileId($pid);
|
||
|
break;
|
||
|
case 'delete_profile':
|
||
|
self :: DeleteProfile($pid);
|
||
|
self :: setDefaultProfileId(1);
|
||
|
break;
|
||
|
case 'save_profile':
|
||
|
$new_id = self :: saveNewProfile();
|
||
|
self :: setDefaultProfileId($new_id);
|
||
|
echo $new_id;
|
||
|
break;
|
||
|
case 'rename_profile':
|
||
|
$_rename = self :: RenameProfile($pid);
|
||
|
echo $_rename;
|
||
|
break;
|
||
|
|
||
|
default:
|
||
|
echo 'ERROR! Missing function for action: '.$_GET['a'].'!';
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/** getProfiles
|
||
|
*
|
||
|
*/
|
||
|
static function getProfiles() {
|
||
|
return self::$profiles;
|
||
|
}
|
||
|
|
||
|
static public function getProfile($pid) {
|
||
|
return self::$profiles[$pid];
|
||
|
}
|
||
|
|
||
|
/** setSurveyId
|
||
|
*
|
||
|
*/
|
||
|
static function setSId($surveyId) {
|
||
|
self::$sid = $surveyId;
|
||
|
}
|
||
|
|
||
|
/** setGlobalUserId
|
||
|
*
|
||
|
*/
|
||
|
static function setGlobalUserId($uid = null) {
|
||
|
if ($uid == null) {
|
||
|
global $global_user_id;
|
||
|
self::$uid = $global_user_id;
|
||
|
} else {
|
||
|
self::$uid = $uid;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/** getGlobalUserId
|
||
|
*
|
||
|
*/
|
||
|
static function getGlobalUserId() {
|
||
|
return self::$uid;
|
||
|
}
|
||
|
static function getCurentProfileId() {
|
||
|
return self::$currentProfileId;
|
||
|
}
|
||
|
/**
|
||
|
*
|
||
|
* @param unknown_type $pid
|
||
|
*/
|
||
|
static function setCurentProfileId($pid) {
|
||
|
# ce je seja, preverimo ali obstaja cene nardimo privzetega 1
|
||
|
if ($pid == -1) {
|
||
|
if (!(isset($_SESSION['missingProfile']['-1'])))
|
||
|
$pid = 1;
|
||
|
} else if (!$pid) {
|
||
|
$pid = 1;
|
||
|
}
|
||
|
|
||
|
return self::$currentProfileId = $pid;
|
||
|
}
|
||
|
|
||
|
static function setDefaultProfileId($pid) {
|
||
|
# ce je seja, preverimo ali obstaja cene nardimo privzetega 1
|
||
|
if ($pid == -1) {
|
||
|
if (!(isset($_SESSION['missingProfile']))) {
|
||
|
$pid = 1;
|
||
|
}
|
||
|
} else if (!$pid) {
|
||
|
$pid = 1;
|
||
|
}
|
||
|
|
||
|
SurveyUserSetting :: getInstance()->saveSettings('default_missing_profile', $pid);
|
||
|
self::$currentProfileId = $pid;
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
static function SaveProfile($pid) {
|
||
|
global $lang;
|
||
|
$insert_id = 0;
|
||
|
$missing_values = $_POST['missing_values'];
|
||
|
$display_mv_type = isset($_POST['display_mv_type']) ? $_POST['display_mv_type'] : 0;
|
||
|
|
||
|
if (isset($pid) && $pid != null) {
|
||
|
# ce mamo sistemski profil ga ne shranjujemo
|
||
|
$checkSelect = "SELECT * as cnt FROM srv_missing_profiles WHERE id = '".$pid."' and system = 1";
|
||
|
$checkQry = sisplet_query($checkSelect);
|
||
|
if (mysqli_num_rows($checkQry) > 0) {
|
||
|
return $pid;
|
||
|
}
|
||
|
|
||
|
$show_zerro = (isset($_POST['show_zerro']) && $_POST['show_zerro'] == 'true') ? 1 : 0;
|
||
|
$merge_missing = (isset($_POST['merge_missing']) && $_POST['merge_missing'] == 'true') ? 1 : 0;
|
||
|
|
||
|
# ce imamo session pozenemo kot sejo
|
||
|
if ($pid == -1) {
|
||
|
$missing_values = explode(',',$missing_values);
|
||
|
$_SESSION['missingProfile'] = array('id'=>'-1','uid'=>0,'name'=>$lang['srv_temp_profile'],'system'=>0, 'display_mv_type'=>$display_mv_type, 'show_zerro'=>$show_zerro, 'merge_missing'=>$merge_missing);
|
||
|
# pobrišemo predhodne nastavitve
|
||
|
unset($_SESSION['missingProfile']['values']);
|
||
|
if (count($missing_values) > 0) {
|
||
|
foreach ($missing_values as $_missing_value) {
|
||
|
$_missing_value = substr($_missing_value,3);
|
||
|
list($type,$key) = explode('_',$_missing_value);
|
||
|
$_SESSION['missingProfile']['values'][$type][$key] = true;
|
||
|
}
|
||
|
}
|
||
|
return -1;
|
||
|
}
|
||
|
# imamo podatke, updejtamo profil v bazi (profili z id 1,2,3 so sitemski)
|
||
|
if ($pid > 3) {
|
||
|
# shranimo morebitno spremembo nastavitve display_mv_type
|
||
|
$updateString = "UPDATE srv_missing_profiles SET display_mv_type='".$display_mv_type."', show_zerro='".$show_zerro."', merge_missing='".$merge_missing."' WHERE id='".$pid."' AND system = 0";
|
||
|
$updatequery = sisplet_query($updateString);
|
||
|
|
||
|
# najprej pobrišemo stare podatke za ta profil
|
||
|
$stringDelete = "DELETE FROM srv_missing_profiles_values WHERE missing_pid ='".$pid."'";
|
||
|
$deleteQuery = sisplet_query($stringDelete);
|
||
|
|
||
|
# shranimo nove vrednosti
|
||
|
$missing_values = explode(',',$missing_values);
|
||
|
if (count($missing_values ) > 0) {
|
||
|
$insertString = "INSERT INTO srv_missing_profiles_values (missing_pid, missing_value, type) VALUES";
|
||
|
$prefix = '';
|
||
|
|
||
|
foreach ($missing_values as $_missing_value) {
|
||
|
$_missing_value = substr($_missing_value,3);
|
||
|
list($type,$key) = explode('_',$_missing_value);
|
||
|
$insertString .= $prefix . " (".$pid.", ".$key.", ".$type.")";
|
||
|
$prefix = ',';
|
||
|
}
|
||
|
$queryInsert = sisplet_query($insertString)
|
||
|
or die(mysqli_error($GLOBALS['connect_db']));
|
||
|
}
|
||
|
}
|
||
|
return $pid;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
static function saveNewProfile() {
|
||
|
|
||
|
$name = $_POST['name'];
|
||
|
$missing_values = $_POST['missing_values'];
|
||
|
$display_mv_type = isset($_POST['display_mv_type']) ? $_POST['display_mv_type'] : 0;
|
||
|
|
||
|
$insert_id = 0;
|
||
|
if (isset($name) && $name != null ) {
|
||
|
# imamo podatke, vstavimo nov profil v bazo
|
||
|
$show_zerro = (isset($_POST['show_zerro']) && $_POST['show_zerro'] == 'true') ? 1 : 0;
|
||
|
$merge_missing = (isset($_POST['merge_missing']) && $_POST['merge_missing'] == 'true') ? 1 : 0;
|
||
|
|
||
|
$insertString = "INSERT INTO srv_missing_profiles (uid,name,system,display_mv_type,show_zerro,merge_missing) VALUES ('".self::getGlobalUserId()."', '".$name."', 0, '".$display_mv_type."', '".$show_zerro."', '".$merge_missing."')";
|
||
|
$queryInsert = sisplet_query($insertString);
|
||
|
$insert_id = mysqli_insert_id($GLOBALS['connect_db']);
|
||
|
if ($insert_id > 0) {
|
||
|
# če je insert id <= 3 ga popravimo da je večji od 3.
|
||
|
if ($insert_id <= 3) {
|
||
|
$selectId = "SELECT max(id) FROM srv_missing_profiles";
|
||
|
list($maxInseredId) = mysqli_fetch_row(sisplet_query($selectId));
|
||
|
$newInsert_id = max(4,$maxInseredId);
|
||
|
$updateString = "UPDATE srv_missing_profiles SET id='".$newInsert_id."' WHERE id='".$insert_id."'";
|
||
|
$updatequery = sisplet_query($updateString);
|
||
|
$insert_id = $newInsert_id;
|
||
|
}
|
||
|
|
||
|
self::$profiles[$insert_id] = array('id'=>$insert_id,'uid'=>self::getGlobalUserId(),'name'=>$name,'system'=>0);
|
||
|
|
||
|
# shranimo nove vrednosti
|
||
|
$missing_values = explode(',',$missing_values);
|
||
|
if (count($missing_values ) > 0) {
|
||
|
$insertString = "INSERT INTO srv_missing_profiles_values (missing_pid, missing_value, type) VALUES";
|
||
|
$prefix = '';
|
||
|
|
||
|
foreach ($missing_values as $_missing_value) {
|
||
|
$_missing_value = substr($_missing_value,3);
|
||
|
list($type,$key) = explode('_',$_missing_value);
|
||
|
$insertString .= $prefix . " (".$insert_id.", ".$key.", ".$type.")";
|
||
|
$prefix = ',';
|
||
|
}
|
||
|
$queryInsert = sisplet_query($insertString);
|
||
|
}
|
||
|
|
||
|
} else {
|
||
|
|
||
|
}
|
||
|
}
|
||
|
return $insert_id;
|
||
|
}
|
||
|
|
||
|
static function RenameProfile($pid) {
|
||
|
$name = $_POST['name'];
|
||
|
if (isset($pid) && $pid != null && isset($name) && $name != null ) {
|
||
|
$updateString = "UPDATE srv_missing_profiles SET name = '".$name."' WHERE id = ".$pid;
|
||
|
$updated = sisplet_query($updateString);
|
||
|
if ($updated) {
|
||
|
return 0;
|
||
|
} else {
|
||
|
return mysqli_error($GLOBALS['connect_db']);
|
||
|
}
|
||
|
} else {
|
||
|
if (!isset($pid) || $pid == null || trim($pid) == '') {
|
||
|
return 'Invalid profile Id';
|
||
|
} else if (!isset($name) || $name == null || trim($name) == '') {
|
||
|
return 'Invalid profile name';
|
||
|
} else {
|
||
|
return 'Error!';
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
static function DeleteProfile($pid) {
|
||
|
if ($pid == -1) {
|
||
|
unset($_SESSION['missingProfile']);
|
||
|
}
|
||
|
# izbrišemo lahko samo nesistemske profile
|
||
|
if (self::$profiles[$pid]['system'] != 1) {
|
||
|
# zaradi ključev se avtomatsko pobriše tudi: srv_missing_profiles_values
|
||
|
$sqlDelete = sisplet_query("DELETE FROM srv_missing_profiles WHERE id = '$pid' AND system != '1'");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
static function DisplayLink($hideAdvanced = true) {
|
||
|
global $lang;
|
||
|
// profili missingov
|
||
|
$missingProfiles = self :: getProfiles();
|
||
|
$izbranMissingProfile = self :: getCurentProfileId();
|
||
|
|
||
|
$css = ($izbranMissingProfile == SMP_DEFAULT_PROFILE ? ' gray' : '');
|
||
|
if ($hideAdvanced == false || $izbranMissingProfile != SMP_DEFAULT_PROFILE ) {
|
||
|
echo '<li class="space"> </li>';
|
||
|
echo '<li>';
|
||
|
echo '<span class="as_link'.$css.'" id="link_missing_profile" title="' . $lang['srv_analiza_setup_profile'] . '" onClick="show_missing_profiles();">' . $lang['srv_analiza_setup_profile'] . '</span>'."\n";
|
||
|
echo '</li>';
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/** Ustvarimo tri sistemske profile ustvarimo jih navidezno
|
||
|
*
|
||
|
* Brez manjkajočih vrednosti - ne prikazuje manjkajočih vrednosti (display_mv_type = 0)
|
||
|
* Skupaj MV - prikaže samo skupaj manjkajoče vrednosti (display_mv_type = 1)
|
||
|
* Podrobno MV - prikaže razširjeno manjkajoče vrednosti (display_mv_type = 2)
|
||
|
*/
|
||
|
static function addSystemProfiles() {
|
||
|
global $lang;
|
||
|
|
||
|
# skreiramo 3 sistemske manjkajoče profile
|
||
|
for ( $i = 1; $i <= 3; $i++ ) {
|
||
|
self::$profiles[$i] = array('id'=>$i,'uid'=>self::getGlobalUserId(),'name'=>$lang['srv_missing_profiles_profile'.$i.'_lbl'],'system'=>1, 'display_mv_type'=>(int)$i-1);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/** Vrenmo podatke o izbranem profilu v obliki arraya
|
||
|
*
|
||
|
* @param unknown_type $pid
|
||
|
*/
|
||
|
static function getProfileValues($pid) {
|
||
|
$result = array();
|
||
|
|
||
|
if ($pid == -1) {
|
||
|
# beremo iz seje
|
||
|
if (isset($_SESSION['missingProfile'])) {
|
||
|
$result = $_SESSION['missingProfile']['values'];
|
||
|
return $result;
|
||
|
} else {
|
||
|
$pid = 1;
|
||
|
}
|
||
|
}
|
||
|
# če je sistemski profil preberemo iz avtomatsko skreiranih
|
||
|
if ( ($pid < 3 && $pid >= 0) || (isset(self::$profiles[$pid]) && self::$profiles[$pid]['system'] == 1)) {
|
||
|
# imamo sistemski profil, preberemo podatke ki so bili skreirani "on the fly"
|
||
|
#najprej poiščemo sistemske missinge
|
||
|
$_sys_missings = self::$smv->GetMissingValuesForSurvey();
|
||
|
$_sys_unset = self::$smv->GetUnsetValuesForSurvey(array(2,3));
|
||
|
|
||
|
# sistemske missinge (-1,-2,-3,-4) dodamo k vsem profilom
|
||
|
if (count($_sys_missings) > 0) {
|
||
|
foreach($_sys_missings AS $key => $value) {
|
||
|
$result[MISSING_TYPE_DESCRIPTOR][$key] = true;
|
||
|
$result[MISSING_TYPE_FREQUENCY][$key] = true;
|
||
|
$result[MISSING_TYPE_CROSSTAB][$key] = true;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
# neopredeljene vrednosti (-99,-98,-97) dodamo samo k opisnim in krostabulacijam
|
||
|
if (count($_sys_unset) > 0) {
|
||
|
foreach($_sys_unset AS $key => $value) {
|
||
|
$result[MISSING_TYPE_DESCRIPTOR][$key] = true;
|
||
|
$result[MISSING_TYPE_CROSSTAB][$key] = true;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
} else {
|
||
|
$selectString = "SELECT missing_value, type FROM srv_missing_profiles_values WHERE missing_pid = '".$pid."'";
|
||
|
$querySelect = sisplet_query($selectString);
|
||
|
if (mysqli_num_rows($querySelect)) {
|
||
|
while ( $rowSelect = mysqli_fetch_assoc($querySelect) ) {
|
||
|
$result[$rowSelect['type']][$rowSelect['missing_value']] = true;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return $result;
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
* type = 1 => opisne
|
||
|
* type = 2 => frekvence
|
||
|
*/
|
||
|
static function GetMissingValuesForAnalysis($type,$pid=null) {
|
||
|
$result = array();
|
||
|
|
||
|
#poiščemo sistemske missinge, z labele
|
||
|
|
||
|
$_survey_missings = self::$smv->GetMissingValuesForSurvey(array(1,2,3));
|
||
|
|
||
|
if ($pid == null)
|
||
|
{
|
||
|
$pid = self::$currentProfileId;
|
||
|
}
|
||
|
$curentProfileData = self :: getProfileValues($pid);
|
||
|
if (count($curentProfileData[$type]) > 0) {
|
||
|
foreach ($curentProfileData[$type] AS $key => $is_set) {
|
||
|
$result[$key] = isset($_survey_missings[$key]) ? $_survey_missings[$key] : $key;
|
||
|
}
|
||
|
}
|
||
|
return $result;
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
?>
|