/firescrum/src/php/DatabaseAdapter.php

https://github.com/drawig/THM-PHP-Demo-Projects · PHP · 377 lines · 172 code · 115 blank · 90 comment · 9 complexity · bcd1299d1f1df3dee57ea71808325742 MD5 · raw file

  1. <?php
  2. include('Projekt.php');
  3. include('Ticket.php');
  4. /**
  5. * Diese Klasse bietet Funktionen, mit denen von Firescrum häufig durchgeführte Datenbank-Zugriffe
  6. * abstrahiert werden.
  7. */
  8. class DatabaseAdapter {
  9. //Hier richtige Daten eingeben.
  10. private static $mDBHost = "localhost";
  11. private static $mDBUser = "root";
  12. private static $mDBPassword = "";
  13. /**
  14. * Erstellt aus dem uebergebenen Titel und der Beschreibung ein neues Projekt bzw. erstellt einen Eintrag
  15. * in der Datenbank mit diesen Daten.
  16. *
  17. * @param String Titel des Projekts
  18. * @param String Beschreibung des Projekts
  19. */
  20. public static function addProjekt($titel, $beschreibung) {
  21. try {
  22. $dbHost = DatabaseAdapter::$mDBHost;
  23. $dbh = new PDO("mysql:host=$dbHost;dbname=firescrum", DatabaseAdapter::$mDBUser, DatabaseAdapter::$mDBPassword);
  24. $sth = $dbh->prepare("INSERT INTO projekte(titel, beschreibung) VALUES(?, ?);");
  25. $sth->bindParam(1, $titel);
  26. $sth->bindParam(2, $beschreibung);
  27. $sth->execute();
  28. $return = $sth->fetch();
  29. if(!$return)
  30. return NULL;
  31. $dbh = NULL;
  32. } catch (Exception $e) {}
  33. return NULL;
  34. }
  35. /**
  36. * Fuegt dem uebergebenen Projekt das uebergebene Ticket hinzu und speichert dieses in der Datenbank.
  37. *
  38. * @param Projekt das Projekt, zu dem ein Ticket hinzugefuegt werden soll
  39. * @param Ticket das Ticket, welches zum Projekt hinzugefuegt werden soll
  40. * @param String Die Vorgaenger mit Kommata getrennt
  41. */
  42. public static function addTicket($projekt, $ticket, $vorgaenger) {
  43. try {
  44. $dbHost = DatabaseAdapter::$mDBHost;
  45. $dbh = new PDO("mysql:host=$dbHost;dbname=firescrum", DatabaseAdapter::$mDBUser, DatabaseAdapter::$mDBPassword);
  46. $projektId = $projekt->getId();
  47. // $ticketId = $ticket->getID(); //hier noch -1
  48. $ticketTitel = $ticket->getTitel();
  49. $ticketBeschreibung = $ticket->getBeschreibung();
  50. $ticketStunden = $ticket->getStunden();
  51. $ticketVorgaenger = array();
  52. $ticketNachfolger = array();
  53. //erstmal neues Ticket in DB eintragen und direkt wieder auslesen um die ID zu bekommen
  54. $sth = $dbh->prepare("INSERT INTO tickets(pid, titel, beschreibung, stunden) VALUES(?, ?, ?, ?);");
  55. $sth->bindParam(1, $projektId);
  56. $sth->bindParam(2, $ticketTitel);
  57. $sth->bindParam(3, $ticketBeschreibung);
  58. $sth->bindParam(4, $ticketStunden);
  59. $sth->execute();
  60. $sth = $dbh->prepare("SELECT * FROM tickets ORDER BY id DESC;");
  61. $sth->execute();
  62. $returnTicket = $sth->fetchAll();
  63. $i = 0;
  64. $ticketID = 0;
  65. //Durchlaeuft das aeußere Array (welches Arrays enthaelt)
  66. foreach ($returnTicket as $entry) {
  67. $tempArray = array();
  68. //Durchlaeuft das innere Array (welches key-value-paare enthaelt)
  69. foreach($entry as $key => $value) {
  70. if($i == 0) {
  71. $tempArray[$key] = $value;
  72. //Aktuelle ID vom neuen Ticket
  73. $ticketID = $tempArray['id'];
  74. }
  75. $i = 1;
  76. }
  77. }
  78. if (count($vorgaenger) != 0) {
  79. //String auslesen und zahlen im array speichern
  80. $zahlen = split('[,]', $vorgaenger);
  81. //Zahlen stehen korrekt im Array
  82. foreach ($zahlen as $id) {
  83. $sth = $dbh->prepare("INSERT INTO graphknoten(vorgaenger, nachfolger) VALUES(?, ?);");
  84. $sth->bindParam(1, $id);
  85. $sth->bindParam(2, $ticketID);
  86. $sth->execute();
  87. $return = $sth->fetch(); //No need o_O
  88. }
  89. }
  90. if(!$returnTicket) {
  91. $dbh = NULL;
  92. return NULL;
  93. }
  94. $dbh = NULL;
  95. } catch (Exception $e) {}
  96. return NULL;
  97. }
  98. /**
  99. * Liest saemtliche in der Datenbank vorhanden Projekteintraege aus, speichert diese in einem
  100. * array und liefert dieses zurueck
  101. *
  102. * @return array mit allen Projekten
  103. */
  104. public static function getProjekte() {
  105. try {
  106. $dbHost = DatabaseAdapter::$mDBHost;
  107. $dbh = new PDO("mysql:host=$dbHost;dbname=firescrum", DatabaseAdapter::$mDBUser, DatabaseAdapter::$mDBPassword);
  108. $sth = $dbh->prepare("SELECT * FROM projekte;");
  109. $sth->execute();
  110. //Liefert ein Array welches wiederrum weitere Arrays beeinhaltet, welche die key + value paare beeinhalten
  111. $return = $sth->fetchAll();
  112. if(!$return)
  113. return NULL;
  114. //Durchlaeuft das aeußere Array (welches Arrays enthaelt)
  115. foreach ($return as $entry) {
  116. $tempArray = array();
  117. //Durchlaeuft das innere Array (welches key-value-paare enthaelt)
  118. foreach($entry as $key => $value) {
  119. $tempArray[$key] = $value;
  120. }
  121. //Neue Projekte erstellen und dem returnArray hinzufuegen
  122. $projekt = new Projekt($tempArray['id'], $tempArray['titel'], $tempArray['beschreibung']);
  123. $returnArray[] = $projekt;
  124. }
  125. /* Debug
  126. echo '<br><br>';
  127. print_r($returnArray); */
  128. $dbh = NULL;
  129. return $returnArray;
  130. } catch (Exception $e) {}
  131. return NULL;
  132. }
  133. /**
  134. * Liest ein einzelnes Projekt anhand der ubergebenen id aus der Datenbank aus und gibt dieses zurueck
  135. *
  136. * @param int eindeutige id des Projekts
  137. * @return Projekt das zur ID zugehoerige Projekt
  138. */
  139. public static function getSingleProjekt($id) {
  140. $result = NULL;
  141. try {
  142. $dbHost = DatabaseAdapter::$mDBHost;
  143. $dbh = new PDO("mysql:host=$dbHost;dbname=firescrum", DatabaseAdapter::$mDBUser, DatabaseAdapter::$mDBPassword);
  144. $sth = $dbh->prepare("SELECT * FROM projekte WHERE id=?;");
  145. $sth->bindParam(1, $id);
  146. $sth->execute();
  147. $return = $sth->fetch();
  148. if(!$return) {
  149. $dbh = NULL;
  150. return NULL;
  151. }
  152. $id = $return['id'];
  153. $titel = $return['titel'];
  154. $beschreibung = $return['beschreibung'];
  155. $result = new Projekt($id, $titel, $beschreibung);
  156. } catch (Exception $e) {}
  157. return $result;
  158. }
  159. /**
  160. * Liefert alle zum uebergebenen Projekt alle in der Datenbank vorhanden Tickets als array
  161. *
  162. * @param string Projekt ID des Projekts zu dem die Tickets geliefert werden sollen
  163. * @return array enthaelt alle Tickets zum Projekt
  164. */
  165. public static function getTickets($projektId) {
  166. try {
  167. $dbHost = DatabaseAdapter::$mDBHost;
  168. $dbh = new PDO("mysql:host=$dbHost;dbname=firescrum", DatabaseAdapter::$mDBUser, DatabaseAdapter::$mDBPassword);
  169. $tickets = array();
  170. $sth = $dbh->prepare("SELECT * FROM tickets WHERE pid=?;");
  171. $sth->bindParam(1, $projektId);
  172. $sth->execute();
  173. //Liefert ein Array welches wiederrum weitere Arrays beeinhaltet, welche die key + value paare beeinhalten
  174. $return = $sth->fetchAll();
  175. if(!$return) {
  176. $dbh = NULL;
  177. return NULL;
  178. }
  179. //Durchlaeuft das aeußere Array (welches Arrays enthaelt)
  180. foreach ($return as $entry) {
  181. $tempArray = array();
  182. //Durchlaeuft das innere Array (welches key-value-paare enthaelt)
  183. foreach($entry as $key => $value) {
  184. $tempArray[$key] = $value;
  185. }
  186. //Nachfolger raussuchen
  187. $sth = $dbh->prepare("SELECT * FROM graphknoten WHERE nachfolger=?;");
  188. $sth->bindParam(1, $tempArray['id']);
  189. $sth->execute();
  190. $ergebnis = $sth->fetchAll();
  191. $vorgaengerIds = array();
  192. foreach($ergebnis as $entry)
  193. $vorgaengerIds[] = $entry['vorgaenger'];
  194. /* $nachfolgerIds = array();
  195. $sth = $dbh->prepare("SELECT * FROM graphknoten;");
  196. $sth->execute();
  197. $returnn = $sth->fetchAll(); //hier weiter .....
  198. foreach($returnn as $entry) {
  199. echo $entry.' '.$returnn['nachfolger'].' <br>';
  200. $nachfolgerIds[] = $returnn['nachfolger'];
  201. print_r($nachfolgerIds);
  202. }
  203. */
  204. $sth = $dbh->prepare("SELECT * FROM graphknoten WHERE vorgaenger=?;");
  205. $sth->bindParam(1, $tempArray['id']);
  206. $sth->execute();
  207. $ergebnis = $sth->fetchAll();
  208. $nachfolgerIds = array();
  209. foreach($ergebnis as $entry)
  210. $nachfolgerIds[] = $entry['nachfolger'];
  211. // echo "teeeeeeeest";
  212. $ticket = new Ticket($tempArray['id'], $tempArray['titel'], $tempArray['beschreibung'], $tempArray['stunden'], $vorgaengerIds, $nachfolgerIds);
  213. $tickets[] = $ticket;
  214. }
  215. /* Debug
  216. echo '<br><br>';
  217. print_r($returnArray); */
  218. $dbh = NULL;
  219. return $tickets;
  220. } catch (Exception $e) {}
  221. return NULL;
  222. }
  223. /**
  224. * Liefert das Ticket zu der uebergenen ID (Zahl)
  225. *
  226. * @param int ID (Zahl) des benoetigten Tickets
  227. * @return Ticket das Ticket zu der ID
  228. */
  229. public static function getTicket($id) {
  230. try {
  231. // echo "hieeer";
  232. $dbHost = DatabaseAdapter::$mDBHost;
  233. $dbh = new PDO("mysql:host=$dbHost;dbname=firescrum", DatabaseAdapter::$mDBUser, DatabaseAdapter::$mDBPassword);
  234. $sth = $dbh->prepare("SELECT * FROM tickets WHERE id =?;");
  235. $sth->bindParam(1, $id);
  236. $sth->execute();
  237. $return = $sth->fetch();
  238. /* if(!$return) {
  239. $dbh = NULL;
  240. return NULL;
  241. }
  242. */
  243. $id = $return['id'];
  244. $pid = $return['pid']; //TODO pid?
  245. $titel = $return['titel'];
  246. $beschreibung = $return['beschreibung'];
  247. $stunden = $return['stunden'];
  248. $result = new Ticket($id, $titel, $beschreibung, $stunden); //TODO pid?
  249. } catch (Exception $e) {}
  250. return $result;
  251. }
  252. }
  253. ?>