Example #1
0
 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;
             }
         }
     }
 }