get('geoProvider'); if (!class_exists($provider)) { if (class_exists('CRM_Utils_Geocode_' . $provider)) { $provider = 'CRM_Utils_Geocode_' . $provider; } else { if (strlen($provider)) { Civi::log() ->error('Configured geocoder has been removed from the system', ['geocode_class' => $provider]); } $provider = FALSE; } } // Ideally geocoding providers would be required to implement an interface // or extend a base class. While we identify and implement a geocoding // abstraction library (rather than continue to roll our own), we settle for // this check. if (!method_exists($provider, 'format')) { Civi::log()->error('Configured geocoder is invalid, must provide a format method', ['geocode_class' => $provider]); $provider = FALSE; } self::$providerClassName = $provider; } return self::$providerClassName; } /** * Disable GeoProvider within a session. * * This disables geocoding by causing getUsableClassName() to bail out. */ public static function disableForSession() { self::$providerClassName = FALSE; } /** * Reset geoprovider (after it has been disabled). */ public static function reset() { self::$providerClassName = NULL; self::getUsableClassName(); } }