getCSSDefinition(); $this->info['background-color'] = $def->info['background-color']; $this->info['background-image'] = $def->info['background-image']; $this->info['background-repeat'] = $def->info['background-repeat']; $this->info['background-attachment'] = $def->info['background-attachment']; $this->info['background-position'] = $def->info['background-position']; } public function validate($string, $config, $context) { // regular pre-processing $string = $this->parseCDATA($string); if ($string === '') return false; // munge rgb() decl if necessary $string = $this->mungeRgb($string); // assumes URI doesn't have spaces in it $bits = explode(' ', strtolower($string)); // bits to process $caught = array(); $caught['color'] = false; $caught['image'] = false; $caught['repeat'] = false; $caught['attachment'] = false; $caught['position'] = false; $i = 0; // number of catches $none = false; foreach ($bits as $bit) { if ($bit === '') continue; foreach ($caught as $key => $status) { if ($key != 'position') { if ($status !== false) continue; $r = $this->info['background-' . $key]->validate($bit, $config, $context); } else { $r = $bit; } if ($r === false) continue; if ($key == 'position') { if ($caught[$key] === false) $caught[$key] = ''; $caught[$key] .= $r . ' '; } else { $caught[$key] = $r; } $i++; break; } } if (!$i) return false; if ($caught['position'] !== false) { $caught['position'] = $this->info['background-position']-> validate($caught['position'], $config, $context); } $ret = array(); foreach ($caught as $value) { if ($value === false) continue; $ret[] = $value; } if (empty($ret)) return false; return implode(' ', $ret); } } // vim: et sw=4 sts=4