6 * @link http://www.open-emr.org
7 * @author bradymiller <bradymiller>
8 * @author sunsetsystems <sunsetsystems>
9 * @author sunsetsystems <sunsetsystems>
10 * @author andres_paglayan <andres_paglayan>
11 * @author Wakie87 <scott@npclinics.com.au>
12 * @author Robert Down <robertdown@live.com>
13 * @copyright Copyright (c) 2010 bradymiller <bradymiller>
14 * @copyright Copyright (c) 2009 sunsetsystems <sunsetsystems>
15 * @copyright Copyright (c) 2008 sunsetsystems <sunsetsystems>
16 * @copyright Copyright (c) 2005 andres_paglayan <andres_paglayan>
17 * @copyright Copyright (c) 2016 Wakie87 <scott@npclinics.com.au>
18 * @copyright Copyright (c) 2017 Robert Down <robertdown@live.com>
19 * @license https://github.com/openemr/openemr/blob/master/LICENSE GNU General Public License 3
24 <form name
='filterform' id
='filterform' method
='post' action
='?m=definition' onsubmit
="return top.restoreSession()">
26 <td
><?php
echo htmlspecialchars(xl('Filter for Constants', '', '', ':'), ENT_NOQUOTES
); ?
></td
>
27 <td
><input type
='text' name
='filter_cons' size
='8' value
='<?php echo htmlspecialchars($_POST['filter_cons
'], ENT_QUOTES); ?>' />
28 <span
class="text"><?php
echo htmlspecialchars(xl('(% matches any string, _ matches any character)'), ENT_NOQUOTES
); ?
></span
></td
>
31 <td
><?php
echo htmlspecialchars(xl('Filter for Definitions', '', '', ':'), ENT_NOQUOTES
); ?
></td
>
32 <td
><input type
='text' name
='filter_def' size
='8' value
='<?php echo htmlspecialchars($_POST['filter_def
'], ENT_QUOTES); ?>' />
33 <span
class="text"><?php
echo htmlspecialchars(xl('(% matches any string, _ matches any character)'), ENT_NOQUOTES
); ?
></span
></td
>
36 <td
><?php
echo htmlspecialchars(xl('Select Language').":", ENT_NOQUOTES
); ?
></td
>
38 <select name
='language_select'>
40 // sorting order of language titles depends on language translation options.
41 $mainLangID = empty($_SESSION['language_choice']) ?
'1' : $_SESSION['language_choice'];
42 if ($mainLangID == '1' && !empty($GLOBALS['skip_english_translation'])) {
43 $sql = "SELECT * FROM lang_languages ORDER BY lang_description, lang_id";
44 $res=SqlStatement($sql);
46 // Use and sort by the translated language name.
47 $sql = "SELECT ll.lang_id, " .
48 "IF(LENGTH(ld.definition),ld.definition,ll.lang_description) AS lang_description " .
49 "FROM lang_languages AS ll " .
50 "LEFT JOIN lang_constants AS lc ON lc.constant_name = ll.lang_description " .
51 "LEFT JOIN lang_definitions AS ld ON ld.cons_id = lc.cons_id AND " .
53 "ORDER BY IF(LENGTH(ld.definition),ld.definition,ll.lang_description), ll.lang_id";
54 $res=SqlStatement($sql, array($mainLangID));
57 // collect the default selected language id, and then display list
58 $tempLangID = isset($_POST['language_select']) ?
$_POST['language_select'] : $mainLangID;
59 while ($row=SqlFetchArray($res)) {
60 if ($tempLangID == $row['lang_id']) {
61 echo "<option value='" . htmlspecialchars($row['lang_id'], ENT_QUOTES
) . "' selected>" . htmlspecialchars($row['lang_description'], ENT_NOQUOTES
) . "</option>";
63 echo "<option value='" . htmlspecialchars($row['lang_id'], ENT_QUOTES
) . "'>" . htmlspecialchars($row['lang_description'], ENT_NOQUOTES
) . "</option>";
71 <td colspan
=2><INPUT TYPE
="submit" name
="edit" value
="<?php echo htmlspecialchars(xl('Search'), ENT_QUOTES); ?>"></td
>
78 // set up the mysql collation string to ensure case is sensitive (or insensitive) in the mysql queries
79 if (!$disable_utf8_flag) {
80 $case_sensitive_collation = "COLLATE utf8_bin";
81 $case_insensitive_collation = "COLLATE utf8_general_ci";
83 $case_sensitive_collation = "COLLATE latin_bin";
84 $case_insensitive_collation = "COLLATE latin1_swedish_ci";
88 // query for entering new definitions it picks the cons_id because is existant.
89 if (!empty($_POST['cons_id'])) {
90 foreach ($_POST['cons_id'] as $key => $value) {
91 $value = trim($value);
93 // do not create new blank definitions
98 // insert into the main language tables
99 $sql = "INSERT INTO lang_definitions (`cons_id`,`lang_id`,`definition`) VALUES (?,?,?)";
100 SqlStatement($sql, array($key, $_POST['lang_id'], $value));
102 // insert each entry into the log table - to allow persistant customizations
103 $sql = "SELECT lang_description, lang_code FROM lang_languages WHERE lang_id=? LIMIT 1";
104 $res = SqlStatement($sql, array($_POST['lang_id']));
105 $row_l = SqlFetchArray($res);
106 $sql = "SELECT constant_name FROM lang_constants WHERE cons_id=? LIMIT 1";
107 $res = SqlStatement($sql, array($key));
108 $row_c = SqlFetchArray($res);
109 insert_language_log($row_l['lang_description'], $row_l['lang_code'], $row_c['constant_name'], $value);
115 // query for updating preexistant definitions uses def_id because there is no def yet.
116 // echo ('<pre>'); print_r($_POST['def_id']); echo ('</pre>');
117 if (!empty($_POST['def_id'])) {
118 foreach ($_POST['def_id'] as $key => $value) {
119 $value = trim($value);
121 // only continue if the definition is new
122 $sql = "SELECT * FROM lang_definitions WHERE def_id=? AND definition=? ".$case_sensitive_collation;
123 $res_test = SqlStatement($sql, array($key, $value));
124 if (!SqlFetchArray($res_test)) {
125 // insert into the main language tables
126 $sql = "UPDATE `lang_definitions` SET `definition`=? WHERE `def_id`=? LIMIT 1";
127 SqlStatement($sql, array($value, $key));
129 // insert each entry into the log table - to allow persistant customizations
130 $sql = "SELECT ll.lang_description, ll.lang_code, lc.constant_name ";
131 $sql .= "FROM lang_definitions AS ld, lang_languages AS ll, lang_constants AS lc ";
132 $sql .= "WHERE ld.def_id=? ";
133 $sql .= "AND ll.lang_id = ld.lang_id AND lc.cons_id = ld.cons_id LIMIT 1";
134 $res = SqlStatement($sql, array($key));
135 $row = SqlFetchArray($res);
136 insert_language_log($row['lang_description'], $row['lang_code'], $row['constant_name'], $value);
144 echo htmlspecialchars(xl("New Definition set added"), ENT_NOQUOTES
);
148 if ($_POST['edit']) {
149 if ($_POST['language_select'] == '') {
150 exit(htmlspecialchars(xl("Please select a language"), ENT_NOQUOTES
));
153 $lang_id = (int)formData('language_select');
155 $lang_filter = isset($_POST['filter_cons']) ?
$_POST['filter_cons'] : '';
157 $lang_filter_def = isset($_POST['filter_def']) ?
$_POST['filter_def'] : '';
158 $lang_filter_def .= '%';
160 $bind_sql_array = array();
161 array_push($bind_sql_array, $lang_filter);
162 $sql = "SELECT lc.cons_id, lc.constant_name, ld.def_id, ld.definition, ld.lang_id " .
163 "FROM lang_definitions AS ld " .
164 "RIGHT JOIN ( lang_constants AS lc, lang_languages AS ll ) ON " .
165 "( lc.cons_id = ld.cons_id AND ll.lang_id = ld.lang_id ) " .
166 "WHERE lc.constant_name ".$case_insensitive_collation." LIKE ? AND ( ll.lang_id = 1 ";
168 array_push($bind_sql_array, $lang_id);
169 $sql .= "OR ll.lang_id=? ";
170 $what = "SELECT * from lang_languages where lang_id=? LIMIT 1";
171 $res = SqlStatement($what, array($lang_id));
172 $row = SqlFetchArray($res);
173 $lang_name = $row['lang_description'];
176 $sql .= ") ORDER BY lc.constant_name ".$case_insensitive_collation;
177 $res = SqlStatement($sql, $bind_sql_array);
179 $isResults = false; //flag to record whether there are any results
180 echo ('<table><FORM METHOD=POST ACTION="?m=definition" onsubmit="return top.restoreSession()">');
181 // only english definitions
183 while ($row=SqlFetchArray($res)) {
184 $isShow = false; //flag if passes the definition filter
185 $stringTemp = '<tr><td>'.htmlspecialchars($row['constant_name'], ENT_NOQUOTES
).'</td>';
186 // if there is no definition
187 if (empty($row['def_id'])) {
188 $cons_name = "cons_id[" . $row['cons_id'] . "]";
189 if ($lang_filter_def=='%') {
193 // if there is a previous definition
195 $cons_name = "def_id[" . $row['def_id'] . "]";
196 $sql = "SELECT definition FROM lang_definitions WHERE def_id=? AND definition LIKE ?";
197 $res2 = SqlStatement($sql, array($row['def_id'], $lang_filter_def));
198 if (SqlFetchArray($res2)) {
203 $stringTemp .= '<td><INPUT TYPE="text" size="50" NAME="' . htmlspecialchars($cons_name, ENT_QUOTES
) . '" value="' . htmlspecialchars($row['definition'], ENT_QUOTES
) . '">';
204 $stringTemp .= '</td><td></td></tr>';
206 //definition filter passed, so show
212 echo ('<INPUT TYPE="hidden" name="lang_id" value="'.htmlspecialchars($lang_id, ENT_QUOTES
).'">');
213 // english plus the other
215 while ($row=SqlFetchArray($res)) {
216 if (!empty($row['lang_id']) && $row['lang_id'] != '1') {
217 // This should not happen, if it does that must mean that this
218 // constant has more than one definition for the same language!
222 $isShow = false; //flag if passes the definition filter
223 $stringTemp = '<tr><td>'.htmlspecialchars($row['constant_name'], ENT_NOQUOTES
).'</td>';
224 if ($row['definition']=='' or $row['definition']=='NULL') {
227 $def=$row['definition'];
230 $stringTemp .= '<td>'.htmlspecialchars($def, ENT_NOQUOTES
).'</td>';
231 $row=SqlFetchArray($res); // jump one to get the second language selected
232 if ($row['def_id']=='' or $row['def_id']=='NULL') {
233 $cons_name="cons_id[".$row['cons_id']."]";
234 if ($lang_filter_def=='%') {
238 // if there is a previous definition
240 $cons_name="def_id[".$row['def_id']."]";
242 $sql = "SELECT definition FROM lang_definitions WHERE def_id=? AND definition LIKE ?";
243 $res2 = SqlStatement($sql, array($row['def_id'], $lang_filter_def));
244 if (SqlFetchArray($res2)) {
249 $stringTemp .= '<td><INPUT TYPE="text" size="50" NAME="'.htmlspecialchars($cons_name, ENT_QUOTES
).'" value="'.htmlspecialchars($row['definition'], ENT_QUOTES
).'">';
250 $stringTemp .='</td></tr>';
252 //definition filter passed, so show
258 echo ('<INPUT TYPE="hidden" name="lang_id" value="'.htmlspecialchars($lang_id, ENT_QUOTES
).'">');
262 echo ('<tr><td colspan=3><INPUT TYPE="submit" name="load" Value="' . htmlspecialchars(xl('Load Definitions'), ENT_NOQUOTES
) . '"></td></tr>');
264 <INPUT TYPE
="hidden" name
="filter_cons" value
="<?php echo htmlspecialchars($_POST['filter_cons'], ENT_QUOTES); ?>">
265 <INPUT TYPE
="hidden" name
="filter_def" value
="<?php echo htmlspecialchars($_POST['filter_def'], ENT_QUOTES); ?>">
266 <INPUT TYPE
="hidden" name
="language_select" value
="<?php echo htmlspecialchars($_POST['language_select'], ENT_QUOTES); ?>">
269 echo htmlspecialchars(xl('No Results Found For Search'), ENT_NOQUOTES
);
272 echo ('</FORM></table>');