public function onBeforeWrite()
 {
     parent::onBeforeWrite();
     // only operate on staging content
     if (Versioned::current_stage() != 'Live') {
         if (strlen($this->owner->PublishOnDate)) {
             $changed = $this->owner->getChangedFields();
             $changed = isset($changed['PublishOnDate']);
             if ($changed && $this->owner->PublishJobID) {
                 if ($this->owner->PublishJob()->exists()) {
                     $this->owner->PublishJob()->delete();
                 }
                 $this->owner->PublishJobID = 0;
             }
             if (!$this->owner->PublishJobID && strtotime($this->owner->PublishOnDate) > time()) {
                 $job = new WorkflowPublishTargetJob($this->owner, 'publish');
                 $this->owner->PublishJobID = singleton('QueuedJobService')->queueJob($job, $this->owner->PublishOnDate);
             }
         }
         if (strlen($this->owner->UnPublishOnDate)) {
             $changed = $this->owner->getChangedFields();
             $changed = isset($changed['UnPublishOnDate']);
             if ($changed && $this->owner->UnPublishJobID) {
                 if ($this->owner->UnPublishJob()->exists()) {
                     $this->owner->UnPublishJob()->delete();
                 }
                 $this->owner->UnPublishJobID = 0;
             }
             if (!$this->owner->UnPublishJobID && strtotime($this->owner->UnPublishOnDate) > time()) {
                 $job = new WorkflowPublishTargetJob($this->owner, 'unpublish');
                 $this->owner->UnPublishJobID = singleton('QueuedJobService')->queueJob($job, $this->owner->UnPublishOnDate);
             }
         }
     }
 }
 public function onBeforeWrite()
 {
     parent::onBeforeWrite();
     if ($this->owner->FirstExecution) {
         $changed = $this->owner->getChangedFields();
         $changed = isset($changed['FirstExecution']) || isset($changed['ExecuteEvery']) || isset($changed['ExecuteFree']);
         if ($changed && $this->owner->ScheduledJobID) {
             if ($this->owner->ScheduledJob()->exists()) {
                 $this->owner->ScheduledJob()->delete();
             }
             $this->owner->ScheduledJobID = 0;
         }
         if (!$this->owner->ScheduledJobID) {
             $job = new ScheduledExecutionJob($this->owner);
             $time = date('Y-m-d H:i:s');
             if ($this->owner->FirstExecution) {
                 $time = date('Y-m-d H:i:s', strtotime($this->owner->FirstExecution));
             }
             $this->owner->ScheduledJobID = singleton('QueuedJobService')->queueJob($job, $time);
         }
     }
 }
 function onBeforeWrite()
 {
     if ($this->owner->Status == 'Paid' && $this->owner->NumSoldDone == 0) {
         $this->owner->NumSoldDone = 1;
         if ($orderItems = $this->owner->Items()) {
             foreach ($orderItems as $orderItem) {
                 if ($buyable = $orderItem->Buyable()) {
                     $oldNum = $buyable->NumberSold;
                     $newNum = $oldNum + $orderItem->Quantity;
                     $buyable->NumberSold = $newNum;
                     $buyable->write();
                     if ($buyable->ProductID > 0) {
                         if ($parent = DataObject::get_by_id("Product", $buyable->ProductID)) {
                             $parentOldNum = $parent->NumberSold;
                             $parent->NumberSold = $parentOldNum + $newNum;
                             $parent->write();
                         }
                     }
                 }
             }
         }
     }
     parent::onBeforeWrite();
 }
	public function onBeforeWrite() {
		parent::onBeforeWrite();
		foreach ($this->getEnforcedValues() as $field => $value)
			$this->owner->$field = $value;
	}
 /**
  * Standard SS method
  */
 function onBeforeWrite()
 {
     parent::onBeforeWrite();
     //see issue 148
     if ($this->owner->OrderID) {
         $this->owner->PaidForID = $this->owner->OrderID;
         $this->owner->PaidForClass = "Order";
     }
     if ($this->owner->PaidForID && !$this->owner->OrderID) {
         $this->owner->OrderID = $this->owner->PaidForID;
         $this->owner->PaidForClass = "Order";
     }
 }