HcardHelper.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. App::uses('AppHelper', 'View/Helper');
  3. /**
  4. * Helper for hcard, vcard and other microformats!
  5. *
  6. * TODO: import http://codeigniter.com/wiki/microformats/
  7. */
  8. class HcardHelper extends AppHelper {
  9. protected $_defaults = [
  10. 'given_name' => 'Firstname',
  11. 'middle_name' => 'Middlename',
  12. 'family_name' => 'Lastname',
  13. 'organization' => 'OrganizationName',
  14. 'street' => '123 Street',
  15. 'city' => 'City',
  16. 'province' => 'Province/State',
  17. 'postal_code' => 'Postal/Zip',
  18. 'country' => 'Country',
  19. 'phone' => 'phonenumber',
  20. 'email' => 'email@yoursite.com',
  21. 'url' => 'http://yoursite.com',
  22. 'aim_screenname' => 'aimname',
  23. 'yim_screenname' => 'yimname',
  24. 'avatar' => '/images/your_photo.png',
  25. 'title' => 'title',
  26. ];
  27. /**
  28. * @param array $data
  29. *
  30. * @return string HTML
  31. */
  32. public function addressFormatHtml(array $data = [], $format = 'General') {
  33. if (!$data) {
  34. $data = $this->_defaults;
  35. }
  36. $text = '';
  37. $text .= '<div id="hcard-' . $data['given_name'] . '-' . $data['family_name'] . '" class="vcard">';
  38. $text .= '<span class="fn">' . $data['given_name'] . ' ' . $data['family_name'] . '</span>';
  39. $text .= $this->address($data, $format);
  40. $text .= '</div>';
  41. return $text;
  42. }
  43. /**
  44. * @param array $data
  45. *
  46. * @return string
  47. */
  48. public function addressFormatRaw(array $data = [], $format = 'General') {
  49. if (!$data) {
  50. $data = $this->_defaults;
  51. }
  52. $text = $data['given_name'] . ' ' . $data['family_name'] . "\n";
  53. $text .= $data['street'] . "\n";
  54. if (Configure::read('Localization.addressFormat') === 'US') {
  55. $text .= $data['city'] . ', ' . $data['province'] . ' ' . $data['postal_code'] . "\n";
  56. } else {
  57. $text .= $data['postal_code'] . ' ' . $data['city'] . "\n";
  58. }
  59. $text .= $data['country'];
  60. return $text;
  61. }
  62. /**
  63. * @param array $data
  64. *
  65. * @return string
  66. */
  67. public function address(array $data = []) {
  68. if (!$data) {
  69. $data = $this->_defaults;
  70. }
  71. $text = '<div class="adr">';
  72. $text .= '<div class="street-address">' . $data['street'] . '</div> ';
  73. $text .= '<span class="locality">' . $data['city'] . '</span>, ';
  74. if (!empty($data['province'])) {
  75. $text .= '<span class="region">' . $data['province'] . '</span> ';
  76. }
  77. $text .= '<span class="postal-code">' . $data['postal_code'] . '</span> ';
  78. $text .= '<span class="country-name">' . $data['country'] . '</span> ';
  79. $text .= '</div>';
  80. return $text;
  81. }
  82. }