cvs diff: Diffing .
Index: cvs.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/cvslog/cvs.module,v
retrieving revision 1.199
diff -u -p -r1.199 cvs.module
--- cvs.module	25 Nov 2008 22:41:57 -0000	1.199
+++ cvs.module	13 Jan 2009 19:47:12 -0000
@@ -464,69 +464,69 @@ function cvs_nodeapi(&$node, $op, $arg =
       case 'load':
         $result = db_query('SELECT * FROM {cvs_projects} WHERE nid = %d', $node->nid);
         if ($project = db_fetch_object($result)) {
-          $node->cvs_repository = $project->rid;
-          $node->cvs_directory = $project->directory;
+          $node->cvs['repository'] = $project->rid;
+          $node->cvs['directory'] = $project->directory;
         }
         break;
       case 'insert':
       case 'update':
-        _cvs_directory_fix($node->cvs_directory);
+        _cvs_directory_fix($node->cvs['directory']);
         db_query('DELETE FROM {cvs_projects} WHERE nid = %d', $node->nid);
-        db_query("INSERT INTO {cvs_projects} (nid, rid, directory) VALUES (%d, %d, '%s')", $node->nid, $node->cvs_repository, $node->cvs_directory);
-        db_query("UPDATE {cvs_files} SET nid = %d WHERE rid = %d AND file LIKE '%s%%'", $node->nid, $node->cvs_repository, $node->cvs_directory);
+        db_query("INSERT INTO {cvs_projects} (nid, rid, directory) VALUES (%d, %d, '%s')", $node->nid, $node->cvs['repository'], $node->cvs['directory']);
+        db_query("UPDATE {cvs_files} SET nid = %d WHERE rid = %d AND file LIKE '%s%%'", $node->nid, $node->cvs['repository'], $node->cvs['directory']);
         break;
       case 'validate':
         if ($node->title) {
           $admin = user_access('administer projects');
           $project = !empty($node->nid) ? node_load($node->nid) : NULL;
-          if (!empty($node->cvs_repository) && !db_result(db_query('SELECT rid FROM {cvs_repositories} WHERE rid = %d', $node->cvs_repository))) {
-            form_set_error('cvs_repository', t('You must select a valid CVS repository.'));
+          if (!empty($node->cvs['repository']) && !db_result(db_query('SELECT rid FROM {cvs_repositories} WHERE rid = %d', $node->cvs['repository']))) {
+            form_set_error('cvs][repository', t('You must select a valid CVS repository.'));
           }
-          if (!$admin && $project && $node->cvs_repository != $project->cvs_repository) {
-            form_set_error('cvs_repository', t('You do not have permission to modify the CVS repository for this project.'));
+          if (!$admin && $project && $node->cvs['repository'] != $project->cvs['repository']) {
+            form_set_error('cvs][repository', t('You do not have permission to modify the CVS repository for this project.'));
           }
-          if (empty($node->cvs_repository)) {
+          if (empty($node->cvs['repository'])) {
             // The rest of this validation only makes sense if we have
             // a CVS repository for this project
-            if (!empty($node->cvs_directory)) {
-              form_set_error('cvs_directory', t('You can not specify a CVS directory if there is no CVS repository for this project.'));
+            if (!empty($node->cvs['directory'])) {
+              form_set_error('cvs][directory', t('You can not specify a CVS directory if there is no CVS repository for this project.'));
             }
             break;
           }
-          _cvs_directory_fix($node->cvs_directory);
-          if (!$node->cvs_directory) {
-            form_set_error('cvs_directory', t('You have to specify a valid CVS directory.'));
+          _cvs_directory_fix($node->cvs['directory']);
+          if (!$node->cvs['directory']) {
+            form_set_error('cvs][directory', t('You have to specify a valid CVS directory.'));
           }
-          else if (!preg_match('/^[a-zA-Z0-9\/_-]+$/', $node->cvs_directory)) {
-            form_set_error('cvs_directory', t("The path of the CVS directory can only contain letters, numbers, slashes ('/'), hyphens ('-') and underscores ('_')."));
+          else if (!preg_match('/^[a-zA-Z0-9\/_-]+$/', $node->cvs['directory'])) {
+            form_set_error('cvs][directory', t("The path of the CVS directory can only contain letters, numbers, slashes ('/'), hyphens ('-') and underscores ('_')."));
           }
-          else if (preg_match('/\/\//', $node->cvs_directory)) {
-            form_set_error('cvs_directory', t("The path of the CVS directory cannot contain two slashes next to each other '//'."));
+          else if (preg_match('/\/\//', $node->cvs['directory'])) {
+            form_set_error('cvs][directory', t("The path of the CVS directory cannot contain two slashes next to each other '//'."));
           }
-          else if (db_result(db_query("SELECT nid FROM {cvs_projects} WHERE nid != %d AND rid = %d AND directory = '%s'", $node->nid, $node->cvs_repository, $node->cvs_directory))) {
-            form_set_error('cvs_directory', t('The specified CVS directory conflicts with that of an existing project.'));
+          else if (db_result(db_query("SELECT nid FROM {cvs_projects} WHERE nid != %d AND rid = %d AND directory = '%s'", $node->nid, $node->cvs['repository'], $node->cvs['directory']))) {
+            form_set_error('cvs][directory', t('The specified CVS directory conflicts with that of an existing project.'));
           }
           else if (!$admin) {
-            $path_elems = explode('/', $node->cvs_directory);
+            $path_elems = explode('/', $node->cvs['directory']);
             // Remove empty elements caused by the trailing and leading '/'.
             $path_elems = array_filter($path_elems);
             if (variable_get('cvs_directory_validate_dir_root_by_case', 1)) {
               if ($path_elems[1] != drupal_strtolower($path_elems[1])) {
-                form_set_error('cvs_directory', t("The root of the CVS directory (%root) must be lowercase.", array('%root' => $path_elems[1])));
+                form_set_error('cvs][directory', t("The root of the CVS directory (%root) must be lowercase.", array('%root' => $path_elems[1])));
               }
             }
             if (project_use_taxonomy() && variable_get('cvs_directory_validate_by_type', 1)) {
               $tree = taxonomy_get_term($node->project_type);
               $cvs_dir_root = _cvs_dir_root($tree->name, $node->project_type);
               if (drupal_strtolower($path_elems[1]) != $cvs_dir_root) {
-                form_set_error('cvs_directory', t("The root of the CVS directory (%root) does not match the selected project type (%type). By default, spaces in the type name are converted to hyphens in the path, but custom mappings can also be defined.  Given the current project type, the first element of the directory path should be: %goal.", array('%root' => $path_elems[1], '%type' => $tree->name, '%goal' => $cvs_dir_root)));
+                form_set_error('cvs][directory', t("The root of the CVS directory (%root) does not match the selected project type (%type). By default, spaces in the type name are converted to hyphens in the path, but custom mappings can also be defined.  Given the current project type, the first element of the directory path should be: %goal.", array('%root' => $path_elems[1], '%type' => $tree->name, '%goal' => $cvs_dir_root)));
               }
             }
             if (variable_get('cvs_validate_by_short_name', 1)) {
               $last_elem = array_pop($path_elems);
-              if ($last_elem != $node->uri) {
-                form_set_error('cvs_directory', t("The last part of the CVS directory (%last) does not match the short project name (%short).", array('%last' => $last_elem, '%short' => $node->uri)));
-                form_set_error('uri', t("The short project name (%short) does not match the last part of the CVS directory (%last).", array('%last' => $last_elem, '%short' => $node->uri)));
+              if ($last_elem != $node->project['uri']) {
+                form_set_error('cvs][directory', t("The last part of the CVS directory (%last) does not match the short project name (%short).", array('%last' => $last_elem, '%short' => $node->project['uri'])));
+                form_set_error('project][uri', t("The short project name (%short) does not match the last part of the CVS directory (%last).", array('%last' => $last_elem, '%short' => $node->project['uri'])));
               }
             }
           }
@@ -719,14 +719,16 @@ function cvs_user_edit_form_submit($form
 function cvs_alter_project_project_form(&$form, &$form_state) {
   $node = $form['#node'];
   $repositories = _cvs_get_repository_options(t('<none>'));
-  $form['cvs_nodeapi'] = array(
+  $form['cvs'] = array(
     '#type' => 'fieldset',
     '#title' => t('CVS integration'),
     '#collapsible' => TRUE,
+    '#tree' => TRUE,
+    '#weight' => 4,
   );
-  $default_repo = isset($node->cvs_repository) ? $node->cvs_repository : variable_get('cvs_default_repo', 0);
+  $default_repo = isset($node->cvs['repository']) ? $node->cvs['repository'] : variable_get('cvs_default_repo', 0);
   if (count($repositories) > 1) {
-    $form['cvs_nodeapi']['cvs_repository'] = array(
+    $form['cvs']['repository'] = array(
       '#type' => 'select',
       '#title' => t('Repository'),
       '#default_value' => $default_repo,
@@ -734,21 +736,21 @@ function cvs_alter_project_project_form(
       '#description' => t("Specify the project's CVS repository."),
     );
   }
-  $form['cvs_nodeapi']['cvs_directory'] = array(
+  $form['cvs']['directory'] = array(
     '#type' => 'textfield',
     '#title' => t('CVS directory'),
-    '#default_value' => $node->cvs_directory,
+    '#default_value' => $node->cvs['directory'],
     '#size' => 40,
     '#maxlength' => 255,
     '#description' => t("Specify the project's directory within the selected CVS repository. Directory names should start with a leading slash and end with a trailing slash, and must be unique for each project. For example: <code>/modules/foo/</code>, <code>/themes/foo/</code> or <code>/translations/foo/</code>. If there is no CVS repository associated with the project, this setting should be left blank."),
   );
-  if ($default_repo == 0 || $node->cvs_directory) {
+  if ($default_repo == 0 || $node->cvs['directory']) {
     // If the default for the repository selector is <none> (either
     // because the project has already been saved with 0 for the
     // repository, or because that's the site-wide default), or if we
     // already have the value for the CVS directory, we should hide
     // these gory details by default.
-    $form['cvs_nodeapi']['#collapsed'] = TRUE;
+    $form['cvs']['#collapsed'] = TRUE;
   }
 }
 
@@ -775,7 +777,7 @@ function cvs_alter_project_release_form(
     return;
   }
 
-  if (!isset($project->releases)) {
+  if (!isset($project->project_release['releases'])) {
     // This project has no releases, nothing to alter
     return;
   }
@@ -1037,12 +1039,12 @@ function cvs_alter_project_release_form(
 function cvs_alter_project_release_form_edit(&$form) {
   global $user;
   $release = $form['#node'];
-  $project = node_load($release->pid);
+  $project = node_load($release->project_release['pid']);
   $tags = array();
 
   // Always include the current tag as an option, unless the tag is empty.
-  if (!empty($release->tag)) {
-    $tags[$release->tag] = $release->tag;
+  if (!empty($release->project_release['tag'])) {
+    $tags[$release->tag] = $release->project_release['tag'];
   }
 
   // See if any other tags should be presented as options. If the user
@@ -1050,13 +1052,15 @@ function cvs_alter_project_release_form_
   // yet have a release node pointing to them. If it's a HEAD release
   // node, see if another tag exists which has the same version info
   // but isn't associated with a release.
-  if (user_access('administer projects') || ($release->tag == 'HEAD')) {
-    $args[] = $release->pid;
+  if (user_access('administer projects') || ($release->project_release['tag'] == 'HEAD')) {
+    $args[] = $release->project_release['pid'];
     $args[] = 1;
     $head_where = '';
     if (!user_access('administer projects')) {
       // A non-admin editing a HEAD node. Search for another tag (if
       // any) that matches the current version info for this release.
+      // TODO: Broken because you can't use a $release as a $version after
+      // $node namespace...
       $tag = cvs_get_tag_from_version($release, $project);
       $head_where = " AND c.tag = '%s'";
       $args[] = $tag;
@@ -1072,7 +1076,7 @@ function cvs_alter_project_release_form_
   if (!empty($tags)) {
     $form['rel_id']['tag'] = array(
       '#type' => 'select',
-      '#title' => $release->rebuild ? t('CVS branch') : t('CVS tag'),
+      '#title' => $release->project_release['rebuild'] ? t('CVS branch') : t('CVS tag'),
       '#options' => $tags,
       '#required' => TRUE,
     );
@@ -2387,7 +2391,7 @@ function theme_cvs_project_access_form($
   drupal_set_title(t('CVS access for %title', array('%title' => $node->title)));
   project_project_set_breadcrumb($node, TRUE);
 
-  $output = '<p>'. t("This page controls CVS access for the %title project. Unless otherwise indicated, all users listed in this table have permission to commit and tag files in this project's directory in the CVS repository (%cvs_dir). The project owner is listed first and always has full access.", array('%cvs_dir' => $node->cvs_directory, '%title' => $node->title)) .'</p>';
+  $output = '<p>'. t("This page controls CVS access for the %title project. Unless otherwise indicated, all users listed in this table have permission to commit and tag files in this project's directory in the CVS repository (%cvs_dir). The project owner is listed first and always has full access.", array('%cvs_dir' => $node->cvs['directory'], '%title' => $node->title)) .'</p>';
 
   $rows = array();
   $header = array();
cvs diff: Diffing xcvs
