X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FUtils%2FSystem.php;h=29b043f1568eff6d62002f278ac4c0fdba52e5f6;hb=864483f6d90ffa4d4242c2b8ab076ca318d2600a;hp=28f9e9ba9e135b57b8b003e30ea9d7627d24e999;hpb=8fcd163fd85f5b4b9d719386d5c9addca1f09f06;p=civicrm-core.git diff --git a/CRM/Utils/System.php b/CRM/Utils/System.php index 28f9e9ba9e..29b043f156 100644 --- a/CRM/Utils/System.php +++ b/CRM/Utils/System.php @@ -284,6 +284,43 @@ class CRM_Utils_System { return $url; } + /** + * Generates an extern url. + * + * @param string $path + * The extern path, such as "extern/url". + * @param string $query + * A query string to append to the link. + * @param string $fragment + * A fragment identifier (named anchor) to append to the link. + * @param bool $absolute + * Whether to force the output to be an absolute link (beginning with a + * URI-scheme such as 'http:'). + * @param bool $isSSL + * NULL to autodetect. TRUE to force to SSL. + * + * @return string rawencoded URL. + */ + public static function externUrl($path = NULL, $query = NULL, $fragment = NULL, $absolute = TRUE, $isSSL = NULL) { + $query = self::makeQueryString($query); + + $url = Civi::paths()->getUrl("[civicrm.root]/{$path}.php", $absolute ? 'absolute' : 'relative', $isSSL) + . ($query ? "?$query" : "") + . ($fragment ? "#$fragment" : ""); + + $parsedUrl = CRM_Utils_Url::parseUrl($url); + $event = \Civi\Core\Event\GenericHookEvent::create([ + 'url' => &$parsedUrl, + 'path' => $path, + 'query' => $query, + 'fragment' => $fragment, + 'absolute' => $absolute, + 'isSSL' => $isSSL, + ]); + Civi::service('dispatcher')->dispatch('hook_civicrm_alterExternUrl', $event); + return urldecode(CRM_Utils_Url::unparseUrl($event->url)); + } + /** * Path of the current page e.g. 'civicrm/contact/view' * @@ -980,6 +1017,8 @@ class CRM_Utils_System { * Returns TRUE if the requirement is met, FALSE if the requirement is not * met and we're not aborting due to the failed requirement. If $abort is * TRUE and the requirement fails, this function does not return. + * + * @throws CRM_Core_Exception */ public static function checkPHPVersion($ver = 5, $abort = TRUE) { $phpVersion = substr(PHP_VERSION, 0, 1); @@ -988,7 +1027,7 @@ class CRM_Utils_System { } if ($abort) { - CRM_Core_Error::fatal(ts('This feature requires PHP Version %1 or greater', + throw new CRM_Core_Exception(ts('This feature requires PHP Version %1 or greater', [1 => $ver] )); } @@ -1059,6 +1098,8 @@ class CRM_Utils_System { * * @return string * civicrm version + * + * @throws CRM_Core_Exception */ public static function version() { static $version; @@ -1075,7 +1116,7 @@ class CRM_Utils_System { // pattern check if (!CRM_Utils_System::isVersionFormatValid($version)) { - CRM_Core_Error::fatal('Unknown codebase version.'); + throw new CRM_Core_Exception('Unknown codebase version.'); } } @@ -1161,7 +1202,7 @@ class CRM_Utils_System { * * @param bool|FALSE $abort * - * @throws \Exception + * @throws \CRM_Core_Exception */ public static function redirectToSSL($abort = FALSE) { $config = CRM_Core_Config::singleton(); @@ -1177,7 +1218,7 @@ class CRM_Utils_System { Civi::log()->warning('CiviCRM thinks site is not SSL, redirecting to {url}', ['url' => $url]); if (!self::checkURL($url, TRUE)) { if ($abort) { - CRM_Core_Error::fatal('HTTPS is not set up on this machine'); + throw new CRM_Core_Exception('HTTPS is not set up on this machine'); } else { CRM_Core_Session::setStatus(ts('HTTPS is not set up on this machine'), ts('Warning'), 'alert'); @@ -1439,6 +1480,9 @@ class CRM_Utils_System { // reset ACL cache CRM_ACL_BAO_Cache::resetCache(); + // clear asset builder folder + \Civi::service('asset_builder')->clear(FALSE); + // reset various static arrays used here CRM_Contact_BAO_Contact::$_importableFields = CRM_Contact_BAO_Contact::$_exportableFields = CRM_Contribute_BAO_Contribution::$_importableFields @@ -1742,13 +1786,14 @@ class CRM_Utils_System { } else { $config = CRM_Core_Config::singleton(); + $tsLocale = CRM_Core_I18n::getLocale(); $vars = [ '{ver}' => CRM_Utils_System::version(), '{uf}' => $config->userFramework, '{php}' => phpversion(), '{sid}' => self::getSiteID(), '{baseUrl}' => $config->userFrameworkBaseURL, - '{lang}' => $config->lcMessages, + '{lang}' => $tsLocale, '{co}' => $config->defaultContactCountry, ]; return strtr($url, array_map('urlencode', $vars));