Merge pull request #4871 from eileenmcnaughton/CRM-15795
[civicrm-core.git] / CRM / Utils / Hook / DrupalBase.php
index 1561ff3dee839b70a962dc278ec1e751ee080294..3ae3c1b045be35117eb50b7004e9f08b17937d4a 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 /*
  +--------------------------------------------------------------------+
- | CiviCRM version 4.5                                                |
+ | CiviCRM version 4.6                                                |
  +--------------------------------------------------------------------+
  | Copyright CiviCRM LLC (c) 2004-2014                                |
  +--------------------------------------------------------------------+
@@ -55,21 +55,28 @@ class CRM_Utils_Hook_DrupalBase extends CRM_Utils_Hook {
   private $drupalModules = NULL;
 
   /**
-   *
    * @see CRM_Utils_Hook::invoke()
    *
-   * @param integer $numParams Number of parameters to pass to the hook
-   * @param unknown $arg1 parameter to be passed to the hook
-   * @param unknown $arg2 parameter to be passed to the hook
-   * @param unknown $arg3 parameter to be passed to the hook
-   * @param unknown $arg4 parameter to be passed to the hook
-   * @param unknown $arg5 parameter to be passed to the hook
+   * @param int $numParams
+   *   Number of parameters to pass to the hook.
+   * @param unknown $arg1
+   *   Parameter to be passed to the hook.
+   * @param unknown $arg2
+   *   Parameter to be passed to the hook.
+   * @param unknown $arg3
+   *   Parameter to be passed to the hook.
+   * @param unknown $arg4
+   *   Parameter to be passed to the hook.
+   * @param unknown $arg5
+   *   Parameter to be passed to the hook.
    * @param mixed $arg6
-   * @param string $fnSuffix function suffix, this is effectively the hook name
+   * @param string $fnSuffix
+   *   Function suffix, this is effectively the hook name.
    *
-   * @return Ambigous <boolean, multitype:>
+   * @return array|bool
    */
-  function invoke($numParams,
+  function invoke(
+    $numParams,
     &$arg1, &$arg2, &$arg3, &$arg4, &$arg5, &$arg6,
     $fnSuffix) {
 
@@ -83,7 +90,7 @@ class CRM_Utils_Hook_DrupalBase extends CRM_Utils_Hook {
   /**
    * Build the list of modules to be processed for hooks.
    */
-  function buildModuleList() {
+  public function buildModuleList() {
     if ($this->isBuilt === FALSE) {
       if ($this->drupalModules === NULL) {
         if (function_exists('module_list')) {
@@ -97,7 +104,25 @@ class CRM_Utils_Hook_DrupalBase extends CRM_Utils_Hook {
         $this->requireCiviModules($this->civiModules);
       }
 
-      $this->allModules = array_merge((array)$this->drupalModules, (array)$this->civiModules);
+      // CRM-12370
+      // we should add civicrm's module's just after main civicrm drupal module
+      // Note: Assume that drupalModules and civiModules may each be array() or NULL
+      if ($this->drupalModules !== NULL) {
+        foreach ($this->drupalModules as $moduleName) {
+          $this->allModules[$moduleName] = $moduleName;
+          if ($moduleName == 'civicrm') {
+            if (!empty($this->civiModules)) {
+              foreach ($this->civiModules as $civiModuleName) {
+                $this->allModules[$civiModuleName] = $civiModuleName;
+              }
+            }
+          }
+        }
+      }
+      else {
+        $this->allModules = (array) $this->civiModules;
+      }
+
       if ($this->drupalModules !== NULL && $this->civiModules !== NULL) {
         // both CRM and CMS have bootstrapped, so this is the final list
         $this->isBuilt = TRUE;