Code
Explorer
You are a developer and looking for Shopware projects?
Apply Now!
addEvent example
$this
->
deleteClones
(
$commits
,
$versionContext
,
$versionId
)
;
// release lock to ensure no other merge is running
$lock
->
release
(
)
;
// dispatch events to trigger indexer and other subscribts
$writes
= EntityWrittenContainerEvent::
createWithWrittenEvents
(
$result
->
getWritten
(
)
,
$liveContext
->
getContext
(
)
,
[
]
)
;
$deletes
= EntityWrittenContainerEvent::
createWithDeletedEvents
(
$result
->
getDeleted
(
)
,
$liveContext
->
getContext
(
)
,
[
]
)
;
if
(
$deletes
->
getEvents
(
)
!== null
)
{
$writes
->
addEvent
(
...
$deletes
->
getEvents
(
)
->
getElements
(
)
)
;
}
$this
->eventDispatcher->
dispatch
(
$writes
)
;
$versionContext
->
removeState
(
self::MERGE_SCOPE
)
;
$liveContext
->
addState
(
self::MERGE_SCOPE
)
;
}
/** * @return array<string, array<EntityWriteResult>> */
public
function
clone
(
&& \
in_array
(
$behavior
->
getIndexingBehavior
(
)
,
[
EntityIndexerRegistry::DISABLE_INDEXING, EntityIndexerRegistry::USE_INDEXING_QUEUE
]
, true
)
)
{
$context
->
addState
(
$behavior
->
getIndexingBehavior
(
)
)
;
}
$result
=
$this
->writer->
sync
(
$operations
, WriteContext::
createFromContext
(
$context
)
)
;
$writes
= EntityWrittenContainerEvent::
createWithWrittenEvents
(
$result
->
getWritten
(
)
,
$context
,
[
]
)
;
$deletes
= EntityWrittenContainerEvent::
createWithDeletedEvents
(
$result
->
getDeleted
(
)
,
$context
,
[
]
)
;
if
(
$deletes
->
getEvents
(
)
!== null
)
{
$writes
->
addEvent
(
...
$deletes
->
getEvents
(
)
->
getElements
(
)
)
;
}
$this
->eventDispatcher->
dispatch
(
$writes
)
;
$ids
=
$this
->
getWrittenEntities
(
$result
->
getWritten
(
)
)
;
$deleted
=
$this
->
getWrittenEntitiesByEvent
(
$deletes
)
;
$notFound
=
$this
->
getWrittenEntities
(
$result
->
getNotFound
(
)
)
;
return
new
SyncResult
(
$ids
,
$notFound
,
$deleted
)
;
}
public
function
delete
(
array
$ids
, Context
$context
)
: EntityWrittenContainerEvent
{
ReplicaConnection::
ensurePrimary
(
)
;
$affected
=
$this
->versionManager->
delete
(
$this
->definition,
$ids
, WriteContext::
createFromContext
(
$context
)
)
;
$event
= EntityWrittenContainerEvent::
createWithDeletedEvents
(
$affected
->
getDeleted
(
)
,
$context
,
$affected
->
getNotFound
(
)
)
;
if
(
$affected
->
getWritten
(
)
)
{
$updates
= EntityWrittenContainerEvent::
createWithWrittenEvents
(
$affected
->
getWritten
(
)
,
$context
,
[
]
)
;
if
(
$updates
->
getEvents
(
)
!== null
)
{
$event
->
addEvent
(
...
$updates
->
getEvents
(
)
)
;
}
}
$this
->eventDispatcher->
dispatch
(
$event
)
;
return
$event
;
}
public
function
createVersion
(
string
$id
, Context
$context
, ?string
$name
= null, ?string
$versionId
= null
)
: string
{
ReplicaConnection::
ensurePrimary
(
)
;