public function saveInto(DataObjectInterface $record)
 {
     $value = $this->value;
     $fieldName = $this->getName();
     if ($record->has_one($fieldName)) {
         $record->{$fieldName . 'ID'} = $value;
     }
     return $this;
 }
Example #2
0
 public function saveInto(DataObjectInterface $record)
 {
     if (!isset($_FILES[$this->name])) {
         return false;
     }
     $fileClass = File::get_class_for_file_extension(pathinfo($_FILES[$this->name]['name'], PATHINFO_EXTENSION));
     if ($this->relationAutoSetting) {
         // assume that the file is connected via a has-one
         $hasOnes = $record->has_one($this->name);
         // try to create a file matching the relation
         $file = is_string($hasOnes) ? Object::create($hasOnes) : new $fileClass();
     } else {
         $file = new $fileClass();
     }
     $this->upload->loadIntoFile($_FILES[$this->name], $file, $this->folderName);
     if ($this->upload->isError()) {
         return false;
     }
     $file = $this->upload->getFile();
     if ($this->relationAutoSetting) {
         if (!$hasOnes) {
             return false;
         }
         // save to record
         $record->{$this->name . 'ID'} = $file->ID;
     }
     return $this;
 }
Example #3
0
 public function saveInto(DataObjectInterface $record)
 {
     // Check required relation details are available
     $fieldname = $this->getName();
     if (!$fieldname) {
         return $this;
     }
     // Get details to save
     $idList = $this->getItemIDs();
     // Check type of relation
     $relation = $record->hasMethod($fieldname) ? $record->{$fieldname}() : null;
     if ($relation && ($relation instanceof RelationList || $relation instanceof UnsavedRelationList)) {
         // has_many or many_many
         $relation->setByIDList($idList);
     } elseif ($record->has_one($fieldname)) {
         // has_one
         $record->{"{$fieldname}ID"} = $idList ? reset($idList) : 0;
     }
     return $this;
 }
 /**
  * Saves the field into a record
  * @param  DataObjectInterface $record
  * @return FileAttachmentField
  */
 public function saveInto(DataObjectInterface $record)
 {
     $fieldname = $this->getName();
     if (!$fieldname) {
         return $this;
     }
     // Handle deletions. This is a bit of a hack. A workaround for having a single form field
     // post two params.
     $deletions = Controller::curr()->getRequest()->postVar('__deletion__' . $this->getName());
     if ($deletions) {
         foreach ($deletions as $id) {
             $this->deleteFileByID($id);
         }
     }
     if ($relation = $this->getRelation()) {
         $relation->setByIDList($this->Value());
     } elseif ($record->has_one($fieldname)) {
         $record->{"{$fieldname}ID"} = $this->Value() ?: 0;
     } elseif ($record->hasField($fieldname)) {
         $record->{$fieldname} = is_array($this->Value()) ? implode(',', $this->Value()) : $this->Value();
     }
     return $this;
 }