|
|
|
|
@ -116,7 +116,6 @@ class OC_Connector_Sabre_Directory extends OC_Connector_Sabre_Node implements Sa
|
|
|
|
|
* @return Sabre_DAV_INode[]
|
|
|
|
|
*/
|
|
|
|
|
public function getChildren() {
|
|
|
|
|
|
|
|
|
|
$folder_content = OC_Files::getDirectoryContent($this->path);
|
|
|
|
|
$paths = array();
|
|
|
|
|
foreach($folder_content as $info) {
|
|
|
|
|
@ -124,15 +123,22 @@ class OC_Connector_Sabre_Directory extends OC_Connector_Sabre_Node implements Sa
|
|
|
|
|
}
|
|
|
|
|
$properties = array_fill_keys($paths, array());
|
|
|
|
|
if(count($paths)>0) {
|
|
|
|
|
$placeholders = join(',', array_fill(0, count($paths), '?'));
|
|
|
|
|
$query = OC_DB::prepare( 'SELECT * FROM `*PREFIX*properties` WHERE `userid` = ?' . ' AND `propertypath` IN ('.$placeholders.')' );
|
|
|
|
|
array_unshift($paths, OC_User::getUser()); // prepend userid
|
|
|
|
|
$result = $query->execute( $paths );
|
|
|
|
|
while($row = $result->fetchRow()) {
|
|
|
|
|
$propertypath = $row['propertypath'];
|
|
|
|
|
$propertyname = $row['propertyname'];
|
|
|
|
|
$propertyvalue = $row['propertyvalue'];
|
|
|
|
|
$properties[$propertypath][$propertyname] = $propertyvalue;
|
|
|
|
|
//
|
|
|
|
|
// the number of arguments within IN conditions are limited in most databases
|
|
|
|
|
// we chunk $paths into arrays of 200 items each to meet this criteria
|
|
|
|
|
//
|
|
|
|
|
$chunks = array_chunk($paths, 200, false);
|
|
|
|
|
foreach ($chunks as $pack) {
|
|
|
|
|
$placeholders = join(',', array_fill(0, count($pack), '?'));
|
|
|
|
|
$query = OC_DB::prepare( 'SELECT * FROM `*PREFIX*properties` WHERE `userid` = ?' . ' AND `propertypath` IN ('.$placeholders.')' );
|
|
|
|
|
array_unshift($pack, OC_User::getUser()); // prepend userid
|
|
|
|
|
$result = $query->execute( $pack );
|
|
|
|
|
while($row = $result->fetchRow()) {
|
|
|
|
|
$propertypath = $row['propertypath'];
|
|
|
|
|
$propertyname = $row['propertyname'];
|
|
|
|
|
$propertyvalue = $row['propertyvalue'];
|
|
|
|
|
$properties[$propertypath][$propertyname] = $propertyvalue;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|