179 lines
6.4 KiB
PHP
179 lines
6.4 KiB
PHP
<?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>',
|
||
];
|
||
}
|
||
}
|