Browse Source

Memoize getUserTemporaryUploadFolder()

pull/11601/head
brandonkelly 3 years ago
parent
commit
5cfb8f5503
No known key found for this signature in database GPG Key ID: 5E86D0CED64C7093
  1. 1
      CHANGELOG.md
  2. 17
      src/services/Assets.php

1
CHANGELOG.md

@ -3,6 +3,7 @@
## Unreleased
### Changed
- Improved performance when working with temp asset folders.
- Element index queries are no longer cached if they contain a search term.
- Search inputs within field layout designers now prevent the containing form from being submitted when the <kbd>Return</kbd> key is pressed. ([#11415](https://github.com/craftcms/cms/discussions/11415))

17
src/services/Assets.php

@ -116,6 +116,12 @@ class Assets extends Component
*/
private $_queuedGeneratePendingTransformsJob = false;
/**
* @var VolumeFolder[]
* @see getUserTemporaryUploadFolder
*/
private $_userTempFolders = [];
/**
* Returns a file by its ID.
*
@ -1067,6 +1073,10 @@ class Assets extends Component
$user = Craft::$app->getUser()->getIdentity();
}
if (isset($this->_userTempFolders[$user->id])) {
return $this->_userTempFolders[$user->id];
}
if ($user) {
$folderName = 'user_' . $user->id;
} elseif (Craft::$app->getRequest()->getIsConsoleRequest()) {
@ -1089,10 +1099,7 @@ class Assets extends Component
if ($tempVolume) {
$path = ($tempSubpath ? "$tempSubpath/" : '') . $folderName;
$folderId = $this->ensureFolderByFullPathAndVolume($path, $tempVolume, false);
return $this->findFolder([
'volumeId' => $tempVolume->id,
'id' => $folderId,
]);
return $this->_userTempFolders[$user->id] = $this->getFolderById($folderId);
}
$volumeTopFolder = $this->findFolder([
@ -1123,7 +1130,7 @@ class Assets extends Component
FileHelper::createDirectory(Craft::$app->getPath()->getTempAssetUploadsPath() . DIRECTORY_SEPARATOR . $folderName);
return $folder;
return $this->_userTempFolders[$user->id] = $folder;
}
/**

Loading…
Cancel
Save