/**
* Returns an array of version number values based on the given tag.
*/
function cvs_get_version_from_tag($tag, $project) {
// First, split on '--', if it's there, that tells us API vs. regular
list($first_ver, $second_ver) = explode('--', $tag->tag);
$first = explode('-', $first_ver, 5);
$second = empty($second_ver) ? array() : explode('-', $second_ver, 3);
if ($project->nid == 3060) {
if ($first[1] >= 5) {
$version->version_major = $first[1];
if (isset($first[2])) {
$version->version_patch = $first[2];
$version->version_extra = _cvs_get_extra($first[3].$first[4]);
}
else {
$version->version_patch = 'x';
$version->version_extra = 'dev';
}
}
else {
if (isset($first[3])) {
// Looks like "DRUPAL-X-Y-Z". Ignore the 'DRUPAL' part in $first[0].
$version->version_major = $first[1];
$version->version_minor = $first[2];
$version->version_patch = $first[3];
$version->version_extra = _cvs_get_extra($first[4]);
}
else {
// Looks like "DRUPAL-X-Y", must be like "DRUPAL-4-7" (branch)
$version->version_major = $first[1];
$version->version_minor = $first[2];
$version->version_patch = 'x';
$version->version_extra = 'dev';
}
}
}
else {
// Contrib tags don't need any special cases. If there's nothing
// after the '--' (the default stable branch), we want "-1.x-dev".
$version->version_major = isset($second[0]) ? $second[0] : 1;
$version->version_patch = isset($second[1]) ? $second[1] : 'x';
$version->version_extra = $tag->branch ? 'dev' : _cvs_get_extra($second[2]);
}
if ($tree = project_release_get_api_taxonomy()) {
// If we're using the compatibility taxonomy, find the right tid.
// For both core and contrib, it's set by what we saw before the '--',
// namely, the stuff in the $first array...
if (!isset($first[2])) {
$target = "$first[1].x";
}
else {
$target = "$first[1].$first[2].x";
}
foreach ($tree as $i => $term) {
if ($term->name == $target) {
$version->version_api_tid = $term->tid;
break;
}
}
}
// TODO: add code to validate we parsed something reasonable, and ignore bad tags.
return $version;
}