self::NAME, 'email' => self::EMAIL, 'telegram' => self::TELEGRAM, 'instagram' => self::INSTAGRAM, 'youtube' => self::YOUTUBE, 'website' => self::WEBSITE, ); } /** * Public URLs for each channel. * * @return array */ public static function urls(): array { return array( 'email' => 'mailto:' . self::EMAIL, 'telegram' => 'https://t.me/' . ltrim( self::TELEGRAM, '@' ), 'instagram' => 'https://www.instagram.com/' . self::INSTAGRAM, 'youtube' => 'https://www.youtube.com/' . self::YOUTUBE, 'website' => 'https://' . self::WEBSITE, ); } /** * Integrity signature over the official contacts. * * @return string sha256 hex. */ public static function signature(): string { return hash( 'sha256', implode( '|', array( self::NAME, self::EMAIL, self::TELEGRAM, self::INSTAGRAM, self::YOUTUBE, self::WEBSITE ) ) ); } /** * One-line support string for footers/instructions. * * @return string */ public static function line(): string { return sprintf( '%s · %s · %s · Telegram %s · Instagram @%s · YouTube %s', self::NAME, self::WEBSITE, self::EMAIL, self::TELEGRAM, self::INSTAGRAM, self::YOUTUBE ); } }