Exemplo n.º 1
0
 /**
  * Add an Asset to the feed
  * 
  * @param object Asset $asset
  * @return object RSSItem
  * @access public
  * @since 8/8/06
  */
 function getAssetItem($asset)
 {
     $harmoni = Harmoni::instance();
     $idManager = Services::getService("IdManager");
     $assetId = $asset->getId();
     $repository = $asset->getRepository();
     $repositoryId = $repository->getId();
     $item = new RSSItem();
     $item->setTitle($asset->getDisplayName());
     $item->setLink($harmoni->request->quickURL('asset', 'view', array('collection_id' => $repositoryId->getIdString(), 'asset_id' => $assetId->getIdString())));
     if (RequestContext::value('order') == 'modification') {
         $item->setPubDate($asset->getModificationDate());
     } else {
         $item->setPubDate($asset->getCreationDate());
     }
     $type = $asset->getAssetType();
     $item->addCategory($type->getKeyword(), $type->getDomain());
     // The item HTML
     ob_start();
     print "<div>";
     /*********************************************************
      * Files
      *********************************************************/
     print "\n\t<div id='files' style='float: right; max-width: 60%;'>";
     $fileRecords = $asset->getRecordsByRecordStructure($idManager->getId("FILE"));
     while ($fileRecords->hasNext()) {
         $fileRecord = $fileRecords->next();
         $fileUrl = RepositoryInputOutputModuleManager::getFileUrlForRecord($asset, $fileRecord);
         print "\n\t<div style='height: 200px; width: 200px; text-align: center; vertical-align: middle; float: left;'>";
         print "\n\t\t<a href='" . $fileUrl . "'>";
         print "\n\t\t<img src='";
         print RepositoryInputOutputModuleManager::getThumbnailUrlForRecord($asset, $fileRecord);
         print "' style='vertical-align: middle;'/>";
         print "\n\t\t</a>";
         print "\n\t</div>";
         // Add it as an enclosure
         $fileSizeParts = $fileRecord->getPartsByPartStructure($idManager->getId('FILE_SIZE'));
         $fileSizePart = $fileSizeParts->next();
         $mimeTypeParts = $fileRecord->getPartsByPartStructure($idManager->getId('MIME_TYPE'));
         $mimeTypePart = $mimeTypeParts->next();
         $item->addEnclosure($fileUrl, $fileSizePart->getValue(), $mimeTypePart->getValue());
     }
     print "\n\t</div>";
     /*********************************************************
      * Basic metadata
      *********************************************************/
     print "\n\t<dl>";
     if ($asset->getDescription()) {
         $description = HtmlString::withValue($asset->getDescription());
         $description->clean();
         print "\n\t\t<dt style='font-weight: bold;'>" . _("Description:") . "</dt>";
         print "\n\t\t<dd>" . $description->asString() . "</dd>";
     }
     $date = $asset->getModificationDate();
     print "\n\t\t<dt style='font-weight: bold;'>";
     print _("Modification Date");
     print ":</dt>\n\t\t<dd >";
     print $date->monthName() . " " . $date->dayOfMonth() . ", " . $date->year() . " " . $date->hmsString() . " " . $date->timeZoneAbbreviation();
     print "</dd>";
     $date = $asset->getCreationDate();
     print "\n\t\t<dt style='font-weight: bold;'>";
     print _("Creation Date");
     print ":</dt>\n\t\t<dd >";
     print $date->monthName() . " " . $date->dayOfMonth() . ", " . $date->year() . " " . $date->hmsString() . " " . $date->timeZoneAbbreviation();
     print "</dd>";
     if (is_object($asset->getEffectiveDate())) {
         $date = $asset->getEffectiveDate();
         print "\n\t\t<dt style='font-weight: bold;'>";
         print _("Effective Date");
         print ":</dt>\n\t\t<dd >";
         print $date->monthName() . " " . $date->dayOfMonth() . ", " . $date->year() . " " . $date->hmsString() . " " . $date->timeZoneAbbreviation();
         print "</dd>";
     }
     if (is_object($asset->getExpirationDate())) {
         $date = $asset->getExpirationDate();
         print "\n\t\t<dt style='font-weight: bold;'>";
         print _("Expiration Date");
         print ":</dt>\n\t\t<dd >";
         print $date->monthName() . " " . $date->dayOfMonth() . ", " . $date->year() . " " . $date->hmsString() . " " . $date->timeZoneAbbreviation();
         print "</dd>";
     }
     print "\n\t</dl>";
     /*********************************************************
      * Other Info Records
      *********************************************************/
     // Get the set of RecordStructures so that we can print them in order.
     $setManager = Services::getService("Sets");
     $structSet = $setManager->getPersistentSet($repositoryId);
     $structSet->reset();
     // First, lets go through the info structures listed in the set and print out
     // the info records for those structures in order.
     while ($structSet->hasNext()) {
         $structureId = $structSet->next();
         if ($structureId->isEqual($idManager->getId("FILE"))) {
             continue;
         }
         $recordStructure = $repository->getRecordStructure($structureId);
         $records = $asset->getRecordsByRecordStructure($structureId);
         while ($records->hasNext()) {
             $record = $records->next();
             $recordId = $record->getId();
             print "\n\t<hr />";
             print "\n\t<h3>" . $recordStructure->getDisplayName() . "</h3>";
             $this->printRecord($repositoryId, $assetId, $record);
         }
     }
     print "</div>";
     print "\n\t<div style='clear: both;'>";
     print "</div>";
     $item->setDescription(ob_get_clean());
     return $item;
 }
 /**
  * Return the URL of a thumbnail image for a given Asset.
  * 
  * @param object Id $assetId
  * @return string The URL of the thumbnail
  * @access public
  * @since 7/22/05
  * @static
  */
 static function getThumbnailUrlForAsset($assetOrId)
 {
     ArgumentValidator::validate($assetOrId, OrValidatorRule::getRule(ExtendsValidatorRule::getRule("Id"), ExtendsValidatorRule::getRule("Asset")));
     $rule = ExtendsValidatorRule::getRule("Id");
     if ($rule->check($assetOrId)) {
         $repositoryManager = Services::getService("RepositoryManager");
         $asset = $repositoryManager->getAsset($assetOrId);
     } else {
         $asset = $assetOrId;
     }
     if (!$asset) {
         return false;
     }
     $fileRecord = RepositoryInputOutputModuleManager::getFirstImageOrFileRecordForAsset($asset);
     return RepositoryInputOutputModuleManager::getThumbnailUrlForRecord($asset, $fileRecord);
 }
Exemplo n.º 3
0
 /**
  * Answer out an XML block representing the given asset, its Dublin Core, and
  * its file records
  * 
  * @param object Asset $asset
  * @return void
  * @access public
  * @since 1/26/07
  */
 function getAssetXml($asset)
 {
     try {
         $idManager = Services::getService("Id");
         $authZ = Services::getService("AuthZ");
         if (!$authZ->isUserAuthorized($idManager->getId("edu.middlebury.authorization.view"), $asset->getId())) {
             return '';
         }
         ob_start();
         $assetId = $asset->getId();
         $repository = $asset->getRepository();
         $repositoryId = $repository->getId();
         print "\n\t<asset id=\"" . $assetId->getIdString() . "\" repositoryId=\"" . $repositoryId->getIdString() . "\">";
         print "\n\t\t<displayName><![CDATA[";
         print HtmlString::getSafeHtml($asset->getDisplayName());
         print "]]></displayName>";
         print "\n\t\t<description><![CDATA[";
         print HtmlString::getSafeHtml($asset->getDescription());
         print "]]></description>";
         print "\n\t\t<modificationDate><![CDATA[";
         $date = $asset->getModificationDate();
         print $date->asString();
         print "]]></modificationDate>";
         print "\n\t\t<authorization function='edu.middlebury.authorization.view' />";
         if ($authZ->isUserAuthorized($idManager->getId("edu.middlebury.authorization.modify"), $asset->getId())) {
             print "\n\t\t<authorization function='edu.middlebury.authorization.modify' />";
         }
         if ($authZ->isUserAuthorized($idManager->getId("edu.middlebury.authorization.delete"), $asset->getId())) {
             print "\n\t\t<authorization function='edu.middlebury.authorization.delete' />";
         }
         /*********************************************************
          * Files
          *********************************************************/
         $fileRecords = $asset->getRecordsByRecordStructure($idManager->getId('FILE'));
         while ($fileRecords->hasNext()) {
             $fileRecord = $fileRecords->next();
             $fileRecordId = $fileRecord->getId();
             print "\n\t\t<file id=\"" . $fileRecordId->getIdString() . "\"";
             print " mimetype=\"" . $fileRecord->getPartsByPartStructure($idManager->getId("MIME_TYPE"))->next()->getValue() . "\"";
             print ">";
             $parts = $fileRecord->getPartsByPartStructure($idManager->getId("FILE_NAME"));
             $part = $parts->next();
             print "\n\t\t\t<name><![CDATA[" . HtmlString::getSafeHtml($part->getValue()) . "]]></name>";
             $parts = $fileRecord->getPartsByPartStructure($idManager->getId("FILE_SIZE"));
             $part = $parts->next();
             print "\n\t\t\t<size>" . $part->getValue() . "</size>";
             print "\n\t\t\t<url><![CDATA[";
             print RepositoryInputOutputModuleManager::getFileUrlForRecord($asset, $fileRecord);
             print "]]></url>";
             print "\n\t\t\t<thumbnailUrl><![CDATA[";
             print RepositoryInputOutputModuleManager::getThumbnailUrlForRecord($asset, $fileRecord);
             print "]]></thumbnailUrl>";
             print "\n\t\t</file>";
         }
         /*********************************************************
          * Dublin Core
          *********************************************************/
         $records = $asset->getRecordsByRecordStructure($idManager->getId('dc'));
         if ($records->hasNext()) {
             $record = $records->next();
             $recordId = $record->getId();
             print "\n\t\t<dublinCore id=\"" . $recordId->getIdString() . "\">";
             $parts = $record->getPartsByPartStructure($idManager->getId("dc.title"));
             if ($parts->hasNext()) {
                 $part = $parts->next();
                 $valueObj = $part->getValue();
                 print "\n\t\t\t<title><![CDATA[" . HtmlString::getSafeHtml($valueObj->asString()) . "]]></title>";
             }
             $parts = $record->getPartsByPartStructure($idManager->getId("dc.description"));
             if ($parts->hasNext()) {
                 $part = $parts->next();
                 $valueObj = $part->getValue();
                 print "\n\t\t\t<description><![CDATA[" . HtmlString::getSafeHtml($valueObj->asString()) . "]]></description>";
             }
             $parts = $record->getPartsByPartStructure($idManager->getId("dc.creator"));
             if ($parts->hasNext()) {
                 $part = $parts->next();
                 $valueObj = $part->getValue();
                 print "\n\t\t\t<creator><![CDATA[" . HtmlString::getSafeHtml($valueObj->asString()) . "]]></creator>";
             }
             $parts = $record->getPartsByPartStructure($idManager->getId("dc.source"));
             if ($parts->hasNext()) {
                 $part = $parts->next();
                 $valueObj = $part->getValue();
                 print "\n\t\t\t<source><![CDATA[" . HtmlString::getSafeHtml($valueObj->asString()) . "]]></source>";
             }
             $parts = $record->getPartsByPartStructure($idManager->getId("dc.publisher"));
             if ($parts->hasNext()) {
                 $part = $parts->next();
                 $valueObj = $part->getValue();
                 print "\n\t\t\t<publisher><![CDATA[" . HtmlString::getSafeHtml($valueObj->asString()) . "]]></publisher>";
             }
             $parts = $record->getPartsByPartStructure($idManager->getId("dc.date"));
             if ($parts->hasNext()) {
                 $part = $parts->next();
                 $valueObj = $part->getValue();
                 $date = $valueObj->asDate();
                 print "\n\t\t\t<date><![CDATA[";
                 print $date->asString();
                 print "]]></date>";
             }
             print "\n\t\t</dublinCore>";
         }
         print "\n\t\t<permsHtml><![CDATA[";
         print AuthZPrinter::getAZIcon($asset->getId());
         print "]]></permsHtml>";
         print "\n\t</asset>";
         return ob_get_clean();
     } catch (Exception $e) {
         HarmoniErrorHandler::logException($e, 'Segue');
         $this->error($e->getMessage());
     }
 }
 /**
  * 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;
 }