From 47e77f9fac1155c536b2b87fec552c7fcce66fa6 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Mon, 01 Jun 2026 18:06:34 +0000
Subject: [PATCH] =Timeline block fixes. Next up: adding article schema classes
---
inc/registrar/config/seo/Meta.php | 66 ++++++++++++++++++++++++++++++++
1 files changed, 65 insertions(+), 1 deletions(-)
diff --git a/inc/registrar/config/seo/Meta.php b/inc/registrar/config/seo/Meta.php
index 4ab4021..f43cf15 100644
--- a/inc/registrar/config/seo/Meta.php
+++ b/inc/registrar/config/seo/Meta.php
@@ -11,7 +11,15 @@
protected string $slug;
protected string $title;
+ protected array $titleConfig = [
+ 'maxLength' => 60,
+ 'alts' => []
+ ];
protected string $description;
+ protected array $descriptionConfig = [
+ 'maxLength' => 120,
+ 'alts' => []
+ ];
protected int $image;
protected int $twitterImage;
@@ -36,6 +44,27 @@
}
}
+ public function setAlts(array $alts, string $type = 'title'):void
+ {
+ foreach (array_values($alts) as $i => $alt) {
+ if (!is_string($alt)) {
+ error_log('[Registrar.config.Meta]:setAlts invalid string attempted: '.print_r($alt, true));
+ unset($alts[$i]);
+ }
+ }
+ switch ($type) {
+ case 'title':
+ $this->titleConfig['alts'] = $alts;
+ break;
+ case 'description':
+ $this->descriptionConfig['alts'] = $alts;
+ break;
+ default:
+ error_log('[Registrar.config.Meta]:setAlts invalid type attempted: '.print_r($type, true));
+
+ }
+ }
+
public function hasTitle():bool
{
return !empty($this->title);
@@ -53,15 +82,50 @@
return !empty($this->twitterImage);
}
+ public function testLength(int $ID, string $result, string $type):string
+ {
+ $maxLength = match($type) {
+ 'title' => $this->titleConfig['maxLength'],
+ 'description' => $this->descriptionConfig['alts'],
+ default => false
+ };
+ if (!$maxLength) {
+ error_log('[Registrar.config.Meta]:testLength invalid type: '.$type);
+ return $result;
+ }
+ $alts = match($type) {
+ 'title' => $this->titleConfig['alts'],
+ 'description' => $this->descriptionConfig['alts'],
+ };
+
+
+ usort($alts, fn($a, $b) => mb_strlen($b) <=> mb_strlen($a));
+
+
+ $meta = new \JVBase\meta\Meta($ID, Registrar::getInstance($this->slug)->getType());
+ foreach ($alts as $alt) {
+ $alt = Resolver::resolve($alt, $meta);
+ $r = $result.' '.trim($alt);
+ if (mb_strlen($r) <= $maxLength) {
+ return $r;
+ }
+ }
+ return rtrim($result, $maxLength - 3).'...';
+ }
+
public function filterTitle(string $title, ?array $args): string
{
+ error_log('Filtering title...');
if (jvbTSFDoIt($this->slug, $args)){
return $title;
}
$ID = jvbTSFGetID($args);
+
$meta = new \JVBase\meta\Meta($ID, Registrar::getInstance($this->slug)->getType());
- return Resolver::resolve($this->title, $meta);
+ $resolved = Resolver::resolve($this->title, $meta);
+ $resolved = $this->testLength($ID, $resolved, 'title');
+ return $resolved;
}
public function filterDescription(string $description, ?array $args): string
--
Gitblit v1.10.0