PageRenderTime 51ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 0ms

/api/db/MenuItem.php

https://gitlab.com/x33n/respond
PHP | 263 lines | 166 code | 87 blank | 10 comment | 1 complexity | 32229d76edc94d71b69b490ee69ff92a MD5 | raw file
  1. <?php
  2. // MenuItem DAO
  3. class MenuItem{
  4. // adds a menuItem
  5. public static function Add($name, $cssClass, $type, $url, $pageId, $priority, $siteId, $lastModifiedBy){
  6. try{
  7. $db = DB::get();
  8. $menuItemId = uniqid();
  9. $timestamp = gmdate("Y-m-d H:i:s", time());
  10. $q = "INSERT INTO MenuItems (MenuItemId, Name, CssClass, Type, Url, PageId, Priority, SiteId, LastModifiedBy, LastModifiedDate)
  11. VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
  12. $s = $db->prepare($q);
  13. $s->bindParam(1, $menuItemId);
  14. $s->bindParam(2, $name);
  15. $s->bindParam(3, $cssClass);
  16. $s->bindParam(4, $type);
  17. $s->bindParam(5, $url);
  18. $s->bindParam(6, $pageId);
  19. $s->bindParam(7, $priority);
  20. $s->bindParam(8, $siteId);
  21. $s->bindParam(9, $lastModifiedBy);
  22. $s->bindParam(10, $timestamp);
  23. $s->execute();
  24. return array(
  25. 'MenuItemId' => $menuItemId,
  26. 'Name' => $name,
  27. 'CssClass' => $cssClass,
  28. 'Type' => $type,
  29. 'Url' => $url,
  30. 'PageId' => $pageId,
  31. 'Priority' => $priority,
  32. 'IsNested' => 0,
  33. 'SiteId' => $siteId,
  34. 'LastModifiedBy' => $lastModifiedBy,
  35. 'LastModifiedDate' => $timestamp
  36. );
  37. } catch(PDOException $e){
  38. die('[MenuItem::Add] PDO Error: '.$e->getMessage());
  39. }
  40. }
  41. // updates the name, cssClass, and url
  42. public static function Edit($menuItemId, $name, $cssClass, $url, $pageId){
  43. try{
  44. $db = DB::get();
  45. $q = "UPDATE MenuItems SET Name = ?, CssClass = ?, Url = ?, PageId = ? WHERE MenuItemId = ?";
  46. $s = $db->prepare($q);
  47. $s->bindParam(1, $name);
  48. $s->bindParam(2, $cssClass);
  49. $s->bindParam(3, $url);
  50. $s->bindParam(4, $pageId);
  51. $s->bindParam(5, $menuItemId);
  52. $s->execute();
  53. } catch(PDOException $e){
  54. die('[MenuItem::Edit] PDO Error: '.$e->getMessage());
  55. }
  56. }
  57. // updates the priority
  58. public static function EditPriority($menuItemId, $priority){
  59. try{
  60. $db = DB::get();
  61. $q = "UPDATE MenuItems SET Priority = ? WHERE MenuItemId = ?";
  62. $s = $db->prepare($q);
  63. $s->bindParam(1, $priority, PDO::PARAM_INT);
  64. $s->bindParam(2, $menuItemId);
  65. $s->execute();
  66. } catch(PDOException $e){
  67. die('[MenuItem::EditPriority] PDO Error: '.$e->getMessage());
  68. }
  69. }
  70. // updates the isNested flag
  71. public static function EditIsNested($menuItemId, $isNested){
  72. try{
  73. $db = DB::get();
  74. $q = "UPDATE MenuItems SET IsNested = ? WHERE MenuItemId = ?";
  75. $s = $db->prepare($q);
  76. $s->bindParam(1, $isNested, PDO::PARAM_INT);
  77. $s->bindParam(2, $menuItemId);
  78. $s->execute();
  79. } catch(PDOException $e){
  80. die('[MenuItem::EditIsNested] PDO Error: '.$e->getMessage());
  81. }
  82. }
  83. // removes a menuItem
  84. public static function Remove($menuItemId){
  85. try{
  86. $db = DB::get();
  87. $q = "DELETE FROM MenuItems WHERE MenuItemId = ?";
  88. $s = $db->prepare($q);
  89. $s->bindParam(1, $menuItemId);
  90. $s->execute();
  91. } catch(PDOException $e){
  92. die('[MenuItem::Remove] PDO Error: '.$e->getMessage());
  93. }
  94. }
  95. // removes menuItems for type
  96. public static function RemoveForType($type, $siteId){
  97. try{
  98. $db = DB::get();
  99. $q = "DELETE FROM MenuItems WHERE Type = ? AND SiteId = ?";
  100. $s = $db->prepare($q);
  101. $s->bindParam(1, $type);
  102. $s->bindParam(2, $siteId);
  103. $s->execute();
  104. } catch(PDOException $e){
  105. die('[MenuItem::RemoveForType] PDO Error: '.$e->getMessage());
  106. }
  107. }
  108. // gets all menuItems (and meta data) for a given site
  109. public static function GetMenuItems($siteId){
  110. try{
  111. $db = DB::get();
  112. $q = "SELECT MenuItems.MenuItemId, MenuItems.Name, MenuItems.CssClass,
  113. MenuItems.Type,
  114. MenuItems.Url, MenuItems.PageId, MenuItems.Priority, MenuItems.IsNested,
  115. MenuItems.SiteId,
  116. MenuItems.LastModifiedBy, MenuItems.LastModifiedDate
  117. FROM MenuItems
  118. WHERE MenuItems.SiteId = ?
  119. ORDER BY MenuItems.Priority";
  120. $s = $db->prepare($q);
  121. $s->bindParam(1, $siteId);
  122. $s->execute();
  123. $arr = array();
  124. while($row = $s->fetch(PDO::FETCH_ASSOC)) {
  125. array_push($arr, $row);
  126. }
  127. return $arr;
  128. } catch(PDOException $e){
  129. die('[MenuItem::GetMenuItems] PDO Error: '.$e->getMessage().'trace='.$e->getTraceAsString());
  130. }
  131. }
  132. // gets all menuItems (and meta data) for a given site and type
  133. public static function GetMenuItemsForType($siteId, $type){
  134. try{
  135. $db = DB::get();
  136. $q = "SELECT MenuItems.MenuItemId, MenuItems.Name, MenuItems.CssClass,
  137. MenuItems.Type,
  138. MenuItems.Url, MenuItems.PageId, MenuItems.Priority, MenuItems.IsNested,
  139. MenuItems.SiteId,
  140. MenuItems.LastModifiedBy, MenuItems.LastModifiedDate
  141. FROM MenuItems
  142. WHERE MenuItems.SiteId = ? AND MenuItems.Type = ?
  143. ORDER BY MenuItems.Priority";
  144. $s = $db->prepare($q);
  145. $s->bindParam(1, $siteId);
  146. $s->bindParam(2, $type);
  147. $s->execute();
  148. $arr = array();
  149. while($row = $s->fetch(PDO::FETCH_ASSOC)) {
  150. array_push($arr, $row);
  151. }
  152. return $arr;
  153. } catch(PDOException $e){
  154. die('[MenuItem::GetMenuItemsForType] PDO Error: '.$e->getMessage().'trace='.$e->getTraceAsString());
  155. }
  156. }
  157. // gets a menuItem for a specific MenuItemId
  158. public static function GetByMenuItemId($menuItemId){
  159. try{
  160. $db = DB::get();
  161. $q = "SELECT MenuItemId, Name, CssClass, Type,
  162. Url, PageId, Priority, isNested, SiteId, LastModifiedBy, LastModifiedDate
  163. FROM MenuItems WHERE MenuItemId = ?";
  164. $s = $db->prepare($q);
  165. $s->bindParam(1, $menuItemId);
  166. $s->execute();
  167. $row = $s->fetch(PDO::FETCH_ASSOC);
  168. if($row){
  169. return $row;
  170. }
  171. } catch(PDOException $e){
  172. die('[MenuItem::GetByMenuItemId] PDO Error: '.$e->getMessage());
  173. }
  174. }
  175. }
  176. ?>