Spade
Mini Shell
| Directory:~$ /proc/self/root/home/lmsyaran/www/joomla5/components/com_contact/src/View/Contact/ |
| [Home] [System Details] [Kill Me] |
<?php
/**
* @package Joomla.Site
* @subpackage com_contact
*
* @copyright (C) 2010 Open Source Matters, Inc.
<https://www.joomla.org>
* @license GNU General Public License version 2 or later; see
LICENSE.txt
*/
namespace Joomla\Component\Contact\Site\View\Contact;
use Joomla\CMS\Factory;
use Joomla\CMS\MVC\View\AbstractView;
use Joomla\CMS\MVC\View\GenericDataException;
// phpcs:disable PSR1.Files.SideEffects
\defined('_JEXEC') or die;
// phpcs:enable PSR1.Files.SideEffects
/**
* View to create a VCF for a contact item
*
* @since 1.6
*/
class VcfView extends AbstractView
{
/**
* The contact item
*
* @var \stdClass
*/
protected $item;
/**
* Execute and display a template script.
*
* @param string $tpl The name of the template file to parse;
automatically searches through the template paths.
*
* @return void
*
* @throws GenericDataException
*/
public function display($tpl = null)
{
// Get model data.
$item = $this->get('Item');
// Check for errors.
if (\count($errors = $this->get('Errors'))) {
throw new GenericDataException(implode("\n",
$errors), 500);
}
$this->getDocument()->setMimeEncoding('text/directory',
true);
// Compute lastname, firstname and middlename
$item->name = trim($item->name);
// "Lastname, Firstname Middlename" format support
// e.g. "de Gaulle, Charles"
$namearray = explode(',', $item->name);
if (\count($namearray) > 1) {
$lastname = $namearray[0];
$card_name = $lastname;
$name_and_midname = trim($namearray[1]);
$firstname = '';
if (!empty($name_and_midname)) {
$namearray = explode(' ', $name_and_midname);
$firstname = $namearray[0];
$middlename = (\count($namearray) > 1) ? $namearray[1] :
'';
$card_name = $firstname . ' ' . ($middlename ?
$middlename . ' ' : '') . $card_name;
}
} else {
// "Firstname Middlename Lastname" format support
$namearray = explode(' ', $item->name);
$middlename = (\count($namearray) > 2) ? $namearray[1] :
'';
$firstname = array_shift($namearray);
$lastname = \count($namearray) ? end($namearray) :
'';
$card_name = $firstname . ($middlename ? ' ' .
$middlename : '') . ($lastname ? ' ' . $lastname :
'');
}
$rev = date('c', strtotime($item->modified));
Factory::getApplication()->setHeader('Content-disposition',
'attachment; filename="' . $card_name .
'.vcf"', true);
$vcard = [];
$vcard[] = 'BEGIN:VCARD';
$vcard[] = 'VERSION:3.0';
$vcard[] = 'N:' . $lastname . ';' . $firstname
. ';' . $middlename;
$vcard[] = 'FN:' . $item->name;
$vcard[] = 'TITLE:' . $item->con_position;
$vcard[] = 'TEL;TYPE=WORK,VOICE:' . $item->telephone;
$vcard[] = 'TEL;TYPE=WORK,FAX:' . $item->fax;
$vcard[] = 'TEL;TYPE=WORK,MOBILE:' . $item->mobile;
$vcard[] = 'ADR;TYPE=WORK:;;' . $item->address .
';' . $item->suburb . ';' . $item->state .
';' . $item->postcode . ';' . $item->country;
$vcard[] = 'LABEL;TYPE=WORK:' . $item->address .
"\n" . $item->suburb . "\n" . $item->state .
"\n" . $item->postcode . "\n" . $item->country;
$vcard[] = 'EMAIL;TYPE=PREF,INTERNET:' .
$item->email_to;
$vcard[] = 'URL:' . $item->webpage;
$vcard[] = 'REV:' . $rev . 'Z';
$vcard[] = 'END:VCARD';
echo implode("\n", $vcard);
}
}