|
@@ -137,26 +137,41 @@ function tripal_ws_entity_load($entities, $type) {
|
|
|
|
|
|
function tripal_ws_load_remote_entity($site_id, $api_version, $ctype, $id) {
|
|
|
|
|
|
+ // Get the content type on this site
|
|
|
+ $bundle = tripal_load_bundle_entity(array('label' => $ctype));
|
|
|
+ $term = entity_load('TripalTerm', array('id' => $bundle->term_id));
|
|
|
+ $term = reset($term);
|
|
|
+ $vocab = $term->vocab;
|
|
|
+
|
|
|
+ $query = db_select('tripal_sites', 'ts');
|
|
|
+ $query->fields('ts');
|
|
|
+ $query->condition('id', $site_id);
|
|
|
+ $site = $query->execute()->fetchObject();
|
|
|
+
|
|
|
+ if (!$site) {
|
|
|
+ return 'Could not find specified site.';
|
|
|
+ }
|
|
|
+
|
|
|
// Get the content from the web services of the remote site.
|
|
|
- $url = "https://dev.bioinfo.wsu.edu/~ccheng/tripal3/ws/v0.1/content/gene/12";
|
|
|
+ $url = $site->url . "/ws/v0.1/content/" . $ctype . "/" . $id;
|
|
|
$json = file_get_contents($url);
|
|
|
$response = json_decode($json, TRUE);
|
|
|
- //dpm($response);
|
|
|
+dpm($response);
|
|
|
|
|
|
// Set the title for this page to match the title provided.
|
|
|
drupal_set_title($response['label']);
|
|
|
|
|
|
// Attribute this data to the proper source.
|
|
|
$source_url = l($response['label'], $response['itemPage'], array('attributes' => array('target' => '_blank')));
|
|
|
- $content = '<div><strong>Source:</strong> Chun-huai\'s amazing test site: ' . $source_url . '</div>';
|
|
|
+ $content = '<div><strong>Source:</strong> ' . $site->name . ': ' . $source_url . '</div>';
|
|
|
|
|
|
// Fake an entity so we can display this content using the same
|
|
|
// entity type on this site.
|
|
|
$entity = new TripalEntity(array(), 'TripalEntity');
|
|
|
$entity->id = 807;
|
|
|
$entity->type = 'TripalEntity';
|
|
|
- $entity->bundle = 'bio_data_266';
|
|
|
- $entity->term_id = 266;
|
|
|
+ $entity->bundle = $bundle->name;
|
|
|
+ $entity->term_id = $term->id;
|
|
|
$entity->title = $response['label'];
|
|
|
$entity->uid = 1;
|
|
|
$entity->status = 1;
|
|
@@ -167,7 +182,7 @@ function tripal_ws_load_remote_entity($site_id, $api_version, $ctype, $id) {
|
|
|
foreach ($fields as $field) {
|
|
|
if (isset($field['bundles']['TripalEntity'])) {
|
|
|
foreach ($field['bundles']['TripalEntity'] as $bundle_name) {
|
|
|
- if ($bundle_name == 'bio_data_266') {
|
|
|
+ if ($bundle_name == $bundle->name) {
|
|
|
$my_fields[] = $field;
|
|
|
}
|
|
|
}
|
|
@@ -206,26 +221,40 @@ function tripal_ws_load_remote_entity($site_id, $api_version, $ctype, $id) {
|
|
|
// handle that separately.
|
|
|
if (isset($response['@context'][$term_name]['@type']) and
|
|
|
$response['@context'][$term_name]['@type'] == '@id') {
|
|
|
- continue;
|
|
|
+ $subquery = json_decode(file_get_contents($response[$term_name]), TRUE);
|
|
|
+
|
|
|
+ // If the result is a collection then we want to add each value with
|
|
|
+ // it's own delta value.
|
|
|
+ if (array_key_exists('@type', $subquery) and $subquery['@type'] == 'Collection') {
|
|
|
+ $i = 0;
|
|
|
+ $f = array();
|
|
|
+ foreach ($subquery['member'] as $member) {
|
|
|
+ $f['und'][$i]['value'] = $member;
|
|
|
+ $i++;
|
|
|
+ }
|
|
|
+ $entity->$field_name = $f;
|
|
|
+ }
|
|
|
+ // If the result is not a collection then just add it.
|
|
|
+ else {
|
|
|
+ dpm($response[$term_name]);
|
|
|
+ dpm($subquery);
|
|
|
+ unset($subquery['@context']);
|
|
|
+ unset($subquery['@id']);
|
|
|
+ $f = array();
|
|
|
+ $f['und'][0]['value'] = $subquery;
|
|
|
+ $entity->$field_name = $f;
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
// For all fields that are currently attached, add the field and
|
|
|
// value to the entity.
|
|
|
- $f = array();
|
|
|
- $f['und'][0]['value'] = $response[$term_name];
|
|
|
- $entity->$field_name = $f;
|
|
|
+ else {
|
|
|
+ $f = array();
|
|
|
+ $f['und'][0]['value'] = $response[$term_name];
|
|
|
+ $entity->$field_name = $f;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// // For fields that are links rather than values then we
|
|
|
-// $sequences_json = file_get_contents($response['sequence']);
|
|
|
-// $sequences = json_decode($sequences_json, TRUE);
|
|
|
-// $entity->feature__residues = array();
|
|
|
-// foreach ($sequences['member'] as $delta => $value) {
|
|
|
-// $entity->feature__residues['und'][$delta]['value'] = $sequences['member'][$delta];
|
|
|
-// }
|
|
|
-// dpm($entity);
|
|
|
-
|
|
|
// Generate the View for this entity
|
|
|
$entities = array();
|
|
|
$entities[] = $entity;
|