improve hex color validation #4

This commit is contained in:
Marc Michalsky 2021-12-17 12:13:13 +01:00
parent 482b8e2d0d
commit 3e73ed733b

View file

@ -31,6 +31,13 @@ class CRM_TwingleCampaign_BAO_TwingleProject extends Campaign {
'one_time', 'one_time',
]; ];
// All fields for hex color codes
const colorFields = [
'design_background_color',
'design_primary_color',
'design_font_color',
];
/** /**
* ## TwingleProject constructor * ## TwingleProject constructor
* *
@ -143,6 +150,7 @@ class CRM_TwingleCampaign_BAO_TwingleProject extends Campaign {
*/ */
private function strToInt(array &$values) { private function strToInt(array &$values) {
foreach ($values as $key => $value) { foreach ($values as $key => $value) {
if (!in_array($key, self::colorFields)) {
if (ctype_digit($value)) { if (ctype_digit($value)) {
$values[$key] = intval($value); $values[$key] = intval($value);
} }
@ -151,6 +159,7 @@ class CRM_TwingleCampaign_BAO_TwingleProject extends Campaign {
} }
} }
} }
}
/** /**
* ## Create this TwingleProject as a campaign in CiviCRM * ## Create this TwingleProject as a campaign in CiviCRM
@ -298,21 +307,18 @@ class CRM_TwingleCampaign_BAO_TwingleProject extends Campaign {
} }
// Validate hexadecimal color fields // Validate hexadecimal color fields
$colorFields = foreach (self::colorFields as $colorField) {
[
'design_background_color',
'design_primary_color',
'design_font_color',
];
foreach ($colorFields as $colorField) {
if ( if (
!empty($this->values['project_options'][$colorField]) && (
!empty($this->values['project_options'][$colorField]) ||
$this->values['project_options'][$colorField] === "0"
) &&
( (
!( !(
ctype_xdigit($this->values['project_options'][$colorField]) || ctype_xdigit($this->values['project_options'][$colorField]) ||
is_integer($this->values['project_options'][$colorField]) is_integer($this->values['project_options'][$colorField])
) || ) ||
strlen((string) $this->values['project_options'][$colorField]) > 6 strlen((string) $this->values['project_options'][$colorField]) != 6
) )
) { ) {
$valid = FALSE; $valid = FALSE;