source: trunk/save.php@ 549

Last change on this file since 549 was 549, checked in by chronos, 12 years ago
  • Upraveno: Do hlavní nabídky lze přidávat položky na určitou pozici.
File size: 11.4 KB
Line 
1<?php
2
3include_once('includes/global.php');
4
5
6$Output = '';
7$CompleteText = array('nedokončený', 'dokončený');
8
9unset($Message);
10$System->ModuleManager->Modules['FrontPage']->HandleLoginForm();
11if(isset($Message)) $Output .= ShowMessage($Message, $MessageType);
12
13$GroupId = LoadGroupIdParameter();
14$Group = $TranslationTree[$GroupId];
15$Table = $Group['TablePrefix'];
16if($User->Licence(LICENCE_USER))
17{
18 if(array_key_exists('ID', $_POST) and is_numeric($_POST['ID']))
19 {
20 $Entry = $_POST['entry'] * 1;
21 $TextID = $_POST['ID'] * 1;
22 $Language = $_POST['Language'] * 1;
23 if(array_key_exists('End', $_POST)) $Complete = 1;
24 else $Complete = 0;
25
26 // Get source text record from database by ID
27 $DbResult = $System->Database->query('SELECT * FROM `'.$Table.'` WHERE `ID`='.$TextID);
28 if($DbResult->num_rows > 0)
29 {
30 $SourceText = $DbResult->fetch_assoc();
31
32 // Get data for english original
33 $DbResult = $System->Database->query('SELECT * FROM `'.$Table.'` WHERE (`Entry`='.$SourceText['Entry'].
34 ') AND (`Language` = '.$Config['OriginalLanguage'].') AND (`VersionStart` = '.$SourceText['VersionStart'].
35 ') AND (`VersionEnd` = '.$SourceText['VersionEnd'].')');
36 if($DbResult->num_rows > 0)
37 {
38 $EnglishText = $DbResult->fetch_assoc();
39
40 // Get all similar english texts
41 $Filter = '';
42 foreach($Group['Items'] as $GroupItem)
43 if(($GroupItem['Visible'] == 1) and ($EnglishText[$GroupItem['Column']] != ''))
44 $Filter .= ' OR (`'.$GroupItem['Column'].'` = "'.addslashes($EnglishText[$GroupItem['Column']]).'")';
45 $Filter = ' AND ('.substr($Filter, 3).')';
46
47 $DbResult = $System->Database->query('SELECT * FROM `'.$Table.'` WHERE (`Language` = '.$Config['OriginalLanguage'].')'.$Filter);
48 while($EnglishFound = $DbResult->fetch_assoc())
49 {
50 // Get user translation paired to found english item entry
51 $DbResult2 = $System->Database->query('SELECT * FROM `'.$Table.'` WHERE (`User` = '.$User->Id.
52 ') AND (`Entry` = '.$EnglishFound['Entry'].') AND (`VersionStart` = '.$EnglishFound['VersionStart'].
53 ') AND (`VersionEnd` = '.$EnglishFound['VersionEnd'].')');
54 if($DbResult2->num_rows > 0)
55 {
56 // Update existed user translation
57 $ExistedText = $DbResult2->fetch_assoc();
58 $Values = '`Language` = '.$Language;
59
60 $UpdateModifyTime = false;
61 $Completable = true;
62 $CompleteParts = $ExistedText['CompleteParts'];
63 foreach($Group['Items'] as $GroupItem)
64 {
65 if($GroupItem['Visible'] == 1)
66 {
67 if($SourceText[$GroupItem['Column']] != $ExistedText[$GroupItem['Column']])
68 $UpdateModifyTime = true;
69
70 if($EnglishFound[$GroupItem['Column']] == $EnglishText[$GroupItem['Column']])
71 {
72 if(array_key_exists($GroupItem['Column'], $_POST))
73 {
74 $Values .= ', `'.$GroupItem['Column'].'` = "'.$_POST[$GroupItem['Column']].'"';
75 $CompleteParts |= (1 << ($GroupItem['Sequence'] - 1));
76 }
77 }
78 if((($CompleteParts & (1 << ($GroupItem['Sequence'] - 1))) == 0) and ($EnglishFound[$GroupItem['Column']] != '')) $Completable = false;
79 }
80 }
81 if($Completable) $NewComplete = 1; // All parts of text are completed. Make entire text as completed
82 else $NewComplete = 0;
83 if($SourceText['ID'] == $ExistedText['ID'])
84 {
85 $NewComplete = $Complete; // Our original user text, set complete according user choice
86 if($Complete == 1)
87 {
88 foreach($Group['Items'] as $GroupItem)
89 if($GroupItem['Visible'] == 1) $CompleteParts |= (1 << ($GroupItem['Sequence'] - 1));
90 }
91 }
92 $Values .= ', `Complete`='.$NewComplete.', `CompleteParts` = '.$CompleteParts;
93
94 if($UpdateModifyTime) $Values .= ', `ModifyTime` = NOW()';
95
96 // Update user translation
97 $System->Database->query('UPDATE `'.$Table.'` SET '.$Values.' WHERE `ID` = '.$ExistedText['ID']);
98
99 $Output .= 'Změny v překladu <a href="form.php?group='.$GroupId.'&amp;ID='.$ExistedText['ID'].'">'.$ExistedText['ID'].'</a> ('.$ExistedText['Entry'].') uloženy jako '.$CompleteText[$NewComplete].'.<br />';
100 WriteLog('Změny v překladu <a href="form.php?group='.$GroupId.'&amp;ID='.$ExistedText['ID'].'">'.$ExistedText['ID'].'</a> ('.$ExistedText['Entry'].') uloženy jako '.$CompleteText[$NewComplete].'.', LOG_TYPE_TRANSLATION);
101 } else
102 {
103 // Insert new user translation
104 $Columns = '`Entry`, `VersionStart`, `VersionEnd`, `Language`, `User`, `Take`, `ModifyTime`';
105 $Values = $EnglishFound['Entry'].', '.$EnglishFound['VersionStart'].', '.$EnglishFound['VersionEnd'].', '.$Language.', '.$User->Id.', '.$SourceText['ID'].', NOW()';
106
107 $CompleteParts = 0;
108 $Completable = true;
109 foreach($Group['Items'] as $GroupItem)
110 {
111 $Columns .= ', `'.$GroupItem['Column'].'`';
112 if($GroupItem['Visible'] == 1)
113 {
114 if($EnglishFound[$GroupItem['Column']] == $EnglishText[$GroupItem['Column']])
115 {
116 // Read form user data
117 if(array_key_exists($GroupItem['Column'], $_POST))
118 {
119 $Values .= ', "'.$_POST[$GroupItem['Column']].'"';
120 $CompleteParts |= (1 << ($GroupItem['Sequence'] - 1));
121 } else $Values .= ', "'.addslashes($EnglishFound[$GroupItem['Column']]).'"';
122 } else $Values .= ', "'.addslashes($EnglishFound[$GroupItem['Column']]).'"';
123 if((($CompleteParts & (1 << ($GroupItem['Sequence'] - 1))) == 0) and ($EnglishFound[$GroupItem['Column']] != '')) $Completable = false;
124 } else
125 {
126 // Read from english text
127 $Values .= ', "'.$EnglishFound[$GroupItem['Column']].'"';
128 }
129 }
130 if($Completable) $NewComplete = 1; // All parts of text are completed. Make entire text as completed
131 else $NewComplete = 0;
132 if($SourceText['ID'] == $EnglishFound['ID'])
133 {
134 $NewComplete = $Complete; // Our original user text, set complete according user choice
135 if($Complete == 1)
136 {
137 foreach($Group['Items'] as $GroupItem)
138 if($GroupItem['Visible'] == 1) $CompleteParts |= (1 << ($GroupItem['Sequence'] - 1));
139 }
140 }
141 $Columns .= ', `Complete`, `CompleteParts`';
142 $Values .= ', '.$NewComplete.', '.$CompleteParts;
143
144 $System->Database->query('INSERT INTO `'.$Table.'` ('.$Columns.') VALUES ('.$Values.')');
145 $LastID = $System->Database->insert_id;
146
147 $Output .= 'Text <a href="form.php?group='.$GroupId.'&amp;ID='.$LastID.'">'.$LastID.'</a> ze skupiny <a href="TranslationList.php?group='.$GroupId.'&amp;user=0&amp;action=filter">'.$TranslationTree[$GroupId]['Name'].'</a> uložen jako '.$CompleteText[$NewComplete].'. Převzat z <a href="form.php?group='.$GroupId.'&amp;ID='.$TextID.'">'.$TextID.'</a>.<br/>';
148 WriteLog('Text <a href="form.php?group='.$GroupId.'&amp;ID='.$LastID.'">'.$LastID.'</a> ze skupiny <a href="TranslationList.php?group='.$GroupId.'&amp;user=0&amp;text=&amp;entry=&amp;action=filter">'.$TranslationTree[$GroupId]['Name'].'</a> uložen jako '.$CompleteText[$NewComplete].'. Převzat z <a href="form.php?group='.$GroupId.'&amp;ID='.$TextID.'">'.$TextID.'</a>.', LOG_TYPE_TRANSLATION);
149 }
150 }
151 } else $Output .= ShowMessage('Anglický originál k překladu nenalezen.', MESSAGE_CRITICAL);
152 } else $Output .= ShowMessage('Zadaná položka nenalezena.', MESSAGE_CRITICAL);
153
154
155 // Address and redirecting
156 $Output .= '<br />Překládat: <a href="TranslationList.php?group='.$GroupId.'&amp;state=1&amp;user=0&entry=">Nepřeložené</a> ';
157
158 $prev = FollowingTran($TextID, $Table, $GroupId, True);
159 $next = FollowingTran($TextID, $Table, $GroupId);
160 $Output .= '<br /><br />';
161 $DbResult = $System->Database->query('SELECT `Redirecting` FROM `User` WHERE `ID`='.$User->Id);
162 $redirecting = $DbResult->fetch_assoc();
163
164 switch($redirecting['Redirecting'])
165 {
166 case 1:
167 $Output .= '<script type="text/javascript" language="JavaScript" charset="utf-8">'.
168 'setTimeout("parent.location.href=\''.htmlspecialchars_decode('TranslationList.php?group='.$GroupId.'&amp;state=1&amp;user=0').'\'", 1500)'.
169 '</script>';
170 break;
171 case 2:
172 if($next <> '')
173 $Output .= '<script type="text/javascript" language="JavaScript" charset="utf-8">'.
174 'setTimeout("parent.location.href=\''.htmlspecialchars_decode($next).'\'", 1500)'.
175 '</script>';
176 break;
177 case 3:
178 if($prev <> '')
179 $Output .= '<script type="text/javascript" language="JavaScript" charset="utf-8">'.
180 'setTimeout("parent.location.href=\''.htmlspecialchars_decode($prev).'\'", 1500)'.
181 '</script>';
182 break;
183 }
184
185 $Output .= '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="'.$System->Link('/Options.php').'" title="Nastavení uživatele">Nastavení</a>';
186
187 // Update flag for experience info load
188 $System->Database->query('UPDATE `User` SET `NeedUpdate` = 1 WHERE `ID` = '.$User->Id);
189 } else $Output .= ShowMessage('Položka nenalezena', MESSAGE_CRITICAL);
190} else
191{
192 if(array_key_exists('ID', $_POST) and array_key_exists('entry', $_POST) and array_key_exists('Language', $_POST) and array_key_exists('user', $_POST))
193 {
194 $Output .= 'Byli jste automaticky odhlášeni. Pro <strong>Uložení překladu</strong> se musíte přihlásit zde:<br /><br />'.
195 '<form action="save.php?action=login&amp;group='.$GroupId.'" method="post"><div>'.
196 '<input type="hidden" name="entry" value="'.$_POST['entry'].'" />'.
197 '<input type="hidden" name="user" value="'.$_POST['user'].'" />'.
198 '<input type="hidden" name="ID" value="'.$_POST['ID'].'" />'.
199 '<input type="hidden" name="Language" value="'.$_POST['Language'].'" />';
200
201 foreach($TranslationTree[$GroupId]['Items'] as $Index => $TextItem)
202 {
203 if(array_key_exists($TextItem['Column'], $_POST)) $Value = $_POST[$TextItem['Column']]; else $Value = '';
204 $Output .= '<input id="'.$TextItem['Column'].'" name="'.$TextItem['Column'].'" type="hidden" value="'.htmlspecialchars($Value).'" />';
205 }
206 $Output .= '<table>'.
207 '<tr>'.
208 '<td>Jméno: <input type="text" name="LoginUser" size="13" /></td>'.
209 '</tr><tr>'.
210 '<td>Heslo: <input type="password" name="LoginPass" size="13" /></td>'.
211 '</tr><tr>'.
212 '<th><input type="submit" value="Přihlásit a uložit překlad" /></th>'.
213 '</tr>'.
214 '</table>';
215 } else $Output = ShowMessage('Nezadány požadované údaje.', MESSAGE_CRITICAL);
216}
217
218ShowPage($Output);
219
220?>
Note: See TracBrowser for help on using the repository browser.