| | |
| | | class Resolver { |
| | | protected static ?Meta $meta; |
| | | |
| | | public static function resolve(string $template, ?Meta $meta): string |
| | | public static function resolve(string $template, ?Meta $meta): string|array|\JVBase\managers\SEO\render\Thing\Thing |
| | | { |
| | | if (!$meta) { |
| | | if (is_singular()){ |
| | |
| | | } |
| | | } |
| | | self::$meta = $meta; |
| | | |
| | | if (preg_match('/^\{\{([^}]+)}}$/', trim($template), $matches)) { |
| | | return self::resolveVariable($matches[1], $meta); |
| | | } |
| | | |
| | | return preg_replace_callback( |
| | | '/\{\{([^}]+)}}/', |
| | | fn($matches) => self::resolveVariable($matches[1], $meta), |
| | |
| | | protected static function resolveVariable(string $variable, ?Meta $meta = null): mixed |
| | | { |
| | | $variable = trim($variable); |
| | | |
| | | switch ($variable) { |
| | | case 'CREATOR': |
| | | return JVB()->seo()->getCreator(); |
| | |
| | | if (str_contains($variable, '.') && $meta) { |
| | | return self::resolveRelation($variable, $meta); |
| | | } |
| | | $function = BASE.'resolve_'.$variable; |
| | | if (function_exists($function)) { |
| | | return $function($variable, $meta); |
| | | } |
| | | if ($meta && $variable === 'post_permalink') { |
| | | return get_the_permalink($meta->id()); |
| | | } |
| | |
| | | $relation = array_shift($parts); |
| | | $field = implode('.', $parts); |
| | | |
| | | |
| | | //We need to: |
| | | // 1) Get the id of the item we're fetching (meta value of the $relation) |
| | | if ($relation === 'registrar') { |
| | |
| | | if (!$meta) { |
| | | return''; |
| | | } |
| | | |
| | | $ID = $meta->get($relation); |
| | | if (empty($ID)) { |
| | | return ''; |