Sfoglia il codice sorgente

Merge branch '6.x-1.x' of git.drupal.org:sandbox/spficklin/1337878 into 6.x-1.x

spficklin 12 anni fa
parent
commit
7ee06408f0

+ 124 - 0
tripal_bulk_loader/api/tripal_bulk_loader.api.templates.inc

@@ -0,0 +1,124 @@
+<?php
+/**
+ * @file
+ * All functions in this file provide an API to administrative management of bulk loader templates
+ */
+
+/**
+ * Meant to be called from a form_validate function to ensure a newly added bulk loader record
+ * name is unique and not empty.
+ *
+ * @param $new_record_name
+ *   The record name to check for uniqueness
+ * @param $template_id
+ *   The template_id of the template to add the record to
+ * @param $template_array
+ *   The array describing the template. Optional -will be loaded using template_id if not provided
+ * @param $current_priority
+ *   The priority of the already existing record -checks that the name only occurs on this particular record
+ *
+ * @return
+ *   TRUE if the record name is not empty and not already in the template_array; FALSE otherwise
+ */
+function tripal_bulk_loader_is_record_name_unique($new_record_name, $template_id, $template_array = NULL, $current_priority = NULL) {
+
+  // get the template array if it's not supplied
+  if (empty($template_array)) {
+    $template = db_fetch_object(db_query("SELECT * FROM {tripal_bulk_loader_template} WHERE template_id=%d", $template_id));
+    $template_array = unserialize($template->template_array);
+    if (!is_array($template_array)) {
+      watchdog(
+        'tripal_bulk_loader',
+        'Unable to retrieve template array from database where template_id=%template_id',
+        array('%template_id' => $template_id),
+        WATCHDOG_WARNING
+      );
+      return FALSE;
+    }
+  }
+
+  // Check that the new record name is not empty
+  if (empty($new_record_name)) {
+    return FALSE;
+  }
+
+  // Check the new record name is unique
+  foreach ($template_array as $priority => $t) {
+    if (strcmp($t['record_id'], $new_record_name) == 0) {
+    	if (($priority != $current_priority) AND ($current_priority !== NULL)) {
+	      return FALSE;
+	    }
+    }
+  }
+  return TRUE;
+}
+
+/**
+ * An API function to delete a record from a template array
+ *
+ * @param $delete_priority
+ *   The priority of the record to be deleted
+ * @param $template_array
+ *   The array describing the template
+ *
+ * @return
+ *   The modified template array
+ */
+function tripal_bulk_loader_delete_record($delete_priority, $template_array) {
+
+	if (empty($template_array)) {
+		drupal_set_message("Unable to delete record with a priority of $priority since the template was not supplied",'error');
+		return FALSE;
+	}
+
+	$new_template_array = array();
+	$i=0;
+	foreach ($template_array as $priority => $record) {
+		if ($priority != $delete_priority) {
+			$new_template_array[$i] = $record;
+			$i++;
+		}
+	}
+
+	return $new_template_array;
+}
+
+/**
+ * An API function to delete a field from a template array
+ *
+ * @param $priority
+ *   The priority of the record containing the field
+ * @param $delete_field_index
+ *   The index of the field to be deleted
+ * @param $template_array
+ *   The array describing the template
+ *
+ * @return
+ *   The modified template array
+ */
+function tripal_bulk_loader_delete_field($priority, $delete_field_index, $template_array) {
+
+	if (empty($template_array)) {
+		drupal_set_message("Unable to delete record with a priority of $priority since the template was not supplied",'error');
+		return FALSE;
+	}
+
+	// Re-order the remaining fields of the same record to ensure that the indicies are
+	// 0 to size and. If this is not done, weird behaviour may result
+	$new_template_array = $template_array;
+	$new_template_array[$priority]['fields'] = array();
+	$i=0;
+	foreach ($template_array[$priority]['fields'] as $field_index => $field_details) {
+		if ($field_index != $delete_field_index) {
+			$new_template_array[$priority]['fields'][$i] = $field_details;
+			$i++;
+		}
+	}
+
+	// If this field was the only one in the current record, also delete the record
+	if (empty($new_template_array[$priority]['fields'])) {
+		$new_template_array = tripal_bulk_loader_delete_record($priority, $new_template_array);
+	}
+
+	return $new_template_array;
+}

+ 18 - 59
tripal_bulk_loader/tripal_bulk_loader.admin.templates.inc

@@ -210,6 +210,11 @@ function tripal_bulk_loader_modify_template_base_form($form_state = NULL, $mode)
             '#name' => ($priority !== 0) ? (string)$priority : 'zero',
             '#value' => 'Edit Record',
           ),
+          'submit-delete_record' => array(
+            '#type' => 'submit',
+            '#name' => ($priority !== 0) ? (string)$priority : 'zero',
+            '#value' => 'Delete Record',
+          ),
           'submit-add_field' => array(
             '#type' => 'submit',
             '#name' => ($priority !== 0) ? (string)$priority : 'zero',
@@ -425,6 +430,14 @@ function tripal_bulk_loader_modify_template_base_form_submit($form, &$form_state
       drupal_goto('admin/tripal/tripal_bulk_loader_template/edit_record', $query);
     break;
 
+    case 'Delete Record':
+    	$form_state['storage']['record2priority'] = array();
+      $new_template = tripal_bulk_loader_delete_record($form_state['clicked_button']['#name'], $form_state['storage']['template']);
+      if (!empty($new_template)) {
+      	$form_state['storage']['template'] = $new_template;
+      }
+    break;
+
     case 'Add Field':
       $query = array(
         'template_id' => $form_state['storage']['template_id'],
@@ -455,14 +468,14 @@ function tripal_bulk_loader_modify_template_base_form_submit($form, &$form_state
     break;
 
     case 'Delete Field':
+    	// Delete Field
       $field_data = $form_state['values']['fields-data'][$form_state['clicked_button']['#name']];
       $priority = $field_data['priority_hidden'];
       $field_key = $field_data['field_index'];
-      unset($form_state['storage']['template'][$priority]['fields'][$field_key]);
-      if (!$form_state['storage']['template'][$priority]['fields']) {
-        unset($form_state['storage']['record2priority'][$form_state['storage']['template'][$priority]['record_id']]);
-        unset($form_state['storage']['template'][$priority]);
-      }
+      $new_template = tripal_bulk_loader_delete_field($priority, $field_key, $form_state['storage']['template']);
+			if (!empty($new_template)) {
+				$form_state['storage']['template'] = $new_template;
+			}
       drupal_set_message(t('Deleted Field from Template.'));
     break;
   } //end of switch
@@ -2511,60 +2524,6 @@ function tripal_bulk_loader_edit_template_field_form_submit($form, &$form_state)
 
 }
 
-/**
- * @section
- * Helper Functions
- */
-
-/**
- * Meant to be called from a form_validate function to ensure a newly added bulk loader record
- * name is unique and not empty.
- *
- * @param $new_record_name
- *   The record name to check for uniqueness
- * @param $template_id
- *   The template_id of the template to add the record to
- * @param $template_array
- *   The array describing the template. Optional -will be loaded using template_id if not provided
- * @param $current_priority
- *   The priority of the already existing record -checks that the name only occurs on this particular record
- *
- * @return
- *   TRUE if the record name is not empty and not already in the template_array; FALSE otherwise
- */
-function tripal_bulk_loader_is_record_name_unique($new_record_name, $template_id, $template_array = NULL, $current_priority = NULL) {
-
-  // get the template array if it's not supplied
-  if (empty($template_array)) {
-    $template = db_fetch_object(db_query("SELECT * FROM {tripal_bulk_loader_template} WHERE template_id=%d", $template_id));
-    $template_array = unserialize($template->template_array);
-    if (!is_array($template_array)) {
-      watchdog(
-        'tripal_bulk_loader',
-        'Unable to retrieve template array from database where template_id=%template_id',
-        array('%template_id' => $template_id),
-        WATCHDOG_WARNING
-      );
-      return FALSE;
-    }
-  }
-
-  // Check that the new record name is not empty
-  if (empty($new_record_name)) {
-    return FALSE;
-  }
-
-  // Check the new record name is unique
-  foreach ($template_array as $priority => $t) {
-    if (strcmp($t['record_id'], $new_record_name) == 0) {
-    	if (($priority != $current_priority) AND ($current_priority !== NULL)) {
-	      return FALSE;
-	    }
-    }
-  }
-  return TRUE;
-}
-
 /**
  * @section
  * AHAH Callbacks

+ 3 - 0
tripal_bulk_loader/tripal_bulk_loader.module

@@ -5,6 +5,9 @@ include('tripal_bulk_loader.constants.inc');
 include('tripal_bulk_loader.admin.inc');
 include('tripal_bulk_loader.admin.templates.inc');
 
+// API
+include('api/tripal_bulk_loader.api.templates.inc');
+
 /**
  * Implements hook_init
  * Used to add stylesheets and javascript files to the header