/**
  * Generate HTML for displaying particular parts of the Record 
  * 
  * @param object $record The record to print.
  * @param array $partStructures An array of particular partstructures to print. 
  * @return string
  * @access public
  * @since 10/19/04
  */
 function generateDisplayForPartStructures(Id $repositoryId, Id $assetId, Record $record, array $partStructures)
 {
     ArgumentValidator::validate($partStructures, new ArrayValidatorRuleWithRule(new ExtendsValidatorRule("PartStructure")));
     $partIterator = $record->getParts();
     $parts = array();
     while ($partIterator->hasNext()) {
         $part = $partIterator->next();
         $partStructure = $part->getPartStructure();
         $partStructureId = $partStructure->getId();
         if (!isset($parts[$partStructureId->getIdString()]) || !is_array($parts[$partStructureId->getIdString()])) {
             $parts[$partStructureId->getIdString()] = array();
         }
         $parts[$partStructureId->getIdString()][] = $part;
     }
     // print out the parts;
     ob_start();
     foreach (array_keys($partStructures) as $key) {
         $partStructure = $partStructures[$key];
         $partStructureId = $partStructure->getId();
         if (isset($parts[$partStructureId->getIdString()])) {
             if (is_array($parts[$partStructureId->getIdString()])) {
                 foreach (array_keys($parts[$partStructureId->getIdString()]) as $key) {
                     $part = $parts[$partStructureId->getIdString()][$key];
                     print "\n<strong>" . $partStructure->getDisplayName() . ":</strong> \n";
                     print $this->getPartStringValue($part);
                     print "\n<br />";
                 }
             }
         }
     }
     $html = ob_get_contents();
     ob_end_clean();
     return $html;
 }
 /**
  * Generate HTML for displaying particular parts of the Record 
  * 
  * @param object $record The record to print.
  * @param array $partStructures An array of particular partStructures to print. 
  * @return string
  * @access public
  * @since 10/19/04
  */
 function generateDisplayForPartStructures(Id $repositoryId, Id $assetId, Record $record, array $partStructures)
 {
     ArgumentValidator::validate($partStructures, new ArrayValidatorRuleWithRule(new ExtendsValidatorRule("PartStructure")));
     $partIterator = $record->getParts();
     $parts = array();
     while ($partIterator->hasNext()) {
         $part = $partIterator->next();
         $partStructure = $part->getPartStructure();
         $partStructureId = $partStructure->getId();
         if (!isset($parts[$partStructureId->getIdString()]) || !is_array($parts[$partStructureId->getIdString()])) {
             $parts[$partStructureId->getIdString()] = array();
         }
         $parts[$partStructureId->getIdString()][] = $part;
     }
     // print out the parts;
     ob_start();
     $partStructuresToSkip = array('FILE_DATA', 'THUMBNAIL_DATA', 'THUMBNAIL_MIME_TYPE', 'THUMBNAIL_DIMENSIONS');
     $printThumbnail = FALSE;
     foreach (array_keys($partStructures) as $key) {
         $partStructure = $partStructures[$key];
         $partStructureId = $partStructure->getId();
         if (!in_array($partStructureId->getIdString(), $partStructuresToSkip)) {
             print "\n<strong>" . $partStructure->getDisplayName() . ":</strong> \n";
             switch ($partStructureId->getIdString()) {
                 case 'FILE_SIZE':
                     $size = ByteSize::withValue($parts[$partStructureId->getIdString()][0]->getValue());
                     print $size->asString();
                     break;
                 case 'DIMENSIONS':
                     $dimensionArray = $parts[$partStructureId->getIdString()][0]->getValue();
                     print "<em>" . _('width: ') . "</em>" . $dimensionArray[0] . 'px<em>;</em> ';
                     print "<em>" . _('height: ') . "</em>" . $dimensionArray[1] . 'px';
                     break;
                 default:
                     print $parts[$partStructureId->getIdString()][0]->getValue();
             }
             print "\n<br />";
         } else {
             $printThumbnail = TRUE;
         }
     }
     $html = ob_get_clean();
     $harmoni = Harmoni::instance();
     $harmoni->request->startNamespace("polyphony-repository");
     if ($printThumbnail) {
         ob_start();
         $recordId = $record->getId();
         $ns = $harmoni->request->endNamespace();
         // ======= VIEWER LINK ======== //
         $xmlAssetIdString = $harmoni->request->get("asset_id");
         print "<a href='#' onclick='Javascript:window.open(";
         print '"' . VIEWER_URL . "?&amp;source=";
         print urlencode($harmoni->request->quickURL("asset", "browserecordxml", array("collection_id" => $repositoryId->getIdString(), "asset_id" => $xmlAssetIdString, "record_id" => $recordId->getIdString(), RequestContext::name("limit_by") => RequestContext::value("limit_by"), RequestContext::name("type") => RequestContext::value("type"), RequestContext::name("searchtype") => RequestContext::value("searchtype"), RequestContext::name("searchstring") => RequestContext::value("searchstring"))));
         print '&amp;start=0", ';
         print '"' . preg_replace("/[^a-z0-9]/i", '_', $assetId->getIdString()) . '", ';
         print '"toolbar=no,location=no,directories=no,status=yes,scrollbars=yes,resizable=yes,copyhistory=no,width=600,height=500"';
         print ")'>";
         $harmoni->request->startNamespace($ns);
         // If we have a thumbnail with a valid mime type, print a link to that.
         $thumbnailName = preg_replace("/\\.[^\\.]+\$/", "", $parts['FILE_NAME'][0]->getValue());
         if ($thumbnailMimeType = $parts['THUMBNAIL_MIME_TYPE'][0]->getValue()) {
             $mime = Services::getService("MIME");
             $thumbnailName .= "." . $mime->getExtensionForMIMEType($thumbnailMimeType);
         }
         print "\n<img src='";
         print RepositoryInputOutputModuleManager::getThumbnailUrlForRecord($assetId, $record);
         print "'";
         print " style='border: 0px;'";
         print " alt='Thumbnail image.'";
         print " align='left'";
         print " />";
         print "</a> <br />";
         $html2 = ob_get_clean();
         ob_start();
         print "\n<a href='";
         print RepositoryInputOutputModuleManager::getFileUrlForRecord($assetId, $record);
         print "' target='_blank'>";
         print "Download This File</a>\n";
         $downloadlink = ob_get_clean();
         $html = "<table border=0><tr><td>" . $html2 . "</td><td>" . $html . $downloadlink . "</td></tr></table>";
     }
     $harmoni->request->endNamespace();
     return $html;
 }