Пример #1
0
 /**
  * test update for the removal of the logical "Shared" folder. It should update
  * the file_target for every share and create a physical "Shared" folder for each user
  */
 function testRemoveSharedFolder()
 {
     self::prepareDB();
     // run the update routine to remove the shared folder and replace it with a real folder
     removeSharedFolder(false, 2);
     // verify results
     $query = \OC_DB::prepare('SELECT * FROM `*PREFIX*share`');
     $result = $query->execute(array());
     $newDBContent = $result->fetchAll();
     foreach ($newDBContent as $row) {
         if ((int) $row['share_type'] === \OCP\Share::SHARE_TYPE_USER) {
             $this->assertSame('/Shared', substr($row['file_target'], 0, strlen('/Shared')));
         } else {
             $this->assertSame('/ShouldNotChange', $row['file_target']);
         }
     }
     $shareFolder = \OCP\Config::getSystemValue('share_folder', '/');
     $this->assertSame('/Shared', $shareFolder);
     // cleanup
     $this->cleanupSharedTable();
     \OCP\Config::deleteSystemValue('share_folder');
 }
Пример #2
0
<?php

$installedVersion = OCP\Config::getAppValue('files_sharing', 'installed_version');
if (version_compare($installedVersion, '0.5', '<')) {
    updateFilePermissions();
}
if (version_compare($installedVersion, '0.4', '<')) {
    removeSharedFolder();
}
// clean up oc_share table from files which are no longer exists
if (version_compare($installedVersion, '0.3.5.6', '<')) {
    \OC\Files\Cache\Shared_Updater::fixBrokenSharesOnAppUpdate();
}
/**
 * it is no longer possible to share single files with delete permissions. User
 * should only be able to unshare single files but never to delete them.
 */
function updateFilePermissions($chunkSize = 99)
{
    $query = OCP\DB::prepare('SELECT * FROM `*PREFIX*share` WHERE `item_type` = ?');
    $result = $query->execute(array('file'));
    $updatedRows = array();
    while ($row = $result->fetchRow()) {
        if ($row['permissions'] & \OCP\PERMISSION_DELETE) {
            $updatedRows[$row['id']] = (int) $row['permissions'] & ~\OCP\PERMISSION_DELETE;
        }
    }
    $connection = \OC_DB::getConnection();
    $chunkedPermissionList = array_chunk($updatedRows, $chunkSize, true);
    foreach ($chunkedPermissionList as $subList) {
        $statement = "UPDATE `*PREFIX*share` SET `permissions` = CASE `id` ";