X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=Civi%2FAPI%2FRequest.php;h=76e393adc719ea0a2f125e1ac40582258495f275;hb=0bf833793b22eb6ab5a6006a3d693c35f31e2431;hp=5fca0bea4a6196a72d15ec1f3cf6ffcca8a7a7a8;hpb=e98a98049142cec1b405f66dab5ced1be07336ec;p=civicrm-core.git diff --git a/Civi/API/Request.php b/Civi/API/Request.php index 5fca0bea4a..76e393adc7 100644 --- a/Civi/API/Request.php +++ b/Civi/API/Request.php @@ -3,7 +3,7 @@ +--------------------------------------------------------------------+ | CiviCRM version 4.6 | +--------------------------------------------------------------------+ - | Copyright CiviCRM LLC (c) 2004-2014 | + | Copyright CiviCRM LLC (c) 2004-2015 | +--------------------------------------------------------------------+ | This file is a part of CiviCRM. | | | @@ -66,7 +66,8 @@ class Request { $apiRequest['extra'] = $extra; $apiRequest['fields'] = NULL; - self::normalizeNames($entity, $action, $apiRequest); + $apiRequest['entity'] = $entity = self::normalizeEntityName($entity, $apiRequest['version']); + $apiRequest['action'] = $action = self::normalizeActionName($action, $apiRequest['version']); // APIv1-v3 mix data+options in $params which means that each API callback is responsible // for splitting the two. In APIv4, the split is done systematically so that we don't @@ -133,28 +134,38 @@ class Request { * Normalize/validate entity and action names * * @param string $entity - * @param string $action - * @param array $apiRequest + * @param int $version + * @return string * @throws \API_Exception */ - protected static function normalizeNames(&$entity, &$action, &$apiRequest) { - if ($apiRequest['version'] <= 3) { + public static function normalizeEntityName($entity, $version) { + if ($version <= 3) { // APIv1-v3 munges entity/action names, and accepts any mixture of case and underscores. - // We normalize entity to be CamelCase and action to be lowercase. - $apiRequest['entity'] = $entity = \CRM_Utils_String::convertStringToCamel(\CRM_Utils_String::munge($entity)); - $apiRequest['action'] = $action = strtolower(\CRM_Utils_String::munge($action)); + // We normalize entity to be CamelCase. + return \CRM_Utils_String::convertStringToCamel(\CRM_Utils_String::munge($entity)); } else { // APIv4 requires exact spelling & capitalization of entity/action name; deviations should cause errors if (!preg_match('/^[a-zA-Z][a-zA-Z0-9]*$/', $entity)) { throw new \API_Exception("Malformed entity"); } + return $entity; + } + } + + public static function normalizeActionName($action, $version) { + if ($version <= 3) { + // APIv1-v3 munges entity/action names, and accepts any mixture of case and underscores. + // We normalize action to be lowercase. + return strtolower(\CRM_Utils_String::munge($action)); + } + else { + // APIv4 requires exact spelling & capitalization of entity/action name; deviations should cause errors if (!preg_match('/^[a-zA-Z][a-zA-Z0-9]*$/', $action)) { throw new \API_Exception("Malformed action"); } - $apiRequest['entity'] = $entity; // TODO: Not sure about camelCase actions - in v3 they are all lowercase. - $apiRequest['action'] = strtolower($action{0}) . substr($action, 1); + return strtolower($action{0}) . substr($action, 1); } }