Code
Explorer
You are a developer and looking for Shopware projects?
Apply Now!
hasChanged example
private
function
hydrateRuleIds
(
array
$fields
, EntityWrittenEvent
$nestedEvent
, array
$ruleIds
)
: array
{
foreach
(
$nestedEvent
->
getWriteResults
(
)
as
$result
)
{
$changeSet
=
$result
->
getChangeSet
(
)
;
$payload
=
$result
->
getPayload
(
)
;
foreach
(
$fields
as
$field
)
{
if
(
$changeSet
&&
$changeSet
->
hasChanged
(
$field
->
getStorageName
(
)
)
)
{
$ruleIds
[
]
=
$changeSet
->
getBefore
(
$field
->
getStorageName
(
)
)
;
$ruleIds
[
]
=
$changeSet
->
getAfter
(
$field
->
getStorageName
(
)
)
;
}
if
(
$changeSet
)
{
continue
;
}
if
(
!
empty
(
$payload
[
$field
->
getPropertyName
(
)
]
)
)
{
$ruleIds
[
]
= Uuid::
fromHexToBytes
(
$payload
[
$field
->
getPropertyName
(
)
]
)
;
}
}
public
function
checkUnchanged
(
)
{
$results
=
[
]
;
foreach
(
$this
as
$scaffold_files
)
{
foreach
(
$scaffold_files
as
$scaffold_file
)
{
if
(
!
$scaffold_file
->
hasChanged
(
)
)
{
$results
[
]
=
$scaffold_file
->
destination
(
)
->
relativePath
(
)
;
}
}
}
return
$results
;
}
}
if
(
is_array
(
$this
->datamap
)
)
{
$keys
=
array_unique
(
[
...
array_diff
(
$keys
,
$this
->datamap
)
, ...
array_keys
(
$this
->datamap
)
]
)
;
}
$return
=
[
]
;
// Loop over the properties, to allow magic methods to do their thing.
foreach
(
$keys
as
$key
)
{
if
(
$onlyChanged
&& !
$this
->
hasChanged
(
$key
)
)
{
continue
;
}
$return
[
$key
]
=
$this
->
__get
(
$key
)
;
if
(
$recursive
)
{
if
(
$return
[
$key
]
instanceof self
)
{
$return
[
$key
]
=
$return
[
$key
]
->
toArray
(
$onlyChanged
,
$cast
,
$recursive
)
;
}
elseif
(
is_callable
(
[
$return
[
$key
]
, 'toArray'
]
)
)
{
$return
[
$key
]
=
$return
[
$key
]
->
toArray
(
)
;
}
}
if
(
!
$command
instanceof ChangeSetAware
)
{
continue
;
}
$command
->
requestChangeSet
(
)
;
}
}
)
;
$result
=
$this
->productRepository->
update
(
[
$update
]
, Context::
createDefaultContext
(
)
)
;
$changeSet
=
$this
->
getChangeSet
(
ProductDefinition::ENTITY_NAME,
$result
)
;
static
::
assertTrue
(
$changeSet
->
hasChanged
(
'stock'
)
)
;
static
::
assertEquals
(
1,
$changeSet
->
getBefore
(
'stock'
)
)
;
static
::
assertEquals
(
100,
$changeSet
->
getAfter
(
'stock'
)
)
;
}
public
function
testUpdateWithSameValue
(
)
: void
{
$id
=
$this
->ids->
get
(
'product'
)
;
$update
=
[
'id' =>
$id
, 'stock' => 1
]
;
$this
->
getContainer
(
)
->
get
(
'event_dispatcher'
)
$changeSet
=
$result
->
getChangeSet
(
)
;
if
(
!
$changeSet
)
{
continue
;
}
$type
=
$changeSet
->
getBefore
(
'type'
)
;
if
(
$type
!== LineItem::PRODUCT_LINE_ITEM_TYPE
)
{
continue
;
}
if
(
!
$changeSet
->
hasChanged
(
'referenced_id'
)
&& !
$changeSet
->
hasChanged
(
'quantity'
)
)
{
continue
;
}
$ids
[
]
=
$changeSet
->
getBefore
(
'referenced_id'
)
;
$ids
[
]
=
$changeSet
->
getAfter
(
'referenced_id'
)
;
}
/** @var list<string> $ids */
$ids
=
array_filter
(
array_unique
(
$ids
)
)
;
if
(
empty
(
$ids
)
)
{