/** * Return the image data stream * @return Image data */ public function render() { if (is_null($this->image)) { throw new \BadMethodCallException(__METHOD__ . ' Image must be set either in constructor or with setImage()'); } return $this->image->data(); }
/** * Saves the photo from ownCloud FS to oC cache * @return JSONResponse with data.tmp set to the key in the cache. * * @NoAdminRequired * @NoCSRFRequired */ public function cacheFileSystemPhoto() { $params = $this->request->urlParams; $response = new JSONResponse(); if (!isset($this->request->get['path'])) { $response->bailOut(App::$l10n->t('No photo path was submitted.')); } $localpath = \OC\Files\Filesystem::getLocalFile($this->request->get['path']); $tmpkey = 'contact-photo-' . $params['contactId']; if (!file_exists($localpath)) { return $response->bailOut(App::$l10n->t('File doesn\'t exist:') . $localpath); } $image = new \OCP\Image(); if (!$image) { return $response->bailOut(App::$l10n->t('Error loading image.')); } if (!$image->loadFromFile($localpath)) { return $response->bailOut(App::$l10n->t('Error loading image.')); } if ($image->width() > 400 || $image->height() > 400) { $image->resize(400); // Prettier resizing than with browser and saves bandwidth. } if (!$image->fixOrientation()) { // No fatal error so we don't bail out. $response->debug('Couldn\'t save correct image orientation: ' . $localpath); } if (!$this->server->getCache()->set($tmpkey, $image->data(), 600)) { return $response->bailOut('Couldn\'t save temporary image: ' . $tmpkey); } return $response->setData(array('tmp' => $tmpkey, 'metadata' => array('contactId' => $params['contactId'], 'addressBookId' => $params['addressBookId'], 'backend' => $params['backend']))); }
public static function cacheThumbnail($id, \OC_Image $image = null, $remove = false, $update = false) { $key = self::THUMBNAIL_PREFIX . $id; if (\OC::$server->getCache()->hasKey($key) && $image === null && $remove === false && $update === false) { return \OC::$server->getCache()->get($key); } if ($remove) { \OC::$server->getCache()->remove($key); if (!$update) { return false; } } if (is_null($image)) { $vcard = self::getContactVCard($id); // invalid vcard if (is_null($vcard)) { \OCP\Util::writeLog(self::$appname, __METHOD__ . ' The VCard for ID ' . $id . ' is not RFC compatible', \OCP\Util::ERROR); return false; } $image = new \OCP\Image(); if (!isset($vcard->PHOTO)) { return false; } if (!$image->loadFromBase64((string) $vcard->PHOTO)) { return false; } } if (!$image->centerCrop()) { \OCP\Util::writeLog(self::$appname, 'thumbnail.php. Couldn\'t crop thumbnail for ID ' . $id, \OCP\Util::ERROR); return false; } if (!$image->resize(self::THUMBNAIL_SIZE)) { \OCP\Util::writeLog(self::$appname, 'thumbnail.php. Couldn\'t resize thumbnail for ID ' . $id, \OCP\Util::ERROR); return false; } // Cache for around a month \OC::$server->getCache()->set($key, $image->data(), 3000000); \OCP\Util::writeLog(self::$appname, 'Caching ' . $id, \OCP\Util::DEBUG); return \OC::$server->getCache()->get($key); }
/** * @NoAdminRequired */ public function uploadPhoto() { //$type = $this->request->getHeader('Content-Type'); $id = $this->params('id'); $file = $this->request->getUploadedFile('imagefile'); $error = $file['error']; if ($error !== UPLOAD_ERR_OK) { $errors = array(0 => $this->l10n->t("There is no error, the file uploaded with success"), 1 => $this->l10n->t("The uploaded file exceeds the upload_max_filesize directive in php.ini") . ini_get('upload_max_filesize'), 2 => $this->l10n->t("The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form"), 3 => $this->l10n->t("The uploaded file was only partially uploaded"), 4 => $this->l10n->t("No file was uploaded"), 6 => $this->l10n->t("Missing a temporary folder")); \OCP\Util::writeLog($this->appName, 'Uploaderror: ' . $errors[$error], \OCP\Util::DEBUG); } if (file_exists($file['tmp_name'])) { $tmpkey = 'editphoto'; $size = getimagesize($file['tmp_name'], $info); //$exif = @exif_read_data($file['tmp_name']); $image = new \OCP\Image(); if ($image->loadFromFile($file['tmp_name'])) { if (!$image->fixOrientation()) { // No fatal error so we don't bail out. \OCP\Util::writeLog($this->appName, 'Couldn\'t save correct image orientation: ' . $tmpkey, \OCP\Util::DEBUG); } \OC::$server->getCache()->remove($tmpkey); \OC::$server->getCache()->remove($tmpkey . 'ratio'); $originalWidth = $image->width(); if (\OC::$server->getCache()->set($tmpkey, $image->data(), 600)) { if ($image->width() > 400 || $image->height() > 400) { $image->resize(400); // Prettier resizing than with browser and saves bandwidth. } $ratio = $originalWidth / $image->width(); if (\OC::$server->getCache()->set($tmpkey . 'ratio', $ratio, 600)) { $imgString = $image->__toString(); $resultData = array('mime' => $file['type'], 'size' => $file['size'], 'name' => $file['name'], 'id' => $id, 'tmp' => $tmpkey, 'imgdata' => $imgString); $response = new JSONResponse(); $response->setData($resultData); return $response; } } } } }
/** * @NoAdminRequired */ public function showContact($id) { $id = $this->params('id'); $vcard = ContactsApp::getContactVCard($id); $oldaddressbookid = VCard::getAddressbookid($id); $addressBookPerm = Addressbook::find($oldaddressbookid); $editInfoCard = VCard::structureContact($vcard); $TELTYPE = ContactsApp::getTypesOfProperty('TEL'); $EMAILTYPE = ContactsApp::getTypesOfProperty('EMAIL'); $URLTYPE = ContactsApp::getTypesOfProperty('URL'); $ADRTYPE = ContactsApp::getTypesOfProperty('ADR'); $IMTYPE = ContactsApp::getIMOptions(); $aDefNArray = array('0' => 'lname', '1' => 'fname', '2' => 'anrede', '3' => 'title'); $aN = ''; if (isset($editInfoCard['N'][0]['value']) && count($editInfoCard['N'][0]['value']) > 0) { foreach ($editInfoCard['N'][0]['value'] as $key => $val) { if ($val != '') { $aN[$aDefNArray[$key]] = $val; } } } //X-ABSHOWAS; $bShowCompany = false; if (isset($editInfoCard['ORG'][0]['SHOWAS']) && $editInfoCard['ORG'][0]['SHOWAS'] == 'COMPANY') { $bShowCompany = true; } $aOrgDef = array('0' => 'firm', '1' => 'department'); $aOrg = array(); if (isset($editInfoCard['ORG'][0]['value']) && count($editInfoCard['ORG'][0]['value']) > 0) { foreach ($editInfoCard['ORG'][0]['value'] as $key => $val) { if ($val != '') { $aOrg[$aOrgDef[$key]] = $val; } } } $sBday = ''; if (isset($editInfoCard['BDAY'][0]['value']) && !empty($editInfoCard['BDAY'][0]['value'])) { $sBday = $editInfoCard['BDAY'][0]['value']; $date = new \DateTime($sBday); $sBday = $date->format('d. M Y'); } $sNotice = ''; if (isset($editInfoCard['NOTE'][0]['value']) && !empty($editInfoCard['NOTE'][0]['value'])) { $sNotice = stripcslashes($editInfoCard['NOTE'][0]['value']); $sNotice = str_replace("\n", '<br />', $sNotice); } $sNickname = ''; if (isset($editInfoCard['NICKNAME'][0]['value']) && !empty($editInfoCard['NICKNAME'][0]['value'])) { $sNickname = $editInfoCard['NICKNAME'][0]['value']; } $sPosition = ''; if (isset($editInfoCard['TITLE'][0]['value']) && !empty($editInfoCard['TITLE'][0]['value'])) { $sPosition = $editInfoCard['TITLE'][0]['value']; } $aAddr = ''; if (array_key_exists('ADR', $editInfoCard)) { $aAddr = $this->getAddressInfo($editInfoCard['ADR'], $ADRTYPE); } $aTel = ''; if (array_key_exists('TEL', $editInfoCard)) { $aTel = $this->getPhoneInfo($editInfoCard['TEL'], $TELTYPE); } $aEmail = ''; if (array_key_exists('EMAIL', $editInfoCard)) { $aEmail = $this->getEmailInfo($editInfoCard['EMAIL'], $EMAILTYPE); } $aUrl = ''; if (array_key_exists('URL', $editInfoCard)) { $aUrl = $this->getUrlInfo($editInfoCard['URL'], $URLTYPE); } $aImpp = ''; if (array_key_exists('IMPP', $editInfoCard)) { $aImpp = $this->getImppInfo($editInfoCard['IMPP'], $IMTYPE); } $aCloud = ''; if (array_key_exists('CLOUD', $editInfoCard)) { $aCloud = $this->getCloudInfo($editInfoCard['CLOUD'], $ADRTYPE); } $bPhoto = 0; $imgSrc = ''; $imgMimeType = ''; $tmpkey = 'editphoto'; $thumb = '<div id="noimage" class="ioc ioc-user"></div>'; if (isset($vcard->PHOTO)) { $bPhoto = 1; $thumb = ''; $image = new \OCP\Image(); $image->loadFromData((string) $vcard->PHOTO); $imgSrc = $image->__toString(); $imgMimeType = $image->mimeType(); \OC::$server->getCache()->remove($tmpkey); \OC::$server->getCache()->set($tmpkey, $image->data(), 600); } $catOutput = ''; if (isset($editInfoCard['CATEGORIES'][0]['value']) && count($editInfoCard['CATEGORIES'][0]['value']) > 0) { foreach ($editInfoCard['CATEGORIES'] as $key => $catInfo) { if ($key == 'value') { $aCatInfo = explode(',', $catInfo['value']); foreach ($aCatInfo as $key => $val) { $backgroundColor = ContactsApp::genColorCodeFromText(trim($val), 80); $color = ContactsApp::generateTextColor($backgroundColor); $catOutput .= '<span class="colorgroup toolTip" data-category="' . $val . '" style="background-color:' . $backgroundColor . ';color:' . $color . ';" title="' . $val . '">' . mb_substr($val, 0, 1, "UTF-8") . '</span> '; } } } } $addressBookName = $addressBookPerm['displayname']; $maxUploadFilesize = \OCP\Util::maxUploadFilesize('/'); $params = ['id' => $id, 'tmpkey' => $tmpkey, 'oldaddressbookid' => $oldaddressbookid, 'addressbooksPerm' => $addressBookPerm, 'isPhoto' => $bPhoto, 'thumbnail' => $thumb, 'categories' => $catOutput, 'addressbookname' => $addressBookName, 'bShowCompany' => $bShowCompany, 'imgsrc' => $imgSrc, 'imgMimeType' => $imgMimeType, 'anrede' => isset($aN['title']) ? $aN['title'] : '', 'fname' => isset($aN['fname']) ? $aN['fname'] : '', 'lname' => isset($aN['lname']) ? $aN['lname'] : '', 'firm' => isset($aOrg['firm']) ? $aOrg['firm'] : '', 'department' => isset($aOrg['department']) ? $aOrg['department'] : '', 'uploadMaxHumanFilesize' => \OCP\Util::humanFileSize($maxUploadFilesize), 'aTel' => isset($aTel) ? $aTel : '', 'aEmail' => isset($aEmail) ? $aEmail : '', 'aAddr' => isset($aAddr) ? $aAddr : '', 'aUrl' => isset($aUrl) ? $aUrl : '', 'aImpp' => isset($aImpp) ? $aImpp : '', 'aCloud' => isset($aCloud) ? $aCloud : '', 'sBday' => isset($sBday) ? $sBday : '', 'nickname' => isset($sNickname) ? $sNickname : '', 'position' => isset($sPosition) ? $sPosition : '', 'sNotice' => isset($sNotice) ? $sNotice : '']; $response = new TemplateResponse($this->appName, 'contact.show', $params, ''); return $response; }
/** * @NoAdminRequired */ public function showContact() { $id = $this->params('id'); $vcard = ContactsApp::getContactVCard($id); $oldaddressbookid = VCard::getAddressbookid($id); $addressBookPerm = Addressbook::find($oldaddressbookid); $editInfoCard = VCard::structureContact($vcard); $TELTYPE = ContactsApp::getTypesOfProperty('TEL'); $EMAILTYPE = ContactsApp::getTypesOfProperty('EMAIL'); $URLTYPE = ContactsApp::getTypesOfProperty('URL'); $ADRTYPE = ContactsApp::getTypesOfProperty('ADR'); $aDefNArray = array('0' => 'lname', '1' => 'fname', '2' => 'anrede', '3' => 'title'); $aN = ''; if (isset($editInfoCard['N'][0]['value']) && count($editInfoCard['N'][0]['value']) > 0) { foreach ($editInfoCard['N'][0]['value'] as $key => $val) { if ($val != '') { $aN[$aDefNArray[$key]] = $val; } } } $aOrgDef = array('0' => 'firm', '1' => 'department'); $aOrg = array(); if (isset($editInfoCard['ORG'][0]['value']) && count($editInfoCard['ORG'][0]['value']) > 0) { foreach ($editInfoCard['ORG'][0]['value'] as $key => $val) { if ($val != '') { $aOrg[$aOrgDef[$key]] = $val; } } } $sBday = ''; if (isset($editInfoCard['BDAY'][0]['value']) && !empty($editInfoCard['BDAY'][0]['value'])) { $sBday = $editInfoCard['BDAY'][0]['value']; $date = new \DateTime($sBday); $sBday = $date->format('d. M Y'); } $sNotice = ''; if (isset($editInfoCard['NOTE'][0]['value']) && !empty($editInfoCard['NOTE'][0]['value'])) { $sNotice = $editInfoCard['NOTE'][0]['value']; } $sNickname = ''; if (isset($editInfoCard['NICKNAME'][0]['value']) && !empty($editInfoCard['NICKNAME'][0]['value'])) { $sNickname = $editInfoCard['NICKNAME'][0]['value']; } $sPosition = ''; if (isset($editInfoCard['TITLE'][0]['value']) && !empty($editInfoCard['TITLE'][0]['value'])) { $sPosition = $editInfoCard['TITLE'][0]['value']; } $aAddr = ''; if (array_key_exists('ADR', $editInfoCard)) { $aAddr = $this->getAddressInfo($editInfoCard['ADR'], $ADRTYPE); } $aTel = ''; if (array_key_exists('TEL', $editInfoCard)) { $aTel = $this->getPhoneInfo($editInfoCard['TEL'], $TELTYPE); } $aEmail = ''; if (array_key_exists('EMAIL', $editInfoCard)) { $aEmail = $this->getEmailInfo($editInfoCard['EMAIL'], $EMAILTYPE); } $aUrl = ''; if (array_key_exists('URL', $editInfoCard)) { $aUrl = $this->getUrlInfo($editInfoCard['URL'], $URLTYPE); } $bPhoto = 0; $imgSrc = ''; $imgMimeType = ''; $thumb = '<div id="noimage" class="ioc ioc-user"></div>'; if (isset($vcard->PHOTO)) { $bPhoto = 1; $thumb = ''; $image = new \OCP\Image(); $image->loadFromData((string) $vcard->PHOTO); $imgSrc = $image->__toString(); $imgMimeType = $image->mimeType(); \OC::$server->getCache()->set('show-contacts-foto-' . $id, $image->data(), 600); } $maxUploadFilesize = \OCP\Util::maxUploadFilesize('/'); $params = ['id' => $id, 'tmpkey' => 'show-contacts-foto-' . $id, 'oldaddressbookid' => $oldaddressbookid, 'addressbooksPerm' => $addressBookPerm, 'isPhoto' => $bPhoto, 'thumbnail' => $thumb, 'imgsrc' => $imgSrc, 'imgMimeType' => $imgMimeType, 'anrede' => isset($aN['title']) ? $aN['title'] : '', 'fname' => isset($aN['fname']) ? $aN['fname'] : '', 'lname' => isset($aN['lname']) ? $aN['lname'] : '', 'firm' => isset($aOrg['firm']) ? $aOrg['firm'] : '', 'department' => isset($aOrg['department']) ? $aOrg['department'] : '', 'uploadMaxHumanFilesize' => \OCP\Util::humanFileSize($maxUploadFilesize), 'aTel' => isset($aTel) ? $aTel : '', 'aEmail' => isset($aEmail) ? $aEmail : '', 'aAddr' => isset($aAddr) ? $aAddr : '', 'aUrl' => isset($aUrl) ? $aUrl : '', 'sBday' => isset($sBday) ? $sBday : '', 'nickname' => isset($sNickname) ? $sNickname : '', 'position' => isset($sPosition) ? $sPosition : '', 'sNotice' => isset($sNotice) ? $sNotice : '']; $response = new TemplateResponse($this->appName, 'contact.show', $params, ''); return $response; }