CRM-21001
authorspalmstr <spalmstr1@gmail.com>
Tue, 21 Nov 2017 18:19:28 +0000 (18:19 +0000)
committerspalmstr <spalmstr1@gmail.com>
Tue, 21 Nov 2017 19:40:42 +0000 (19:40 +0000)
CRM/Core/BAO/SchemaHandler.php

index efae63a64e97b5a66ce2a0a12cfa314e888dea5a..6cec729fad60e2b704f9ab778b256e10e9871e87 100644 (file)
@@ -713,6 +713,7 @@ MODIFY      {$columnName} varchar( $length )
     $requiredSigs = $existingSigs = array();
     // Get the indices defined (originally) in the xml files
     $requiredIndices = CRM_Core_DAO_AllCoreTables::indices();
+    $reqSigs = array();
     foreach ($requiredIndices as $table => $indices) {
       $reqSigs[] = CRM_Utils_Array::collect('sig', $indices);
     }
@@ -720,6 +721,7 @@ MODIFY      {$columnName} varchar( $length )
 
     // Get the indices in the database
     $existingIndices = CRM_Core_BAO_SchemaHandler::getIndexes(array_keys($requiredIndices));
+    $extSigs = array();
     foreach ($existingIndices as $table => $indices) {
       CRM_Core_BAO_SchemaHandler::addIndexSignature($table, $indices);
       $extSigs[] = CRM_Utils_Array::collect('sig', $indices);
@@ -747,10 +749,12 @@ MODIFY      {$columnName} varchar( $length )
     $missingIndices = array();
     foreach ($missingSigs as $sig) {
       $sigParts = explode('::', $sig);
-      foreach ($requiredIndices[$sigParts[0]] as $index) {
-        if ($index['sig'] == $sig) {
-          $missingIndices[$sigParts[0]][] = $index;
-          continue;
+      if (array_key_exists($sigParts[0], $requiredIndices)) {
+        foreach ($requiredIndices[$sigParts[0]] as $index) {
+          if ($index['sig'] == $sig) {
+            $missingIndices[$sigParts[0]][] = $index;
+            continue;
+          }
         }
       }
     }