| | |
| | | namespace JVBase\blocks; |
| | | |
| | | use DateTime; |
| | | use JVBase\helpers\Events; |
| | | use JVBase\managers\Cache; |
| | | use JVBase\meta\Meta; |
| | | use JVBase\registrar\Registrar; |
| | |
| | | $title .= sprintf( |
| | | ' %s %s', |
| | | is_tax() ? 'happening on' : 'in', |
| | | $this->getMonthName((int)$this->has('emonth')), |
| | | Events::getMonthName((int)$this->has('emonth')), |
| | | ); |
| | | } |
| | | if ($this->has('eday')) { |
| | |
| | | } |
| | | if (!empty($out)) { |
| | | $content = sprintf( |
| | | '<ul class="term-list content"><li class="label">Content:</li>%s</ul>', |
| | | '<details class="content row start"><summary>%sBy Content</summary><ul class="term-list content">%s</ul></details>', |
| | | jvbIcon('calendar-alt'), |
| | | implode('', $out) |
| | | ); |
| | | } |
| | |
| | | } |
| | | } |
| | | if (!empty($out)) { |
| | | $inst = Registrar::getInstance($slug); |
| | | $taxonomies .= sprintf( |
| | | '<ul class="term-list row start %s"><li class="label">%s</li>%s</ul>', |
| | | '<details class="%s row start"><summary>%sBy %s</summary><ul class="term-list row start %s">%s</ul></details>', |
| | | $inst->getSlug(), |
| | | jvbIcon($inst->getIcon()??'folder'), |
| | | $inst->getSingular(), |
| | | $slug, |
| | | $title, |
| | | implode('', $out) |
| | | ); |
| | | } |
| | |
| | | |
| | | $dates = $this->getDateNavigation(); |
| | | |
| | | if (!is_post_type_archive($this->content[0]) || $this->isDatedArchive()) { |
| | | if (!is_post_type_archive($this->firstContent()) || $this->isDatedArchive()) { |
| | | echo sprintf( |
| | | '<a href="%s" class="btn chip">All Events</a>', |
| | | get_post_type_archive_link($this->content[0]) |
| | | get_post_type_archive_link($this->firstContent()) |
| | | ); |
| | | } |
| | | if (!empty($content) || !empty($taxonomies) || !empty($dates)) { |
| | |
| | | |
| | | foreach ($months as $month => $days) { |
| | | $m = intval($month); |
| | | $monthName = $this->getMonthName($m); |
| | | $monthName = Events::getMonthName($m); |
| | | |
| | | $out .= sprintf( |
| | | '<li><a href="%s/%d/%s" title="View all posts in %s, %d">%s</a></li>', |
| | |
| | | $events = implode('', array_map([$this, 'formatItem'], $items->posts)); |
| | | |
| | | $events = empty($events) ? '<p class="empty">Nothing here yet</p>' : sprintf( |
| | | '<ul class="item-list">%s</ul>', |
| | | '<ul class="item-list col">%s</ul>', |
| | | $events |
| | | ); |
| | | $total = $items->max_num_pages; |
| | |
| | | 'post_status' => 'publish', |
| | | 'orderby' => 'meta_value', |
| | | 'meta_key' => BASE.'date_start', |
| | | 'order' => 'ASC', |
| | | 'meta_type' => 'DATETIME', |
| | | 'posts_per_page'=> 30, |
| | | 'fields' => 'ids', |
| | |
| | | { |
| | | $meta = Meta::forPost($ID); |
| | | $type = jvbNoBase(get_post_type($ID)); |
| | | if (empty($meta->get('date_start'))) { |
| | | return ''; |
| | | } |
| | | $date = strtotime($meta->get('date_start')); |
| | | $img = empty($meta->get('post_thumbnail')) ? '' : jvbFormatImage($meta->get('post_thumbnail'), 'tiny', 'medium'); |
| | | $fields = $meta->getAll(); |
| | | return sprintf( |
| | | '<li class="item %s"> |
| | | %s |
| | | %s |
| | | <div class="row start header"> |
| | | %s |
| | | <h3> |
| | | <a href="%s" title="Learn More">%s</a> |
| | | <small><time datetime="%s">%s</time></small> |
| | | </h3> |
| | | </div> |
| | | <div class="meta"> |
| | | <p>%s</p> |
| | | %s |
| | | %s |
| | | </div> |
| | | %s |
| | | </li>', |
| | | $type, |
| | | empty($meta->get('post_thumbnail')) ? '' : jvbFormatImage($meta->get('post_thumbnail'), 'tiny', 'medium'), |
| | | Events::tags($fields), |
| | | $img, |
| | | Events::calendarDay($fields['date_start']), |
| | | get_the_permalink($ID), |
| | | $meta->get('post_title'), |
| | | date('c', $date), |
| | | date('F j, Y', $date), |
| | | Events::formatDay($meta->get('date_start'), $meta->get('time_start'), $meta->get('time_end')), |
| | | Events::location($fields), |
| | | Events::terms($fields, false), |
| | | empty($meta->get('post_excerpt')) ? '' : wpautop($meta->get('post_excerpt')) |
| | | ); |
| | | } |
| | |
| | | false; |
| | | } |
| | | |
| | | protected function getMonthName(int $num):string |
| | | |
| | | protected function firstContent():string |
| | | { |
| | | return match($num) { |
| | | 1 => 'January', |
| | | 2 => 'February', |
| | | 3 => 'March', |
| | | 4 => 'April', |
| | | 5 => 'May', |
| | | 6 => 'June', |
| | | 7 => 'July', |
| | | 8 => 'August', |
| | | 9 => 'September', |
| | | 10 => 'October', |
| | | 11 => 'November', |
| | | 12 => 'December', |
| | | }; |
| | | return array_keys($this->content)[0]??''; |
| | | } |
| | | } |