X-Git-Url: https://jasonwoof.com/gitweb/?p=wfpl.git;a=blobdiff_plain;f=metaform.php;h=e31a9a4bf435e3e86a2d9844733b8bc3903a0ffb;hp=2be93ea925b54c394502921aedf1c2a268bfa314;hb=HEAD;hpb=e057305351d93155bf9f0d2c664b6eb859d83bf4 diff --git a/metaform.php b/metaform.php index 2be93ea..e31a9a4 100644 --- a/metaform.php +++ b/metaform.php @@ -1,19 +1,9 @@ . +# 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. @@ -23,7 +13,7 @@ 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'), @@ -89,35 +79,37 @@ function tem_set_globals(&$tem) { '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(); @@ -153,9 +145,10 @@ function metaform() { 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 } @@ -172,15 +165,26 @@ function get_fields() { $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; @@ -239,7 +243,7 @@ function get_fields() { # 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); } @@ -254,7 +258,7 @@ function view_headers() { 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) { @@ -297,7 +301,7 @@ function find_always_field(&$fields) { 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)); @@ -316,6 +320,20 @@ function make_html($whole_file = true) { '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') { @@ -443,13 +461,14 @@ function pulldown_options_array($options) { 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') { @@ -526,10 +545,9 @@ function make_php() { # 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; } @@ -540,7 +558,7 @@ function view_php() { 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) { @@ -561,7 +579,7 @@ function make_email() { 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() { @@ -570,7 +588,7 @@ 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(); @@ -586,7 +604,7 @@ function preview() { } $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(); @@ -597,11 +615,12 @@ function download_tar() { $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" => " read_whole_file('code/wfpl/metaform/styl.styl'), - "template.html" => read_whole_file('code/wfpl/metaform/site-template.html'), + "config.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']) { @@ -616,7 +635,3 @@ function download_tar() { } make_tar($nice_name, $files); } - - -metaform(); -exit();