From ff41d45590670fcd952b639d62f744eef4a3383e Mon Sep 17 00:00:00 2001
From: Marco Villegas <marvil07@gmail.com>
Date: Tue, 15 Feb 2011 19:11:59 -0500
Subject: [PATCH] Initial patch

---
 versioncontrol.module |   46 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 46 insertions(+), 0 deletions(-)

diff --git versioncontrol.module versioncontrol.module
index 3b2d883..1a600d7 100644
--- versioncontrol.module
+++ versioncontrol.module
@@ -375,6 +375,52 @@ function versioncontrol_repository_load_multiple($ids = array(), $conditions = a
 }
 
 /**
+ * Load multiple versioncontrol operations, given provided conditions and
+ * options.
+ *
+ * @param $ids
+ * @param $conditions
+ * @param $options
+ * @return array
+ */
+// TODO this is not more needed, so remove from the patch
+function versioncontrol_operation_load_multiple($ids = array(), $conditions = array(), $options = array()) {
+  $backends = versioncontrol_get_backends();
+
+  // FIXME Stop working fine only if we pass $ids
+  //       Main problem here is figured out which controller to use to
+  //       avoid having a bad type for each operation object returned.
+  if (!empty($ids)) {
+    // Try to know which controller we need to use based on the vcs
+    $query = db_select('versioncontrol_operations', 'vco');
+    $query->join('versioncontrol_repositories', 'vcr', 'vco.repo_id = vcr.repo_id');
+    $init_result = $query->fields('vco', array('vc_op_id'))
+      ->fields('vcr', array('vcs'))
+      ->condition('vco.vc_op_id', $ids, 'IN')
+      ->execute();
+    $vc_op_ids_by_vcs = array();
+    foreach ($init_result as $record) {
+      $vc_op_ids_by_vcs[$record->vcs][] = $record->vc_op_id;
+    }
+
+    $results = array();
+    foreach ($vc_op_ids_by_vcs as $vcs => $vc_op_ids) {
+      $vcs_results = $backends[$vcs]->loadEntities('operation', $vc_op_ids, $conditions, $options);
+      $results += $vcs_results;
+    }
+    return $results;
+  }
+
+  $results = array();
+  foreach ($backends as $vcs => $backend) {
+    $vcs_results = $backend->loadEntities('operation', $ids, $conditions, $options);
+    $results += $vcs_results;
+  }
+
+  return $results;
+}
+
+/**
  * Get a list of all backends with its detailed information.
  *
  * @param string $backend
-- 
1.7.2.3

