示例#1
0
 /**
  * 静态方法, 单例统一访问入口
  * @return object  返回对象的唯一实例
  */
 public static function getInstance()
 {
     if (is_null(self::$_instance) || !isset(self::$_instance)) {
         self::$_instance = new self();
     }
     return self::$_instance;
 }
示例#2
0
 public function getFriends($pageSize, $page)
 {
     $userId = $this->user["id"];
     $userCount = MiniUser::getInstance()->getEnableCount() - 1;
     $items = MiniUser::getInstance()->getPageList($userId, "-id", $pageSize, ($page - 1) * $pageSize);
     $users = array();
     foreach ($items as $item) {
         $friend = array();
         $friend["id"] = $item["id"];
         $friend["nick"] = $item["nick"];
         $friend["name"] = $item["user_name"];
         $friend["avatar"] = $item['avatar'];
         $arr = MiniUserGroupRelation::getInstance()->findUserGroup($userId, $item["id"]);
         //找到好友对应的群组(这里会关联到非当前用户新建的用户组,下面解决此问题)
         $ownerGroup = MiniGroup::getInstance()->getList($userId);
         $ownerGroupList = $ownerGroup['list'];
         //找到当前用户拥有的群组
         $result = array();
         foreach ($arr as $brr) {
             //遍历好友的群组,
             if (in_array($brr, $ownerGroupList)) {
                 //找出其群组与当前用户相同的则放入该用户的user_group,就是此处的$result
                 array_push($result, $brr);
             }
         }
         $friend["user_group"] = $result;
         array_push($users, $friend);
     }
     $data = array();
     $data["count"] = $userCount;
     $data["users"] = $users;
     return $data;
 }
示例#3
0
 public function getPermission($path, $userId)
 {
     $privilegeLength = 9;
     //权限长度 后期更改则做相应调整
     $userInGroups = MiniUserGroupRelation::getInstance()->getByUserId($userId);
     //用户所在的部门列表,查表user_group_relation
     if (count($userInGroups) > 0) {
         //说明该用户被其他用户分配到其群组中
         //寻找该用户所在的组有无权限,有权限则说明对应的权限有共享文件
         $privilegeArr = array();
         //一个用户同一个被共享文件对应多个群组权限集合
         foreach ($userInGroups as $userInGroup) {
             $groupId = $userInGroup['group_id'];
             $group = MiniGroup::getInstance()->getById($groupId);
             if ($group['user_id'] != -1) {
                 //表示该组为群组
                 $groupPrivilege = MiniGroupPrivilege::getInstance()->getSpecifyPrivilege($groupId, $path);
                 if (!empty($groupPrivilege)) {
                     array_push($privilegeArr, $groupPrivilege);
                 }
             }
         }
         if (count($privilegeArr) > 0) {
             $permission = '';
             for ($i = 0; $i < $privilegeLength; $i++) {
                 foreach ($privilegeArr as $privilege) {
                     $can = false;
                     $value = substr($privilege['permission'], $i, 1);
                     if ($value == '1') {
                         $can = true;
                         break;
                     }
                 }
                 if ($can) {
                     $permission .= '1';
                 } else {
                     $permission .= '0';
                 }
             }
             return $permission;
         }
     }
     return null;
 }
示例#4
0
 /**
  * 存储部门信息,以及用户与部门的关系
  */
 private function saveData($userName, $departmentId)
 {
     $user = MiniUser::getInstance()->getUserByName($userName);
     $userGroupRelations = MiniUserGroupRelation::getInstance()->getByUserId($user['id']);
     $isExist = false;
     //判断用户是否已经被导入,存在则修改
     if (!empty($userGroupRelations)) {
         foreach ($userGroupRelations as $userGroupRelation) {
             $group = MiniGroup::getInstance()->getById($userGroupRelation['group_id']);
             if (!empty($group)) {
                 if ($group['user_id'] > 0) {
                     continue;
                 } else {
                     $isExist = true;
                     break;
                 }
             }
         }
     }
     $group = MiniGroup::getInstance()->findById($departmentId);
     if ($isExist) {
         MiniUserGroupRelation::getInstance()->update($user['id'], $group['id']);
     } else {
         MiniUserGroupRelation::getInstance()->create($user['id'], $group['id']);
     }
 }
示例#5
0
 /**
  * 获得拥有权限的用户列表
  */
 public function getPrivilegeList($filePath)
 {
     //获得绝对路径
     $privileges = MiniUserPrivilege::getInstance()->getPrivilegeList($filePath);
     $groupPrivileges = MiniGroupPrivilege::getInstance()->getPrivilegeList($filePath);
     $data = array();
     foreach ($privileges as $item) {
         $user = MiniUser::getInstance()->getUser($item['user_id']);
         $privilege = array();
         $privilege['id'] = $user['user_id'];
         $privilege['name'] = $user['user_name'];
         $privilege['nick'] = $user['nick'];
         $privilege['avatar'] = $user['avatar'];
         $privilege['user_status'] = $user['user_status'];
         $permission = $item['permission'];
         $readValue = substr($permission, 0, 1);
         $modifyValue = substr($permission, 1);
         $dirCreateValue = substr($permission, 1, 1);
         $dirRenameValue = substr($permission, 2, 1);
         $dirDelValue = substr($permission, 3, 1);
         $fileUploadValue = substr($permission, 4, 1);
         $contentValue = substr($permission, 5, 1);
         $fileRenameValue = substr($permission, 6, 1);
         $fileDelValue = substr($permission, 7, 1);
         $previewValue = substr($permission, 8, 1);
         if ($readValue == '1') {
             //read权限 与js格式转化为一致
             $privilege['view'] = true;
         } else {
             $privilege['view'] = false;
         }
         if ($dirCreateValue == '1') {
             //dir_create权限 与js格式转化为一致
             $privilege['dir_create'] = true;
         } else {
             $privilege['dir_create'] = false;
         }
         if ($dirRenameValue == '1') {
             //dir_rename权限 与js格式转化为一致
             $privilege['dir_rename'] = true;
         } else {
             $privilege['dir_rename'] = false;
         }
         if ($dirDelValue == '1') {
             //dir_del权限 与js格式转化为一致
             $privilege['dir_delete'] = true;
         } else {
             $privilege['dir_delete'] = false;
         }
         if ($fileUploadValue == '1') {
             //file_upload权限 与js格式转化为一致
             $privilege['file_upload'] = true;
         } else {
             $privilege['file_upload'] = false;
         }
         if ($fileRenameValue == '1') {
             //file_rename权限 与js格式转化为一致
             $privilege['file_rename'] = true;
         } else {
             $privilege['file_rename'] = false;
         }
         if ($contentValue == '1') {
             //content权限 与js格式转化为一致
             $privilege['file_edit'] = true;
         } else {
             $privilege['file_edit'] = false;
         }
         if ($fileDelValue == '1') {
             //file_del权限 与js格式转化为一致
             $privilege['file_delete'] = true;
         } else {
             $privilege['file_delete'] = false;
         }
         if ($previewValue == '1') {
             //preview权限 与js格式转化为一致
             $privilege['download'] = true;
         } else {
             $privilege['download'] = false;
         }
         if ($modifyValue == '11111111') {
             $privilege['modified'] = true;
         } else {
             $privilege['modified'] = false;
         }
         $privilege['type'] = "0";
         array_push($data, $privilege);
     }
     foreach ($groupPrivileges as $item) {
         $group = MiniGroup::getInstance()->getById($item['group_id']);
         $privilege = array();
         $privilege['id'] = $item['group_id'];
         $privilege['name'] = $group['group_name'];
         $privilege['nick'] = $group['group_name'];
         $privilege['avatar'] = MiniHttp::getMiniHost() . "static/images/icon_group.png";
         $permission = $item['permission'];
         $readValue = substr($permission, 0, 1);
         $modifyValue = substr($permission, 1);
         $dirCreateValue = substr($permission, 1, 1);
         $dirRenameValue = substr($permission, 2, 1);
         $dirDelValue = substr($permission, 3, 1);
         $fileUploadValue = substr($permission, 4, 1);
         $contentValue = substr($permission, 5, 1);
         $fileRenameValue = substr($permission, 6, 1);
         $fileDelValue = substr($permission, 7, 1);
         $previewValue = substr($permission, 8, 1);
         if ($readValue == '1') {
             //read权限 与js格式转化为一致
             $privilege['view'] = true;
         } else {
             $privilege['view'] = false;
         }
         if ($dirCreateValue == '1') {
             //dir_create权限 与js格式转化为一致
             $privilege['dir_create'] = true;
         } else {
             $privilege['dir_create'] = false;
         }
         if ($dirRenameValue == '1') {
             //dir_rename权限 与js格式转化为一致
             $privilege['dir_rename'] = true;
         } else {
             $privilege['dir_rename'] = false;
         }
         if ($dirDelValue == '1') {
             //dir_del权限 与js格式转化为一致
             $privilege['dir_delete'] = true;
         } else {
             $privilege['dir_delete'] = false;
         }
         if ($fileUploadValue == '1') {
             //file_upload权限 与js格式转化为一致
             $privilege['file_upload'] = true;
         } else {
             $privilege['file_upload'] = false;
         }
         if ($fileRenameValue == '1') {
             //file_rename权限 与js格式转化为一致
             $privilege['file_rename'] = true;
         } else {
             $privilege['file_rename'] = false;
         }
         if ($contentValue == '1') {
             //content权限 与js格式转化为一致
             $privilege['file_edit'] = true;
         } else {
             $privilege['file_edit'] = false;
         }
         if ($fileDelValue == '1') {
             //file_del权限 与js格式转化为一致
             $privilege['file_delete'] = true;
         } else {
             $privilege['file_delete'] = false;
         }
         if ($previewValue == '1') {
             //preview权限 与js格式转化为一致
             $privilege['download'] = true;
         } else {
             $privilege['download'] = false;
         }
         if ($modifyValue == '11111111') {
             $privilege['modified'] = true;
         } else {
             $privilege['modified'] = false;
         }
         $privilege['type'] = "1";
         array_push($data, $privilege);
     }
     return $data;
 }
示例#6
0
 /**
  * 群组更名
  */
 public function rename($oldGroupName, $newGroupName)
 {
     $user = $this->user;
     $userId = $user['user_id'];
     return MiniGroup::getInstance()->rename($oldGroupName, $newGroupName, $userId);
 }
 /**
  * 根据userId获取部门
  */
 public function getDepartment($userId)
 {
     $relations = $this->getByUserId($userId);
     if (empty($relations)) {
         return NULL;
     }
     foreach ($relations as $relation) {
         $group = MiniGroup::getInstance()->getById($relation['group_id']);
         if ($group['user_id'] == -1) {
             return $group;
         }
     }
     return NULL;
 }
示例#8
0
 /**
  * 判断目录是否可发起共享
  * 递归查询父目录file_type情况,file_type=1时返回false,file_type==2||3时返回true
  */
 public function getFolderPrivilege($currentUserId, $file)
 {
     $filePath = $file['file_path'];
     $fileType = (int) $file['file_type'];
     //被共享目录本身可以修改和删除
     $privilege = array('resource.read' => 1, 'folder.create' => 1, 'folder.rename' => 1, 'folder.delete' => 1, 'file.create' => 1, 'file.modify' => 1, 'file.rename' => 1, 'file.delete' => 1, 'permission.grant' => 1, 'can_set_share' => 1);
     if ($fileType == 3) {
         $parentPath = $file['file_path'];
         //当用户,群组与部门中的用户权限出现重复时,获取最小部门的权限,顺序为用户,群组,部门
         $userPrivilege = MiniUserPrivilege::getInstance()->getSpecifyPrivilege($currentUserId, $parentPath);
         if (empty($userPrivilege)) {
             $userGroupRelations = MiniUserGroupRelation::getInstance()->getByUserId($currentUserId);
             if (count($userGroupRelations) > 1) {
                 //说明用户对应了群组和部门,
                 $groupIdsArr = array();
                 //获取群组id
                 foreach ($userGroupRelations as $userGroupRelation) {
                     $group = MiniGroup::getInstance()->findById($userGroupRelation['group_id']);
                     if ($group['user_id'] != -1) {
                         array_push($groupIdsArr, $userGroupRelation['group_id']);
                     } else {
                         $departmentId = $userGroupRelation['group_id'];
                     }
                 }
                 //将所有群组的权限放入数组
                 $permissionArr = array();
                 foreach ($groupIdsArr as $groupId) {
                     $privilege_0 = MiniGroupPrivilege::getInstance()->getSpecifyPrivilege($groupId, $parentPath);
                     if (!empty($privilege_0)) {
                         array_push($permissionArr, $privilege_0['permission']);
                     }
                 }
                 //拼接群组中权限的最大值,如果为空则为空字符串
                 $permission = "";
                 if (count($permissionArr) > 0) {
                     for ($j = 0; $j < 10; $j++) {
                         $isHighestAuthority = false;
                         foreach ($permissionArr as $per) {
                             if ($per[$j] == 1) {
                                 $isHighestAuthority = true;
                                 break;
                             }
                         }
                         if ($isHighestAuthority) {
                             $permission .= "1";
                         } else {
                             $permission .= "0";
                         }
                     }
                 }
                 if ($permission == "") {
                     $groupPrivilege = MiniGroupPrivilege::getInstance()->getSpecifyPrivilege($departmentId, $parentPath);
                     if (empty($groupPrivilege)) {
                         $groupPrivilege = MiniGroupPrivilege::getInstance()->getGroupPrivilege($filePath, $departmentId);
                     }
                     $permission = $groupPrivilege['permission'];
                 }
             } else {
                 $groupId = $userGroupRelations[0]['group_id'];
                 $groupPrivilege = MiniGroupPrivilege::getInstance()->getSpecifyPrivilege($groupId, $parentPath);
                 if (empty($groupPrivilege)) {
                     $groupPrivilege = MiniGroupPrivilege::getInstance()->getGroupPrivilege($filePath, $groupId);
                 }
                 $permission = $groupPrivilege['permission'];
             }
         } else {
             $permission = $userPrivilege['permission'];
         }
         for ($i = 0; $i < strlen($permission); $i++) {
             $privilege['resource.read'] = (int) $permission[0];
             $privilege['folder.create'] = (int) $permission[1];
             $privilege['folder.rename'] = (int) $permission[2];
             $privilege['folder.delete'] = (int) $permission[3];
             $privilege['file.create'] = (int) $permission[4];
             $privilege['file.modify'] = (int) $permission[5];
             $privilege['file.rename'] = (int) $permission[6];
             $privilege['file.delete'] = (int) $permission[7];
             $privilege['permission.grant'] = (int) $permission[8];
             $privilege["can_set_share"] = 0;
         }
     }
     if ($fileType == 1) {
         $isShared = false;
         $userId = $file['user_id'];
         //判断下级目录是否有共享目录
         $filePath = $file['file_path'];
         $children = MiniFile::getInstance()->getShowChildrenByPath($currentUserId, $filePath);
         $userGroupRelation = MiniUserGroupRelation::getInstance()->getByUserId($userId);
         $groupId = $userGroupRelation['group_id'];
         $arr = array();
         array_push($arr, $groupId);
         foreach ($children as $child) {
             $childFilePath = $child['file_path'];
             if ($childFilePath == $filePath) {
                 continue;
             }
             $file = MiniFile::getInstance()->getByFilePath($childFilePath);
             if ($file['file_type'] == 2) {
                 $isShared = true;
                 break;
             }
         }
         if ($isShared) {
             //子目录已经共享则不能二次共享
             $privilege["can_set_share"] = 0;
         } else {
             //判断上级目录是否有共享目录
             $arr = explode('/', $filePath);
             $parentPath = "/" . $userId;
             for ($i = 2; $i < count($arr); $i++) {
                 $parentPath = $parentPath . "/" . $arr[$i];
                 $file = MiniFile::getInstance()->getByFilePath($parentPath);
                 if ($file['file_type'] == 2) {
                     $privilege["can_set_share"] = 0;
                 }
             }
         }
     }
     return $privilege;
 }
示例#9
0
 /**
  * 查询未分组的用户
  */
 public function unbindUsers($offset, $limit)
 {
     $items = UserGroupRelation::model()->findAll();
     $value = array();
     if (isset($items)) {
         foreach ($items as $item) {
             $group = MiniGroup::getInstance()->findById($item->group_id);
             if (isset($group)) {
                 if ($group['user_id'] > 0) {
                     continue;
                 }
             }
             $value[] = $item->user_id;
         }
     }
     $criteria = new CDbCriteria();
     $criteria->addNotInCondition('id', $value);
     $count = User::model()->count($criteria);
     $criteria->limit = $limit;
     $criteria->offset = $offset;
     $users = User::model()->findAll($criteria);
     $data = array();
     $data['users'] = $this->db2list($users);
     $data['total'] = $count;
     return $data;
 }
示例#10
0
 public function getAllSharedPath($userId)
 {
     $userPrivileges = MiniUserPrivilege::getInstance()->getByUserId($userId);
     $filePaths = array();
     foreach ($userPrivileges as $userPrivilege) {
         array_push($filePaths, $userPrivilege['file_path']);
     }
     $groupPrivileges = MiniGroupPrivilege::getInstance()->getAllGroups();
     $publicPrivileges = MiniGroupPrivilege::getInstance()->getPublic();
     foreach ($publicPrivileges as $publicPrivilege) {
         array_push($filePaths, $publicPrivilege['file_path']);
     }
     $groupIds = array();
     foreach ($groupPrivileges as $groupPrivilege) {
         array_push($groupIds, $groupPrivilege['group_id']);
     }
     $groupIdsArr = array();
     $userGroupRelations = MiniUserGroupRelation::getInstance()->findUserGroup($userId);
     if (isset($userGroupRelations)) {
         foreach ($userGroupRelations as $userRelation) {
             $groupId = $userRelation['id'];
             $arr = array();
             array_push($arr, $groupId);
             $result = MiniGroup::getInstance()->findById($groupId);
             if ($result['user_id'] > 0) {
                 array_push($groupIdsArr, $groupId);
             } else {
                 $ids = $this->getGroupIds($groupId, $arr);
             }
         }
         array_splice($groupIdsArr, 0, 0, $ids);
         $commonGroupIds = array_merge($groupIdsArr, $groupIds);
         foreach ($commonGroupIds as $commonGroupId) {
             $groupInfos = MiniGroupPrivilege::getInstance()->getByGroupId($commonGroupId);
             foreach ($groupInfos as $groupInfo) {
                 $paths[] = $groupInfo['file_path'];
             }
         }
         if ($paths) {
             array_splice($filePaths, 0, 0, $paths);
         }
     }
     $paths = array();
     $filePaths = array_unique($filePaths);
     foreach ($filePaths as $filePath) {
         $result = MiniFile::getInstance()->getByPath($filePath);
         if (count($result) == 0) {
             continue;
         }
         //当共享文件为共享者的时候进行过滤
         $arr = explode("/", $filePath);
         $userId = $this->user['id'];
         $slaveId = $arr[1];
         if ($slaveId == $userId) {
             continue;
         }
         $fileBiz = new FileBiz();
         $canRead = $fileBiz->privilege($filePath);
         if (!$canRead) {
             continue;
         }
         $paths[] = $filePath;
     }
     return $paths;
 }
示例#11
0
 public function saveUser($item, $departmentId)
 {
     $errorCount = 0;
     $errorName = array();
     for ($i = 1; $i < count($item); $i++) {
         if (strlen(trim($item[$i])) == 0) {
             continue;
         }
         $user = MiniUser::getInstance()->getUserByName($item[$i]);
         if (empty($user)) {
             $errorCount++;
             $errorName[] = $item[$i];
             continue;
         }
         $userGroupRelations = MiniUserGroupRelation::getInstance()->getByUserId($user['id']);
         $isExist = false;
         //判断用户是否已经被导入,存在则修改
         if (!empty($userGroupRelations)) {
             foreach ($userGroupRelations as $userGroupRelation) {
                 $group = MiniGroup::getInstance()->getById($userGroupRelation['group_id']);
                 if (!empty($group)) {
                     if ($group['user_id'] > 0) {
                         continue;
                     } else {
                         $isExist = true;
                         break;
                     }
                 }
             }
         }
         $group = MiniGroup::getInstance()->findById($departmentId);
         if ($isExist) {
             MiniUserGroupRelation::getInstance()->update($user['id'], $group['id']);
         } else {
             MiniUserGroupRelation::getInstance()->create($user['id'], $group['id']);
         }
     }
     if ($errorCount > 0) {
         $data[] = "该用户不存在,您可以先导入用户,再进行添加";
         $data[] = $item[0];
         $data[] = $errorName;
         $this->errorList[] = $data;
     }
 }