Skip to content
Snippets Groups Projects
Verified Commit 4c4917b2 authored by Andrei Mondoc's avatar Andrei Mondoc Committed by Kevin Cristiano
Browse files

add externUrl method and civicrm_alterExternUrl hook

parent 6acae253
No related branches found
No related tags found
No related merge requests found
......@@ -55,6 +55,8 @@ class CRM_Contribute_Form_ContributionPage_Widget extends CRM_Contribute_Form_Co
$this->assign('cpageId', $this->_id);
$this->assign('widgetExternUrl', CRM_Utils_System::externUrl('extern/widget', "cpageId={$this->_id}&widgetId={$this->_widget->id}&format=3"));
$config = CRM_Core_Config::singleton();
$title = CRM_Core_DAO::getFieldValue('CRM_Contribute_DAO_ContributionPage',
$this->_id,
......
......@@ -121,7 +121,7 @@ class CRM_Core_Payment_PaymentExpress extends CRM_Core_Payment {
CRM_Core_Error::fatal(ts('Component is invalid'));
}
$url = $config->userFrameworkResourceURL . "extern/pxIPN.php";
$url = CRM_Utils_System::externUrl('extern/pxIPN');
if ($component == 'event') {
$cancelURL = CRM_Utils_System::url('civicrm/event/register',
......
......@@ -45,22 +45,7 @@ class CRM_Cxn_BAO_Cxn extends CRM_Cxn_DAO_Cxn {
* @return string
*/
public static function getSiteCallbackUrl() {
$config = CRM_Core_Config::singleton();
if (preg_match('/^(http|https):/', $config->resourceBase)) {
$civiUrl = $config->resourceBase;
}
else {
$civiUrl = rtrim(CRM_Utils_System::baseURL(), '/') . '/' . ltrim($config->resourceBase, '/');
}
// In practice, this may not be necessary, but we want to prevent
// edge-cases that downgrade security-level below system policy.
if (Civi::settings()->get('enableSSL')) {
$civiUrl = preg_replace('/^http:/', 'https:', $civiUrl);
}
return rtrim($civiUrl, '/') . '/extern/cxn.php';
return CRM_Utils_System::externUrl('extern/cxn', NULL, NULL, TRUE, TRUE);
}
/**
......
......@@ -1163,8 +1163,8 @@ ORDER BY civicrm_email.is_bulkmail DESC
// push the tracking url on to the html email if necessary
if ($this->open_tracking && $html) {
array_push($html, "\n" . '<img src="' . $config->userFrameworkResourceURL .
"extern/open.php?q=$event_queue_id\" width='1' height='1' alt='' border='0'>"
array_push($html, "\n" . '<img src="' . CRM_Utils_System::externUrl('extern/open', "q=$event_queue_id")
. '" width="1" height="1" alt="" border="0">'
);
}
......
......@@ -93,7 +93,7 @@ class CRM_Mailing_BAO_TrackableURL extends CRM_Mailing_DAO_TrackableURL {
$urlCache[$mailing_id . $url] = $redirect;
}
$returnUrl = "{$urlCache[$mailing_id . $url]}&qid={$queue_id}";
$returnUrl = CRM_Utils_System::externUrl('extern/url', "u=$id&qid=$queue_id");
if ($hrefExists) {
$returnUrl = "href='{$returnUrl}' rel='nofollow'";
......
......@@ -300,6 +300,41 @@ 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.
*/
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 CRM_Utils_Url::unparseUrl($event->url);
}
/**
* Path of the current page e.g. 'civicrm/contact/view'
*
......
......@@ -211,4 +211,4 @@ function onReady( ) {
}
</script>
{/literal}
<script type="text/javascript" src="{$config->userFrameworkResourceURL}/extern/widget.php?cpageId={$cpageId}&widgetId={$widget_id}&format=3"></script>
<script type="text/javascript" src="{$widgetExternUrl}"></script>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment