示例#1
0
/**
 * Creates a new blank submission in the database and returns the unique submission ID. If the
 * operation fails for whatever reason (e.g. the form doesn't exist), it just returns the empty
 * string.
 *
 * @param integer $form_id
 * @param integer $view_id
 * @param boolean $is_finalized whether the submission is finalized or not.
 */
function ft_create_blank_submission($form_id, $view_id, $is_finalized = false)
{
    global $g_table_prefix;
    if (!ft_check_form_exists($form_id)) {
        return "";
    }
    $now = ft_get_current_datetime();
    $ip = $_SERVER["REMOTE_ADDR"];
    // if the administrator has specified any default values for submissions created through this View
    $default_insert_pairs = array("submission_date" => $now, "last_modified_date" => $now, "ip_address" => $ip, "is_finalized" => $is_finalized ? "yes" : "no");
    $special_defaults = ft_get_new_view_submission_defaults($view_id);
    if (!empty($special_defaults)) {
        // find the field's DB column names so we can do our insert
        $field_id_to_value_map = array();
        foreach ($special_defaults as $curr_default_info) {
            $field_id_to_value_map[$curr_default_info["field_id"]] = ft_sanitize($curr_default_info["default_value"]);
        }
        $field_ids = array_keys($field_id_to_value_map);
        $field_id_to_column_name_map = ft_get_field_col_by_field_id($form_id, $field_ids);
        while (list($field_id, $col_name) = each($field_id_to_column_name_map)) {
            $default_insert_pairs[$col_name] = $field_id_to_value_map[$field_id];
        }
    }
    $col_names = implode(", ", array_keys($default_insert_pairs));
    $col_values = "'" . implode("', '", array_values($default_insert_pairs)) . "'";
    mysql_query("\n    INSERT INTO {$g_table_prefix}form_{$form_id} ({$col_names})\n    VALUES ({$col_values})\n      ");
    $new_submission_id = mysql_insert_id();
    extract(ft_process_hook_calls("end", compact("form_id", "now", "ip", "new_submission_id"), array()), EXTR_OVERWRITE);
    return $new_submission_id;
}
示例#2
0
// this updates all four sections of the view at once (since all may have been modified)
if (isset($request["update_view"])) {
    $request["form_id"] = $form_id;
    $request["view_fields_sortable_id"] = $view_fields_sortable_id;
    $request["submission_list_sortable_id"] = $submission_list_sortable_id;
    list($g_success, $g_message) = ft_update_view($view_id, $request);
}
$form_info = ft_get_form($form_id);
$form_fields = ft_get_form_fields($form_id, array("include_field_type_info" => true));
$view_info = ft_get_view($view_id);
$form_database_column_info = ft_get_form_column_names($form_id);
$view_clients = ft_get_view_clients($view_id);
$view_tabs = ft_get_view_tabs($view_id);
$grouped_fields = ft_get_grouped_view_fields($view_id);
$field_types = ft_get_field_type_names();
$new_view_submission_defaults = ft_get_new_view_submission_defaults($view_id);
// this returns ALL filters: standard and client map
$standard_filters = ft_get_view_filters($view_id, "standard");
$client_map_filters = ft_get_view_filters($view_id, "client_map");
$num_standard_filters = count($standard_filters);
$num_client_map_filters = count($client_map_filters);
$edit_view_tab = isset($_SESSION["ft"]["inner_tabs"]["edit_view"]) ? $_SESSION["ft"]["inner_tabs"]["edit_view"] : 1;
if (isset($request["edit_view_tab"])) {
    $edit_view_tab = $request["edit_view_tab"];
    $_SESSION["ft"]["inner_tabs"]["edit_view"] = $edit_view_tab;
}
$view_omit_list = ft_get_public_view_omit_list($view_id);
$num_clients_on_omit_list = count($view_omit_list);
// assumes view_ns.all_form_fields and view_ns.view_tabs JS arrays have been defined in manage_views.js
// The form fields info is needed throughout the Edit View tabs, so stashing them in the page JS makes sense
$js_string = "";
示例#3
0
文件: views.php 项目: jdearaujo/core
/**
 * Creates a new form View. If the $view_id parameter is set, it makes a copy of that View.
 * Otherwise, it creates a new blank view has *all* fields associated with it by default, a single tab
 * that is not enabled by default, no filters, and no clients assigned to it.
 *
 * @param integer $form_id the unique form ID
 * @param integer $group_id the view group ID that we're adding this View to
 * @param integer $create_from_view_id (optional) either the ID of the View from which to base this new View on,
 *                or "blank_view_no_fields" or "blank_view_all_fields"
 * @return integer the new view ID
 */
function ft_create_new_view($form_id, $group_id, $view_name = "", $create_from_view_id = "")
{
    global $g_table_prefix, $LANG;
    // figure out the next View order number
    $count_query = mysql_query("SELECT count(*) as c FROM {$g_table_prefix}views WHERE form_id = {$form_id}");
    $count_hash = mysql_fetch_assoc($count_query);
    $num_form_views = $count_hash["c"];
    $next_order = $num_form_views + 1;
    $view_name = empty($view_name) ? $LANG["phrase_new_view"] : ft_sanitize($view_name);
    if ($create_from_view_id == "blank_view_no_fields" || $create_from_view_id == "blank_view_all_fields") {
        // add the View with default values
        mysql_query("\r\n      INSERT INTO {$g_table_prefix}views (form_id, view_name, view_order, is_new_sort_group, group_id)\r\n      VALUES ({$form_id}, '{$view_name}', {$next_order}, 'yes', {$group_id})\r\n        ");
        $view_id = mysql_insert_id();
        // add the default tab
        mysql_query("INSERT INTO {$g_table_prefix}view_tabs (view_id, tab_number, tab_label) VALUES ({$view_id}, 1, '{$LANG["phrase_default_tab_label"]}')");
        mysql_query("INSERT INTO {$g_table_prefix}view_tabs (view_id, tab_number, tab_label) VALUES ({$view_id}, 2, '')");
        mysql_query("INSERT INTO {$g_table_prefix}view_tabs (view_id, tab_number, tab_label) VALUES ({$view_id}, 3, '')");
        mysql_query("INSERT INTO {$g_table_prefix}view_tabs (view_id, tab_number, tab_label) VALUES ({$view_id}, 4, '')");
        mysql_query("INSERT INTO {$g_table_prefix}view_tabs (view_id, tab_number, tab_label) VALUES ({$view_id}, 5, '')");
        mysql_query("INSERT INTO {$g_table_prefix}view_tabs (view_id, tab_number, tab_label) VALUES ({$view_id}, 6, '')");
        if ($create_from_view_id == "blank_view_all_fields") {
            _ft_populate_new_view_fields($form_id, $view_id);
        }
    } else {
        $view_info = ft_get_view($create_from_view_id);
        $view_info = ft_sanitize($view_info);
        // Main View Settings
        $view_order = $view_info["view_order"];
        $access_type = $view_info["access_type"];
        $num_submissions_per_page = $view_info["num_submissions_per_page"];
        $default_sort_field = $view_info["default_sort_field"];
        $default_sort_field_order = $view_info["default_sort_field_order"];
        $may_add_submissions = $view_info["may_add_submissions"];
        $may_edit_submissions = $view_info["may_edit_submissions"];
        $may_delete_submissions = $view_info["may_delete_submissions"];
        $has_standard_filter = $view_info["has_standard_filter"];
        $has_client_map_filter = $view_info["has_client_map_filter"];
        mysql_query("\r\n      INSERT INTO {$g_table_prefix}views (form_id, access_type, view_name, view_order, is_new_sort_group, group_id,\r\n        num_submissions_per_page, default_sort_field, default_sort_field_order, may_add_submissions, may_edit_submissions,\r\n        may_delete_submissions, has_client_map_filter, has_standard_filter)\r\n      VALUES ({$form_id}, '{$access_type}', '{$view_name}', {$next_order}, 'yes', {$group_id}, {$num_submissions_per_page},\r\n        '{$default_sort_field}', '{$default_sort_field_order}', '{$may_add_submissions}', '{$may_edit_submissions}',\r\n        '{$may_delete_submissions}', '{$has_client_map_filter}', '{$has_standard_filter}')\r\n        ");
        $view_id = mysql_insert_id();
        foreach ($view_info["client_info"] as $client_info) {
            $account_id = $client_info["account_id"];
            mysql_query("INSERT INTO {$g_table_prefix}client_views (account_id, view_id) VALUES ({$account_id}, {$view_id})");
        }
        // View Tabs
        $tabs = $view_info["tabs"];
        $tab1 = $tabs[1]["tab_label"];
        $tab2 = $tabs[2]["tab_label"];
        $tab3 = $tabs[3]["tab_label"];
        $tab4 = $tabs[4]["tab_label"];
        $tab5 = $tabs[5]["tab_label"];
        $tab6 = $tabs[6]["tab_label"];
        mysql_query("INSERT INTO {$g_table_prefix}view_tabs (view_id, tab_number, tab_label) VALUES ({$view_id}, 1, '{$tab1}')");
        mysql_query("INSERT INTO {$g_table_prefix}view_tabs (view_id, tab_number, tab_label) VALUES ({$view_id}, 2, '{$tab2}')");
        mysql_query("INSERT INTO {$g_table_prefix}view_tabs (view_id, tab_number, tab_label) VALUES ({$view_id}, 3, '{$tab3}')");
        mysql_query("INSERT INTO {$g_table_prefix}view_tabs (view_id, tab_number, tab_label) VALUES ({$view_id}, 4, '{$tab4}')");
        mysql_query("INSERT INTO {$g_table_prefix}view_tabs (view_id, tab_number, tab_label) VALUES ({$view_id}, 5, '{$tab5}')");
        mysql_query("INSERT INTO {$g_table_prefix}view_tabs (view_id, tab_number, tab_label) VALUES ({$view_id}, 6, '{$tab6}')");
        // with 2.1.0, all View fields are now grouped. We need to duplicate all the groups as well as the fields
        $group_id_map = ft_duplicate_view_field_groups($create_from_view_id, $view_id);
        $field_view_inserts = array();
        foreach ($view_info["fields"] as $field_info) {
            $field_id = $field_info["field_id"];
            $new_group_id = $group_id_map[$field_info["group_id"]];
            $is_editable = $field_info["is_editable"];
            $is_searchable = $field_info["is_searchable"];
            $list_order = $field_info["list_order"];
            $is_new_sort_group = $field_info["is_new_sort_group"];
            $field_view_inserts[] = "({$view_id}, {$field_id}, {$new_group_id}, '{$is_editable}', '{$is_searchable}', {$list_order}, '{$is_new_sort_group}')";
        }
        if (!empty($field_view_inserts)) {
            $field_view_inserts_str = implode(",\n", $field_view_inserts);
            mysql_query("\r\n        INSERT INTO {$g_table_prefix}view_fields (view_id, field_id, group_id, is_editable,\r\n          is_searchable, list_order, is_new_sort_group)\r\n        VALUES {$field_view_inserts_str}\r\n      ");
        }
        $view_column_inserts = array();
        foreach ($view_info["columns"] as $field_info) {
            $field_id = $field_info["field_id"];
            $list_order = $field_info["list_order"];
            $is_sortable = $field_info["is_sortable"];
            $auto_size = $field_info["auto_size"];
            $custom_width = $field_info["custom_width"];
            $truncate = $field_info["truncate"];
            $view_column_inserts[] = "({$view_id}, {$field_id}, {$list_order}, '{$is_sortable}', '{$auto_size}', '{$custom_width}', '{$truncate}')";
        }
        if (!empty($view_column_inserts)) {
            $view_column_insert_str = implode(",\n", $view_column_inserts);
            mysql_query("\r\n        INSERT INTO {$g_table_prefix}view_columns (view_id, field_id, list_order, is_sortable, auto_size, custom_width, truncate)\r\n        VALUES {$view_column_insert_str}\r\n      ");
        }
        // View Filters
        foreach ($view_info["filters"] as $filter_info) {
            $field_id = $filter_info["field_id"];
            $filter_type = $filter_info["filter_type"];
            $operator = $filter_info["operator"];
            $filter_values = $filter_info["filter_values"];
            $filter_sql = $filter_info["filter_sql"];
            mysql_query("\r\n        INSERT INTO {$g_table_prefix}view_filters (view_id, filter_type, field_id, operator, filter_values, filter_sql)\r\n        VALUES ({$view_id}, '{$filter_type}', {$field_id}, '{$operator}', '{$filter_values}', '{$filter_sql}')\r\n          ");
        }
        // default submission values
        $submission_defaults = ft_get_new_view_submission_defaults($create_from_view_id);
        foreach ($submission_defaults as $row) {
            $field_id = $row["field_id"];
            $default_value = ft_sanitize($row["default_value"]);
            $list_order = $row["list_order"];
            mysql_query("\r\n    \t  INSERT INTO {$g_table_prefix}new_view_submission_defaults (view_id, field_id, default_value, list_order)\r\n    \t  VALUES ({$view_id}, {$field_id}, '{$default_value}', {$list_order})\r\n    \t");
        }
        // public View omit list
        $client_ids = ft_get_public_view_omit_list($create_from_view_id);
        foreach ($client_ids as $client_id) {
            mysql_query("\r\n        INSERT INTO {$g_table_prefix}public_view_omit_list (view_id, account_id)\r\n        VALUES ({$view_id}, {$client_id})\r\n      ");
        }
    }
    extract(ft_process_hook_calls("end", compact("view_id"), array()), EXTR_OVERWRITE);
    return $view_id;
}