CRM-21328: Protect Array Access with Unexisting Keys
authorCamilo Rodriguez <camilo@compucorp.co.uk>
Tue, 24 Oct 2017 18:09:10 +0000 (18:09 +0000)
committerCamilo Rodriguez <camilo@compucorp.co.uk>
Tue, 24 Oct 2017 18:09:10 +0000 (18:09 +0000)
Changed direct access to $currentOption array by using the
CRM_Utils_Array::value() wrapper, so no notices are issued.

CRM/Event/Form/Registration/Register.php

index f2418bfc0214c126e85c1368758c752f90900d1c..109e1ba28997d0e758c7be60f52841fd1e13c0fd 100644 (file)
@@ -594,8 +594,12 @@ class CRM_Event_Form_Registration_Register extends CRM_Event_Form_Registration {
             continue;
           }
           elseif ($hideAdminValues && !in_array($className, $formClasses)) {
+            $publicVisibilityID = CRM_Price_BAO_PriceField::getVisibilityOptionID('public');
+            $adminVisibilityID = CRM_Price_BAO_PriceField::getVisibilityOptionID('admin');
+
             foreach ($options as $key => $currentOption) {
-              if ($currentOption['visibility_id'] == CRM_Price_BAO_PriceField::getVisibilityOptionID('admin')) {
+              $optionVisibility = CRM_Utils_Array::value('visibility_id', $currentOption, $publicVisibilityID);
+              if ($optionVisibility == $adminVisibilityID) {
                 unset($options[$key]);
               }
             }