roundcubemail-plugins-kolab/plugins/libcalendaring/lib/Sabre/VObject/Parameter.php
Thomas Bruederli cbe184364c Fix quoting of iCal property parameter values according to RFC 5545
Conflicts:
	plugins/libcalendaring/lib/Sabre/VObject/Parameter.php
2014-06-03 11:30:11 +02:00

102 lines
2 KiB
PHP

<?php
namespace Sabre\VObject;
/**
* VObject Parameter
*
* This class represents a parameter. A parameter is always tied to a property.
* In the case of:
* DTSTART;VALUE=DATE:20101108
* VALUE=DATE would be the parameter name and value.
*
* @copyright Copyright (C) 2007-2013 fruux GmbH (https://fruux.com/).
* @author Evert Pot (http://evertpot.com/)
* @license http://code.google.com/p/sabredav/wiki/License Modified BSD License
*/
class Parameter extends Node {
/**
* Parameter name
*
* @var string
*/
public $name;
/**
* Parameter value
*
* @var string
*/
public $value;
/**
* Sets up the object
*
* @param string $name
* @param string $value
*/
public function __construct($name, $value = null) {
if (!is_scalar($value) && !is_null($value)) {
throw new \InvalidArgumentException('The value argument must be a scalar value or null');
}
$this->name = strtoupper($name);
$this->value = $value;
}
/**
* Returns the parameter's internal value.
*
* @return string
*/
public function getValue() {
return $this->value;
}
/**
* Turns the object back into a serialized blob.
*
* @return string
*/
public function serialize() {
if (is_null($this->value)) {
return $this->name;
}
$src = array(
'\\',
"\n",
);
$out = array(
'\\\\',
'\n',
);
// quote parameters according to RFC 5545, Section 3.2
$quotes = '';
if (preg_match('/[:;,]/', $this->value)) {
$quotes = '"';
}
return $this->name . '=' . $quotes . str_replace($src, $out, $this->value) . $quotes;
}
/**
* Called when this object is being cast to a string
*
* @return string
*/
public function __toString() {
return $this->value;
}
}