diff options
Diffstat (limited to 'vendor/eluceo/ical/src/Eluceo/iCal/ParameterBag.php')
-rw-r--r-- | vendor/eluceo/ical/src/Eluceo/iCal/ParameterBag.php | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/vendor/eluceo/ical/src/Eluceo/iCal/ParameterBag.php b/vendor/eluceo/ical/src/Eluceo/iCal/ParameterBag.php new file mode 100644 index 00000000..9b0c24a1 --- /dev/null +++ b/vendor/eluceo/ical/src/Eluceo/iCal/ParameterBag.php @@ -0,0 +1,108 @@ +<?php + +/* + * This file is part of the eluceo/iCal package. + * + * (c) Markus Poerschke <markus@eluceo.de> + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + +namespace Eluceo\iCal; + +class ParameterBag +{ + /** + * The params. + * + * @var array + */ + protected $params; + + public function __construct($params = array()) + { + $this->params = $params; + } + + /** + * @param string $name + * @param mixed $value + */ + public function setParam($name, $value) + { + $this->params[$name] = $value; + } + + /** + * @param $name + */ + public function getParam($name) + { + if (array_key_exists($name, $this->params)) { + return $this->params[$name]; + } + } + + /** + * Checks if there are any params. + * + * @return bool + */ + public function hasParams() + { + return count($this->params) > 0; + } + + /** + * @return string + */ + public function toString() + { + $line = ''; + foreach ($this->params as $param => $paramValues) { + if (!is_array($paramValues)) { + $paramValues = array($paramValues); + } + foreach ($paramValues as $k => $v) { + $paramValues[$k] = $this->escapeParamValue($v); + } + + if ('' != $line) { + $line .= ';'; + } + + $line .= $param . '=' . implode(',', $paramValues); + } + + return $line; + } + + /** + * Returns an escaped string for a param value. + * + * @param string $value + * + * @return string + */ + public function escapeParamValue($value) + { + $count = 0; + $value = str_replace('\\', '\\\\', $value); + $value = str_replace('"', '\"', $value, $count); + $value = str_replace("\n", '\\n', $value); + if (false !== strpos($value, ';') || false !== strpos($value, ',') || false !== strpos($value, ':') || $count) { + $value = '"' . $value . '"'; + } + + return $value; + } + + /** + * @return string + */ + public function __toString() + { + return $this->toString(); + } +} |