Added definition searching feature, polished gui, updated instructions, and bug fixes...
[openemr.git] / interface / language / lang_definition.php
blob067e60202252a1fbc292ab30ad68eb33d6a08269
2 <table>
3 <form name='filterform' id='filterform' method='post' action='?m=definition' onsubmit="return top.restoreSession()">
4 <tr>
5 <td><?php xl('Filter for Constants','e','',':'); ?></td>
6 <td><input type='text' name='filter_cons' size='8' value='<?php echo htmlspecialchars(strip_escape_custom($_POST['filter_cons']),ENT_QUOTES); ?>' />
7 <span class="text"><?php xl('(% matches any string, _ matches any character)','e'); ?></span></td>
8 </tr>
9 <tr>
10 <td><?php xl('Filter for Definitions','e','',':'); ?></td>
11 <td><input type='text' name='filter_def' size='8' value='<?php echo htmlspecialchars(strip_escape_custom($_POST['filter_def']),ENT_QUOTES); ?>' />
12 <span class="text"><?php xl('(% matches any string, _ matches any character)','e'); ?></span></td>
13 </tr>
14 <tr>
15 <td><?php echo (xl('Select Language').":"); ?></td>
16 <td>
17 <select size='8' name='language_select'>
18 <?php
19 // sorting order of language titles depends on language translation options.
20 $mainLangID = empty($_SESSION['language_choice']) ? '1' : $_SESSION['language_choice'];
21 if ($mainLangID == '1' && !empty($GLOBALS['skip_english_translation']))
23 $sql = "SELECT * FROM lang_languages ORDER BY lang_description, lang_id";
24 $res=SqlStatement($sql);
26 else {
27 // Use and sort by the translated language name.
28 $sql = "SELECT ll.lang_id, " .
29 "IF(LENGTH(ld.definition),ld.definition,ll.lang_description) AS lang_description " .
30 "FROM lang_languages AS ll " .
31 "LEFT JOIN lang_constants AS lc ON lc.constant_name = ll.lang_description " .
32 "LEFT JOIN lang_definitions AS ld ON ld.cons_id = lc.cons_id AND " .
33 "ld.lang_id = '$mainLangID' " .
34 "ORDER BY IF(LENGTH(ld.definition),ld.definition,ll.lang_description), ll.lang_id";
35 $res=SqlStatement($sql);
37 // collect the default selected language id, and then display list
38 $tempLangID = isset($_POST['language_select']) ? strip_escape_custom($_POST['language_select']) : '1';
39 while ($row=SqlFetchArray($res)){
40 if ($tempLangID == $row['lang_id']) {
41 echo "<option value='" . $row['lang_id'] . "' selected>" . $row['lang_description'] . "</option>";
43 else {
44 echo "<option value='" . $row['lang_id'] . "'>" . $row['lang_description'] . "</option>";
48 </select>
49 </td>
50 </tr>
51 <tr>
52 <td colspan=2><INPUT TYPE="submit" name="edit" value="<?php xl('Search','e'); ?>"></td>
53 </tr>
54 </form>
55 </table>
57 <?php
58 if ($_POST['load']) {
59 // set up the mysql collation string to ensure case is sensitive in the mysql queries
60 if (!$disable_utf8_flag) {
61 $case_sensitive_collation = "COLLATE utf8_bin";
63 else {
64 $case_sensitive_collation = "COLLATE latin_bin";
67 // query for entering new definitions it picks the cons_id because is existant.
68 if (!empty($_POST['cons_id'])) {
69 foreach ($_POST['cons_id'] as $key => $value) {
70 $value = formDataCore($value,true);
72 // do not create new blank definitions
73 if ($value == "") continue;
75 // insert into the main language tables
76 $sql = "INSERT INTO lang_definitions (`cons_id`,`lang_id`,`definition`) VALUES ";
77 $sql .= "('$key',";
78 $sql .= "'" . formData('lang_id') . "',";
79 $sql .= "'" . $value . "')";
80 SqlStatement($sql);
82 // insert each entry into the log table - to allow persistant customizations
83 $sql = "SELECT lang_description, lang_code FROM lang_languages WHERE lang_id = '".formData('lang_id')."' LIMIT 1";
84 $res = SqlStatement($sql);
85 $row_l = SqlFetchArray($res);
86 $sql = "SELECT constant_name FROM lang_constants WHERE cons_id = '".$key."' LIMIT 1";
87 $res = SqlStatement($sql);
88 $row_c = SqlFetchArray($res);
89 insert_language_log(add_escape_custom($row_l['lang_description']), add_escape_custom($row_l['lang_code']), add_escape_custom($row_c['constant_name']), $value);
91 $go = 'yes';
95 // query for updating preexistant definitions uses def_id because there is no def yet.
96 // echo ('<pre>'); print_r($_POST['def_id']); echo ('</pre>');
97 if (!empty($_POST['def_id'])) {
98 foreach ($_POST['def_id'] as $key => $value) {
99 $value = formDataCore($value,true);
101 // only continue if the definition is new
102 $sql = "SELECT * FROM lang_definitions WHERE def_id = '".$key."' AND definition = '".$value."' ".$case_sensitive_collation;
103 $res_test = SqlStatement($sql);
104 if (!SqlFetchArray($res_test)) {
105 // insert into the main language tables
106 $sql = "UPDATE `lang_definitions` SET `definition` = '$value' WHERE `def_id`='$key' LIMIT 1";
107 SqlStatement($sql);
109 // insert each entry into the log table - to allow persistant customizations
110 $sql = "SELECT ll.lang_description, ll.lang_code, lc.constant_name ";
111 $sql .= "FROM lang_definitions AS ld, lang_languages AS ll, lang_constants AS lc ";
112 $sql .= "WHERE ld.def_id = '".$key."' ";
113 $sql .= "AND ll.lang_id = ld.lang_id AND lc.cons_id = ld.cons_id LIMIT 1";
114 $res = SqlStatement($sql);
115 $row = SqlFetchArray($res);
116 insert_language_log(add_escape_custom($row['lang_description']), add_escape_custom($row['lang_code']), add_escape_custom($row['constant_name']), $value);
118 $go = 'yes';
122 if ($go=='yes') xl("New Definition set added",'e');
125 if ($_POST['edit']){
126 if ($_POST['language_select'] == '') {
127 exit("Please select a language");
130 $lang_id = (int)formData('language_select');
132 $lang_filter = isset($_POST['filter_cons']) ? formData('filter_cons') : '';
133 $lang_filter .= '%';
134 $lang_filter_def = isset($_POST['filter_def']) ? formData('filter_def') : '';
135 $lang_filter_def .= '%';
137 $sql = "SELECT lc.cons_id, lc.constant_name, ld.def_id, ld.definition " .
138 "FROM lang_definitions AS ld " .
139 "RIGHT JOIN ( lang_constants AS lc, lang_languages AS ll ) ON " .
140 "( lc.cons_id = ld.cons_id AND ll.lang_id = ld.lang_id ) " .
141 "WHERE lc.constant_name LIKE '$lang_filter' AND ( ll.lang_id = 1 ";
142 if ($lang_id != 1) {
143 $sql .= "OR ll.lang_id = '$lang_id' ";
144 $what = "SELECT * from lang_languages where lang_id = $lang_id LIMIT 1";
145 $res = SqlStatement($what);
146 $row = SqlFetchArray($res);
147 $lang_name = $row['lang_description'];
149 $sql .= ") ORDER BY lc.constant_name";
151 $res = SqlStatement($sql);
153 $isResults = false; //flag to record whether there are any results
154 echo ('<table><FORM METHOD=POST ACTION="?m=definition" onsubmit="return top.restoreSession()">');
155 // only english definitions
156 if ($lang_id==1) {
157 while ($row=SqlFetchArray($res)){
158 $isShow = false; //flag if passes the definition filter
159 $stringTemp = '<tr><td>'.$row['constant_name'].'</td>';
160 // if there is no definition
161 if (empty($row['def_id'])){
162 $cons_name = "cons_id[" . $row['cons_id'] . "]";
163 if ($lang_filter_def=='%') $isShow = true;
164 // if there is a previous definition
165 } else {
166 $cons_name = "def_id[" . $row['def_id'] . "]";
167 $sql = "SELECT definition FROM lang_definitions WHERE def_id=".add_escape_custom($row['def_id'])." AND definition LIKE '$lang_filter_def'";
168 $res2 = SqlStatement($sql);
169 if (SqlFetchArray($res2)) $isShow = true;
171 $stringTemp .= '<td><INPUT TYPE="text" size="50" NAME="' . $cons_name . '" value="' . htmlspecialchars($row['definition'],ENT_QUOTES) . '">';
172 $stringTemp .= '</td><td></td></tr>';
173 if ($isShow) {
174 //definition filter passed, so show
175 echo $stringTemp;
176 $isResults = true;
179 echo ('<INPUT TYPE="hidden" name="lang_id" value="'.$lang_id.'">');
180 // english plus the other
181 } else {
182 while ($row=SqlFetchArray($res)){
183 $isShow = false; //flag if passes the definition filter
184 $stringTemp = '<tr><td>'.$row['constant_name'].'</td>';
185 if ($row['definition']=='' OR $row['definition']=='NULL') {
186 $def=" " ;
187 } else {
188 $def=$row['definition'];
190 $stringTemp .= '<td>'.$def.'</td>';
191 $row=SqlFetchArray($res); // jump one to get the second language selected
192 if ($row['def_id']=='' OR $row['def_id']=='NULL'){
193 $cons_name="cons_id[".$row['cons_id']."]";
194 if ($lang_filter_def=='%') $isShow = true;
195 // if there is a previous definition
196 } else {
197 $cons_name="def_id[".$row['def_id']."]";;
198 $sql = "SELECT definition FROM lang_definitions WHERE def_id=".add_escape_custom($row['def_id'])." AND definition LIKE '$lang_filter_def'";
199 $res2 = SqlStatement($sql);
200 if (SqlFetchArray($res2)) $isShow = true;
202 $stringTemp .= '<td><INPUT TYPE="text" size="50" NAME="'.$cons_name.'" value="'.htmlspecialchars($row['definition'],ENT_QUOTES).'">';
203 $stringTemp .='</td></tr>';
204 if ($isShow) {
205 //definition filter passed, so show
206 echo $stringTemp;
207 $isResults = true;
210 echo ('<INPUT TYPE="hidden" name="lang_id" value="'.$lang_id.'">');
212 if ($isResults) {
213 echo ('<tr><td colspan=3><INPUT TYPE="submit" name="load" Value="' . xl('Load Definitions') . '"></td></tr>');
215 <INPUT TYPE="hidden" name="filter_cons" value="<?php echo htmlspecialchars(strip_escape_custom($_POST['filter_cons']),ENT_QUOTES); ?>">
216 <INPUT TYPE="hidden" name="filter_def" value="<?php echo htmlspecialchars(strip_escape_custom($_POST['filter_def']),ENT_QUOTES); ?>">
217 <INPUT TYPE="hidden" name="language_select" value="<?php echo $_POST['language_select'] ?>">
218 <?php
220 else {
221 echo xl('No Results Found For Search');
223 echo ('</FORM></table>');