示例#1
0
 /**
  * Returns url of media file
  *
  * @param string $ps_field field name
  * @param string $ps_version version of the media file, as defined in media_processing.conf
  * @param int $pn_page page number, defaults to 1
  * @param array $pa_options Supported options include:
  *		localOnly = if true url to locally hosted media is always returned, even if an external url is available
  *		externalOnly = if true url to externally hosted media is always returned, even if an no external url is available
  * @return string the url
  */
 public function getMediaUrl($ps_field, $ps_version, $pn_page = 1, $pa_options = null)
 {
     $va_media_info = $this->getMediaInfo($ps_field);
     if (!is_array($va_media_info)) {
         return null;
     }
     #
     # Use icon
     #
     if (isset($va_media_info[$ps_version]['USE_ICON']) && ($vs_icon_code = $va_media_info[$ps_version]['USE_ICON'])) {
         return caGetDefaultMediaIconUrl($vs_icon_code, $va_media_info[$ps_version]['WIDTH'], $va_media_info[$ps_version]['HEIGHT']);
     }
     #
     # Is this version externally hosted?
     #
     if (!isset($pa_options['localOnly']) || !$pa_options['localOnly']) {
         if (isset($va_media_info[$ps_version]["EXTERNAL_URL"]) && $va_media_info[$ps_version]["EXTERNAL_URL"]) {
             return $va_media_info[$ps_version]["EXTERNAL_URL"];
         }
     }
     if (isset($pa_options['externalOnly']) && $pa_options['externalOnly']) {
         return $va_media_info[$ps_version]["EXTERNAL_URL"];
     }
     #
     # Is this version queued for processing?
     #
     if (isset($va_media_info[$ps_version]["QUEUED"]) && $va_media_info[$ps_version]["QUEUED"]) {
         return null;
     }
     $va_volume_info = $this->_MEDIA_VOLUMES->getVolumeInformation($va_media_info[$ps_version]["VOLUME"]);
     if (!is_array($va_volume_info)) {
         return null;
     }
     # is this mirrored?
     if (isset($va_volume_info["accessUsingMirror"]) && $va_volume_info["accessUsingMirror"] && (isset($va_media_info["MIRROR_STATUS"][$va_volume_info["accessUsingMirror"]]) && $va_media_info["MIRROR_STATUS"][$va_volume_info["accessUsingMirror"]] == "SUCCESS")) {
         $vs_protocol = $va_volume_info["mirrors"][$va_volume_info["accessUsingMirror"]]["accessProtocol"];
         $vs_host = $va_volume_info["mirrors"][$va_volume_info["accessUsingMirror"]]["accessHostname"];
         $vs_url_path = $va_volume_info["mirrors"][$va_volume_info["accessUsingMirror"]]["accessUrlPath"];
     } else {
         $vs_protocol = $va_volume_info["protocol"];
         $vs_host = $va_volume_info["hostname"];
         $vs_url_path = $va_volume_info["urlPath"];
     }
     if ($va_media_info[$ps_version]["FILENAME"]) {
         $vs_fpath = join("/", array($vs_url_path, $va_media_info[$ps_version]["HASH"], $va_media_info[$ps_version]["MAGIC"] . "_" . $va_media_info[$ps_version]["FILENAME"]));
         return $vs_protocol . "://{$vs_host}" . $vs_fpath;
     } else {
         return "";
     }
 }
示例#2
0
 /**
  * 
  * @param array $pa_options Supported options include:
  *		localOnly = if true url to locally hosted media is always returned, even if an external url is available
  *		externalOnly = if true url to externally hosted media is always returned, even if an no external url is available
  */
 public function getMediaUrl($ps_data, $ps_version, $pa_options = null)
 {
     if (!($va_media_info = $this->getMediaArray($ps_data))) {
         return false;
     }
     $vn_page = 1;
     if (is_array($pa_options) && isset($pa_options["page"]) && $pa_options["page"] > 1) {
         $vn_page = $pa_options["page"];
     }
     #
     # Use icon
     #
     if (isset($va_media_info[$ps_version]['USE_ICON']) && ($vs_icon_code = $va_media_info[$ps_version]['USE_ICON'])) {
         return caGetDefaultMediaIconUrl($vs_icon_code, $va_media_info[$ps_version]['WIDTH'], $va_media_info[$ps_version]['HEIGHT']);
     }
     #
     # Is this version externally hosted?
     #
     if (!isset($pa_options['localOnly']) || !$pa_options['localOnly']) {
         if (isset($va_media_info[$ps_version]["EXTERNAL_URL"]) && $va_media_info[$ps_version]["EXTERNAL_URL"]) {
             return $va_media_info[$ps_version]["EXTERNAL_URL"];
         }
     }
     if (isset($pa_options['externalOnly']) && $pa_options['externalOnly']) {
         return $va_media_info[$ps_version]["EXTERNAL_URL"];
     }
     #
     # Is this version queued for processing?
     #
     if (isset($va_media_info[$ps_version]["QUEUED"]) && $va_media_info[$ps_version]["QUEUED"]) {
         return null;
     }
     $va_volume_info = $this->opo_volume_info->getVolumeInformation($va_media_info[$ps_version]["VOLUME"]);
     if (!is_array($va_volume_info)) {
         return false;
     }
     # is this mirrored?
     if (isset($va_volume_info["accessUsingMirror"]) && $va_volume_info["accessUsingMirror"] && $va_media_info["MIRROR_STATUS"][$va_volume_info["accessUsingMirror"]] == "SUCCESS") {
         $vs_protocol = $va_volume_info["mirrors"][$va_volume_info["accessUsingMirror"]]["accessProtocol"];
         $vs_host = $va_volume_info["mirrors"][$va_volume_info["accessUsingMirror"]]["accessHostname"];
         $vs_url_path = $va_volume_info["mirrors"][$va_volume_info["accessUsingMirror"]]["accessUrlPath"];
     } else {
         $vs_protocol = $va_volume_info["protocol"];
         $vs_host = $va_volume_info["hostname"];
         $vs_url_path = $va_volume_info["urlPath"];
     }
     $o_config = Configuration::load();
     if ($o_config->get('use_pdfjs_viewer')) {
         foreach ($va_media_info as $vs_version => $va_info) {
             if (isset($va_info['MIMETYPE']) && $va_info['MIMETYPE'] == 'application/pdf') {
                 JavascriptLoadManager::register("pdfjs");
             }
         }
     }
     if ($va_media_info[$ps_version]["FILENAME"]) {
         if (isset($va_media_info[$ps_version]["PAGES"]) && $va_media_info[$ps_version]["PAGES"] > 1) {
             if ($vn_page < 1) {
                 $vn_page = 1;
             }
             if ($vn_page > $va_media_info[$ps_version]["PAGES"]) {
                 $vn_page = 1;
             }
             $vs_fpath = join("/", array($vs_url_path, $va_media_info[$ps_version]["HASH"], $va_media_info[$ps_version]["MAGIC"] . "_" . $va_media_info[$ps_version]["FILESTEM"] . "_" . $vn_page . "." . $va_media_info[$ps_version]["EXTENSION"]));
         } else {
             $vs_fpath = join("/", array($vs_url_path, $va_media_info[$ps_version]["HASH"], $va_media_info[$ps_version]["MAGIC"] . "_" . $va_media_info[$ps_version]["FILENAME"]));
         }
         return $vs_protocol . "://{$vs_host}" . $vs_fpath;
     } else {
         return false;
     }
 }