/** * Deletes an option list from the database. Note: it only deletes lists that don't have any * form fields assigned to them; generally this is prevented from being called unless that condition is * met, but it also checks here just in case. * * @param integer $list_id * @return array [0] T/F<br /> * [1] error/success message */ function ft_delete_option_list($list_id) { global $g_table_prefix, $LANG; // slight behavioural change in 2.1.0. Now you CAN delete Option Lists that are used by one or more fields. // It just clears any references, thus leaving those fields incompletely configured (which isn't the end of // the world!) $fields = ft_get_fields_using_option_list($list_id); foreach ($fields as $field_info) { $field_id = $field_info["field_id"]; $field_type_id = $field_info["field_type_id"]; $settings = ft_get_field_type_settings($field_type_id); $setting_ids = array(); foreach ($settings as $setting_info) { if ($setting_info["field_type"] == "option_list_or_form_field") { $setting_ids[] = $setting_info["setting_id"]; } } if (empty($setting_ids)) { continue; } $setting_id_str = implode(",", $setting_ids); // now we delete any entries in the field_settings table with field_id, setting_id and a NUMERIC value for the // setting_value column. That column is also mysql_query("\n DELETE FROM {$g_table_prefix}field_settings\n WHERE field_id = {$field_id} AND\n setting_id IN ({$setting_id_str}) AND\n setting_value NOT LIKE 'form_field%'\n "); } mysql_query("DELETE FROM {$g_table_prefix}field_options WHERE list_id = {$list_id}"); mysql_query("DELETE FROM {$g_table_prefix}option_lists WHERE list_id = {$list_id}"); mysql_query("DELETE FROM {$g_table_prefix}list_groups WHERE group_type = 'option_list_{$list_id}'"); $success = true; $message = $LANG["notify_option_list_deleted"]; extract(ft_process_hook_calls("end", compact("list_id"), array("success", "message")), EXTR_OVERWRITE); return array(true, $message); }
$total_num_option_lists = ft_get_num_option_lists(); $total_pages = ceil($total_num_option_lists / $num_option_lists_per_page); if ($option_list_page > $total_pages) { $option_list_page = $total_pages; } $list_info = ft_get_option_lists($option_list_page, $order); $num_option_lists = $list_info["num_results"]; $option_lists = $list_info["results"]; $updated_field_option_groups = array(); $updated_option_lists = array(); foreach ($option_lists as $option_list) { $list_id = $option_list["list_id"]; // add the number of fields that use this option group $option_list["num_fields"] = ft_get_num_fields_using_option_list($list_id); if ($option_list["num_fields"] > 0) { $option_list["fields"] = ft_get_fields_using_option_list($list_id, array("group_by_form" => true)); } // add the total number of options in this group $option_list["num_option_list_options"] = ft_get_num_options_in_option_list($list_id); $updated_option_lists[] = $option_list; } $all_option_lists = ft_get_option_lists("all"); // ------------------------------------------------------------------------------------------------ // compile template info $page_vars = array(); $page_vars["page"] = "option_lists"; $page_vars["text_option_list_page"] = ft_eval_smarty_string($LANG["text_option_list_page"], array("link" => "../add/step1.php")); $page_vars["page_url"] = ft_get_page_url("option_lists"); $page_vars["head_title"] = $LANG["phrase_option_lists"]; $page_vars["option_lists"] = $updated_option_lists; $page_vars["num_option_lists"] = $num_option_lists;
<?php // this tab displays all the form fields that use this field option group $list_info = ft_get_option_list($list_id); $form_fields = array(); if ($num_fields > 0) { $form_fields = ft_get_fields_using_option_list($list_id); } $forms = ft_get_forms(); $incomplete_forms = array(); foreach ($forms as $form_info) { if ($form_info["is_complete"] == "no") { $incomplete_forms[] = $form_info["form_id"]; } } // ------------------------------------------------------------------------------------------------ $page_vars["list_info"] = $list_info; $page_vars["page_url"] = ft_get_page_url("edit_option_list"); $page_vars["head_title"] = $LANG["phrase_edit_option_list"]; $page_vars["num_fields_using_option_list"] = $num_fields; $page_vars["incomplete_forms"] = $incomplete_forms; $page_vars["form_fields"] = $form_fields; ft_display_page("admin/forms/option_lists/edit.tpl", $page_vars);