Tripal
|
Public Member Functions | |
__construct ($field, $instance) | |
getFieldName () | |
getField () | |
getInstance () | |
getFieldTerm () | |
getFieldTermID () | |
webServicesData () | |
viewsData ($view_base_id) | |
validate ($entity_type, $entity, $langcode, $items, &$errors) | |
load ($entity) | |
elementInfo () | |
settingsForm ($has_data) | |
settingsFormValidate ($form, &$form_state) | |
instanceSettingsForm () | |
settingsTheme ($element) | |
instanceSettingsFormValidate ($form, &$form_state) | |
createInstance () | |
query ($query, $condition) | |
queryOrder ($query, $order) | |
getValueList ($options=[], $keyword=NULL) | |
Static Public Member Functions | |
static | info () |
Protected Member Functions | |
_addWebServiceElement (&$searchable_keys, &$sortable_keys, $parent_term_name, $parent_term, $element_name, $element_details) | |
_addViewsDataElement (&$data, $view_base_id, $parent, $element_name, $element_details) | |
Protected Attributes | |
$field | |
$instance | |
$term | |
TripalField::__construct | ( | $field, | |
$instance | |||
) |
Instantiates a new TripalField object.
$field | An array containing the field data as returned by field_info_field(). |
$instance | An array containing the instance data as returned by field_instance_info(). |
Reimplemented in remote__data, and sbo__relationship.
|
protected |
unknown | $data | |
unknown | $view_base_id | |
unknown | $parent | |
unknown | $element_name | |
unknown | $element_details |
|
protected |
$searchabe_keys | |
$field_name | |
$element_name | |
$element_details |
TripalField::createInstance | ( | ) |
After a field instance is created the following function is run.
This function is equivalent to the hook_field_create_field() hook of the Drupal Field API. This function is invoked after a new field instance is created.
TripalField::elementInfo | ( | ) |
Provides the list of elements returned by the 'value' of the field.
The elements provided by this function are used to integrate with Drupal Views and Web services. The return value is an associative array that contains all of the elements that will be returned by the 'value' of this field. If the value field returns an element which is not defined here a warning will be generated.
The array structure should contain at the top-level a key of the form {db}:{accession}. This represents the term that this field belongs to. The value of this top-level key is an array with the following keys: -name: this key is not actually used but is availble to improve readability of the array. Because the key is a vocabulary term containing only the accession it's not always clear what it means. Providing a 'name' key helps other's know what the term is. -searchable: TRUE if the element can be used for filtering the content type to which tis field is attached. FALSE if not. -operations: an array of filtering operations that can be used for this field. These include: 'eq', 'ne', 'contains', 'starts', 'gt', 'lt', 'gte', 'lte'. These opertaions are applicable to strings: 'eq', 'ne', 'contains', and 'starts'. These operations are applicable for numeric values: 'gt', 'lt', 'gte', 'lte'. -label: The label (if applicable) to appear for the elmeent. The default is to use the term's name. -help: Help text (if applicable) to appear for the element. The default is to use the term's definition. -type: The data type: e.g. 'string' or 'numeric'. Default is 'string'. -sortable: TRUE if the element can be sorted. FALSE if not. -elements: If this field value is a simple scalar (i.e. string or number) then this key is not needed. But, if the 'value' of the field is an array with sub keys then those subkeys must be defined using this key. The members of the element array follows the same format as the top-level key and the above subkeys can be used as well.
The following code provides an example for describing the value elements of this field. The Tripal Chado module provides an obi__organism field that attaches organism details to content types such as genes, mRNA, stocks, etc. It provides a label containing the full scientific name of the organism as well as the genus, species, infraspecific name, and infraspecific type. If the organism to which the field belong is published then an entity ID is provided. The following array describes all of these.
If a field does not have a complex nested set of values, but simply returns a scalar then the default elementInfo provides default string-based searchabilty.
Reimplemented in taxrank__infraspecific_taxon, so__transcript, so__genotype, so__cds, sio__references, sio__annotation, sep__protocol, schema__publication, sbo__relationship, sbo__phenotype, sbo__database_cross_reference, operation__phylotree_vis, operation__analysis, ogi__location_on_map, obi__organism, local__source_data, local__contact, go__gene_expression, efo__array_design, data__sequence_record, data__sequence_length, data__sequence_coordinates, data__sequence_checksum, data__sequence, data__protein_sequence, and chado_linker__contact.
TripalField::getFieldName | ( | ) |
Retrives the name of this field.
TripalField::getValueList | ( | $options = [] , |
|
$keyword = NULL |
|||
) |
Used to retrieve a distinct list of values already used for the current field instance.
$keyword | A string option used to filter the distinct list. This is used when creating an autocomplete. For all distinct values, set this to NULL. |
$options | An array where options for how to generate this list can be specified. Supported options include:
|
Reimplemented in ChadoField.
|
static |
Provides default information about this field type
This function corresponds to the hook_field_info() function of the Drupal Field API.
TripalField::instanceSettingsForm | ( | ) |
Provides a form for the 'Field Settings' of an instance of this field.
This function corresponds to the hook_field_instance_settings_form() function of the Drupal Field API.
Validation of the instance settings form is not supported by Drupal, but the TripalField class does provide a mechanism for supporting validation. To allow for validation of your setting form you must call the parent in your child class:
Additinally, theming of the instance setting form is not supported by Drupal, but Tripal will allow you to theme form elements if you place them in the $element['themeable'] variable. However, if you place form elements there you must set corresponding form elements of type 'value' at the base level of the element array and copy appropriate settings values from the $form_state['values']['instance']['settings']['themeable'] variable into the $form_state['values']['instance']['settings'] variable. Do this in the instanceSettingsFormValidate()
function.
Please note, the form generated with this function does not easily support AJAX calls in the same way that other Drupal forms do. If you need to use AJAX you must manually alter the $form in your ajax call. The typical way to handle updating the form via an AJAX call is to make the changes in the form function itself but that doesn't work here.
Reimplemented in remote__data, so__transcript, schema__additional_type, sbo__relationship, obi__organism, and ChadoField.
TripalField::instanceSettingsFormValidate | ( | $form, | |
& | $form_state | ||
) |
Provides validation of the instance settings form.
There is no equivalent function in the Drupal Field API. Validation of instance settings forms in Drupal is not supported. However, the TripalField provides this function to fill the gap. See the documentation for the instanceSettingsForm() function for instructions to support use of this function.
$form | |
$form_state |
Reimplemented in remote__data, so__transcript, and sbo__relationship.
TripalField::load | ( | $entity | ) |
Loads the field values from the underlying data store.
$entity |
Reimplemented in WebServicesField, remote__data, uo__unit, taxrank__infraspecific_taxon, so__transcript, so__genotype, so__cds, sio__vocabulary, sio__references, sio__annotation, sep__protocol, schema__publication, schema__alternate_name, schema__additional_type, sbo__relationship, sbo__phenotype, sbo__database_cross_reference, operation__phylotree_vis, operation__analysis, ogi__location_on_map, obi__organism, local__source_data, local__contact, go__gene_expression, efo__array_design, data__sequence_record, data__sequence_coordinates, data__sequence, data__protein_sequence, data__accession, chado_linker__prop, chado_linker__contact, rdfs__type, and content_type.
TripalField::query | ( | $query, | |
$condition | |||
) |
Used to filter records that match a given condition.
Records that belong to a content type can be filtered using the fields. This function should be implemented if the field supports filtering as specified in the elementInfo() function. With this function, the query object appropriate for the storage back-end is passed into the function.
The condition array passesd in will have three values:
The column used for filtering will be a comma-speperated list of controlled vocabulary IDs. This comma-separate list corresponds directly to the heirarchy of elements provided by the elementInfo() function. For example, if a field provides organism information then it may use the OBI:0100026 term for the field, and the term TAXRANK:0000005 for the term to indicate the 'Genus'. If these fields are properly organized in the elementInfo() function then the "column" of the condition when a user wants to search by genus will be: OBI:0100026,TAXRANK:0000005.
$query | A query object appropriate for the data storage backend. For example, The Tripal Chado module will provide a SelectQuery object. |
$condition | The field specific condition as set in the TripalFieldQuery object. |
Reimplemented in uo__unit, taxrank__infraspecific_taxon, sio__vocabulary, sio__annotation, sep__protocol, schema__alternate_name, schema__additional_type, sbo__relationship, sbo__database_cross_reference, operation__analysis, ogi__location_on_map, obi__organism, local__source_data, local__contact, efo__array_design, data__sequence_coordinates, data__accession, ChadoField, chado_linker__prop, and chado_linker__contact.
TripalField::queryOrder | ( | $query, | |
$order | |||
) |
Used to sort records that have been filtered.
$query | A query object appropriate for the data storage backend. For example, The Tripal Chado module will provide a SelectQuery object. |
$order | The field ordering as set in the TripalFieldQuery object. This function should handle the ordering request as specified by this object. |
Reimplemented in uo__unit, taxrank__infraspecific_taxon, sio__vocabulary, sio__annotation, sep__protocol, schema__alternate_name, schema__additional_type, sbo__relationship, sbo__database_cross_reference, operation__analysis, ogi__location_on_map, obi__organism, local__source_data, local__contact, efo__array_design, data__sequence_coordinates, data__accession, ChadoField, chado_linker__prop, and chado_linker__contact.
TripalField::settingsForm | ( | $has_data | ) |
Provides a form for the 'Field Settings' of the field management page.
This is an optional hook function and is similar to the hook_field_settings_form function().
$has_data | TRUE if the field already has data, FALSE if not. |
Reimplemented in rdfs__type.
TripalField::settingsFormValidate | ( | $form, | |
& | $form_state | ||
) |
Validates the instance settings form.
Remember if you used the 'themeable' option for form elements you must copy the values correctly. See the description in hte instanceSettingsForm()
function for details.
$form | The form object. |
$form_state | The form_state object. |
Reimplemented in schema__additional_type, and rdfs__type.
TripalField::settingsTheme | ( | $element | ) |
The theme function for the instance settings form.
$element | A form element array containing basic properties for the widget:
|
Reimplemented in so__transcript.
TripalField::validate | ( | $entity_type, | |
$entity, | |||
$langcode, | |||
$items, | |||
& | $errors | ||
) |
Perform validation of the field regardless how it is updated.
Any errors encountered should be indicated by adding a value to the $errors array according to the instructions below.
$entity_type | The type of $entity. |
$entity | The entity for the operation. |
$langcode | The language associated with $items. |
$items | $entity->{$field['field_name']}[$langcode], or an empty array if unset. |
$errors | The array of errors (keyed by field name, language code, and delta) that have already been reported for the entity. The function should add its errors to this array. Each error is an associative array with the following keys and values:
|
Reimplemented in sio__vocabulary, sio__annotation, sbo__relationship, sbo__database_cross_reference, operation__phylotree_vis, obi__organism, efo__array_design, and data__accession.
TripalField::viewsData | ( | $view_base_id | ) |
Describes this field to Views.
The child class need not implement this function has all of the details provided for elements by the elementInfo() function are used to generate the details needed for Views.
$view_base_id | Views was originally designed to integrate with SQL tables. And each field is associated with a table. Because these are TripalFields and views is not directly querying the tables it doesn't make sense to associate fields with a table, but we must associate the fields with the bundle. Each bundle is uniquely identified with the $view_base_id that is passed here. |
TripalField::webServicesData | ( | ) |
Describes this field to Tripal web services.
The child class need not implement this function. It has all of the details provided for elements by the elementInfo() function are used to generate the details needed for Views.
|
static |
|
static |
|
static |