while ($vn_i < $vn_items_per_page && $vo_result->nextHit()) {
     $vs_idno = $vo_result->get('ca_occurrences.idno');
     $vs_class = "";
     $vn_item_count++;
     if ($vn_item_count == 2) {
         $vs_class = "resultBg";
         $vn_item_count = 0;
     }
     $vn_occurrence_id = $vo_result->get('ca_occurrences.occurrence_id');
     $va_labels = $vo_result->getDisplayLabels($this->request);
     print "<div" . ($vs_class ? " class='{$vs_class}'" : "") . " style='clear:both;'>";
     $t_occurrence->load($vn_occurrence_id);
     $vs_padding = 0;
     $va_related_objects_links = $t_occurrence->get("ca_objects_x_occurrences.relation_id", array("returnAsArray" => true));
     if (sizeof($va_related_objects_links)) {
         $t_objects_x_occurrences = new ca_objects_x_occurrences();
         foreach ($va_related_objects_links as $vn_relation_id) {
             $t_objects_x_occurrences->load($vn_relation_id);
             $va_reps = $t_objects_x_occurrences->get("ca_objects_x_occurrences.representation_list", array("returnAsArray" => true, 'idsOnly' => true));
             if (is_array($va_reps)) {
                 foreach ($va_reps as $vn_relation_id => $va_attr) {
                     $t_rep = new ca_object_representations($va_attr['representation_list']);
                     $va_info = $t_rep->getMediaInfo("media");
                     $vs_padding = round($va_info["thumbnail"]["HEIGHT"] / 2) - 7;
                     print "<div class='occThumb'>" . $t_rep->getMediaTag('media', 'thumbnail') . "</div><!-- end occThumb -->";
                     break;
                 }
             }
             break;
         }
     }
                 print str_replace("*", "&bull; ", $vs_value);
             }
             print "</div><!-- end unit -->";
         } else {
             if ($ps_mode == "print" && in_array($vs_attribute_code, $va_attributes_for_occ_type)) {
                 print "<div class='unit'><input type='checkbox' checked name='print_fields[]' value='" . $vs_attribute_code . "'> <b>" . $t_occurrence->getDisplayLabel("ca_occurrences.{$vs_attribute_code}") . "</b><br/>";
                 print "<textarea name='{$vs_attribute_code}'></textarea>";
                 print "</div><!-- end unit -->";
             }
         }
     }
 }
 # --- related objects
 $va_related_objects_links = $t_occurrence->get("ca_objects_x_occurrences.relation_id", array("returnAsArray" => true));
 if (sizeof($va_related_objects_links)) {
     $t_objects_x_occurrences = new ca_objects_x_occurrences();
     $t_object = new ca_objects();
     foreach ($va_related_objects_links as $vn_relation_id) {
         $t_objects_x_occurrences->load($vn_relation_id);
         $va_reps = $t_objects_x_occurrences->get("ca_objects_x_occurrences.representation_list", array("returnAsArray" => true, 'idsOnly' => true));
         if (is_array($va_reps)) {
             foreach ($va_reps as $vn_i => $va_attr) {
                 $t_rep = new ca_object_representations($va_attr['representation_list']);
                 print "<div class='unit'>";
                 if ($ps_mode == "print") {
                     print "<input type='checkbox' checked name='print_fields[]' value='rep" . $t_rep->get("representation_id") . "'> ";
                 }
                 # --- open in media viewer
                 print "<a href='#' onclick='caMediaPanel.showPanel(\"" . caNavUrl($this->request, 'Detail', 'Object', 'GetRepresentationInfo', array('object_id' => $t_objects_x_occurrences->get("ca_objects.object_id"), 'representation_id' => $t_rep->getPrimaryKey())) . "\"); return false;' >" . $t_rep->getMediaTag('media', 'medium') . "</a>";
                 #print $t_rep->getMediaTag('media', 'medium');
                 print "</div><!-- end unit -->";
 public function downloadCustomWorksheet()
 {
     $o_purifier = new HTMLPurifier();
     $pn_occurrence_id = $this->request->getParameter('occurrence_id', pInteger);
     $pn_relation_id = $this->request->getParameter('relation_id', pInteger);
     $t_objects_x_occurrences = new ca_objects_x_occurrences($pn_relation_id);
     # --- get the images
     $pa_print_rep = $this->request->getParameter('print_reps', pArray);
     $va_images = array();
     if (is_array($pa_print_rep)) {
         $t_rep = new ca_object_representations();
         foreach ($pa_print_rep as $vn_i => $vn_rep_id) {
             $t_rep->load($vn_rep_id);
             $va_media_info = $t_rep->getMediaInfo('media');
             $vn_height = $va_media_info["large"]["HEIGHT"];
             $vn_width = $va_media_info["large"]["WIDTH"];
             if ($vn_height > 900) {
                 $vn_new_width = 900 * $vn_width / $vn_height;
                 $vs_image = "<img src='" . $t_rep->getMediaUrl('media', 'large') . "' style='height:900px; width:" . $vn_new_width . "px;'>";
             } else {
                 $vs_image = $t_rep->getMediaTag("media", "large");
             }
             $va_images[] = $vs_image;
         }
     }
     $this->view->setVar("images", $va_images);
     $t_lists = new ca_lists();
     $vn_original_date = $t_lists->getItemIDFromList("date_types", "dateOriginal");
     $vs_image_info = "<div style='font-size:11px; font-style:italic;'>" . $t_objects_x_occurrences->get("ca_objects.preferred_labels.name");
     if ($va_dates = $t_objects_x_occurrences->get("ca_objects.date", array("returnAsArray" => true))) {
         foreach ($va_dates as $va_date_info) {
             if ($va_date_info["dc_dates_types"] == $vn_original_date) {
                 $vs_image_info .= ", " . $va_date_info["dates_value"];
             }
         }
     }
     if ($t_objects_x_occurrences->get("ca_objects.repository")) {
         $vs_image_info .= ", " . $t_objects_x_occurrences->get("ca_objects.repository", array('delimiter' => ', ', 'convertCodesToDisplayText' => true));
     }
     $vs_image_info .= ", " . $t_objects_x_occurrences->get("ca_objects.idno") . "</div>";
     $this->view->setVar("image_info", $vs_image_info);
     # --- get the attributes the user may have altered
     $va_info = array();
     $va_attributes = $this->opa_worksheet_attributes;
     foreach ($va_attributes as $vs_attribute_code => $vs_title) {
         if ($vs_value = str_replace("\n", "<br/>", $o_purifier->purify($this->request->getParameter($vs_attribute_code, pString)))) {
             if ($vs_attribute_code == "title") {
                 $va_info[$vs_attribute_code] = $vs_value;
             } else {
                 $va_info[$vs_attribute_code] = "<b>" . $vs_title . "</b><br/>" . $vs_value;
             }
         } else {
             $va_info[$vs_attribute_code] = "";
         }
     }
     $this->view->setvar("worksheet_info", $va_info);
     require_once __CA_LIB_DIR__ . '/core/Parsers/dompdf/dompdf_config.inc.php';
     if ($vs_title = $o_purifier->purify($this->request->getParameter($vs_attribute_code, pString))) {
         $vs_output_filename = $vs_title;
     } else {
         $vs_output_filename = "NYSA_Custom_WorkSheet";
     }
     $vs_output_file_name = preg_replace("/[^A-Za-z0-9\\-]+/", '_', $vs_output_filename);
     header("Content-Disposition: attachment; filename=export_results.pdf");
     header("Content-type: application/pdf");
     $vs_content = $this->render($this->ops_theme . '/custom_worksheet_html.php');
     $o_pdf = new DOMPDF();
     // Page sizes: 'letter', 'legal', 'A4'
     // Orientation:  'portrait' or 'landscape'
     $o_pdf->set_paper("letter", "portrait");
     $o_pdf->load_html($vs_content, 'utf-8');
     $o_pdf->render();
     $o_pdf->stream($vs_output_file_name . ".pdf");
     return;
 }