UploadExtensionFileController extends AbstractController uses BlockSerializationTrait

Controller for handling upload of a .zip file which is then placed as an extension

Internal

This class is a specific controller implementation and is not considered part of the Public TYPO3 API.

Table of Contents

Constants

TRIGGER_RefreshModuleMenu  = 'refreshModuleMenu'
TRIGGER_RefreshTopbar  = 'refreshTopbar'

Properties

$actionMethodName  : string
Name of the action method
$arguments  : Arguments
$configurationManager  : ConfigurationManagerInterface
$controllerContext  : ControllerContext
$defaultViewObjectName  : string
The default view object to use if none of the resolved views can render a response for the current request.
$errorMethodName  : string
Name of the special error action method which is called in case of errors
$eventDispatcher  : EventDispatcherInterface
$extensionBackupPath  : string
$fileHandlingUtility  : FileHandlingUtility
$hashService  : HashService
$managementService  : ExtensionManagementService
$mvcPropertyMappingConfigurationService  : MvcPropertyMappingConfigurationService
$objectManager  : ObjectManagerInterface
$reflectionService  : ReflectionService
$removeFromOriginalPath  : bool
$request  : Request
The current request.
$responseFactory  : ResponseFactoryInterface
$settings  : array<string|int, mixed>
Contains the settings of the current extension
$signalSlotDispatcher  : Dispatcher
$streamFactory  : StreamFactoryInterface
$triggerArguments  : array<string|int, mixed>
$uriBuilder  : UriBuilder
$validatorResolver  : ValidatorResolver
$view  : ViewInterface
The current view, as resolved by resolveView()

Methods

__construct()  : mixed
__destruct()  : mixed
Remove backup folder before destruction
__wakeup()  : mixed
Deny object deserialization.
addFlashMessage()  : mixed
Creates a Message object and adds it to the FlashMessageQueue.
extractAction()  : mixed
Extract an uploaded file and install the matching extension
formAction()  : ResponseInterface
Render upload extension form
forward()  : never
Forwards the request to another action and / or controller.
getControllerContext()  : ControllerContext
initializeControllerArgumentsBaseValidators()  : mixed
Collects the base validators which were defined for the data type of each controller argument and adds them to the argument's validator chain.
injectConfigurationManager()  : mixed
injectEventDispatcher()  : void
injectHashService()  : mixed
injectInternalExtensionService()  : void
injectInternalFlashMessageService()  : void
injectMvcPropertyMappingConfigurationService()  : mixed
injectObjectManager()  : mixed
Injects the object manager
injectPropertyMapper()  : void
injectReflectionService()  : mixed
injectResponseFactory()  : mixed
injectSignalSlotDispatcher()  : mixed
injectStreamFactory()  : mixed
injectValidatorResolver()  : mixed
injectViewResolver()  : mixed
processRequest()  : ResponseInterface
Handles an incoming request and returns a response object
throwStatus()  : never
Sends the specified HTTP status immediately and only stops to run back through the middleware stack.
activateExtension()  : bool
addBaseUriIfNecessary()  : string
Adds the base uri if not already in place.
addErrorFlashMessage()  : mixed
If an error occurred during this request, this adds a flash message describing the error to the flash message container.
buildControllerContext()  : ControllerContext
Initialize the controller context
callActionMethod()  : ResponseInterface
Calls the specified action method and passes the arguments.
checkFileName()  : mixed
Validate the filename of an uploaded file
copyExtensionFolderToTempFolder()  : mixed
Copies current extension folder to typo3temp directory as backup
errorAction()  : ResponseInterface
A special action which is called if the originally intended action could not be called, for example if the arguments were not valid.
extractExtensionFromZipFile()  : string
Extracts a given zip file and installs the extension
forwardToReferringRequest()  : ResponseInterface|null
If information on the request before the current request was sent, this method forwards back to the originating request. This effectively ends processing of the current request, so do not call this method before you have finished the necessary business logic!
getErrorFlashMessage()  : string|bool
A template method for displaying custom error flash messages, or to display no flash message at all on errors. Override this to customize the flash message in your action controller.
getExtensionKeyFromFileName()  : string
As there is no information about the extension key in the zip we have to use the file name to get that information filename format is expected to be extensionkey_version.zip.
getFlashMessageQueue()  : FlashMessageQueue
todo: As soon as the incoming request contains the compiled plugin namespace, extbase will offer a trait to create a flash message identifier from the current request. Users then should inject the flash message service themselves if needed.
getFlattenedValidationErrorMessage()  : string
Returns a string with a basic error message about validation failure.
getViewProperty()  : array<string|int, mixed>
Handles the path resolving for *rootPath(s)
handleTriggerArguments()  : mixed
Handles trigger arguments, e.g. refreshing the module menu widget if an extension with backend modules has been enabled or disabled.
htmlResponse()  : ResponseInterface
Returns a response object with either the given html string or the current rendered view as content.
initializeAction()  : mixed
Initializes the controller before invoking an action method.
initializeActionMethodArguments()  : mixed
Implementation of the arguments initialization in the action controller: Automatically registers arguments of the current action
initializeActionMethodValidators()  : mixed
Adds the needed validators to the Arguments:
initializeView()  : mixed
Initializes the view before invoking an action method.
jsonResponse()  : ResponseInterface
Returns a response object with either the given json string or the current rendered view as content. Mainly to be used for actions / controllers using the JsonView.
mapRequestArgumentsToControllerArguments()  : mixed
Maps arguments delivered by the request object to the local controller arguments.
redirect()  : never
Redirects the request to another action and / or controller.
redirectToUri()  : never
Redirects the web request to another uri.
removeBackupFolder()  : mixed
Removes the backup folder in typo3temp
removeExtensionAndRestoreFromBackup()  : mixed
Removes the extension directory and restores the extension from the backup directory
renderAssetsForRequest()  : mixed
Method which initializes assets that should be attached to the response for the given $request, which contains parameters that an override can use to determine which assets to add via PageRenderer.
resolveActionMethodName()  : string
Resolves and checks the current action method name
resolveView()  : ViewInterface
Prepares a view for the current action.
setViewConfiguration()  : mixed
translate()  : string
Translation shortcut

Constants

TRIGGER_RefreshModuleMenu

public mixed TRIGGER_RefreshModuleMenu = 'refreshModuleMenu'

TRIGGER_RefreshTopbar

public mixed TRIGGER_RefreshTopbar = 'refreshTopbar'

Properties

$actionMethodName

Name of the action method

protected string $actionMethodName = 'indexAction'
Internal

only to be used within Extbase, not part of TYPO3 Core API.

$controllerContext

Deprecated

since v11, will be removed with v12.

protected ControllerContext $controllerContext
Internal

only to be used within Extbase, not part of TYPO3 Core API.

$defaultViewObjectName

The default view object to use if none of the resolved views can render a response for the current request.

protected string $defaultViewObjectName = \TYPO3\CMS\Fluid\View\TemplateView::class

$errorMethodName

Name of the special error action method which is called in case of errors

protected string $errorMethodName = 'errorAction'

$eventDispatcher

protected EventDispatcherInterface $eventDispatcher

$extensionBackupPath

protected string $extensionBackupPath = ''

$hashService

protected HashService $hashService
Internal

only to be used within Extbase, not part of TYPO3 Core API.

$objectManager

Deprecated

since v11, will be removed in v12

protected ObjectManagerInterface $objectManager
Internal

only to be used within Extbase, not part of TYPO3 Core API.

$reflectionService

protected ReflectionService $reflectionService
Internal

only to be used within Extbase, not part of TYPO3 Core API.

$removeFromOriginalPath

protected bool $removeFromOriginalPath = false

$request

The current request.

protected Request $request
Tags
todo

v12: Change @var to RequestInterface, when RequestInterface extends ServerRequestInterface

$responseFactory

protected ResponseFactoryInterface $responseFactory

$settings

Contains the settings of the current extension

protected array<string|int, mixed> $settings

$signalSlotDispatcher

protected Dispatcher $signalSlotDispatcher
Internal

only to be used within Extbase, not part of TYPO3 Core API.

$streamFactory

protected StreamFactoryInterface $streamFactory

$triggerArguments

protected array<string|int, mixed> $triggerArguments = [self::TRIGGER_RefreshModuleMenu, self::TRIGGER_RefreshTopbar]

$validatorResolver

protected ValidatorResolver $validatorResolver
Internal

only to be used within Extbase, not part of TYPO3 Core API.

$view

The current view, as resolved by resolveView()

protected ViewInterface $view
Tags
todo

v12: Change signature to TYPO3Fluid\Fluid\View\ViewInterface when extbase ViewInterface is dropped.

Methods

__destruct()

Remove backup folder before destruction

public __destruct() : mixed

__wakeup()

Deny object deserialization.

public __wakeup() : mixed

addFlashMessage()

Creates a Message object and adds it to the FlashMessageQueue.

public addFlashMessage(string $messageBody[, string $messageTitle = '' ][, int $severity = AbstractMessage::OK ][, bool $storeInSession = true ]) : mixed
Parameters
$messageBody : string

The message

$messageTitle : string = ''

Optional message title

$severity : int = AbstractMessage::OK

Optional severity, must be one of \TYPO3\CMS\Core\Messaging\FlashMessage constants

$storeInSession : bool = true

Optional, defines whether the message should be stored in the session (default) or not

Tags
throws
InvalidArgumentException

if the message body is no string

see
FlashMessage

extractAction()

Extract an uploaded file and install the matching extension

public extractAction([bool $overwrite = false ]) : mixed
Parameters
$overwrite : bool = false

Overwrite existing extension if TRUE

Tags
throws
StopActionException

@deprecated since v11, will be removed in v12

formAction()

Render upload extension form

public formAction() : ResponseInterface
Return values
ResponseInterface

forward()

Forwards the request to another action and / or controller.

public forward(string|null $actionName[, string|null $controllerName = null ][, string|null $extensionName = null ][, array<string|int, mixed>|null $arguments = null ]) : never
Deprecated

since TYPO3 11.0, will be removed in 12.0

Request is directly transferred to the other action / controller without the need for a new request.

Parameters
$actionName : string|null

Name of the action to forward to

$controllerName : string|null = null

Unqualified object name of the controller to forward to. If not specified, the current controller is used.

$extensionName : string|null = null

Name of the extension containing the controller to forward to. If not specified, the current extension is assumed.

$arguments : array<string|int, mixed>|null = null

Arguments to pass to the target action

Tags
throws
StopActionException
see
redirect()
Return values
never

initializeControllerArgumentsBaseValidators()

Collects the base validators which were defined for the data type of each controller argument and adds them to the argument's validator chain.

public initializeControllerArgumentsBaseValidators() : mixed
Internal

only to be used within Extbase, not part of TYPO3 Core API.

injectEventDispatcher()

public injectEventDispatcher(EventDispatcherInterface $eventDispatcher) : void
Parameters
$eventDispatcher : EventDispatcherInterface

injectHashService()

public injectHashService(HashService $hashService) : mixed
Parameters
$hashService : HashService
Internal

only to be used within Extbase, not part of TYPO3 Core API.

injectInternalExtensionService()

public final injectInternalExtensionService(ExtensionService $extensionService) : void
Parameters
$extensionService : ExtensionService
Internal

only to be used within Extbase, not part of TYPO3 Core API.

injectInternalFlashMessageService()

public final injectInternalFlashMessageService(FlashMessageService $flashMessageService) : void
Parameters
$flashMessageService : FlashMessageService
Internal

only to be used within Extbase, not part of TYPO3 Core API.

injectObjectManager()

Injects the object manager

public injectObjectManager(ObjectManagerInterface $objectManager) : mixed
Deprecated

since v11, will be removed in v12

Parameters
$objectManager : ObjectManagerInterface
Internal

only to be used within Extbase, not part of TYPO3 Core API.

injectPropertyMapper()

public injectPropertyMapper(PropertyMapper $propertyMapper) : void
Parameters
$propertyMapper : PropertyMapper
Internal

only to be used within Extbase, not part of TYPO3 Core API.

injectReflectionService()

public injectReflectionService(ReflectionService $reflectionService) : mixed
Parameters
$reflectionService : ReflectionService
Internal

only to be used within Extbase, not part of TYPO3 Core API.

injectResponseFactory()

public final injectResponseFactory(ResponseFactoryInterface $responseFactory) : mixed
Parameters
$responseFactory : ResponseFactoryInterface

injectSignalSlotDispatcher()

public injectSignalSlotDispatcher(Dispatcher $signalSlotDispatcher) : mixed
Deprecated

since v11, will be removed in v12

Parameters
$signalSlotDispatcher : Dispatcher
Internal

only to be used within Extbase, not part of TYPO3 Core API.

injectStreamFactory()

public final injectStreamFactory(StreamFactoryInterface $streamFactory) : mixed
Parameters
$streamFactory : StreamFactoryInterface

injectValidatorResolver()

public injectValidatorResolver(ValidatorResolver $validatorResolver) : mixed
Parameters
$validatorResolver : ValidatorResolver
Internal

only to be used within Extbase, not part of TYPO3 Core API.

processRequest()

Handles an incoming request and returns a response object

public processRequest(RequestInterface $request) : ResponseInterface
Parameters
$request : RequestInterface

The request object

Internal

only to be used within Extbase, not part of TYPO3 Core API.

Return values
ResponseInterface

throwStatus()

Sends the specified HTTP status immediately and only stops to run back through the middleware stack.

public throwStatus(int $statusCode[, string $statusMessage = null ][, string $content = null ]) : never

Note: If any other plugin or content or hook is used within a frontend request, this is skipped by design.

Parameters
$statusCode : int

The HTTP status code

$statusMessage : string = null

A custom HTTP status message

$content : string = null

Body content which further explains the status

Tags
throws
PropagateResponseException
Return values
never

activateExtension()

protected activateExtension(string $extensionKey) : bool
Parameters
$extensionKey : string
Return values
bool

addBaseUriIfNecessary()

Adds the base uri if not already in place.

protected addBaseUriIfNecessary(string $uri) : string
Parameters
$uri : string

The URI

Internal

only to be used within Extbase, not part of TYPO3 Core API.

Return values
string

addErrorFlashMessage()

If an error occurred during this request, this adds a flash message describing the error to the flash message container.

protected addErrorFlashMessage() : mixed
Internal

only to be used within Extbase, not part of TYPO3 Core API.

buildControllerContext()

Initialize the controller context

protected buildControllerContext() : ControllerContext
Deprecated

since v11, will be removed with v12.

Internal

only to be used within Extbase, not part of TYPO3 Core API.

Return values
ControllerContext

ControllerContext to be passed to the view

callActionMethod()

Calls the specified action method and passes the arguments.

protected callActionMethod(RequestInterface $request) : ResponseInterface

If the action returns a string, it is appended to the content in the response object. If the action doesn't return anything and a valid view exists, the view is rendered automatically.

Parameters
$request : RequestInterface
Internal

only to be used within Extbase, not part of TYPO3 Core API.

Return values
ResponseInterface

checkFileName()

Validate the filename of an uploaded file

protected checkFileName(string $fileName) : mixed
Parameters
$fileName : string
Tags
throws
InvalidFileException

copyExtensionFolderToTempFolder()

Copies current extension folder to typo3temp directory as backup

protected copyExtensionFolderToTempFolder(string $extensionKey) : mixed
Parameters
$extensionKey : string
Tags
throws
ExtensionManagerException

errorAction()

A special action which is called if the originally intended action could not be called, for example if the arguments were not valid.

protected errorAction() : ResponseInterface

The default implementation sets a flash message, request errors and forwards back to the originating action. This is suitable for most actions dealing with form input.

We clear the page cache by default on an error as well, as we need to make sure the data is re-evaluated when the user changes something.

Return values
ResponseInterface

extractExtensionFromZipFile()

Extracts a given zip file and installs the extension

protected extractExtensionFromZipFile(string $uploadedFile, string $extensionKey[, bool $overwrite = false ]) : string
Parameters
$uploadedFile : string

Path to uploaded file

$extensionKey : string
$overwrite : bool = false

Overwrite existing extension if TRUE

Tags
throws
ExtensionManagerException
Return values
string

forwardToReferringRequest()

If information on the request before the current request was sent, this method forwards back to the originating request. This effectively ends processing of the current request, so do not call this method before you have finished the necessary business logic!

protected forwardToReferringRequest() : ResponseInterface|null
Internal

only to be used within Extbase, not part of TYPO3 Core API.

Return values
ResponseInterface|null

getErrorFlashMessage()

A template method for displaying custom error flash messages, or to display no flash message at all on errors. Override this to customize the flash message in your action controller.

protected getErrorFlashMessage() : string|bool
Internal

only to be used within Extbase, not part of TYPO3 Core API.

Return values
string|bool

The flash message or FALSE if no flash message should be set

getExtensionKeyFromFileName()

As there is no information about the extension key in the zip we have to use the file name to get that information filename format is expected to be extensionkey_version.zip.

protected getExtensionKeyFromFileName(string $fileName) : string

Removes version and file extension from filename to determine extension key

Parameters
$fileName : string
Return values
string

getFlashMessageQueue()

todo: As soon as the incoming request contains the compiled plugin namespace, extbase will offer a trait to create a flash message identifier from the current request. Users then should inject the flash message service themselves if needed.

protected getFlashMessageQueue([string|null $identifier = null ]) : FlashMessageQueue
Parameters
$identifier : string|null = null
Internal

only to be used within Extbase, not part of TYPO3 Core API.

Return values
FlashMessageQueue

getFlattenedValidationErrorMessage()

Returns a string with a basic error message about validation failure.

protected getFlattenedValidationErrorMessage() : string

We may add all validation error messages to a log file in the future, but for security reasons (@see #54074) we do not return these here.

Internal

only to be used within Extbase, not part of TYPO3 Core API.

Return values
string

getViewProperty()

Handles the path resolving for *rootPath(s)

protected getViewProperty(array<string|int, mixed> $extbaseFrameworkConfiguration, string $setting) : array<string|int, mixed>

numerical arrays get ordered by key ascending

Parameters
$extbaseFrameworkConfiguration : array<string|int, mixed>
$setting : string

parameter name from TypoScript

Internal

only to be used within Extbase, not part of TYPO3 Core API.

Return values
array<string|int, mixed>

handleTriggerArguments()

Handles trigger arguments, e.g. refreshing the module menu widget if an extension with backend modules has been enabled or disabled.

protected handleTriggerArguments() : mixed

htmlResponse()

Returns a response object with either the given html string or the current rendered view as content.

protected htmlResponse([string|null $html = null ]) : ResponseInterface
Parameters
$html : string|null = null
Return values
ResponseInterface

initializeAction()

Initializes the controller before invoking an action method.

protected initializeAction() : mixed

Override this method to solve tasks which all actions have in common.

initializeActionMethodArguments()

Implementation of the arguments initialization in the action controller: Automatically registers arguments of the current action

protected initializeActionMethodArguments() : mixed

Don't override this method - use initializeAction() instead.

Internal

only to be used within Extbase, not part of TYPO3 Core API.

Tags
throws
InvalidArgumentTypeException
see
initializeArguments()

initializeActionMethodValidators()

Adds the needed validators to the Arguments:

protected initializeActionMethodValidators() : mixed
  • Validators checking the data type from the @param annotation
  • Custom validators specified with validate annotations.
  • Model-based validators (validate annotations in the model)
  • Custom model validator classes
Internal

only to be used within Extbase, not part of TYPO3 Core API.

initializeView()

Initializes the view before invoking an action method.

protected initializeView(ViewInterface $view) : mixed
Deprecated

since v11, will be removed in v12: Drop method along with extbase ViewInterface.

Override this method to solve assign variables common for all actions or prepare the view in another way before the action is called.

Parameters
$view : ViewInterface

The view to be initialized

jsonResponse()

Returns a response object with either the given json string or the current rendered view as content. Mainly to be used for actions / controllers using the JsonView.

protected jsonResponse([string|null $json = null ]) : ResponseInterface
Parameters
$json : string|null = null
Return values
ResponseInterface

mapRequestArgumentsToControllerArguments()

Maps arguments delivered by the request object to the local controller arguments.

protected mapRequestArgumentsToControllerArguments() : mixed
Internal

only to be used within Extbase, not part of TYPO3 Core API.

Tags
throws
RequiredArgumentMissingException

redirect()

Redirects the request to another action and / or controller.

protected redirect(string|null $actionName[, string|null $controllerName = null ][, string|null $extensionName = null ][, array<string|int, mixed>|null $arguments = null ][, int|null $pageUid = null ][, null $_ = null ][, int $statusCode = 303 ]) : never

Redirect will be sent to the client which then performs another request to the new URI.

Parameters
$actionName : string|null

Name of the action to forward to

$controllerName : string|null = null

Unqualified object name of the controller to forward to. If not specified, the current controller is used.

$extensionName : string|null = null

Name of the extension containing the controller to forward to. If not specified, the current extension is assumed.

$arguments : array<string|int, mixed>|null = null

Arguments to pass to the target action

$pageUid : int|null = null

Target page uid. If NULL, the current page uid is used

$_ : null = null

(optional) Unused

$statusCode : int = 303

(optional) The HTTP status code for the redirect. Default is "303 See Other

Tags
throws
StopActionException

deprecated since TYPO3 11.0, method will RETURN a Core\Http\RedirectResponse instead of throwing in v12

todo:

': ResponseInterface' (without ?) in v12 as method return type together with redirectToUri() cleanup

Return values
never

redirectToUri()

Redirects the web request to another uri.

protected redirectToUri(mixed $uri[, null $_ = null ][, int $statusCode = 303 ]) : never
Parameters
$uri : mixed

A string representation of a URI

$_ : null = null

(optional) Unused

$statusCode : int = 303

(optional) The HTTP status code for the redirect. Default is "303 See Other"

Tags
throws
StopActionException

deprecated since TYPO3 11.0, will be removed in 12.0

todo:

': ResponseInterface' (without ?) in v12 as method return type together with redirectToUri() cleanup

Return values
never

removeBackupFolder()

Removes the backup folder in typo3temp

protected removeBackupFolder() : mixed

removeExtensionAndRestoreFromBackup()

Removes the extension directory and restores the extension from the backup directory

protected removeExtensionAndRestoreFromBackup(string $fileName) : mixed
Parameters
$fileName : string
Tags
see
UploadExtensionFileController::extractAction

renderAssetsForRequest()

Method which initializes assets that should be attached to the response for the given $request, which contains parameters that an override can use to determine which assets to add via PageRenderer.

protected renderAssetsForRequest(RequestInterface $request) : mixed

This default implementation will attempt to render the sections "HeaderAssets" and "FooterAssets" from the template that is being rendered, inserting the rendered content into either page header or footer, as appropriate. Both sections are optional and can be used one or both in combination.

You can add assets with this method without worrying about duplicates, if for example you do this in a plugin that gets used multiple time on a page.

Parameters
$request : RequestInterface
Internal

only to be used within Extbase, not part of TYPO3 Core API.

resolveActionMethodName()

Resolves and checks the current action method name

protected resolveActionMethodName() : string
Internal

only to be used within Extbase, not part of TYPO3 Core API.

Tags
throws
NoSuchActionException

if the action specified in the request object does not exist (and if there's no default action either).

Return values
string

Method name of the current action

resolveView()

Prepares a view for the current action.

protected resolveView() : ViewInterface

By default, this method tries to locate a view with a name matching the current action.

Internal

only to be used within Extbase, not part of TYPO3 Core API.

Tags
todo

v12: Change signature to TYPO3Fluid\Fluid\View\ViewInterface when extbase ViewInterface is dropped.

Return values
ViewInterface

setViewConfiguration()

protected setViewConfiguration(ViewInterface $view) : mixed
Parameters
$view : ViewInterface
Internal

only to be used within Extbase, not part of TYPO3 Core API.

Tags
todo

v12: Change signature to TYPO3Fluid\Fluid\View\ViewInterface when extbase ViewInterface is dropped.

translate()

Translation shortcut

protected translate(string $key[, array<string|int, mixed>|null $arguments = null ]) : string
Parameters
$key : string
$arguments : array<string|int, mixed>|null = null
Return values
string

        
On this page

Search results