/** * Get a field, creating it if necessary. * @param $fieldName string * @param $schemaPlugin string * @return object Field */ function &buildField($fieldName, $schemaPluginName) { $field =& $this->getFieldByName($fieldName, $schemaPluginName); if (!$field) { $schemaDao = DAORegistry::getDAO('SchemaDAO'); $schema =& $schemaDao->buildSchema($schemaPluginName); $field = new Field(); $field->setName($fieldName); $field->setSchemaId($schema->getSchemaId()); $plugin =& $field->getSchemaPlugin(); if (!$plugin) { fatalError('Unknown schema plugin "' . $schemaPlugin . '"!'); } if (!in_array($fieldName, $plugin->getFieldList())) { // This field doesn't actually exist -- return null. unset($field); $field = null; return $field; } $this->insertField($field); } return $field; }