| | |
| | | <?php |
| | | use JVBase\utility\Image; |
| | | |
| | | function ajv_render_core_site_logo(array $block, string $content):string |
| | | use JVBase\managers\Cache; |
| | | use JVBase\meta\Meta; |
| | | use JVBase\registrar\Registrar; |
| | | |
| | | function ajv_prerender_core_site_logo(array $block, ?string $content):?string |
| | | { |
| | | $open = $close = ''; |
| | | |
| | |
| | | return $open.$icons.$close; |
| | | } |
| | | |
| | | function ajv_render_core_cover(array $block, string $content):string |
| | | function ajv_prerender_core_cover(array $block, ?string $content, ?WP_Block $parent):?string |
| | | { |
| | | $types = array_map(function($type) { |
| | | return BASE.$type; |
| | | }, array_keys(JVB_CONTENT)); |
| | | if (!is_post_type_archive($types)) { |
| | | return JVB()->blocks()->render_core_cover($block); |
| | | $types = array_map(function($type) { return jvbCheckBase($type); }, Registrar::getRegistered('post')); |
| | | $taxTypes = array_map(function($type) { return jvbCheckBase($type); }, Registrar::getRegistered('term')); |
| | | |
| | | $type = null; |
| | | if (is_post_type_archive($types)) { |
| | | $obj = get_queried_object(); |
| | | $type = jvbNoBase($obj->name); |
| | | |
| | | } else if (is_tax($taxTypes)) { |
| | | $obj = get_queried_object(); |
| | | $type = jvbNoBase($obj->taxonomy); |
| | | } |
| | | $obj = get_queried_object(); |
| | | foreach ($types as $type) { |
| | | if ($type === $obj->name) { |
| | | $type = jvbNoBase($type); |
| | | $function = 'ajv_render_'.$type.'_cover'; |
| | | return '<section class="align-full cover alt '.$type.'">'.call_user_func($function).'</section>'; |
| | | if (is_singular($types)) { |
| | | if (!$type) { |
| | | $type = jvbNoBase(get_queried_object()->post_type); |
| | | } |
| | | $registrar = Registrar::getInstance($type); |
| | | |
| | | if (!$registrar) { |
| | | return JVB()->blocks()->prerender_core_cover($block, null, null); |
| | | } |
| | | |
| | | $ID = get_the_ID(); |
| | | $imgID = get_post_thumbnail_id($ID); |
| | | $img = ''; |
| | | if ($imgID && $imgID > 0) { |
| | | $img = str_replace('<img', '<img style="object-fit:center"',jvbFormatImage($imgID, 'tiny', 'large', false)) ; |
| | | } |
| | | |
| | | $singular = $registrar->getSingular(); |
| | | $header = match($type) { |
| | | 'art' => 'Canadian made Art.<br>Made in Edmonton.', |
| | | 'design' => 'Canadian Design in Edmonton.', |
| | | 'development'=> 'Canadian Development in Edmonton.', |
| | | 'strategy' => 'Canadian Brand Strategy based in Edmonton, Alberta.', |
| | | 'writing' => 'Canadian Content Writing.<br>From Edmonton, Alberta.', |
| | | 'project' => 'Canadian-based Projects.' |
| | | }; |
| | | |
| | | $title = get_the_title(); |
| | | |
| | | $title = '<small>'.$header.'</small>'.$title; |
| | | |
| | | |
| | | $date = '<small><time datetime="'.get_the_date('c').'" itemprop="datePublished">'.get_the_date().'</time></small>'; |
| | | |
| | | |
| | | return sprintf( |
| | | '<section class="btm right align-full cover row"> |
| | | %s |
| | | <div class="content"> |
| | | <h1>%s</h1> |
| | | %s |
| | | </div> |
| | | </section>', |
| | | $img, |
| | | $title, |
| | | $date |
| | | ); |
| | | } |
| | | return JVB()->blocks()->render_core_cover($block); |
| | | if (!$type) { |
| | | return JVB()->blocks()->prerender_core_cover($block, null, null); |
| | | } |
| | | $cache = Cache::for('jakevanIcons'); |
| | | |
| | | $icon = $cache->remember( |
| | | $type, |
| | | function () use ($type) { |
| | | return file_get_contents(AJV_DIR.'/assets/icons/jakevan-does-'.$type.'.svg'); |
| | | } |
| | | ); |
| | | |
| | | return sprintf( |
| | | '<section class="bottom left align-full cover alt %s row">%s</section>', |
| | | $type, |
| | | $icon |
| | | ); |
| | | } |
| | | |
| | | function ajv_get_limited_posts(string $type, int $limit):array { |
| | |
| | | },$posts->posts); |
| | | } |
| | | |
| | | function ajv_get_limited_post_images(array $args, bool $includeImages = false, int $limit = 3):array { |
| | | $posts = new WP_Query([ |
| | | 'posts_per_page' => $limit, |
| | | 'post_status' => 'publish', |
| | | 'fields' => 'ids', |
| | | ... $args |
| | | ]); |
| | | return array_map(function($item) use ($includeImages) { |
| | | $aOpen = $includeImages ? sprintf('<a href="%s" class="%s">', get_the_permalink($item), jvbNoBase(get_post_type($item))) : ''; |
| | | $aClose = $includeImages ? '</a>' : ''; |
| | | |
| | | return $aOpen.jvbFormatImage(get_post_thumbnail_id($item), 'tiny', 'large', false).$aClose; |
| | | },$posts->posts); |
| | | } |
| | | |
| | | function ajv_render_art_cover():string |
| | | { |
| | | $get = 4; |
| | |
| | | $out .= '<div>'.$img. '</div>'; |
| | | } |
| | | return $out; |
| | | } |
| | | |
| | | function ajv_prerender_core_post_title(array $block, ?string $content):string |
| | | { |
| | | if (!ajv_is_singular()){ |
| | | return JVB()->blocks()->prerender_core_post_title($block, $content, null); |
| | | } |
| | | $ID = get_the_ID(); |
| | | $city = get_the_terms($ID, BASE.'city'); |
| | | if ($city && !is_wp_error($city)) { |
| | | $city = $city[0]->name; |
| | | } else { |
| | | $city ='Edmonton'; |
| | | } |
| | | $registrar = Registrar::getInstance(get_post_type($ID)); |
| | | if (!$registrar) { |
| | | return JVB()->blocks()->prerender_core_post_title($block, $content, null); |
| | | } |
| | | |
| | | $form = get_the_terms($ID, BASE.'form'); |
| | | if ($form && !is_wp_error($form)){ |
| | | $form = $form[0]->name.' '; |
| | | } else { |
| | | $form = ''; |
| | | } |
| | | |
| | | $title = get_the_title($ID); |
| | | |
| | | return sprintf( |
| | | '<h1><small>Canadian made %s%s. Made in %s.</small>%s</h1>', |
| | | $form, |
| | | $registrar->getPlural(), |
| | | $city, |
| | | $title |
| | | ); |
| | | |
| | | } |