-
totten authored
The `deleteItem()` function is used by both contact-search and dedupe-merge use-cases. We can classify several of these just based on the files: * Contact-search use-cases. (These should be updated to use the interface.) * `CRM/Campaign/Selector/Search.php: CRM_Core_BAO_PrevNextCache::deleteItem(NULL, $cacheKey, 'civicrm_contact');` * `CRM/Contact/Form/Search.php: CRM_Core_BAO_PrevNextCache::deleteItem(NULL, $cacheKey);` * `CRM/Contact/Selector.php: CRM_Core_BAO_PrevNextCache::deleteItem(NULL, $cacheKey, 'civicrm_contact');` * Dedupe-merge use-cases. (These should contiue using the BAO.) * `CRM/Contact/Form/DedupeRules.php: CRM_Core_BAO_PrevNextCache::deleteItem(NULL, $cacheKey);` * `CRM/Contact/Page/DedupeFind.php: CRM_Core_BAO_PrevNextCache::deleteItem(NULL, CRM_Dedupe_Merger::getMergeCacheKeyString($rgid, $gid, $criteria))` * `CRM/Dedupe/Merger.php: CRM_Core_BAO_PrevNextCache::deleteItem(NULL, "{$cacheKeyString}_stats");` Additionally, there are two oddballs which are harder to categorize. * `CRM_Contact_BAO_Contact_Utils::clearContactCaches($isEmptyPrevNextTable = FALSE)` deletes *all* prev-next cache-records (`CRM_Core_BAO_PrevNextCache::deleteItem();`). It only does so in one scenario (as part of `CRM/Contact/Import/Form/Preview.php`), which has this explanatory comment: "Clear all caches, forcing any searches to recheck the ACLs or group membership as the import may have changed it." * `CRM_Contact_BAO_Contact::deleteContact(...)` deletes any prev-next cache-records which reference a specific contact (`CRM_Core_BAO_PrevNextCache::deleteItem($id)`). I suppose this provides a low-grade form of referential integrity. Part of me thinks those should be re-considered (e.g. to use a hook/event -- and reduce the coupling between `Contact` and `PrevNext` subsystems). However, for purposes of #217, it seems OK to send `deleteItem(...)` to both BAO (SQL-only) and service (SQL-or-memory) variants.
744b4e34