public static function cloudinary_url($source, &$options = array())
{
$type = Cloudinary::option_consume($options, "type", "upload");
if ($type == "fetch" && !isset($options["fetch_format"])) {
$options["fetch_format"] = Cloudinary::option_consume($options, "format");
}
$transformation = Cloudinary::generate_transformation_string($options);
$resource_type = Cloudinary::option_consume($options, "resource_type", "image");
$version = Cloudinary::option_consume($options, "version");
$format = Cloudinary::option_consume($options, "format");
$cloud_name = Cloudinary::option_consume($options, "cloud_name", Cloudinary::config_get("cloud_name"));
if (!$cloud_name) {
throw new InvalidArgumentException("Must supply cloud_name in tag or in configuration");
}
$secure = Cloudinary::option_consume($options, "secure", Cloudinary::config_get("secure"));
$private_cdn = Cloudinary::option_consume($options, "private_cdn", Cloudinary::config_get("private_cdn"));
$secure_distribution = Cloudinary::option_consume($options, "secure_distribution", Cloudinary::config_get("secure_distribution"));
$cdn_subdomain = Cloudinary::option_consume($options, "cdn_subdomain", Cloudinary::config_get("cdn_subdomain"));
$cname = Cloudinary::option_consume($options, "cname", Cloudinary::config_get("cname"));
$original_source = $source;
if (!$source) {
return $original_source;
}
if (preg_match("/^https?:\\//i", $source)) {
if ($type == "upload" || $type == "asset") {
return $original_source;
}
$source = Cloudinary::smart_escape($source);
} else {
if ($format) {
$source = $source . "." . $format;
}
}
if ($secure && !$secure_distribution) {
if ($private_cdn) {
throw new InvalidArgumentException("secure_distribution not defined");
} else {
$secure_distribution = Cloudinary::SHARED_CDN;
}
}
if ($secure) {
$prefix = "https://" . $secure_distribution;
} else {
$crc = crc32($source);
if ($crc < 0) {
$crc += 4294967296;
}
$subdomain = $cdn_subdomain ? "a" . (fmod($crc, 5) + 1) . "." : "";
$host = $cname ? $cname : ($private_cdn ? $cloud_name . "-" : "") . "res.cloudinary.com";
$prefix = "http://" . $subdomain . $host;
}
if (!$private_cdn) {
$prefix .= "/" . $cloud_name;
}
return preg_replace("/([^:])\\/+/", "\$1/", implode("/", array($prefix, $resource_type, $type, $transformation, $version ? "v" . $version : "", $source)));
}