summaryrefslogtreecommitdiff
path: root/program/steps
diff options
context:
space:
mode:
authorAleksander Machniak <alec@alec.pl>2014-08-01 12:49:37 +0200
committerAleksander Machniak <alec@alec.pl>2014-08-01 12:52:33 +0200
commit1fac787d2cedc2ada103418bf91895b3edf1dd8f (patch)
treefa809234923c7ceb849bc7348b3bb31a8224dbbc /program/steps
parentd1749659d25c5b68600aef3557284cedff8dded1 (diff)
Fix various iCloud vCard issues, added fallback for external photos (#1489993)
Conflicts: program/steps/addressbook/func.inc
Diffstat (limited to 'program/steps')
-rw-r--r--program/steps/addressbook/func.inc10
-rw-r--r--program/steps/addressbook/photo.inc8
-rw-r--r--program/steps/mail/show.inc4
3 files changed, 16 insertions, 6 deletions
diff --git a/program/steps/addressbook/func.inc b/program/steps/addressbook/func.inc
index 25dfa9009..2989dada2 100644
--- a/program/steps/addressbook/func.inc
+++ b/program/steps/addressbook/func.inc
@@ -799,11 +799,15 @@ function rcmail_contact_photo($attrib)
}
$photo_img = $RCMAIL->url($url);
}
- else
+ else {
$ff_value = '-del-'; // will disable delete-photo action
+ }
- $img = html::img(array('src' => $photo_img, 'border' => 1, 'alt' => ''));
- $content = html::div($attrib, $img);
+ $content = html::div($attrib, html::img(array(
+ 'src' => $photo_img,
+ 'alt' => '',
+ 'onerror' => 'this.src = rcmail.env.photo_placeholder',
+ )));
if ($CONTACT_COLTYPES['photo'] && ($RCMAIL->action == 'edit' || $RCMAIL->action == 'add')) {
$RCMAIL->output->add_gui_object('contactphoto', $attrib['id']);
diff --git a/program/steps/addressbook/photo.inc b/program/steps/addressbook/photo.inc
index 482185735..30d09ffcc 100644
--- a/program/steps/addressbook/photo.inc
+++ b/program/steps/addressbook/photo.inc
@@ -72,8 +72,12 @@ $plugin = $RCMAIL->plugins->exec_hook('contact_photo',
if ($plugin['url']) {
$RCMAIL->output->redirect($plugin['url']);
}
-else {
- $data = $plugin['data'];
+
+$data = $plugin['data'];
+
+// detect if photo data is an URL
+if (strlen($data) < 1024 && filter_var($data, FILTER_VALIDATE_URL)) {
+ $RCMAIL->output->redirect($data);
}
// deliver alt image
diff --git a/program/steps/mail/show.inc b/program/steps/mail/show.inc
index 2740ad386..afaa0da6f 100644
--- a/program/steps/mail/show.inc
+++ b/program/steps/mail/show.inc
@@ -344,8 +344,10 @@ function rcmail_message_contactphoto($attrib)
'_task' => 'addressbook',
'_action' => 'photo',
'_email' => $MESSAGE->sender['mailto'],
- '_alt' => $placeholder
+ '_alt' => $placeholder,
));
+
+ $attrib['onerror'] = "this.src = '" . ($placeholder ? $placeholder : 'program/resources/blank.gif') . "'";
}
else {
$photo_img = $placeholder ? $placeholder : 'program/resources/blank.gif';