/components/com_contact/views/contact/view.vcf.php

https://bitbucket.org/eternaware/joomus · PHP · 95 lines · 62 code · 16 blank · 17 comment · 4 complexity · 9dd778de36136b55ce9fbe0e23b38952 MD5 · raw file

  1. <?php
  2. /**
  3. * @package Joomla.Site
  4. * @subpackage com_contact
  5. *
  6. * @copyright Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved.
  7. * @license GNU General Public License version 2 or later; see LICENSE.txt
  8. */
  9. defined('_JEXEC') or die;
  10. /**
  11. * @package Joomla.Site
  12. * @subpackage com_contact
  13. */
  14. class ContactViewContact extends JViewLegacy
  15. {
  16. protected $state;
  17. protected $item;
  18. public function display()
  19. {
  20. // Get model data.
  21. $state = $this->get('State');
  22. $item = $this->get('Item');
  23. // Check for errors.
  24. if (count($errors = $this->get('Errors'))) {
  25. JError::raiseWarning(500, implode("\n", $errors));
  26. return false;
  27. }
  28. $doc = JFactory::getDocument();
  29. $doc->setMetaData('Content-Type', 'text/directory', true);
  30. $app = JFactory::getApplication();
  31. $params = $app->getParams();
  32. $user = JFactory::getUser();
  33. $dispatcher = JEventDispatcher::getInstance();
  34. // Compute lastname, firstname and middlename
  35. $item->name = trim($item->name);
  36. // "Lastname, Firstname Midlename" format support
  37. // e.g. "de Gaulle, Charles"
  38. $namearray = explode(',', $item->name);
  39. if (count($namearray) > 1 ) {
  40. $lastname = $namearray[0];
  41. $card_name = $lastname;
  42. $name_and_midname = trim($namearray[1]);
  43. $firstname = '';
  44. if (!empty($name_and_midname)) {
  45. $namearray = explode(' ', $name_and_midname);
  46. $firstname = $namearray[0];
  47. $middlename = (count($namearray) > 1) ? $namearray[1] : '';
  48. $card_name = $firstname . ' ' . ($middlename ? $middlename . ' ' : '') . $card_name;
  49. }
  50. }
  51. // "Firstname Middlename Lastname" format support
  52. else {
  53. $namearray = explode(' ', $item->name);
  54. $middlename = (count($namearray) > 2) ? $namearray[1] : '';
  55. $firstname = array_shift($namearray);
  56. $lastname = count($namearray) ? end($namearray) : '';
  57. $card_name = $firstname . ($middlename ? ' ' . $middlename : '') . ($lastname ? ' ' . $lastname : '');
  58. }
  59. $rev = date('c', strtotime($item->modified));
  60. JResponse::setHeader('Content-disposition', 'attachment; filename="'.$card_name.'.vcf"', true);
  61. $vcard = array();
  62. $vcard[] .= 'BEGIN:VCARD';
  63. $vcard[] .= 'VERSION:3.0';
  64. $vcard[] = 'N:'.$lastname.';'.$firstname.';'.$middlename;
  65. $vcard[] = 'FN:'. $item->name;
  66. $vcard[] = 'TITLE:'.$item->con_position;
  67. $vcard[] = 'TEL;TYPE=WORK,VOICE:'.$item->telephone;
  68. $vcard[] = 'TEL;TYPE=WORK,FAX:'.$item->fax;
  69. $vcard[] = 'TEL;TYPE=WORK,MOBILE:'.$item->mobile;
  70. $vcard[] = 'ADR;TYPE=WORK:;;'.$item->address.';'.$item->suburb.';'.$item->state.';'.$item->postcode.';'.$item->country;
  71. $vcard[] = 'LABEL;TYPE=WORK:'.$item->address."\n".$item->suburb."\n".$item->state."\n".$item->postcode."\n".$item->country;
  72. $vcard[] = 'EMAIL;TYPE=PREF,INTERNET:'.$item->email_to;
  73. $vcard[] = 'URL:'.$item->webpage;
  74. $vcard[] = 'REV:'.$rev.'Z';
  75. $vcard[] = 'END:VCARD';
  76. echo implode("\n", $vcard);
  77. return true;
  78. }
  79. }