Browse Source

Fixed problems with upgrade from T2 to T3

Stephen Ficklin 8 years ago
parent
commit
a0be583029

+ 0 - 224
tripal_chado/api/tripal_chado.views.api.inc

@@ -1,224 +0,0 @@
-<?php
-/**
- * Removes Chado fields from a view, if Chado is external.
- *
- * Remove any drupal fields from a chado-based default view definition if
- * chado is external. This ensures compatibility with an external chado
- * database.
- *
- * You should be calling this function in your hook_views_default_views().
- * This function will only remove drupal tables if chado is external; thus you
- * do not need to worry about checking yourself. For example, the following is
- * a good hook_views_default_views():
- *
- * @code
- * function mymodule_views_default_views() {
- *   $views = array();
- *
- *   // NOTE: <VIEW-TYPE> describes the type of view:
- *   //     - 'admin' for views used for administration of your module
- *   //     - 'search' for views used to search data
- *   //     - 'list' for views used primarily as data listings
- *
- *   // <VIEW-HUMAN-READABLE-NAME>
- *   $view = mymodule_defaultview_<VIEW-TYPE>_<VIEW-MACHINE-NAME>();
- *   $view = tripal_make_view_compatible_with_external($view);
- *   $views[$view->name] = $view;*
- *
- *   // <VIEW-HUMAN-READABLE-NAME>
- *   $view = mymodule_defaultview_<VIEW-TYPE>_<VIEW-MACHINE-NAME>();
- *   $view = tripal_make_view_compatible_with_external($view);
- *   $views[$view->name] = $view;
- *
- *   return $views;
- * }
- *
- * function mymodule_defaultview_<VIEW-TYPE>_<VIEW-MACHINE-NAME>() {
- *   // PASTE VIEWS EXPORT CODE HERE
- *   return $view;
- * }
- *
- * function mymodule_defaultview_<VIEW-TYPE>_<VIEW-MACHINE-NAME>() {
- *   // PASTE VIEWS EXPORT CODE HERE
- *   return $view;
- * }
- * @endcode
- *
- * Notice that the actual views export code is in a separate function. This
- * makes your hook_views_default_views() more readable.
- *
- * NOTE: Currently assumes all tables not in the tripal views integration
- * tables are Drupal tables.
- *
- * @param $view
- *   The default view definition object
- * @return
- *   The default view with all relationships, fields, filters, sorts,
- *   arguements for Drupal tables removed.
- */
-function tripal_make_view_compatible_with_external($view) {
-  $remove_table = array();
-
-  // First check that the base table for the view is a chado table
-  // If it's not then don't do any filtering
-  $schema = chado_get_schema($view->base_table);
-  if (!$schema) {
-    return $view;
-  }
-//   $setup_id = tripal_is_table_integrated($view->base_table);
-//   if (!$setup_id) {
-//     return $view;
-//   }
-
-  // IF chado is external then remove all config relating to drupal tables
-  if (!chado_is_local()) {
-
-    // Iterate through all displays
-    foreach ($view->display as $display_name => $display) {
-      $display_options = $display->handler->display->display_options;
-
-      $sections = array('fields', 'filters', 'sorts', 'relationships');
-      foreach ($sections as $section) {
-        $display_options[$section] = (isset($display_options[$section])) ? $display_options[$section] : array();
-        foreach ($display_options[$section] as $key => $defn) {
-          // If the table has not already been encountered; check if it's in tripal_views
-          if (!isset($remove_table[ $defn['table'] ])) {
-            // If the table is view then this is a general handler; thus keep
-            if ($defn['table'] == 'views') {
-              $remove_table[ $defn['table'] ] = FALSE;
-            }
-            // If this table is integrated then it is chado; thus keep
-            //$setup_id = tripal_is_table_integrated($defn['table']);
-            $schema = chado_get_schema($defn['table']);
-            //if ($setup_id) {
-            if ($schema) {
-              $remove_table[ $defn['table'] ] = FALSE;
-            }
-            else {
-              $remove_table[ $defn['table'] ] = TRUE;
-            }
-          }
-
-          // Based on the $remove_table array, unset this field if its from a drupal table
-          if ($remove_table[ $defn['table'] ]) {
-            unset($view->display[$display_name]->handler->display->display_options[$section][$key]);
-          }
-        }
-      }
-
-    }
-  }
-
-  return $view;
-}
-
-/**
- * Programatically disable view.
- *
- * This should be used in a hook_menu definition as the callback to provide a link
- * to disable the view (first example). It can also be called directly if needed (second example).
- * @code
- * // Create a URL that when the user navigates there, a given view will be disabled.
- * // You will still need to provide a link to this menu item somewhere appropriate.
- * function mymodule_menu() {
- *   $items = array();
- *
- *   // Create one of these for each of your default views
- *   $items['admin/tripal/<PATH-TO-YOUR-ADMIN-SECTION>/views/<VIEW-MACHINE-NAME>/disable'] = array(
- *     'title' => 'Disable <VIEW-HUMAN-READABLE-NAME>',
- *     'page callback' => 'tripal_disable_view',
- *     'page arguments' => array('<VIEW-MACHINE-NAME>', '<PATH-TO-REDIRECT-TO-AFTERWARDS>'),
- *     'access arguments' => array('<YOUR-PERMISSION-KEY>'),
- *     'type' => MENU_CALLBACK,
- *   );
- *
- *   return $items;
- * }
- *
- * // Call this function directly to disable a view
- * // The example shows disabling your own default view when your module is uninstalled
- * function mymodule_uninstall() {
- *
- *   $view_name = '<VIEW-MACHINE-NAME>';
- *   tripal_disable_view($view_name);
- *
- * }
- * @endcode
- *
- * @param $view_name
- *   The machine-name of the view to be enabled
- * @param $redirect_link
- *   The path to redirect to. FALSE if no redirect needed
- *
- * @ingroup tripal_chado_views_api
- */
-function tripal_disable_view($view_name, $redirect_link = FALSE) {
-
-  $status = variable_get('views_defaults', array());
-  if (isset($status[$view_name])) {
-    $status[$view_name] = TRUE;
-    variable_set('views_defaults', $status);
-    drupal_set_message("Disabled $view_name");
-  }
-  else {
-    drupal_set_message("Unable to find a view by the name of '$view_name'. Unable to disable this view.",'error');
-  }
-  if ($redirect_link) {
-    drupal_goto($redirect_link);
-  }
-}
-
-/**
- * Programatically enable view
- *
- * This should be used in a hook_menu definition as the callback to provide a link
- * to enable the view (first example). It can also be called directly if needed (second example).
- * @code
- * // Create a URL that when the user navigates there, a given view will be enabled.
- * // You will still need to provide a link to this menu item somewhere appropriate (ie: an admin landing page).
- * function mymodule_menu() {
- *   $items = array();
- *
- *   // Create one of these for each of your default views
- *   $items['admin/tripal/<PATH-TO-YOUR-ADMIN-SECTION>/views/<VIEW-MACHINE-NAME>/enable'] = array(
- *     'title' => 'Enable <VIEW-HUMAN-READABLE-NAME>',
- *     'page callback' => 'tripal_enable_view',
- *     'page arguments' => array('<VIEW-MACHINE-NAME>', '<PATH-TO-REDIRECT-TO-AFTERWARDS>'),
- *     'access arguments' => array('<YOUR-PERMISSION-KEY>'),
- *     'type' => MENU_CALLBACK,
- *   );
- *
- *   return $items;
- * }
- *
- * // Call this function directly to disable a view
- * // The example shows enabling your own default view when your module is enabled.
- * // This might be useful if you disable your view when your module is disabled.
- * function mymodule_enable() {
- *   $view_name = '<VIEW-MACHINE-NAME>';
- *   tripal_enable_view($view_name);
- * }
- * @endcode
- *
- * @param $view_name
- *   The machine-name of the view to be enabled
- * @param $redirect_link
- *   The path to redirect to. FALSE if no redirect needed
- *
- * @ingroup tripal_chado_views_api
- */
-function tripal_enable_view($view_name, $redirect_link = FALSE) {
-
-  $status = variable_get('views_defaults', array());
-  if (isset($status[$view_name])) {
-    $status[$view_name] = FALSE;
-    variable_set('views_defaults', $status);
-    drupal_set_message("Successfully Enabled $view_name");
-  }
-  else {
-    drupal_set_message("Unable to find a view by the name of '$view_name'. Unable to enable this view.",'error');
-  }
-  if ($redirect_link) {
-    drupal_goto($redirect_link);
-  }
-}

+ 0 - 1
tripal_chado/tripal_chado.module

@@ -16,7 +16,6 @@ require_once 'api/tripal_chado.schema_v1.3.api.inc';
 require_once 'api/tripal_chado.schema_v1.2.api.inc';
 require_once 'api/tripal_chado.schema_v1.11.api.inc';
 require_once 'api/tripal_chado.semweb.api.inc';
-require_once 'api/tripal_chado.views.api.inc';
 
 // Chado module specific API functions
 require_once 'api/modules/tripal_chado.analysis.api.inc';

+ 212 - 0
tripal_chado_views/api/tripal_chado_views.api.inc

@@ -179,6 +179,218 @@ function mymodule_admin_landing_page() {
  * @}
  */
 
+/**
+ * Programatically enable view
+ *
+ * This should be used in a hook_menu definition as the callback to provide a link
+ * to enable the view (first example). It can also be called directly if needed (second example).
+ * @code
+ // Create a URL that when the user navigates there, a given view will be enabled.
+ // You will still need to provide a link to this menu item somewhere appropriate (ie: an admin landing page).
+ function mymodule_menu() {
+ $items = array();
+
+ // Create one of these for each of your default views
+ $items['admin/tripal/<PATH-TO-YOUR-ADMIN-SECTION>/views/<VIEW-MACHINE-NAME>/enable'] = array(
+ 'title' => 'Enable <VIEW-HUMAN-READABLE-NAME>',
+ 'page callback' => 'tripal_enable_view',
+ 'page arguments' => array('<VIEW-MACHINE-NAME>', '<PATH-TO-REDIRECT-TO-AFTERWARDS>'),
+ 'access arguments' => array('<YOUR-PERMISSION-KEY>'),
+ 'type' => MENU_CALLBACK,
+ );
+
+ return $items;
+ }
+
+ // Call this function directly to disable a view
+ // The example shows enabling your own default view when your module is enabled.
+ // This might be useful if you disable your view when your module is disabled.
+ function mymodule_enable() {
+
+ $view_name = '<VIEW-MACHINE-NAME>';
+ tripal_enable_view($view_name);
+
+ }
+ * @endcode
+ *
+ * @param $view_name
+ *   The machine-name of the view to be enabled
+ * @param $redirect_link
+ *   The path to redirect to. FALSE if no redirect needed
+ *
+ * @ingroup tripal_views_api
+ */
+function tripal_enable_view($view_name, $redirect_link = FALSE) {
+
+  $status = variable_get('views_defaults', array());
+  if (isset($status[$view_name])) {
+    $status[$view_name] = FALSE;
+    variable_set('views_defaults', $status);
+    drupal_set_message("Successfully Enabled $view_name");
+  }
+  else {
+    drupal_set_message("Unable to find a view by the name of '$view_name'. Unable to enable this view.",'notice');
+  }
+  if ($redirect_link) {
+    drupal_goto($redirect_link);
+  }
+}
+
+/**
+ * Programatically disable view.
+ *
+ * This should be used in a hook_menu definition as the callback to provide a link
+ * to disable the view (first example). It can also be called directly if needed (second example).
+ * @code
+ // Create a URL that when the user navigates there, a given view will be disabled.
+ // You will still need to provide a link to this menu item somewhere appropriate.
+ function mymodule_menu() {
+ $items = array();
+
+ // Create one of these for each of your default views
+ $items['admin/tripal/<PATH-TO-YOUR-ADMIN-SECTION>/views/<VIEW-MACHINE-NAME>/disable'] = array(
+ 'title' => 'Disable <VIEW-HUMAN-READABLE-NAME>',
+ 'page callback' => 'tripal_disable_view',
+ 'page arguments' => array('<VIEW-MACHINE-NAME>', '<PATH-TO-REDIRECT-TO-AFTERWARDS>'),
+ 'access arguments' => array('<YOUR-PERMISSION-KEY>'),
+ 'type' => MENU_CALLBACK,
+ );
+
+ return $items;
+ }
+
+ // Call this function directly to disable a view
+ // The example shows disabling your own default view when your module is uninstalled
+ function mymodule_uninstall() {
+
+ $view_name = '<VIEW-MACHINE-NAME>';
+ tripal_disable_view($view_name);
+
+ }
+ * @endcode
+ *
+ * @param $view_name
+ *   The machine-name of the view to be enabled
+ * @param $redirect_link
+ *   The path to redirect to. FALSE if no redirect needed
+ *
+ * @ingroup tripal_views_api
+ */
+function tripal_disable_view($view_name, $redirect_link = FALSE) {
+
+  $status = variable_get('views_defaults', array());
+  if (isset($status[$view_name])) {
+    $status[$view_name] = TRUE;
+    variable_set('views_defaults', $status);
+    drupal_set_message("Disabled $view_name");
+  }
+  else {
+    drupal_set_message("Unable to find a view by the name of '$view_name'. Unable to disable this view.",'notice');
+  }
+  if ($redirect_link) {
+    drupal_goto($redirect_link);
+  }
+}
+
+/**
+ * Remove any drupal fields from a chado-based default view definition if chado is external.
+ * This ensures compatibility with an external chado database.
+ *
+ * You should be calling this function in your hook_views_default_views(). This function
+ * will only remove drupal tables if chado is external; thus you do not need to worry about
+ * checking yourself. For example, the following is a good hook_views_default_views():
+ * @code
+ function mymodule_views_default_views() {
+ $views = array();
+
+ // NOTE: <VIEW-TYPE> describes the type of view:
+ //     - 'admin' for views used for administration of your module
+ //     - 'search' for views used to search data
+ //     - 'list' for views used primarily as data listings
+
+ // <VIEW-HUMAN-READABLE-NAME>
+ $view = mymodule_defaultview_<VIEW-TYPE>_<VIEW-MACHINE-NAME>();
+ $view = tripal_make_view_compatible_with_external($view);
+ $views[$view->name] = $view;
+
+ // <VIEW-HUMAN-READABLE-NAME>
+ $view = mymodule_defaultview_<VIEW-TYPE>_<VIEW-MACHINE-NAME>();
+ $view = tripal_make_view_compatible_with_external($view);
+ $views[$view->name] = $view;
+
+ return $views;
+ }
+
+ function mymodule_defaultview_<VIEW-TYPE>_<VIEW-MACHINE-NAME>() {
+ // PASTE VIEWS EXPORT CODE HERE
+ return $view;
+ }
+
+ function mymodule_defaultview_<VIEW-TYPE>_<VIEW-MACHINE-NAME>() {
+ // PASTE VIEWS EXPORT CODE HERE
+ return $view;
+ }
+ * @endcode
+ * Notice that the actual views export code is in a separate function. This makes your
+ * hook_views_default_views() more readable.
+ *
+ * NOTE: Currently assumes all tables not in the tripal views integration tables are Drupal tables.
+ *
+ * @param $view
+ *   The default view definition object
+ * @return
+ *   The default view with all relationships, fields, filters, sorts, arguments for
+ *   Drupal tables removed.
+ */
+function tripal_make_view_compatible_with_external($view) {
+  $remove_table = array();
+
+  // First check that the base table for the view is a chado table
+  // If it's not then don't do any filtering
+  $setup_id = tripal_is_table_integrated($view->base_table);
+  if (!$setup_id) {
+    return $view;
+  }
+
+  // IF chado is external then remove all config relating to drupal tables
+  if (!chado_is_local()) {
+
+    // Iterate through all displays
+    foreach ($view->display as $display_name => $display) {
+      $display_options = $display->handler->display->display_options;
+
+      $sections = array('fields', 'filters', 'sorts', 'relationships');
+      foreach ($sections as $section) {
+        $display_options[$section] = (isset($display_options[$section])) ? $display_options[$section] : array();
+        foreach ($display_options[$section] as $key => $defn) {
+          // If the table has not already been encountered; check if it's in tripal_views
+          if (!isset($remove_table[ $defn['table'] ])) {
+            // If the table is view then this is a general handler; thus keep
+            if ($defn['table'] == 'views') {
+              $remove_table[ $defn['table'] ] = FALSE;
+            }
+            // If this table is integrated then it is chado; thus keep
+            $setup_id = tripal_is_table_integrated($defn['table']);
+            if ($setup_id) {
+              $remove_table[ $defn['table'] ] = FALSE;
+            }
+            else {
+              $remove_table[ $defn['table'] ] = TRUE;
+            }
+          }
+
+          // Based on the $remove_table array, unset this field if its from a drupal table
+          if ($remove_table[ $defn['table'] ]) {
+            unset($view->display[$display_name]->handler->display->display_options[$section][$key]);
+          }
+        }
+      }
+
+    }
+  }
+
+  return $view;
+}
 /**
  * Retrieve the priority of the lightest priority for a given table.
  *

+ 1 - 0
tripal_chado_views/includes/tripal_chado_views_integration.inc

@@ -27,6 +27,7 @@ function tripal_chado_views_delete_all_integrations() {
  * @ingroup tripal_chado_views
  */
 function tripal_chado_views_integrate_all_chado_tables() {
+  module_load_include('inc', 'tripal_chado', 'api/tripal_chado.mviews.api');
 
   // First integrate all of the Chado tables. Those that are base tables
   // get special treatment.