Skip to content

Commit

Permalink
Fix avatar migration with the new folder
Browse files Browse the repository at this point in the history
  • Loading branch information
Vincent Petry committed Sep 27, 2016
1 parent c2d4c98 commit 9ce19e2
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 12 deletions.
8 changes: 6 additions & 2 deletions lib/private/AvatarManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -102,10 +102,14 @@ private function buildAvatarPath($userId) {
}

/**
* @param $userId
* Returns the avatar folder for the given user
*
* @param $userId user id
* @return Folder|\OCP\Files\Node
*
* @internal
*/
protected function getAvatarFolder($userId) {
public function getAvatarFolder($userId) {
$avatarsFolder = $this->getFolder($this->rootFolder, 'avatars');
$parts = $this->buildAvatarPath($userId);
foreach ($parts as $part) {
Expand Down
2 changes: 2 additions & 0 deletions lib/private/Repair.php
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,8 @@ public static function getRepairSteps() {
\OC::$server->getConfig(),
\OC::$server->getDatabaseConnection(),
\OC::$server->getUserManager(),
\OC::$server->getAvatarManager(),
\OC::$server->getLazyRootFolder(),
\OC::$server->getL10N('core'),
\OC::$server->getLogger()
),
Expand Down
26 changes: 16 additions & 10 deletions lib/private/Repair/MoveAvatarOutsideHome.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
use OC\Avatar;
use OCP\IConfig;
use OCP\Files\Folder;
use OCP\IAvatarManager;

/**
* Move avatars outside of their homes to the new location
Expand All @@ -46,6 +47,12 @@ class MoveAvatarOutsideHome implements IRepairStep {
/** @var IUserManager */
private $userManager;

/** @var IAvatarManager */
private $avatarManager;

/** @var IRootFolder */
private $rootFolder;

/** @var \OCP\ILogger */
private $logger;

Expand All @@ -61,12 +68,16 @@ public function __construct(
IConfig $config,
IDBConnection $connection,
IUserManager $userManager,
IAvatarManager $avatarManager,
IRootFolder $rootFolder,
IL10N $l10n,
ILogger $logger
) {
$this->config = $config;
$this->connection = $connection;
$this->userManager = $userManager;
$this->avatarManager = $avatarManager;
$this->rootFolder = $rootFolder;
$this->l = $l10n;
$this->logger = $logger;
}
Expand All @@ -86,13 +97,11 @@ private function moveAvatars(IOutput $out, IUser $user, Folder $newAvatarsFolder

\OC\Files\Filesystem::initMountPoints($userId);

// TODO: inject
$rootFolder = \OC::$server->getRootFolder();

$oldAvatarUserFolder = $rootFolder->get('/' . $userId);
// call get instead of getUserFolder to avoid needless skeleton copy
$oldAvatarUserFolder = $this->rootFolder->get('/' . $userId);
$oldAvatar = new Avatar($oldAvatarUserFolder, $this->l, $user, $this->logger);
if ($oldAvatar->exists()) {
$newAvatarsUserFolder = $newAvatarsFolder->newFolder($userId);
$newAvatarsUserFolder = $this->avatarManager->getAvatarFolder($userId);

// get original file
$oldAvatarFile = $oldAvatar->getFile(-1);
Expand Down Expand Up @@ -125,11 +134,8 @@ private function countUsers() {
public function run(IOutput $output) {
$ocVersionFromBeforeUpdate = $this->config->getSystemValue('version', '0.0.0');
if (version_compare($ocVersionFromBeforeUpdate, '9.2.0.2', '<')) {
$rootFolder = \OC::$server->getRootFolder();
$newAvatarsFolder = $rootFolder->newFolder('metadata-avatars');

$function = function(IUser $user) use ($output, $newAvatarsFolder) {
$this->moveAvatars($output, $user, $newAvatarsFolder);
$function = function(IUser $user) use ($output) {
$this->moveAvatars($output, $user);
$output->advance();
};

Expand Down

0 comments on commit 9ce19e2

Please sign in to comment.