Example #1
0
 function test(DataObject $do, array &$errors)
 {
     $dependency = true;
     $db = DB::Instance();
     foreach ($this->cc as $c) {
         $str = $db->qstr($do->getField($c['constraint']->fieldname)->finalvalue) . ' ' . $c['constraint']->operator . ' ' . $c['constraint']->value;
         eval("\$a={$str};");
         if (!$a) {
             $dependency = false;
         }
     }
     if ($dependency) {
         foreach ($this->fields as $field) {
             $value = $do->getField($field)->finalvalue;
             if (empty($value) && $value !== 0 && $value !== '0') {
                 if (count($this->fields) == 1) {
                     $errors[$this->fields[0]] = sprintf($this->message_stub, $do->getField($field)->tag);
                 } else {
                     $fieldlist = '';
                     foreach ($this->fields as $fieldname) {
                         $fieldlist .= $do->getField($fieldname)->tag . ',';
                     }
                     $fieldlist = substr($fieldlist, 0, -1);
                     $errors[$this->fields[0]] = sprintf($this->message_stub2, $fieldlist);
                 }
                 return false;
             }
         }
     }
     return $do;
 }
 function test(DataObject $do, array &$errors)
 {
     $db = DB::Instance();
     $fk_do = DataObjectFactory::Factory($this->fk_do);
     $values = array();
     $fields = array();
     foreach ($this->fields as $field => $fk_field) {
         if ($do->getField($field)->notnull || !empty($do->getField($field)->finalvalue)) {
             $values[] = $do->getField($field)->finalvalue;
             $fields[] = $fk_field;
             $names[] = $do->getField($field)->tag;
         }
     }
     if (empty($fields) || $fk_do->loadBy($fields, $values) && $fk_do->isLoaded()) {
         return $do;
     }
     $errors[key($this->fields)] = sprintf($this->message_stub, implode(',', $names));
     return FALSE;
 }
 /**
  * Get the list of extra data from the $record as saved into it by
  * {@see Form::saveInto()}
  *
  * Handles detection of falsey values explicitly saved into the
  * DataObject by formfields
  *
  * @param DataObject $record
  * @param SS_List $list
  * @return array List of data to write to the relation
  */
 protected function getExtraSavedData($record, $list)
 {
     // Skip extra data if not ManyManyList
     if (!$list instanceof ManyManyList) {
         return null;
     }
     $data = array();
     foreach ($list->getExtraFields() as $field => $dbSpec) {
         $savedField = "ManyMany[{$field}]";
         if ($record->hasField($savedField)) {
             $data[$field] = $record->getField($savedField);
         }
     }
     return $data;
 }
 /**
  * get value of a single composite field
  *
  * @param string $field
  * @return mixed
  */
 public function getField($field)
 {
     // Skip invalid fields
     $fields = $this->compositeDatabaseFields();
     if (!isset($fields[$field])) {
         return null;
     }
     // Check bound object
     if ($this->record instanceof DataObject) {
         $key = $this->getName() . $field;
         return $this->record->getField($key);
     }
     // Check local record
     if (isset($this->record[$field])) {
         return $this->record[$field];
     }
     return null;
 }
Example #5
0
 function test(DataObject $do, array &$errors)
 {
     $fail = false;
     $first_val = '';
     foreach ($this->fields as $fieldname) {
         if (empty($first_val)) {
             $first_val = $do->{$fieldname};
         } else {
             if ($do->{$fieldname} !== $first_val) {
                 $fail = true;
             }
         }
     }
     if ($fail) {
         $fieldlist = '';
         foreach ($this->fields as $fieldname) {
             $fieldlist .= $do->getField($fieldname)->tag . ',';
         }
         $fieldlist = substr($fieldlist, 0, -1);
         $errors[$this->fields[0]] = sprintf($this->message_stub, $fieldlist);
         return false;
     }
     return $do;
 }
 /**
  * returns field value for given fieldname with stripped slashes
  *
  * @param string $field fieldname
  * 
  * @return string 
  */
 public function getField($field)
 {
     $parentField = parent::getField($field);
     if (!is_null($parentField)) {
         $parentField = stripcslashes($parentField);
     }
     return $parentField;
 }
Example #7
0
 protected function addAuditFields(&$fields)
 {
     // get the fields for the base table/view for the collection
     // and add the audit fields if they exist in the table/view
     $do = new DataObject($this->_tablename);
     foreach ($do->audit_fields as $audit_field) {
         if ($do->isField($audit_field)) {
             $fields[$audit_field] = $do->getField($audit_field);
         }
     }
 }