From 4421274777264782f0f10c48f622dc838f339654 Mon Sep 17 00:00:00 2001 From: Tim Otten Date: Wed, 26 Jul 2017 20:40:02 -0700 Subject: [PATCH] CRM-20958 - Add helper Civi\Core\SqlTrigger\StaticTriggers --- Civi/Core/SqlTrigger/StaticTriggers.php | 127 ++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 Civi/Core/SqlTrigger/StaticTriggers.php diff --git a/Civi/Core/SqlTrigger/StaticTriggers.php b/Civi/Core/SqlTrigger/StaticTriggers.php new file mode 100644 index 0000000000..e4747a8d2b --- /dev/null +++ b/Civi/Core/SqlTrigger/StaticTriggers.php @@ -0,0 +1,127 @@ + 'civicrm_case', 'column'=> 'modified_date'); + * + * @see \CRM_Utils_Hook::triggerInfo + */ + private $triggers; + + /** + * StaticTriggers constructor. + * @param $triggers + */ + public function __construct($triggers) { + $this->triggers = $triggers; + } + + + /** + * Add our list of triggers to the global list. + * + * @param \Civi\Core\Event\GenericHookEvent $e + * @see \CRM_Utils_Hook::triggerInfo + */ + public function onTriggerInfo($e) { + $this->alterTriggerInfo($e->info, $e->tableName); + } + + /** + * Add our list of triggers to the global list. + * + * @see \CRM_Utils_Hook::triggerInfo + * @see \CRM_Core_DAO::triggerRebuild + * + * @param array $info + * See hook_civicrm_triggerInfo. + * @param string|NULL $tableFilter + * See hook_civicrm_triggerInfo. + */ + public function alterTriggerInfo(&$info, $tableFilter = NULL) { + foreach ($this->getTriggers() as $trigger) { + if ($tableFilter !== NULL) { + // Because sadism. + if (in_array($tableFilter, (array) $trigger['table'])) { + $trigger['table'] = $tableFilter; + } + } + + if (\CRM_Core_Config::isUpgradeMode() && isset($trigger['upgrade_check'])) { + $uc = $trigger['upgrade_check']; + if (!\CRM_Core_DAO::checkFieldExists($uc['table'], $uc['column']) + ) { + continue; + } + } + unset($trigger['upgrade_check']); + $info[] = $trigger; + } + } + + /** + * @return mixed + */ + public function getTriggers() { + return $this->triggers; + } + + /** + * @param mixed $triggers + * @return StaticTriggers + */ + public function setTriggers($triggers) { + $this->triggers = $triggers; + return $this; + } + + /** + * @param $trigger + * @return StaticTriggers + */ + public function addTrigger($trigger) { + $this->triggers[] = $trigger; + return $this; + } + +} -- 2.25.1