diff options
author | Scott Ullrich <sullrich@pfsense.org> | 2005-01-31 03:54:18 +0000 |
---|---|---|
committer | Scott Ullrich <sullrich@pfsense.org> | 2005-01-31 03:54:18 +0000 |
commit | dcbe6f52822e0bb32b8e45537b95b4b89d75f4d7 (patch) | |
tree | be05095c8c0001ca048ea1aaf02b7c6bdc3dfa34 /usr | |
parent | 49879dd68b82f824536f8ed7b361844cab21d181 (diff) | |
download | pfsense-dcbe6f52822e0bb32b8e45537b95b4b89d75f4d7.zip pfsense-dcbe6f52822e0bb32b8e45537b95b4b89d75f4d7.tar.gz |
Add template support to packages. Useful for generating the packages .conf files and such.
Diffstat (limited to 'usr')
-rwxr-xr-x | usr/local/www/pkg_edit.php | 89 |
1 files changed, 88 insertions, 1 deletions
diff --git a/usr/local/www/pkg_edit.php b/usr/local/www/pkg_edit.php index 80a6c63..eaf8fed 100755 --- a/usr/local/www/pkg_edit.php +++ b/usr/local/www/pkg_edit.php @@ -167,7 +167,13 @@ include("fbegin.inc"); eval($pkg['custom_php_resync_config_command']); } - header("Location: pkg.php?xml=" . $xml); + parse_package_templates(); + + if($pkg['aftersaveredirect'] <> "") { + header("Location: " . $pkg['aftersaveredirect']); + } else { + header("Location: pkg.php?xml=" . $xml); + } exit; } } @@ -477,4 +483,85 @@ function fixup_string($string) { return $newstring; } +/* + * Parse templates if they are defined + */ +function parse_package_templates() { + global $pkg, $config; + if($pkg['templates']['template'] <> "") + foreach($pkg['templates']['template'] as $pkg_template_row) { + $filename = $pkg_template_row['filename']; + $template_text = $pkg_template_row['templatecontents']; + + /* calculate total row helpers count */ + foreach ($pkg['fields']['field'] as $fields) { + if($fields['type'] == "rowhelper") { + // save rowhelper items. + $row_helper_total_rows = 0; + for($x=0; $x<99; $x++) { // XXX: this really should be passed from the form. + foreach($fields['rowhelper']['rowhelperfield'] as $rowhelperfield) { + if($firstfield == "") { + $firstfield = $rowhelperfield['fieldname']; + } else { + if($firstfield == $rowhelperfield['fieldname']) $rows++; + } + $comd = "\$value = \$_POST['" . $rowhelperfield['fieldname'] . $x . "'];"; + eval($comd); + if($value <> "") { + //$template_text = str_replace($fieldname . "_fieldvalue", $fieldvalue, $template_text); + } else { + $row_helper_total_rows = $rows; + break; + } + } + } + } + } + + /* replace $domain_total_rows with total rows */ + $template_text = str_replace("$domain_total_rows", $row_helper_total_rows, $template_text); + + /* change fields defined as fieldname_fieldvalue to their value */ + foreach ($pkg['fields']['field'] as $fields) { + if($fields['type'] == "rowhelper") { + // save rowhelper items. + for($x=0; $x<99; $x++) { // XXX: this really should be passed from the form. + $row_helper_data = ""; + foreach($fields['rowhelper']['rowhelperfield'] as $rowhelperfield) { + if($firstfield == "") { + $firstfield = $rowhelperfield['fieldname']; + } else { + if($firstfield == $rowhelperfield['fieldname']) $rows++; + } + $comd = "\$value = \$_POST['" . $rowhelperfield['fieldname'] . $x . "'];"; + eval($comd); + if($value <> "") { + $row_helper_data .= $value . " " ; + } + ereg($rowhelperfield['fieldname'] . "_fieldvalue\[(.*)\]", $template_text, $sep); + foreach ($sep as $se) $seperator = $se; + if($seperator <> "") { + $row_helper_data = ereg_replace(" ", $seperator, $row_helper_data); + $template_text = ereg_replace("\[" . $seperator . "\]", "", $template_text); + } + $template_text = str_replace($rowhelperfield['fieldname'] . "_fieldvalue", $row_helper_data, $template_text); + } + } + } else { + $fieldname = $fields['fieldname']; + $fieldvalue = $_POST[$fieldname]; + $template_text = str_replace($fieldname . "_fieldvalue", $fieldvalue, $template_text); + } + } + + /* replace cr's */ + $template_text = str_replace("\\n", "\n", $template_text); + + /* write out new template file */ + $fout = fopen($filename,"w"); + fwrite($fout, $template_text); + fclose($fout); + } +} + ?>
\ No newline at end of file |