You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

367 regels
13 KiB

  1. <?php
  2. $dbhandle = mysqli_connect($dbhost.':'.$dbport,$dbuser,$dbpassword, $dbname) or
  3. error("Die Verbindung mit dem Datenbankserver ist fehlgeschlagen ($dbhost, $dbuser, $dbpassword): " . mysqli_error());
  4. # mysql_select_db($dbname, $dbhandle) or error("Die Verbindung mit der Datenbank $dbname ist fehlgeschlagen: " . mysqli_error());
  5. // Exportiere Daten als CSV-Datei. Setze Flag auf 1 ("exportiert")
  6. function
  7. exportCSV($gesamtexport=0,$u18=false,$from=false,$end=false,$erstellt=false) {
  8. global $exportpath;
  9. $now = time();
  10. if ($end) {
  11. $now = $end;
  12. }
  13. $year = date('Y',$now);
  14. $month = date('m',$now);
  15. $day = date('d',$now);
  16. $leastbirthday = ($year - 18) . "-" . $month . "-" . $day;
  17. $mostbirthday = ($year - 5) . "-" . $month . "-" . $day;
  18. $mydate = date('YmdHi', $now);
  19. $query = "LOCK TABLES users WRITE, admins READ";
  20. $result = mysql_query($query) or
  21. error("Konnte Tabelle users nicht locken: " . mysql_error());
  22. if ($erstellt) {
  23. $changefield = 'erstellungsdatum';
  24. } else {
  25. $changefield = 'aenderungsdatum';
  26. }
  27. // $from = strtotime('2017-08-31 15:57');
  28. // $end =$now;
  29. if ($u18) {
  30. $query = "SELECT * FROM users WHERE status = 0
  31. AND geburtsdatum > '$leastbirthday'
  32. AND geburtsdatum < '$mostbirthday'
  33. AND $changefield < $now ORDER BY $changefield ASC";
  34. } else {
  35. $query = "SELECT * FROM users WHERE status = 0
  36. AND geburtsdatum <= '$leastbirthday'
  37. AND $changefield < $now ORDER BY $changefield ASC";
  38. }
  39. if ($gesamtexport == 1)
  40. {
  41. if ($u18) {
  42. $query = "SELECT * FROM users WHERE
  43. geburtsdatum > '$leastbirthday'
  44. $changefield < $now ORDER BY $changefield ASC";
  45. } else {
  46. $query = "SELECT * FROM users WHERE
  47. geburtsdatum <= '$leastbirthday'
  48. $changefield < $now ORDER BY $changefield ASC";
  49. }
  50. }
  51. if ($from or $end) {
  52. print "Start: $from\nEnd: $end\nNow: $now\n";
  53. if ($u18) {
  54. $query = "SELECT * FROM users WHERE
  55. geburtsdatum > '$leastbirthday'
  56. AND $changefield < $end
  57. AND $changefield > $from
  58. ORDER BY $changefield ASC";
  59. } else {
  60. $query = "SELECT * FROM users WHERE
  61. geburtsdatum <= '$leastbirthday'
  62. AND $changefield < $end
  63. AND $changefield > $from
  64. ORDER BY $changefield ASC";
  65. }
  66. # $query = "SELECT * FROM users WHERE
  67. # $changefield < $end
  68. # AND $changefield > $from
  69. # ORDER BY $changefield ASC";
  70. print $query . "\n";
  71. }
  72. print "Query: $query<br/>\n";
  73. $result = mysql_query($query) or
  74. error("Konnte csv-Daten nicht aus der Datenbank holen: " . mysql_error());
  75. $numRows = mysql_num_rows($result);
  76. if ($u18) {
  77. $filename = "$exportpath/U18$mydate"."_healthmiles.csv.xls";
  78. } else {
  79. $filename = "$exportpath/$mydate"."_healthmiles.csv.xls";
  80. }
  81. print "Schreibe in $filename\n";
  82. $fileout = fopen($filename,"w+") or
  83. die ("Kann $filename nicht oeffnen.\n");
  84. $fields = array('anrede','titel','name','vorname','strasse','hausnummer','plz','ort',
  85. 'email','versnummer','erstellungsdatum','aenderungsdatum','ersteller');
  86. $first = true;
  87. $line = '';
  88. foreach ($fields as $field) {
  89. if ($first) { $first = false; } else { $line .= ";"; }
  90. $line .='"' . $field . '"';
  91. }
  92. $line .= "\n";
  93. if (!fputs($fileout, $line, strlen($line))) error("Konnte nicht schreiben");
  94. fflush($fileout);
  95. while ($row = mysql_fetch_array($result))
  96. {
  97. $first = 1;
  98. $line = "";
  99. foreach ($fields as $field)
  100. {
  101. $$field = unescape($row[$field]);
  102. if ($field == 'ersteller') {
  103. if ($$field == 0) { $ersteller = "Internet"; } else {
  104. $subquery = "SELECT name FROM admins WHERE userId = " . $$field;
  105. $subresult = mysql_query($subquery) or
  106. error ("Konnte Ersteller nicht aus der Datenbank holen: " . mysql_error() . ", Query: $subquery" .
  107. "Datenexport abgebrochen. Bitte melden sie sich beim <a href='mailto:$adminEmail'>Administrator</a> ($adminTel).");
  108. $myrow = mysql_fetch_array($subresult);
  109. $ersteller = $myrow['name'];
  110. }
  111. }
  112. if ($field == 'erstellungsdatum') { $erstellungsdatum = date('d.m.Y G:i:s', $erstellungsdatum); }
  113. if ($field == 'aenderungsdatum') { $aenderungsdatum = date('d.m.Y G:i:s', $aenderungsdatum); }
  114. if ($first == 1) { $first = 0; } else { $line.=";"; }
  115. $line .= '"' . $$field . '"';
  116. }
  117. $line .= "\n";
  118. if (!fputs($fileout, $line, strlen($line))) error("Konnte nicht schreiben");
  119. fflush($fileout);
  120. }
  121. fclose($fileout);
  122. if ($u18) {
  123. $query = "UPDATE users SET status = 1 WHERE status = 0
  124. AND geburtsdatum > '$leastbirthday'
  125. AND geburtsdatum < '$mostbirthday'
  126. AND $changefield < $now";
  127. } else {
  128. $query = "UPDATE users SET status = 1 WHERE status = 0
  129. AND geburtsdatum <= '$leastbirthday'
  130. AND $changefield < $now";
  131. }
  132. if (!($from && $end)) {
  133. $result = mysql_query($query) or error("Konnte Export-Status nicht setzen " . mysql_error());
  134. }
  135. $query = "UNLOCK TABLES";
  136. $result = mysql_query($query) or
  137. error("Konnte Tabelle users nicht unlocken: " . mysql_error());
  138. }
  139. function exportCSVselected($users, $filesuffix='datenexport')
  140. {
  141. global $exportpath;
  142. $now = time();
  143. $mydate = date('Y-m-d', $now);
  144. $filename = "extended/$mydate" . "_$filesuffix.xls";
  145. $fields = array('anrede','titel','name','vorname','strasse','hausnummer','plz','ort',
  146. 'email','versnummer','erstellungsdatum','aenderungsdatum','ersteller');
  147. $data = Array();
  148. /* print data */
  149. foreach ($users as $myUser)
  150. {
  151. $row = Array();
  152. $user = new user('',$myUser);
  153. $first = 1;
  154. $line = "";
  155. foreach ($fields as $field)
  156. {
  157. $$field = $user->$field;
  158. if ($field == 'ersteller') {
  159. if ($$field == 0) { $ersteller = "Internet"; } else {
  160. $subquery = "SELECT name FROM admins WHERE userId = " . $$field;
  161. $subresult = mysql_query($subquery) or
  162. error ("Konnte Ersteller nicht aus der Datenbank holen: " . mysql_error() . ", Query: $subquery");
  163. $myrow = mysql_fetch_array($subresult);
  164. $ersteller = $myrow['name'];
  165. }
  166. }
  167. if ($field == 'erstellungsdatum') { $erstellungsdatum = date('d.m.Y G:i:s', $erstellungsdatum); }
  168. if ($field == 'aenderungsdatum') { $aenderungsdatum = date('d.m.Y G:i:s', $aenderungsdatum); }
  169. array_push($row, $$field);
  170. }
  171. array_push($data, $row);
  172. }
  173. $spreadsheet = new Excelexport("$exportpath/" . $filename,$filesuffix,$fields,$data);
  174. $spreadsheet->create();
  175. return($filename);
  176. }
  177. function exportdoublettes() {
  178. $doublettes = checkdoublettes();
  179. $users = array();
  180. foreach ($doublettes as $row) {
  181. $userId = $row['userId'];
  182. array_push($users, $userId);
  183. }
  184. $filename = exportCSVselected($users, 'doubletten');
  185. return $filename;
  186. }
  187. function getLastExport($u18=false)
  188. {
  189. $query = "SELECT timestamp FROM userlogs WHERE aktion = 'datenexport" . ($u18?'U18':'') . "' order by timestamp DESC";
  190. $result = mysql_query($query) or
  191. error("Konnte csv-Daten nicht aus der Datenbank holen: " . mysql_error());
  192. $row = mysql_fetch_array($result);
  193. $lastexport = date('d.m.Y G:i:s', $row['timestamp']);
  194. return $lastexport;
  195. }
  196. function exportCSVU18($gesamtexport=0,$u18=false)
  197. {
  198. global $exportpath;
  199. $now = 1247608800; # 2009-07-15: Stichtag Start U18
  200. $year = date('Y',$now);
  201. $month = date('m',$now);
  202. $day = date('d',$now);
  203. $leastbirthday = ($year - 18) . "-" . $month . "-" . $day;
  204. $mostbirthday = ($year - 0) . "-" . $month . "-" . $day;
  205. $mydate = date('YmdHi', $now);
  206. $query = "LOCK TABLES users WRITE, admins READ";
  207. $result = mysql_query($query) or
  208. error("Konnte Tabelle users nicht locken: " . mysql_error());
  209. if ($u18) {
  210. $query = "SELECT * FROM users WHERE geburtsdatum >= '$leastbirthday' AND status = 1
  211. AND geburtsdatum < '$mostbirthday'
  212. AND aenderungsdatum < $now ORDER BY aenderungsdatum ASC";
  213. } else {
  214. $query = "SELECT * FROM users WHERE status = 0
  215. AND geburtsdatum <= '$leastbirthday'
  216. AND aenderungsdatum < $now ORDER BY aenderungsdatum ASC";
  217. }
  218. if ($gesamtexport == 1)
  219. {
  220. if ($u18) {
  221. $query = "SELECT * FROM users WHERE
  222. geburtsdatum > '$leastbirthday'
  223. aenderungsdatum < $now ORDER BY aenderungsdatum ASC";
  224. } else {
  225. $query = "SELECT * FROM users WHERE
  226. geburtsdatum <= '$leastbirthday'
  227. aenderungsdatum < $now ORDER BY aenderungsdatum ASC";
  228. }
  229. }
  230. print "Query: $query<br/>\n";
  231. $result = mysql_query($query) or
  232. error("Konnte csv-Daten nicht aus der Datenbank holen: " . mysql_error());
  233. $numRows = mysql_num_rows($result);
  234. if ($u18) {
  235. $filename = "$exportpath/U18$mydate"."_healthmiles.csv.xls";
  236. } else {
  237. $filename = "$exportpath/$mydate"."_healthmiles.csv.xls";
  238. }
  239. $fileout = fopen($filename,"w+") or
  240. die ("Kann $filename nicht oeffnen.\n");
  241. print "Filename: $filename<br/>\n";
  242. $fields = array('anrede','titel','name','vorname','strasse','hausnummer','plz','ort',
  243. 'email','versnummer','erstellungsdatum','aenderungsdatum','ersteller');
  244. $first = true;
  245. $line = '';
  246. foreach ($fields as $field) {
  247. if ($first) { $first = false; } else { $line .= ";"; }
  248. $line .='"' . $field . '"';
  249. }
  250. $line .= "\n";
  251. if (!fputs($fileout, $line, strlen($line))) error("Konnte nicht schreiben");
  252. fflush($fileout);
  253. while ($row = mysql_fetch_array($result))
  254. {
  255. $first = 1;
  256. $line = "";
  257. foreach ($fields as $field)
  258. {
  259. $$field = unescape($row[$field]);
  260. if ($field == 'ersteller') {
  261. if ($$field == 0) { $ersteller = "Internet"; } else {
  262. $subquery = "SELECT name FROM admins WHERE userId = " . $$field;
  263. $subresult = mysql_query($subquery) or
  264. error ("Konnte Ersteller nicht aus der Datenbank holen: " . mysql_error() . ", Query: $subquery" .
  265. "Datenexport abgebrochen. Bitte melden sie sich beim <a href='mailto:$adminEmail'>Administrator</a> ($adminTel).");
  266. $myrow = mysql_fetch_array($subresult);
  267. $ersteller = $myrow['name'];
  268. }
  269. }
  270. if ($field == 'erstellungsdatum') { $erstellungsdatum = date('d.m.Y G:i:s', $erstellungsdatum); }
  271. if ($field == 'aenderungsdatum') { $aenderungsdatum = date('d.m.Y G:i:s', $aenderungsdatum); }
  272. if ($first == 1) { $first = 0; } else { $line.=";"; }
  273. $line .= '"' . $$field . '"';
  274. }
  275. $line .= "\n";
  276. if (!fputs($fileout, $line, strlen($line))) error("Konnte nicht schreiben");
  277. fflush($fileout);
  278. }
  279. fclose($fileout);
  280. if ($u18) {
  281. $query = "UPDATE users SET status = 1 WHERE status = 0
  282. AND geburtsdatum >= '$leastbirthday'
  283. AND geburtsdatum < '$mostbirthday'
  284. AND aenderungsdatum < $now";
  285. } else {
  286. $query = "UPDATE users SET status = 1 WHERE status = 0
  287. AND geburtsdatum <= '$leastbirthday'
  288. AND aenderungsdatum < $now";
  289. }
  290. $result = mysql_query($query) or error("Konnte Export-Status nicht setzen " . mysql_error());
  291. $query = "UNLOCK TABLES";
  292. $result = mysql_query($query) or
  293. error("Konnte Tabelle users nicht unlocken: " . mysql_error());
  294. }
  295. function dbEscapeString($string)
  296. {
  297. global $dbhandle;
  298. return mysql_real_escape_string($string);
  299. }
  300. function dbQuery($query)
  301. {
  302. $result = mysql_query( $query)
  303. or error('Cannot commit query: ' . $query);
  304. return $result;
  305. }
  306. function dbNumRows($result)
  307. {
  308. return mysql_num_rows($result);
  309. }
  310. function dbFetchRow($result)
  311. {
  312. return mysql_fetch_array($result,MYSQL_ASSOC);
  313. }
  314. function dbError()
  315. {
  316. return mysql_error();
  317. }
  318. function dbFreeResult($result)
  319. {
  320. return;
  321. $response = null;
  322. if ($result) {
  323. $response = mysql_free_result($result);
  324. }
  325. return $result;
  326. }