/** * The Export Manager installation function. This is automatically called by the installation script if the * module is contained in the zipfile. Otherwise it's called when the user manually installs the module. */ function export_manager__install($module_id) { global $g_table_prefix, $g_root_dir, $g_root_url, $LANG; $queries = array(); $word_display = ft_sanitize($LANG["word_display"]); $queries[] = "\n CREATE TABLE {$g_table_prefix}module_export_groups (\n export_group_id smallint(5) unsigned NOT NULL auto_increment,\n group_name varchar(255) NOT NULL,\n access_type enum('admin','public','private') NOT NULL default 'public',\n form_view_mapping enum('all','except','only') NOT NULL default 'all',\n forms_and_views mediumtext NULL,\n visibility enum('show','hide') NOT NULL default 'show',\n icon varchar(100) NOT NULL,\n action enum('file','popup','new_window') NOT NULL default 'popup',\n action_button_text varchar(255) NOT NULL default '{$word_display}',\n popup_height varchar(5) default NULL,\n popup_width varchar(5) default NULL,\n headers text,\n smarty_template mediumtext NOT NULL,\n list_order tinyint(4) NOT NULL,\n PRIMARY KEY (export_group_id)\n ) DEFAULT CHARSET=utf8\n "; $queries[] = "\n CREATE TABLE {$g_table_prefix}module_export_group_clients (\n export_group_id mediumint(8) unsigned NOT NULL,\n account_id mediumint(8) unsigned NOT NULL,\n PRIMARY KEY (export_group_id, account_id)\n ) DEFAULT CHARSET=utf8\n "; $queries[] = "\n CREATE TABLE {$g_table_prefix}module_export_types (\n export_type_id mediumint(8) unsigned NOT NULL auto_increment,\n export_type_name varchar(255) NOT NULL,\n export_type_visibility enum('show','hide') NOT NULL default 'show',\n filename varchar(255) NOT NULL,\n export_group_id smallint(6) default NULL,\n smarty_template text NOT NULL,\n list_order tinyint(3) unsigned NOT NULL,\n PRIMARY KEY (export_type_id)\n ) DEFAULT CHARSET=utf8\n "; foreach ($queries as $query) { $result = mysql_query($query); if (!$result) { exp_remove_tables(); return array(false, $LANG["export_manager"]["notify_installation_problem_c"] . " <b>" . mysql_error() . "</b>"); } } // now populate the tables list($success, $message) = exp_insert_default_data(); if (!$success) { exp_remove_tables(); exp_clear_table_data(); return array(false, $message); } ft_register_hook("template", "export_manager", "admin_submission_listings_bottom", "", "exp_display_export_options"); ft_register_hook("template", "export_manager", "client_submission_listings_bottom", "", "exp_display_export_options"); return array(true, ""); }
/** * Called by the installation script and on the Reset to Defaults page. This cleans out any data already in the * tables and inserts the default values. */ function exp_insert_default_data() { global $g_table_prefix, $g_root_dir, $g_root_url, $LANG; exp_clear_table_data(); $queries = array(); // add Export Groups $phrase_html_printer = ft_sanitize($LANG["export_manager"]["phrase_html_printer_friendly"]); $word_excel = ft_sanitize($LANG["export_manager"]["word_excel"]); $word_xml = ft_sanitize($LANG["export_manager"]["word_xml"]); $word_csv = ft_sanitize($LANG["export_manager"]["word_csv"]); $word_display = ft_sanitize($LANG["word_display"]); $word_generate = ft_sanitize($LANG["export_manager"]["word_generate"]); $queries[] = "INSERT INTO {$g_table_prefix}module_export_groups VALUES (1, '{$phrase_html_printer}', 'public', 'all', NULL, 'show', 'printer.png', 'popup', '{$word_display}', '600', '800', '', '<html>\r\n<head>\r\n <title>{\$export_group_name}</title>\r\n\r\n {* escape the CSS so it doesn''t confuse Smarty *}\r\n {literal}\r\n <style type=\"text/css\">\r\n body { margin: 0px; }\r\n table, td, tr, div, span { \r\n font-family: verdana; font-size: 8pt;\r\n }\r\n table { empty-cells: show }\r\n #nav_row { background-color: #efefef; padding: 10px; }\r\n #export_group_name { color: #336699; font-weight:bold }\r\n .print_table { border: 1px solid #dddddd; }\r\n .print_table th { \r\n border: 1px solid #cccccc; \r\n background-color: #efefef;\r\n text-align: left;\r\n }\r\n .print_table td { border: 1px solid #cccccc; }\r\n .one_item { margin-bottom: 15px; }\r\n .page_break { page-break-after: always; }\r\n </style>\r\n\r\n <style type=\"text/css\" media=\"print\">\r\n .no_print { display: none }\r\n </style>\r\n {/literal}\r\n\r\n</head>\r\n<body>\r\n\r\n<div id=\"nav_row\" class=\"no_print\">\r\n\r\n <span style=\"float:right\">{if \$page_type != \"file\"}\r\n {* if there''s more than one export type in this group, display the types in a dropdown *}\r\n {if \$export_types|@count > 1}\r\n <select name=\"export_type_id\" onchange=\"window.location=''{\$same_page}?export_group_id={\$export_group_id}&export_group_{\$export_group_id}_results={\$export_group_results}&export_type_id='' + this.value\">\r\n {foreach from=\$export_types item=export_type}\r\n <option value=\"{\$export_type.export_type_id}\" {if \$export_type.export_type_id == \$export_type_id}selected{/if}>{eval var=\$export_type.export_type_name}</option>\r\n {/foreach}\r\n </select>\r\n {/if}\r\n {/if}\r\n <input type=\"button\" onclick=\"window.close()\" value=\"{\$LANG.word_close}\" />\r\n <input type=\"button\" onclick=\"window.print()\" value=\"{\$LANG.word_print}\" />\r\n </span>\r\n\r\n <span id=\"export_group_name\">{eval var=\$export_group_name}</span>\r\n</div>\r\n\r\n<div style=\"padding: 15px\">\r\n {\$export_type_smarty_template}\r\n</div>\r\n\r\n</body>\r\n</html>', 1)"; $queries[] = "INSERT INTO {$g_table_prefix}module_export_groups VALUES (2, '{$word_excel}', 'public', 'all', NULL, 'show', 'xls.gif', 'new_window', '{$word_generate}', '', '', 'Pragma: public\nCache-Control: max-age=0\nContent-Type: application/vnd.ms-excel; charset=utf-8\nContent-Disposition: attachment; filename={\$filename}', '<html>\r\n<head>\r\n</head>\r\n<body>\r\n\r\n{\$export_type_smarty_template}\r\n\r\n</body>\r\n</html>', 2)"; $queries[] = "INSERT INTO {$g_table_prefix}module_export_groups VALUES (3, '{$word_xml}', 'public', 'all', NULL, 'hide', 'xml.jpg', 'new_window', '{$word_generate}', '', '', '', '<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n\r\n{\$export_type_smarty_template}', 4)"; $queries[] = "INSERT INTO {$g_table_prefix}module_export_groups VALUES (4, '{$word_csv}', 'public', 'all', NULL, 'hide', 'csv.gif', 'new_window', '{$word_generate}', '', '', 'Content-type: application/xml; charset=\"octet-stream\"\r\nContent-Disposition: attachment; filename={\$filename}', '{\$export_type_smarty_template}', 3)"; // add Export Types $table_format = ft_sanitize($LANG["export_manager"]["phrase_table_format"]); $one_by_one = ft_sanitize($LANG["export_manager"]["phrase_one_by_one"]); $one_submission_per_page = ft_sanitize($LANG["export_manager"]["phrase_one_submission_per_page"]); $all_submissions = ft_sanitize($LANG["phrase_all_submissions"]); $queries[] = "INSERT INTO {$g_table_prefix}module_export_types VALUES (1, '{$table_format}', 'show', 'submissions-{\$M}.{\$j}.html', 1, '<h1>{\$form_name} - {\$view_name}</h1>\r\n\r\n<table cellpadding=\"2\" cellspacing=\"0\" width=\"100%\" class=\"print_table\">\r\n<tr>\r\n {foreach from=\$display_fields item=column}\r\n <th>{\$column.field_title}</th>\r\n {/foreach}\r\n</tr>\r\n{strip}\r\n{foreach from=\$submissions item=submission}\r\n {assign var=submission_id value=\$submission.submission_id}\r\n <tr>\r\n {foreach from=\$display_fields item=field_info}\r\n {assign var=col_name value=\$field_info.col_name}\r\n {assign var=value value=\$submission.\$col_name}\r\n <td>\r\n {smart_display_field form_id=\$form_id view_id=\$view_id\r\n submission_id=\$submission_id field_info=\$field_info\r\n field_types=\$field_types settings=\$settings value=\$value}\r\n </td>\r\n {/foreach}\r\n </tr>\r\n{/foreach}\r\n{/strip}\r\n</table>', 1)"; $queries[] = "INSERT INTO {$g_table_prefix}module_export_types VALUES (2, '{$one_by_one}', 'show', 'submissions-{\$M}.{\$j}.html', 1, '<h1>{\$form_name} - {\$view_name}</h1>\r\n\r\n{strip}\r\n{foreach from=\$submissions item=submission}\r\n {assign var=submission_id value=\$submission.submission_id}\r\n <table cellpadding=\"2\" cellspacing=\"0\" width=\"100%\" \r\n class=\"print_table one_item\">\r\n {foreach from=\$display_fields item=field_info}\r\n {assign var=col_name value=\$field_info.col_name}\r\n {assign var=value value=\$submission.\$col_name}\r\n <tr>\r\n <th width=\"140\">{\$field_info.field_title}</th>\r\n <td>\r\n {smart_display_field form_id=\$form_id view_id=\$view_id\r\n submission_id=\$submission_id field_info=\$field_info\r\n field_types=\$field_types settings=\$settings value=\$value}\r\n </td>\r\n </tr>\r\n {/foreach}\r\n </table>\r\n{/foreach}\r\n{/strip}', 2)"; $queries[] = "INSERT INTO {$g_table_prefix}module_export_types VALUES (3, '{$one_submission_per_page}', 'show', 'submissions-{\$M}.{\$j}.html', 1, '<h1>{\$form_name} - {\$view_name}</h1>\r\n\r\n{foreach from=\$submissions item=submission name=row}\r\n {assign var=submission_id value=\$submission.submission_id}\r\n <table cellpadding=\"2\" cellspacing=\"0\" width=\"100%\" \r\n class=\"print_table one_item\">\r\n {foreach from=\$display_fields item=field_info}\r\n {assign var=col_name value=\$field_info.col_name}\r\n {assign var=value value=\$submission.\$col_name}\r\n <tr>\r\n <th width=\"140\">{\$field_info.field_title}</th>\r\n <td>\r\n {smart_display_field form_id=\$form_id view_id=\$view_id\r\n submission_id=\$submission_id field_info=\$field_info\r\n field_types=\$field_types settings=\$settings value=\$value}\r\n </td>\r\n </tr>\r\n {/foreach}\r\n </table>\r\n\r\n {if !\$smarty.foreach.row.last}\r\n <div class=\"no_print\"><i>- {\$LANG.phrase_new_page} -</i></div>\r\n <br class=\"page_break\" />\r\n {/if}\r\n \r\n{/foreach}\r\n', 3)"; $queries[] = "INSERT INTO {$g_table_prefix}module_export_types VALUES (4, '{$table_format}', 'show', 'submissions-{\$M}.{\$j}.xls', 2, '<h1>{\$form_name} - {\$view_name}</h1>\r\n\r\n<table cellpadding=\"2\" cellspacing=\"0\" width=\"100%\" class=\"print_table\">\r\n<tr>\r\n {foreach from=\$display_fields item=column}\r\n <th>{\$column.field_title}</th>\r\n {/foreach}\r\n</tr>\r\n{strip}\r\n{foreach from=\$submissions item=submission}\r\n {assign var=submission_id value=\$submission.submission_id}\r\n <tr>\r\n {foreach from=\$display_fields item=field_info}\r\n {assign var=col_name value=\$field_info.col_name}\r\n {assign var=value value=\$submission.\$col_name}\r\n <td>\r\n {smart_display_field form_id=\$form_id view_id=\$view_id\r\n submission_id=\$submission_id field_info=\$field_info\r\n field_types=\$field_types settings=\$settings value=\$value\r\n escape=\"excel\"}\r\n </td>\r\n {/foreach}\r\n </tr>\r\n{/foreach}\r\n{/strip}\r\n</table>', 1)"; $queries[] = "INSERT INTO {$g_table_prefix}module_export_types VALUES (5, '{$all_submissions}', 'show', 'form{\$form_id}_{\$datetime}.csv', 4, '{strip}\r\n {foreach from=\$display_fields item=column name=row}\r\n {* workaround for absurd Microsoft Excel problem, in which the first\r\n two characters of a file cannot be ID; see:\r\n http://support.microsoft.com /kb/323626 *}\r\n {if \$smarty.foreach.row.first && \$column.field_title == \"ID\"}\r\n .ID\r\n {else}\r\n {\$column.field_title|escape:''csv''}\r\n {/if}\r\n {if !\$smarty.foreach.row.last},{/if}\r\n {/foreach}\r\n{/strip}\r\n{foreach from=\$submissions item=submission name=row}{strip}\r\n {foreach from=\$display_fields item=field_info name=col_row}\r\n {assign var=col_name value=\$field_info.col_name}\r\n {assign var=value value=\$submission.\$col_name}\r\n {smart_display_field form_id=\$form_id view_id=\$view_id\r\n submission_id=\$submission.submission_id field_info=\$field_info\r\n field_types=\$field_types settings=\$settings value=\$value\r\n escape=\"csv\"}\r\n {* if this wasn''t the last row, output a comma *}\r\n {if !\$smarty.foreach.col_row.last},{/if}\r\n {/foreach}\r\n{/strip}\r\n{if !\$smarty.foreach.row.last}\r\n{/if}\r\n{/foreach}', 1)"; $queries[] = "INSERT INTO {$g_table_prefix}module_export_types VALUES (6, '{$all_submissions}', 'show', 'form{\$form_id}_{\$datetime}.xml', 3, '<export>\r\n <export_datetime>{\$datetime}</export_datetime>\r\n <export_unixtime>{\$U}</export_unixtime>\r\n <form_info>\r\n <form_id>{\$form_id}</form_id>\r\n <form_name><![CDATA[{\$form_name}]]></form_name>\r\n <form_url>{\$form_url}</form_url>\r\n </form_info>\r\n <view_info>\r\n <view_id>{\$view_id}</view_id>\r\n <view_name><![CDATA[{\$view_name}]]></view_name>\r\n </view_info>\r\n <submissions>\r\n {foreach from=\$submissions item=submission name=row} \r\n <submission>\r\n {foreach from=\$display_fields item=field_info name=col_row}\r\n {assign var=col_name value=\$field_info.col_name}\r\n {assign var=value value=\$submission.\$col_name}\r\n <{\$col_name}><![CDATA[{smart_display_field form_id=\$form_id \r\n view_id=\$view_id submission_id=\$submission.submission_id\r\n field_info=\$field_info field_types=\$field_types \r\n settings=\$settings value=\$value}]]></{\$col_name}>\r\n {/foreach}\r\n </submission>\r\n {/foreach}\r\n </submissions>\r\n</export>', 1)"; // add the module settings $upload_dir = str_replace("\\", "\\\\", $g_root_dir); $separator = "/"; if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) { $separator = "\\\\"; } $upload_dir .= "{$separator}upload"; $queries[] = "INSERT INTO {$g_table_prefix}settings (setting_name, setting_value, module) VALUES ('file_upload_dir', '{$upload_dir}', 'export_manager')"; $queries[] = "INSERT INTO {$g_table_prefix}settings (setting_name, setting_value, module) VALUES ('file_upload_url', '{$g_root_url}/upload', 'export_manager')"; foreach ($queries as $query) { $result = mysql_query($query); if (!$result) { return array(false, $LANG["export_manager"]["notify_installation_problem_c"] . " <b>" . mysql_error() . "</b>"); } } return array(true, $LANG["export_manager"]["notify_reset_to_default"]); }