incremented version database for previous commit
[openemr.git] / interface / forms / CAMOS / admin.php
blob023ae6290b2de5aa75c124e748aa391a98af0b0c
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 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 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 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);
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\"");
41 fpassthru($temp);
42 fclose($temp);
45 if ($_POST['import']) {
47 <?php
48 $fname = '';
49 foreach($_FILES as $file) {
50 $fname = $file['tmp_name'];
51 // echo "<p>tmp filename: ".$file['tmp_name']."</p>";
53 $handle = @fopen($fname,"r");
54 if ($handle === false) {
55 echo "<h1>" . xl('Error opening uploaded file for reading') . "</h1>";
56 } else {
57 $category = '';
58 $category_id = 0;
59 $subcategory = '';
60 $subcategory_id = 0;
61 $item = '';
62 $item_id = 0;
63 $content = '';
64 while (!feof($handle)) {
65 $buffer = fgets($handle);
66 if (preg_match('/<category>(.*?)<\/category>/',$buffer,$matches)) {
68 $category = add_escape_custom(trim($matches[1])); //trim in case someone edited by hand and added spaces
69 $statement = sqlStatement("select id from form_CAMOS_category where category like \"$category\"");
70 if ($result = sqlFetchArray($statement)) {
71 $category_id = $result['id'];
72 } else {
73 $query = "INSERT INTO form_CAMOS_category (user, category) ".
74 "values ('".$_SESSION['authUser']."', \"$category\")";
75 sqlInsert($query);
76 $statement = sqlStatement("select id from form_CAMOS_category where category like \"$category\"");
77 if ($result = sqlFetchArray($statement)) {
78 $category_id = $result['id'];
82 if (preg_match('/<subcategory>(.*?)<\/subcategory>/',$buffer,$matches)) {
84 $subcategory = add_escape_custom(trim($matches[1]));
85 $statement = sqlStatement("select id from form_CAMOS_subcategory where subcategory " .
86 "like \"$subcategory\" and category_id = $category_id");
87 if ($result = sqlFetchArray($statement)) {
88 $subcategory_id = $result['id'];
89 } else {
90 $query = "INSERT INTO form_CAMOS_subcategory (user, subcategory, category_id) ".
91 "values ('".$_SESSION['authUser']."', \"$subcategory\", $category_id)";
92 sqlInsert($query);
93 $statement = sqlStatement("select id from form_CAMOS_subcategory where subcategory " .
94 "like \"$subcategory\" and category_id = $category_id");
95 if ($result = sqlFetchArray($statement)) {
96 $subcategory_id = $result['id'];
100 if ((preg_match('/<(item)>(.*?)<\/item>/',$buffer,$matches)) ||
101 (preg_match('/<(content)>(.*?)<\/content>/s',$buffer,$matches))) {
103 $mode = $matches[1];
104 $value = add_escape_custom(trim($matches[2]));
105 $insert_value = '';
106 if ($mode == 'item') {
107 $postfix = 0;
108 $statement = sqlStatement("select id from form_CAMOS_item where item like \"$value\" " .
109 "and subcategory_id = $subcategory_id");
110 if ($result = sqlFetchArray($statement)) {//let's count until we find a number available
111 $postfix = 1;
112 $inserted_duplicate = false;
113 while ($inserted_duplicate === false) {
114 $insert_value = $value."_".$postfix;
115 $inner_statement = sqlStatement("select id from form_CAMOS_item " .
116 "where item like \"$insert_value\" " .
117 "and subcategory_id = $subcategory_id");
118 if (!($inner_result = sqlFetchArray($inner_statement))) {//doesn't exist
119 $inner_query = "INSERT INTO form_CAMOS_item (user, item, subcategory_id) ".
120 "values ('".$_SESSION['authUser']."', \"$insert_value\", ".
121 "$subcategory_id)";
122 sqlInsert($inner_query);
123 $inserted_duplicate = true;
124 } else {$postfix++;}
126 } else {
127 $query = "INSERT INTO form_CAMOS_item (user, item, subcategory_id) ".
128 "values ('".$_SESSION['authUser']."', \"$value\", $subcategory_id)";
129 sqlInsert($query);
131 if ($postfix == 0) {$insert_value = $value;}
132 $statement = sqlStatement("select id from form_CAMOS_item where item like \"$insert_value\" " .
133 "and subcategory_id = $subcategory_id");
134 if ($result = sqlFetchArray($statement)) {
135 $item_id = $result['id'];
138 elseif ($mode == 'content') {
139 $statement = sqlStatement("select content from form_CAMOS_item where id = ".$item_id);
140 if ($result = sqlFetchArray($statement)) {
141 //$content = "/*old*/\n\n".$result['content']."\n\n/*new*/\n\n$value";
142 $content = $value;
143 } else {
144 $content = $value;
146 $query = "UPDATE form_CAMOS_item set content = \"$content\" where id = ".$item_id;
147 sqlInsert($query);
151 fclose($handle);
155 <html>
156 <head>
157 <title>
158 admin
159 </title>
160 </head>
161 <body>
163 <?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"); ?>
164 <?php xl("This feature is very experimental and not fully tested. Use at your own risk!","e"); ?>
165 </p>
166 <form enctype="multipart/form-data" method="POST">
167 <input type="hidden" name="MAX_FILE_SIZE" value="12000000" />
168 <?php xl('Send this file','e'); ?>: <input type="file" name="userfile"/>
169 <input type="submit" name="import" value='<?php xl("Import","e"); ?>'/>
170 <input type="submit" name="export" value='<?php xl("Export","e"); ?>'/>
171 </form>
172 </body>
173 </html>