public function lists() { $user = User::auth(); // $data = Request::all(); $pid = intval($data['pid']); // $permission = 1000; if ($pid > 0) { File::permissionFind($pid, 0, $permission); $builder = File::wherePid($pid); } else { $builder = File::whereUserid($user->userid); } // $array = $builder->take(500)->get()->toArray(); foreach ($array as &$item) { $item['permission'] = $permission; } // if ($pid > 0) { // 遍历获取父级 while ($pid > 0) { $file = File::whereId($pid)->first(); if (empty($file)) { break; } $pid = $file->pid; $temp = $file->toArray(); $temp['permission'] = $file->getPermission($user->userid); $array[] = $temp; } } else { // 获取共享相关 DB::statement("SET SQL_MODE=''"); $pre = DB::connection()->getTablePrefix(); $list = File::select(["files.*", DB::raw("MAX({$pre}file_users.permission) as permission")]) ->join('file_users', 'files.id', '=', 'file_users.file_id') ->where('files.userid', '!=', $user->userid) ->where(function ($query) use ($user) { $query->where('file_users.userid', 0); $query->orWhere('file_users.userid', $user->userid); }) ->groupBy('files.id') ->take(100) ->get(); if ($list->isNotEmpty()) { foreach ($list as $file) { $temp = $file->toArray(); $temp['pid'] = 0; $array[] = $temp; } } } // 图片直接返回预览地址 foreach ($array as &$item) { File::handleImageUrl($item)
时间: 2024-02-14 15:27:05 浏览: 26
这段代码是一个PHP函数,名为"lists"。它首先通过调用"User::auth()"方法获取用户认证信息。然后,它从请求中获取数据,并将"pid"转换为整数类型。
接下来,它设置了一个名为"permission"的变量并赋值为1000。如果"pid"大于0,它会调用"File::permissionFind()"方法并传递"pid"、0和"permission"作为参数,并将返回的结果赋给"builder"变量。否则,它将根据用户的"userid"来设置"builder"变量。
然后,它使用"builder"变量查询数据库,并取出最多500条数据,将结果转换为数组。接着,它遍历数组中的每一项,并为每个项添加一个名为"permission"的字段,值为之前设置的"permission"。
如果"pid"大于0,它将通过循环获取父级文件。在循环中,它根据"pid"查询数据库,并将结果赋给"file"变量。如果查询结果为空,则跳出循环;否则,将"pid"更新为父级文件的"pid",将查询到的文件转换为数组,并为数组添加一个名为"permission"的字段,值为根据用户的"userid"获取的权限值。最后,将该数组添加到之前的数组中。
如果"pid"小于等于0,它将查询共享相关的文件。首先,它执行了一条SQL语句,将SQL_MODE设置为空字符串。然后,它使用数据库连接的前缀和"files"表和"file_users"表进行关联查询,选取了一些字段,并按照"files.id"进行分组。接着,它使用了一些条件限制,并取出最多100条结果。如果查询结果不为空,它将遍历查询结果,并将每个结果转换为数组,并将"pid"字段设为0。最后,将该数组添加到之前的数组中。
最后,它再次遍历数组中的每一项,并调用"File::handleImageUrl()"方法来处理图片的预览地址。
这个函数的作用是根据一些条件查询数据库,并返回相应的结果数组。