/**
  * Returns predefined text for a newly created page (only via Halo AJAX API)
  *
  * @param Title $title current Title
  * @param string $categoryTemplate template name (without namespace prefix)
  * @param hash array $parameterMappings (name=>value)
  * @return string predefined text 
  */
 public static function getPredefinitions($title, $template, $parameterMappings)
 {
     self::$title = $title;
     // parse template parameters
     $rev = Revision::newFromTitle(Title::newFromText($template, NS_TEMPLATE));
     if (is_null($rev)) {
         return "";
     }
     $text = $rev->getText();
     preg_match_all('/\\{\\{\\{([^}]+)\\}\\}\\}/', $text, $matches);
     // serialize template with predefined values
     $resultText = "\n{{" . $template;
     $parameters = array_unique($matches[1]);
     for ($i = 0; $i < count($parameters); $i++) {
         $parameters[$i] = trim(str_replace("|", "", $parameters[$i]));
     }
     foreach ($parameters as $m) {
         if ($m == '') {
             continue;
         }
         if (array_key_exists($m, $parameterMappings)) {
             $mappedValue = self::mappedValue($parameterMappings[$m]);
             $resultText .= "\n|{$m}=" . $mappedValue;
         } else {
             $resultText .= "\n|{$m}=";
         }
     }
     // adds additional parameters not found in the template
     $additionalParameters = array_diff(array_keys($parameterMappings), $parameters);
     foreach ($additionalParameters as $sp) {
         $mappedValue = self::mappedValue($parameterMappings[$sp]);
         if ($sp != '') {
             $resultText .= "\n|{$sp}=" . $mappedValue;
         }
     }
     $resultText .= "\n}}\n";
     return $resultText;
 }