Rob Thorne wrote:
I've started to write .install files for the modules I'm responsible for. Mostly this is pretty straightforward. But there are a few areas I'm hoping there is support for in the system:
* UI for problems/status during install: I've made it a practice to do like merlinofchaos and put up a message to indicate I've installed tables (with a call to drupal_set_message). It's less clear what's best to call if there's a problem. * I've noticed that there are calls in install.inc to register schema versions, but I haven't seen any examples of their being used. How *should* those functions be used? * Dependencies are an issue for some of the stuff I'm installing. It would be a good thing if the .install could detect that a needed module was not present, and in that case, put up an error message and refuse to install. Is there a mechanism to do this currently?
cut & paste cause I lazy /** * hunmonk's module dependency check: see http://drupal.org/node/54463 */ function views_ui_form_alter($form_id, &$form) { if ($form_id == 'system_modules' && !$_POST) { views_ui_system_module_validate($form); } } /** * hunmonk's module dependency check: see http://drupal.org/node/54463 */ function views_ui_system_module_validate(&$form) { $module = 'views_ui'; $dependencies = array('views'); 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'); } }