/**
  * @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)
 {
     $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 = $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);
     }
     $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 = uniqid('photo-');
     $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($tmpkey, $image->data(), 600);
     }
     $maxUploadFilesize = \OCP\Util::maxUploadFilesize('/');
     $params = ['id' => $id, 'tmpkey' => $tmpkey, 'oldaddressbookid' => $oldaddressbookid, 'addressbooksPerm' => $addressBookPerm, 'isPhoto' => $bPhoto, 'thumbnail' => $thumb, '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;
 }