| <?php |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| namespace Eluceo\iCal; |
|
|
| class ParameterBag |
| { |
| |
| |
| |
| |
| |
| protected $params; |
|
|
| public function __construct($params = []) |
| { |
| $this->params = $params; |
| } |
|
|
| |
| |
| |
| |
| public function setParam($name, $value) |
| { |
| $this->params[$name] = $value; |
| } |
|
|
| |
| |
| |
| |
| |
| public function getParam($name) |
| { |
| if (isset($this->params[$name])) { |
| return $this->params[$name]; |
| } |
|
|
| return null; |
| } |
|
|
| |
| |
| |
| public function hasParams(): bool |
| { |
| return count($this->params) > 0; |
| } |
|
|
| public function toString(): string |
| { |
| $line = ''; |
| foreach ($this->params as $param => $paramValues) { |
| if (!is_array($paramValues)) { |
| $paramValues = [$paramValues]; |
| } |
| foreach ($paramValues as $k => $v) { |
| $paramValues[$k] = $this->escapeParamValue($v); |
| } |
|
|
| if ('' != $line) { |
| $line .= ';'; |
| } |
|
|
| $line .= $param . '=' . implode(',', $paramValues); |
| } |
|
|
| return $line; |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| private 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; |
| } |
|
|
| |
| |
| |
| public function __toString() |
| { |
| return $this->toString(); |
| } |
| } |
|
|