$force = (isset($_GET['force']) and ($_GET['force'] === 'true'));
$dir = isset($_GET['dir']) ? $_GET['dir'] : '';
+if (isset($_GET['users'])) {
+ OC_JSON::checkAdminUser();
+ if ($_GET['users'] === 'all') {
+ $users = OC_User::getUsers();
+ } else {
+ $users = explode(',', $_GET['users']);
+ }
+} else {
+ $users = array(OC_User::getUser());
+}
$eventSource = new OC_EventSource();
ScanListener::$eventSource = $eventSource;
OC_Hook::connect('\OC\Files\Cache\Scanner', 'scan_folder', 'ScanListener', 'folder');
OC_Hook::connect('\OC\Files\Cache\Scanner', 'scan_file', 'ScanListener', 'file');
-$absolutePath = \OC\Files\Filesystem::getView()->getAbsolutePath($dir);
+foreach ($users as $user) {
+ $eventSource->send('user', $user);
+ OC_Util::tearDownFS();
+ OC_Util::setupFS($user);
+
+ $absolutePath = \OC\Files\Filesystem::getView()->getAbsolutePath($dir);
-$mountPoints = \OC\Files\Filesystem::getMountPoints($absolutePath);
-$mountPoints[] = \OC\Files\Filesystem::getMountPoint($absolutePath);
-$mountPoints = array_reverse($mountPoints); //start with the mount point of $dir
+ $mountPoints = \OC\Files\Filesystem::getMountPoints($absolutePath);
+ $mountPoints[] = \OC\Files\Filesystem::getMountPoint($absolutePath);
+ $mountPoints = array_reverse($mountPoints); //start with the mount point of $dir
-foreach ($mountPoints as $mountPoint) {
- $storage = \OC\Files\Filesystem::getStorage($mountPoint);
- if ($storage) {
- ScanListener::$mountPoints[$storage->getId()] = $mountPoint;
- $scanner = $storage->getScanner();
- if ($force) {
- $scanner->scan('', \OC\Files\Cache\Scanner::SCAN_RECURSIVE, \OC\Files\Cache\Scanner::REUSE_ETAG);
- } else {
- $scanner->backgroundScan();
+ foreach ($mountPoints as $mountPoint) {
+ $storage = \OC\Files\Filesystem::getStorage($mountPoint);
+ if ($storage) {
+ ScanListener::$mountPoints[$storage->getId()] = $mountPoint;
+ $scanner = $storage->getScanner();
+ if ($force) {
+ $scanner->scan('', \OC\Files\Cache\Scanner::SCAN_RECURSIVE, \OC\Files\Cache\Scanner::REUSE_ETAG);
+ } else {
+ $scanner->backgroundScan();
+ }
}
}
}
}
});
-function scanFiles(force, dir){
+function scanFiles(force, dir, users){
if (!OC.currentUser) {
return;
}
}
force = !!force; //cast to bool
scanFiles.scanning = true;
- var scannerEventSource = new OC.EventSource(OC.filePath('files','ajax','scan.php'),{force:force,dir:dir});
+ var scannerEventSource;
+ if (users) {
+ var usersString;
+ if (users === 'all') {
+ usersString = users;
+ } else {
+ usersString = users.join(',');
+ }
+ scannerEventSource = new OC.EventSource(OC.filePath('files','ajax','scan.php'),{force: force,dir: dir, users: usersString});
+ } else {
+ scannerEventSource = new OC.EventSource(OC.filePath('files','ajax','scan.php'),{force: force,dir: dir});
+ }
scanFiles.cancel = scannerEventSource.close.bind(scannerEventSource);
scannerEventSource.listen('count',function(count){
console.log(count + ' files scanned')
scanFiles.scanning=false;
console.log('done after ' + count + ' files');
});
+ scannerEventSource.listen('user',function(user){
+ console.log('scanning files for ' + user);
+ });
}
scanFiles.scanning=false;