|
<?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(); |
|
} |
|
} |
|
|