Browse Source

Converted contact module

spficklin 11 years ago
parent
commit
ebead7526e

+ 1 - 1
tripal_contact/includes/contact_sync.inc

@@ -46,7 +46,7 @@ function tripal_contact_sync_contacts($job_id = NULL) {
   ";
   $results = db_query($sql);
 
-  while ($contact = db_fetch_object($results)) {
+  while ($contact = $results->fetchObject()) {
     $node = tripal_contact_sync_contact($contact);
   }
 }

+ 2 - 2
tripal_contact/includes/tripal_contact.admin.inc

@@ -117,8 +117,8 @@ function tripal_contact_admin_validate($form, &$form_state) {
     foreach ($contacts as $contact_id) {
       if ($contact_id and preg_match("/^\d+$/i", $contact_id)) {
         // get the map info
-        $sql = "SELECT * FROM {contact} WHERE contact_id = %d";
-        $contact = db_fetch_object(chado_query($sql, $contact_id));
+        $sql = "SELECT * FROM {contact} WHERE contact_id = :contact_id";
+        $contact = db_fetch_object(chado_query($sql, array(':contact_id' => $contact_id)));
         $job_args[0] = $contact_id;
         tripal_add_job("Reindex features for map: $contact->name", 'tripal_contact',
          'tripal_contact_reindex_features', $job_args, $user->uid);

+ 6 - 6
tripal_contact/includes/tripal_contact.form.inc

@@ -170,13 +170,13 @@ function chado_contact_validate($node, &$form) {
   if ($node->contact_id) {
     $sql = "
       SELECT * FROM {contact} 
-      WHERE name = '%s' AND NOT contact_id = %d
+      WHERE name = :name AND NOT contact_id = :contact_id
     ";
-    $contact = db_fetch_object(chado_query($sql, $title, $contact_id));
+    $contact = db_fetch_object(chado_query($sql, array(':name' => $title, ':contact_id' => $contact_id)));
   }
   else {
-    $sql = "SELECT * FROM {contact} WHERE name = '%s'";
-    $contact = db_fetch_object(chado_query($sql, $title));
+    $sql = "SELECT * FROM {contact} WHERE name = :name";
+    $contact = db_fetch_object(chado_query($sql, array(':name' => $title)));
   }
   if ($contact) {
     form_set_error('title', t('The contact name already exists. Please choose another'));
@@ -362,10 +362,10 @@ function chado_contact_node_form_add_contactprop_table_props(&$form, $form_state
     SELECT CVT.cvterm_id, CVT.name, CVT.definition, PP.value, PP.rank
     FROM {contactprop} PP
       INNER JOIN {cvterm} CVT on CVT.cvterm_id = PP.type_id
-    WHERE PP.contact_id = %d
+    WHERE PP.contact_id = :contact_id
     ORDER BY CVT.name, PP.rank
   ";
-  $contact_props = chado_query($sql, $contact_id);
+  $contact_props = chado_query($sql, array(':contact_id' => $contact_id));
   while ($prop = db_fetch_object($contact_props)) {
 
     $type_id = $prop->cvterm_id;

+ 3 - 3
tripal_contact/tripal_contact.info

@@ -1,8 +1,8 @@
 name = Tripal Contact
-description = A module for interfacing the GMOD chado database with Drupal, providing viewing of Contacts
-core = 6.x
+description = A module for interfacing the GMOD chado database with Drupal, providing viewing of contacts such as people, organizations or entities.
+core = 7.x
 project = tripal_contact
 package = Tripal
-version = 6.x-1.1
+version = 7.x-2.0-beta
 dependencies[] = tripal_core
 dependencies[] = tripal_cv

+ 21 - 43
tripal_contact/tripal_contact.install

@@ -10,6 +10,24 @@
  * multiple contact/mysql instances as well as manage and create such contact instances
  */
 
+/**
+ * Implementation of hook_requirements().
+ *
+ */
+function tripal_contact_requirements($phase) {
+  $requirements = array();
+  if ($phase == 'install') {
+    // make sure chado is installed
+    if (!tripal_core_is_chado_installed()) {
+      $requirements ['tripal_contact'] = array(
+        'title' => "tripal_contact",
+        'value' => "ERROR: Chado most be installed before this module can be enabled",
+        'severity' => REQUIREMENT_ERROR,
+      );
+    }
+  }
+  return $requirements;
+}
 
 /**
  * Implementation of hook_install().
@@ -19,9 +37,6 @@ function tripal_contact_install() {
 	// create the module's data directory
   tripal_create_moddir('tripal_contact');
   
-  // add the tripal_contact table to Drupal
-  drupal_install_schema('tripal_contact');
-  
   // add the contactprop table to Chado
   tripal_contact_add_custom_tables();
   
@@ -35,7 +50,7 @@ function tripal_contact_install() {
  * Implementation of hook_uninstall().
  */
 function tripal_contact_uninstall() {
-  drupal_uninstall_schema('tripal_contact');
+
 }
 
 /**
@@ -74,24 +89,7 @@ function tripal_contact_schema() {
   return $schema;
 }
 
-/**
- * Implementation of hook_requirements(). 
- *
- */
-function tripal_contact_requirements($phase) {
-  $requirements = array();
-  if ($phase == 'install') {
-    // make sure chado is installed
-    if (!tripal_core_is_chado_installed()) {
-      $requirements ['tripal_contact'] = array(
-            'title' => "tripal_contact",
-            'value' => "ERROR: Chado most be installed before this module can be enabled",
-            'severity' => REQUIREMENT_ERROR,
-      );
-    }
-  }
-  return $requirements;
-}
+
 /*
  * 
  */
@@ -154,25 +152,5 @@ function tripal_contact_add_custom_tables(){
       ),
     ),
   );
-  tripal_core_create_custom_table($ret, 'contactprop', $schema, TRUE);
-}
-/**
- *  Update for Drupal 6.x, Tripal 1.0
- *  This update
- *   - adds a new contact node
- *
- * @ingroup tripal_contact
- */
-function tripal_contact_update_6001() {
-  // add the tripal_contact table
-  drupal_install_schema('tripal_contact');
-  
-  // add the custom tables
-  tripal_contact_add_custom_tables();
-
-  // add loading of the the tripal contact ontology to the job queue
-  $obo_path =  realpath('./') . '/' . drupal_get_path('module', 'tripal_contact') . '/tcontact.obo';
-  $obo_id = tripal_cv_add_obo_ref('Tripal Contacts', $obo_path);
-  tripal_cv_submit_obo_job($obo_id);
-  return $ret;
+  tripal_core_create_custom_table('contactprop', $schema, TRUE);
 }

+ 99 - 35
tripal_contact/tripal_contact.module

@@ -61,7 +61,7 @@ function tripal_contact_node_info() {
   return array(
     'chado_contact' => array(
       'name' => t('Contact'),
-      'module' => 'chado_contact',
+      'base' => 'chado_contact',
       'description' => t('A contact from the Chado database'),
       'title_label' => t('Article Title'),
       'body_label' => t('Abstract'),
@@ -147,15 +147,19 @@ function tripal_contact_theme() {
   return array(
     'tripal_contact_base' => array(
       'arguments' => array('node' => NULL),
+      'template' => 'tripal_contact_base',
     ),
     'tripal_contact_properties' => array(
-      'arguments' => array('node' => NULL)
+      'arguments' => array('node' => NULL),
+      'template' => 'tripal_contact_properties',
     ),
     'tripal_contact_relationships' => array(
-      'arguments' => array('node' => NULL)
+      'arguments' => array('node' => NULL),
+      'template' => 'tripal_contact_relationships',
     ),
     'tripal_contact_publications' => array(
-      'arguments' => array('node' => NULL)
+      'arguments' => array('node' => NULL),
+      'template' => 'tripal_contact_publications',
     ),
     'tripal_contact_admin' => array(
       'template' => 'tripal_contact_admin',  
@@ -169,17 +173,83 @@ function tripal_contact_theme() {
     ),
   );
 }
+/**
+ * @ingroup tripal_library
+ */
+function tripal_contact_block_info() {
+
+  $blocks['contbase']['info'] = t('Tripal Contact Details');
+  $blocks['contbase']['cache'] = BLOCK_NO_CACHE;
+
+  $blocks['contprops']['info'] = t('Tripal Contact Properties');
+  $blocks['contprops']['cache'] = BLOCK_NO_CACHE;
+
+  $blocks['contrels']['info'] = t('Tripal Contact Relationships');
+  $blocks['contrels']['cache'] = BLOCK_NO_CACHE;
+
+  $blocks['contpubs']['info'] = t('Tripal Cotact Publications');
+  $blocks['contpubs']['cache'] = BLOCK_NO_CACHE;
+
+  return $blocks;
+}
+/**
+ * @ingroup tripal_library
+ */
+function tripal_contact_block_view($delta = '') {
+
+  if (user_access('access chado_library content') and arg(0) == 'node' and is_numeric(arg(1))) {
+    $nid = arg(1);
+    $node = node_load($nid);
+
+    $block = array();
+    switch ($delta) {
+      case 'contbase':
+        $block['subject'] = t('Details');
+        $block['content'] = theme('tripal_contact_base', $node);
+        break;
+      case 'contprops':
+        $block['subject'] = t('Properties');
+        $block['content'] = theme('tripal_contact_properties', $node);
+        break;
+      case 'contrels':
+        $block['subject'] = t('Relationships');
+        $block['content'] = theme('tripal_contact_relationships', $node);
+        break;
+      case 'contpubs':
+        $block['subject'] = t('Publications');
+        $block['content'] = theme('tripal_contact_publications', $node);
+        break;
+      default :
+    }
+    return $block;
+  }
+}
 
 /**
  * Implement hook_perm().
  */
 function tripal_contact_permissions() {
   return array(
-    'access chado_contact content',
-    'create chado_contact content',
-    'delete chado_contact content',
-    'edit chado_contact content',
-    'administer tripal contacts',
+    'access chado_contact content' => array(
+      'title' => t('View Contacts'),
+      'description' => t('Allow users to view contact pages.'),
+    ),
+    'create chado_contact content' => array(
+      'title' => t('Create Contacts'),
+      'description' => t('Allow users to create new contact pages.'),
+    ),
+    'delete chado_contact content' => array(
+      'title' => t('Delete Contacts'),
+      'description' => t('Allow users to delete contact pages.'),
+    ),
+    'edit chado_contact content' => array(
+      'title' => t('Edit Contacts'),
+      'description' => t('Allow users to edit contact pages.'),
+    ),
+    'adminster tripal contact' => array(
+      'title' => t('Administer Contacts'),
+      'description' => t('Allow users to administer all contacts.'),
+    ),
   );
 }
 
@@ -284,7 +354,7 @@ function chado_contact_insert($node) {
       ORDER BY CVTS.name ASC 
     ";
     $prop_types = chado_query($sql);
-    while ($prop = db_fetch_object($prop_types)) {
+    while ($prop = $prop_types->fetchObject()) {
       $properties_list[$prop->cvterm_id] = $prop->name;
     }   
   
@@ -333,8 +403,8 @@ function chado_contact_insert($node) {
     if (!$contact_id) {
        // next add the item to the drupal table
       $sql = "INSERT INTO {chado_contact} (nid, vid, contact_id) ".
-             "VALUES (%d, %d, %d)";
-      db_query($sql, $node->nid, $node->vid, $contact['contact_id']);
+             "VALUES (:nid, :vid, :contact_id)";
+      db_query($sql, array(':nid'=> $node->nid, ':vid' => $node->vid, ':contact_id' => $contact['contact_id']));
     }
   }
   else {
@@ -367,8 +437,8 @@ function chado_contact_update($node) {
   $contact_id = chado_get_id_for_node('contact', $node->nid) ;
   
   // check to see if this contact name doens't already exists.    
-  $sql = "SELECT contact_id FROM {contact} WHERE NOT contact_id = %d AND name = '%s'";
-  $contact = db_fetch_object(chado_query($sql, $contact_id, $node->contact_name));
+  $sql = "SELECT contact_id FROM {contact} WHERE NOT contact_id = :contact_id AND name = :name";
+  $contact = chado_query($sql, array(':contact_id' => $contact_id, ':name' => $node->contact_name))->fetchObject();
   if ($contact) {
     drupal_set_message(t('A contact with this name already exists. Cannot perform update.'), 'warning');
     return;  
@@ -407,7 +477,7 @@ function chado_contact_update($node) {
     ORDER BY CVTS.name ASC 
   ";
   $prop_types = chado_query($sql);
-  while ($prop = db_fetch_object($prop_types)) {
+  while ($prop = $prop_types->fetchObject()) {
     $properties_list[$prop->cvterm_id] = $prop->name;
   }
   
@@ -520,22 +590,16 @@ function chado_contact_delete(&$node) {
 
   // Remove data from {chado_contact}, {node} and {node_revisions} tables of
   // drupal database
-  $sql_del = "DELETE FROM {chado_contact} ".
-             "WHERE nid = %d ".
-             "AND vid = %d";
-  db_query($sql_del, $node->nid, $node->vid);
-  $sql_del = "DELETE FROM {node_revisions} ".
-             "WHERE nid = %d ".
-             "AND vid = %d";
-  db_query($sql_del, $node->nid, $node->vid);
-  $sql_del = "DELETE FROM {node} ".
-             "WHERE nid = %d ".
-             "AND vid = %d";
-  db_query($sql_del, $node->nid, $node->vid);
+  $sql_del = "DELETE FROM {chado_contact} WHERE nid = :nid AND vid = :vid";
+  db_query($sql_del, array(':nid' => $node->nid, ':vid' => $node->vid));
+  $sql_del = "DELETE FROM {node_revision} WHERE nid = :nid AND vid = :vid";
+  db_query($sql_del, array(':nid' => $node->nid, ':vid' => $node->vid));
+  $sql_del = "DELETE FROM {node} WHERE nid = :nid AND vid = :vid";
+  db_query($sql_del, array(':nid' => $node->nid, ':vid' => $node->vid));
 
   // Remove data from contact and contactprop tables of chado database as well
-  chado_query("DELETE FROM {contactprop} WHERE contact_id = %d", $contact_id);
-  chado_query("DELETE FROM {contact} WHERE contact_id = %d", $contact_id);
+  chado_query("DELETE FROM {contactprop} WHERE contact_id = :contact_id", array(':contact_id' => $contact_id));
+  chado_query("DELETE FROM {contact} WHERE contact_id = :contact_id", array(':contact_id' => $contact_id));
 }
 /**
  *
@@ -556,18 +620,18 @@ function tripal_contact_preprocess_tripal_contact_relationships(&$variables) {
       INNER JOIN {contact} C              ON PR.object_id  = C.contact_id
       INNER JOIN {cvterm} CVT             ON PR.type_id    = CVT.cvterm_id
       LEFT  JOIN public.chado_contact CP  ON C.contact_id  = CP.contact_id
-    WHERE PR.subject_id = %d
+    WHERE PR.subject_id = :contact_id
   ";
-  $as_subject = chado_query($sql, $contact->contact_id);
+  $as_subject = chado_query($sql, array(':contact_id' => $contact->contact_id));
   $sql = "
     SELECT C.name, C.contact_id, CP.nid, CVT.name as rel_type
     FROM contact_relationship PR
       INNER JOIN {contact} C              ON PR.subject_id = C.contact_id
       INNER JOIN {cvterm} CVT             ON PR.type_id    = CVT.cvterm_id
       LEFT  JOIN public.chado_contact CP  ON C.contact_id  = CP.contact_id
-    WHERE PR.object_id = %d
+    WHERE PR.object_id = :contact_id
   ";
-  $as_object = chado_query($sql, $contact->contact_id);
+  $as_object = chado_query($sql, array(':contact_id' => $contact->contact_id));
 
   // combine both object and subject relationshisp into a single array
   $relationships = array();
@@ -575,7 +639,7 @@ function tripal_contact_preprocess_tripal_contact_relationships(&$variables) {
   $relationships['subject'] = array();
 
   // iterate through the object relationships
-  while ($relationship = db_fetch_object($as_object)) {
+  while ($relationship = $as_object->fetchObject()) {
 
      // get the relationship and child types
      $rel_type = t(preg_replace('/_/', " ", $relationship->rel_type));
@@ -591,7 +655,7 @@ function tripal_contact_preprocess_tripal_contact_relationships(&$variables) {
   }
 
   // now add in the subject relationships
-  while ($relationship = db_fetch_object($as_subject)) {
+  while ($relationship = $as_subject->fetchObject()) {
 
      // get the relationship and child types
      $rel_type = t(preg_replace('/_/', " ", $relationship->rel_type));

+ 71 - 71
tripal_library/tripal_library.module

@@ -257,7 +257,78 @@ function tripal_library_theme() {
     ),
   );
 }
+/**
+ * @ingroup tripal_library
+ */
+function tripal_library_block_info() {
 
+  $blocks['libreferences']['info'] = t('Tripal Library Cross References');
+  $blocks['libreferences']['cache'] = BLOCK_NO_CACHE;
+
+  $blocks['libbase']['info'] = t('Tripal Library Details');
+  $blocks['libbase']['cache'] = BLOCK_NO_CACHE;
+
+  $blocks['libterms']['info'] = t('Tripal Library Terms');
+  $blocks['libterms']['cache'] = BLOCK_NO_CACHE;
+
+  $blocks['libsynonyms']['info'] = t('Tripal Library Synonyms');
+  $blocks['libsynonyms']['cache'] = BLOCK_NO_CACHE;
+
+  $blocks['libproperties']['info'] = t('Tripal Library Properties');
+  $blocks['libproperties']['cache'] = BLOCK_NO_CACHE;
+
+  $blocks['featurelibs']['info'] = t('Tripal Feature Libraries');
+  $blocks['featurelibs']['cache'] = BLOCK_NO_CACHE;
+
+  $blocks['orglibs']['info'] = t('Tripal Organism Libraries');
+  $blocks['orglibs']['cache'] = BLOCK_NO_CACHE;
+
+  return $blocks;
+}
+/**
+ * @ingroup tripal_library
+ */
+function tripal_library_block_view($delta = '') {
+
+  if (user_access('access chado_library content') and arg(0) == 'node' and is_numeric(arg(1))) {
+    $nid = arg(1);
+    $node = node_load($nid);
+
+    $block = array();
+    switch ($delta) {
+    	case 'libreferences':
+    	  $block['subject'] = t('Cross References');
+    	  $block['content'] = theme('tripal_library_references', $node);
+    	  break;
+    	case 'libbase':
+    	  $block['subject'] = t('Library Details');
+    	  $block['content'] = theme('tripal_library_base', $node);
+    	  break;
+    	case 'libsynonyms':
+    	  $block['subject'] = t('Synonyms');
+    	  $block['content'] = theme('tripal_library_synonyms', $node);
+    	  break;
+    	case 'libproperties':
+    	  $block['subject'] = t('Properties');
+    	  $block['content'] = theme('tripal_library_properties', $node);
+    	  break;
+    	case 'libterms':
+    	  $block['subject'] = t('Library Terms');
+    	  $block['content'] = theme('tripal_library_terms', $node);
+    	  break;
+    	case 'featurelibs':
+    	  $block['subject'] = t('Libraries');
+    	  $block['content'] = theme('tripal_feature_libraries', $node);
+    	  break;
+    	case 'orglibs':
+    	  $block['subject'] = t('Libraries');
+    	  $block['content'] = theme('tripal_organism_libraries', $node);
+    	  break;
+    	default :
+    }
+    return $block;
+  }
+}
 /**
  * This function is an extension of the chado_feature_view and
  * chado_organism_view by providing the markup for the library object
@@ -662,75 +733,4 @@ function chado_library_delete(&$node) {
   chado_query("DELETE FROM {library} WHERE library_id = :library_id", array(':library_id' => $library_id));
 }
 
-/**
- * @ingroup tripal_library
- */
-function tripal_library_block_info() {
-
-  $blocks['libreferences']['info'] = t('Tripal Library Cross References');
-  $blocks['libreferences']['cache'] = BLOCK_NO_CACHE;
-
-  $blocks['libbase']['info'] = t('Tripal Library Details');
-  $blocks['libbase']['cache'] = BLOCK_NO_CACHE;
 
-  $blocks['libterms']['info'] = t('Tripal Library Terms');
-  $blocks['libterms']['cache'] = BLOCK_NO_CACHE;
-
-  $blocks['libsynonyms']['info'] = t('Tripal Library Synonyms');
-  $blocks['libsynonyms']['cache'] = BLOCK_NO_CACHE;
-
-  $blocks['libproperties']['info'] = t('Tripal Library Properties');
-  $blocks['libproperties']['cache'] = BLOCK_NO_CACHE;
-
-  $blocks['featurelibs']['info'] = t('Tripal Feature Libraries');
-  $blocks['featurelibs']['cache'] = BLOCK_NO_CACHE;
-
-  $blocks['orglibs']['info'] = t('Tripal Organism Libraries');
-  $blocks['orglibs']['cache'] = BLOCK_NO_CACHE;
-
-  return $blocks;
-}
-/**
- * @ingroup tripal_library
- */
-function tripal_library_block_view($delta = '') {
-  
-  if (user_access('access chado_library content') and arg(0) == 'node' and is_numeric(arg(1))) {
-    $nid = arg(1);
-    $node = node_load($nid);
-  
-    $block = array();
-    switch ($delta) {
-      case 'libreferences':
-        $block['subject'] = t('Cross References');
-        $block['content'] = theme('tripal_library_references', $node);
-        break;
-      case 'libbase':
-        $block['subject'] = t('Library Details');
-        $block['content'] = theme('tripal_library_base', $node);
-        break;
-      case 'libsynonyms':
-        $block['subject'] = t('Synonyms');
-        $block['content'] = theme('tripal_library_synonyms', $node);
-        break;
-      case 'libproperties':
-        $block['subject'] = t('Properties');
-        $block['content'] = theme('tripal_library_properties', $node);
-        break;
-      case 'libterms':
-        $block['subject'] = t('Library Terms');
-        $block['content'] = theme('tripal_library_terms', $node);
-        break;
-      case 'featurelibs':
-        $block['subject'] = t('Libraries');
-        $block['content'] = theme('tripal_feature_libraries', $node);
-        break;
-      case 'orglibs':
-        $block['subject'] = t('Libraries');
-        $block['content'] = theme('tripal_organism_libraries', $node);
-        break;
-        default :
-    }
-    return $block;
-  }
-}