src/EventSubscriber/EntityStatusUpdateSubscriber.php line 11

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use Pimcore\Event\Model\DataObjectEvent;
  4. use Pimcore\Model\DataObject\Organization;
  5. use Carbon\Carbon;
  6. class EntityStatusUpdateSubscriber
  7. {
  8. public function postUpdate(DataObjectEvent $event)
  9. {
  10. $object = $event->getObject();
  11. // Ensure the object is an instance of Organization
  12. if ($object instanceof Organization) {
  13. // Check if the status is "trial"
  14. if ($object->getStatus() === "trial") {
  15. $today = Carbon::now(); // Get the current date
  16. $trialLimitDays = (int) $object->getTrialLimit(); // Get trial limit in days
  17. $activationDate = Carbon::parse($object->getPackageActivationDate()); // Parse the activation date
  18. // Calculate the trial expiration date
  19. $trialExpirationDate = (clone $activationDate)->addDays($trialLimitDays);
  20. // If the current date is strictly greater than the trial expiration date
  21. if ($today->greaterThan($trialExpirationDate)) {
  22. $object->setStatus("expired"); // Set status to "expired"
  23. $object->save(); // Persist the changes
  24. }
  25. }
  26. }
  27. }
  28. }