ExtraDataWithParentTrait.php 903 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. <?php
  2. namespace ExtraDataBundle\Entity\Traits;
  3. trait ExtraDataWithParentTrait
  4. {
  5. use ExtraDataTrait;
  6. /**
  7. * @param string $extraData
  8. *
  9. * @return $this
  10. */
  11. public function setExtraData($extraData = null)
  12. {
  13. $this->extraData = $this->extraDataDiff($extraData);
  14. return $this;
  15. }
  16. /**
  17. * @param string $extraData
  18. *
  19. * @return string
  20. */
  21. public function extraDataDiff($extraData = null)
  22. {
  23. $parentExtraData = array();
  24. if (!is_null($this->parent)) {
  25. $parentExtraData = json_decode($this->parent->getExtraData(), true);
  26. }
  27. $extraDataArray = (array)json_decode($extraData, true);
  28. if (json_last_error() === JSON_ERROR_NONE) {
  29. return json_encode(array_diff($extraDataArray, $parentExtraData), JSON_UNESCAPED_UNICODE);
  30. }
  31. return $extraData;
  32. }
  33. }