mode_aqyk_home_navAction.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. <?php
  2. /**
  3. * 此文件是流程模块【home_nav.首页导航】对应控制器接口文件。
  4. */
  5. class mode_aqyk_home_navClassAction extends inputAction{
  6. /**
  7. * 重写函数:保存前处理,主要用于判断是否可以保存
  8. * $table String 对应表名
  9. * $arr Array 表单参数
  10. * $id Int 对应表上记录Id 0添加时,大于0修改时
  11. * $addbo Boolean 是否添加时
  12. * return array('msg'=>'错误提示内容','rows'=> array()) 可返回空字符串,或者数组 rows 是可同时保存到数据库上数组
  13. */
  14. protected function savebefore($table, $arr, $id, $addbo){
  15. }
  16. /**
  17. * 重写函数:保存后处理,主要保存其他表数据
  18. * $table String 对应表名
  19. * $arr Array 表单参数
  20. * $id Int 对应表上记录Id
  21. * $addbo Boolean 是否添加时
  22. */
  23. protected function saveafter($table, $arr, $id, $addbo){
  24. }
  25. private function getselectdatas($rows,&$barr, $pid=NULL, $level=0)
  26. {
  27. foreach($rows as $k=>$rs){
  28. if($rs['parent_id']==$pid){
  29. $str = '';
  30. for($i=0;$i<$level;$i++)$str.='&nbsp;&nbsp;&nbsp;';
  31. if($str!='')$str.='├';
  32. $name = ''.$str.''.$rs['title'].'';
  33. $barr[] = array(
  34. 'name' => $name,
  35. 'value' => $rs['id'],
  36. );
  37. $this->getselectdatas($rows, $barr, $rs['id'], $level+1);
  38. }
  39. }
  40. }
  41. public function getselectdata($lx=NULL)
  42. {
  43. $rows = m('aqyk_home_nav')->getall('1=1','`id`,title,parent_id');
  44. $barr = array();
  45. if($lx==NULL)$barr[] = array(
  46. 'value' => NULL,
  47. 'name' => '最顶级',
  48. );
  49. $this->getselectdatas($rows, $barr, NULL, 0);
  50. return $barr;
  51. }
  52. public function home_navdata()
  53. {
  54. return $this->getselectdata();
  55. }
  56. public function storeafter($table, $rows)
  57. {
  58. $barr = array();
  59. $this->gettreedata($rows, $barr);
  60. return array(
  61. 'rows' => $barr
  62. );
  63. }
  64. //树形结构
  65. public function gettreedata($rows, &$barr, $pid=NULL, $level=1)
  66. {
  67. foreach($rows as $k=>$rs){
  68. if($rs['parent_id']==$pid){
  69. $rs['level'] = $level;
  70. $rs['stotal'] = $this->gettreetotal($rows, $rs['id']);
  71. $barr[] = $rs;
  72. $this->gettreedata($rows, $barr, $rs['id'], $level+1);
  73. }
  74. }
  75. }
  76. public function gettreetotal($rows, $pid)
  77. {
  78. $stotal = 0;
  79. foreach($rows as $k=>$rs){
  80. if($rs['parent_id']==$pid){
  81. $stotal++;
  82. }
  83. }
  84. return $stotal;
  85. }
  86. public function categoryList()
  87. {
  88. $admin = m('admin')->getone("id=$this->adminid");
  89. $comid = $admin['comid'];
  90. $data = m('aqyk_home_nav')->getall("comid=$comid");
  91. if (is_array($data)){
  92. $arr = $this->getLevel($data);
  93. $result = $this->getChilds($arr);
  94. }else{
  95. $result = [];
  96. }
  97. return $result;
  98. }
  99. /**
  100. * 传递一个父级分类ID返回所有子分类
  101. * @param $cate
  102. * @param $pid
  103. * @return array
  104. */
  105. private function getChilds($data, $pid=null)
  106. {
  107. $arr = array();
  108. foreach ($data as $v) {
  109. if ($v['parent_id']==$pid){
  110. $nbsp = '&nbsp;&nbsp;&nbsp;&nbsp;';
  111. $res = str_repeat($nbsp,$v['level']-1);
  112. $value = array("name"=>$res.$v['title'],"value"=>$v['id']);
  113. $arr[] = $value;
  114. $arr = array_merge($arr, $this->getChilds($v['child'], $v['id']));
  115. }
  116. }
  117. return $arr;
  118. }
  119. /**
  120. * 传递一个父级分类ID返回所有子分类
  121. * @param $cate
  122. * @param $pid
  123. * @return array
  124. */
  125. private function getLevel($data, $pid=null,$level = 0)
  126. {
  127. $_arr = [];
  128. foreach ($data as $v) {
  129. if ($v['parent_id'] == $pid) {
  130. $arr = $v;
  131. $arr['level'] = $level+1;
  132. $arr['child'] = $this->getLevel($data, $v['id'],$arr['level']);
  133. $_arr[] = $arr;
  134. }
  135. }
  136. return $_arr;
  137. }
  138. }