X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FUtils%2FSystem%2FBase.php;h=8f16278794ae39a4f629981a23bd4c55f7c84447;hb=5ec753e358cd1692934daa7f5bd99384097fdf8c;hp=8642f53fbee8ccb16c83578e9266801457abfc12;hpb=bb2465b6ce9621d85483d95d5d5b0e06d5175029;p=civicrm-core.git diff --git a/CRM/Utils/System/Base.php b/CRM/Utils/System/Base.php index 8642f53fbe..8f16278794 100644 --- a/CRM/Utils/System/Base.php +++ b/CRM/Utils/System/Base.php @@ -152,6 +152,7 @@ abstract class CRM_Utils_System_Base { * * @return array|bool * [contactID, ufID, unique string] else false if no auth + * @throws \CRM_Core_Exception. */ public function authenticate($name, $password, $loadCMSBootstrap = FALSE, $realPath = NULL) { return FALSE; @@ -179,9 +180,10 @@ abstract class CRM_Utils_System_Base { /** * Immediately stop script execution and display a 401 "Access Denied" page. + * @throws \CRM_Core_Exception */ public function permissionDenied() { - CRM_Core_Error::fatal(ts('You do not have permission to access this page.')); + throw new CRM_Core_Exception(ts('You do not have permission to access this page.')); } /** @@ -414,6 +416,19 @@ abstract class CRM_Utils_System_Base { return FALSE; } + /** + * Is a front end page being accessed. + * + * Generally this would be a contribution form or other public page as opposed to a backoffice page (like contact edit). + * + * @todo Drupal uses the is_public setting - clarify & rationalise. See https://github.com/civicrm/civicrm-drupal/pull/546/files + * + * @return bool + */ + public function isFrontEndPage() { + return CRM_Core_Config::singleton()->userFrameworkFrontend; + } + /** * Get user login URL for hosting CMS (method declared in each CMS system class) * @@ -945,4 +960,18 @@ abstract class CRM_Utils_System_Base { return []; } + /** + * Send an HTTP Response base on PSR HTTP RespnseInterface response. + * + * @param \Psr\Http\Message\ResponseInterface $response + */ + public function sendResponse(\Psr\Http\Message\ResponseInterface $response) { + http_response_code($response->getStatusCode()); + foreach ($response->getHeaders() as $name => $values) { + CRM_Utils_System::setHttpHeader($name, implode(', ', (array) $values)); + } + echo $response->getBody(); + CRM_Utils_System::civiExit(); + } + }