protected function constructDerived($bean, $setDefaults) { assert('$bean === null || $bean instanceof RedBean_OODBBean'); assert('is_bool($setDefaults)'); parent::constructDerived($bean, $setDefaults); $metadata = $this->getMetadata(); foreach ($metadata as $unused => $classMetadata) { if (isset($classMetadata['customFields'])) { foreach ($classMetadata['customFields'] as $customFieldName => $customFieldDataName) { $customField = $this->unrestrictedGet($customFieldName); $customFieldData = CustomFieldData::getByName($customFieldDataName); if ($bean === null) { if ($customField instanceof CustomField && ($customField->value === null || $customField->value === '') && $setDefaults) { $customField->value = $customFieldData->defaultValue; } elseif ($customField instanceof MultipleValuesCustomField && $customField->values->count() == 0 && $setDefaults && isset($customFieldData->defaultValue)) { $customFieldValue = new CustomFieldValue(); $customFieldValue->value = $customFieldData->defaultValue; $customField->values->add($customFieldValue); } } $customField->data = $customFieldData; } } } }