\OCP\Util::writeLog('sharing','No fileinfo available for: '.$path,\OCP\Util::WARN);
}
$path=dirname($path);
}
if(!empty($ids)){
$idList=array_chunk($ids,99,true);
foreach($idListas$subList){
$statement="SELECT `share_with`, `share_type`, `file_target` FROM `*PREFIX*share` WHERE `file_source` IN (".implode(',',$subList).") AND `share_type` IN (0, 1, 2)";
$query=\OCP\DB::prepare($statement);
$r=$query->execute();
$result=array_merge($result,$r->fetchAll());
}
}
return$result;
}
/**
* get the UID of the owner of the file and the path to the file relative to
* owners files folder
*
* @param $filename
* @return array
* @throws \OC\User\NoUserException
*/
publicstaticfunctiongetUidAndFilename($filename){
$uid=Filesystem::getOwner($filename);
$userManager=\OC::$server->getUserManager();
// if the user with the UID doesn't exists, e.g. because the UID points
// to a remote user with a federated cloud ID we use the current logged-in
// user. We need a valid local user to create the share
if(!$userManager->userExists($uid)){
$uid=User::getUser();
}
Filesystem::initMountPoints($uid);
if($uid!==User::getUser()){
$info=Filesystem::getFileInfo($filename);
$ownerView=newView('/'.$uid.'/files');
try{
$filename=$ownerView->getPath($info['fileid']);
}catch(NotFoundException$e){
$filename=null;
}
}
return[$uid,$filename];
}
/**
* Format a path to be relative to the /user/files/ directory
* @param string $path the absolute path
* @return string e.g. turns '/admin/files/test.txt' into 'test.txt'
*/
publicstaticfunctionstripUserFilesPath($path){
$trimmed=ltrim($path,'/');
$split=explode('/',$trimmed);
// it is not a file relative to data/user/files
if(count($split)<3||$split[1]!=='files'){
returnfalse;
}
$sliced=array_slice($split,2);
returnimplode('/',$sliced);
}
/**
* check if file name already exists and generate unique target