Skip to content

Commit

Permalink
add status variables to IncomingMessage.php
Browse files Browse the repository at this point in the history
Signed-off-by: Syco <syco@torann>
  • Loading branch information
Syco committed Nov 22, 2018
1 parent cfcea77 commit 783f3dd
Showing 1 changed file with 69 additions and 0 deletions.
69 changes: 69 additions & 0 deletions src/PAMI/Message/IncomingMessage.php
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,12 @@ abstract class IncomingMessage extends Message
*/
protected $channelVariables;

/**
* Metadata. Specific channel variables.
* @var string[]
*/
protected $statusVariables;

/**
* Serialize function.
*
Expand Down Expand Up @@ -125,6 +131,45 @@ public function getChannelVariables($channel = null)
}
}

/**
* Returns the channel variables for all reported channels.
* https://github.com/marcelog/PAMI/issues/85
*
* The channel names will be lowercased.
*
* @return array
*/
public function getAllStatusVariables()
{
return $this->statusVariables;
}

/**
* Returns the channel variables for the given channel.
* https://github.com/marcelog/PAMI/issues/85
*
* @param string $channel Channel name. If not given, will return variables
* for the "current" channel.
*
* @return array
*/
public function getStatusVariables($channel = null)
{
if (is_null($channel)) {
if (!isset($this->keys['channel'])) {
return $this->getChannelVariables('default');
} else {
return $this->getChannelVariables($this->keys['channel']);
}
} else {
$channel = strtolower($channel);
if (!isset($this->statusVariables[$channel])) {
return null;
}
return $this->statusVariables[$channel];
}
}

/**
* Constructor.
*
Expand All @@ -136,6 +181,7 @@ public function __construct($rawContent)
{
parent::__construct();
$this->channelVariables = array('default' => array());
$this->statusVariables = array('default' => array());
$this->rawContent = $rawContent;
$lines = explode(Message::EOL, $rawContent);
foreach ($lines as $line) {
Expand All @@ -155,13 +201,26 @@ public function __construct($rawContent)
unset($content[0]);
$value = isset($content[1]) ? trim(implode(':', $content)) : '';
$this->channelVariables[$chanName][$name] = $value;
} else if (!strncmp($name, 'variable', 8)) {
// https://github.com/marcelog/PAMI/issues/85
$matches = preg_match("/\(([^\)]*)\)/", $name, $captures);
$chanName = 'default';
if ($matches > 0) {
$chanName = $captures[1];
}
$content = explode('=', $value);
$name = strtolower(trim($content[0]));
unset($content[0]);
$value = isset($content[1]) ? trim(implode(':', $content)) : '';
$this->statusVariables[$chanName][$name] = $value;
} else {
$this->setKey($name, $value);
}
}
// https://github.com/marcelog/PAMI/issues/85
if (isset($this->keys['channel'])) {
$channel = strtolower($this->keys['channel']);

if (isset($this->channelVariables[$channel])) {
$this->channelVariables[$channel] = array_merge(
$this->channelVariables[$channel],
Expand All @@ -171,6 +230,16 @@ public function __construct($rawContent)
$this->channelVariables[$channel] = $this->channelVariables['default'];
}
unset($this->channelVariables['default']);

if (isset($this->statusVariables[$channel])) {
$this->statusVariables[$channel] = array_merge(
$this->statusVariables[$channel],
$this->statusVariables['default']
);
} else {
$this->statusVariables[$channel] = $this->statusVariables['default'];
}
unset($this->statusVariables['default']);
}
}
}

0 comments on commit 783f3dd

Please sign in to comment.