Do not try to write civicrm_menu.module_data if it doesn't exist yet
authorNoah Miller <nm@lemnisc.us>
Tue, 12 Sep 2017 03:29:53 +0000 (20:29 -0700)
committerNoah Miller <nm@lemnisc.us>
Tue, 12 Sep 2017 14:34:12 +0000 (07:34 -0700)
CRM/Core/Menu.php

index 55227eac47f7e6c60b8bf3631a2a1c91522d8353..c32fad448f4efab81760938181b18be91f9806b9 100644 (file)
@@ -317,17 +317,21 @@ class CRM_Core_Menu {
 
       $menu->find(TRUE);
 
-      // Move unrecognized fields to $module_data.
-      $module_data = array();
-      foreach (array_keys($item) as $key) {
-        if (!isset($daoFields[$key])) {
-          $module_data[$key] = $item[$key];
-          unset($item[$key]);
+      if (!CRM_Core_Config::isUpgradeMode() ||
+        CRM_Core_DAO::checkFieldExists('civicrm_menu', 'module_data', FALSE)
+      ) {
+        // Move unrecognized fields to $module_data.
+        $module_data = array();
+        foreach (array_keys($item) as $key) {
+          if (!isset($daoFields[$key])) {
+            $module_data[$key] = $item[$key];
+            unset($item[$key]);
+          }
         }
-      }
 
-      $menu->copyValues($item);
-      $menu->module_data = serialize($module_data);
+        $menu->copyValues($item);
+        $menu->module_data = serialize($module_data);
+      }
 
       foreach (self::$_serializedElements as $element) {
         if (!isset($item[$element]) ||