dbmsv4/app/Helpers/IconHelper.php
2026-01-06 13:55:09 +09:00

179 lines
6.4 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace App\Helpers;
/**
* IconHelper
* 아이콘 및 소셜 미디어 아이콘의 HTML을 생성하는 헬퍼 클래스입니다.
*/
class IconHelper
{
/**
* 입력을 기반으로 아이콘 HTML을 반환합니다.
*
* @param string $key ICONS 상수의 키
* @param string $class 추가적인 CSS 클래스
* @return string
*/
public static function icon(string $key, string $class = ''): string
{
$icons = self::getIcons();
if (!isset($icons[$key])) {
$icons = self::getMessengerIcons();
}
if (!isset($icons[$key])) {
return '';
}
$icon = $icons[$key];
if ($class && str_contains($icon, 'class="')) {
return str_replace('class="', 'class="' . $class . ' ', $icon);
}
return $icon;
}
/**
* 메신저 아이콘 HTML을 반환합니다.
*
* @param string $key MESSENGER_ICONS 상수의 키
* @return string
*/
public static function messengerIcon(string $key): string
{
$icons = self::getMessengerIcons();
return $icons[$key] ?? '';
}
/**
* 아이콘 데이터를 관리합니다. (Constants.php에서 분리된 데이터)
*/
private static function getIcons(): array
{
return [
'ADD' => '',
'LOGO' => '🖼️',
'EXCEL' => '📊',
'PDF' => '📄',
'GOOGLE' => '🌐',
'MEMBER' => '👤',
'LOGIN' => '🔑',
'LOGOUT' => '🚪',
'HOME' => '🏠',
'MENU' => '☰',
'NEW' => '🆕',
'REPLY' => '↩️',
'DATABASE' => '🗄️',
'DISLIKE' => '👎',
'LIKE' => '👍',
'DOWNLOAD' => '⬇️',
'UPLOAD' => '⬆️',
'COPY' => '📋',
'PASTE' => '📌',
'EDIT' => '✏️',
'VIEW' => '👁️',
'VIEW_OFF' => '🙈',
'PRINT' => '🖨️',
'SAVE' => '✔️',
'CANCEL' => '❌',
'CLOSE' => '✖️',
'CLIENT' => '👥',
'CHART' => '📈',
'CHECK' => '✔️',
'CHECK_OFF' => '⬜',
'CHECK_ON' => '☑️',
'CHECK_ALL' => '📑',
'CHECK_NONE' => '🚫',
'CHECK_SOME' => '',
'COUPON' => '🎟️',
'HISTORY' => '🕘',
'MODIFY' => '🔧',
'MODIFY_ALL' => '🛠️',
'BATCHJOB' => '⚙️',
'DELETE' => '🗑️',
'REBOOT' => '🔄',
'RELOAD' => '🔁',
'SETUP' => '⚙️',
'FLAG' => '🚩',
'SEARCH' => '🔍',
'PLAY' => '▶️',
'CART' => '🛒',
'CARD' => '💳',
'DEPOSIT' => '💰',
'DESKTOP' => '🖥️',
'DEVICE' => '📟',
'UP' => '⬆️',
'DOWN' => '⬇️',
'LEFT' => '⬅️',
'RIGHT' => '➡️',
'IMAGE_FILE' => '🖼️',
'CLOUD' => '☁️',
'SIGNPOST' => '📌',
'LOCK' => '🔒',
'UNLOCK' => '🔓',
'BOX' => '📦',
'BOXS' => '📦📦',
'ONETIME' => '⚡',
'MONTH' => '📅',
'EMAIL' => '✉️',
'MAIL' => '📧',
'PHONE' => '📞',
'POINT' => '⭐',
'ALRAM' => '🔔',
'PAYMENT' => '💸',
'LINK' => '🔗',
'SALE_UP' => '📈',
'SALE_DOWN' => '📉',
'SERVICE' => '🛎️',
'SERVICE_ITEM' => '<i class="bi bi-gear-wide-connected"></i>',
'SERVICE_ITEM_LINE' => '<i class="bi bi-chat-left-text"></i>',
'SERVICE_ITEM_IP' => '<i class="bi bi-globe"></i>',
'SERVICE_ITEM_SERVER' => '<i class="bi bi-server"></i>',
'SERVICE_ITEM_CPU' => '<i class="bi bi-cpu"></i>',
'SERVICE_ITEM_RAM' => '<i class="bi bi-memory"></i>',
'SERVICE_ITEM_STORAGE' => '<i class="bi bi-hdd-stack"></i>',
'SERVICE_ITEM_SOFTWARE' => '<i class="bi bi-box-seam"></i>',
'SERVICE_ITEM_DEFENCE' => '<i class="bi bi-shield-lock"></i>',
'SERVICE_ITEM_DOMAIN' => '<i class="bi bi-globe2"></i>',
'SERVICE_ITEM_OTHER' => '<i class="bi bi-gear-wide-connected"></i>',
'SERVER_ITEM_CPU' => '<i class="bi bi-cpu"></i>',
'SERVER_ITEM_RAM' => '<i class="bi bi-memory"></i>',
'SERVER_ITEM_DISK' => '<i class="bi bi-device-hdd"></i>',
'SERVER_ITEM_SWITCH' => '<i class="bi bi-diagram-3"></i>',
'SERVER_ITEM_OS' => '<i class="bi bi-microsoft"></i>',
'SERVER_ITEM_DB' => '<i class="bi bi-database"></i>',
'SERVER_ITEM_SOFTWARE' => '<i class="bi bi-window-sidebar"></i>',
'SERVER_ITEM_IP' => '<i class="bi bi-globe2"></i>',
'SERVER_ITEM_CS' => '<i class="bi bi-shield-check"></i>',
'SERVER_ITEM_ETC' => '<i class="bi bi-patch-question"></i>',
];
}
private static function getMessengerIcons(): array
{
return [
'WHATSAPP' => '<i class="bi bi-whatsapp"></i>',
'VIBER' => '<i class="bi bi-viber"></i>',
'LINE' => '<i class="bi bi-chat-left-text"></i>',
'KAKAO' => '<i class="bi bi-chat-left-text"></i>',
'DISCORD' => '<i class="bi bi-discord"></i>',
'TELEGRAM' => '<i class="bi bi-telegram"></i>',
'SKYPE' => '<i class="bi bi-skype"></i>',
'YOUTUBE' => '<i class="bi bi-youtube"></i>',
'FACEBOOK' => '<i class="bi bi-facebook"></i>',
'TWITTER' => '<i class="bi bi-twitter"></i>',
'INSTAGRAM' => '<i class="bi bi-instagram"></i>',
'LINKEDIN' => '<i class="bi bi-linkedin"></i>',
'GITHUB' => '<i class="bi bi-github"></i>',
'GITLAB' => '<i class="bi bi-gitlab"></i>',
'BITBUCKET' => '<i class="bi bi-bitbucket"></i>',
'REDDIT' => '<i class="bi bi-reddit"></i>',
'TIKTOK' => '<i class="bi bi-tiktok"></i>',
'PINTEREST' => '<i class="bi bi-pinterest"></i>',
'TUMBLR' => '<i class="bi bi-tumblr"></i>',
'SNAPCHAT' => '<i class="bi bi-snapchat"></i>',
];
}
}