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.SurveyStatisticProfiles.php | 455 +++++++++++++++++++++ 1 file changed, 455 insertions(+) create mode 100644 admin/survey/classes/class.SurveyStatisticProfiles.php (limited to 'admin/survey/classes/class.SurveyStatisticProfiles.php') diff --git a/admin/survey/classes/class.SurveyStatisticProfiles.php b/admin/survey/classes/class.SurveyStatisticProfiles.php new file mode 100644 index 0000000..3f56e4f --- /dev/null +++ b/admin/survey/classes/class.SurveyStatisticProfiles.php @@ -0,0 +1,455 @@ +Init(self::$surveyId, self::$uId); + # preverimo ali ima uporabnik nastavljen privzet profil + $dsp = SurveyUserSetting :: getInstance()->getSettings('default_statistic_profile'); + + if ( $dsp == null || $dsp == 0 ) { + # nastavimo privzet profil v clas + $dsp = 0; + + } + #dodamo profil iz seje + if ( isset($_SESSION['statistic_profile'][self::$surveyId])) { + #dodamo profil iz seje + self::$profiles['-1'] = array('id'=>'-1', + 'name'=>$lang['srv_temp_profile'], + 'starts'=>$_SESSION['statistic_profile'][self::$surveyId]['starts'], + 'ends'=>$_SESSION['statistic_profile'][self::$surveyId]['ends'], + 'interval_txt'=>$_SESSION['statistic_profile'][self::$surveyId]['interval_txt']); + } + // ni v seji, nar3edimo privzeteka + if ($dsp == -1 && !(isset($_SESSION['statistic_profile'][self::$surveyId]))) { + $dsp = 0; + } + + self::SetDefaultProfile($dsp); + + #dodamo privzet profil + # datum od, "ce ni podan vzamemo kreacijo ankete + SurveyInfo :: getInstance()->SurveyInit(self::getSurveyId()); + + $start_date = date(SS_DATE_FORMAT, strtotime(SurveyInfo::getInstance()->getSurveyInsertDate())); + + # datum do, "ce ni podan vzamemo danasnji dan + $end_date = date(SS_DATE_FORMAT);// ce ne, + + self::$profiles['0'] = array( 'id'=>0, + 'name'=>$lang['srv_default_profile'], + 'starts'=>$start_date, + 'ends'=>$end_date, + 'interval_txt'=>''); + + # poiščemo še seznam vseh ostalih profilov uporabnika + + $stringSelect = "SELECT id, name, DATE_FORMAT(starts,'".SS_CALENDAR_DATE_FORMAT."') AS starts, DATE_FORMAT(ends,'".SS_CALENDAR_DATE_FORMAT."') AS ends, interval_txt FROM srv_statistic_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'], + 'starts'=>$rowSelect['starts'], + 'ends'=>$rowSelect['ends'], + 'interval_txt'=>$rowSelect['interval_txt']); + } + return true; + } else + return false; + + } + + /** 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]; + } + + /** Vrne array z start date in end date + * + */ + static function GetStatisticDates() { + $_profile_data = self :: GetCurentProfileData(); + + # ali imam o privzete datume filtra + $is_default_dates = (int)($_profile_data['id'] === 0); + + # nastavimo start date in end date + if ($_profile_data['interval_txt'] != '') { + # ce imamo nastavljen datum preko intervala + $end_date = date(SS_OUTPUT_DATE_FORMAT); + $start_date = date(SS_OUTPUT_DATE_FORMAT,strtotime(date(SS_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(SS_OUTPUT_DATE_FORMAT,strtotime($_profile_data['starts'])); + $end_date = date(SS_OUTPUT_DATE_FORMAT,strtotime($_profile_data['ends'])); + } else { + # napaka vzamemo datum kreacije ankete in današnji datum + $start_date = date(SS_OUTPUT_DATE_FORMAT,strtotime(SurveyInfo::getInstance()->getSurveyInsertDate())); + $end_date = date(SS_OUTPUT_DATE_FORMAT);; + + } + # končni datum po potrebi zmanjšamo na današnji datum + if (strtotime($end_date) > strtotime(date(SS_OUTPUT_DATE_FORMAT))) { + $end_date = strtotime(date(SS_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; + } + + /** Ponastavi id privzetega profila + * + */ + static function SetDefaultProfile($pid) { + self::$currentProfileId = $pid; + $saved = SurveyUserSetting :: getInstance()->saveSettings('default_statistic_profile',$pid); + + } + /** + * + */ + static function RunStatisticProfile($pid,$timeline,$startDate,$endDate,$stat_interval, $asSession) { + if ($pid == 0 && ($asSession == false || $asSession == 'false' )) { + # imamo privzet profil + self :: SetDefaultProfile(0); + + } else if ($pid > 0 && ($asSession == false || $asSession == 'false' )) { + # shranimo v bazo + //sisplet_query("UPDATE srv_statistic_profile SET timeline,startDate,endDate,stat_interval WHERE id = '".$pid."'"); + if ($timeline == 'true') { + # shranjujemo od - do + $stat_interval = ''; + $update = "UPDATE srv_statistic_profile SET starts = '".$startDate."', ends='".$endDate."', interval_txt = '' WHERE id = '".$pid."'"; + } else { + # shranjujemo interval + $startDate = ''; + $endDate = ''; + $update = "UPDATE srv_statistic_profile SET starts = '0000-00-00 00:00:00', ends='0000-00-00 00:00:00', 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]['starts'] = $startDate; + self::$profiles[$pid]['ends'] = $endDate; + self::$profiles[$pid]['interval_txt'] = $stat_interval; + } + + # nastavimo privzet profil na trenutnega + self :: SetDefaultProfile($pid); + + } else { + # shranjujenmo v sejo + if ($timeline == 'true') { + # shranjujemo od - do + $stat_interval = ''; + } else { + # shranjujemo interval + $startDate = ''; + $endDate = ''; + } + + if ($timeline == 'true') { + self::$profiles[$pid]['starts'] = $startDate; + self::$profiles[$pid]['ends'] = $endDate; + } else { + self::$profiles[$pid]['interval_txt'] = $stat_interval; + } + + $_SESSION['statistic_profile'][self::$surveyId] = array('id'=>'-1', + 'name'=>$lang['srv_temp_profile'], + 'starts'=>$startDate, + 'ends'=>$endDate, + 'interval_txt'=>$stat_interval); + + self :: SetDefaultProfile(-1); + + } + return $updated; + } + + static function RenameProfile($pid, $name) { + + if (isset($pid) && $pid > 0 && isset($name) && trim($name) != "") { + // popravimo podatek za variables + $stringUpdate = "UPDATE srv_statistic_profile SET name = '".$name."' WHERE id = '".$pid."'"; + $updated = sisplet_query($stringUpdate); + return $updated; + } else { + return -1; + } + } + + static function DeleteProfile($pid = 0) { + self :: SetDefaultProfile('0'); + if (isset($pid) && $pid == -1) { + unset($_SESSION['statistic_profile'][self::$surveyId] ); + } else if (isset($pid) && $pid > 0) { + // Izbrišemo profil in nastavimo privzetega + $stringUpdate = "DELETE FROM srv_statistic_profile WHERE id = '".$pid."'"; + $updated = sisplet_query($stringUpdate); + } + } + + /** Funkcija kreira nov profil + * + */ + function createStatisticProfile($timeline,$startDate,$endDate,$stat_interval,$name=null) { + global $lang; + if ($name == null || trim($name) == '' ) { + $name = $lang['srv_new_profile']; + } + + if ($timeline == 'true') { + # shranjujemo od - do + $startDate = date(SS_OUTPUT_DATE_FORMAT, strtotime($startDate)); + $endDate = date(SS_OUTPUT_DATE_FORMAT, strtotime($endDate)); + $stat_interval = ''; + } else { + # shranjujemo interval + $startDate = '0000-00-00'; + $endDate = '0000-00-00'; + } + + $iStr = "INSERT INTO srv_statistic_profile (id,uid,name,starts,ends,interval_txt)". + " VALUES (NULL, '".self::$uId."', '".$name."', '".$startDate."', '".$endDate."', '".$stat_interval."')"; + + $ins = sisplet_query($iStr); + $id = mysqli_insert_id($GLOBALS['connect_db']); + + if ($id > 0) { + self :: SetDefaultProfile($id); + } else { + self :: SetDefaultProfile(0); + } + + return; + } + + /** Funkcija prikaze izbor datuma + * + */ + function displayDateFilters($current_pid = null) { + global $lang; + $_all_profiles = SurveyStatisticProfiles::getProfiles(); + + + if ($current_pid == null) { + $current_pid = SurveyStatisticProfiles::getCurentProfileId(); + } + echo '
'."\n"; + echo '
'."\n"; + # zlistamo vse profile + echo '
'."\n"; + if (count($_all_profiles)) { + foreach ($_all_profiles as $id=>$profile) { + echo '
' . $profile['name'] .'
'."\n"; + } + } + echo '
'."\n"; // statistic_profile + echo '
'."\n"; //statistic_profile_holder + echo '
'; + # privzetega profila ne moremo ne zbrisat ne preimenovat + echo ''."\n"; // statistic_profile_button_left_holder + + echo '
'."\n"; //statistic_profile_left + + echo '
'."\n"; + echo '
'; + self::DisplayProfileData($current_pid); + echo '
'; // statistic_profile_content + echo '
'."\n"; + if ($current_pid == 0) { + echo '
'; + echo $lang['srv_change_default_profile']; + echo '
'; // statistic_profile_note + } + echo '
'; + echo ''."\n"; // statistic_profile_button_right_holder + echo '
'; // statistic_profile_right + // cover Div + echo '
'."\n"; + + // div za kreacijo novega + echo '
'.$lang['srv_missing_profile_name'].': '."\n"; + echo ''."\n"; + echo ''.$lang['srv_analiza_arhiviraj_save'].''."\n"; + echo ''.$lang['srv_close_profile'].''."\n"; + echo '
'."\n"; + + // div za preimenovanje + echo '
'.$lang['srv_missing_profile_name'].': '."\n"; + echo ''."\n"; + echo ''."\n"; + echo ''.$lang['srv_rename_profile_yes'].''."\n"; + echo ''.$lang['srv_close_profile'].''."\n"; + echo '
'."\n"; + + // div za brisanje + echo '
'.$lang['srv_missing_profile_delete_confirm'].': ' . $currentFilterProfile['name'] . '?'."\n"; + echo ''."\n"; + echo ''.$lang['srv_delete_profile_yes'].''."\n"; + echo ''.$lang['srv_close_profile'].''."\n"; + echo '
'."\n"; + + + } + /** Funkcija prikaze osnovnih informacije profila + * + */ + function DisplayProfileData($current_pid) { + global $lang; + # podatki profila + $p_data = SurveyStatisticProfiles::GetProfileData($current_pid); + + #kateri nacin imamo ali timeline (od - do) ali inervalsko (zadnjih....) + # ce je podan string interval imamo intervalno + if ( $p_data['interval_txt'] != null || trim($p_data['interval_txt'] != '')) { + $timeline = false; + $time = $p_data['interval_txt']; + $p_data['starts'] = date(SS_DATE_FORMAT,strtotime(SurveyInfo::getInstance()->getSurveyInsertDate())); + $p_data['ends'] = date(SS_DATE_FORMAT); + } else { + $timeline = true; + $time = ''; + } + + echo ''."\n"; + echo ' '; + echo '' . "\n"; + echo ''."\n"; + echo ' '; + echo '' . "\n" ; + echo '
'; + echo '

'.$lang['srv_statistic_period_label'].':'; + echo '' . "\n"; + echo '

' . "\n"; + + echo '' . "\n"; + + } +} +?> -- cgit v1.2.3