diff --git includes/updater.inc includes/updater.inc index b49d5d2..0092fb9 100644 --- includes/updater.inc +++ includes/updater.inc @@ -164,7 +164,9 @@ class Updater { * The name of the project. */ public static function getProjectName($directory) { - return basename($directory); + $info_file = self::findInfoFile($directory); + $info = drupal_parse_info_file($info_file); + return !empty($info['project']) ? $info['project'] : basename($directory); } /** diff --git modules/field/field.crud.inc modules/field/field.crud.inc index eda3218..27b1638 100644 --- modules/system/system.updater.inc +++ modules/system/system.updater.inc @@ -26,12 +26,16 @@ class ModuleUpdater extends Updater implements DrupalUpdaterInterface { */ public function getInstallDirectory() { if ($relative_path = drupal_get_path('module', $this->name)) { - $relative_path = dirname($relative_path); + $path = DRUPAL_ROOT . '/' . $relative_path; + $project_name = $this->getProjectName($path); + do { + $path = dirname($path); + } while ($this->getProjectName($path) == $project_name); } else { - $relative_path = 'sites/all/modules'; + $path = DRUPAL_ROOT . '/' . 'sites/all/modules'; } - return DRUPAL_ROOT . '/' . $relative_path; + return $path; } public function isInstalled() {