| | |
| | | <?php |
| | | |
| | | use JVBase\managers\Cache; |
| | | use JVBase\meta\Meta; |
| | | use JVBase\utility\Image; |
| | | |
| | | if (!defined('ABSPATH')) { |
| | | exit; |
| | | } |
| | |
| | | |
| | | /** |
| | | * @param int $ID |
| | | * @param JVBase\meta\MetaManager|null $meta |
| | | * |
| | | * @param string $type 'post', 'user', or 'term' |
| | | * @return string |
| | | */ |
| | | function jvbFormatRating(int $ID, JVBase\meta\MetaManager|null $meta = null):string |
| | | function jvbFormatRating(int $ID, string $type = 'post'):string |
| | | { |
| | | $cache = new JVBase\managers\CacheManager('bio-'.$ID, WEEK_IN_SECONDS); |
| | | $key = 'rating'; |
| | | $cached = $cache->get($key); |
| | | $cached = false; |
| | | $cache = Cache::for('rating', WEEK_IN_SECONDS)->connect('post')->connect('taxonomy')->connect('user'); |
| | | |
| | | $cached = $cache->get($ID); |
| | | if ($cached) { |
| | | return $cached; |
| | | } |
| | | |
| | | if (!$meta) { |
| | | if (term_exists((int)$ID)) { |
| | | $type = 'term'; |
| | | } elseif (get_post_status((int)$ID)) { |
| | | $type = 'post'; |
| | | } else { |
| | | $type = 'user'; |
| | | } |
| | | $meta = new JVBase\meta\MetaManager($ID, $type); |
| | | } |
| | | $meta = match ($type) { |
| | | 'term' => Meta::forTerm($ID), |
| | | 'post' => Meta::forPost($ID), |
| | | 'user' => Meta::forUser($ID), |
| | | default => false |
| | | }; |
| | | if (!$type) { |
| | | return ''; |
| | | } |
| | | |
| | | |
| | | $out = ''; |
| | | $avg = $meta->getValue('average_rating'); |
| | | $avg = $meta->get('average_rating'); |
| | | |
| | | $total = $meta->getValue('total_ratings'); |
| | | $total = $meta->get('total_ratings'); |
| | | if ($avg !== 'none') { |
| | | $out .= jvbFormatStarRating($avg, (int)$total); |
| | | } |
| | | |
| | | $cache->set($key, $out); |
| | | $cache->set($ID, $out); |
| | | return $out; |
| | | } |
| | | |
| | |
| | | */ |
| | | function jvbImageData(int $imgID):array |
| | | { |
| | | $cache = new JVBase\managers\CacheManager('image_data', WEEK_IN_SECONDS); |
| | | $cached = $cache->get($imgID); |
| | | if ($cached) { |
| | | return $cached; |
| | | } |
| | | |
| | | if (!wp_get_attachment_image($imgID, 'tiny')) { |
| | | return []; |
| | | } |
| | | $image = [ |
| | | 'tiny' => wp_get_attachment_image_src($imgID, 'tiny')[0], |
| | | 'small' => wp_get_attachment_image_src($imgID, 'medium')[0], |
| | | 'medium' => wp_get_attachment_image_src($imgID, 'large')[0], |
| | | 'large' => wp_get_attachment_image_src($imgID, 'full')[0], |
| | | 'alt' => get_post_meta($imgID, '_wp_attachment_image_alt', true), |
| | | 'title' => get_the_title($imgID), |
| | | 'caption' => get_the_excerpt($imgID), |
| | | ]; |
| | | $cache->set($imgID, $image); |
| | | return $image; |
| | | $image = new Image(); |
| | | return $image->getImageData($imgID); |
| | | } |
| | | |
| | | |
| | |
| | | list($dollars, $cents) = explode('.', $number); |
| | | return '$'.$dollars.'.<span>'.$cents.'</span>'; |
| | | } |
| | | |
| | | 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); |
| | | } |