Jake Vanderwerf
2026-08-25 3d25ad7de4fdbb3eba2cde2a62422e6be5d79a0a
inc/registrar/Registrar.php
@@ -61,7 +61,7 @@
      //Shared Flags
      'favouritable', 'karma', 'show_feed', 'show_directory', 'approve_new', 'has_responses', 'invitable',
      //Post Flags
      'hide_single', 'redirect_to_author', 'is_calendar', 'single_image', 'is_timeline', 'is_gallery', 'is_faq', 'is_glossary', 'rewrite_taxonomy', 'add_image_column',
      'hide_single', 'redirect_to_author', 'is_calendar', 'single_image', 'is_timeline', 'is_gallery', 'is_faq', 'is_glossary', 'rewrite_taxonomy', 'add_image_column', 'is_profile',
      //Taxonomy Flags
      'is_content', 'is_ownable', 'verify_entry', 'track_changes', 'associate_user_content', 'prefix_post_type',
      //User Flags
@@ -191,6 +191,7 @@
    * @var bool Whether to generate a profile for this user role
    */
   public bool $profile_link;
   public bool $is_profile = false;
   /**
    * @var array|string
    */
@@ -228,6 +229,8 @@
   protected MakeTrackChanges $trackChanges;
   protected MakeVerification $verification;
   protected string $umami_event;
   private static array $instances = [];
   protected string $based;
@@ -905,6 +908,11 @@
         $this->karmaManager = KarmaManager::for($this->slug, $this->type);
      }
   }
   public function getKarmaManager():?KarmaManager
   {
      return $this->karmaManager;
   }
   public static function getInstance(string $slug):Registrar|false
   {
      self::ensureInstanced();
@@ -1220,8 +1228,16 @@
      $this->profile = $slug;
      return Registrar::forPost($slug, $singular, $plural);
      $reg = Registrar::forPost($slug, $singular, $plural);
      $reg->setProfile();
      return $reg;
   }
      public function setProfile():void
      {
         $this->is_profile = true;
      }
   public function getProfile():self|false
   {
      if (!$this->profile_link) {
@@ -1322,4 +1338,46 @@
   {
      $this->hasIntegrations = $has;
   }
   public function isOwnable():bool
   {
      return $this->is_ownable??false;
   }
   public function umamiEvent(string $event):void
   {
      $this->umami_event = str_replace('-', '_', sanitize_title($event));
   }
   public function getUmamiEvent():string
   {
      return $this->umami_event??$this->getDefaultUmamiType();
   }
      protected function getDefaultUmamiType():string
      {
         return match($this->type) {
            'post'   => $this->getDefaultPostUmamiType(),
            'term'   => $this->getDefaultTermUmamiType(),
            'user'   => $this->getDefaultUserUmamiType(),
            default => ''
         };
      }
         protected function getDefaultPostUmamiType():string
         {
            if ($this->is_profile) {
               return 'view_profile';
            }
            return 'view_content';
         }
         protected function getDefaultTermUmamiType():string
         {
            if ($this->is_content) {
               return 'view_collective';
            }
            return 'view_term';
         }
         protected function getDefaultUserUmamiType():string
         {
            return 'view_user';
         }
}