"tripal_cv", 'value' => "ERROR: Chado most be installed before this module can be enabled", 'severity' => REQUIREMENT_ERROR, ); } } return $requirements; } /** * Implementation of hook_install(). * * @ingroup tripal_cv */ function tripal_cv_install() { // create the module's data directory tripal_create_moddir('tripal_cv'); // add the cv_root_mview tripal_cv_add_cv_root_mview(); // create the tables that correlate OBO files/references with a chado CV tripal_cv_add_obo_defaults(); } /** * Implementation of hook_uninstall(). * * @ingroup tripal_cv */ function tripal_cv_uninstall() { // remove the materialized view if ($mview = tripal_mviews_get_mview_id('cv_root_mview')) { tripal_mviews_action('delete', $mview); } } /** * Implementation of hook_schema(). * * @ingroup tripal_cv */ function tripal_cv_schema() { $schema['tripal_cv_obo'] = array( 'fields' => array( 'obo_id' => array( 'type' => 'serial', 'unsigned' => TRUE, 'not null' => TRUE ), 'name' => array( 'type' => 'varchar', 'length' => 255 ), 'path' => array( 'type' => 'varchar', 'length' => 1024 ), ), 'indexes' => array( 'tripal_cv_obo_idx1' => array('obo_id'), ), 'primary key' => array('obo_id'), ); return $schema; } /** * * @ingroup tripal_cv */ function tripal_cv_add_cv_root_mview() { $mv_name = 'cv_root_mview'; $comment = 'A list of the root terms for all controlled vocabularies. This is needed for viewing CV trees'; $schema = array( 'table' => $mv_name, 'description' => $comment, 'fields' => array( 'name' => array( 'type' => 'varchar', 'length' => 255, 'not null' => TRUE, ), 'cvterm_id' => array( 'type' => 'int', 'not null' => TRUE, ), 'cv_id' => array( 'type' => 'int', 'not null' => TRUE, ), 'cv_name' => array( 'type' => 'varchar', 'length' => 255, 'not null' => TRUE, ), ), 'indexes' => array( 'cv_root_mview_indx1' => array('cvterm_id'), 'cv_root_mview_indx2' => array('cv_id'), ), ); $sql = " SELECT DISTINCT CVT.name,CVT.cvterm_id, CV.cv_id, CV.name FROM cvterm_relationship CVTR INNER JOIN cvterm CVT on CVTR.object_id = CVT.cvterm_id INNER JOIN cv CV on CV.cv_id = CVT.cv_id WHERE CVTR.object_id not in (SELECT subject_id FROM cvterm_relationship) "; // Create the MView tripal_add_mview($mv_name, 'tripal_cv', $schema, $sql, $comment); } /** * Add's defaults to the tripal_cv_obo table * * @ingroup tripal_cv */ function tripal_cv_add_obo_defaults() { // insert commonly used ontologies into the tables $ontologies = array( array('Chado Feature Properties', drupal_get_path('module', 'tripal_cv') . '/feature_property.obo'), array('Relationship Ontology', 'http://www.obofoundry.org/ro/ro.obo'), array('Sequence Ontology', 'http://song.cvs.sourceforge.net/*checkout*/song/ontology/so.obo'), array('Gene Ontology', 'http://www.geneontology.org/ontology/gene_ontology.obo'), array('Cell Ontology', 'http://obo.cvs.sourceforge.net/obo/obo/ontology/anatomy/cell_type/cell.obo?rev=HEAD'), array('Plant Structure Ontology', 'http://palea.cgrb.oregonstate.edu/viewsvn/Poc/trunk/ontology/OBO_format/po_anatomy.obo?view=co'), array('Plant Growth and Development Stages Ontology', 'http://palea.cgrb.oregonstate.edu/viewsvn/Poc/trunk/ontology/OBO_format/po_temporal.obo?view=co') ); foreach ($ontologies as $o) { db_query("INSERT INTO {tripal_cv_obo} (name,path) VALUES (:name, :path)", array(':name' => $o[0], ':path' => $o[1])); } }