/system/core/page_lister.php

https://github.com/fryed/Brick_cms · PHP · 229 lines · 128 code · 67 blank · 34 comment · 20 complexity · 7b9de705c83780c75255e026ac27e664 MD5 · raw file

  1. <?php
  2. //-----BRINGS BACK A LIST OF PAGES-----//
  3. class pageLister extends DBconnect{
  4. //set vars
  5. var $pages;
  6. var $table;
  7. var $maxNo;
  8. var $blogMenu;
  9. var $newsMenu;
  10. var $posts;
  11. var $settingsArray;
  12. var $paging;
  13. public function getPages() {
  14. //get params
  15. $params = $this->getParams();
  16. //get pages from db
  17. $pageArray = DBconnect::queryArray("*","$this->table",$params);
  18. $this->pages = array();
  19. //loop pages and get page image if set
  20. $i = 0;
  21. foreach($pageArray as $page){
  22. //skip '/blog' and '/news'
  23. if($page["url"] != "/news" && $page["url"] != "/blog"){
  24. //only bring max no back
  25. if($this->maxNo){
  26. if($i == $this->maxNo) break;
  27. }
  28. $page["main_image"] = array();
  29. //get page image
  30. if(isset($page["image_id"])){
  31. if($page["image_id"] > -1){
  32. $imgId = $page["image_id"];
  33. $params = "WHERE id = '$imgId'";
  34. $page["main_image"] = DBconnect::query("*","images",$params);
  35. }
  36. }
  37. $this->pages[] = $page;
  38. $i++;
  39. }
  40. }
  41. //handle blog menu list
  42. if($this->blogMenu)
  43. $this->pages = $this->buildBlogMenu();
  44. //handle news menu list
  45. if($this->newsMenu)
  46. $this->pages = $this->buildNewsMenu();
  47. //send back to page
  48. return $this->pages;
  49. }
  50. //work out the amount of pages to show etc
  51. public function getParams(){
  52. //set limit to items brought back paging true
  53. if($this->paging){
  54. //set init limits
  55. $limit1 = 0;
  56. switch($this->table){
  57. case "pages":
  58. $limit2 = $this->settingsArray["max_pages"];
  59. break;
  60. case "blog":
  61. $limit2 = $this->settingsArray["max_blog"];
  62. break;
  63. case "news":
  64. $limit2 = $this->settingsArray["max_news"];
  65. break;
  66. }
  67. //check for posts from paging
  68. if(isset($this->posts["action"])){
  69. switch($this->posts["action"]){
  70. case "next":
  71. $limit1 = $this->posts["limit1"]+$limit2;
  72. $limit2 = $this->posts["limit2"]+$limit2;
  73. break;
  74. case "prev":
  75. $limit1 = $this->posts["limit1"]-$limit2;
  76. $limit2 = $this->posts["limit2"]-$limit2;
  77. break;
  78. }
  79. }
  80. //work out which buttons to show
  81. $prev = true;
  82. $next = true;
  83. if($limit1 == 0)
  84. $prev = false;
  85. $isNext = DBconnect::query("id","$this->table","LIMIT $limit2,$limit2");
  86. if(!is_array($isNext))
  87. $next = false;
  88. //send limits to settings array
  89. $this->settingsArray["paging"] = array();
  90. $this->settingsArray["paging"]["limit1"] = $limit1;
  91. $this->settingsArray["paging"]["limit2"] = $limit2;
  92. $this->settingsArray["paging"]["next"] = $next;
  93. $this->settingsArray["paging"]["prev"] = $prev;
  94. //set params
  95. $params = "LIMIT $limit1,$limit2";
  96. }else{
  97. $params = "";
  98. }
  99. return $params;
  100. }
  101. //build up blog menu
  102. public function buildBlogMenu(){
  103. //get blog cats from db
  104. $catArray = DBconnect::queryArray("*","blog_categories","");
  105. //set blog menu var
  106. $blogMenu = array();
  107. //loop cats and add pages to correct place
  108. $i = 0;
  109. foreach($catArray as $cat){
  110. //build menu
  111. $blogMenu[$i] = array();
  112. $blogMenu[$i]["name"] = $cat["name"];
  113. $blogMenu[$i]["pages"] = array();
  114. //loop pages and assign to cat if cat id matches id
  115. foreach($this->pages as $page){
  116. if($page["category_id"] == $cat["id"])
  117. $blogMenu[$i]["pages"][] = $page;
  118. }
  119. $i++;
  120. }
  121. //send blog menu to page array
  122. return $blogMenu;
  123. }
  124. public function buildNewsMenu(){
  125. //set cat array
  126. $catArray = array();
  127. //get blog cats from db
  128. $createdArray = DBconnect::queryArray("created","news","");
  129. //parse cat array
  130. foreach($createdArray as $cat){
  131. $cat = strtotime($cat["created"]);
  132. $cat = date("F Y",$cat);
  133. $catArray[] = $cat;
  134. }
  135. //strip duplicates from cat array
  136. $catArray = array_unique($catArray);
  137. //set array
  138. $newsMenu = array();
  139. //loop cats and build menu
  140. $i = 0;
  141. foreach($catArray as $cat){
  142. //build menu
  143. $newsMenu[$i] = array();
  144. $newsMenu[$i]["name"] = $cat;
  145. $newsMenu[$i]["pages"] = array();
  146. //loop pages and assign to cat if cat matches created
  147. foreach($this->pages as $page){
  148. $created = strtotime($page["created"]);
  149. $created = date("F Y",$created);
  150. if($created == $cat)
  151. $newsMenu[$i]["pages"][] = $page;
  152. }
  153. $i++;
  154. }
  155. //send to page array
  156. return $newsMenu;
  157. }
  158. public function getSettings(){
  159. return $this->settingsArray;
  160. }
  161. }
  162. ?>