$placeholders["display_fields"] = $display_fields; $placeholders["submissions"] = $results_info["search_rows"]; $placeholders["num_results"] = $results_info["search_num_results"]; $placeholders["view_num_results"] = $results_info["view_num_results"]; $placeholders["form_info"] = $form_info; $placeholders["view_info"] = $view_info; $placeholders["timezone_offset"] = $_SESSION["ft"]["account"]["timezone_offset"]; // pull out a few things into top level placeholders for easy use $placeholders["form_id"] = $form_id; $placeholders["form_name"] = $form_info["form_name"]; $placeholders["form_url"] = $form_info["form_url"]; $placeholders["view_id"] = $view_id; $placeholders["view_name"] = $view_info["view_name"]; $placeholders["settings"] = ft_get_settings(); $export_group_info = exp_get_export_group($export_group_id); $export_types = exp_get_export_types($export_group_id); // if the export type ID isn't available, the export group only contains a single (visible) export type $export_type_info = array(); if (empty($export_type_id)) { foreach ($export_types as $curr_export_type_info) { if ($curr_export_type_info["export_type_visibility"] == "show") { $export_type_info = $curr_export_type_info; break; } } } else { $export_type_info = exp_get_export_type($export_type_id); } $placeholders["export_group_name"] = ft_create_slug(ft_eval_smarty_string($export_group_info["group_name"])); $placeholders["export_group_type"] = ft_create_slug(ft_eval_smarty_string($export_type_info["export_type_name"])); $placeholders["page_type"] = $export_group_info["action"];
/** * This function is used when drawing the visible export options to ths page. It determines which export groups & * types get displayed for a particular form, View and account. * * @param mixed $account_id - "admin" or the client ID * @param integer $form_id * @param integer $view_id * @return array an array of hashes */ function exp_get_assigned_export_types($account_id, $form_id, $view_id) { global $g_table_prefix; $is_client = $account_id == "admin" ? false : true; // Step 1: get all accessible export GROUPS $private_client_accessible_export_group_ids = array(); if ($is_client) { $query = mysql_query("\n SELECT export_group_id\n FROM {$g_table_prefix}module_export_group_clients\n WHERE account_id = {$account_id}\n "); while ($row = mysql_fetch_assoc($query)) { $private_client_accessible_export_group_ids[] = $row["export_group_id"]; } } $export_groups = exp_get_export_groups(); $accessible_export_groups = array(); foreach ($export_groups as $group) { if ($group["visibility"] == "hide") { continue; } if ($group["access_type"] == "public") { $accessible_export_groups[] = $group; } else { if ($is_client) { if ($group["access_type"] != "admin" && in_array($group["export_group_id"], $private_client_accessible_export_group_ids)) { $accessible_export_groups[] = $group; } } else { $accessible_export_groups[] = $group; } } } // so far so good. We now have a list of export groups that hav been filtered by visibility & whether // the client can see them. Next, factor in the current form ID and view ID $filtered_export_groups = array(); foreach ($accessible_export_groups as $export_group) { if ($export_group["form_view_mapping"] == "all") { $filtered_export_groups[] = $export_group; } else { if ($export_group["form_view_mapping"] == "only") { $mapping = exp_deserialized_export_group_mapping($export_group["forms_and_views"]); if (!in_array($form_id, $mapping["form_ids"])) { continue; } if (in_array("form{$form_id}_all_views", $mapping["view_ids"]) || in_array($view_id, $mapping["view_ids"])) { $filtered_export_groups[] = $export_group; } } else { if ($export_group["form_view_mapping"] == "except") { $mapping = exp_deserialized_export_group_mapping($export_group["forms_and_views"]); if (in_array("form{$form_id}_all_views", $mapping["view_ids"])) { continue; } if (in_array($view_id, $mapping["view_ids"])) { continue; } $filtered_export_groups[] = $export_group; } } } } // Step 2: alright! Now we get the list of export types for the accessible Views $export_groups_and_types = array(); foreach ($filtered_export_groups as $export_group) { $export_types = exp_get_export_types($export_group["export_group_id"], true); if (count($export_types) == 0) { continue; } $export_group["export_types"] = $export_types; $export_groups_and_types[] = $export_group; } return $export_groups_and_types; }