PageRenderTime 34ms CodeModel.GetById 12ms RepoModel.GetById 0ms app.codeStats 0ms

/interface/forms/CAMOS/admin.php

https://github.com/drbowen/openemr
PHP | 173 lines | 167 code | 4 blank | 2 comment | 34 complexity | 5ea10d4e74b31c926d2bd638b9c0dede MD5 | raw file
  1. <?php
  2. include_once ('../../globals.php');
  3. include_once("../../../library/formdata.inc.php");
  4. ?>
  5. <?php
  6. if ($_POST['export']) {
  7. $temp = tmpfile();
  8. if ($temp === false) {echo "<h1>" . xl("failed") . "</h1>";}
  9. else {
  10. $query1 = "select id, category from ".mitigateSqlTableUpperCase("form_CAMOS_category");
  11. $statement1 = sqlStatement($query1);
  12. while ($result1 = sqlFetchArray($statement1)) {
  13. $tmp = $result1['category'];
  14. $tmp = "<category>$tmp</category>"."\n";
  15. fwrite($temp, $tmp);
  16. $query2 = "select id,subcategory from ".mitigateSqlTableUpperCase("form_CAMOS_subcategory")." where category_id=".$result1['id'];
  17. $statement2 = sqlStatement($query2);
  18. while ($result2 = sqlFetchArray($statement2)) {
  19. $tmp = $result2['subcategory'];
  20. $tmp = "<subcategory>$tmp</subcategory>"."\n";
  21. fwrite($temp, $tmp);
  22. $query3 = "select item, content from ".mitigateSqlTableUpperCase("form_CAMOS_item")." where subcategory_id=".$result2['id'];
  23. $statement3 = sqlStatement($query3);
  24. while ($result3 = sqlFetchArray($statement3)) {
  25. $tmp = $result3['item'];
  26. $tmp = "<item>$tmp</item>"."\n";
  27. fwrite($temp, $tmp);
  28. $tmp = preg_replace(array("/\n/","/\r/"),array("\\\\n","\\\\r"),$result3['content']);
  29. $tmp = "<content>$tmp</content>"."\n";
  30. fwrite($temp, $tmp);
  31. }
  32. }
  33. }
  34. rewind($temp);
  35. header("Pragma: public");
  36. header("Expires: 0");
  37. header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
  38. header("Content-Type: text/plain");
  39. header("Content-Disposition: attachment; filename=\"CAMOS_export.txt\"");
  40. fpassthru($temp);
  41. fclose($temp);
  42. }
  43. }
  44. if ($_POST['import']) {
  45. ?>
  46. <?php
  47. $fname = '';
  48. foreach($_FILES as $file) {
  49. $fname = $file['tmp_name'];
  50. // echo "<p>tmp filename: ".$file['tmp_name']."</p>";
  51. }
  52. $handle = @fopen($fname,"r");
  53. if ($handle === false) {
  54. echo "<h1>" . xl('Error opening uploaded file for reading') . "</h1>";
  55. } else {
  56. $category = '';
  57. $category_id = 0;
  58. $subcategory = '';
  59. $subcategory_id = 0;
  60. $item = '';
  61. $item_id = 0;
  62. $content = '';
  63. while (!feof($handle)) {
  64. $buffer = fgets($handle);
  65. if (preg_match('/<category>(.*?)<\/category>/',$buffer,$matches)) {
  66. $category = add_escape_custom(trim($matches[1])); //trim in case someone edited by hand and added spaces
  67. $statement = sqlStatement("select id from ".mitigateSqlTableUpperCase("form_CAMOS_category")." where category like \"$category\"");
  68. if ($result = sqlFetchArray($statement)) {
  69. $category_id = $result['id'];
  70. } else {
  71. $query = "INSERT INTO ".mitigateSqlTableUpperCase("form_CAMOS_category")." (user, category) ".
  72. "values ('".$_SESSION['authUser']."', \"$category\")";
  73. sqlInsert($query);
  74. $statement = sqlStatement("select id from ".mitigateSqlTableUpperCase("form_CAMOS_category")." where category like \"$category\"");
  75. if ($result = sqlFetchArray($statement)) {
  76. $category_id = $result['id'];
  77. }
  78. }
  79. }
  80. if (preg_match('/<subcategory>(.*?)<\/subcategory>/',$buffer,$matches)) {
  81. $subcategory = add_escape_custom(trim($matches[1]));
  82. $statement = sqlStatement("select id from ".mitigateSqlTableUpperCase("form_CAMOS_subcategory")." where subcategory " .
  83. "like \"$subcategory\" and category_id = $category_id");
  84. if ($result = sqlFetchArray($statement)) {
  85. $subcategory_id = $result['id'];
  86. } else {
  87. $query = "INSERT INTO ".mitigateSqlTableUpperCase("form_CAMOS_subcategory")." (user, subcategory, category_id) ".
  88. "values ('".$_SESSION['authUser']."', \"$subcategory\", $category_id)";
  89. sqlInsert($query);
  90. $statement = sqlStatement("select id from ".mitigateSqlTableUpperCase("form_CAMOS_subcategory")." where subcategory " .
  91. "like \"$subcategory\" and category_id = $category_id");
  92. if ($result = sqlFetchArray($statement)) {
  93. $subcategory_id = $result['id'];
  94. }
  95. }
  96. }
  97. if ((preg_match('/<(item)>(.*?)<\/item>/',$buffer,$matches)) ||
  98. (preg_match('/<(content)>(.*?)<\/content>/s',$buffer,$matches))) {
  99. $mode = $matches[1];
  100. $value = add_escape_custom(trim($matches[2]));
  101. $insert_value = '';
  102. if ($mode == 'item') {
  103. $postfix = 0;
  104. $statement = sqlStatement("select id from ".mitigateSqlTableUpperCase("form_CAMOS_item")." where item like \"$value\" " .
  105. "and subcategory_id = $subcategory_id");
  106. if ($result = sqlFetchArray($statement)) {//let's count until we find a number available
  107. $postfix = 1;
  108. $inserted_duplicate = false;
  109. while ($inserted_duplicate === false) {
  110. $insert_value = $value."_".$postfix;
  111. $inner_statement = sqlStatement("select id from ".mitigateSqlTableUpperCase("form_CAMOS_item")." ".
  112. "where item like \"$insert_value\" " .
  113. "and subcategory_id = $subcategory_id");
  114. if (!($inner_result = sqlFetchArray($inner_statement))) {//doesn't exist
  115. $inner_query = "INSERT INTO ".mitigateSqlTableUpperCase("form_CAMOS_item")." (user, item, subcategory_id) ".
  116. "values ('".$_SESSION['authUser']."', \"$insert_value\", ".
  117. "$subcategory_id)";
  118. sqlInsert($inner_query);
  119. $inserted_duplicate = true;
  120. } else {$postfix++;}
  121. }
  122. } else {
  123. $query = "INSERT INTO ".mitigateSqlTableUpperCase("form_CAMOS_item")." (user, item, subcategory_id) ".
  124. "values ('".$_SESSION['authUser']."', \"$value\", $subcategory_id)";
  125. sqlInsert($query);
  126. }
  127. if ($postfix == 0) {$insert_value = $value;}
  128. $statement = sqlStatement("select id from ".mitigateSqlTableUpperCase("form_CAMOS_item")." where item like \"$insert_value\" " .
  129. "and subcategory_id = $subcategory_id");
  130. if ($result = sqlFetchArray($statement)) {
  131. $item_id = $result['id'];
  132. }
  133. }
  134. elseif ($mode == 'content') {
  135. $statement = sqlStatement("select content from ".mitigateSqlTableUpperCase("form_CAMOS_item")." where id = ".$item_id);
  136. if ($result = sqlFetchArray($statement)) {
  137. //$content = "/*old*/\n\n".$result['content']."\n\n/*new*/\n\n$value";
  138. $content = $value;
  139. } else {
  140. $content = $value;
  141. }
  142. $query = "UPDATE ".mitigateSqlTableUpperCase("form_CAMOS_item")." set content = \"$content\" where id = ".$item_id;
  143. sqlInsert($query);
  144. }
  145. }
  146. }
  147. fclose($handle);
  148. }
  149. }
  150. ?>
  151. <html>
  152. <head>
  153. <title>
  154. admin
  155. </title>
  156. </head>
  157. <body>
  158. <p>
  159. <?php xl("Click 'export' to export your Category, Subcategory, Item, Content data to a text file. Any resemblance of this file to an XML file is purely coincidental. The opening and closing tags must be on the same line, they must be lowercase with no spaces. To import, browse for a file and click 'import'. If the data is completely different, it will merge with your existing data. If there are similar item names, The old one will be kept and the new one saved with a number added to the end.","e"); ?>
  160. <?php xl("This feature is very experimental and not fully tested. Use at your own risk!","e"); ?>
  161. </p>
  162. <form enctype="multipart/form-data" method="POST">
  163. <input type="hidden" name="MAX_FILE_SIZE" value="12000000" />
  164. <?php xl('Send this file','e'); ?>: <input type="file" name="userfile"/>
  165. <input type="submit" name="import" value='<?php xl("Import","e"); ?>'/>
  166. <input type="submit" name="export" value='<?php xl("Export","e"); ?>'/>
  167. </form>
  168. </body>
  169. </html>