[REF][PHP8.1] Stop Passing NULL values into mb_strlen in DAO nad strpos in API valida...
authorSeamus Lee <seamuslee001@gmail.com>
Fri, 1 Jul 2022 01:08:51 +0000 (11:08 +1000)
committerSeamus Lee <seamuslee001@gmail.com>
Mon, 4 Jul 2022 01:49:52 +0000 (11:49 +1000)
CRM/Core/DAO.php
CRM/Utils/API/HTMLInputCoder.php
api/v3/Activity.php
api/v3/Contact.php
api/v3/utils.php

index 3a8ba271beeeb00a6e4b19e8995a0faaeb60b0c2..be52f2b24a219d1ad6988e8b70496f383822262c 100644 (file)
@@ -780,7 +780,7 @@ class CRM_Core_DAO extends DB_DataObject {
         }
         else {
           $maxLength = $field['maxlength'] ?? NULL;
-          if (!is_array($value) && $maxLength && mb_strlen($value) > $maxLength && empty($field['pseudoconstant'])) {
+          if (!is_array($value) && $maxLength && mb_strlen($value ?? '') > $maxLength && empty($field['pseudoconstant'])) {
             // No ts() since this is a sysadmin-y string not seen by general users.
             Civi::log()->warning('A string for field {dbName} has been truncated. The original string was {value}.', ['dbName' => $dbName, 'value' => $value]);
             // The string is too long - what to do what to do? Well losing data is generally bad so let's truncate
index 928a4ec7d6cd333512658ee0c088073eddada550..55dfffdd8e5ecc08a93a2983aa69d61846371c80 100644 (file)
@@ -145,7 +145,7 @@ class CRM_Utils_API_HTMLInputCoder extends CRM_Utils_API_AbstractFieldCoder {
   }
 
   public function encodeValue($value) {
-    return str_replace(['<', '>'], ['&lt;', '&gt;'], $value);
+    return str_replace(['<', '>'], ['&lt;', '&gt;'], ($value ?? ''));
   }
 
   /**
@@ -192,7 +192,7 @@ class CRM_Utils_API_HTMLInputCoder extends CRM_Utils_API_AbstractFieldCoder {
   }
 
   public function decodeValue($value) {
-    return str_replace(['&lt;', '&gt;'], ['<', '>'], $value);
+    return str_replace(['&lt;', '&gt;'], ['<', '>'], ($value ?? ''));
   }
 
   /**
index d6dc51b7ffabcd6aab626668cdb9395a152c4bf2..275105a5038f3ab451c9a40e06f1603528df8ad7 100644 (file)
@@ -694,7 +694,7 @@ function _civicrm_api3_activity_check_params(&$params) {
   // needs testing
   $activityTypes = CRM_Activity_BAO_Activity::buildOptions('activity_type_id', 'validate');
   $activityName = $params['activity_name'] ?? NULL;
-  $activityName = ucfirst($activityName);
+  $activityName = ucfirst($activityName ?? '');
   $activityLabel = $params['activity_label'] ?? NULL;
   if ($activityLabel) {
     $activityTypes = CRM_Activity_BAO_Activity::buildOptions('activity_type_id', 'create');
index 237d170cfac78e54757e87f9513c32256af94e98..eb54fc665cf6c62c23982c5913e1f7f22139558b 100644 (file)
@@ -493,7 +493,7 @@ function civicrm_api3_contact_delete($params) {
  */
 function _civicrm_api3_contact_check_params(&$params) {
 
-  switch (strtolower(CRM_Utils_Array::value('contact_type', $params))) {
+  switch (strtolower($params['contact_type'] ?? '')) {
     case 'household':
       civicrm_api3_verify_mandatory($params, NULL, ['household_name']);
       break;
index 516f98c0860a7fc8269d577cb6a1730da92f3d02..10f96ffaad66a857b2be83769b1379f558d7d7f9 100644 (file)
@@ -563,7 +563,7 @@ function _civicrm_api3_get_using_query_object($entity, $params, $additional_opti
     $returnProperties = NULL;
   }
 
-  if (substr($sort, 0, 2) == 'id') {
+  if (substr(($sort ?? ''), 0, 2) == 'id') {
     $sort = $lowercase_entity . "_" . $sort;
   }
 
@@ -1677,7 +1677,7 @@ function _civicrm_api3_validate_foreign_keys($entity, $action, &$params, $fields
  */
 function _civicrm_api3_validate_date(&$params, &$fieldName, &$fieldInfo) {
   [$fieldValue, $op] = _civicrm_api3_field_value_check($params, $fieldName);
-  if (strpos($op, 'NULL') !== FALSE || strpos($op, 'EMPTY') !== FALSE) {
+  if (strpos(($op ?? ''), 'NULL') !== FALSE || strpos(($op ?? ''), 'EMPTY') !== FALSE) {
     return;
   }
 
@@ -2061,7 +2061,7 @@ function _civicrm_api3_validate_integer(&$params, $fieldName, &$fieldInfo, $enti
     // https://lab.civicrm.org/dev/rc/-/issues/14
     $fieldValue = 1;
   }
-  if (strpos($op, 'NULL') !== FALSE || strpos($op, 'EMPTY') !== FALSE) {
+  if (strpos(($op ?? ''), 'NULL') !== FALSE || strpos(($op ?? ''), 'EMPTY') !== FALSE) {
     return;
   }
 
@@ -2230,7 +2230,7 @@ function _civicrm_api3_validate_html(&$params, &$fieldName, $fieldInfo) {
 function _civicrm_api3_validate_string(&$params, &$fieldName, &$fieldInfo, $entity, $action) {
   $isGet = substr($action, 0, 3) === 'get';
   [$fieldValue, $op] = _civicrm_api3_field_value_check($params, $fieldName, 'String');
-  if (strpos($op, 'NULL') !== FALSE || strpos($op, 'EMPTY') !== FALSE || CRM_Utils_System::isNull($fieldValue)) {
+  if (strpos(($op ?? ''), 'NULL') !== FALSE || strpos(($op ?? ''), 'EMPTY') !== FALSE || CRM_Utils_System::isNull($fieldValue)) {
     return;
   }