/**
  *
  */
 private static function _evaluateCodeAttribute(SearchResult $pr_res, $po_node, array $pa_options = null)
 {
     if (!($va_codes = DisplayTemplateParser::_getCodesFromAttribute($po_node, ['includeBooleans' => true]))) {
         return [];
     }
     $pb_include_blanks = caGetOption('includeBlankValuesInArray', $pa_options, false);
     $ps_delimiter = caGetOption('delimiter', $pa_options, ';');
     $pb_mode = caGetOption('mode', $pa_options, 'present');
     // value 'present' or 'not_present'
     $pn_index = caGetOption('index', $pa_options, null);
     $vb_has_value = null;
     foreach ($va_codes as $vs_code => $vs_bool) {
         $va_val_list = $pr_res->get($vs_code, ['returnAsArray' => true, 'returnBlankValues' => true, 'convertCodesToDisplayText' => true, 'returnAsDecimal' => true, 'getDirectDate' => true]);
         if (!is_array($va_val_list)) {
             // no value
             $vb_value_present = false;
         } else {
             if (!is_null($pn_index)) {
                 if (!isset($va_val_list[$pn_index]) || (is_numeric($va_val_list[$pn_index]) && (double) $va_val_list[$pn_index] == 0 || !strlen(trim($va_val_list[$pn_index])))) {
                     $vb_value_present = false;
                     // no value
                 } else {
                     $va_val_list = array($va_val_list[$pn_index]);
                     if (!$pb_include_blanks) {
                         $va_val_list = array_filter($va_val_list);
                     }
                     $vb_value_present = (bool) sizeof($va_val_list);
                 }
             } else {
                 if (!$pb_include_blanks) {
                     foreach ($va_val_list as $vn_i => $vm_val) {
                         if (is_numeric($vm_val) && (double) $vm_val == 0 || !strlen(trim($vm_val))) {
                             unset($va_val_list[$vn_i]);
                         }
                     }
                 }
                 $vb_value_present = (bool) sizeof($va_val_list);
             }
         }
         if ($pb_mode !== 'present') {
             $vb_value_present = !$vb_value_present;
         }
         if (is_null($vb_has_value)) {
             $vb_has_value = $vb_value_present;
         }
         $vb_has_value = $vs_bool == 'OR' ? $vb_has_value || $vb_value_present : $vb_has_value && $vb_value_present;
     }
     return $vb_has_value;
 }