Highway to PSR2
[openemr.git] / contrib / util / de_identification_upgrade.php
blobce7216744fd4299bae93b6342644ea49867113cf
1 <?php
2 /********************************************************************************\
3 * Copyright (C) ViCarePlus, Visolve (vicareplus_engg@visolve.com) *
4 * *
5 * This program is free software; you can redistribute it and/or *
6 * modify it under the terms of the GNU General Public License *
7 * as published by the Free Software Foundation; either version 2 *
8 * of the License, or (at your option) any later version. *
9 * *
10 * This program is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
14 * *
15 * You should have received a copy of the GNU General Public License *
16 * along with this program; if not, write to the Free Software *
17 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
18 /********************************************************************************/
20 // Disable PHP timeout. This will not work in safe mode.
21 ini_set('max_execution_time', '0');
23 $ignoreAuth = true; // no login required
25 //set de_identification_config to 1 to run the de_identification_upgrade script
26 $de_identification_config = 0;
28 require_once('../../interface/globals.php');
30 function tableExists_de($tblname)
32 $row = sqlQuery("SHOW TABLES LIKE '$tblname'");
33 if (empty($row)) {
34 return false;
37 return true;
40 function upgradeFromSqlFile_de($filename)
42 global $webserver_root;
44 flush();
45 echo "<font color='green'>";
46 echo xl('Processing');
47 echo " ".$filename."...</font><br />\n";
49 $fullname = "$webserver_root/sql/$filename";
51 $fd = fopen($fullname, 'r');
52 if ($fd == false) {
53 echo xl("Error, unable to open file");
54 echo " ".$fullname."\n";
55 flush();
56 break;
59 $query = "";
60 $line = "";
61 $skipping = false;
62 $proc = 0;
64 while (!feof($fd)) {
65 $line = fgets($fd, 2048);
66 $line = rtrim($line);
68 if (preg_match('/^\s*--/', $line)) {
69 continue;
72 if ($line == "") {
73 continue;
76 if (preg_match('/^#IfNotTable\s+(\S+)/', $line, $matches)) {
77 $skipping = tableExists_de($matches[1]);
78 if ($skipping) {
79 echo "<font color='green'>";
82 echo xl('Skipping section');
83 echo " ".$line."</font><br />\n";
84 } else if (preg_match('/^#EndIf/', $line)) {
85 $skipping = false;
88 if (preg_match('/^\s*#/', $line)) {
89 continue;
92 if ($skipping) {
93 continue;
96 if ($proc == 1) {
97 $query .= "\n";
100 $query = $query . $line;
102 if (substr($query, -1) == '$') {
103 $query = rtrim($query, '$');
104 if ($proc == 0) {
105 $proc = 1;
106 } else {
107 $proc = 0; //executes procedures and functions
108 if (!sqlStatement($query)) {
109 echo "<font color='red'>";
110 echo xl("The above statement failed"); echo ": " .
111 getSqlLastError() . "<br />";
112 echo xl("Upgrading will continue");
113 echo ".<br /></font>\n";
116 $query = '';
120 if (substr($query, -1) == ';'and $proc == 0) {
121 $query = rtrim($query, ';');
122 echo "$query<br />\n"; //executes sql statements
123 if (!sqlStatement($query)) {
124 echo "<font color='red'>";
125 echo xl("The above statement failed"); echo ": " .
126 getSqlLastError() . "<br />";
127 echo xl("Upgrading will continue");
128 echo ".<br /></font>\n";
131 $query = '';
135 flush();
136 } // end function
139 $sqldir = "$webserver_root/sql";
140 $dh = opendir($sqldir);
141 if (! $dh) {
142 die(xl("Cannot read", "e")." ".$sqldir);
145 closedir($dh);
147 <html>
148 <head>
149 <title><?php xl('OpenEMR Database Upgrade', 'e'); ?></title>
150 <link rel='STYLESHEET' href='../../interface/themes/style_sky_blue.css'>
151 </head>
152 <body> <br>
153 <center>
154 <span class='title'><?php xl('OpenEMR Database Upgrade for De-identification', 'e'); ?></span>
155 <br>
156 </center>
157 <?php
158 if (!empty($_POST['form_submit'])) {
159 upgradeFromSqlFile_de("database_de_identification.sql");
161 // grant file privilege to user
163 $dbh = $GLOBALS['dbh'];
165 if ($dbh == false) {
166 echo "\n";
167 echo "<p>".getSqlLastError()." (#".getSqlLastErrorNo().")\n";
168 break;
169 } $login=$sqlconf["login"];
170 $loginhost=$sqlconf["host"];
171 generic_sql_select_db($sqlconf['dbase']) or die(getSqlLastError());
172 if (sqlStatement("GRANT FILE ON *.* TO '$login'@'$loginhost'") == false) {
173 echo xl("Error when granting file privilege to the OpenEMR user.");
174 echo "\n";
175 echo "<p>".getSqlLastError()." (#".getSqlLastErrorNo().")\n";
176 echo xl("Error");
177 echo "\n";
178 break;
179 } else {
180 echo "<font color='green'>";
183 echo xl("File privilege granted to OpenEMR user.");
184 echo "<br></font>\n";
186 echo "<p><font color='green'>";
187 echo xl("Database upgrade finished.");
188 echo "</font></p>\n";
189 echo "<p><font color='red'>";
190 echo xl("Please restart the apache server before playing with de-identification");
191 echo "</font></p>\n";
192 echo "<p><font color='red'>";
193 echo xl("Please set de_identification_config variable back to zero");
194 echo "</font></p>\n";
195 echo "</body></html>\n";
196 sqlClose($dbh);
197 exit();
201 <script language="JavaScript">
202 function form_validate()
204 if(document.forms[0].root_user_name.value == "")
206 alert("<?php echo xl('Enter Database root Username');?>");
207 return false;
209 /*if(document.forms[0].root_user_pass.value == "")
211 alert("<?php echo xl('Enter Database root Password');?>");
212 return false;
214 return true;
216 </script>
218 <center>
219 <form method='post' action='de_identification_upgrade.php' onsubmit="return form_validate();">
220 </br>
221 <p><?php if ($de_identification_config != 1) {
222 echo "<p><font color='red'>";
223 echo xl("Please set");
224 echo " 'de_identification_config' ";
225 echo xl("variable to one to run de-identification upgrade script");
226 echo "</br></br>";
227 echo "([OPENEMR]/contrib/util/de_identification_upgrade.php)";
228 } else {
229 xl('Upgrades the OpenEMR database to include Procedures, Functions and tables needed for De-identification process', 'e');?></p></br>
230 <table class="de_id_upgrade_login" align="center">
231 <tr><td>&nbsp;</td><td colspan=3 align=center>&nbsp;</td><td>&nbsp;</td></tr>
232 <tr valign="top">
233 <td>&nbsp;</td>
234 <td><?php xl('Enter Database root Username', 'e'); ?></td>
235 <td>:</td>
236 <td> <input type='text' size='20' name='root_user_name' id='root_user_name'
237 value= "" title="<?php xl('Enter Database root Username', 'e'); ?>" /> </td>
238 <td>&nbsp;</td>
239 </tr>
240 <tr valign="top">
241 <td>&nbsp;</td>
242 <td><?php xl('Enter Database root Password', 'e'); ?></td>
243 <td>:</td>
244 <td><input type='password' size='20' name='root_user_pass' id='root_user_pass'
245 value= "" title="<?php xl('Enter Database root Password', 'e'); ?>" /> </td>
246 <td>&nbsp;</td>
247 </tr>
248 <tr><td>&nbsp;</td><td colspan=3 align=center>&nbsp;</td><td>&nbsp;</td></tr>
250 </table>
251 <p><input type='submit' name='form_submit' value="<?php xl('Upgrade Database', 'e');?>" /></p>
252 <?php } ?>
253 </form>
254 </center>
255 </body>
256 </html>