diff --git a/project_dependency.drupal.inc b/project_dependency.drupal.inc index aa85bbb..61ed39d 100644 --- a/project_dependency.drupal.inc +++ b/project_dependency.drupal.inc @@ -308,6 +308,7 @@ function project_dependency_info_batch_process_release(array $release) { if (!in_array($project_type, array('project_core', 'project_module'))) { return FALSE; } + $release_project_name = $release_wrapper->field_release_project->field_project_machine_name->value(); $url = PROJECT_DEPENDENCY_UPSTREAM_REPOSITORY_PATH . '/' . escapeshellcmd($release['repo']) . '.git'; $tag = escapeshellcmd($release['tag']); @@ -370,17 +371,24 @@ function project_dependency_info_batch_process_release(array $release) { foreach ($info[$component][$dependency_type] as $key => $dependency) { $parsed_dependency = project_dependency_parse_dependency($dependency, $api_term->name); if (!isset($parsed_dependency['project'])) { - $project = project_dependency_guess_project($parsed_dependency, - $api_term->tid); - if ($project) { - $wrapper = entity_metadata_wrapper('node', $project); - $project_name = $wrapper->field_project_machine_name->value(); - $info[$component][$dependency_type][$key] = $project_name . ':' . - $dependency; + // Dependency is not namespaced. + if (isset($info[$parsed_dependency['name']])) { + // Dependency is a component of the project itself. + $info[$component][$dependency_type][$key] = $release_project_name . ':' . $dependency; } else { - // Probably should set an error message here. - watchdog('project_dependency', 'Failed to find a release for component %component as dependency of %depending_component, release_nid=%release_nid', array('%component' => $parsed_dependency['name'], '%depending_component' => $component, '%release_nid' => $release_node->nid)); + $project = project_dependency_guess_project($parsed_dependency, + $api_term->tid); + if ($project) { + $wrapper = entity_metadata_wrapper('node', $project); + $project_name = $wrapper->field_project_machine_name->value(); + $info[$component][$dependency_type][$key] = $project_name . ':' . + $dependency; + } + else { + // Probably should set an error message here. + watchdog('project_dependency', 'Failed to find a release for component %component as dependency of %depending_component, release_nid=%release_nid', array('%component' => $parsed_dependency['name'], '%depending_component' => $component, '%release_nid' => $release_node->nid)); + } } } } @@ -397,7 +405,6 @@ function project_dependency_info_batch_process_release(array $release) { // Clear previous records for the release. project_dependency_info_package_clear($release['nid']); - $components_in_release = array_keys($info); // Store the list of components contained by the project. $component_info = project_dependency_info_package_list_store($release['nid'], $info); foreach ($component_info as $component => $item) { @@ -405,7 +412,7 @@ function project_dependency_info_batch_process_release(array $release) { $new_dependencies = array(); if (is_array($info[$component]['dependencies'])) { foreach ($info[$component]['dependencies'] as $new_dependency) { - $new_dependencies[$new_dependency] = array('external' => !in_array($new_dependency, $components_in_release)); + $new_dependencies[$new_dependency] = array('external' => (strpos($new_dependency, $release_project_name . ':') !== 0)); } } project_dependency_info_package_dependencies_store($item['release_nid'], $item['component_id'], $new_dependencies); @@ -414,7 +421,7 @@ function project_dependency_info_batch_process_release(array $release) { $test_dependencies = array(); if (is_array($info[$component]['test_dependencies'])) { foreach ($info[$component]['test_dependencies'] as $new_dependency) { - $test_dependencies[$new_dependency] = array('external' => !in_array($new_dependency, $components_in_release)); + $test_dependencies[$new_dependency] = array('external' => (strpos($new_dependency, $release_project_name . ':') !== 0)); } } project_dependency_info_package_dependencies_store($item['release_nid'], $item['component_id'], $test_dependencies, PROJECT_DEPENDENCY_DEPENDENCY_RECOMMENDED); @@ -634,7 +641,7 @@ function project_dependency_find_external_dependencies($release_nid, $component_ FROM {project_dependency_dependency} pdd INNER JOIN {project_dependency_component} pdc ON pdd.component_id = pdc.component_id - WHERE pdc.name = :pdcname AND pdc.release_nid = :pdcrelease_nid'; + WHERE pdd.external = 1 AND pdc.name = :pdcname AND pdc.release_nid = :pdcrelease_nid'; $result = db_query($sql, array(':pdcname' => $component_name, ':pdcrelease_nid' => $release_nid)); $rows = $result->fetchAll(); return $rows;