|
@@ -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.
|