/cms/admin/Lib/Action/CategoryAction.class.php

http://iiccms.googlecode.com/ · PHP · 195 lines · 150 code · 10 blank · 35 comment · 19 complexity · cb6c26ecbf9a7f95ba6f749c7ebc8c87 MD5 · raw file

  1. <?php
  2. class CategoryAction extends GlobalAction
  3. {
  4. protected $dao, $category;
  5. function _initialize()
  6. {
  7. parent::_initialize();
  8. $getData = getCache('Module');
  9. //??????
  10. foreach ((array)$getData as $rw){
  11. if(!in_array($rw['module_name'], array('Menu','Tags','Comment','Admin','Theme','AdminRole','Module','Config','Database','AdminLog','Tools','Label'))){
  12. $data['module'][] = $rw;
  13. }
  14. }
  15. $this->assign($data);
  16. $this->dao = D('Category');
  17. $this->category = $this->dao->Order('display_order DESC,id DESC')->findAll();
  18. }
  19. /**
  20. * ??
  21. *
  22. */
  23. public function index()
  24. {
  25. parent::_checkPermission();
  26. $dataList = getCategory($this->category);
  27. if($dataList != false)
  28. {
  29. $this->assign('dataList',$dataList);
  30. }
  31. parent::_sysLog('index');
  32. $this->display();
  33. }
  34. /**
  35. * ??
  36. *
  37. */
  38. public function insert()
  39. {
  40. parent::_checkPermission('Category_insert');
  41. $dataList = getCategory($this->category);
  42. $parentId = trim($_GET['parentId']);
  43. $this->assign('parentId', $parentId);
  44. $this->assign('dataList', $dataList);
  45. $this->display();
  46. }
  47. /**
  48. * ????
  49. *
  50. */
  51. public function doInsert()
  52. {
  53. parent::_checkPermission('Category_insert');
  54. parent::_setMethod('post');
  55. if($daoCreate = $this->dao->create())
  56. {
  57. //????????????
  58. $this->dao->module = empty($_POST['parent_id']) ? $_POST['module'] : '' ;
  59. $daoAdd = $this->dao->add();
  60. if(false !== $daoAdd)
  61. {
  62. writeCache('Category');
  63. parent::_sysLog('insert', "??:$daoAdd");
  64. parent::_message('success', '????');
  65. }else
  66. {
  67. parent::_message('error', '????');
  68. }
  69. }else
  70. {
  71. parent::_message('error', $this->dao->getError());
  72. }
  73. }
  74. /**
  75. * ??
  76. *
  77. */
  78. public function modify()
  79. {
  80. parent::_checkPermission('Category_modify');
  81. $item = intval($_GET['id']);
  82. $record = $this->dao->Where('id='.$item)->find();
  83. if(empty($item) || empty($record)) parent::_message('error', '?????');
  84. $dataList = getCategory($this->category);
  85. $this->assign('vo', $record);
  86. $this->assign('dataList', $dataList);
  87. $this->display();
  88. }
  89. /**
  90. * ????
  91. *
  92. */
  93. public function doModify()
  94. {
  95. parent::_checkPermission('Category_modify');
  96. parent::_setMethod('post');
  97. $item = intval($_POST['id']);
  98. $parentId = intval($_POST['parent_id']);
  99. empty($item) && parent::_message('error', '?????');
  100. //??????????
  101. $this->parentTrue($item, $parentId);
  102. if($daoSave = $this->dao->create())
  103. {
  104. //????????????
  105. $this->dao->module = empty($_POST['parent_id']) ? $_POST['module'] : '' ;
  106. $daoSave = $this->dao->save();
  107. if(false !== $daoSave)
  108. {
  109. writeCache('Category');
  110. parent::_sysLog('modify', "??:$item");
  111. parent::_message('success', '????');
  112. }else
  113. {
  114. parent::_message('error', '????');
  115. }
  116. }else
  117. {
  118. parent::_message('error', $this->dao->getError());
  119. }
  120. }
  121. /**
  122. * ??????????
  123. * ???????????????????
  124. * @param unknown_type $item
  125. * @param unknown_type $parentId
  126. */
  127. public function parentTrue($item = 0, $parentId = 0)
  128. {
  129. $subCategory = getCategory($this->category, $item);
  130. if(empty($subCategory)){
  131. $getCategory[] = $item;
  132. }else{
  133. foreach ((array)$subCategory as $row){
  134. $getCategory[] = $row['id'];
  135. }
  136. //???ID??????
  137. array_push($getCategory, $item);
  138. }
  139. if (in_array($parentId, $getCategory)) parent::_message('error', '??????????????????????????!', 0, 5);
  140. }
  141. /**
  142. * ????
  143. *
  144. */
  145. public function doCommand()
  146. {
  147. parent::_checkPermission('Category_command');
  148. if(getMethod() == 'get'){
  149. $operate = trim($_GET['operate']);
  150. }elseif(getMethod() == 'post'){
  151. $operate = trim($_POST['operate']);
  152. }else{
  153. parent::_message('error', '???POST,GET??');
  154. }
  155. switch ($operate){
  156. case 'delete':
  157. $idArr = $_POST['id'];
  158. if(!empty($idArr)){
  159. foreach ((array)$idArr as $row){
  160. $check = $this->dao->Where('id='.$row)->find();
  161. if($check['protected'] == 1){
  162. parent::_message('error', "{$row} ??????????????????????", 0, 5);
  163. }else{
  164. $subCategory = getCategory($this->category, $row);
  165. foreach ((array)$subCategory as $subId){
  166. $imlodeSub[] = $subId['id'];
  167. }
  168. $implodeArr = implode(',', $imlodeSub);
  169. $deleteArr = empty($implodeArr) ? $row : $implodeArr.','.$row;
  170. $this->dao->Where("id IN({$deleteArr})")->delete();
  171. self::_sysLog('delete', "??: {$deleteArr}");
  172. parent::_message('success', "{$deleteArr} ????");
  173. }
  174. }
  175. }else {
  176. parent::_message('error', '?????????') ;
  177. }
  178. break;
  179. case 'setStatus': parent::_setStatus('set');break;
  180. case 'unSetStatus': parent::_setStatus('unset');break;
  181. case 'update': parent::_batchModify(0, $_POST, array('display_order'), __URL__, 'Category', 'display_order DESC,id DESC');break;
  182. default: parent::_message('error', '??????') ;
  183. }
  184. }
  185. }