104 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			104 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| 
 | |
| namespace Nextend\Framework\Style;
 | |
| 
 | |
| 
 | |
| use Nextend\Framework\Parser\Color;
 | |
| use Nextend\Framework\Sanitize;
 | |
| 
 | |
| class Style {
 | |
| 
 | |
|     /**
 | |
|      * @param string $tab
 | |
|      *
 | |
|      * @return string
 | |
|      */
 | |
|     public function style($tab) {
 | |
|         $style = '';
 | |
|         $extra = '';
 | |
|         if (isset($tab['extra'])) {
 | |
|             $extra = $tab['extra'];
 | |
|             unset($tab['extra']);
 | |
|         }
 | |
|         foreach ($tab as $k => $v) {
 | |
|             $style .= $this->parse($k, $v);
 | |
|         }
 | |
|         $style .= $this->parse('extra', $extra);
 | |
| 
 | |
|         return $style;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @param $property
 | |
|      * @param $value
 | |
|      *
 | |
|      * @return mixed
 | |
|      */
 | |
|     public function parse($property, $value) {
 | |
|         $fn = 'parse' . $property;
 | |
| 
 | |
|         return $this->$fn($value);
 | |
|     }
 | |
| 
 | |
|     public function parseBackgroundColor($v) {
 | |
|         $hex = Color::hex82hex($v);
 | |
|         if ($hex[1] == 'ff') {
 | |
|             return 'background: #' . $hex[0] . ';';
 | |
|         }
 | |
| 
 | |
|         $rgba = Color::hex2rgba($v);
 | |
| 
 | |
|         return 'background: RGBA(' . $rgba[0] . ',' . $rgba[1] . ',' . $rgba[2] . ',' . round($rgba[3] / 127, 2) . ');';
 | |
|     }
 | |
| 
 | |
|     public function parseOpacity($v) {
 | |
|         return 'opacity:' . (intval($v) / 100) . ';';
 | |
|     }
 | |
| 
 | |
|     public function parsePadding($v) {
 | |
|         $padding   = array_map(array(
 | |
|             Sanitize::class,
 | |
|             'esc_css_value'
 | |
|         ), explode('|*|', $v));
 | |
|         $unit      = array_pop($padding);
 | |
|         $padding[] = '';
 | |
| 
 | |
|         return 'padding:' . implode($unit . ' ', $padding) . ';';
 | |
|     }
 | |
| 
 | |
|     public function parseBoxShadow($v) {
 | |
|         $boxShadow = array_map(array(
 | |
|             Sanitize::class,
 | |
|             'esc_css_value'
 | |
|         ), explode('|*|', $v));
 | |
| 
 | |
|         if ($boxShadow[0] == '0' && $boxShadow[1] == '0' && $boxShadow[2] == '0' && $boxShadow[3] == '0') {
 | |
|             return 'box-shadow: none;';
 | |
|         } else {
 | |
|             $rgba = Color::hex2rgba($boxShadow[4]);
 | |
| 
 | |
|             return 'box-shadow: ' . $boxShadow[0] . 'px ' . $boxShadow[1] . 'px ' . $boxShadow[2] . 'px ' . $boxShadow[3] . 'px RGBA(' . $rgba[0] . ',' . $rgba[1] . ',' . $rgba[2] . ',' . round($rgba[3] / 127, 2) . ');';
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public function parseBorder($v) {
 | |
| 
 | |
|         $border = array_map(array(
 | |
|             Sanitize::class,
 | |
|             'esc_css_value'
 | |
|         ), explode('|*|', $v));
 | |
|         $rgba   = Color::hex2rgba($border[2]);
 | |
| 
 | |
|         return 'border: ' . $border[0] . 'px ' . $border[1] . ' RGBA(' . $rgba[0] . ',' . $rgba[1] . ',' . $rgba[2] . ',' . round($rgba[3] / 127, 2) . ');';
 | |
|     }
 | |
| 
 | |
|     public function parseBorderRadius($v) {
 | |
|         return 'border-radius:' . Sanitize::esc_css_value($v) . 'px;';
 | |
|     }
 | |
| 
 | |
|     public function parseExtra($v) {
 | |
| 
 | |
|         return Sanitize::esc_css_string($v);
 | |
|     }
 | |
| } |