2011-08-07 00:32:06 +04:00
|
|
|
<?php
|
|
|
|
/**
|
2012-02-12 17:57:44 +04:00
|
|
|
* Copyright (c) 2012 Thomas Tanghus <thomas@tanghus.net>
|
|
|
|
* Copyright (c) 2011, 2012 Bart Visscher <bartv@thisnet.nl>
|
|
|
|
* Copyright (c) 2011 Jakob Sack mail@jakobsack.de
|
|
|
|
* This file is licensed under the Affero General Public License version 3 or
|
|
|
|
* later.
|
|
|
|
* See the COPYING-README file.
|
2011-08-07 00:32:06 +04:00
|
|
|
*/
|
|
|
|
|
|
|
|
// Init owncloud
|
|
|
|
require_once('../../lib/base.php');
|
2011-10-01 01:10:08 +04:00
|
|
|
OC_Util::checkLoggedIn();
|
2011-10-01 01:05:10 +04:00
|
|
|
OC_Util::checkAppEnabled('contacts');
|
2011-08-07 00:32:06 +04:00
|
|
|
|
2012-02-17 22:04:12 +04:00
|
|
|
function getStandardImage(){
|
|
|
|
OC_Response::setExpiresHeader('P10D');
|
|
|
|
OC_Response::enableCaching();
|
|
|
|
OC_Response::redirect(OC_Helper::imagePath('contacts', 'person_large.png'));
|
|
|
|
}
|
|
|
|
|
2012-04-22 22:38:17 +04:00
|
|
|
$id = isset($_GET['id']) ? $_GET['id'] : null;
|
|
|
|
$caching = isset($_GET['refresh']) ? 0 : null;
|
|
|
|
|
|
|
|
if(is_null($id)) {
|
|
|
|
getStandardImage();
|
|
|
|
}
|
2011-08-07 00:32:06 +04:00
|
|
|
|
2012-02-12 17:57:44 +04:00
|
|
|
$contact = OC_Contacts_App::getContactVCard($id);
|
2012-01-19 19:04:39 +04:00
|
|
|
$image = new OC_Image();
|
2012-02-17 22:04:12 +04:00
|
|
|
if(!$image) {
|
|
|
|
getStandardImage();
|
|
|
|
}
|
2011-09-17 02:26:57 +04:00
|
|
|
// invalid vcard
|
2012-02-12 17:57:44 +04:00
|
|
|
if( is_null($contact)) {
|
|
|
|
OC_Log::write('contacts','photo.php. The VCard for ID '.$id.' is not RFC compatible',OC_Log::ERROR);
|
2012-01-19 19:04:39 +04:00
|
|
|
} else {
|
2012-04-22 22:38:17 +04:00
|
|
|
OC_Response::enableCaching($caching);
|
2012-02-12 20:20:30 +04:00
|
|
|
OC_Contacts_App::setLastModifiedHeader($contact);
|
|
|
|
|
2012-01-19 19:04:39 +04:00
|
|
|
// Photo :-)
|
2012-02-12 17:57:44 +04:00
|
|
|
if($image->loadFromBase64($contact->getAsString('PHOTO'))) {
|
|
|
|
// OK
|
2012-02-12 20:20:30 +04:00
|
|
|
OC_Response::setETagHeader(md5($contact->getAsString('PHOTO')));
|
2011-08-07 00:32:06 +04:00
|
|
|
}
|
2012-02-12 17:57:44 +04:00
|
|
|
else
|
|
|
|
// Logo :-/
|
|
|
|
if($image->loadFromBase64($contact->getAsString('LOGO'))) {
|
|
|
|
// OK
|
2012-02-12 20:20:30 +04:00
|
|
|
OC_Response::setETagHeader(md5($contact->getAsString('LOGO')));
|
2012-02-12 17:57:44 +04:00
|
|
|
}
|
|
|
|
if ($image->valid()) {
|
|
|
|
$max_size = 200;
|
|
|
|
if($image->width() > $max_size ||
|
|
|
|
$image->height() > $max_size) {
|
|
|
|
$image->resize($max_size);
|
2011-08-07 00:32:06 +04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2012-02-12 17:57:44 +04:00
|
|
|
if (!$image->valid()) {
|
|
|
|
// Not found :-(
|
2012-02-17 22:04:12 +04:00
|
|
|
getStandardImage();
|
|
|
|
//$image->loadFromFile('img/person_large.png');
|
2012-02-12 17:57:44 +04:00
|
|
|
}
|
|
|
|
header('Content-Type: '.$image->mimeType());
|
|
|
|
$image->show();
|
|
|
|
//echo OC_Contacts_App::$l10n->t('This card does not contain a photo.');
|