/** * Formats a card. * * @param \Libreworks\Microformats\Card $card The card to format * @return string The HTML markup */ public function format(Card $card) { $tags = []; $name = $card->getName(); $fullName = $card->getFullName(); if ($name !== null) { $tags[] = '<dt>Name</dt><dd><span class="p-name">' . $this->nameFormatter->format($name) . '</span></dd>'; } elseif (strlen($fullName) > 0) { $tags[] = '<dt>Name</dt><dd><span class="p-name">' . htmlspecialchars($fullName) . '</span></dd>'; } $photo = $card->getPhoto(); if ($photo !== null) { $tags[] = '<dt>Photo</dt><dd><img class="u-photo" src="' . htmlspecialchars($photo) . '" alt="Photo" /></dd></span>'; } $logo = $card->getLogo(); if ($logo !== null) { $tags[] = '<dt>Logo</dt><dd><img class="u-logo" src="' . htmlspecialchars($logo) . '" alt="Logo" /></dd></span>'; } $address = $card->getAddress(); if ($address !== null) { $tags[] = '<dt>Address</dt><dd class="p-adr">' . $this->addressFormatter->format($address) . '</dd>'; } $tel = $card->getTel(); if (strlen($tel) > 0) { $tags[] = '<dt>Phone</dt><dd><a href="tel:' . preg_replace('/[^0-9\\+]/', '', $tel) . '" class="p-tel">' . htmlspecialchars($tel) . '</a></dd>'; } $email = $card->getEmail(); if (strlen($email) > 0) { $tags[] = '<dt>Email</dt><dd><a href="mailto:' . htmlspecialchars($email) . '" class="u-email">' . htmlspecialchars($email) . '</a></dd>'; } $url = $card->getUrl(); if (strlen($url) > 0) { $tags[] = '<dt>Homepage</dt><dd><a href="' . htmlspecialchars($url) . '" class="u-url>' . htmlspecialchars($url) . '</a></dd>'; } $impp = $card->getImpp(); if (strlen($impp) > 0) { $tags[] = '<dt>IMPP</dt><dd><a href="' . htmlspecialchars($impp) . '" class="u-impp">' . htmlspecialchars($impp) . '</a></dd>'; } $org = $card->getOrg(); $orgName = $card->getOrgName(); if ($org !== null) { $tags[] = '<dt>Organization</dt><dd class="p-org">' . $this->format($org) . '</dd>'; } elseif (strlen($orgName) > 0) { $tags[] = '<dt>Organization</dt><dd><span class="p-org p-organization-name">' . htmlspecialchars($orgName) . '</span></dd>'; } $title = $card->getTitle(); if (strlen($title) > 0) { $tags[] = '<dt>Title</dt><dd><span class="p-job-title">' . htmlspecialchars($title) . '</span></dd>'; } $role = $card->getRole(); if (strlen($role) > 0) { $tags[] = '<dt>Role</dt><dd><span class="p-role">' . htmlspecialchars($role) . '</span></dd>'; } $sex = $card->getSex(); if (strlen($sex) > 0) { $tags[] = '<dt>Sex</dt><dd><span class="p-sex">' . htmlspecialchars($role) . '</span></dd>'; } $gender = $card->getGender(); if (strlen($gender) > 0) { $tags[] = '<dt>Gender</dt><dd><span class="p-gender">' . htmlspecialchars($gender) . '</span></dd>'; } $birthday = $card->getBirthday(); if ($birthday !== null) { $tags[] = '<dt>Birthday</dt><dd><time class="dt-bday" datetime="' . $birthday->format('Y-m-d') . '">' . $birthday->format('F j, Y') . '</time></dd>'; } $anniversary = $card->getAnniversary(); if ($anniversary !== null) { $tags[] = '<dt>Anniversary</dt><dd><time class="dt-anniversary" datetime="' . $anniversary->format('Y-m-d') . '">' . $anniversary->format('F j, Y') . '</time></dd>'; } $key = $card->getKey(); if (strlen($key) > 0) { $tags[] = '<dt>Public Key</dt><dd><span class="u-key">' . htmlspecialchars($key) . '</span></dd>'; } $category = $card->getCategory(); if (strlen($category) > 0) { $tags[] = '<dt>Category</dt><dd><span class="p-category">' . htmlspecialchars($category) . '</span></dd>'; } $note = $card->getNote(); if (strlen($note) > 0) { $tags[] = '<dt>Note</dt><dd><div class="p-note">' . htmlspecialchars($note) . '</div></dd>'; } return '<dl class="h-card">' . implode(' ', $tags) . '</dl>'; }