? hook_access.patch
? module_dep.patch
Index: shazamgallery.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/shazamgallery/shazamgallery.module,v
retrieving revision 1.22
diff -u -p -r1.22 shazamgallery.module
@@ -189,6 +206,10 @@ function shazamgallery_nodeapi(&$node, $
  * Implementation of hook_form_alter().
  */
 function shazamgallery_form_alter($form_id, &$form) {
+  // hunmonk's module dependency check: see http://drupal.org/node/54463
+  if ($form_id == 'system_modules' && !$_POST) {
+    shazamgallery_system_module_validate($form);
+  }
   if (isset($form['type'])) {
     // Extend only image node form
     if ('image_node_form' == $form_id) {
@@ -225,6 +246,26 @@ function shazamgallery_form_alter($form_
   }
 }
 
+/**
+ * hunmonk's module dependency check: see http://drupal.org/node/54463
+ */
+function shazamgallery_system_module_validate(&$form) {
+  $module = 'shazamgallery';
+  $dependencies = array('views', 'image');
+  foreach ($dependencies as $dependency) {
+      if (!in_array($dependency, $form['status']['#default_value'])) {
+        $missing_dependency = TRUE;
+        $missing_dependency_list[] = $dependency;
+      }
+  }
+  if (in_array($module, $form['status']['#default_value']) && isset($missing_dependency)) {
+    db_query("UPDATE {system} SET status = 0 WHERE type = 'module' AND name = '%s'", $module);
+    $key = array_search($module, $form['status']['#default_value']);
+    unset($form['status']['#default_value'][$key]);
+    drupal_set_message(t('The module %module was deactivated--it requires the following disabled/non-existant modules to function properly: %dependencies', array('%module' => $module, '%dependencies' => implode(', ', $missing_dependency_list))), 'error');
+  }
+}
+
 function _shazamgallery_image_insert($node) {
  //save the parents
  if ($node->shazam_parents) {
