| 
					
				 | 
			
			
				@@ -85,6 +85,8 @@ function tripal_pub_importers_list() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           importer to run peridically by adding a cron job. </li>  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      </ol><br>"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $form = drupal_get_form('tripal_pub_importer_ncbi_api_key_form'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $page .= drupal_render($form); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   $table = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     'header' => $headers, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -451,6 +453,70 @@ function tripal_pub_importer_setup_form($form, &$form_state = NULL, $pub_import_ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return $form; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * The form used for setting the optional NCBI API key. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @param $form 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   The form element to be populated. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @param $form_state 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   The state of the form element to be populated. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @return array 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   The populated form element. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @ingroup tripal_pub 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function tripal_pub_importer_ncbi_api_key_form($form, $form_state) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $description = t('Tripal imports publications using NCBI\'s ')  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    . l('EUtils API', 'https://www.ncbi.nlm.nih.gov/books/NBK25500/') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    . t(', which limits users and programs to a maximum of 3 requests per second without an API key. ' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        . 'However, NCBI allows users and programs to an increased maximum of 10 requests per second if ' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        . 'they provide a valid API key. This is particularly useful in speeding up large publication imports. ' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        . 'For more information on NCBI API keys, please ') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    . l('see here', 'https://www.ncbi.nlm.nih.gov/books/NBK25497/#chapter2.Coming_in_December_2018_API_Key', array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      'attributes' => array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        'target' => 'blank', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    )) . '.'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $form['ncbi_api_key'] = array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#type' => 'textfield', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#title' => t('(Optional) NCBI API key:'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#description' => $description, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#default_value' => variable_get('tripal_pub_importer_ncbi_api_key', NULL), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#ajax' => array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      'callback' => 'tripal_pub_importer_set_ncbi_api_key', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      'wrapper' => 'ncbi_api_key', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#prefix' => '<div id="ncbi_api_key">', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#suffix' => '</div>', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return $form; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * This function saves the NCBI API key to the database. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * It is called when the user makes a change to the NCBI API key field and then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * moves their cursor out of the field. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @param $form 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   The new form element. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @param $form_state 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   The state of the new form element. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @return array 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   The new api key field. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @ingroup tripal_pub 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function tripal_pub_importer_set_ncbi_api_key($form, $form_state) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  variable_set('tripal_pub_importer_ncbi_api_key', $form_state['values']['ncbi_api_key']); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  drupal_set_message('NCBI API key has been saved successfully!'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return $form['ncbi_api_key']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * A helper function for the importer setup form that adds the criteria to 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * the form that belong to the importer. 
			 |