protected function parseValue($value, $type) { $code = null; $suggest = false; if (is_array($value)) { $code = ifset($value['code']); $value = trim(ifset($value['value'])); //rgb(r,g,b) #ABC #AABBCC; if ($code === '') { $code = shopColorValue::getCode($value); } elseif (preg_match('@^#?([0-9A-F]{3}|[0-9A-F]{6})@ui', $code)) { if (strpos($code, '#') === 0) { $code = substr($code, 1); } if ($parsed = sscanf(strtoupper($code), '%03X%03X')) { if ($parsed[1] === null) { $code = (0xf00 & $parsed[0]) << 12; $code |= (0xff0 & $parsed[0]) << 8; $code |= (0xff & $parsed[0]) << 4; $code |= 0xf & $parsed[0]; } else { $code = $parsed[0] << 12 | $parsed[1]; } } else { $code = null; } } elseif (strpos('rgb', $code) === 0) { //TODO } else { $code = intval($code); } if ($value === '' && $code !== null) { $suggest = true; $value = shopColorValue::getName($code); } } else { $value = trim($value); if (preg_match('@^#?(([0-9A-F]{3})|([0-9A-F]{6}))$@ui', $value, $matches)) { if ($matches[2]) { $value = sscanf(strtoupper($matches[2]), '%03X'); $code = reset($value); } elseif ($matches[3]) { $value = sscanf(strtoupper($matches[3]), '%06X'); $code = reset($value); } else { $code = 0; } $value = shopColorValue::getName($code); } else { $suggest = true; $code = shopColorValue::getCode($value); } } $data = array('value' => $value, 'search_value' => $value, 'suggest' => $suggest); if ($code !== null) { $data['code'] = $code; } return $data; }
public function execute() { if (!$this->getUser()->getRights('shop', 'settings')) { throw new waRightsException(_w('Access denied')); } if ($code = waRequest::get('code')) { $this->response['name'] = shopColorValue::getName($code); } elseif ($name = waRequest::get('name')) { $this->response['code'] = shopColorValue::getCode($name); } }