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 --- admin/survey/classes/class.Prevajanje.php | 1047 +++++++++++++++++++++++++++++ 1 file changed, 1047 insertions(+) create mode 100644 admin/survey/classes/class.Prevajanje.php (limited to 'admin/survey/classes/class.Prevajanje.php') diff --git a/admin/survey/classes/class.Prevajanje.php b/admin/survey/classes/class.Prevajanje.php new file mode 100644 index 0000000..7b0ac67 --- /dev/null +++ b/admin/survey/classes/class.Prevajanje.php @@ -0,0 +1,1047 @@ +anketa = $_GET['anketa']; + elseif (isset ($_POST['anketa'])) + $this->anketa = $_POST['anketa']; + if ($anketa != 0) + $this->anketa = $anketa; + + SurveyInfo::getInstance()->SurveyInit($this->anketa); + $rowa = SurveyInfo::getInstance()->getSurveyRow(); + + SurveySetting::getInstance()->Init($this->anketa); + + if (SurveyInfo::getInstance()->getSurveyColumn('db_table') == 1) + $this->db_table = '_active'; + + $row = SurveyInfo::getInstance()->getSurveyRow(); + + $this->lang_admin = $row['lang_admin']; + $this->lang_resp = $row['lang_resp']; + + if (isset($_REQUEST['lang_id'])) + $this->lang_id = $_REQUEST['lang_id']; + + $this->include_lang($this->lang_resp); + $lang1 = $lang; + + if ($this->lang_id > 0) { + $this->include_second_lang(); + $lang2 = $lang; + } + + $this->include_base_lang(); + } + + function dostop () { + global $admin_type; + global $global_user_id; + + SurveyInfo::getInstance()->SurveyInit($this->anketa); + $rowa = SurveyInfo::getInstance()->getSurveyRow(); + + $manage = ''; + if ($admin_type <= 1) $manage = " OR uid IN (SELECT user FROM srv_dostop_manage WHERE manager = '$global_user_id')"; + + $sql = sisplet_query("SELECT ank_id, uid FROM srv_dostop WHERE ank_id = '$this->anketa' AND dostop LIKE '%edit%' AND (uid='$global_user_id' $manage )"); + if (mysqli_num_rows($sql) > 0) + $this->user_dostop_edit = 1; + else + $this->user_dostop_edit = 0; + + + if ($this->user_dostop_edit == 1 || $admin_type <= $rowa['dostop']) { + // vse ok + $this->user_dostop_edit = 1; // ce je admin in ima dostop, potem je aktiven (ni pa vpisan v srv_dostop) + } else { + if (count($this->get_all_translation_langs())==0) // ce pasivni uporabnik nima dodeljenega nobenega jezika + die('No access language'); + $this->user_dostop_edit = 0; // to niti ni treba, ampak zarad lepsga, ce je ze zgoraj :) + } + } + + /** + * starting point za prevajanje + * + */ + function prevajaj () { + global $lang; // admin-default lang + global $lang1; // respondent lang + global $lang2; // lang ki ga prevajamo + + $this->dostop(); + + $rowa = SurveyInfo::getInstance()->getSurveyRow(); + + if ($rowa['multilang'] == 1) { + + // default je pač prvi jezik v seznamu... + if ($this->lang_id==0) { + $lang_array = $this->get_all_translation_langs(); + if (count($lang_array) > 0) { + list($this->lang_id) = each($lang_array); + + // redirectamo, da je nastavljen tudi v urlju + header("Location: index.php?anketa=".$this->anketa."&a=prevajanje&lang_id=".$this->lang_id); + + $this->include_lang($this->lang_resp); + $lang1 = $lang; + + $this->include_second_lang(); + $lang2 = $lang; + + $this->include_base_lang(); + } + } + } + + + $this->top_settings(); + + $sql = sisplet_query("SELECT * FROM srv_language WHERE ank_id = '$this->anketa'"); + if (mysqli_num_rows($sql) == 0) { + + //$this->dodaj_jezik(1); + + } else { + + if ($rowa['multilang'] == 1) { + + $this->urejanje(); + + ?>Init($this->anketa); + $row = SurveyInfo::getInstance()->getSurveyRow(); + + $lang_admin = $row['lang_admin']; + $lang_resp = $row['lang_resp']; + $lang_array = array(); + // Preberemo razpoložljive jezikovne datoteke + if ($dir = opendir($site_path . 'lang')) { + while (($file = readdir($dir)) !== false) { + if ($file != '.' AND $file != '..') { + if (is_numeric(substr($file, 0, strpos($file, '.')))) { + $i = substr($file, 0, strpos($file, '.')); + if ($i > 0) { + $file = '../../lang/'.$i.'.php'; + @include($file); + $lang_array[$i] = $lang['language']; + } + } + } + } + } + + // nastavimo jezik nazaj + if ($lang_admin > 0) { + $file = '../../lang/'.$lang_admin.'.php'; + @include($file); + } + + + /** + * Leva stran nastavitev + */ + + echo '
'; + + if ($this->user_dostop_edit == 1) { + + echo '' . $lang['srv_language_settings'] . ''; + echo '
'; + + echo ' + + + '; + + + asort($lang_array); + + echo '

'.$lang['srv_language_respons_1'].': '.$lang['srv_extra_translations'].'

' . "\n\r"; + + $resp_change_lang = SurveySetting::getInstance()->getSurveyMiscSetting('resp_change_lang'); + + if ($this->lang_id != 0) { + + echo '

+ +

'; + + if($resp_change_lang==1){ + $resp_change_lang_type = SurveySetting::getInstance()->getSurveyMiscSetting('resp_change_lang_type'); + + echo '

'; + + echo ' + + '; + + echo '

'; + } + } + else { + echo ''.$lang['srv_back_edit'].''; + } + + // Jezik administrativnega vmesnika + echo '
'; + //printf ($lang['srv_language_admin_survey2'], 'index.php?anketa='.$this->anketa.'&a=nastavitve'); + echo ''.$lang['srv_language_admin_survey'].''; + echo '
'; + + echo '
'; + } + + echo '
'; + + + /** + * Desna stran + */ + echo '
'.$lang['srv_multilang'].''; + + if ($this->lang_id != 0) { + $lang_array = $this->get_all_translation_langs(); + + foreach ($lang_array AS $key => $l) { + echo '

'; + + echo ''.$l.' '; + + echo ''; + + echo ' '.$lang['srv_poglejanketo2'].'  -  '; + echo ' '.$lang['srv_test'].'  -  '; + echo ' '.$lang['url'].'  -  '; + + // Pdf in rtf izvoz vprasalnika v tujem jeziku + echo ' '.$lang['srv_export_hover_pdf'].'  -  '; + echo ' '.$lang['srv_export_hover_rtf'].''; + + $d = new Dostop(); + if ($d->checkDostopSub('edit')) { + + echo ''; + + echo ' '.$lang['srv_extra_translations'].''; + + $title = ''; + $sqlu = sisplet_query("SELECT uid FROM srv_dostop_language WHERE ank_id='$this->anketa' AND lang_id='$key'"); + while ($rowu = mysqli_fetch_array($sqlu)) { + $sql1 = sisplet_query("SELECT name, surname, email FROM users WHERE id = '$rowu[uid]'"); + $row1 = mysqli_fetch_array($sql1); + if ($title != '') $title .= ', '; + $title .= $row1['name'].' '.$row1['surname'].' ('.$row1['email'].')'; + } + + echo '  -   '.$lang['srv_users'].''; + + if ($this->user_dostop_edit == 1) + echo '  -   '.$lang['srv_lang_rem'].''; + + echo ''; + } + + echo ''; + + echo '

'; + } + } + + // Dodajanje novega jezika + $this->dodaj_jezik(); + + echo '
'; + + + echo '

'; + } + + /** + * opcija za dodajanje novega jezika -- ima svoj
zato ne more biti znotraj drugega forma + * + */ + function dodaj_jezik ($first_page=0) { + global $lang; + global $lang1; + + if ($this->user_dostop_edit == 1) { + // ok + } else return; + + $row = SurveyInfo::getInstance()->getSurveyRow(); + + $lang_array = $this->get_all_available_langs(); + + asort($lang_array); + + //echo ''; + echo ''; + echo '

'.$lang['srv_prevajanje_dodaj'].': '; + echo ' '; + + echo ''; + + echo '

'; + echo '
'; + } + + /** + * spremeni jezik, ki ga trenutno prevajamo + * + */ + function spremeni_jezik () { + global $lang; + global $site_url; + + //echo ''; + echo ''; + echo ''; + + if ($spremenljivka < 0) + $row['tip'] = -1; + else + $row = Cache::srv_spremenljivka($spremenljivka); + + // spremenljivka - to majo vse spremenljivka + $this->vprasanje_spremenljivka($spremenljivka); + + + // grid - vse tabele + if ( in_array( $row['tip'], array(6, 16, 19, 20) ) ) { + + $this->vprasanje_grid($spremenljivka); + + } + + // vrednost - vsa vprasanja, ki uporabljajo srv_vrednost + if ( in_array( $row['tip'], array(1, 2, 21, 7, 17, 18, 6, 16, 19, 20) ) ) { + + $this->vprasanje_vrednost($spremenljivka); + + } + + // vsota - ma se svoje polje + if ( $row['tip'] == 18 ) { + + $this->vprasanje_vsota($spremenljivka); + + } + + echo '

'; + + echo ''; + + } + + /** + * prevod spremenljivka - naslov in info + * + * @param mixed $spremenljivka + */ + function vprasanje_spremenljivka ($spremenljivka) { + global $lang; + global $lang2; + + $row = Cache::srv_spremenljivka($spremenljivka); + + $rowa = SurveyInfo::getInstance()->getSurveyRow(); + + $sql1 = sisplet_query("SELECT naslov, info FROM srv_language_spremenljivka WHERE ank_id='$this->anketa' AND spr_id='$spremenljivka' AND lang_id='$this->lang_id'"); + $row1 = mysqli_fetch_array($sql1); + + if (strtolower(substr($row1['naslov'], 0, 3)) == '

' && strtolower(substr($row1['naslov'], -4)) == '

' && strrpos($row1['naslov'], '

') == 0) { + $row1['naslov'] = substr($row1['naslov'], 3); + $row1['naslov'] = substr($row1['naslov'], 0, -4); + } + + if ($spremenljivka == -1) { // uvod + + echo '

'.$lang2['srv_intro'].'

'; + + } elseif ($spremenljivka == -2) { // zakljucek + + echo '

'.$lang2['srv_end'].'

'; + + } else { // obicna spremenljivka + + echo '

'.$row['naslov'].'

'; + echo '

'.$row['info'].'

'; + } + } + + /** + * prevod vrednosti + * + * @param mixed $spremenljivka + */ + function vprasanje_vrednost ($spremenljivka) { + global $lang; + global $lang2; + + $row = Cache::srv_spremenljivka($spremenljivka); + + $sql1 = sisplet_query("SELECT id, naslov FROM srv_vrednost WHERE spr_id = '$spremenljivka' ORDER BY vrstni_red"); + while ($row1 = mysqli_fetch_array($sql1)) { + + $sql2 = sisplet_query("SELECT naslov FROM srv_language_vrednost WHERE ank_id='$this->anketa' AND vre_id='$row1[id]' AND lang_id='$this->lang_id'"); + $row2 = mysqli_fetch_array($sql2); + + echo '

'.$row1['naslov'].'

'; + } + } + + /** + * prevod za gride + * + * @param mixed $spremenljivka + */ + function vprasanje_grid ($spremenljivka) { + global $lang; + global $lang2; + + $row = Cache::srv_spremenljivka($spremenljivka); + + echo ''; + + $sql1 = sisplet_query("SELECT id, naslov FROM srv_grid WHERE spr_id = '$spremenljivka' ORDER BY vrstni_red"); + while ($row1 = mysqli_fetch_array($sql1)) { + + $sql2 = sisplet_query("SELECT naslov FROM srv_language_grid WHERE ank_id='$this->anketa' AND spr_id='$spremenljivka' AND grd_id='$row1[id]' AND lang_id='$this->lang_id'"); + $row2 = mysqli_fetch_array($sql2); + + echo ''; + + } + + echo '
'.$row1['naslov'].'
'; + } + + /** + * prevod za polje vsota + * + * @param mixed $spremenljivka + */ + function vprasanje_vsota ($spremenljivka) { + global $lang; + global $lang2; + + $row = Cache::srv_spremenljivka($spremenljivka); + + $sql1 = sisplet_query("SELECT vsota FROM srv_language_spremenljivka WHERE ank_id='$this->anketa' AND spr_id='$spremenljivka' AND lang_id='$this->lang_id'"); + $row1 = mysqli_fetch_array($sql1); + + echo '

'.$row['vsota'].'

'; + } + + /** + * vrne vse jezikovne datoteke, ki so nam se na voljo + * + */ + function get_all_available_langs () { + global $lang; + global $site_path; + + $row = SurveyInfo::getInstance()->getSurveyRow(); + + // Dobimo vse jezike za katere obstaja jezikovna datoteka + include_once($site_path.'lang/jeziki.php'); + $lang_array = $lang_all_global['ime']; + + // pobrisemo jezike, ki so ze dodani, tudi default jezik + $sql1 = sisplet_query("SELECT lang_id FROM srv_language WHERE ank_id = '$this->anketa'"); + while ($row1 = mysqli_fetch_array($sql1)) { + unset($lang_array[$row1['lang_id']]); + } + unset($lang_array[$row['lang_resp']]); + + return $lang_array; + } + + /** + * vrne vse jezike, ki so ze dodani + * + */ + function get_all_translation_langs () { + global $lang; + global $global_user_id; + global $admin_type; + + $lang_array = array(); + + if ($this->user_dostop_edit == 1) + $sql = sisplet_query("SELECT lang_id, language FROM srv_language WHERE ank_id = '$this->anketa'"); + else + $sql = sisplet_query("SELECT * FROM srv_language l, srv_dostop_language d WHERE l.ank_id='$this->anketa' AND d.ank_id=l.ank_id AND d.lang_id=l.lang_id AND d.uid='$global_user_id'"); + + while ($row = mysqli_fetch_array($sql)) { + $lang_array[$row['lang_id']] = $row['language']; + } + return $lang_array; + } + + /** + * nastavi jezik nazaj na osnovnega takrat, ko kaj delamo z includi ostalih jezikov + * + */ + function include_base_lang() { + global $lang; + + $this->include_lang($this->lang_admin); + } + + /** + * includa jezik, ki ga prevajamo + * + */ + function include_second_lang () { + global $lang; + + $this->include_lang($this->lang_id); + } + + /** + * includa podan jezik + * + * @param mixed $id + */ + function include_lang ($id) { + global $lang; + + if ($id > 0) { + $file = '../../lang/'.$id.'.php'; + @include($file); + } + } + + /** + * pohendla razne nastavitve, ki se postnejo + * ne gre nujno vse prek ajaxa, ene so tud navadne post + * + */ + function ajax() { + global $lang; + + if ($_GET['a'] == 'dodaj_jezik') { + $this->ajax_dodaj_jezik(); + + } elseif ($_GET['a'] == 'brisi_jezik') { + $this->ajax_brisi_jezik(); + + } elseif ($_GET['a'] == 'extra_translation') { + $this->ajax_extra_translation(); + + } elseif ($_GET['a'] == 'extra_translation_save') { + $this->ajax_extra_translation_save(); + + } elseif ($_GET['a'] == 'vprasanje_prevod') { + $this->ajax_vprasanje_prevod(); + + } elseif ($_GET['a'] == 'vprasanje_prevod_save') { + $this->ajax_vprasanje_prevod_save(); + + } + } + + function ajax_dodaj_jezik () { + global $lang; + + $lang_id = $_POST['lang_id']; + if (!$lang_id > 0) { header("Location: index.php?anketa=".$this->anketa."&a=prevajanje"); return; } + + // "Jezik" v originalnem jeziku (preden prklopimo na novega z include) + $lang_string = $lang['lang']; + + // Originalni jezik za respondente + $this->include_lang($this->lang_resp); + $base_lang_resp = $lang['language']; + + $this->include_lang($lang_id); + $added_lang = $lang['language']; + $s = sisplet_query("UPDATE srv_anketa SET multilang='1' WHERE id='$this->anketa'"); + $sql = sisplet_query("INSERT INTO srv_language (ank_id, lang_id, language) VALUES ('$this->anketa', '$lang_id', '$lang[language]')"); + + + // Po novem dodamo tudi spremenljivko za jezik (najlazje za upostevanje if-ov in validacij) + // Na zacetku moramo ustvarit najprej vprasanje (ce ga se nimamo) + $sqlS = sisplet_query("SELECT s.id AS spr_id FROM srv_spremenljivka s, srv_grupa g WHERE g.ank_id='$this->anketa' AND s.gru_id=g.id AND s.skupine='3'"); + if(mysqli_num_rows($sqlS) == 0){ + + $sqlG = sisplet_query("SELECT id FROM srv_grupa WHERE ank_id='$this->anketa' AND vrstni_red='1'"); + $rowG = mysqli_fetch_array($sqlG); + $gru_id = $rowG['id']; + + $b = new Branching($this->anketa); + $spr_id = $b->nova_spremenljivka($grupa=$gru_id, $grupa_vrstni_red=1, $vrstni_red=0); + + $sql = sisplet_query("UPDATE srv_spremenljivka SET naslov='".$lang_string."', variable='language', variable_custom='1', skupine='3', sistem='1', visible='0', size='0' WHERE id='$spr_id'"); + + Vprasanje::change_tip($spr_id, 1); + + // Dodamo se variablo za originalni jezik + $v = new Vprasanje($this->anketa); + $v->spremenljivka = $spr_id; + $vre_id = $v->vrednost_new($base_lang_resp); + } + else{ + $rowS = mysqli_fetch_array($sqlS); + $spr_id = $rowS['spr_id']; + } + + // Dodamo se variablo za dodajani jezik + $v = new Vprasanje($this->anketa); + $v->spremenljivka = $spr_id; + $vre_id = $v->vrednost_new($added_lang); + + // Prestevilcimo in popravimo vrstni red + Common::repareVrednost($spr_id); + Common::prestevilci($spr_id); + + header("Location: index.php?anketa=".$this->anketa."&a=prevajanje&lang_id=".$lang_id); + + $this->include_base_lang(); + } + + function ajax_brisi_jezik () { + global $lang; + + $lang_id = $_REQUEST['lang_id']; + + sisplet_query("DELETE FROM srv_language WHERE ank_id='$this->anketa' AND lang_id='$lang_id'"); + + // Pobrisemo variablo iz vprasanja + $sqlS = sisplet_query("SELECT s.id AS spr_id FROM srv_spremenljivka s, srv_grupa g WHERE g.ank_id='$this->anketa' AND s.gru_id=g.id AND s.skupine='3'"); + $spr_id = 0; + if(mysqli_num_rows($sqlS) > 0){ + + $rowS = mysqli_fetch_array($sqlS); + $spr_id = $rowS['spr_id']; + + $this->include_lang($lang_id); + $naslov = $lang['language']; + $this->include_base_lang(); + + $sqlV = sisplet_query("DELETE FROM srv_vrednost WHERE naslov='".$naslov."' AND spr_id='$spr_id'"); + } + + // Ce nimamo vec nobenega dodanega jezika + $sql = sisplet_query("SELECT * FROM srv_language WHERE ank_id='$this->anketa'"); + if (mysqli_num_rows($sql) == 0){ + sisplet_query("UPDATE srv_anketa SET multilang='0' WHERE id='$this->anketa'"); + + // Pobrisemo vse vrednosti (za vsak slucaj ce kaksna ostane) in potem se spremenljivko + if($spr_id > 0){ + $sqlVDelete = sisplet_query("DELETE FROM srv_vrednost WHERE spr_id='$spr_id'"); + $sqlSDelete = sisplet_query("DELETE FROM srv_spremenljivka WHERE id='$spr_id'"); + } + } + // Drugace prestevilcimo in popravimo vrstni red + elseif($spr_id > 0){ + Common::repareVrednost($spr_id); + Common::prestevilci($spr_id); + } + + header("Location: index.php?anketa=".$this->anketa."&a=prevajanje"); + } + + function ajax_extra_translation () { + + $text = $_POST['text']; + + $this->edit_extra_translation($text); + } + + function ajax_extra_translation_save () { + global $lang2; + + $value = $_POST['value']; + $text = $_POST['text']; + + if ($value != '') { + $value = strip_tags($value); + SurveySetting::getInstance()->setSurveyMiscSetting('srvlang_'.$text.'_'.$this->lang_id, $value); + + echo '

'.$value.'

'; + } + else { + SurveySetting::getInstance()->removeSurveyMiscSetting('srvlang_'.$text.'_'.$this->lang_id); + + echo '

'.$lang2[$text].'

'; + } + } + + function ajax_vprasanje_prevod () { + + $spremenljivka = $_POST['spremenljivka']; + + $this->vprasanje_prevod($spremenljivka); + } + + function ajax_vprasanje_prevod_save () { + global $lang; + global $lang2; + + $spremenljivka = $_POST['spremenljivka']; + + $naslov = $_POST['naslov']; + $info = $_POST['info']; + $vsota = $_POST['vsota']; + + if (strtolower(substr($naslov, 0, 3)) != '

' && strtolower(substr($naslov, -4)) != '

' && strrpos($naslov, '

') === false) { + $naslov = '

' . str_replace("\n", "

\n

", $naslov) . '

'; + } + + // spremenljivka + if ($naslov!='' || $info!='' || $vsota!='') + sisplet_query("REPLACE INTO srv_language_spremenljivka (ank_id, spr_id, lang_id, naslov, info, vsota) VALUES ('$this->anketa', '$spremenljivka', '$this->lang_id', '$naslov', '$info', '$vsota')"); + else + sisplet_query("DELETE FROM srv_language_spremenljivka WHERE ank_id='$this->anketa' AND spr_id='$spremenljivka' AND lang_id='$this->lang_id'"); + + // vrednost + $sql1 = sisplet_query("SELECT * FROM srv_vrednost WHERE spr_id = '$spremenljivka'"); + while ($row1 = mysqli_fetch_array($sql1)) { + $naslov = $_POST['naslov_vrednost_'.$row1['id']]; + if ($naslov != '') + $s = sisplet_query("REPLACE INTO srv_language_vrednost (ank_id, vre_id, lang_id, naslov) VALUES ('$this->anketa', '$row1[id]', '$this->lang_id', '$naslov')"); + else + $s = sisplet_query("DELETE FROM srv_language_vrednost WHERE ank_id='$this->anketa' AND vre_id='$row1[id]' AND lang_id='$this->lang_id'"); + } + + + // grid + $sql1 = sisplet_query("SELECT * FROM srv_grid WHERE spr_id = '$spremenljivka'"); + while ($row1 = mysqli_fetch_array($sql1)) { + $naslov = $_POST['naslov_grid_'.$row1['id']]; + if ($naslov != '') + $s = sisplet_query("REPLACE INTO srv_language_grid (ank_id, spr_id, grd_id, lang_id, naslov) VALUES ('$this->anketa', '$spremenljivka', '$row1[id]', '$this->lang_id', '$naslov')"); + else + $s = sisplet_query("DELETE FROM srv_language_grid WHERE ank_id='$this->anketa' AND spr_id='$spremenljivka' AND grd_id='$row1[id]' AND lang_id='$this->lang_id'"); + } + + echo ''; + + include_once('../../main/survey/app/global_function.php'); + $this->Survey = new \App\Controllers\SurveyController(true); + save('forceShowSpremenljivka', true); + save('lang_id', $this->lang_id); + + $lang = $lang2; + if ($spremenljivka == -1) + \App\Controllers\BodyController::getInstance()->displayIntroduction(); + elseif ($spremenljivka == -2) + \App\Controllers\BodyController::getInstance()->displayKonec(); + else + \App\Controllers\Vprasanja\VprasanjaController::getInstance()->displaySpremenljivka($spremenljivka); + + } + +} + +?> \ No newline at end of file -- cgit v1.2.3