code: public function onBeforeWrite()
      {
          // Only update if DB fields have been changed
          $changedFields = $this->owner->getChangedFields(true, 2);
          if ($changedFields) {
              $this->owner->LastEditedByName = $this->owner->getEditorName();
              $this->owner->OwnerNames = $this->owner->getOwnerNames();
          }
  
          // If the user changed the type, we need to recalculate the review date.
          if ($this->owner->isChanged("ContentReviewType", 2)) {
              if ($this->owner->ContentReviewType == "Disabled") {
                  $this->setDefaultReviewDateForDisabled();
              } elseif ($this->owner->ContentReviewType == "Custom") {
                  $this->setDefaultReviewDateForCustom();
              } else {
                  $this->setDefaultReviewDateForInherited();
              }
          }
  
          // Ensure that a inherited page always have a next review date
          if ($this->owner->ContentReviewType == "Inherit" && !$this->owner->NextReviewDate) {
              $this->setDefaultReviewDateForInherited();
          }
  
          // We need to update all the child pages that inherit this setting. We can only
          // change children after this record has been created, otherwise the stageChildren
          // method will grab all pages in the DB (this messes up unit testing)
          if (!$this->owner->exists()) {
              return;
          }
  
          // parent page change its review period
          // && !$this->owner->isChanged('ContentReviewType', 2)
          if ($this->owner->isChanged('ReviewPeriodDays', 2)) {
              $nextReviewUnixSec = strtotime(
                  ' + ' . $this->owner->ReviewPeriodDays . ' days',
                  DBDatetime::now()->getTimestamp()
              );
              $this->owner->NextReviewDate = DBDate::create()->setValue($nextReviewUnixSec)->Format('y-MM-dd');
          }
      }
docs: Set the review data from the review period, if set.