PageRenderTime 40ms CodeModel.GetById 13ms RepoModel.GetById 0ms app.codeStats 0ms

/addons/model/UserGroupLinkModel.class.php

https://github.com/cxc222/weibo
PHP | 113 lines | 82 code | 6 blank | 25 comment | 13 complexity | 7afc938844292adc80af1a285063883b MD5 | raw file
Possible License(s): LGPL-2.1
  1. <?php
  2. /**
  3. * 用户组关联模型 - 数据对象模型
  4. * @author jason <yangjs17@yeah.net>
  5. * @version TS3.0
  6. */
  7. class UserGroupLinkModel extends Model {
  8. protected $tableName = 'user_group_link';
  9. protected $fields = array(0 =>'id',1=>'uid',2=>'user_group_id');
  10. /**
  11. * 转移用户的用户组
  12. * @param string $uids 用户UID,多个用“,”分割
  13. * @param string $user_group_id 用户组ID,多个用“,”分割
  14. * @return boolean 是否转移成功
  15. */
  16. public function domoveUsergroup($uids, $user_group_id) {
  17. // 验证数据
  18. if(empty($uids) && empty($user_group_id)) {
  19. $this->error = L('PUBLIC_USER_GROUP_EMPTY'); // 用户组或用户不能为空
  20. return false;
  21. }
  22. $uids = explode(',', $uids);
  23. $user_group_id = explode(',', $user_group_id);
  24. $uids = array_unique(array_filter($uids));
  25. $user_group_id = array_unique(array_filter($user_group_id));
  26. if(!$uids || !$user_group_id) {
  27. return false;
  28. }
  29. $map['uid'] = array('IN', $uids);
  30. $this->where($map)->delete();
  31. foreach($uids as $v) {
  32. $save = array();
  33. $save['uid'] = $v;
  34. foreach($user_group_id as $gv){
  35. $save['user_group_id'] = $gv;
  36. $this->add($save);
  37. }
  38. // 清除权限缓存
  39. model('Cache')->rm('perm_user_'.$v);
  40. model ( 'Cache' )->rm ( 'user_group_' . $v );
  41. }
  42. model('User')->cleanCache($uids);
  43. return true;
  44. }
  45. /**
  46. * 获取用户的用户组信息
  47. * @param array $uids 用户UID数组
  48. * @return array 用户的用户组信息
  49. */
  50. public function getUserGroup($uids) {
  51. $uids = !is_array($uids) ? explode(',', $uids) : $uids;
  52. $uids = array_unique(array_filter($uids));
  53. if(!$uids) return false;
  54. $return = array();
  55. foreach ($uids as $uid){
  56. $return[$uid] = model ( 'Cache' )->get ( 'user_group_' . $uid);
  57. if($return[$uid]==false){
  58. $map['uid'] = $uid;
  59. $list = $this->where($map)->findAll();
  60. $return[$uid] = getSubByKey($list, 'user_group_id');
  61. model ( 'Cache' )->set ( 'user_group_' . $uid, $return[$uid]);
  62. }
  63. }
  64. return $return;
  65. }
  66. /**
  67. * 获取用户所在用户组详细信息
  68. * @param array $uids 用户UID数组
  69. * @return array 用户的用户组详细信息
  70. */
  71. public function getUserGroupData($uids){
  72. $uids = !is_array($uids) ? explode(',', $uids) : $uids;
  73. $uids = array_unique(array_filter($uids));
  74. if(!$uids) return false;
  75. $userGids = $this->getUserGroup($uids);
  76. //return $userGids;exit;
  77. $uresult = array();
  78. foreach ( $userGids as $ug){
  79. if ( $uresult ){
  80. $ug && $uresult = array_merge( $uresult , $ug );
  81. } else {
  82. $uresult = $ug;
  83. }
  84. }
  85. //把所有用户组信息查询出来
  86. $ugresult = model('UserGroup')->getUserGroupByGids(array_unique($uresult));
  87. $groupresult = array();
  88. foreach ( $ugresult as $ur ){
  89. $groupresult[$ur['user_group_id']] = $ur;
  90. }
  91. foreach($userGids as $k=>$v){
  92. $ugroup = array();
  93. foreach ( $userGids[$k] as $userg){
  94. $ugroup[] = $groupresult[$userg];
  95. }
  96. $userGroupData[$k] = $ugroup;
  97. foreach($userGroupData[$k] as $key => $value) {
  98. if(isset($value['user_group_icon']) && $value['user_group_icon'] == -1) {
  99. unset($userGroupData[$k][$key]);
  100. continue;
  101. }
  102. $userGroupData[$k][$key]['user_group_icon_url'] = THEME_PUBLIC_URL.'/image/usergroup/'.$value['user_group_icon'];
  103. }
  104. }
  105. return $userGroupData;
  106. }
  107. }