/** * Gets the << prev, next >> etc. link HTML for the current submission. */ function _ft_code_get_link_html($form_id, $view_id, $submission_id, $results_per_page) { global $LANG; // defaults! As of 2.1.0, the navigation always appears. This is better for consistency's sake $previous_link_html = "<span class=\"light_grey\">{$LANG['word_previous_leftarrow']}</span>"; $next_link_html = "<span class=\"light_grey\">{$LANG['word_next_rightarrow']}</span>"; $search_results_link_html = "<a href=\"submissions.php?form_id={$form_id}\">{$LANG['phrase_back_to_search_results']}</a>"; if (isset($_SESSION["ft"]["form_{$form_id}_view_{$view_id}_submissions"]) && !empty($_SESSION["ft"]["form_{$form_id}_view_{$view_id}_submissions"])) { $php_self = ft_get_clean_php_self(); $submission_ids = $_SESSION["ft"]["form_{$form_id}_view_{$view_id}_submissions"]; $current_sub_id_index = array_search($submission_id, $submission_ids); if (!empty($current_sub_id_index) || $current_sub_id_index === 0) { // PREVIOUS link if ($submission_ids[0] != $submission_id && $current_sub_id_index != 0) { $previous_submission_id = $submission_ids[$current_sub_id_index - 1]; $previous_link_html = "<a href=\"{$php_self}?form_id={$form_id}&view_id={$view_id}&submission_id={$previous_submission_id}\">{$LANG['word_previous_leftarrow']}</a>"; } $submission_ids_per_page = array_chunk($submission_ids, 10); $return_page = 1; for ($i = 0; $i < count($submission_ids_per_page); $i++) { if (in_array($submission_id, $submission_ids_per_page[$i])) { $return_page = $i + 1; break; } } // NEXT link if ($submission_ids[count($submission_ids) - 1] != $submission_id) { $next_submission_id = $submission_ids[$current_sub_id_index + 1]; $next_link_html = "<a href=\"{$php_self}?form_id={$form_id}&view_id={$view_id}&submission_id={$next_submission_id}\">{$LANG['word_next_rightarrow']}</a>"; } } } return array($previous_link_html, $search_results_link_html, $next_link_html); }
function smarty_function_display_edit_submission_view_dropdown($params, &$smarty) { global $LANG; if (empty($params["form_id"])) { $smarty->trigger_error("assign: missing 'form_id' parameter."); return; } if (empty($params["view_id"])) { $smarty->trigger_error("assign: missing 'view_id' parameter."); return; } if (empty($params["submission_id"])) { $smarty->trigger_error("assign: missing 'submission_id' parameter."); return; } if (empty($params["account_id"])) { $smarty->trigger_error("assign: missing 'account_id' parameter."); return; } $is_admin = $params["is_admin"] ? $params["is_admin"] : false; $form_id = $params["form_id"]; $view_id = $params["view_id"]; $submission_id = $params["submission_id"]; $account_id = $params["account_id"]; if ($is_admin) { $views = ft_get_form_views($form_id); } else { $views = ft_get_form_views($form_id, $account_id); } // loop through the Views assigned to this user and IFF the view contains the submission, // add it to the dropdown list if (count($views) > 1) { $same_page = ft_get_clean_php_self(); $html = "<select onchange=\"window.location='{$same_page}?form_id={$form_id}&submission_id={$submission_id}&view_id=' + this.value\">\r\n\t <optgroup label=\"Views\">\n"; foreach ($views as $view_info) { $curr_view_id = $view_info["view_id"]; $curr_view_name = $view_info["view_name"]; if (ft_check_view_contains_submission($form_id, $curr_view_id, $submission_id)) { $selected = $curr_view_id == $view_id ? " selected" : ""; $html .= "<option value=\"{$curr_view_id}\"{$selected}>{$curr_view_name}</option>"; } } $html .= "</optgroup></select>\n"; } return $html; }
<?php require_once "../../global/session_start.php"; ft_check_permission("client"); $request = array_merge($_POST, $_GET); $account_id = $_SESSION["ft"]["account"]["account_id"]; // store the current selected tab in memory $page = ft_load_field("page", "account_page", "main"); $same_page = ft_get_clean_php_self(); $tabs = array("main" => array("tab_label" => $LANG["word_main"], "tab_link" => "{$same_page}?page=main"), "settings" => array("tab_label" => $LANG["word_settings"], "tab_link" => "{$same_page}?page=settings")); // ------------------------------------------------------------------------------------------ switch ($page) { case "main": include "page_main.php"; break; case "settings": include "page_settings.php"; break; default: include "page_main.php"; break; }
<?php require "../../../global/library.php"; ft_init_module_page(); require_once "../library.php"; $request = array_merge($_POST, $_GET); $export_group_type_id = "export_group_types"; $page = ft_load_module_field("export_manager", "page", "export_manager_tab", "main"); $export_group_id = ft_load_module_field("export_manager", "export_group_id", "export_manager_export_group_id", "export_group_id"); if (isset($request["add_export_type"])) { list($g_success, $g_message) = exp_add_export_type($request); } $php_self = ft_get_clean_php_self(); $tabs = array("main" => array("tab_label" => "Main", "tab_link" => "{$php_self}?page=main&export_group_id={$export_group_id}"), "permissions" => array("tab_label" => $LANG["word_permissions"], "tab_link" => "{$php_self}?page=permissions&export_group_id={$export_group_id}"), "export_types" => array("tab_label" => "Export Types", "tab_link" => "{$php_self}?page=export_types&export_group_id={$export_group_id}", "pages" => array("export_types", "add_export_type", "edit_export_type"))); $links = ft_get_export_group_prev_next_links($export_group_id); $prev_tabset_link = !empty($links["prev_id"]) ? "edit.php?page={$page}&export_group_id={$links["prev_id"]}" : ""; $next_tabset_link = !empty($links["next_id"]) ? "edit.php?page={$page}&export_group_id={$links["next_id"]}" : ""; $page_vars = array(); $page_vars["tabs"] = $tabs; $page_vars["show_tabset_nav_links"] = true; $page_vars["prev_tabset_link"] = $prev_tabset_link; $page_vars["next_tabset_link"] = $next_tabset_link; $page_vars["head_string"] = <<<END <link type="text/css" rel="stylesheet" href="{$g_root_url}/modules/export_manager/global/css/styles.css?v=205"> <script src="{$g_root_url}/global/scripts/sortable.js"></script> <script src="{$g_root_url}/modules/export_manager/global/scripts/admin.js"></script> <script src="{$g_root_url}/global/codemirror/js/codemirror.js"></script> END; // load the appropriate code pages switch ($page) { case "main":
/** * Loads a theme opening page for a module. This should be used loaded for every page in a * module. It serves the same function as ft_display_page, except that it sets the appropriate root * folder for the module and loads the * * @param array $page_vars a hash of information to display / provide to the template. * @param string $theme */ function ft_display_module_page($template, $page_vars = array(), $theme = "", $swatch = "") { global $g_root_dir, $g_root_url, $g_success, $g_message, $g_link, $g_smarty_debug, $g_language, $LANG, $g_smarty, $L, $g_smarty_use_sub_dirs, $g_js_debug, $g_benchmark_start, $g_enable_benchmarking, $g_hide_upgrade_link; $module_folder = _ft_get_current_module_folder(); // $module_id = ft_get_module_id_from_module_folder($module_folder); $default_module_language = "en_us"; if (empty($theme) && isset($_SESSION["ft"]["account"]["theme"])) { $theme = $_SESSION["ft"]["account"]["theme"]; $swatch = isset($_SESSION["ft"]["account"]["swatch"]) ? $_SESSION["ft"]["account"]["swatch"] : ""; } elseif (empty($theme)) { $settings = ft_get_settings(array("default_theme", "default_client_swatch")); $theme = $settings["default_theme"]; $swatch = $settings["default_client_swatch"]; } if (!isset($_SESSION["ft"]["account"]["is_logged_in"])) { $_SESSION["ft"]["account"]["is_logged_in"] = false; } if (!isset($_SESSION["ft"]["account"]["account_type"])) { $_SESSION["ft"]["account"]["account_type"] = ""; } // common variables. These are sent to EVERY template $g_smarty->template_dir = "{$g_root_dir}/themes/{$theme}"; $g_smarty->compile_dir = "{$g_root_dir}/themes/{$theme}/cache/"; $g_smarty->use_sub_dirs = $g_smarty_use_sub_dirs; $g_smarty->assign("LANG", $LANG); // this contains the custom language content of the module, in the language required. It's populated by // ft_init_module_page(), called on every module page $g_smarty->assign("L", $L); $g_smarty->assign("SESSION", $_SESSION["ft"]); $settings = isset($_SESSION["ft"]["settings"]) ? $_SESSION["ft"]["settings"] : array(); $g_smarty->assign("settings", $settings); $g_smarty->assign("account", $_SESSION["ft"]["account"]); $g_smarty->assign("g_root_dir", $g_root_dir); $g_smarty->assign("g_root_url", $g_root_url); $g_smarty->assign("g_js_debug", $g_js_debug ? "true" : "false"); $g_smarty->assign("g_hide_upgrade_link", $g_hide_upgrade_link); $g_smarty->assign("same_page", ft_get_clean_php_self()); $g_smarty->assign("query_string", $_SERVER["QUERY_STRING"]); // TODO FIX $g_smarty->assign("dir", $LANG["special_text_direction"]); $g_smarty->assign("g_enable_benchmarking", $g_enable_benchmarking); $g_smarty->assign("swatch", $swatch); // if this page has been told to dislay a custom message, override g_success and g_message if (isset($_GET["message"])) { list($g_success, $g_message) = ft_display_custom_page_message($_GET["message"]); } $g_smarty->assign("g_success", $g_success); $g_smarty->assign("g_message", $g_message); $module_id = ft_get_module_id_from_module_folder($module_folder); $module_nav = ft_get_module_menu_items($module_id, $module_folder); $g_smarty->assign("module_nav", $module_nav); // if there's no module title, display the module name. TODO not compatible with languages... if (!isset($page_vars["head_title"])) { $module_id = ft_get_module_id_from_module_folder($module_folder); $module_info = ft_get_module($module_id); $page_vars["head_title"] = $module_info["module_name"]; } // check the "required" vars are at least set so they don't produce warnings when smarty debug is enabled if (!isset($page_vars["head_css"])) { $page_vars["head_css"] = ""; } if (!isset($page_vars["head_js"])) { $page_vars["head_js"] = ""; } if (!isset($page_vars["page"])) { $page_vars["page"] = ""; } // if we need to include custom JS messages in the page, add it to the generated JS. Note: even if the js_messages // key is defined but still empty, the ft_generate_js_messages function is called, returning the "base" JS - like // the JS version of g_root_url. Only if it is not defined will that info not be included. This feature was hacked // in 2.1 to support js_messages from a single module file $js_messages = ""; if (isset($page_vars["js_messages"]) || isset($page_vars["module_js_messages"])) { $core_js_messages = isset($page_vars["js_messages"]) ? $page_vars["js_messages"] : ""; $module_js_messages = isset($page_vars["module_js_messages"]) ? $page_vars["module_js_messages"] : ""; $js_messages = ft_generate_js_messages($core_js_messages, $module_js_messages); } if (!empty($page_vars["head_js"]) || !empty($js_messages)) { $page_vars["head_js"] = "<script type=\"text/javascript\">\n//<![CDATA[\n{$page_vars["head_js"]}\n{$js_messages}\n//]]>\n</script>"; } if (!isset($page_vars["head_css"])) { $page_vars["head_css"] = ""; } else { if (!empty($page_vars["head_css"])) { $page_vars["head_css"] = "<style type=\"text/css\">\n{$page_vars["head_css"]}\n</style>"; } } // theme-specific vars $g_smarty->assign("images_url", "{$g_root_url}/themes/{$theme}/images"); $g_smarty->assign("theme_url", "{$g_root_url}/themes/{$theme}"); $g_smarty->assign("theme_dir", "{$g_root_dir}/themes/{$theme}"); // if there's a Smarty folder, import any of its resources if (is_dir("{$g_root_dir}/modules/{$module_folder}/smarty")) { $g_smarty->plugins_dir[] = "{$g_root_dir}/modules/{$module_folder}/smarty"; } // now add the custom variables for this template, as defined in $page_vars foreach ($page_vars as $key => $value) { $g_smarty->assign($key, $value); } // if smarty debug is on, enable Smarty debugging if ($g_smarty_debug) { $g_smarty->debugging = true; } extract(ft_process_hook_calls("main", compact("g_smarty", "template", "page_vars"), array("g_smarty")), EXTR_OVERWRITE); $g_smarty->display("{$g_root_dir}/modules/{$module_folder}/{$template}"); ft_db_disconnect($g_link); }
foreach ($view_info["fields"] as $view_field_info) { $curr_field_id = $view_field_info["field_id"]; foreach ($form_fields as $form_field_info) { if ($form_field_info["field_id"] != $curr_field_id) { continue; } $display_fields[] = array_merge($form_field_info, $view_field_info); } } // first, build the list of information we're going to send to the export type smarty template $placeholders = exp_get_export_filename_placeholder_hash(); $placeholders["export_group_id"] = $export_group_id; $placeholders["export_type_id"] = $export_type_id; $placeholders["export_group_results"] = $results; $placeholders["field_types"] = $field_types; $placeholders["same_page"] = ft_get_clean_php_self(); $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);
/** * Displays basic << 1 2 3 >> navigation for lists, each linking to the current page. * * This function has exactly the same purpose as display_page_nav, except that the pages are * hidden/shown with DHTML instead of separate server-side calls per page. This technique is better * for lists that contain a smaller number of items, e.g. the client and forms listing pages. * * ASSUMPTION: the JS counterpart function with the same function is defined in the calling page. * That function does all the work of hiding/showing pages, updating the "viewing X-Y" * text, enabling disabling the << and >> arrows, and storing the current page in sessions. This * function merely sets up the base HTML + JS. * * This function uses a dhtml_pagination.tpl Smarty template file, found in the current theme's root * folder. * * @param integer $num_results The total number of results found. * @param integer $num_per_page The max number of results to list per page. * @param integer $current_page The current page number being examined (defaults to 1). */ function ft_get_dhtml_page_nav($num_results, $num_per_page, $current_page = 1) { global $g_smarty, $g_smarty_debug, $g_root_dir, $g_root_url, $LANG, $g_smarty_use_sub_dirs; $theme = $_SESSION["ft"]["account"]["theme"]; $smarty = $g_smarty; // new Smarty(); $smarty->template_dir = "{$g_root_dir}/themes/{$theme}"; $smarty->compile_dir = "{$g_root_dir}/themes/{$theme}/cache/"; $smarty->use_sub_dirs = $g_smarty_use_sub_dirs; $smarty->assign("LANG", $LANG); $smarty->assign("SESSION", $_SESSION["ft"]); $smarty->assign("g_root_dir", $g_root_dir); $smarty->assign("g_root_url", $g_root_url); $smarty->assign("samepage", ft_get_clean_php_self()); $smarty->assign("num_results", $num_results); $smarty->assign("num_per_page", $num_per_page); $smarty->assign("current_page", $current_page); // find the range that's being displayed (e.g 11 to 20) $range_start = ($current_page - 1) * $num_per_page + 1; $range_end = $range_start + $num_per_page - 1; $range_end = $range_end > $num_results ? $num_results : $range_end; $smarty->assign("range_start", $range_start); $smarty->assign("range_end", $range_end); $viewing_range = ""; if ($num_results > $num_per_page) { $replacement_info = array("startnum" => "<span id='nav_viewing_num_start'>{$range_start}</span>", "endnum" => "<span id='nav_viewing_num_end'>{$range_end}</span>"); $viewing_range = ft_eval_smarty_string($LANG["phrase_viewing_range"], $replacement_info); } $smarty->assign("viewing_range", $viewing_range); $smarty->assign("total_pages", ceil($num_results / $num_per_page)); // now process the template and return the HTML return $smarty->fetch(ft_get_smarty_template_with_fallback($theme, "dhtml_pagination.tpl")); }
/** * This function lets you display the content generated from an export type into a webpage. You can * use this function on any export type in the database - even the ones that have been marked as "hidden". Note: * this function requires the Export Manager to be installed and enabled. * * @param integer $form_id * @param integer $view_id * @param integer $export_type_id * @param integer $page_num (defaults to 1) * @param array $options optional parameter that lets you configure the appearance of the data in a variety of ways. * * num_per_page - (integer) by default, it returns the number of results per page specified by * the View. This setting overrides that. * submission_ids - (integer or array of integers) this limits the results returned to the submission ID * or submission IDs specified in this field * order - (string) the database column name with a -DESC or -ASC suffix (e.g. col_1-ASC). * page_num_identifier - (string) passed via the query string to denote what page it's on (default: "page") * show_columns_only - (boolean) limits the fields that are displayed to those fields marked as "Column" * in the View. Defaults to false. * return_as_string - (boolean) if this value is set to true, instead of outputting the result it returns * the HTML as a string. * pagination_theme - (string) the pagination links (<< 1 2 3 ...) HTML is generated by the pagination.tpl * template, found in each of the theme folders. Generally this file is the same for * all themes, but in case it isn't, this setting lets you choose the theme folder with * which to render the HTML. * pagination_location - (string) accepts the values "top" (the default), "bottom", "both" or "none". This * determines where (if anywhere) the pagination links should appear. By default it only * appears at the top of the page, but you can set this value to either "both" or "bottom" * to have it appear there instead / as well. * * @return mixed the return value of this function depends on the API settings & the options passed to it. Namely: * * If error: * if $g_api_debug == true, the error page will be displayed displaying the error code. * if $g_api_debug == false, it returns an array with two indexes: * [0] false * [1] the API error code * If successful: * if "return_as_string" option key is set, it returns an array with two indexes: * [0] true * [1] the HTML content * if "return_as_string" not set, it just prints the HTML to the page (the default behaviour) */ function ft_api_show_submissions($form_id, $view_id, $export_type_id, $page_num = 1, $options = array()) { global $g_table_prefix, $LANG, $g_api_debug, $g_smarty; // sanitize all incoming data $form_id = ft_sanitize($form_id); $view_id = ft_sanitize($view_id); $export_type_id = ft_sanitize($export_type_id); $page_num = ft_sanitize($page_num); $options = ft_sanitize($options); // check the Export Manager module is enabled if (ft_check_module_enabled("export_manager")) { ft_include_module("export_manager"); } else { if ($g_api_debug) { $page_vars = array("message_type" => "error", "error_code" => 400, "error_type" => "user"); ft_display_page("error.tpl", $page_vars); exit; } else { return array(false, 400); } } // check the form ID, View ID and export ID are valid $form_query = mysql_query("SELECT count(*) as c FROM {$g_table_prefix}forms WHERE form_id = {$form_id}"); $result = mysql_fetch_assoc($form_query); $form_found = $result["c"] == 1 ? true : false; if (!$form_found) { if ($g_api_debug) { $page_vars = array("message_type" => "error", "error_code" => 401, "error_type" => "user"); ft_display_page("error.tpl", $page_vars); exit; } else { return array(false, 401); } } $view_query = mysql_query("SELECT count(*) as c FROM {$g_table_prefix}views WHERE form_id = {$form_id} AND view_id = {$view_id}"); $result = mysql_fetch_assoc($view_query); $view_found = $result["c"] == 1 ? true : false; if (!$view_found) { if ($g_api_debug) { $page_vars = array("message_type" => "error", "error_code" => 402, "error_type" => "user"); ft_display_page("error.tpl", $page_vars); exit; } else { return array(false, 402); } } $export_type_query = mysql_query("SELECT count(*) as c FROM {$g_table_prefix}module_export_types WHERE export_type_id = {$export_type_id}"); $result = mysql_fetch_assoc($export_type_query); $export_type_found = $result["c"] == 1 ? true : false; if (!$export_type_found) { if ($g_api_debug) { $page_vars = array("message_type" => "error", "error_code" => 403, "error_type" => "user"); ft_display_page("error.tpl", $page_vars); exit; } else { return array(false, 403); } } // okay, now lets figure out what needs to be displayed & rendered $form_info = ft_get_form($form_id); $form_fields = ft_get_form_fields($form_id, array("include_field_type_info" => true, "include_field_settings" => true)); $view_info = ft_get_view($view_id); $export_type_info = exp_get_export_type($export_type_id); $export_group_id = $export_type_info["export_group_id"]; $export_group_info = exp_get_export_group($export_group_id); // number of submissions per page (an integer or "all") $num_per_page = $view_info["num_submissions_per_page"]; if (isset($options["num_per_page"])) { $num_per_page = $options["num_per_page"]; } $order = "{$view_info["default_sort_field"]}-{$view_info["default_sort_field_order"]}"; if (isset($options["order"])) { $order = $options["order"]; } $display_fields = array(); $columns = "all"; if (isset($options["show_columns_only"]) && $options["show_columns_only"]) { $columns = array(); foreach ($view_info["columns"] as $view_field_info) { $curr_field_id = $view_field_info["field_id"]; foreach ($form_fields as $form_field_info) { if ($form_field_info["field_id"] != $curr_field_id) { continue; } $display_fields[] = array_merge($form_field_info, $view_field_info); $columns[] = $form_field_info["col_name"]; } } } else { foreach ($view_info["fields"] as $view_field_info) { $curr_field_id = $view_field_info["field_id"]; foreach ($form_fields as $form_field_info) { if ($form_field_info["field_id"] != $curr_field_id) { continue; } $display_fields[] = array_merge($form_field_info, $view_field_info); } } } /* $columns = "all"; if (isset($options["show_columns_only"]) && $options["show_columns_only"]) { $columns = array(); foreach ($view_info["columns"] as $view_col_info) { foreach ($display_fields as $field_info) { if ($field_info["field_id"] == $view_col_info["field_id"]) { $columns[] = $field_info["col_name"]; } } } } */ $submission_ids = array(); if (isset($options["submission_ids"])) { if (is_numeric($options["submission_ids"])) { $submission_ids[] = $options["submission_ids"]; } else { if (is_array($submission_ids)) { $submission_ids = $options["submission_ids"]; } } } // perform the almighty search query $results_info = ft_search_submissions($form_id, $view_id, $num_per_page, $page_num, $order, $columns, array(), $submission_ids); $search_num_results = $results_info["search_num_results"]; $settings = ft_get_settings(); // now build the list of information we're going to send to the export type smarty template $placeholders = exp_get_export_filename_placeholder_hash(); $placeholders["export_group_id"] = $export_group_id; $placeholders["export_type_id"] = $export_type_id; $placeholders["export_group_results"] = "all"; $placeholders["same_page"] = ft_get_clean_php_self(); $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["field_types"] = ft_get_field_types(true); $placeholders["settings"] = $settings; // ... $placeholders["date_format"] = $settings["default_date_format"]; $placeholders["timezone_offset"] = $settings["timezone_offset"]; // pull out a few things into top level placeholders for easy use $placeholders["form_name"] = $form_info["form_name"]; $placeholders["form_id"] = $form_id; $placeholders["form_url"] = $form_info["form_url"]; $placeholders["view_name"] = $view_info["view_name"]; $placeholders["view_id"] = $view_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["filename"] = ft_eval_smarty_string($export_type_info["filename"], $placeholders, "", $g_smarty->plugins_dir); $template = $export_type_info["export_type_smarty_template"]; $placeholders["export_type_name"] = $export_type_info["export_type_name"]; $export_type_smarty_template = ft_eval_smarty_string($template, $placeholders, "", $g_smarty->plugins_dir); // if we're not displaying all results on the single page, generate the pagination HTML $pagination = ""; if ($num_per_page != "all") { $page_num_identifier = isset($options["page_num_identifier"]) ? $options["page_num_identifier"] : "page"; $theme = isset($options["pagination_theme"]) ? $options["pagination_theme"] : $settings["default_theme"]; $pagination = ft_get_page_nav($search_num_results, $num_per_page, $page_num, "", $page_num_identifier, $theme); } $pagination_location = isset($options["pagination_location"]) ? $options["pagination_location"] : "top"; switch ($pagination_location) { case "top": $html = $pagination . $export_type_smarty_template; break; case "both": $html = $pagination . $export_type_smarty_template . $pagination; break; case "bottom": $html = $export_type_smarty_template . $pagination; break; case "none": $html = $export_type_smarty_template; break; // this is in case the user entered an invalid value // this is in case the user entered an invalid value default: if ($g_api_debug) { $page_vars = array("message_type" => "error", "error_code" => 404, "error_type" => "user"); ft_display_page("error.tpl", $page_vars); exit; } else { return array(false, 404); } break; } if (isset($options["return_as_string"]) && $options["return_as_string"]) { return array(true, $html); } else { echo $html; } }