Improve 3 way fallback of name,title, frontend_title
authorEileen McNaughton <emcnaughton@wikimedia.org>
Thu, 7 Dec 2023 19:26:58 +0000 (08:26 +1300)
committerEileen McNaughton <emcnaughton@wikimedia.org>
Fri, 8 Dec 2023 07:58:32 +0000 (20:58 +1300)
CRM/Core/DAO.php

index eb8a7499a36821b07afd11f643d69f4de4afa1e5..679e1e2c1428d21fa2dd6e1edaca6433a9153a04 100644 (file)
@@ -958,7 +958,11 @@ class CRM_Core_DAO extends DB_DataObject {
     if (empty($values[$idField]) && array_key_exists('frontend_title', $fields) && empty($values['frontend_title'])) {
       $instance->frontend_title = $instance->title;
     }
-    if (empty($values[$idField]) && array_key_exists('title', $fields) && empty($values['title']) && !empty($values['frontend_title'])) {
+    if (empty($values[$idField]) && array_key_exists('frontend_title', $fields) && !$instance->frontend_title) {
+      // Still empty? Fall back to name.
+      $instance->frontend_title = $instance->name;
+    }
+    if (empty($values[$idField]) && array_key_exists('title', $fields) && empty($values['title']) && array_key_exists('frontend_title', $fields) && $instance->frontend_title) {
       $instance->title = $instance->frontend_title;
     }
     $instance->save();