PageRenderTime 51ms CodeModel.GetById 25ms RepoModel.GetById 1ms app.codeStats 0ms

/protected/modules/super/controllers/UserController.php

https://github.com/duofei/dawuweiba
PHP | 227 lines | 181 code | 23 blank | 23 comment | 24 complexity | 0587422a8ef50b1ddececd460d1b8e39 MD5 | raw file
  1. <?php
  2. class UserController extends Controller
  3. {
  4. private function _getPages($criteria)
  5. {
  6. $pages = new CPagination(User::model()->count($criteria));
  7. $pages->pageSize = 20;
  8. $pages->applyLimit($criteria);
  9. return $pages;
  10. }
  11. /**
  12. * 用户列表
  13. */
  14. public function actionList()
  15. {
  16. $condition = new CDbCriteria();
  17. $condition->order = 'state desc, id desc';
  18. $pages = $this->_getPages($condition);
  19. $user = User::model()->findAll($condition);
  20. $this->render('list', array('user'=>$user, 'pages'=>$pages));
  21. }
  22. /**
  23. * 禁用户列表
  24. */
  25. public function actionDenyuser()
  26. {
  27. $condition = new CDbCriteria();
  28. $condition->addColumnCondition(array('state' => STATE_DISABLED));
  29. $condition->order = 'id desc';
  30. $pages = $this->_getPages($condition);
  31. $user = User::model()->findAll($condition);
  32. $this->render('denyuser', array('user'=>$user, 'pages'=>$pages));
  33. }
  34. /**
  35. * 管理角色
  36. */
  37. public function actionGroup()
  38. {
  39. $roles = auth()->roles;
  40. $this->render('group', array('roles' => $roles));
  41. }
  42. /**
  43. * 更改状态
  44. */
  45. public function actionState($id = 0, $state = 0)
  46. {
  47. $user_id = (int)$id;
  48. if ($user_id){
  49. $user = User::model()->findByPk($user_id);
  50. $user->state = (int)$state;
  51. if(!$user->save()) {
  52. user()->setFlash('errorSummary',CHtml::errorSummary($user));
  53. }
  54. $this->redirect(url('super/user/list'));
  55. }
  56. }
  57. public function actionSearch()
  58. {
  59. foreach ((array)$_GET['User'] as $key=>$val){
  60. $user[$key] = strip_tags(trim($val));
  61. }
  62. if($user) {
  63. $start_time = strtotime($user['create_time_start']);
  64. $end_time = strtotime($user['create_time_end']);
  65. $end_time = strtotime('next Day', $end_time);
  66. $condition = new CDbCriteria();
  67. if ($user['username'] != '') {
  68. $condition->addSearchCondition('username', $user['username']);
  69. }
  70. if ($user['create_time_start']) {
  71. $condition->addCondition('create_time>=' . $start_time);
  72. }
  73. if ($user['create_time_end']) {
  74. $condition->addCondition('create_time<=' . $end_time);
  75. }
  76. if ($user['state'] != '') {
  77. $condition->addColumnCondition(array('state' => $user['state']));
  78. }
  79. $condition->order = 'state desc, id desc';
  80. $pages = $this->_getPages($condition);
  81. $users = User::model()->findAll($condition);
  82. $this->render('search', array('users' => $users, 'user'=>$user, 'pages' => $pages));
  83. }else{
  84. $this->render('search', array());
  85. }
  86. }
  87. public function actionProfile($id = 0)
  88. {
  89. if(app()->request->isPostRequest && isset($_POST['User'])) {
  90. $user_id = (int)$_POST['id'];
  91. $user_info = User::model()->findByPk($user_id);
  92. $user_info->attributes = $_POST['User'];
  93. $user_info->password = md5($_POST['User']['clear_password']);
  94. if(!$user_info->save()) {
  95. user()->setFlash('errorSummary',CHtml::errorSummary($user_info));
  96. }
  97. $this->redirect(url('super/user/list'));
  98. }else {
  99. $condition = new CDbCriteria();
  100. $district = District::model()->findAll($condition);
  101. $district = CHtml::listData($district, 'id', 'name');
  102. $user_id = (int)$id;
  103. $user_info = User::model()->findByPk($user_id);
  104. $this->render('profile', array('user_info'=>$user_info, 'district'=>$district));
  105. }
  106. }
  107. public function actionInfo($id = 0)
  108. {
  109. $user_id = (int)$id;
  110. $user_info = User::model()->findByPk($user_id);
  111. $this->render('info', array('user_info'=>$user_info));
  112. }
  113. public function actionIntegral($id = 0)
  114. {
  115. if(app()->request->isPostRequest && isset($_POST['id'])) {
  116. $user_id = (int)$_POST['id'];
  117. $user_info = User::model()->findByPk($user_id);
  118. if ($_POST['integral']<0 && $user_info->integral<abs($_POST['integral'])) {
  119. user()->setFlash('errorSummary','扣除的分数不能小于用户已有分数!');
  120. $this->render('integral', array('user_info'=>$user_info));exit;
  121. }
  122. $integral = new UserIntegralLog();
  123. $integral->user_id = $user_id;
  124. $integral->integral = $_POST['integral'];
  125. $integral->remark = $_POST['remark'];
  126. $integral->source = '12';
  127. if(!$integral->save()) {
  128. user()->setFlash('errorSummary',CHtml::errorSummary($integral));
  129. $this->render('integral', array('user_info'=>$user_info));
  130. }
  131. $this->redirect(url('super/user/list'));
  132. }else {
  133. $user_id = (int)$id;
  134. $user_info = User::model()->findByPk($user_id);
  135. $this->render('integral', array('user_info'=>$user_info));
  136. }
  137. }
  138. /**
  139. * 管理人员
  140. */
  141. public function actionTeam()
  142. {
  143. $criteria = new CDbCriteria();
  144. $criteria->addColumnCondition(array('super_admin' => STATE_ENABLED));
  145. $managers = User::model()->findAll($criteria);
  146. $roles = array();
  147. foreach ($managers as $m) {
  148. $roles[$m->id] = current(auth()->getRoles($m->id));
  149. }
  150. $this->render('team', array(
  151. 'managers' => $managers,
  152. 'roles' => $roles
  153. ));
  154. }
  155. /**
  156. * 删除管理人员
  157. */
  158. public function actionRemoveManager($id = 0)
  159. {
  160. $id = (int)$id;
  161. $user = User::model()->findByPk($id);
  162. if(!$user) {
  163. throw new CException('该用户不存在', 0);
  164. }
  165. $user->super_admin = STATE_DISABLED;
  166. if($user->save()) {
  167. //AdminLog::saveManageLog('删除管理人员(' . $user->username . ')');
  168. auth()->revoke(key(auth()->getRoles($id)), $id);
  169. }
  170. $this->redirect('/super/user/team');
  171. }
  172. /**
  173. * 设置管理人员
  174. */
  175. public function actionSetmanager($id = 0)
  176. {
  177. $id = (int)$id;
  178. $user = User::model()->findByPk($id);
  179. if(!$user) {
  180. throw new CException('该用户不存在', 0);
  181. }
  182. $authItem = current(auth()->getRoles($id));
  183. $roles = array(
  184. 'SuperAdmin' => '超级管理员',
  185. 'SuperEditor' => '编辑'
  186. );
  187. if(app()->request->isPostRequest && isset($_POST['role'])) {
  188. if($authItem) {
  189. auth()->revoke(key(auth()->getRoles($id)), $id);
  190. }
  191. $user->super_admin = STATE_ENABLED;
  192. if($user->save()) {
  193. //AdminLog::saveManageLog('设置(' . $user->username . ')成为(' . $roles[$_POST['role']] . ')');
  194. auth()->assign($_POST['role'], $id);
  195. $this->redirect('/super/user/team');
  196. }
  197. }
  198. $this->render('setmanager', array(
  199. 'user' => $user,
  200. 'authItem' => $authItem,
  201. 'roles' => $roles
  202. ));
  203. }
  204. }