public function onBeforeWrite()
 {
     parent::onBeforeWrite();
     if ($this->Content && $this->UploadToken && $this->UploadToken == $this->SuppliedToken) {
         $this->SuppliedToken = '';
         $this->UploadToken = '';
         $data = json_decode($this->Content);
         if ($data && is_array($data->response)) {
             $this->syncrotronService->processUpdateData($data->response);
         }
     }
     if (strlen($this->UploadToken) === 0) {
         $this->UploadToken = mt_rand(100000, 999999);
     }
 }
 public function push($data, Form $form)
 {
     $toNode = $data['TargetNode'];
     if ($toNode) {
         $node = DataList::create('RemoteSyncroNode')->byID($toNode);
         if ($node) {
             $status = $this->syncrotronService->pushChangeset($this->record, $node);
             if (is_array($status)) {
                 $form->sessionMessage($status[1], $status[0] ? 'good' : 'bad');
             }
         }
     }
     $controller = $form->getController()->getTopLevelController();
     $controller->getRequest()->addHeader('X-Pjax', 'Content');
     return $controller->redirect($form->getController()->Link(), 302);
 }
 public function fromSyncro($properties)
 {
     $this->syncrotronService->unsyncroObject($properties, $this);
     // now make sure the other things are aligned
     if (isset($properties->Post_ThreadEmail)) {
         $member = DataList::create('Member')->filter(array('Email' => $properties->Post_ThreadEmail))->first();
         if ($member) {
             $this->ThreadOwnerID = $member->ID;
         }
     }
     if (isset($properties->Post_OwnerEmail)) {
         $member = DataList::create('Member')->filter(array('Email' => $properties->Post_OwnerEmail))->first();
         if ($member) {
             $this->OwnerID = $member->ID;
         }
     }
     // bind the correct permission source
     $this->permissionSource();
 }