source: trunk/save.php@ 376

Last change on this file since 376 was 376, checked in by george, 15 years ago
  • Upraveno: Informace o přihlášeném uživateli nově pročištěny a sjednoceny do třídy User. SQL pro kontrolu a generovány hesel dostupné přímo přes metodu CryptPasswordSQL. Přístup k Id přihlášeného uživatele přes globální proměnnou $User a vlastnost Id ($User->Id). Podobně přístup k dalším vlastnostem uživatele.
  • Opraveno: Některé chyby z předchozích předělávek.
File size: 8.7 KB
Line 
1<?php
2
3include('includes/global.php');
4
5ShowPage();
6
7// Ochrana proti neoprávněnému přístupu
8// if($User->Licence(LICENCE_USER) == false) die('Nemáte přístup do této sekce! Je nutné se přihásit.');
9
10$GroupId = LoadGroupIdParameter();
11$Table = $TranslationTree[$GroupId]['TablePrefix'];
12if(array_key_exists('entry', $_POST) and $User->Licence(LICENCE_USER))
13{
14 $Entry = $_POST['entry'] * 1; // Make numeric
15 $TextID = $_POST['ID'] * 1;
16 $Language = $_POST['Language'] * 1;
17 if(array_key_exists('End', $_POST)) $Complete = 1;
18 else $complete = 0;
19
20 $DbResult = $Database->SQLCommand('SELECT * FROM `'.$Table.'` WHERE (`Language` = 0) AND (`Entry` = '.$Entry.')');
21 if(mysql_num_rows($DbResult) == 0) ErrorMessage('Neznámé Id položky');
22 $LineAJ = mysql_fetch_array($DbResult);
23 $LineTake = mysql_fetch_array($Database->SQLCommand('SELECT `VersionEnd`, `VersionStart` FROM `'.$Table.'` WHERE `ID` = '.$TextID));
24 if(mysql_num_rows($DbResult) == 0) ErrorMessage('Neznámé Id položky');
25 $DbResult = $Database->SQLCommand('SELECT * FROM `'.$Table.'` WHERE (`User`='.$User->Id.') AND (`Entry` = '.$Entry.') AND (`VersionStart` = '.$LineTake['VersionStart'].') AND (`VersionEnd` = '.$LineTake['VersionEnd'].')');
26 $Line = mysql_fetch_array($DbResult);
27 if(!$Line)
28 {
29 $Columns = '`Language` , `User` , `Complete` , `Take` , `VersionStart` , `VersionEnd`';
30 $Values = $Language.','.$User->Id.','.$Complete.','.$TextID.','.$LineTake['VersionStart'].','.$LineTake['VersionEnd'];
31 foreach($TranslationTree[$GroupId]['Items'] as $GroupItem)
32 {
33 if(array_key_exists($GroupItem['Column'], $_POST))
34 {
35 if (($GroupItem['Column'] <> 'ShortCut') and ($GroupItem['Column'] <> 'Rank'))
36 {
37 $Columns .= ', `'.$GroupItem['Column'].'`';
38 $Values .= ', "'.@$_POST[$GroupItem['Column']].'"';
39 }
40 }
41 }
42 //echo('INSERT INTO `'.$Table.'` ('.$Columns.') VALUES ('.$Values.')');
43 // $Database->SQLCommand('INSERT INTO `'.$Table.'` (`Entry`, '.$Columns.') VALUES ('.$Entry.','.$Values.')');
44 // $LastID = mysql_insert_id();
45
46 // Kontrolování stejných textů
47 $Where = 'Language = 0';
48 foreach($TranslationTree[$GroupId]['Items'] as $GroupItem)
49 {
50 if(($GroupItem['Column'] <> 'ShortCut') and ($GroupItem['Column'] <> 'Rank'))
51 {
52 if(array_key_exists($GroupItem['Column'], $_POST))
53 $Where .= ' AND `'.$GroupItem['Column'].'` = "'.addslashes($LineAJ[$GroupItem['Column']]).'"';
54 else $Where .= ' AND `'.$GroupItem['Column'].'` = ""';
55 }
56 if($GroupItem['Column'] == 'Rank')
57 {
58 if(array_key_exists('Rank', $_POST))
59 {
60 $Rank = substr($_POST['Rank'],0 ,strpos($_POST['Rank'],' '));
61 if(strlen($Rank) <= 2)
62 $Rank = substr($_POST['Rank'], strpos($_POST['Rank'],' ') + 1);
63 } else $Rank = 'Úroveň';
64 }
65 }
66
67 $SameTranID = $Database->SQLCommand('SELECT * FROM '.$Table.' WHERE '.$Where);
68 while($SameTranLine = mysql_fetch_assoc($SameTranID))
69 {
70 $Line = mysql_fetch_array($Database->SQLCommand('SELECT * FROM `'.$Table.'` WHERE (`User`='.$User->Id.') AND (`Entry` = '.$SameTranLine['Entry'].') AND (`VersionStart` = '.$LineTake['VersionStart'].') AND (`VersionEnd` = '.$LineTake['VersionEnd'].')'));
71 if(!$Line)
72 {
73 if($GroupItem['Column'] <> 'ShortCut')
74 {
75 if(isset($Rank))
76 {
77 $Rank_number = substr($SameTranLine['Rank'], strpos($SameTranLine['Rank'],' ') + 1);
78 if($Rank_number <> '') $Rank_cur = $Rank.' '.$Rank_number;
79 else $Rank_cur = $SameTranLine['Rank'];
80 $Database->SQLCommand('INSERT INTO `'.$Table.'` (`Entry`, '.$Columns.', `Rank`) VALUES ('.$SameTranLine['Entry'].','.$Values.',"'.$Rank_cur.'")');
81 } else
82 {
83 $Database->SQLCommand('INSERT INTO `'.$Table.'` (`Entry`, '.$Columns.') VALUES ('.$SameTranLine['Entry'].','.$Values.')');
84 }
85 } else
86 {
87 $Database->SQLCommand('INSERT INTO `'.$Table.'` (`Entry`, '.$Columns.', `ShortCut`) VALUES ('.$SameTranLine['Entry'].','.$Values.',"'.$SameTranLine['ShortCut'].'")');
88 }
89 $LastIDs[] = mysql_insert_id();
90 }
91 }
92
93 // Konec kontrolování stejných textů
94
95 echo('Překlad <a href="form.php?group='.$GroupId.'&amp;ID='.$TextID.'">'.$TextID.'</a> ('.$Entry.') uložen!<br />');
96 foreach($LastIDs as $LastID)
97 {
98 if(count($LastIDs) > 1) echo('Nalezen stejný překlad, systémově přeložen: <a href="form.php?group='.$GroupId.'&amp;ID='.$LastID.'">'.$LastID.'</a> Převzat z: <a href="form.php?group='.$GroupId.'&amp;ID='.$TextID.'">'.$TextID.'</a><br />');
99 WriteLog('Text <a href="form.php?group='.$GroupId.'&amp;ID='.$LastID.'">'.$LastID.'</a> ze skupiny <a href="TranslationList.php?group='.$GroupId.'&amp;action=filter">'.$TranslationTree[$GroupId]['Name'].'</a> uložen! Převzat z <a href="form.php?group='.$GroupId.'&amp;ID='.$TextID.'">'.$TextID.'</a>.', LOG_TYPE_TRANSLATION);
100 }
101 } else
102 {
103 $sql = 'UPDATE '.$Table.' SET `Complete` = '.$Complete;
104 foreach($TranslationTree[$GroupId]['Items'] as $GroupItem)
105 if(array_key_exists($GroupItem['Column'], $_POST))
106 $sql .= ', `'.$GroupItem['Column'].'`="'.$_POST[$GroupItem['Column']].'"';
107 $sql .= ', `Language` = '.$Language.' WHERE `ID` = '.$TextID.' AND `Language` <> 0';
108 //echo($sql);
109 $Database->SQLCommand($sql);
110 // echo $sql.'<br />';
111 echo('Změny v překladu <a href="form.php?group='.$GroupId.'&amp;ID='.$TextID.'">'.$TextID.'</a> ('.$Entry.') uloženy!<br />');
112 WriteLog('Změny v překladu <a href="form.php?group='.$GroupId.'&amp;ID='.$TextID.'">'.$TextID.'</a> ('.$Entry.') uloženy!', LOG_TYPE_TRANSLATION);
113 }
114 // Address and redirecting
115 echo('<br />Překládat: <a href="TranslationList.php?group='.$GroupId.'&amp;action=notran">Nepřeložené</a> ');
116
117 $prev = FollowingTran($TextID, $Table, $GroupId, True);
118 $next = FollowingTran($TextID, $Table, $GroupId);
119 echo('<br /><br />');
120 $redirecting = mysql_fetch_assoc($Database->SQLCommand('SELECT `Redirecting` FROM `User` WHERE `ID`='.$User->Id));
121
122 switch($redirecting['Redirecting'])
123 {
124 case 1:
125 echo('<script type="text/javascript" language="JavaScript" charset="utf-8">'.
126 'setTimeout("parent.location.href=\''.htmlspecialchars_decode('TranslationList.php?group='.$GroupId.'&amp;action=notran').'\'", 1500)'.
127 '</script>');
128 break;
129 case 2:
130 if($next <> '')
131 echo('<script type="text/javascript" language="JavaScript" charset="utf-8">'.
132 'setTimeout("parent.location.href=\''.htmlspecialchars_decode($next).'\'", 1500)'.
133 '</script>');
134 break;
135 case 3:
136 if($prev <> '')
137 echo('<script type="text/javascript" language="JavaScript" charset="utf-8">'.
138 'setTimeout("parent.location.href=\''.htmlspecialchars_decode($prev).'\'", 1500)'.
139 '</script>');
140 break;
141 }
142
143 echo ('Z této stránky můžete být automaticky přesměrování. Nastavit kam chcete být přesměrování si můžete v <a href="'.$Config['Web']['BaseURL'].'Options.php" Title = "Nastavení uživatele">Nastavení</a>');
144
145 // Aktualizace informace o nutnosti načíst XP
146 $Database->SQLCommand('UPDATE `User` SET `NeedUpdate` = 1 WHERE `ID` = '.$User->Id);
147} else
148{
149 if(array_key_exists('entry', $_POST))
150 {
151 echo('Byli jste automaticky odhlášeni. Pro <strong>Uložení překladu</strong> se musíte přihlásit zde:<br /><br />');
152 echo('<form action="save.php?group='.$GroupId.'" method="post"><div>');
153 echo('<input type="hidden" name="entry" value="'.$_POST['entry'].'" />'.
154 '<input type="hidden" name="user" value="'.$_POST['user'].'" />'.
155 '<input type="hidden" name="ID" value="'.$_POST['ID'].'" />'.
156 '<input type="hidden" name="Language" value="'.$_POST['Language'].'" />');
157
158 foreach($TranslationTree[$GroupId]['Items'] as $Index => $TextItem)
159 {
160 if(array_key_exists($TextItem['Column'], $_POST)) $Value = $_POST[$TextItem['Column']]; else $Value = '';
161 echo('<input id="'.$TextItem['Column'].'" name="'.$TextItem['Column'].'" type="hidden" value="'.htmlspecialchars($Value).'" />');
162 }
163 echo('<table>'.
164 '<tr>'.
165 '<td>Jméno: <input type="text" name="LoginUser" size="13" /></td>'.
166 '</tr><tr>'.
167 '<td>Heslo: <input type="password" name="LoginPass" size="13" /></td>'.
168 '</tr><tr>'.
169 '<th><input type="submit" value="Přihlásit a uložit překlad" /></th>'.
170 '</tr>'.
171 '</table>');
172 } else echo('Na tuto stránku nelze vstoupit přímo.');
173}
174
175ShowFooter();
176
177?>
Note: See TracBrowser for help on using the repository browser.