public function preUpdate(LifecycleEventArgs $args) { $entity = $args->getEntity(); if (!$entity instanceof Publishable) { return; } if (!$args->hasChangedField('status')) { return; } $old = $args->getOldValue('status'); $new = $args->getNewValue('status'); if ($old == Chalk::STATUS_DRAFT) { if ($new == Chalk::STATUS_PUBLISHED) { if (!isset($entity->publishDate)) { $entity->publishDate = new Carbon(); } } else { if ($new == Chalk::STATUS_ARCHIVED) { if (!isset($entity->publishDate)) { $entity->publishDate = new Carbon(); } if (!isset($entity->archiveDate)) { $entity->archiveDate = new Carbon(); } } } } else { if ($old == Chalk::STATUS_PUBLISHED) { if ($new == Chalk::STATUS_ARCHIVED) { if (!isset($entity->archiveDate)) { $entity->archiveDate = new Carbon(); } } } else { if ($old == Chalk::STATUS_ARCHIVED) { $entity->archiveDate = null; } } } }