1*04fd306cSNickeau<?php 2*04fd306cSNickeau 3*04fd306cSNickeaunamespace ComboStrap\TagAttribute; 4*04fd306cSNickeau 5*04fd306cSNickeau 6*04fd306cSNickeauuse ComboStrap\Bootstrap; 7*04fd306cSNickeauuse ComboStrap\ConditionalLength; 8*04fd306cSNickeauuse ComboStrap\ExceptionBadArgument; 9*04fd306cSNickeauuse ComboStrap\LogUtility; 10*04fd306cSNickeauuse ComboStrap\TagAttributes; 11*04fd306cSNickeau 12*04fd306cSNickeau/** 13*04fd306cSNickeau * @deprecated 14*04fd306cSNickeau */ 15*04fd306cSNickeauclass TextAlign 16*04fd306cSNickeau{ 17*04fd306cSNickeau 18*04fd306cSNickeau const ATTRIBUTE_NAME = "text-align"; 19*04fd306cSNickeau const CANONICAL = "text-align"; 20*04fd306cSNickeau 21*04fd306cSNickeau 22*04fd306cSNickeau /** 23*04fd306cSNickeau * @param TagAttributes $attributes 24*04fd306cSNickeau * https://getbootstrap.com/docs/5.0/utilities/text/#text-alignment 25*04fd306cSNickeau */ 26*04fd306cSNickeau public static function processTextAlign(&$attributes) 27*04fd306cSNickeau { 28*04fd306cSNickeau 29*04fd306cSNickeau if ($attributes->hasComponentAttribute(self::ATTRIBUTE_NAME)) { 30*04fd306cSNickeau 31*04fd306cSNickeau LogUtility::warning("The text-align attribute has been deprecated for the align attribute.", self::CANONICAL); 32*04fd306cSNickeau 33*04fd306cSNickeau try { 34*04fd306cSNickeau $textAlignValues = $attributes->getValuesAndRemove(self::ATTRIBUTE_NAME); 35*04fd306cSNickeau } catch (ExceptionBadArgument $e) { 36*04fd306cSNickeau LogUtility::error("Unable to retrieve the tex-align attribute. Error: {$e->getMessage()}", self::CANONICAL); 37*04fd306cSNickeau return; 38*04fd306cSNickeau } 39*04fd306cSNickeau foreach ($textAlignValues as $textAlignValue) { 40*04fd306cSNickeau try { 41*04fd306cSNickeau $conditionalTextAlignValue = ConditionalLength::createFromString($textAlignValue); 42*04fd306cSNickeau } catch (ExceptionBadArgument $e) { 43*04fd306cSNickeau LogUtility::error("The text-align value($textAlignValue) is not valid. Error: {$e->getMessage()}", self::CANONICAL); 44*04fd306cSNickeau return; 45*04fd306cSNickeau } 46*04fd306cSNickeau 47*04fd306cSNickeau $bootstrapMajorVersion = Bootstrap::getBootStrapMajorVersion(); 48*04fd306cSNickeau if ($bootstrapMajorVersion == Bootstrap::BootStrapFourMajorVersion) { 49*04fd306cSNickeau $breakpoint = $conditionalTextAlignValue->getBreakpoint(); 50*04fd306cSNickeau if (!empty($breakpoint)) { 51*04fd306cSNickeau LogUtility::msg("Bootstrap 4 does not support conditional value for the attribute (" . self::ATTRIBUTE_NAME . "). Therefore, the value ($textAlignValue) cannot be applied", LogUtility::LVL_MSG_WARNING, self::CANONICAL); 52*04fd306cSNickeau } 53*04fd306cSNickeau $value = $conditionalTextAlignValue->getLength(); 54*04fd306cSNickeau // Bootstrap 4 55*04fd306cSNickeau switch ($value) { 56*04fd306cSNickeau case "left": 57*04fd306cSNickeau case "start": 58*04fd306cSNickeau $attributes->addStyleDeclarationIfNotSet(self::ATTRIBUTE_NAME, "left"); 59*04fd306cSNickeau break; 60*04fd306cSNickeau case "right": 61*04fd306cSNickeau case "end": 62*04fd306cSNickeau $attributes->addStyleDeclarationIfNotSet(self::ATTRIBUTE_NAME, "right"); 63*04fd306cSNickeau break; 64*04fd306cSNickeau case "center": 65*04fd306cSNickeau case "justify": 66*04fd306cSNickeau $attributes->addStyleDeclarationIfNotSet(self::ATTRIBUTE_NAME, $value); 67*04fd306cSNickeau break; 68*04fd306cSNickeau default: 69*04fd306cSNickeau LogUtility::msg("The text-align value ($value) is unknown.", LogUtility::LVL_MSG_ERROR, self::CANONICAL); 70*04fd306cSNickeau break; 71*04fd306cSNickeau } 72*04fd306cSNickeau 73*04fd306cSNickeau } else { 74*04fd306cSNickeau $breakpoint = $conditionalTextAlignValue->getBreakpoint(); 75*04fd306cSNickeau if (!empty($breakpoint)) { 76*04fd306cSNickeau switch ($breakpoint) { 77*04fd306cSNickeau case "sm": 78*04fd306cSNickeau case "small": 79*04fd306cSNickeau $breakpoint = "sm"; 80*04fd306cSNickeau break; 81*04fd306cSNickeau case "md": 82*04fd306cSNickeau case "medium": 83*04fd306cSNickeau $breakpoint = "md"; 84*04fd306cSNickeau break; 85*04fd306cSNickeau case "lg": 86*04fd306cSNickeau case "large": 87*04fd306cSNickeau $breakpoint = "lg"; 88*04fd306cSNickeau break; 89*04fd306cSNickeau case "xl": 90*04fd306cSNickeau case "extra-large": 91*04fd306cSNickeau $breakpoint = "xl"; 92*04fd306cSNickeau break; 93*04fd306cSNickeau default: 94*04fd306cSNickeau LogUtility::msg("The breakpoint ($breakpoint) of the text-align value ($textAlignValue) is not correct.", LogUtility::LVL_MSG_ERROR, self::CANONICAL); 95*04fd306cSNickeau $breakpoint = ""; 96*04fd306cSNickeau break; 97*04fd306cSNickeau } 98*04fd306cSNickeau } 99*04fd306cSNickeau $value = $conditionalTextAlignValue->getLength(); 100*04fd306cSNickeau // Bootstrap 5 101*04fd306cSNickeau switch ($value) { 102*04fd306cSNickeau case "start": 103*04fd306cSNickeau case "left": // from bs4 104*04fd306cSNickeau $valueClass = "start"; 105*04fd306cSNickeau if (empty($breakpoint)) { 106*04fd306cSNickeau $attributes->addClassName("text-$valueClass"); 107*04fd306cSNickeau } else { 108*04fd306cSNickeau $attributes->addClassName("text-$breakpoint-$valueClass"); 109*04fd306cSNickeau } 110*04fd306cSNickeau break; 111*04fd306cSNickeau case "end": 112*04fd306cSNickeau case "right": // from bs4 113*04fd306cSNickeau $valueClass = "end"; 114*04fd306cSNickeau if (empty($breakpoint)) { 115*04fd306cSNickeau $attributes->addClassName("text-$valueClass"); 116*04fd306cSNickeau } else { 117*04fd306cSNickeau $attributes->addClassName("text-$breakpoint-$valueClass"); 118*04fd306cSNickeau } 119*04fd306cSNickeau break; 120*04fd306cSNickeau case "center": 121*04fd306cSNickeau $valueClass = "center"; 122*04fd306cSNickeau if (empty($breakpoint)) { 123*04fd306cSNickeau $attributes->addClassName("text-$valueClass"); 124*04fd306cSNickeau } else { 125*04fd306cSNickeau $attributes->addClassName("text-$breakpoint-$valueClass"); 126*04fd306cSNickeau } 127*04fd306cSNickeau break; 128*04fd306cSNickeau case "justify": 129*04fd306cSNickeau if (!empty($breakpoint)) { 130*04fd306cSNickeau LogUtility::msg("The `justify` value of the text-align attribute does not support actually breakpoint. The breakpoint value ($$breakpoint) was then not applied.", LogUtility::LVL_MSG_WARNING, self::CANONICAL); 131*04fd306cSNickeau } 132*04fd306cSNickeau $attributes->addStyleDeclarationIfNotSet(self::ATTRIBUTE_NAME, $value); 133*04fd306cSNickeau break; 134*04fd306cSNickeau default: 135*04fd306cSNickeau LogUtility::msg("The text-align value ($value) is unknown.", LogUtility::LVL_MSG_ERROR, self::CANONICAL); 136*04fd306cSNickeau break; 137*04fd306cSNickeau } 138*04fd306cSNickeau } 139*04fd306cSNickeau } 140*04fd306cSNickeau } 141*04fd306cSNickeau } 142*04fd306cSNickeau} 143