X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FCore%2FInvoke.php;h=3a50bfe161c4ec64a7a5bf7dbfda9e709c3d9278;hb=ddc9bc500907c875c822d645b148b8c17b9de1fc;hp=1054c9493196bb7ed1de1b7cd80f5a606cfd0c9f;hpb=95d8ddc04c08360567c00283822622fb8bcb0b35;p=civicrm-core.git diff --git a/CRM/Core/Invoke.php b/CRM/Core/Invoke.php index 1054c94931..3a50bfe161 100644 --- a/CRM/Core/Invoke.php +++ b/CRM/Core/Invoke.php @@ -72,6 +72,10 @@ class CRM_Core_Invoke { if ($args[0] !== 'civicrm') { return NULL; } + // CRM-15901: Turn off PHP errors display for all ajax calls + if (CRM_Utils_Array::value(1, $args) == 'ajax' || CRM_Utils_Array::value('snippet', $_REQUEST)) { + ini_set('display_errors', 0); + } if (!defined('CIVICRM_SYMFONY_PATH')) { // Traditional Civi invocation path @@ -121,7 +125,7 @@ class CRM_Core_Invoke { } /** - * Perform general setup + * Perform general setup. * * @param array $args * List of path parts. @@ -267,9 +271,11 @@ class CRM_Core_Invoke { } $result = NULL; - if (is_array($item['page_callback'])) { - require_once str_replace('_', DIRECTORY_SEPARATOR, $item['page_callback'][0]) . '.php'; - $result = call_user_func($item['page_callback']); + // WISHLIST: Refactor this. Instead of pattern-matching on page_callback, lookup + // page_callback via Civi\Core\Resolver and check the implemented interfaces. This + // would require rethinking the default constructor. + if (is_array($item['page_callback']) || strpos($item['page_callback'], ':')) { + $result = call_user_func(Civi\Core\Resolver::singleton()->get($item['page_callback'])); } elseif (strstr($item['page_callback'], '_Form')) { $wrapper = new CRM_Utils_Wrapper(); @@ -281,18 +287,17 @@ class CRM_Core_Invoke { } else { $newArgs = explode('/', $_GET[$config->userFrameworkURLVar]); - require_once str_replace('_', DIRECTORY_SEPARATOR, $item['page_callback']) . '.php'; $mode = 'null'; if (isset($pageArgs['mode'])) { $mode = $pageArgs['mode']; unset($pageArgs['mode']); } $title = CRM_Utils_Array::value('title', $item); - if (strstr($item['page_callback'], '_Page')) { + if (strstr($item['page_callback'], '_Page') || strstr($item['page_callback'], '\\Page\\')) { $object = new $item['page_callback']($title, $mode); $object->urlPath = explode('/', $_GET[$config->userFrameworkURLVar]); } - elseif (strstr($item['page_callback'], '_Controller')) { + elseif (strstr($item['page_callback'], '_Controller') || strstr($item['page_callback'], '\\Controller\\')) { $addSequence = 'false'; if (isset($pageArgs['addSequence'])) { $addSequence = $pageArgs['addSequence']; @@ -317,7 +322,7 @@ class CRM_Core_Invoke { } /** - * This function contains the default action + * This function contains the default action. * * @param $action * @@ -339,7 +344,7 @@ class CRM_Core_Invoke { } /** - * Show the message about CiviCRM versions + * Show the message about CiviCRM versions. * * @param CRM_Core_Smarty $template */