/** * 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 ""; } }
/** * * @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; } }