| | |
| | | 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; |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | 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); |
| | |
| | | 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 |