| | |
| | | private Cache $postCache; |
| | | private Cache $userCache; |
| | | private static ?self $instance = null; |
| | | private static bool $hasDirectory; |
| | | private static array $directories; |
| | | |
| | | private function __construct() |
| | | { |
| | |
| | | $this->termCache = Cache::for('breadcrumbs_tax', 'term'); |
| | | $this->postCache = Cache::for('breadcrumbs_post', 'post'); |
| | | $this->userCache = Cache::for('breadcrumbs_user', 'user'); |
| | | self::$hasDirectory = Site::has('is_directory'); |
| | | self::$directories = self::$hasDirectory ? DirectoryManager::getInstance()->directories() : []; |
| | | } |
| | | |
| | | public static function getInstance(): self |
| | |
| | | $content = is_array($registrar->registrar->for) ? $registrar->registrar->for[0] : $registrar->registrar->for; |
| | | $contentRegistrar = Registrar::getInstance($content); |
| | | |
| | | if(Site::has('is_directory') && $contentRegistrar && $contentRegistrar->hasFeature('show_directory')) { |
| | | $directory = DirectoryManager::getInstance(); |
| | | if (!empty($directory->directories($content)??[])){ |
| | | if(self::$hasDirectory && $contentRegistrar && $contentRegistrar->hasFeature('show_directory')) { |
| | | if (!empty(self::$directories[$content]??[])){ |
| | | $crumbs[] = [ |
| | | 'name' => $directory->directories($content)['title'], |
| | | 'url' =>$directory->directories($content)['url'] |
| | | 'name' => self::$directories[$content]['title'], |
| | | 'url' => self::$directories[$content]['url'] |
| | | ]; |
| | | } |
| | | } else { |
| | |
| | | |
| | | |
| | | // Add directory if exists |
| | | if ($registrar && $registrar->hasFeature('show_directory')) { |
| | | $directory = DirectoryManager::getInstance(); |
| | | if ($directory && !empty($directory->directories($tax)??[])) { |
| | | if (self::$hasDirectory && $registrar && $registrar->hasFeature('show_directory')) { |
| | | |
| | | if (!empty(self::$directories[$tax]??[])) { |
| | | $crumbs[] = [ |
| | | 'name' => $directory->directories($tax)['title'], |
| | | 'url' =>$directory->directories($tax)['url'] |
| | | 'name' => self::$directories[$tax]['title'], |
| | | 'url' => self::$directories[$tax]['url'] |
| | | ]; |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | // Handle directory posts specially |
| | | if (Site::has('is_directory') && DirectoryManager::getInstance()->isDirectory()) { |
| | | if (self::$hasDirectory && DirectoryManager::getInstance()->isDirectory()) { |
| | | $pos = jvbGetDirectoryInfo(); |
| | | if (!empty($pos)) { |
| | | // Special case for map |
| | | if ($pos['title'] == 'Map') { |
| | | $crumbs[] = [ |
| | | 'name' => 'Tattoo Shops', |
| | | 'url' => DirectoryManager::getInstance()->directories(BASE.'shop')['url'] |
| | | 'url' => DirectoryManager::getInstance()->directories(BASE.'shop')['url']??'' |
| | | ]; |
| | | } |
| | | |
| | |
| | | |
| | | $registrar = Registrar::getInstance($name); |
| | | |
| | | if($registrar && $registrar->hasFeature('show_directory') && DirectoryManager::getInstance()) { |
| | | $directory = DirectoryManager::getInstance(); |
| | | if(self::$hasDirectory && $registrar && $registrar->hasFeature('show_directory')) { |
| | | |
| | | if ($directory && !empty($directory->directories($name)??[])){ |
| | | if (!empty(self::$directories[$name]??[])){ |
| | | $crumbs[] = [ |
| | | 'name' => $directory->directories($name)['title'], |
| | | 'url' =>$directory->directories($name)['url'] |
| | | 'name' => self::$directories[$name]['title'], |
| | | 'url' => self::$directories[$name]['url'] |
| | | ]; |
| | | } |
| | | } elseif (Site::has('is_directory') && $name === 'directory') { |