public function set_baseurl($url)
{
$parsed = @parse_url($url);
+ $hostname = '';
if (x($parsed)) {
- $this->scheme = $parsed['scheme'];
+ if (!empty($parsed['scheme'])) {
+ $this->scheme = $parsed['scheme'];
+ }
+
+ if (!empty($parsed['host'])) {
+ $hostname = $parsed['host'];
+ }
- $hostname = $parsed['host'];
if (x($parsed, 'port')) {
$hostname .= ':' . $parsed['port'];
}
$this->hostname = Config::get('config', 'hostname');
}
- if (!isset($this->hostname) || ( $this->hostname == '')) {
+ if (!isset($this->hostname) || ($this->hostname == '')) {
$this->hostname = $hostname;
}
}
$img_str = Network::fetchUrl($url, true, $redirects, 4);
$filesize = strlen($img_str);
- // The tests are failing with an read error. This can be caused by memory shortage
- // See https://stackoverflow.com/questions/10175758/getimagesize-read-error
- // So we use the alternate method instead
- //if (function_exists("getimagesizefromstring")) {
- // $data = getimagesizefromstring($img_str);
- //} else {
- $tempfile = tempnam(get_temppath(), "cache");
-
- $a = get_app();
- $stamp1 = microtime(true);
- file_put_contents($tempfile, $img_str);
- $a->save_timestamp($stamp1, "file");
-
- $data = getimagesize($tempfile);
- unlink($tempfile);
- //}
+ try {
+ if (function_exists("getimagesizefromstring")) {
+ $data = getimagesizefromstring($img_str);
+ } else {
+ $tempfile = tempnam(get_temppath(), "cache");
+
+ $a = get_app();
+ $stamp1 = microtime(true);
+ file_put_contents($tempfile, $img_str);
+ $a->save_timestamp($stamp1, "file");
+
+ $data = getimagesize($tempfile);
+ unlink($tempfile);
+ }
+ } catch (Exception $e) {
+ return false;
+ }
if ($data) {
$data["size"] = $filesize;