/3DT/functions.php

https://gitlab.com/edward.pattillo/phpCourseExamples · PHP · 271 lines · 112 code · 116 blank · 43 comment · 12 complexity · e567d0125edabf406651994e9383ea9e MD5 · raw file

  1. <?php
  2. /* ------------------- functions ------------------------------- */
  3. function dbConnect() {
  4. // create our $database object and connect to the database
  5. $database = new medoo([
  6. // required
  7. 'database_type' => 'mysql',
  8. 'database_name' => 'mp3Collection',
  9. 'server' => 'localhost',
  10. 'username' => 'DigitalDojo',
  11. 'password' => 'ojoDlatigiD108',
  12. 'charset' => 'utf8'
  13. ]);
  14. return $database;
  15. }
  16. function deleteTrack($database, $trackID) {
  17. $database->delete('tracks', ['trackID' => $trackID]);
  18. $database->delete('albums_tracks', ['trackID' => $trackID]);
  19. $database->delete('artists_tracks', ['trackID' => $trackID]);
  20. }
  21. function updateInfo($database, $trackID, $artistInput, $albumInput, $trackInput) {
  22. $database->update('tracks', ['trackName' => $trackInput], ['trackID' => $trackID]);
  23. }
  24. function getSearchTracks($database, $searchString, $dateType, $searchDate) {
  25. $trackIDs = $database->select('tracks', ['trackID'], ['trackName' => $searchString]);
  26. $albumIDs = $database->select('albums', ['albumID'], ['albumName' => $searchString]);
  27. $newTrackIDs = getTrackIDsFromAlbumIDs($database, $albumIDs);
  28. $trackIDs = array_merge($trackIDs, $newTrackIDs);
  29. $artistIDs = $database->select('artists', ['artistID'], ['artistName' => $searchString]);
  30. $newTrackIDs = getTrackIDsFromArtistIDs($database, $artistIDs);
  31. $trackIDs = array_merge($trackIDs, $newTrackIDs);
  32. if ($dateType == 'Before' || $dateType == 'After') {
  33. $trackIDs = filterSearchResultsByDate($database, $trackIDs, $dateType, $searchDate);
  34. }
  35. return getAllTrackInfoFromTrackID($database, $trackIDs);
  36. }
  37. function filterSearchResultsByDate($database, $trackIDs, $dateType, $searchDate) {
  38. $filteredTracks = [];
  39. foreach ($trackIDs as $trackID) {
  40. $albums_tracks = $database->select('albums_tracks', ['albumID'], ['trackID' => $trackID]);
  41. $albumID = $albums_tracks[0]['albumID'];
  42. $albumInfo = $database->select('albums', ['albumReleaseDate'], ['albumID' => $albumID]);
  43. $albumReleaseDate = $albumInfo[0]['albumReleaseDate'];
  44. if ($dateType == 'Before' && strtotime($searchDate) > strtotime($albumReleaseDate)) {
  45. $filteredTracks[]['trackID'] = $trackID;
  46. } else if ($dateType == 'After' && strtotime($searchDate) <= strtotime($albumReleaseDate)) {
  47. $filteredTracks[]['trackID'] = $trackID;
  48. }
  49. }
  50. return $filteredTracks;
  51. }
  52. function getTrackIDsFromArtistIDs($database, $artistIDs) {
  53. $trackIDs = [];
  54. foreach($artistIDs as $artistID) {
  55. $artists_tracks = $database->select('artists_tracks', ['trackID'], ['artistID' => $artistID]);
  56. foreach($artists_tracks as $tracks) {
  57. $trackIDs[]['trackID'] = $tracks['trackID'];
  58. }
  59. }
  60. return $trackIDs;
  61. }
  62. function getTrackIDsFromAlbumIDs($database, $albumIDs) {
  63. $trackIDs = [];
  64. foreach($albumIDs as $albumID) {
  65. $albums_tracks = $database->select('albums_tracks', ['trackID'], ['albumID' => $albumID]);
  66. foreach($albums_tracks as $tracks) {
  67. $trackIDs[]['trackID'] = $tracks['trackID'];
  68. }
  69. }
  70. return $trackIDs;
  71. }
  72. function getAllTracks($database) {
  73. $trackIDs = $database->select('tracks', ['trackID']);
  74. return getAllTrackInfoFromTrackID($database, $trackIDs);
  75. }
  76. function getAllTrackInfoForArtist($database, $artistID) {
  77. $trackIDs = $database->select('artists_tracks', ['trackID'], ['artistID' => $artistID]);
  78. // get track details from our function
  79. return getAllTrackInfoFromTrackID($database, $trackIDs);
  80. }
  81. function getAllTrackInfoForDate($database, $testDate) {
  82. // get album ids where the date tests correctly
  83. $albumIDs = $database->select('albums', ['albumID'], ['albumReleaseDate[>=]' => $testDate]);
  84. // declare empty array to collect track ids
  85. $allTrackIds = [];
  86. foreach ($albumIDs as $albumID) {
  87. // get all the tracks for this particular album
  88. $trackIDs = $database->select('albums_tracks', ['trackID'], ['albumID' => $albumID]);
  89. // add the new array of track IDs with the old array
  90. $allTrackIds = array_merge($allTrackIds,$trackIDs);
  91. }
  92. return getAllTrackInfoFromTrackID($database, $allTrackIds);
  93. }
  94. function getAllTrackInfoFromTrackID($database, $trackIDs) {
  95. // empty array to hold track arrays
  96. $songs = [];
  97. foreach ($trackIDs as $track) {
  98. // declare and array that we will add to as we go
  99. $trackDetails = [];
  100. $trackID = $track['trackID'];
  101. $trackDetails['trackID'] = $trackID;
  102. // get track info
  103. $trackInfo = $database->select('tracks', ['trackName'], ['trackID' => $trackID]);
  104. $trackDetails['trackName'] = $trackInfo[0]['trackName'];
  105. // get albumID so we can get album info
  106. $albums_tracks = $database->select('albums_tracks', ['albumID'], ['trackID' => $trackID]);
  107. $albumID = $albums_tracks[0]['albumID'];
  108. // get album info
  109. $albumInfo = $database->select('albums', ['albumName'], ['albumID' => $albumID]);
  110. $trackDetails['albumName'] = $albumInfo[0]['albumName'];
  111. // get artistID so we can get artist info
  112. $artists_tracks = $database->select('artists_tracks', ['artistID'], ['trackID' => $trackID]);
  113. $artistID = $artists_tracks[0]['artistID'];
  114. // get artist info
  115. $artistInfo = $database->select('artists', ['artistName'], ['artistID' => $artistID]);
  116. $trackDetails['artistName'] = $artistInfo[0]['artistName'];
  117. // add details to our song array (of arrays)
  118. $songs[] = $trackDetails;
  119. }
  120. // print_r($songs);
  121. return $songs;
  122. }
  123. // if the database call produced an error, we respond with the error message instead of a JSON object
  124. function checkForDatabaseError($database,$songs) {
  125. // if $songs validates as false, something went wrong when we queried the database
  126. if ($songs === false) {
  127. // get the error details
  128. $errorArray = $database->error();
  129. // the 3rd value in the array contains the error message (starting with [0] )
  130. echo $errorArray[2].'<br>';
  131. // exit means to stop interpreting the PHP.
  132. // nothing will be returned and anything after the line of code
  133. // where this function was called will execute
  134. exit;
  135. }
  136. }
  137. /*
  138. if ($queryType === 'getAllTracks') {
  139. $songs = getAllTracks($database);
  140. } else if ($queryType === 'getAllTrackInfoForArtist') {
  141. $songs = getAllTrackInfoForArtist($database, $p1);
  142. } else if ($queryType === 'getAllTrackInfoForDate') {
  143. $songs = getAllTrackInfoForDate($database, $p1);
  144. } else
  145. */