<?php
-# Copyright (C) 2006 Jason Woofenden
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# This program is in the public domain within the United States. Additionally,
+# we waive copyright and related rights in the work worldwide through the CC0
+# 1.0 Universal public domain dedication, which can be found at
+# http://creativecommons.org/publicdomain/zero/1.0/
# This file writes the code for you (sql, php, html, email) to handle a form.
-require_once(__DIR__ . '/template.php');
-require_once(__DIR__ . '/http.php');
-require_once(__DIR__ . '/tar.php');
-require_once(__DIR__ . '/format.php');
+require_once(__DIR__.'/'.'template.php');
+require_once(__DIR__.'/'.'http.php');
+require_once(__DIR__.'/'.'tar.php');
+require_once(__DIR__.'/'.'format.php');
-# see code/wfpl/metaform/template.html for the html templates for these elements
+# see wfpl/metaform/template.html for the html templates for these elements
$GLOBALS['types'] = array(
# type input format sql
'varname' => array('textbox', 'varname', 'varchar(50) binary'),
'opt_public_display',
'opt_public_something');
foreach($bools as $bool) {
- if($GLOBALS[$bool]) {
+ if(isset($GLOBALS[$bool]) && $GLOBALS[$bool]) {
$tem->set($bool);
}
}
}
-function metaform() {
+function metaform_main() {
if(isset($_REQUEST['singular'])) {
- $GLOBALS['file_name'] = format_varname($_REQUEST['file_name']);
- $GLOBALS['table_name'] = format_varname($_REQUEST['table_name']);
- $GLOBALS['plural'] = format_oneline($_REQUEST['plural']);
+ $GLOBALS['file_name'] = format_varname(_REQUEST_cut('file_name'));
+ $GLOBALS['table_name'] = format_varname(_REQUEST_cut('table_name'));
+ $GLOBALS['plural'] = format_oneline(_REQUEST_cut('plural'));
# backwards compatibility:
if(isset($_REQUEST['form_name'])) {
- $GLOBALS['file_name'] = $GLOBALS['table_name'] = $GLOBALS['plural'] = format_varname($_REQUEST['form_name']);
+ $GLOBALS['file_name'] = $GLOBALS['table_name'] = $GLOBALS['plural'] = format_varname(_REQUEST_cut('form_name'));
}
- $GLOBALS['singular'] = format_oneline($_REQUEST['singular']);
- $GLOBALS['opt_email'] = format_bool($_REQUEST['opt_email']);
- $GLOBALS['opt_db'] = format_bool($_REQUEST['opt_db']);
- $GLOBALS['opt_listing'] = format_bool($_REQUEST['opt_listing']);
- $GLOBALS['opt_display'] = format_bool($_REQUEST['opt_display']);
- $GLOBALS['opt_pass'] = format_bool($_REQUEST['opt_pass']);
- $GLOBALS['opt_public_form'] = format_bool($_REQUEST['opt_public_form']);
- $GLOBALS['opt_public_display'] = format_bool($_REQUEST['opt_public_display']);
+ $GLOBALS['singular'] = format_oneline(_REQUEST_cut('singular'));
+ $GLOBALS['opt_email'] = format_bool(_REQUEST_cut('opt_email'));
+ $GLOBALS['opt_db'] = format_bool(_REQUEST_cut('opt_db'));
+ $GLOBALS['opt_listing'] = format_bool(_REQUEST_cut('opt_listing'));
+ $GLOBALS['opt_display'] = format_bool(_REQUEST_cut('opt_display'));
+ $GLOBALS['opt_pass'] = format_bool(_REQUEST_cut('opt_pass'));
+ $GLOBALS['opt_public_form'] = format_bool(_REQUEST_cut('opt_public_form'));
+ $GLOBALS['opt_public_display'] = format_bool(_REQUEST_cut('opt_public_display'));
$GLOBALS['public_file_name'] = $GLOBALS['file_name'];
if($GLOBALS['opt_public_form'] || $GLOBALS['opt_public_display']) {
$GLOBALS['opt_public_something'] = 1;
$GLOBALS['file_name'] = $GLOBALS['file_name'] . _admin;
+ } else {
+ $GLOBALS['opt_public_something'] = 0;
}
tem_init();
set_form_action();
- tem_load('code/wfpl/metaform/main.html');
+ tem_load(__DIR__.'/'.'metaform/main.html');
list_available_types();
tem_output();
+ exit(); # in case we're being called by wfpl_main or something
}
$fields_str = unix_newlines($_REQUEST['fields']);
$GLOBALS['gotten_fields'] = array();
$fields_str = rtrim($fields_str);
- $fields = split("\n", $fields_str);
+ $fields = explode("\n", $fields_str);
foreach($fields as $field) {
+ $first_char = substr($field, 0, 1);
$field = trim($field);
+ if ($first_char === ' ' || $first_char === "\t") {
+ $i = count($GLOBALS['gotten_fields']);
+ if($i > 0) {
+ $i -= 1;
+ if (!$GLOBALS['gotten_fields'][$i]['options']) {
+ $GLOBALS['gotten_fields'][$i]['options'] = array();
+ }
+ $GLOBALS['gotten_fields'][$i]['options'][] = $field;
+ continue;
+ }
+ }
if(substr($field, -1) == '{') {
$caption = trim(substr($field, 0, -1));
$name = format_varname($caption);
$type = '{';
$options = null;
- # FIXME restore parsing of option lists for pulldowns
} else {
$options = null;
$type = null;
# this one, that you're using to create forms
function set_form_action() {
- $action = ereg_replace('.*/', '', $_SERVER['REQUEST_URI']);
+ $action = preg_replace('|.*/|', '', $_SERVER['REQUEST_URI']);
if($action == '') $action = './';
tem_set('form_action', $action);
}
function make_sql() {
$tem = new tem();
- $tem->load('code/wfpl/metaform/template.sql');
+ $tem->load(__DIR__.'/'.'metaform/template.sql');
tem_set_globals($tem);
$fields = get_fields();
foreach($fields as $field) {
function make_html($whole_file = true) {
$has_html_editors = false;
$tem = new tem();
- $tem->load('code/wfpl/metaform/template.html');
+ $tem->load(__DIR__.'/'.'metaform/template.html');
tem_set_globals($tem);
$fields = get_fields();
$tem->set('always_field', find_always_field($fields));
'caption' => $field['caption']
)
);
+ if($field['type'] == 'radio') {
+ $i = 0;
+ $opts = array();
+ foreach ($field['options'] as $row) {
+ if (is_array($row)) {
+ $cap = $row[1];
+ } else {
+ $cap = $row;
+ }
+ $opts[] = array('i' => $i, 'option_caption' => $cap);
+ $i += 1;
+ }
+ $visible_fields[count($visible_fields) - 1]['options'] = $opts;
+ }
}
if($field['input'] == 'image' || $field['input'] == 'file') {
function make_php() {
$has_html_editors = false;
$tem = new tem();
- $tem->load('code/wfpl/metaform/template.php');
+ $tem->load(__DIR__.'/'.'metaform/template.php');
tem_set_globals($tem);
$fields = get_fields();
$db_fields = '';
$always_field = find_always_field($fields);
$image_included_yet = false;
$name_to_caption = array();
+ $has_uploads = false;
foreach($fields as $field) {
$name_to_caption[] = array('name' => $field['name'], 'caption' => $field['caption']);
if($field['input'] != 'submit') {
# make a URL for the edit page with all the fields filled in
function edit_url() {
$url = this_url();
- $url = ereg_replace('view_php=[^&]*', 'edit=yes', $url);
- $url = ereg_replace('download_tar=[^&]*', 'edit=yes', $url);
- $url = ereg_replace('/[a-z0-9_.]*\?', '/?', $url);
- $url = str_replace('jasonwoof.l', 'jasonwoof.com', $url); # so that code generated on Jason's home computer will display a publically accessible link.
+ $url = preg_replace('|view_php=[^&]*|', 'edit=yes', $url);
+ $url = preg_replace('|download_tar=[^&]*|', 'edit=yes', $url);
+ $url = preg_replace('|/[a-z0-9_.]*\?|', '/?', $url);
return $url;
}
function make_email() {
$tem = new tem();
- $tem->load('code/wfpl/metaform/template.email.txt');
+ $tem->load(__DIR__.'/'.'metaform/template.email.txt');
tem_set_globals($tem);
$fields = get_fields();
foreach($fields as $field) {
function make_htaccess() {
$tem = new tem();
$tem->set('form', $GLOBALS['file_name']);
- return $tem->run('code/wfpl/metaform/htaccess');
+ return $tem->run(__DIR__.'/'.'metaform/htaccess');
}
function view_email() {
}
function preview() {
- tem_load('code/wfpl/metaform/preview.html');
+ tem_load(__DIR__.'/'.'metaform/preview.html');
tem_set_globals($GLOBALS['wfpl_template']);
tem_set('fields', $_REQUEST['fields']);
$preview_tem = new tem();
}
$preview = $preview_tem->run();
unset($preview_tem);
- $preview = ereg_replace('type="submit"', 'type="submit" disabled="disabled"', $preview);
+ $preview = preg_replace('|type="submit"|', 'type="submit" disabled="disabled"', $preview);
tem_set('preview', $preview);
tem_show('hiddens');
set_form_action();
$admin_name = $GLOBALS['file_name'];
$nice_name = $GLOBALS['public_file_name'];
$files = array(
- "INSTALL" => read_whole_file('code/wfpl/metaform/INSTALL'),
+ "README" => "These files are meant to work with wfpl.\n\nSee: http://sametwice.com/wfpl\n",
".htaccess" => make_htaccess(),
- "run.php" => "<?php\n\nrequire_once(__DIR__ . '/code/wfpl/run.php');\n",
- "style.less" => read_whole_file('code/wfpl/metaform/style.less'),
- "template.html" => read_whole_file('code/wfpl/metaform/site-template.html'),
+ "config.php" => "<?php\n\n# put your site-wide configuration here\n",
+ "wfpl_main.php" => read_whole_file(__DIR__.'/'.'metaform/wfpl_main.php'),
+ "styl.styl" => read_whole_file(__DIR__.'/'.'metaform/styl.styl'),
+ "template.html" => read_whole_file(__DIR__.'/'.'metaform/site-template.html'),
"$admin_name.html" => make_html(),
"$admin_name.php" => make_php());
if($GLOBALS['opt_public_something']) {
}
make_tar($nice_name, $files);
}
-
-
-metaform();
-exit();