From 63b71ea8d665e61884b93d2b50334a24ea5ea950 Mon Sep 17 00:00:00 2001 From: Tim Otten Date: Fri, 30 Aug 2013 23:15:48 -0700 Subject: [PATCH] CRM-13187 - WordReplacement API - Cut down unnecessary rebuilds --- CRM/Core/BAO/WordReplacement.php | 13 +++++++++---- CRM/Upgrade/Incremental/php/FourFour.php | 4 +++- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/CRM/Core/BAO/WordReplacement.php b/CRM/Core/BAO/WordReplacement.php index 14d7f74125..9c101dca23 100644 --- a/CRM/Core/BAO/WordReplacement.php +++ b/CRM/Core/BAO/WordReplacement.php @@ -88,7 +88,9 @@ class CRM_Core_BAO_WordReplacement extends CRM_Core_DAO_WordReplacement { $wordReplacement->id = $id; $wordReplacement->copyValues($params); $wordReplacement->save(); - self::rebuild(); + if (!isset($params['options']) || CRM_Utils_Array::value('wp-rebuild', $params['options'], TRUE)) { + self::rebuild(); + } return $wordReplacement; } @@ -105,7 +107,9 @@ class CRM_Core_BAO_WordReplacement extends CRM_Core_DAO_WordReplacement { $wordReplacement = new CRM_Core_DAO_WordReplacement(); $wordReplacement->copyValues($params); $wordReplacement->save(); - self::rebuild(); + if (!isset($params['options']) || CRM_Utils_Array::value('wp-rebuild', $params['options'], TRUE)) { + self::rebuild(); + } return $wordReplacement; } @@ -121,7 +125,9 @@ class CRM_Core_BAO_WordReplacement extends CRM_Core_DAO_WordReplacement { $dao = new CRM_Core_DAO_WordReplacement(); $dao->id = $id; $dao->delete(); - self::rebuild(); + if (!isset($params['options']) || CRM_Utils_Array::value('wp-rebuild', $params['options'], TRUE)) { + self::rebuild(); + } return $dao; } @@ -181,6 +187,5 @@ class CRM_Core_BAO_WordReplacement extends CRM_Core_DAO_WordReplacement { return FALSE; } - } diff --git a/CRM/Upgrade/Incremental/php/FourFour.php b/CRM/Upgrade/Incremental/php/FourFour.php index ba3fdfd0f9..6ad741a72a 100644 --- a/CRM/Upgrade/Incremental/php/FourFour.php +++ b/CRM/Upgrade/Incremental/php/FourFour.php @@ -267,10 +267,11 @@ CREATE TABLE IF NOT EXISTS civicrm_word_replacement ( * Get all the word-replacements stored in config-arrays * and convert them to params for the WordReplacement.create API. * + * @param bool $rebuildEach whether to perform rebuild after each individual API call * @return array Each item is $params for WordReplacement.create * @see CRM_Core_BAO_WordReplacement::convertConfigArraysToAPIParams */ - static function getConfigArraysAsAPIParams() { + static function getConfigArraysAsAPIParams($rebuildEach) { $wordReplacementCreateParams = array(); // get all domains $result = civicrm_api3('domain', 'get', array( @@ -281,6 +282,7 @@ CREATE TABLE IF NOT EXISTS civicrm_word_replacement ( $params = array(); $params["is_active"] = TRUE; $params["domain_id"] = $value["id"]; + $params["options"] = array('wp-rebuild' => $rebuildEach); // unserialize word match string $localeCustomArray = unserialize($value["locale_custom_strings"]); if (!empty($localeCustomArray)) { -- 2.25.1