| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 | 
							- <?php
 
- /**
 
-  * @file
 
-  * Provides legacy application programming interface (API) to manage controlled
 
-  * vocabularies in the Chado database.
 
-  */
 
- /**
 
-  * @defgroup tripal_legacy_chado_cv_api Legacy Chado CV
 
-  * @ingroup tripal_legacy_api
 
-  * @{
 
-  * Provides an application programming interface (API) to manage entities
 
-  * that use Chado as their base data.
 
-  * @}
 
-  */
 
- /**
 
-  * Retrieves the default vocabulary for a given table and field.
 
-  *
 
-  * Each table in Chado that has a 'type_id' (or foreign key constraint to
 
-  * the cvterm table) will have a default vocabulary assigned. This indicates to
 
-  * Tripal that terms in that vocabulary are used to set the type_id for that
 
-  * table. An example where this is used is the
 
-  * tripal_get_cvterm_select_options() function which generates a list of options
 
-  * for a select box used in a Drupal form.  The select box will list the terms
 
-  * from the default vocabulary in the drop down.
 
-  *
 
-  * This function uses the Chado table and field name (e.g. 'type_id') to
 
-  * retreive the vocabulary assgined.
 
-  *
 
-  * @param $table
 
-  *   The name of the table that contains a field with a foreign key
 
-  *   relationship to the cvterm table
 
-  * @param $field
 
-  *   The table field name that has the foreign key relationship to the
 
-  *   cvterm table for which the default vocabulary will be set
 
-  *
 
-  * @return
 
-  *   The cv object of the default vocabulary or an empty array if not
 
-  *   available.
 
-  *
 
-  * @ingroup tripal_legacy_chado_cv_api
 
-  */
 
- function tripal_get_default_cv($table, $field) {
 
-   $sql = "
 
-     SELECT cv_id
 
-     FROM {tripal_cv_defaults}
 
-     WHERE table_name = :table and field_name = :field
 
-   ";
 
-   $cv_id = db_query($sql, [
 
-     ':table' => $table,
 
-     ':field' => $field,
 
-   ])->fetchField();
 
-   return tripal_get_cv(['cv_id' => $cv_id]);
 
- }
 
- /**
 
-  * Retrieves the Chado table to which a vocbulary is set as default.
 
-  *
 
-  * Each table in Chado that has a 'type_id' (or foreign key constraint to
 
-  * the cvterm table) will have a default vocabulary assigned. This indicates to
 
-  * Tripal that terms in that vocabulary are used to set the type_id for that
 
-  * table. An example where this is used is the
 
-  * tripal_get_cvterm_select_options() function which generates a list of options
 
-  * for a select box used in a Drupal form.  The select box will list the terms
 
-  * from the default vocabulary in the drop down.
 
-  *
 
-  * This function uses the vocabulary ID to get the Chado table to which it
 
-  * is assigned.
 
-  *
 
-  * @param $cv_id
 
-  *  The ID of the vocabulary.
 
-  *
 
-  * @return
 
-  *   If an assignment is present, an object containing the 'table_name' and
 
-  *   'field_name' is returned.
 
-  *
 
-  * @ingroup tripal_legacy_chado_cv_api
 
-  */
 
- function tripal_get_default_cv_table($cv_id) {
 
-   $default = db_select('tripal_cv_defaults', 't')
 
-     ->fields('t', ['table_name', 'field_name'])
 
-     ->condition('cv_id', $cv_id)
 
-     ->execute()
 
-     ->fetchObject();
 
-   return $default;
 
- }
 
- /**
 
-  * Create an options array to be used in a form element
 
-  * which provides a list of all chado cvterms. Unlike the
 
-  * tripal_get_cvterm_select_option, this function retreives the cvterms using
 
-  * the default vocabulary set for a given table and field.  It will also
 
-  * notify the administrative user if a default vocabulary is missing for the
 
-  * field and if the vocabulary is empty.
 
-  *
 
-  * @param $table
 
-  *   The name of the table that contains the field with a foreign key
 
-  *   relationship to the cvterm table
 
-  * @param $field
 
-  *   The table field name that has the foreign key relationship to the
 
-  *   cvterm table for which the default vocabulary will be set
 
-  * @param $field_desc
 
-  *   A human readable descriptive name for the field
 
-  *
 
-  * @return
 
-  *   An array(cvterm_id => name)
 
-  *   for each cvterm in the chado cvterm table where cv_id=that supplied
 
-  *
 
-  * @ingroup tripal_legacy_chado_cv_api
 
-  */
 
- function tripal_get_cvterm_default_select_options($table, $field, $field_desc) {
 
-   $default_cv = tripal_get_default_cv($table, $field);
 
-   $options = [];
 
-   if ($default_cv) {
 
-     $options = tripal_get_cvterm_select_options($default_cv->cv_id);
 
-     if (count($options) == 0) {
 
-       tripal_set_message('There are no ' . $field_desc . '. Please ' .
 
-         l('add terms',
 
-           'admin/tripal/loaders/chado_vocabs/chado_cv/' . $default_cv->cv_id . '/cvterm/add',
 
-           ['attributes' => ['target' => '_blank']]) . ' to the ' .
 
-         $default_cv->name . ' vocabulary.',
 
-         TRIPAL_WARNING);
 
-     }
 
-   }
 
-   else {
 
-     tripal_set_message('There is not a default vocabulary set for ' . $field_desc . '. ' .
 
-       'Please set one using the ' .
 
-       l('vocabulary defaults configuration page',
 
-         'admin/tripal/vocab/defaults',
 
-         ['attributes' => ['target' => '_blank']]) . '.',
 
-       TRIPAL_WARNING);
 
-   }
 
-   return $options;
 
- }
 
- /**
 
-  * This function sets the default vocabulary for a given table and field.
 
-  *
 
-  * @param $table
 
-  *   The name of the table that contains a field with a foreign key
 
-  *   relationship to the cvterm table
 
-  * @param $field
 
-  *   The table field name that has the foreign key relationship to the
 
-  *   cvterm table for which the default vocabulary will be set
 
-  * @param $cv_name
 
-  *   The name of the vocabulary
 
-  *
 
-  * @return
 
-  *   TRUE if set, FALSE if an error occured
 
-  *
 
-  * @ingroup tripal_legacy_chado_cv_api
 
-  */
 
- function tripal_set_default_cv($table, $field, $cv_name, $cv_id = FALSE) {
 
-   // Get the CV object
 
-   if ($cv_id) {
 
-     $cv = tripal_get_cv(['cv_id' => $cv_id]);
 
-   }
 
-   else {
 
-     $cv = tripal_get_cv(['name' => $cv_name]);
 
-   }
 
-   if ($cv) {
 
-     // first delete any entries for this table and field
 
-     $num_deleted = db_delete('tripal_cv_defaults')
 
-       ->condition('table_name', $table)
 
-       ->condition('field_name', $field)
 
-       ->execute();
 
-     // now add the default value
 
-     $cv_default_id = db_insert('tripal_cv_defaults')
 
-       ->fields([
 
-         'table_name' => $table,
 
-         'field_name' => $field,
 
-         'cv_id' => $cv->cv_id,
 
-       ])
 
-       ->execute();
 
-     if (!$cv_default_id) {
 
-       tripal_report_error('tripal_chado', TRIPAL_WARNING,
 
-         "Cannot set default vocabulary for %table.%field. Check the error logs.",
 
-         ['%table' => $table, '%field' => $field]);
 
-       return FALSE;
 
-     }
 
-   }
 
-   else {
 
-     tripal_report_error('tripal_chado', TRIPAL_WARNING,
 
-       "Cannot set default vocabulary for %table.%field. The vocabulary name, '%cvname', doesn't exist.",
 
-       ['%table' => $table, '%field' => $field, '%cvname' => $cv_name]);
 
-     return FALSE;
 
-   }
 
- }
 
 
  |