/** * Get HTML for a color group * * @param int|array $GroupID * @param array|null $AllColors * @param bool $wrap * @param bool $colon * @param bool $colorNames * @param bool $force_extra_info * * @return string */ static function getHTML($GroupID, $AllColors = null, bool $wrap = true, bool $colon = true, bool $colorNames = false, bool $force_extra_info = false) : string { global $CGDb; if (is_array($GroupID)) { $Group = $GroupID; } else { $Group = $CGDb->where('groupid', $GroupID)->getOne('colorgroups'); } $label = CoreUtils::escapeHTML($Group['label']) . ($colon ? ': ' : ''); $HTML = "<span class='cat'>{$label}" . ($colorNames && Permission::sufficient('staff') ? '<span class="admin"><button class="blue typcn typcn-pencil edit-cg"></button><button class="red typcn typcn-trash delete-cg"></button></span>' : '') . "</span>"; if (!isset($AllColors)) { $Colors = self::getColors($Group['groupid']); } else { $Colors = $AllColors[$Group['groupid']] ?? null; } if (!empty($Colors)) { $extraInfo = $force_extra_info || !UserPrefs::get('cg_hideclrinfo'); foreach ($Colors as $i => $c) { $title = CoreUtils::aposEncode($c['label']); $color = ''; if (!empty($c['hex'])) { $color = $c['hex']; $title .= "' style='background-color:{$color}' class='valid-color"; } $append = "<span title='{$title}'>{$color}</span>"; if ($colorNames) { $append = "<div class='color-line" . (!$extraInfo || empty($color) ? ' no-detail' : '') . "'>{$append}<span><span class='label'>{$c['label']}"; if ($extraInfo && !empty($color)) { $rgb = CoreUtils::hex2Rgb($color); $rgb = 'rgb(' . implode(',', $rgb) . ')'; $append .= "</span><span class='ext'>{$color} • {$rgb}"; } $append .= '</span></div>'; } $HTML .= $append; } } return $wrap ? "<li id='cg{$Group['groupid']}'>{$HTML}</li>" : $HTML; }
function testHex2Rgb() { $result = CoreUtils::hex2Rgb("#AFDC34"); self::assertEquals([175, 220, 52], $result); $result = CoreUtils::hex2Rgb("#000000"); self::assertEquals([0, 0, 0], $result); $result = CoreUtils::hex2Rgb("#ffffff"); self::assertEquals([255, 255, 255], $result); }