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':
case 'order':
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_subtopics");
}
$parameters[$parameter] = (int) $value;
} else {
$parameters[$parameter] = $value;
}
break;
case 'direct':
$parameters[$parameter] = filter_var($value, FILTER_VALIDATE_BOOLEAN);
break;
default:
CampTemplate::singleton()->trigger_error("invalid parameter {$parameter} in list_subtopics", $p_smarty);
}
}
// 'topic_identifier' and 'language_id' parameters are needed for the cache key
$context = CampTemplate::singleton()->context();
$parameters['topic_identifier'] = $context->topic->identifier;
if (is_null($parameters['topic_identifier'])) {
$parameters['topic_identifier'] = 0;
}
$parameters['language_id'] = $context->language->number;
return $parameters;
}