Viewing file: Prosody.php (2.68 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace Plivo\XML;
use Plivo\Exceptions\PlivoXMLException;
/** * Class Prosody * @package Plivo\XML */ class Prosody extends Element {
protected $nestables = [ 'break', 'emphasis', 'lang', 'p', 'phoneme', 'prosody', 's', 'say-as', 'sub', 'w' ];
protected $valid_attributes = [ 'volume', 'rate', 'pitch' ];
protected $valid_volume_attribute_values = [ 'default', 'silent', 'x-soft', 'soft', 'medium', 'loud', 'x-loud' ];
protected $valid_rate_attribute_values = [ 'x-slow', 'slow', 'medium', 'fast','x-fast' ];
protected $valid_pitch_attribute_values = [ 'default','x-low', 'low', 'medium', 'high', 'x-high' ];
/** * Prosody constructor. * @param string $body * @param array $attributes * @throws PlivoXMLException */ function __construct($body, $attributes = []) { if (!$body) { throw new PlivoXMLException("No text set for ".$this->getName()); } if(!empty($attributes)){ foreach ($attributes as $key => $value) { if ($key ==='volume' && !in_array($value, $this->valid_volume_attribute_values)) { if (strpos($value, 'dB') !== false) { } else { throw new PlivoXMLException( "invalid attribute value ".$value." for ".$key." ".$this->name); } } if ($key ==='rate' && !in_array($value, $this->valid_rate_attribute_values)) { if (strpos($value, '%') !== false) { $per = explode('%',$value); if($per[0]<0){ throw new PlivoXMLException( "invalid attribute value ".$value." for ".$key." ".$this->name); } } else { throw new PlivoXMLException( "invalid attribute value ".$value." for ".$key." ".$this->name); } }
if ($key ==='pitch' && !in_array($value, $this->valid_pitch_attribute_values)) { if (strpos($value, '%') !== false) { } else { throw new PlivoXMLException( "invalid attribute value ".$value." for ".$key." ".$this->name); } } } }
parent::__construct($body, $attributes); $this->name = strtolower($this->name); } }
|