connect('post')->connect('taxonomy')->connect('user'); $cached = $cache->get($ID); if ($cached) { return $cached; } $meta = match ($type) { 'term' => Meta::forTerm($ID), 'post' => Meta::forPost($ID), 'user' => Meta::forUser($ID), default => false }; if (!$type) { return ''; } $out = ''; $avg = $meta->get('average_rating'); $total = $meta->get('total_ratings'); if ($avg !== 'none') { $out .= jvbFormatStarRating($avg, (int)$total); } $cache->set($ID, $out); return $out; } function jvbFormatStarRating(string $rating, int $total = 0):string { $out = '
'; return $out; } /** * gets all the image links together and stores them * @param int $imgID * * @return array */ function jvbImageData(int $imgID):array { $image = new Image(); return $image->getImageData($imgID); } function formatJSONField(mixed $value): string|bool|null { if (empty($value)) { return null; } // If already a JSON string, validate it if (is_string($value)) { json_decode($value); if (json_last_error() === JSON_ERROR_NONE) { return $value; } } // If array or object, encode it if (is_array($value) || is_object($value)) { return json_encode($value); } // If not valid for JSON, return null return null; } function jvbCurrency(string $number) { if ($number === '') { $number = 0; } if (!is_numeric($number)) { return $number; } $number = number_format($number, 2); list($dollars, $cents) = explode('.', $number); return '$'.$dollars.'.'.$cents.''; } function jvbMailToLink(string $emailTo, string $subject = 'Contact from Website', string $message = '', bool $icon = true, ?string $linkText = null ):string { if (!is_email($emailTo)) { return ''; } $link = 'mailto:'.$emailTo.'?subject='.rawurlencode($subject); if ($message !== '') { $link .= '&body='.rawurlencode($message); } return $link; } function jvbTextLink(int $phoneNumber, string $message=''):string { $length =strlen((string)$phoneNumber); if ($length < 10 || $length > 10) { return ''; } $link = 'sms:+1'.$phoneNumber; if ($message !== '') { $link .= '?body='.rawurlencode($message); } return $link; } function jvbPhoneLink(int $phoneNumber):string { $length =strlen((string)$phoneNumber); if ($length < 10 || $length > 10) { return ''; } return 'tel:+1'.$phoneNumber; } function jvbFormatString(string $string):string { return html_entity_decode($string); }