dev/core#2039 Fix OpenID::add to ensure is_primary is set
authoreileen <emcnaughton@wikimedia.org>
Thu, 17 Sep 2020 00:41:59 +0000 (12:41 +1200)
committereileen <emcnaughton@wikimedia.org>
Thu, 17 Sep 2020 03:49:47 +0000 (15:49 +1200)
In my efforts to determine the the non-performant line of code that makes sure IM is set is
not required I edited tests to track down when is_primary is not correct & determined it
is missing from the add function - same as https://github.com/civicrm/civicrm-core/pull/18489 for IM

CRM/Core/BAO/OpenID.php
tests/phpunit/api/v3/OpenIDTest.php

index 34326a7562578ccf60250ec4f8a3b18227ea7f1b..db14b57eec4279d16ec6b20e7b8042dda1881d96 100644 (file)
@@ -24,9 +24,16 @@ class CRM_Core_BAO_OpenID extends CRM_Core_DAO_OpenID {
    * Create or update OpenID record.
    *
    * @param array $params
+   *
    * @return CRM_Core_DAO_OpenID
+   *
+   * @throws \API_Exception
+   * @throws \CRM_Core_Exception
    */
   public static function add($params) {
+    if (empty($params['id']) || is_numeric($params['is_primary'] ?? NULL)) {
+      CRM_Core_BAO_Block::handlePrimary($params, __CLASS__);
+    }
     return self::writeRecord($params);
   }
 
@@ -38,6 +45,7 @@ class CRM_Core_BAO_OpenID extends CRM_Core_DAO_OpenID {
    *   Input parameters to find object.
    *
    * @return mixed
+   * @throws \CRM_Core_Exception
    */
   public static function &getValues($entityBlock) {
     return CRM_Core_BAO_Block::getValues('openid', $entityBlock);
index a3025e805bcc90304bf8b53f5d4acfe7edc0b6f9..5c554ab006d756feac8e4249f59074de764a91a7 100644 (file)
  */
 class api_v3_OpenIDTest extends CiviUnitTestCase {
 
+  /**
+   * Should location types be checked to ensure primary addresses are correctly assigned after each test.
+   *
+   * @var bool
+   */
+  protected $isLocationTypesOnPostAssert = TRUE;
+
   protected $_params;
   protected $id;
   protected $_entity;