private $commonIncluded = FALSE;
/**
- * @var array(string)
+ * @var array|string
*/
private $commonCiviModules = [];
// quantities of low-importance data or the table not having an id field, which could cause a fatal error.
// Instead of not calling any hooks we only call those we know to be frequently important - if a particular extension wanted
// to avoid this they could do an early return on CRM_Core_Config::singleton()->isUpgradeMode
+ // Futther discussion is happening at https://lab.civicrm.org/dev/core/issues/1460
$upgradeFriendlyHooks = ['civicrm_alterSettingsFolders', 'civicrm_alterSettingsMetaData', 'civicrm_triggerInfo', 'civicrm_alterLogTables', 'civicrm_container'];
if (CRM_Core_Config::singleton()->isUpgradeMode() && !in_array($fnSuffix, $upgradeFriendlyHooks)) {
return;
* @param mixed $arg6
*
* @return array|bool
- * @throws \Exception
+ * @throws \CRM_Core_Exception
*/
public function runHooks(
$civiModules, $fnSuffix, $numParams,
break;
default:
- CRM_Core_Error::fatal(ts('Invalid hook invocation'));
- break;
+ throw new CRM_Core_Exception(ts('Invalid hook invocation'));
}
if (!empty($fResult) &&
* the return value is ignored
*/
public static function pre($op, $objectName, $id, &$params) {
+ // Dev/core#1449 DO not dispatch hook_civicrm_pre if we are in an upgrade as this cases the upgrade to fail
+ // Futher discussion is happening at https://lab.civicrm.org/dev/core/issues/1460
+ if (CRM_Core_Config::singleton()->isUpgradeMode()) {
+ return;
+ }
$event = new \Civi\Core\Event\PreEvent($op, $objectName, $id, $params);
\Civi::dispatcher()->dispatch('hook_civicrm_pre', $event);
return $event->getReturnValues();
* an error message which aborts the operation
*/
public static function post($op, $objectName, $objectId, &$objectRef = NULL) {
+ // Dev/core#1449 DO not dispatch hook_civicrm_post if we are in an upgrade as this cases the upgrade to fail
+ // Futher discussion is happening at https://lab.civicrm.org/dev/core/issues/1460
+ if (CRM_Core_Config::singleton()->isUpgradeMode()) {
+ return;
+ }
$event = new \Civi\Core\Event\PostEvent($op, $objectName, $objectId, $objectRef);
\Civi::dispatcher()->dispatch('hook_civicrm_post', $event);
return $event->getReturnValues();
* - js: array, list of JS files or globs.
* - css: array, list of CSS files or globs.
* - partials: array, list of base-dirs containing HTML.
+ * - partialsCallback: mixed, a callback function which generates a list of HTML
+ * function(string $moduleName, array $moduleDefn) => array(string $file => string $html)
+ * For future-proofing, use a serializable callback (e.g. string/array).
+ * See also: Civi\Core\Resolver.
* - requires: array, list of required Angular modules.
* - basePages: array, uncondtionally load this module onto the given Angular pages. [v4.7.21+]
* If omitted, default to "array('civicrm/a')" for backward compat.