<?php
/*
+--------------------------------------------------------------------+
- | CiviCRM version 4.7 |
+ | CiviCRM version 5 |
+--------------------------------------------------------------------+
- | Copyright CiviCRM LLC (c) 2004-2017 |
+ | Copyright CiviCRM LLC (c) 2004-2018 |
+--------------------------------------------------------------------+
| This file is a part of CiviCRM. |
| |
/**
*
* @package CRM
- * @copyright CiviCRM LLC (c) 2004-2017
+ * @copyright CiviCRM LLC (c) 2004-2018
*/
class CRM_Utils_Type {
const
* The type to validate against.
* @param bool $abort
* If TRUE, the operation will CRM_Core_Error::fatal() on invalid data.
- * @name string $name
+ * @param string $name
* The name of the attribute
+ * @param bool $isThrowException
+ * Should an exception be thrown rather than a using a deprecated fatal error.
*
* @return mixed
* The data, escaped if necessary
+ *
+ * @throws \CRM_Core_Exception
*/
- public static function validate($data, $type, $abort = TRUE, $name = 'One of parameters ') {
+ public static function validate($data, $type, $abort = TRUE, $name = 'One of parameters ', $isThrowException = FALSE) {
+
+ $possibleTypes = array(
+ 'Integer',
+ 'Int',
+ 'Positive',
+ 'CommaSeparatedIntegers',
+ 'Boolean',
+ 'Float',
+ 'Money',
+ 'Text',
+ 'String',
+ 'Link',
+ 'Memo',
+ 'Date',
+ 'Timestamp',
+ 'ContactReference',
+ 'MysqlColumnNameOrAlias',
+ 'MysqlOrderByDirection',
+ 'MysqlOrderBy',
+ 'ExtensionKey',
+ 'Json',
+ );
+ if (!in_array($type, $possibleTypes)) {
+ if ($isThrowException) {
+ throw new CRM_Core_Exception(ts('Invalid type, must be one of : ' . implode($possibleTypes)));
+ }
+ CRM_Core_Error::fatal(ts('Invalid type, must be one of : ' . implode($possibleTypes)));
+ }
switch ($type) {
case 'Integer':
case 'Int':
}
break;
+ case 'CommaSeparatedIntegers':
+ if (CRM_Utils_Rule::commaSeparatedIntegers($data)) {
+ return $data;
+ }
+ break;
+
case 'Boolean':
if (CRM_Utils_Rule::boolean($data)) {
return $data;
break;
case 'ExtensionKey':
- if (CRM_Utils_Rule::checkExtesnionKeyIsValid($data)) {
+ if (CRM_Utils_Rule::checkExtensionKeyIsValid($data)) {
return $data;
}
break;
- default:
- CRM_Core_Error::fatal("Cannot recognize $type for $data");
+ case 'Json':
+ if (CRM_Utils_Rule::json($data)) {
+ return $data;
+ }
break;
}
if ($abort) {
$data = htmlentities($data);
+ if ($isThrowException) {
+ throw new CRM_Core_Exception("$name (value: $data) is not of the type $type");
+ }
CRM_Core_Error::fatal("$name (value: $data) is not of the type $type");
}