| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 | 
							- <?php
 
- // This script can be run as a stand-alone script to sync all the features from chado to drupal
 
- //
 
- // To index a single feature
 
- // -i feature_id
 
- // -n node_id 
 
- //
 
- // To index all features
 
- // -i 0 
 
- $arguments = getopt("i:n:");
 
- if(isset($arguments['i'])){
 
-    $drupal_base_url = parse_url('http://www.example.com');
 
-    $_SERVER['HTTP_HOST'] = $drupal_base_url['host'];
 
-    $_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'] = $_SERVER['PHP_SELF'];
 
-    $_SERVER['REMOTE_ADDR'] = NULL;
 
-    $_SERVER['REQUEST_METHOD'] = NULL;
 
- 	
 
-    require_once 'includes/bootstrap.inc';
 
-    drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
 
-    $feature_id = $arguments['i'];
 
-    $nid        = $arguments['n'];
 
-    # print "\n";
 
-    # print "feature id is $feature_id\n";
 
-    # print "nid is $nid\n";
 
-    # print "\n";
 
-    if($feature_id > 0){ 
 
-       # print "indexing feature $feature_id\n";
 
-      // We register a shutdown function to ensure that the nodes
 
-      // that are indexed will have proper entries in the search_totals
 
-      // table.  Without these entries, the searching doesn't work
 
-      // properly. This function may run for quite a while since
 
-      // it must calculate the sum of the scores of all entries in
 
-      // the search_index table.  In the case of common words like
 
-      // 'contig', this will take quite a while
 
-       register_shutdown_function('search_update_totals');
 
-       tripal_feature_index_feature($feature_id, $nid); 
 
-    }
 
-    else{ 
 
-       print "indexing all features...\n";
 
-       tripal_features_reindex(0);
 
-    }
 
- }
 
- /**
 
-  *
 
-  *
 
-  * @ingroup tripal_feature
 
-  */
 
- function tripal_features_reindex ($max_sync,$job_id = NULL){
 
-    $i = 0;
 
-    // We register a shutdown function to ensure that the nodes
 
-    // that are indexed will have proper entries in the search_totals
 
-    // table.  Without these entries, the searching doesn't work
 
-    // properly. This function may run for quite a while since
 
-    // it must calculate the sum of the scores of all entries in
 
-    // the search_index table.  In the case of common words like
 
-    // 'contig', this will take quite a while
 
-    register_shutdown_function('search_update_totals');
 
-    // use this SQL statement to get the features that we're going to index. This
 
-    // SQL statement is derived from the hook_search function in the Drupal API.
 
-    // Essentially, this is the SQL statement that finds all nodes that need
 
-    // reindexing, but adjusted to include the chado_feature
 
-    $sql = "SELECT N.nid, N.title, CF.feature_id ".
 
-           "FROM {node} N ".
 
-           "  INNER JOIN chado_feature CF ON CF.nid = N.nid ";
 
-    $results = db_query($sql);
 
-    // load into ids array
 
-    $count = 0;
 
-    $chado_features = array();
 
-    while($chado_feature = db_fetch_object($results)){
 
-       $chado_features[$count] = $chado_feature;
 
-       $count++;
 
-    }
 
-    // Iterate through features that need to be indexed 
 
-    $interval = intval($count * 0.01);
 
-    if($interval >= 0){
 
-       $interval = 1;
 
-    }
 
-    foreach($chado_features as $chado_feature){
 
-       // update the job status every 1% features
 
-       if($job_id and $i % $interval == 0){
 
-          $prog = intval(($i/$count)*100);
 
-          tripal_job_set_progress($job_id,$prog);
 
-          print "$prog\n";
 
-       }
 
-       // sync only the max requested
 
-       if($max_sync and $i == $max_sync){
 
-          return '';
 
-       }
 
-       $i++;
 
-       # tripal_feature_index_feature ($chado_feature->feature_id,$chado_feature->nid);
 
-       # parsing all the features can cause memory overruns 
 
-       # we are not sure why PHP does not clean up the memory as it goes
 
-       # to avoid this problem we will call this script through an
 
-       # independent system call
 
-       $cmd = "php " . drupal_get_path('module', 'tripal_feature') . "/indexFeatures.php ";
 
-       $cmd .= "-i $chado_feature->feature_id -n $chado_feature->nid ";
 
-       # print "\t$cmd\n";
 
-       # print "\tfeature id is $chado_feature->feature_id\n";
 
-       # print "\tnid is $chado_feature->nid\n";
 
-       # print "\n";
 
-       system($cmd);
 
-    }
 
-    return '';
 
- }
 
- /**
 
-  *
 
-  *
 
-  * @ingroup tripal_feature
 
-  */
 
- function tripal_feature_index_feature ($feature_id,$nid){
 
-    #print "\tfeature $feature_id nid $nid\n";
 
-    // return if we haven't been provided with a feature_id
 
-    if(!$feature_id){
 
-       return 0;
 
-    }
 
-    // if we only have a feature_id then let's find a corresponding
 
-    // node.  If we can't find a node then return.
 
-    if(!$nid){
 
-       $nsql = "SELECT N.nid,N.title FROM {chado_feature} CF ".
 
-               "  INNER JOIN {node} N ON N.nid = CF.nid ".
 
-               "WHERE CF.feature_id = %d";
 
-       $node = db_fetch_object(db_query($nsql,$feature_id));
 
-       if(!$node){
 
-          return 0;
 
-       }
 
-       $node = node_load($node->nid);
 
-    } else {
 
-       $node = node_load($nid);
 
-    }
 
-    // node load the noad, the comments and the taxonomy and
 
-    // index
 
-    $node->build_mode = NODE_BUILD_SEARCH_INDEX;
 
-    $node = node_build_content($node, FALSE, FALSE);
 
-    $node->body = drupal_render($node->content);
 
-    node_invoke_nodeapi($node, 'view', FALSE, FALSE);
 
- //   $node->body .= module_invoke('comment', 'nodeapi', $node, 'update index');
 
- //   $node->body .= module_invoke('taxonomy','nodeapi', $node, 'update index');
 
-    //   print "$node->title: $node->body\n";
 
-    search_index($node->nid,'node',$node->body);
 
-    # $mem = memory_get_usage(TRUE);
 
-    # $mb = $mem/1048576;
 
-    # print "$mb mb\n";
 
-    return 1;
 
- }
 
- ?>
 
 
  |