? node_collisions.patch
Index: project.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project/project.inc,v
retrieving revision 1.118
diff -u -F^f -r1.118 project.inc
--- project.inc 14 Oct 2007 18:34:50 -0000 1.118
+++ project.inc 20 Oct 2007 04:15:29 -0000
@@ -95,7 +95,9 @@ function project_project_form($node) {
$form['project']['uri'] = array(
'#type' => 'textfield',
'#title' => t('Short project name'),
- '#default_value' => isset($node->uri) ? $node->uri : NULL,
+// MUNGE: $node->uri
+// MUNGE: $node->uri
+ '#default_value' => isset($node->project['uri']) ? $node->project['uri'] : NULL,
'#size' => 40,
'#maxlength' => 50,
'#description' => t('This will be used to generate a /project/<shortname>/ URL for your project.'),
@@ -110,7 +112,9 @@ function project_project_form($node) {
$form['project']['mail'] = array(
'#type' => 'textfield',
'#title' => t('Project e-mail'),
- '#default_value' => isset($node->mail) ? $node->mail : $user->mail,
+// MUNGE: $node->mail
+// MUNGE: $node->mail
+ '#default_value' => isset($node->project['mail']) ? $node->project['mail'] : $user->mail,
'#size' => 40,
'#maxlength' => 255,
'#description' => $description,
@@ -119,7 +123,9 @@ function project_project_form($node) {
$form['project']['homepage'] = array(
'#type' => 'textfield',
'#title' => t('Homepage'),
- '#default_value' => isset($node->homepage) ? $node->homepage : NULL,
+// MUNGE: $node->homepage
+// MUNGE: $node->homepage
+ '#default_value' => isset($node->project['homepage']) ? $node->project['homepage'] : NULL,
'#size' => 40,
'#maxlength' => 255,
'#description' => t('Link to project homepage.'),
@@ -127,7 +133,9 @@ function project_project_form($node) {
$form['project']['documentation'] = array(
'#type' => 'textfield',
'#title' => t('Documentation'),
- '#default_value' => isset($node->documentation) ? $node->documentation : NULL,
+// MUNGE: $node->documentation
+// MUNGE: $node->documentation
+ '#default_value' => isset($node->project['documentation']) ? $node->project['documentation'] : NULL,
'#size' => 40,
'#maxlength' => 255,
'#description' => t('Link to project documentation.'),
@@ -135,7 +143,9 @@ function project_project_form($node) {
$form['project']['license'] = array(
'#type' => 'textfield',
'#title' => t('License'),
- '#default_value' => isset($node->license) ? $node->license : NULL,
+// MUNGE: $node->license
+// MUNGE: $node->license
+ '#default_value' => isset($node->project['license']) ? $node->project['license'] : NULL,
'#size' => 40,
'#maxlength' => 255,
'#description' => t('Link to project license.'),
@@ -143,7 +153,9 @@ function project_project_form($node) {
$form['project']['screenshots'] = array(
'#type' => 'textfield',
'#title' => t('Screenshots'),
- '#default_value' => isset($node->screenshots) ? $node->screenshots : NULL,
+// MUNGE: $node->screenshots
+// MUNGE: $node->screenshots
+ '#default_value' => isset($node->project['screenshots']) ? $node->project['screenshots'] : NULL,
'#size' => 40,
'#maxlength' => 255,
'#description' => t('Link to project screenshots.'),
@@ -151,7 +163,9 @@ function project_project_form($node) {
$form['project']['changelog'] = array(
'#type' => 'textfield',
'#title' => t('Changelog'),
- '#default_value' => isset($node->changelog) ? $node->changelog : NULL,
+// MUNGE: $node->changelog
+// MUNGE: $node->changelog
+ '#default_value' => isset($node->project['changelog']) ? $node->project['changelog'] : NULL,
'#size' => 40,
'#maxlength' => 255,
'#description' => t('Link to changelog.'),
@@ -159,7 +173,9 @@ function project_project_form($node) {
$form['project']['cvs'] = array(
'#type' => 'textfield',
'#title' => t('CVS tree'),
- '#default_value' => isset($node->cvs) ? $node->cvs : NULL,
+// MUNGE: $node->cvs
+// MUNGE: $node->cvs
+ '#default_value' => isset($node->project['cvs']) ? $node->project['cvs'] : NULL,
'#size' => 40,
'#maxlength' => 255,
'#description' => t('Link to webcvs/viewcvs.'),
@@ -167,7 +183,9 @@ function project_project_form($node) {
$form['project']['demo'] = array(
'#type' => 'textfield',
'#title' => t('Demo site'),
- '#default_value' => isset($node->demo) ? $node->demo : NULL,
+// MUNGE: $node->demo
+// MUNGE: $node->demo
+ '#default_value' => isset($node->project['demo']) ? $node->project['demo'] : NULL,
'#size' => 40,
'#maxlength' => 255,
'#description' => t('Link to a live demo.'),
@@ -193,12 +211,14 @@ function project_project_validate(&$node
}
// Validate uri.
- if (empty($node->uri)) {
+// MUNGE: $node->uri
+ if (empty($node->project['uri'])) {
form_set_error('uri', t('A short project name is required.'));
}
else {
// Make sure uri only includes valid characters
- if (!preg_match('/^[a-zA-Z0-9_-]+$/', $node->uri)) {
+// MUNGE: $node->uri
+ if (!preg_match('/^[a-zA-Z0-9_-]+$/', $node->project['uri'])) {
form_set_error('uri', t('Please only use alphanumerical characters for the project name.'));
}
@@ -213,7 +233,9 @@ function project_project_validate(&$node
}
}
}
- if (in_array(strtolower($node->uri), $reserved_names) || db_num_rows(db_query("SELECT nid FROM {project_projects} WHERE uri = '%s' AND nid <> %d", $node->uri, $node->nid))) {
+// MUNGE: $node->uri
+// MUNGE: $node->uri
+ if (in_array(strtolower($node->project['uri']), $reserved_names) || db_num_rows(db_query("SELECT nid FROM {project_projects} WHERE uri = '%s' AND nid <> %d", $node->project['uri'], $node->nid))) {
form_set_error('uri', t('This project name is already in use.'));
}
}
@@ -224,27 +246,41 @@ function project_project_validate(&$node
}
// Validate emails
- if (empty($node->mail)) {
+// MUNGE: $node->mail
+ if (empty($node->project['mail'])) {
form_set_error('mail', t('You must specify a project e-mail.'));
}
- elseif ($data = user_validate_mail($node->mail)) {
+// MUNGE: $node->mail
+ elseif ($data = user_validate_mail($node->project['mail'])) {
form_set_error('mail', $data);
}
- if (!empty($node->mail_digest) && ($data = user_validate_mail($node->mail_digest))) {
+// MUNGE: $node->mail
+// MUNGE: $node->mail
+ if (!empty($node->project['mail']) && ($data = user_validate_mail($node->project['mail']))) {
form_set_error('mail_digest', $data);
}
- if (!empty($node->mail_copy) && ($data = user_validate_mail($node->mail_copy))) {
+// MUNGE: $node->mail
+// MUNGE: $node->mail
+ if (!empty($node->project['mail']) && ($data = user_validate_mail($node->project['mail']))) {
form_set_error('mail_copy', $data);
}
- if (isset($node->mail_copy_filter) && is_array($node->mail_copy_filter)) {
- $node->mail_copy_filter = array_filter($node->mail_copy_filter, 'project_project_cleanup');
+// MUNGE: $node->mail
+// MUNGE: $node->mail
+ if (isset($node->project['mail']) && is_array($node->project['mail'])) {
+// MUNGE: $node->mail
+// MUNGE: $node->mail
+ $node->project['mail'] = array_filter($node->project['mail'], 'project_project_cleanup');
}
- if (isset($node->mail_copy_filter_state) && is_array($node->mail_copy_filter_state)) {
- $node->mail_copy_filter_state = array_filter($node->mail_copy_filter_state, 'project_project_cleanup');
+// MUNGE: $node->mail
+// MUNGE: $node->mail
+ if (isset($node->project['mail']) && is_array($node->project['mail'])) {
+// MUNGE: $node->mail
+// MUNGE: $node->mail
+ $node->project['mail'] = array_filter($node->project['mail'], 'project_project_cleanup');
}
// Make sure all URL fields actually contain URLs.
@@ -350,18 +386,26 @@ function project_project_view($node, $te
// Support section.
$links = array();
if ($view_issues) {
- $links[] = l(t('View all support requests'), 'project/issues/'. $node->uri, null, 'categories=support&states=all', null);
- $links[] = l(t('View pending support requests'), 'project/issues/'. $node->uri, null, 'categories=support', null);
- $links[] = l(t('View pending bug reports'), 'project/issues/'. $node->uri, null, 'categories=bug', null);
- $links[] = l(t('View pending feature requests'), 'project/issues/'. $node->uri, null, 'categories=feature', null);
+// MUNGE: $node->uri
+ $links[] = l(t('View all support requests'), 'project/issues/'. $node->project['uri'], null, 'categories=support&states=all', null);
+// MUNGE: $node->uri
+ $links[] = l(t('View pending support requests'), 'project/issues/'. $node->project['uri'], null, 'categories=support', null);
+// MUNGE: $node->uri
+ $links[] = l(t('View pending bug reports'), 'project/issues/'. $node->project['uri'], null, 'categories=bug', null);
+// MUNGE: $node->uri
+ $links[] = l(t('View pending feature requests'), 'project/issues/'. $node->project['uri'], null, 'categories=feature', null);
}
if ($make_issues) {
- $links[] = l(t('Request support'), 'node/add/project_issue/'. $node->uri .'/support');
- $links[] = l(t('Report new bug'), 'node/add/project_issue/'. $node->uri .'/bug');
- $links[] = l(t('Request new feature'), 'node/add/project_issue/'. $node->uri .'/feature');
+// MUNGE: $node->uri
+ $links[] = l(t('Request support'), 'node/add/project_issue/'. $node->project['uri'] .'/support');
+// MUNGE: $node->uri
+ $links[] = l(t('Report new bug'), 'node/add/project_issue/'. $node->project['uri'] .'/bug');
+// MUNGE: $node->uri
+ $links[] = l(t('Request new feature'), 'node/add/project_issue/'. $node->project['uri'] .'/feature');
}
else {
- $links[] = theme('project_issue_create_forbidden', $node->uri);
+// MUNGE: $node->uri
+ $links[] = theme('project_issue_create_forbidden', $node->project['uri']);
}
if ($links) {
@@ -374,13 +418,18 @@ function project_project_view($node, $te
// Developer section
$links = array();
if ($view_issues) {
- $links[] = l(t('View pending patches'), 'project/issues/'. $node->uri, null, 'states=8,13,14', null);
- $links[] = l(t('View available tasks'), 'project/issues/'. $node->uri, null, 'categories=task', null);
- $links[] = l(t('View all pending issues'), 'project/issues/'. $node->uri);
+// MUNGE: $node->uri
+ $links[] = l(t('View pending patches'), 'project/issues/'. $node->project['uri'], null, 'states=8,13,14', null);
+// MUNGE: $node->uri
+ $links[] = l(t('View available tasks'), 'project/issues/'. $node->project['uri'], null, 'categories=task', null);
+// MUNGE: $node->uri
+ $links[] = l(t('View all pending issues'), 'project/issues/'. $node->project['uri']);
}
- if ($node->cvs) {
- $links[] = l(t('Browse the CVS repository'), $node->cvs);
+// MUNGE: $node->cvs
+ if ($node->project['cvs']) {
+// MUNGE: $node->cvs
+ $links[] = l(t('Browse the CVS repository'), $node->project['cvs']);
}
if (project_use_cvs($node)) {
@@ -413,7 +462,8 @@ function project_project_nodeapi(&$node,
case 'insert':
_project_save_taxonomy($node);
if (module_exists('path')) {
- path_set_alias("node/$node->nid", "project/$node->uri");
+// MUNGE: $node->uri
+ path_set_alias("node/$node->nid", "project/$node->project['uri']");
}
break;
@@ -421,20 +471,43 @@ function project_project_nodeapi(&$node,
_project_save_taxonomy($node);
if (module_exists('path')) {
path_set_alias("node/$node->nid"); // Clear existing alias.
- path_set_alias("node/$node->nid", "project/$node->uri");
+// MUNGE: $node->uri
+ path_set_alias("node/$node->nid", "project/$node->project['uri']");
}
break;
}
}
function project_project_insert($node) {
- db_query("INSERT INTO {project_projects} (nid, uri, homepage, changelog, cvs, demo, release_directory, mail, version, screenshots, documentation, license) VALUES (%d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, '%s', '%s', '%s')", $node->nid, $node->uri, $node->homepage, $node->changelog, $node->cvs, $node->demo, $node->release_directory, $node->mail, $node->version, $node->screenshots, $node->documentation, $node->license);
-// project_release_scan_directory($node->uri);
+// MUNGE: $node->license
+// MUNGE: $node->documentation
+// MUNGE: $node->screenshots
+// MUNGE: $node->version
+// MUNGE: $node->mail
+// MUNGE: $node->release_directory
+// MUNGE: $node->demo
+// MUNGE: $node->cvs
+// MUNGE: $node->changelog
+// MUNGE: $node->homepage
+// MUNGE: $node->uri
+ db_query("INSERT INTO {project_projects} (nid, uri, homepage, changelog, cvs, demo, release_directory, mail, version, screenshots, documentation, license) VALUES (%d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, '%s', '%s', '%s')", $node->nid, $node->project['uri'], $node->project['homepage'], $node->project['changelog'], $node->project['cvs'], $node->project['demo'], $node->project['release_directory'], $node->project['mail'], $node->project['version'], $node->project['screenshots'], $node->project['documentation'], $node->project['license']);
+ // project_release_scan_directory($node->uri);
}
function project_project_update($node) {
- db_query("UPDATE {project_projects} SET uri = '%s', homepage = '%s', changelog = '%s', cvs = '%s', demo = '%s', release_directory = '%s', mail = '%s', version = %d, screenshots = '%s', documentation = '%s', license = '%s' WHERE nid = %d", $node->uri, $node->homepage, $node->changelog, $node->cvs, $node->demo, $node->release_directory, $node->mail, $node->version, $node->screenshots, $node->documentation, $node->license, $node->nid);
-// project_release_scan_directory($node->uri);
+// MUNGE: $node->license
+// MUNGE: $node->documentation
+// MUNGE: $node->screenshots
+// MUNGE: $node->version
+// MUNGE: $node->mail
+// MUNGE: $node->release_directory
+// MUNGE: $node->demo
+// MUNGE: $node->cvs
+// MUNGE: $node->changelog
+// MUNGE: $node->homepage
+// MUNGE: $node->uri
+ db_query("UPDATE {project_projects} SET uri = '%s', homepage = '%s', changelog = '%s', cvs = '%s', demo = '%s', release_directory = '%s', mail = '%s', version = %d, screenshots = '%s', documentation = '%s', license = '%s' WHERE nid = %d", $node->project['uri'], $node->project['homepage'], $node->project['changelog'], $node->project['cvs'], $node->project['demo'], $node->project['release_directory'], $node->project['mail'], $node->project['version'], $node->project['screenshots'], $node->project['documentation'], $node->project['license'], $node->nid);
+ // project_release_scan_directory($node->uri);
}
function project_project_delete($node) {
Index: release/project_release.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project/release/project_release.module,v
retrieving revision 1.53
diff -u -F^f -r1.53 project_release.module
--- release/project_release.module 14 Oct 2007 19:53:07 -0000 1.53
+++ release/project_release.module 20 Oct 2007 04:15:31 -0000
@@ -184,7 +184,8 @@ function project_release_access($op, $no
// We can't just use project_project_access() here, since we
// need to check access to the project itself, not the release
// node, so we use the helper method and pass the project id.
- return project_check_admin_access($node->pid);
+// MUNGE: $node->pid
+ return project_check_admin_access($node->project_release['pid']);
case 'delete':
// No one should ever delete a release node, only unpublish it.
return FALSE;
@@ -530,7 +531,8 @@ function project_release_load($node) {
function project_release_insert($node) {
project_release_db_save($node, true);
if (project_use_cvs($node->project)) {
- if ($node->rebuild) {
+// MUNGE: $node->rebuild
+ if ($node->project_release['rebuild']) {
$msg = variable_get('cvs_message_new_release_branch', '');
}
else {
@@ -569,8 +571,11 @@ function project_release_db_save($node,
// If the patch field is set to a non-numeric value, we just want to
// keep it as a NULL in the DB, instead of casting it to a 0.
- if (isset($node->version_patch) && !is_numeric($node->version_patch)) {
- unset($node->version_patch);
+// MUNGE: $node->version
+// MUNGE: $node->version
+ if (isset($node->project_release['version']) && !is_numeric($node->project_release['version'])) {
+// MUNGE: $node->version
+ unset($node->project_release['version']);
}
// Handle file upload data.
@@ -583,10 +588,18 @@ function project_release_db_save($node,
'file_path' => "'%s'", 'file_date' => "%d", 'file_hash' => "'%s'",
'rebuild' => "%d",
);
- $values = array( 'pid' => $node->pid, 'version' => $node->version,
- 'tag' => $node->tag, 'file_path' => $node->file_path ? $node->file_path : $file_data->filepath,
- 'file_date' => $node->file_date, 'file_hash' => $node->file_hash,
- 'rebuild' => $node->rebuild,
+// MUNGE: $node->version
+// MUNGE: $node->pid
+ $values = array( 'pid' => $node->project_release['pid'], 'version' => $node->project_release['version'],
+// MUNGE: $node->file_path
+// MUNGE: $node->file_path
+// MUNGE: $node->tag
+ 'tag' => $node->project_release['tag'], 'file_path' => $node->project_release['file_path'] ? $node->project_release['file_path'] : $file_data->filepath,
+// MUNGE: $node->file_hash
+// MUNGE: $node->file_date
+ 'file_date' => $node->project_release['file_date'], 'file_hash' => $node->project_release['file_hash'],
+// MUNGE: $node->rebuild
+ 'rebuild' => $node->project_release['rebuild'],
);
$fields = array('version_major', 'version_minor', 'version_patch');
foreach ($fields as $field) {
@@ -595,9 +608,11 @@ function project_release_db_save($node,
$values[$field] = $node->$field;
}
}
- if (!empty($node->version_extra)) {
+// MUNGE: $node->version
+ if (!empty($node->project_release['version'])) {
$types['version_extra'] = "'%s'";
- $values['version_extra'] = $node->version_extra;
+// MUNGE: $node->version
+ $values['version_extra'] = $node->project_release['version'];
}
if ($is_new) {
@@ -620,13 +635,15 @@ function project_release_db_save($node,
$vid = _project_release_get_api_vid();
if (isset($node->taxonomy[$vid])) {
$tid = $node->taxonomy[$vid];
- project_release_check_default_version($node->pid, $tid);
+// MUNGE: $node->pid
+ project_release_check_default_version($node->project_release['pid'], $tid);
}
}
// Finally, clear the cache for the release table whenever a release node is
// added or updated, since what we want to display might have changed, too.
- $cid = 'table:'. $node->pid .':';
+// MUNGE: $node->pid
+ $cid = 'table:'. $node->project_release['pid'] .':';
cache_clear_all($cid, 'cache_project_release', TRUE);
}
@@ -665,17 +682,22 @@ function project_release_check_default_v
* @ingroup project_release_node
*/
function project_release_delete($node) {
- if ($node->file_path) {
- file_delete(file_create_path($node->file_path));
+// MUNGE: $node->file_path
+ if ($node->project_release['file_path']) {
+// MUNGE: $node->file_path
+ file_delete(file_create_path($node->project_release['file_path']));
}
db_query("DELETE FROM {project_release_nodes} WHERE nid = %d", $node->nid);
// Make sure that the default release version information is up to date.
- project_release_check_default_version($node->pid, $node->version_api_tid);
+// MUNGE: $node->version
+// MUNGE: $node->pid
+ project_release_check_default_version($node->project_release['pid'], $node->project_release['version']);
// Finally, clear the cache for the release table whenever a release node is
// deleted, since what we want to display might have changed, too.
- $cid = 'table:'. $node->pid .':';
+// MUNGE: $node->pid
+ $cid = 'table:'. $node->project_release['pid'] .':';
cache_clear_all($cid, 'cache_project_release', TRUE);
}
@@ -768,7 +790,8 @@ function project_release_get_version($re
*/
function project_release_view($node, $teaser = FALSE, $page = FALSE) {
$node = node_prepare($node, $teaser);
- $project = node_load($node->pid);
+// MUNGE: $node->pid
+ $project = node_load($node->project_release['pid']);
if ($page) {
// Breadcrumb navigation
@@ -778,25 +801,36 @@ function project_release_view($node, $te
}
$output = '';
- if (project_use_cvs($project) && isset($node->tag)) {
- if ($node->rebuild) {
- $output .= t('Nightly development snapshot from CVS branch: @tag', array('@tag' => $node->tag)) .'
';
+// MUNGE: $node->tag
+ if (project_use_cvs($project) && isset($node->project_release['tag'])) {
+// MUNGE: $node->rebuild
+ if ($node->project_release['rebuild']) {
+// MUNGE: $node->tag
+ $output .= t('Nightly development snapshot from CVS branch: @tag', array('@tag' => $node->project_release['tag'])) .'
';
}
else {
- $output .= t('Official release from CVS tag: @tag', array('@tag' => $node->tag)) .'
';
+// MUNGE: $node->tag
+ $output .= t('Official release from CVS tag: @tag', array('@tag' => $node->project_release['tag'])) .'
';
}
}
- if ($node->file_path) {
- $output .= ''. t('Download: !file', array('!file' => theme('project_release_download_link', $node->file_path))) .'
';
- $output .= ''. t('Size: !size', array('!size' => format_size(filesize(file_create_path($node->file_path))))) .'
';
- $output .= ''. t('md5_file hash: !file_hash', array('!file_hash' => $node->file_hash)) .'
';
+// MUNGE: $node->file_path
+ if ($node->project_release['file_path']) {
+// MUNGE: $node->file_path
+ $output .= ''. t('Download: !file', array('!file' => theme('project_release_download_link', $node->project_release['file_path']))) .'
';
+// MUNGE: $node->file_path
+ $output .= ''. t('Size: !size', array('!size' => format_size(filesize(file_create_path($node->project_release['file_path']))))) .'
';
+// MUNGE: $node->file_hash
+ $output .= ''. t('md5_file hash: !file_hash', array('!file_hash' => $node->project_release['file_hash'])) .'
';
}
if ($node->created) {
$output .= ''. t('First released: !created', array('!created' => format_date($node->created))) .'
';
}
- if ($node->file_date && ($node->file_date != $node->created)) {
- $output .= ''. t('Last updated: !changed', array('!changed' => format_date($node->file_date))) .'
';
+// MUNGE: $node->file_date
+// MUNGE: $node->file_date
+ if ($node->project_release['file_date'] && ($node->project_release['file_date'] != $node->created)) {
+// MUNGE: $node->file_date
+ $output .= ''. t('Last updated: !changed', array('!changed' => format_date($node->project_release['file_date']))) .'
';
}
$node->content['release_info'] = array(
'#value' => '