Init(self::$surveyId, self::$uId); # preverimo ali ima uporabnik nastavljen privzet profil $dsp = SurveyUserSetting :: getInstance()->getSettings('default_time_profile'); if ( $dsp == null ) { # nastavimo privzet profil v clas $dsp = 0; } #dodamo profil iz seje if ( (int)$dsp == -1 ) { if ( isset($_SESSION['time_profile'][self::$surveyId])) { #dodamo profil iz seje self::$profiles['-1'] = array('id'=>'-1', 'name'=>$lang['srv_temp_profile'], 'type'=>$_SESSION['time_profile'][self::$surveyId]['type'], 'starts'=>$_SESSION['time_profile'][self::$surveyId]['starts'], 'ends'=>$_SESSION['time_profile'][self::$surveyId]['ends'], 'interval_txt'=>$_SESSION['time_profile'][self::$surveyId]['interval_txt']); $dsp = -1; } else { // ni v seji, naredimo privzetega $dsp = 0; } } # če mamo spremembo shranimo self::SetDefaultProfileId((int)$dsp); #dodamo privzet profil # datum od, "ce ni podan vzamemo kreacijo ankete SurveyInfo :: getInstance()->SurveyInit(self::getSurveyId()); self::$start_date = date(STP_DATE_FORMAT, strtotime(SurveyInfo::getInstance()->getSurveyInsertDate())); # datum do, "ce ni podan vzamemo danasnji dan self::$end_date = date(STP_DATE_FORMAT);// ce ne, # dodamo sistemski profil self::$profiles['0'] = array( 'id'=>0, 'type'=>0, 'name'=>$lang['srv_default_profile'], 'starts'=>self::$start_date, 'ends'=>self::$end_date, 'interval_txt'=>''); # poiščemo še seznam vseh ostalih profilov uporabnika $stringSelect = "SELECT id, name, type, DATE_FORMAT(starts,'".STP_CALENDAR_DATE_FORMAT."') AS starts, DATE_FORMAT(ends,'".STP_CALENDAR_DATE_FORMAT."') AS ends, interval_txt FROM srv_time_profile WHERE uid = '".self::getGlobalUserId()."' || uid = '0' ORDER BY id"; $querySelect = sisplet_query($stringSelect); while ( $rowSelect = mysqli_fetch_assoc($querySelect) ) { self::$profiles[$rowSelect['id']] = array( 'id'=>$rowSelect['id'], 'name'=>$rowSelect['name'], 'type'=>$rowSelect['type'], 'starts'=>$rowSelect['starts'], 'ends'=>$rowSelect['ends'], 'interval_txt'=>$rowSelect['interval_txt']); } # nastavimo id profil klassa na izbran self::$currentProfileId = (int)$dsp; return true; } else { return false; } } static function getSystemDefaultProfile() { return (int)STP_DEFAULT_PROFILE; } /** Vrne podatke trenutno izbranega profofila * */ static function GetCurentProfileData() { return self::$profiles[self::$currentProfileId]; } /** Vrne podatke podanega profofila * */ static function GetProfileData($pid) { return self::$profiles[$pid]; } public function getProfileName($pid) { return self::$profiles[$pid]['name']; } /** Vrne array z start date in end date * */ static function GetDates($forceDefaultFilter = false) { if ($forceDefaultFilter == false) { $_profile_data = self :: GetCurentProfileData(); # ali imam o privzete datume filtra $is_default_dates = ((int)$_profile_data['id'] == 0 ? true : false); } else { # zaradi možnosti masovnega zbiranja vsilimo privzet datum $_profile_data = self::$profiles[0]; # ali imam o privzete datume filtra $is_default_dates = true; } # nastavimo start date in end date if ($_profile_data['interval_txt'] != '') { # ce imamo nastavljen datum preko intervala $end_date = date(STP_OUTPUT_DATE_FORMAT); $start_date = date(STP_OUTPUT_DATE_FORMAT,strtotime(date(STP_OUTPUT_DATE_FORMAT, strtotime($end_date)) . ' - '.$_profile_data['interval_txt'])); } else if ($_profile_data['starts'] != '' && $_profile_data['ends'] != '') { # imamo podana oba datuma $start_date = date(STP_OUTPUT_DATE_FORMAT,strtotime($_profile_data['starts'])); $end_date = date(STP_OUTPUT_DATE_FORMAT,strtotime($_profile_data['ends'])); } else { # napaka vzamemo datum kreacije ankete in današnji datum $start_date = date(STP_OUTPUT_DATE_FORMAT,strtotime(SurveyInfo::getInstance()->getSurveyInsertDate())); $end_date = date(STP_OUTPUT_DATE_FORMAT);; } # končni datum po potrebi zmanjšamo na današnji datum if (strtotime($end_date) > strtotime(date(STP_OUTPUT_DATE_FORMAT))) { $end_date = date(STP_OUTPUT_DATE_FORMAT); } return array('start_date'=>$start_date, 'end_date'=>$end_date, 'is_default_dates' => $is_default_dates); } /** Pridobimo seznam vseh list uporabnika * v obliki arraya */ static function getProfiles() { return self::$profiles; } /* Vrne ID in ime trenutno izbranega profila * */ function getCurentProfile() { return array('id'=>self::$currentProfileId,'name'=>self::$profiles[self::$currentProfileId]['name']); } /** Ponastavi id privzetega profila * */ static function SetDefaultProfile($pid) { self::SetDefaultProfileId($pid); } static function SetDefaultProfileId($pid) { self::$currentProfileId = (int)$pid; $saved = SurveyUserSetting :: getInstance()->saveSettings('default_time_profile',(int)$pid); } static function ChooseProfile($pid) { # če smo izbrali drug profil resetiramo še profil profilov na trenutne nastavitve SurveyUserSetting :: getInstance()->saveSettings('default_profileManager_pid', '0'); self::SetDefaultProfileId((int)$pid); self::$currentProfileId = (int)$pid; } /** * */ static function SaveProfile($pid,$type,$startDate,$endDate,$stat_interval) { global $lang; if ((int)$pid == 0 ) { # imamo privzet profil self :: ChooseProfile((int)$pid); $updated = true; } else if ((int)$pid > 0) { # shranimo v bazo if ((int)$type == 0) { # $type = '0'; # shranjujemo od - do $stat_interval = ''; $_startDate = date(STP_OUTPUT_DATE_FORMAT, strtotime($startDate)); $_endDate = date(STP_OUTPUT_DATE_FORMAT, strtotime($endDate)); $update = "UPDATE srv_time_profile SET starts = '".$_startDate."', ends='".$_endDate."', type='".$type."', interval_txt = '' WHERE id = '".$pid."'"; } else { # $type = '1'; # shranjujemo interval $startDate = ''; $endDate = ''; $type = '1'; $update = "UPDATE srv_time_profile SET starts = '0000-00-00 00:00:00', ends='0000-00-00 00:00:00', type='".$type."', interval_txt = '".$stat_interval."' WHERE id = '".$pid."'"; } $updated = sisplet_query($update); # ce je bili updejt ok posodobimo se vrednost v profilu if ($updated) { self::$profiles[$pid]['type'] = $type; self::$profiles[$pid]['starts'] = $startDate; self::$profiles[$pid]['ends'] = $endDate; self::$profiles[$pid]['interval_txt'] = $stat_interval; } # nastavimo privzet profil na trenutnega self :: ChooseProfile((int)$pid); } else { # shranjujenmo v sejo $_SESSION['time_profile'][self::$surveyId] = array('id'=>'-1', 'name'=>$lang['srv_temp_profile']); if ((int)$type == 0) { # $type = '0'; # shranjujemo od - do $_SESSION['time_profile'][self::$surveyId]['type'] = '0'; $_SESSION['time_profile'][self::$surveyId]['starts'] = date(STP_OUTPUT_DATE_FORMAT, strtotime($startDate)); $_SESSION['time_profile'][self::$surveyId]['ends'] = date(STP_OUTPUT_DATE_FORMAT, strtotime($endDate)); unset($_SESSION['time_profile'][self::$surveyId]['interval_txt']); } else { $_SESSION['time_profile'][self::$surveyId]['type'] = '1'; $_SESSION['time_profile'][self::$surveyId]['interval_txt'] = $stat_interval; unset($_SESSION['time_profile'][self::$surveyId]['starts']); unset($_SESSION['time_profile'][self::$surveyId]['ends']); } self::$profiles[$pid] = $_SESSION['time_profile'][self::$surveyId]; $updated = true; self :: ChooseProfile((int)$pid); } return $updated; } static function RenameProfile($pid, $name) { if (isset($pid) && $pid > 0 && isset($name) && trim($name) != "") { // popravimo podatek za variables $stringUpdate = "UPDATE srv_time_profile SET name = '".$name."' WHERE id = '".$pid."'"; $updated = sisplet_query($stringUpdate); return $updated; } else { return -1; } } static function DeleteProfile($pid = 0) { if (isset($pid) && $pid == -1) { unset($_SESSION['time_profile'][self::$surveyId] ); } else if (isset($pid) && $pid > 0) { // Izbrišemo profil in nastavimo privzetega $stringUpdate = "DELETE FROM srv_time_profile WHERE id = '".$pid."'"; $updated = sisplet_query($stringUpdate); } # nastavimo privzet profil self::ChooseProfile('0'); } /** Funkcija kreira nov profil * */ function createProfile($type,$startDate,$endDate,$stat_interval,$name=null) { global $lang; if ($name == null || trim($name) == '' ) { $name = $lang['srv_new_profile']; } if ($type == '0') { # shranjujemo od - do $startDate = date(STP_OUTPUT_DATE_FORMAT, strtotime($startDate)); $endDate = date(STP_OUTPUT_DATE_FORMAT, strtotime($endDate)); $stat_interval = ''; } else { # shranjujemo interval $startDate = '0000-00-00'; $endDate = '0000-00-00'; $type = '1'; } $iStr = "INSERT INTO srv_time_profile (id,uid,name,type,starts,ends,interval_txt)". " VALUES (NULL, '".self::$uId."', '".$name."', '".$type."', '".$startDate."', '".$endDate."', '".$stat_interval."')"; $ins = sisplet_query($iStr); $id = mysqli_insert_id($GLOBALS['connect_db']); if ($id > 0) { self :: ChooseProfile($id); } else { self :: ChooseProfile(0); } return; } /** prikažemo dropdown z izbranim profilom in link do nastavitev profila * * */ static function DisplayLink($hideAdvanced = true, $showseperator = true) { global $lang; $profiles = self :: getProfiles(); $izbranProfil = self :: getCurentProfileId(); $css = ($izbranProfil == STP_DEFAULT_PROFILE ? ' gray' : ''); if ($hideAdvanced == false || $izbranProfil != STP_DEFAULT_PROFILE) { if ($showseperator == true) { echo '
  •  
  • '; } echo '
  • '; echo '' . $lang['srv_time_profile_link'] . ''; echo '
  • '; } } /** Funkcija prikaze izbor datuma * */ static function displayProfiles($current_pid = null) { global $lang; $_all_profiles = self::getProfiles(); // Naslov echo '

    '.$lang['srv_obdobje_settings'].'

    '; echo ''; if ($current_pid == null) { $current_pid = self::getCurentProfileId(); } $currentFilterProfile = $_all_profiles[$current_pid]; if ( $current_pid != STP_DEFAULT_PROFILE ) { echo '
    '; echo $lang['srv_not_default_setting']; echo '

    '; } echo '
    '; echo '
    '; # zlistamo vse profile echo '
    '; if (count($_all_profiles)) { foreach ($_all_profiles as $id=>$profile) { echo '
    '; echo $profile['name']; if($current_pid == $id){ # privzetega profila ne moremo ne zbrisat ne preimenovat if ($current_pid != 0) { echo ''; } if ($current_pid > 0) { echo ''; } } echo '
    '; } } echo '
    '; // time_profile echo '
    '; //time_profile_holder echo '
    '; //time_profile_left echo '
    '; echo '
    '; self::DisplayProfileData($current_pid); echo '
    '; // time_profile_content echo '
    '; // time_profile_right echo '
    '; if ($current_pid == 0) { echo ''; # echo ''; echo ''; echo ''; } else if ($current_pid == -1) { echo ''; echo ''; echo ''; } else { echo ''; echo ''; echo ''; echo ''; } echo '
    '; // time_profile_button_right_holder // cover Div echo '
    '; // div za kreacijo novega echo '
    '.$lang['srv_missing_profile_name'].': '; echo ''; echo ''.$lang['srv_analiza_arhiviraj_save'].''; echo ''.$lang['srv_close_profile'].''; echo '
    '; // div za preimenovanje echo '
    '.$lang['srv_missing_profile_name'].': '; echo ''; echo ''; echo ''.$lang['srv_rename_profile_yes'].''; echo ''.$lang['srv_close_profile'].''; echo '
    '; // div za brisanje echo '
    '.$lang['srv_missing_profile_delete_confirm'].': ' . $currentFilterProfile['name'] . '?'; echo ''; echo ''.$lang['srv_delete_profile_yes'].''; echo ''.$lang['srv_close_profile'].''; echo '
    '; } /** Funkcija prikaze osnovnih informacije profila * */ static function DisplayProfileData($current_pid) { global $lang; # podatki profila $p_data = self::GetProfileData($current_pid); #kateri nacin imamo ali type (od - do) ali inervalsko (zadnjih....) # ce je podan string interval imamo intervalno $type = $p_data['type']; if ( $type == '0') { $time = ''; } else { $p_data['starts'] = date(STP_DATE_FORMAT,strtotime(SurveyInfo::getInstance()->getSurveyInsertDate())); $p_data['ends'] = date(STP_DATE_FORMAT); $time = $p_data['interval_txt']; } echo ''; echo ' '; echo ''; echo ''; echo ' '; echo '' . "\n" ; echo '
    '; echo '

    '.$lang['srv_statistic_period_label'].':'; echo ''; echo '

    '; echo ''; } public static function ajax() { switch ($_GET['a']) { case 'showProfile': self::displayProfiles($_POST['pid']); break; case 'createProfile': self::createNewProfile(); break; case 'changeProfile': self::ChooseProfile($_POST['pid']); break; case 'renameProfile': self::RenameProfile($_POST['pid'], $_POST['name']); break; case 'deleteProfile': self::DeleteProfile($_POST['pid']); break; case 'saveProfile': self::SaveProfile($_POST['pid'],$_POST['type'],$_POST['startDate'],$_POST['endDate'],$_POST['stat_interval']); break; default: print_r("
    ");
    				print_r($_POST);
    				print_r($_GET);
    			break;				
    		}
    	} 
    	
    	/** Kreira nov profil z datumom od začetka ankete do danes
    	 * 
    	 */
    	public static function createNewProfile() {
    		global $lang;
    		
    		if ($_POST['profileName'] == null || trim($_POST['profileName']) == '' ) {
    			$_POST['profileName'] = $lang['srv_new_profile'];
    		}
    
    		$type = '0';;
    		$stat_interval = '';
    			 
    		$startdate = date(STP_OUTPUT_DATE_FORMAT, strtotime(self::$start_date)); 
    		$enddate = date(STP_OUTPUT_DATE_FORMAT, strtotime(self::$end_date)); 
    			
    		$iStr = "INSERT INTO srv_time_profile (id,uid,name,type,starts,ends,interval_txt)".
    		" VALUES (NULL, '".self::getGlobalUserId()."', '".$_POST['profileName']."', '".$type."', '".$startdate."', '".$enddate."', '".$stat_interval."')";
    		
    		$ins = sisplet_query($iStr);
    		$id = mysqli_insert_id($GLOBALS['connect_db']);
    		
    		if ($id > 0) {
    			self::ChooseProfile($id);
    		} else {
    			$id = 0;
    			self::ChooseProfile($id);
    		}
    		
    		return $id;
    	}
    	
    	/** Vrne filter v obliki stringa primernega za uporabo filtriranja z AWK  
    	 * 
    	 */
    	public static function getFilterForAWK ($sequenca = null) {
    		# če manjka sekvenca mamo napako in ne delamo filtra
    		if ($sequenca == null || $sequenca == '') {
    			return '';
    		}
    		
    		$_profile = self::GetCurentProfileData();
    		#za privzet porfil id = 0 ne delamo časovnih omejitev
    		if ($_profile['id'] == '0') {
    			return '';
    		} else {
    			# odvisno od tipa profila pripravimo omejitve datuma
    			$set=false;
    			
    			if ($_profile['type'] == '0') {
    				$result = '(';
    				$prefix = '';
    				# imamo range od - do
    				# spremenimo oba datuma v unixtime
    				
    				$startUnixDate = date("U", strtotime($_profile['starts']));
    				$endUnixDate = date("U", strtotime($_profile['ends']));
    
    				if ((int)$startUnixDate > 0 ) {
    					$result .= '$'.$sequenca. ' > ' . $startUnixDate;
    					$prefix = ' && ';
    					$set=true;
    				}
    				if ((int)$endUnixDate > 0 ) {
    					# + 86 400 seconds = one day
    					$result .= $prefix. '$'.$sequenca. ' < ' . ($endUnixDate+ 86400) ;
    					$set=true;
    				}
    				$result .= ')';
    			
    			} else {
    				#imamo interval zadnjih XXX dni
    				
    				$date = date("Y-m-d");// current date
    				$unix_date = strtotime(date("Y-m-d", strtotime($date)) . " -".$_profile['interval_txt']);
     				
    				if ((int)$unix_date > 0 && $_profile['interval_txt'] != null && $_profile['interval_txt'] =! '') {
    					$result =  '($'.$sequenca. ' > ' . $unix_date.')';
    					$set=true;
    				}
    			}
    			if ($set == true) {
    				return $result;
    			}
    		}
    		
    		
    	} 
    	
    	/** Izpišemo opozorilo če ni privzet profil
    	 * 
    	 */
    	static function printIsDefaultProfile() {
    		global $lang;
    		if (self::$currentProfileId != 0) {
    			$cp_data = self::GetCurentProfileData(); 
    			echo '
    '; # odvisno od tipa profila izpišemo ali obdobje ali interval if ($cp_data['type'] == 0) { # obdobje: od - do echo $lang['srv_time_profile_filter_dates']; echo date(STP_DATE_FORMAT, strtotime($cp_data['starts'])); echo $lang['srv_time_profile_filter_dates_2']; echo date(STP_DATE_FORMAT, strtotime($cp_data['ends'])); } else { # interval: zadnjih x dni echo $lang['srv_time_profile_filter_period']; echo ($lang['srv_diagnostics_'.$cp_data['interval_txt']]); } echo '   '; echo ''.$lang['srv_profile_edit'].''; echo '  '; echo ''.$lang['srv_profile_remove'].''; echo '
    '; echo '
    '; return true; } else { return false; } } /** 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; } } ?>