Prechádzať zdrojové kódy

Added the ability to change the field used for URL aliases for features. Previously it could only be IDXXXX where XXXX was the feature_id. Now the URL alias can be the name of the feature or the uniquename. It is up to the user to ensure that these values are unique for all synced features.

spficklin 14 rokov pred
rodič
commit
c1ceb5b306

+ 43 - 5
tripal_feature/syncFeatures.php

@@ -28,8 +28,47 @@ if(isset($arguments['f'])){
       tripal_feature_sync_features();
    }   
 }
-   
+/**
+*
+*/   
+function tripal_feature_set_urls($job_id = NULL){
+   // first get the list of features that have been synced
+   $sql = "SELECT * FROM {chado_feature}";
+   $nodes = db_query($sql);
+   while($node = db_fetch_object($nodes)){
+      // now get the feature details
+      $feature_arr = tripal_core_chado_select('feature',
+         array('feature_id','name','uniquename'),
+         array('feature_id' => $node->feature_id));
+      $feature = $feature_arr[0];
+
+      tripal_feature_set_feature_url($node,$feature);
+   }
+}
+/**
+*
+*/
+function tripal_feature_set_feature_url($node,$feature){
 
+   // determine which URL alias to use
+   $alias_type = variable_get('chado_feature_url','internal ID');
+   $aprefix = variable_get('chado_feature_accession_prefix','ID');
+   switch ($alias_type) {
+      case 'feature name':
+         $url_alias = $feature->name;
+         break;
+      case 'feature unique name':
+         $url_alias = $feature->uniquename;
+         break;
+      default:
+         $url_alias = "$aprefix$feature->feature_id";
+   }
+   print "Setting $alias_type as URL alias for $feature->name: node/$node->nid => $url_alias\n";
+   // remove any previous alias
+   db_query("DELETE FROM {url_alias} WHERE src = '%s'", "node/$node->nid");
+   // add the new alias
+   path_set_alias("node/$node->nid",$url_alias);
+}
 /**
  *
  *
@@ -261,10 +300,9 @@ function tripal_feature_sync_feature ($feature_id){
    // drupal_set_message(t("$feature_id( $node->nid): indexing"));
    // tripal_feature_index_feature ($feature_id,$node->nid);
 
-   // remove any URL alias that may already exist and recreate
-   drupal_set_message(t("$feature_id ($node->nid): setting URL alias"));
-   db_query("DELETE FROM {url_alias} WHERE dst = '%s'", "$aprefix$feature_id");
-   path_set_alias("node/$node->nid","$aprefix$feature_id");
+   // set the URL alias for this node
+   tripal_feature_set_feature_url($node,$feature);
+
 
    return '';
 }

+ 68 - 27
tripal_feature/tripal_feature.admin.inc

@@ -72,6 +72,9 @@ function tripal_feature_admin () {
          '#default_value' => variable_get('chado_feature_types','EST contig'),
       );
 
+      get_tripal_feature_admin_form_sync_set($form);
+      get_tripal_feature_admin_form_url_set($form);
+
       $form['browser'] = array(
          '#type' => 'fieldset',
          '#title' => t('Feature Browser')
@@ -119,7 +122,6 @@ function tripal_feature_admin () {
          '#weight' => 2,
       );
 
-      get_tripal_feature_admin_form_sync_set($form);
       get_tripal_feature_admin_form_taxonomy_set($form);
       get_tripal_feature_admin_form_reindex_set($form);
       get_tripal_feature_admin_form_cleanup_set($form);
@@ -150,32 +152,41 @@ function tripal_feature_admin_validate($form, &$form_state) {
 
    // if the user wants to sync up the chado features then
    // add the job to the management queue
-   if ($form_state['values']['op'] == t('Sync all Features')) {
-      tripal_add_job('Sync all features','tripal_feature',
-         'tripal_feature_sync_features',$job_args,$user->uid);
-   }
-
-   if ($form_state['values']['op'] == t('Set/Reset Taxonomy for all feature nodes')) {
-      tripal_add_job('Set all feature taxonomy','tripal_feature',
-         'tripal_features_set_taxonomy',$job_args,$user->uid);
-   }
-
-   if ($form_state['values']['op'] == t('Reindex all feature nodes')) {
-      tripal_add_job('Reindex all features','tripal_feature',
-         'tripal_features_reindex',$job_args,$user->uid);
-   }
-
-   if ($form_state['values']['op'] == t('Clean up orphaned features')) {
-      tripal_add_job('Cleanup orphaned features','tripal_feature',
-         'tripal_features_cleanup',$job_args,$user->uid);
-   }
-
-   if ($form_state['values']['op'] == t('Set Browser')) {
-      variable_set('tripal_feature_browse_setting',$form_state['values']['browse_features']);
-   }
-
-   if ($form_state['values']['op'] == t('Set Summary')) {
-      variable_set('tripal_feature_summary_setting',$form_state['values']['feature_summary']);
+   switch ($form_state['values']['op']){
+
+      case  t('Sync all Features') :
+         tripal_add_job('Sync all features','tripal_feature',
+            'tripal_feature_sync_features',$job_args,$user->uid);
+         break;
+
+      case t('Set/Reset Taxonomy for all feature nodes') :
+         tripal_add_job('Set all feature taxonomy','tripal_feature',
+            'tripal_features_set_taxonomy',$job_args,$user->uid);
+         break;
+
+      case t('Reindex all feature nodes') :
+         tripal_add_job('Reindex all features','tripal_feature',
+            'tripal_features_reindex',$job_args,$user->uid);
+         break;
+
+      case t('Clean up orphaned features') :
+         tripal_add_job('Cleanup orphaned features','tripal_feature',
+            'tripal_features_cleanup',$job_args,$user->uid);
+         break;
+
+      case t('Set Browser') :
+         variable_set('tripal_feature_browse_setting',$form_state['values']['browse_features']);
+         break;
+
+      case t('Set Summary') :
+         variable_set('tripal_feature_summary_setting',$form_state['values']['feature_summary']);
+         break;
+
+      case t('Set Feature URLs') :
+         variable_set('chado_feature_url',$form_state['values']['feature_url']);
+         tripal_add_job('Set Feature URLs','tripal_feature',
+            'tripal_feature_set_urls',$job_args,$user->uid);
+         break;
    }
 }
 /**
@@ -330,7 +341,37 @@ function get_tripal_feature_admin_form_sync_set (&$form) {
    );
 
 }
+function get_tripal_feature_admin_form_url_set (&$form) {
+
+   $form['url'] = array(
+      '#type' => 'fieldset',
+      '#title' => t('Feature URL Path')
+   );
 
+   $form['url']['chado_feature_url'] = array(
+      '#title'       => t('Feature URL'),
+      '#type'        => 'radios',
+      '#description' => t('Each synced feature will have a unique URL which consists of '.
+                          'the site domain followed by a unique identifer: for '.
+                          'example http://my-tripal-site.org/ID1034, where the '.
+                          'element just after the final slash is the unique '.
+                          'identifier for the feature.  Choose a feature descriptor '.
+                          'from the list that is guaranteed to be unique in your synced '.
+                          'dataset. If in doubt it is safest to coose the internal ID. '.
+                          'The descrpitor need not be unique amont the total dataset. '.
+                          'It only need be unique among the synced dataset.'),
+      '#required'    => FALSE,
+      '#options'     => array('internal ID' => 'internal ID',
+                              'feature unique name' => 'feature unique name', 
+                              'feature name' => 'feature name'),
+      '#default_value' => variable_get('chado_feature_url','internal ID'),
+   );
+   $form['url']['button'] = array(
+      '#type' => 'submit',
+      '#value' => t('Set Feature URLs'),
+      '#weight' => 3,
+   );
+}
 /**
  *
  *