smart_escape() private static method

Based on http://stackoverflow.com/a/1734255/526985
private static smart_escape ( $str )
Example #1
0
 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)));
 }
Example #2
0
 private static function finalize_source($source, $format, $url_suffix)
 {
     $source = preg_replace('/([^:])\\/\\//', '$1/', $source);
     if (preg_match('/^https?:\\//i', $source)) {
         $source = Cloudinary::smart_escape($source);
         $source_to_sign = $source;
     } else {
         $source = Cloudinary::smart_escape(rawurldecode($source));
         $source_to_sign = $source;
         if (!empty($url_suffix)) {
             if (preg_match('/[\\.\\/]/i', $url_suffix)) {
                 throw new InvalidArgumentException("url_suffix should not include . or /");
             }
             $source = $source . '/' . $url_suffix;
         }
         if (!empty($format)) {
             $source = $source . '.' . $format;
             $source_to_sign = $source_to_sign . '.' . $format;
         }
     }
     return array("source" => $source, "source_to_sign" => $source_to_sign);
 }
 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"));
     $shorten = Cloudinary::option_consume($options, "shorten", Cloudinary::config_get("shorten"));
     $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 {
         $source = Cloudinary::smart_escape(rawurldecode($source));
         if ($format) {
             $source = $source . "." . $format;
         }
     }
     $shared_domain = !$private_cdn;
     if ($secure) {
         if (!$secure_distribution || $secure_distribution == Cloudinary::OLD_AKAMAI_SHARED_CDN) {
             $secure_distribution = $private_cdn ? $cloud_name . "-res.cloudinary.com" : Cloudinary::SHARED_CDN;
         }
         $shared_domain = $shared_domain || $secure_distribution == Cloudinary::SHARED_CDN;
         $prefix = "https://" . $secure_distribution;
     } else {
         $subdomain = $cdn_subdomain ? "a" . ((crc32($source) % 5 + 5) % 5 + 1) . "." : "";
         $host = $cname ? $cname : ($private_cdn ? $cloud_name . "-" : "") . "res.cloudinary.com";
         $prefix = "http://" . $subdomain . $host;
     }
     if ($shared_domain) {
         $prefix .= "/" . $cloud_name;
     }
     if ($shorten && $resource_type == "image" && $type == "upload") {
         $resource_type = "iu";
         $type = "";
     }
     if (strpos($source, "/") && !preg_match("/^https?:\\//", $source) && !preg_match("/^v[0-9]+/", $source) && empty($version)) {
         $version = "1";
     }
     return preg_replace("/([^:])\\/+/", "\$1/", implode("/", array($prefix, $resource_type, $type, $transformation, $version ? "v" . $version : "", $source)));
 }