protected function ProcessParameters(array $p_parameters)
{
$parameters = array();
foreach ($p_parameters as $parameter => $value) {
$parameter = strtolower($parameter);
switch ($parameter) {
case 'length':
case 'columns':
case 'name':
if ($parameter == 'length' || $parameter == 'columns') {
$intValue = (int) $value;
if ("{$intValue}" != $value || $intValue < 0) {
CampTemplate::singleton()->trigger_error("invalid value {$value} of parameter {$parameter} in statement list_article_topics");
}
$parameters[$parameter] = (int) $value;
} else {
$parameters[$parameter] = $value;
}
break;
case 'root':
$arrayTopics = explode(';', (string) $value);
for ($i = 0, $count = count($arrayTopics); $i < $count; $i++) {
$metaTopic = new MetaTopic($arrayTopics[$i]);
if (!$metaTopic->defined) {
CampTemplate::singleton()->trigger_error("invalid value " . $arrayTopics[$i] . " of parameter {$parameter} in statement list_article_topics");
return array();
}
$operator = new Operator('is', 'integer');
$this->m_constraints[] = new ComparisonOperation('roottopic', $operator, $metaTopic->identifier);
}
break;
default:
CampTemplate::singleton()->trigger_error("invalid parameter {$parameter} in list_article_topics", $p_smarty);
}
}
$operator = new Operator('is', 'integer');
$context = CampTemplate::singleton()->context();
if (!$context->article->defined) {
CampTemplate::singleton()->trigger_error("undefined environment attribute 'Article' in statement list_article_topics");
return array();
}
$this->m_constraints[] = new ComparisonOperation('nrarticle', $operator, $context->article->number);
return $parameters;
}