Code
Explorer
You are a developer and looking for Shopware projects?
Apply Now!
keepUserData example
public
static
function
getSubscribedEvents
(
)
: array
{
return
[
AppDeletedEvent::
class
=>
'onAppDeleted',
]
;
}
public
function
onAppDeleted
(
AppDeletedEvent
$event
)
: void
{
if
(
$event
->
keepUserData
(
)
)
{
return
;
}
$app
=
$this
->appRepository->
search
(
new
Criteria
(
[
$event
->
getAppId
(
)
]
)
,
$event
->
getContext
(
)
)
->
first
(
)
;
if
(
$app
=== null
)
{
return
;
}
$this
->themeLifecycleService->
removeTheme
(
$app
->
getName
(
)
,
$event
->
getContext
(
)
)
;
}
}
$config
=
$this
->storefrontPluginRegistry->
getConfigurations
(
)
->
getByTechnicalName
(
$pluginName
)
;
if
(
!
$config
)
{
return
;
}
$this
->themeLifecycleHandler->
handleThemeUninstall
(
$config
,
$event
->
getContext
(
)
->
getContext
(
)
)
;
}
public
function
pluginPostUninstall
(
PluginPostUninstallEvent
$event
)
: void
{
if
(
$event
->
getContext
(
)
->
keepUserData
(
)
)
{
return
;
}
$this
->themeLifecycleService->
removeTheme
(
$event
->
getPlugin
(
)
->
getName
(
)
,
$event
->
getContext
(
)
->
getContext
(
)
)
;
}
/** * @throws ThemeCompileException * @throws InvalidThemeBundleException */
private
function
createConfigFromClassName
(
string
$pluginPath
, string
$className
)
: StorefrontPluginConfiguration
{
$uninstallContext
->
setAutoMigrate
(
false
)
;
$this
->eventDispatcher->
dispatch
(
new
PluginPreUninstallEvent
(
$plugin
,
$uninstallContext
)
)
;
if
(
!
$shopwareContext
->
hasState
(
self::STATE_SKIP_ASSET_BUILDING
)
)
{
$this
->assetInstaller->
removeAssetsOfBundle
(
$pluginBaseClassString
)
;
}
$pluginBaseClass
->
uninstall
(
$uninstallContext
)
;
if
(
!
$uninstallContext
->
keepUserData
(
)
)
{
$pluginBaseClass
->
removeMigrations
(
)
;
$this
->systemConfigService->
deletePluginConfiguration
(
$pluginBaseClass
)
;
}
$pluginId
=
$plugin
->
getId
(
)
;
$this
->
updatePluginData
(
[
'id' =>
$pluginId
,
'active' => false,
'installedAt' => null,
]
,