Skip to content

Commit e84877a

Browse files
committed
closes #472
1 parent c043548 commit e84877a

File tree

5 files changed

+669
-593
lines changed

5 files changed

+669
-593
lines changed

admin/forms/submissions.php

Lines changed: 70 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
// if the form ID is specified in GET or POST, store it in sessions as curr_form_id
2525
$form_id = General::loadField("form_id", "curr_form_id");
2626
if (empty($form_id) || !is_numeric($form_id)) {
27-
General::redirect("./");
27+
General::redirect("./");
2828
}
2929

3030
// check this is a valid form
@@ -37,14 +37,14 @@
3737
// (ordered) list of Views for this form. If THAT doesn't exist, the user has deleted all Views (doh!), so
3838
// there's nothing to show. In that case, just redirect them to the Views tab, where an error / warning message
3939
// will appear in the page
40-
$view_id = General::loadField("view_id", "form_{$form_id}_view_id");
40+
$view_id = General::loadField("view_id", "form_{$form_id}_view_id");
4141
$grouped_views = Views::getGroupedViews($form_id, array("omit_hidden_views" => true, "omit_empty_groups" => true));
4242

4343
if (empty($view_id) || !Views::checkViewExists($view_id, true)) {
4444

45-
// no Views defined for this form! redirect to the Views page and display a message
45+
// no Views defined for this form! redirect to the Views page and display a message
4646
if (count($grouped_views) == 0 || count($grouped_views[0]["views"]) == 0) {
47-
General::redirect("edit/?page=views&form_id=$form_id&message=no_views");
47+
General::redirect("edit/?page=views&form_id=$form_id&message=no_views");
4848
} else {
4949
$view_id = $grouped_views[0]["views"][0]["view_id"];
5050
}
@@ -53,40 +53,41 @@
5353
Sessions::set("form_{$form_id}_view_id", $view_id);
5454
Sessions::set("last_link_page_{$form_id}", "submissions");
5555

56-
$form_info = Forms::getForm($form_id);
56+
$form_info = Forms::getForm($form_id);
5757
$form_fields = Fields::getFormFields($form_id, array("include_field_type_info" => true, "include_field_settings" => true));
58-
$view_info = Views::getView($view_id);
58+
$view_info = Views::getView($view_id);
5959

6060
if (isset($_GET["add_submission"]) && $view_info["may_add_submissions"] == "yes") {
61-
$submission_id = Submissions::createBlankSubmission($form_id, $view_id, true);
62-
General::redirect("edit_submission.php?form_id=$form_id&view_id=$view_id&submission_id=$submission_id&message=new_submission");
61+
$account_placeholders = Core::$user->getAccountPlaceholders();
62+
$submission_id = Submissions::createBlankSubmission($form_id, $view_id, true, $account_placeholders);
63+
General::redirect("edit_submission.php?form_id=$form_id&view_id=$view_id&submission_id=$submission_id&message=new_submission");
6364
}
6465

6566
// if the View just changed (i.e. it was just selected by the user), deselect any form rows
6667
if (isset($request["view_id"])) {
67-
Sessions::set("form_{$form_id}_selected_submissions", array());
68-
Sessions::set("form_{$form_id}_all_submissions_selected_omit_list", array());
69-
Sessions::set("form_{$form_id}_select_all_submissions", "");
68+
Sessions::set("form_{$form_id}_selected_submissions", array());
69+
Sessions::set("form_{$form_id}_all_submissions_selected_omit_list", array());
70+
Sessions::set("form_{$form_id}_select_all_submissions", "");
7071
}
7172

7273
// Fix for bug #174
7374
$has_search_info_for_other_form = (Sessions::exists("current_search") && Sessions::get("current_search.form_id") != $form_id);
74-
$is_resetting_search = (isset($_GET["reset"]) && $_GET["reset"] == "1");
75+
$is_resetting_search = (isset($_GET["reset"]) && $_GET["reset"] == "1");
7576

7677
if ($is_resetting_search || $has_search_info_for_other_form) {
77-
Sessions::clear("search_field");
78-
Sessions::clear("search_keyword");
79-
Sessions::clear("search_date");
80-
Sessions::clear("current_search");
78+
Sessions::clear("search_field");
79+
Sessions::clear("search_keyword");
80+
Sessions::clear("search_date");
81+
Sessions::clear("current_search");
8182

8283
// only empty the memory of selected submission ID info if the user just reset the search
8384
if ($is_resetting_search) {
8485
Submissions::clearSelected($form_id);
8586
}
8687
}
8788
$search_fields = array(
88-
"search_field" => General::loadField("search_field", "search_field", ""),
89-
"search_date" => General::loadField("search_date", "search_date", ""),
89+
"search_field" => General::loadField("search_field", "search_field", ""),
90+
"search_date" => General::loadField("search_date", "search_date", ""),
9091
"search_keyword" => General::loadField("search_keyword", "search_keyword", "")
9192
);
9293

@@ -118,19 +119,19 @@
118119
// figure out the current page
119120
$current_page = General::loadField("page", "view_{$view_id}_page", 1);
120121
if (isset($_POST["search"])) {
121-
$current_page = 1;
122+
$current_page = 1;
122123
}
123124

124125
// make a map of field_id => col_name for use in determining the search cols. This contains
125126
// all the fields in the View
126127
$all_view_field_columns = array();
127-
$searchable_columns = array();
128+
$searchable_columns = array();
128129

129130
foreach ($view_info["fields"] as $field_info) {
130131
$all_view_field_columns[$field_info["field_id"]] = $field_info["col_name"];
131132
if ($field_info["is_searchable"] == "yes") {
132-
$searchable_columns[] = $field_info["col_name"];
133-
}
133+
$searchable_columns[] = $field_info["col_name"];
134+
}
134135
}
135136
$db_columns = array_values($all_view_field_columns); // used for the search query
136137

@@ -163,15 +164,15 @@
163164
$data_to_merge = $col_info;
164165
foreach ($view_info["fields"] as $view_field_info) {
165166
if ($view_field_info["field_id"] != $curr_field_id) {
166-
continue;
167-
}
167+
continue;
168+
}
168169
$data_to_merge = array_merge($view_field_info, $data_to_merge);
169170
}
170171

171172
foreach ($form_fields as $form_field_info) {
172173
if ($form_field_info["field_id"] != $curr_field_id) {
173-
continue;
174-
}
174+
continue;
175+
}
175176
$data_to_merge = array_merge($form_field_info, $data_to_merge);
176177
}
177178

@@ -180,10 +181,10 @@
180181

181182
// determine the sort order
182183
if (isset($_GET["order"])) {
183-
Sessions::set("view_{$view_id}_sort_order", $_GET["order"]);
184+
Sessions::set("view_{$view_id}_sort_order", $_GET["order"]);
184185
$order = $_GET["order"];
185186
} else {
186-
$order = Sessions::getWithFallback("view_{$view_id}_sort_order", "{$view_info['default_sort_field']}-{$view_info['default_sort_field_order']}");
187+
$order = Sessions::getWithFallback("view_{$view_id}_sort_order", "{$view_info['default_sort_field']}-{$view_info['default_sort_field_order']}");
187188
}
188189

189190
$results_per_page = $view_info["num_submissions_per_page"];
@@ -192,18 +193,18 @@
192193
$results_info = Submissions::searchSubmissions($form_id, $view_id, $results_per_page, $current_page, $order, $db_columns,
193194
$search_fields, array(), $searchable_columns);
194195

195-
$search_rows = $results_info["search_rows"];
196+
$search_rows = $results_info["search_rows"];
196197
$search_num_results = $results_info["search_num_results"];
197-
$view_num_results = $results_info["view_num_results"];
198+
$view_num_results = $results_info["view_num_results"];
198199

199200
// store the current search settings. This information is used on the item details page to provide
200201
// "<< previous next >>" links that only apply to the CURRENT search result set
201202
Sessions::set("new_search", "yes");
202203
Sessions::set("current_search", array(
203-
"form_id" => $form_id,
204+
"form_id" => $form_id,
204205
"results_per_page" => $results_per_page,
205-
"order" => $order,
206-
"search_fields" => $search_fields
206+
"order" => $order,
207+
"search_fields" => $search_fields
207208
));
208209

209210
// check that the current page is stored in sessions is, in fact, a valid page. e.g. if the person
@@ -215,7 +216,7 @@
215216
$session_key = "view_{$view_id}_page";
216217
if (Sessions::exists($session_key) && Sessions::get($session_key) > $total_pages) {
217218
Sessions::set($session_key, $total_pages);
218-
General::redirect("submissions.php");
219+
General::redirect("submissions.php");
219220
}
220221

221222
// this sets the total number of submissions that the admin can see in this form and View in the form_X_num_submissions
@@ -227,8 +228,8 @@
227228

228229
// get a list of all submission IDs in this page
229230
$submission_ids = array();
230-
for ($i=0; $i<count($search_rows); $i++) {
231-
$submission_ids[] = $search_rows[$i]["submission_id"];
231+
for ($i = 0; $i < count($search_rows); $i++) {
232+
$submission_ids[] = $search_rows[$i]["submission_id"];
232233
}
233234
$submission_id_str = implode(",", $submission_ids);
234235

@@ -243,7 +244,7 @@
243244
$all_submissions_selected_omit_list_str = implode(",", $all_submissions_selected_omit_list);
244245
$preselected_subids = array_diff($submission_ids, $all_submissions_selected_omit_list);
245246
} else {
246-
$preselected_subids = Sessions::getWithFallback("form_{$form_id}_selected_submissions", array());
247+
$preselected_subids = Sessions::getWithFallback("form_{$form_id}_selected_submissions", array());
247248
}
248249

249250
$preselected_subids_str = implode(",", $preselected_subids);
@@ -262,7 +263,7 @@
262263
$settings = Settings::get("", "core");
263264
$date_picker_info = FieldTypes::getDefaultDateFieldSearchValue($settings["default_date_field_search_value"]);
264265
$default_date_field_search_value = $date_picker_info["default_date_field_search_value"];
265-
$date_field_search_js_format = $date_picker_info["date_field_search_js_format"];
266+
$date_field_search_js_format = $date_picker_info["date_field_search_js_format"];
266267

267268
// get all the shared resources
268269
$shared_resources_list = Settings::get("edit_submission_onload_resources");
@@ -274,47 +275,47 @@
274275

275276
// compile the header information
276277
$page_vars = array(
277-
"page" => "admin_forms",
278-
"g_success" => $success,
279-
"g_message" => $message,
280-
"page_url" => Pages::getPageUrl("form_submissions", array("form_id" => $form_id)),
281-
"head_title" => $LANG["word_submissions"],
282-
"form_info" => $form_info,
283-
"form_id" => $form_id,
284-
"view_id" => $view_id,
285-
"default_date_field_search_value" => $default_date_field_search_value,
286-
"search_rows" => $search_rows,
287-
"search_num_results" => $search_num_results,
288-
"view_num_results" => $view_num_results,
289-
"total_form_submissions" => Sessions::get("form_{$form_id}_num_submissions"),
290-
"grouped_views" => $grouped_views,
291-
"view_info" => $view_info,
292-
"settings" => $settings,
293-
"pass_along_str" => "", // TODO
294-
"preselected_subids" => $preselected_subids,
295-
"results_per_page" => $results_per_page,
296-
"display_fields" => $display_fields,
297-
"page_submission_ids" => $submission_id_str,
298-
"order" => $order,
299-
"field_types" => $field_types,
300-
"has_searchable_field" => $has_searchable_field,
301-
"notify_view_missing_columns_admin_fix" => General::evalSmartyString($LANG["notify_view_missing_columns_admin_fix"], array(
302-
"LINK" => "edit/?form_id={$form_id}&view_id={$view_id}&page=edit_view&edit_view_tab=2"
278+
"page" => "admin_forms",
279+
"g_success" => $success,
280+
"g_message" => $message,
281+
"page_url" => Pages::getPageUrl("form_submissions", array("form_id" => $form_id)),
282+
"head_title" => $LANG["word_submissions"],
283+
"form_info" => $form_info,
284+
"form_id" => $form_id,
285+
"view_id" => $view_id,
286+
"default_date_field_search_value" => $default_date_field_search_value,
287+
"search_rows" => $search_rows,
288+
"search_num_results" => $search_num_results,
289+
"view_num_results" => $view_num_results,
290+
"total_form_submissions" => Sessions::get("form_{$form_id}_num_submissions"),
291+
"grouped_views" => $grouped_views,
292+
"view_info" => $view_info,
293+
"settings" => $settings,
294+
"pass_along_str" => "", // TODO
295+
"preselected_subids" => $preselected_subids,
296+
"results_per_page" => $results_per_page,
297+
"display_fields" => $display_fields,
298+
"page_submission_ids" => $submission_id_str,
299+
"order" => $order,
300+
"field_types" => $field_types,
301+
"has_searchable_field" => $has_searchable_field,
302+
"notify_view_missing_columns_admin_fix" => General::evalSmartyString($LANG["notify_view_missing_columns_admin_fix"], array(
303+
"LINK" => "edit/?form_id={$form_id}&view_id={$view_id}&page=edit_view&edit_view_tab=2"
303304
)),
304-
"curr_search_fields" => Sessions::get("current_search.search_fields"),
305-
"pagination" => General::getPageNav($search_num_results, $results_per_page, $current_page, "")
305+
"curr_search_fields" => Sessions::get("current_search.search_fields"),
306+
"pagination" => General::getPageNav($search_num_results, $results_per_page, $current_page, "")
306307
);
307308

308309
$page_vars["js_messages"] = array(
309-
"validation_select_rows_to_view", "validation_select_rows_to_download",
310+
"validation_select_rows_to_view", "validation_select_rows_to_download",
310311
"validation_select_submissions_to_delete", "confirm_delete_submission", "confirm_delete_submissions",
311312
"phrase_select_all_X_results", "phrase_select_all_on_page", "phrase_all_X_results_selected",
312313
"phrase_row_selected", "phrase_rows_selected", "confirm_delete_submissions_on_other_pages",
313314
"confirm_delete_submissions_on_other_pages2", "word_yes", "word_no", "phrase_please_confirm",
314315
"validation_please_enter_search_keyword", "notify_invalid_search_dates",
315316
"validation_select_submissions_to_copy"
316317
);
317-
$page_vars["head_string"] =<<< END
318+
$page_vars["head_string"] = <<< END
318319
<link rel="stylesheet" href="../../global/css/ui.daterangepicker.css" type="text/css" />
319320
<script src="../../global/scripts/manage_submissions.js"></script>
320321
<script src="../../global/scripts/daterangepicker.jquery.js"></script>
@@ -323,7 +324,7 @@
323324
$shared_resources
324325
END;
325326

326-
$page_vars["head_js"] =<<< END
327+
$page_vars["head_js"] = <<< END
327328
var rules = [];
328329
rules.push("function,ms.check_search_keyword");
329330
rules.push("function,ms.check_valid_date");

clients/forms/index.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@
5353
$view_info = Views::getView($view_id);
5454

5555
if (isset($_GET["add_submission"]) && $view_info["may_add_submissions"] == "yes") {
56-
$submission_id = Submissions::createBlankSubmission($form_id, $view_id, true);
56+
$account_placeholders = Core::$user->getAccountPlaceholders();
57+
$submission_id = Submissions::createBlankSubmission($form_id, $view_id, true, $account_placeholders);
5758
General::redirect("edit_submission.php?form_id=$form_id&view_id=$view_id&submission_id=$submission_id");
5859
}
5960

global/code/Submissions.class.php

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -294,16 +294,17 @@ public static function processFormSubmission($form_data)
294294
}
295295

296296

297-
/**
298-
* Creates a new blank submission in the database and returns the unique submission ID. If the
299-
* operation fails for whatever reason (e.g. the form doesn't exist), it just returns the empty
300-
* string.
301-
*
302-
* @param integer $form_id
303-
* @param integer $view_id
304-
* @param boolean $is_finalized whether the submission is finalized or not.
305-
*/
306-
public static function createBlankSubmission($form_id, $view_id, $is_finalized = false)
297+
/**
298+
* Creates a new blank submission in the database and returns the unique submission ID. If the
299+
* operation fails for whatever reason (e.g. the form doesn't exist), it just returns the empty
300+
* string.
301+
* @param $form_id
302+
* @param $view_id
303+
* @param bool $is_finalized
304+
* @param array $account_placeholders
305+
* @return string
306+
*/
307+
public static function createBlankSubmission($form_id, $view_id, $is_finalized = false, $account_placeholders = array())
307308
{
308309
$db = Core::$db;
309310

@@ -350,10 +351,14 @@ public static function createBlankSubmission($form_id, $view_id, $is_finalized =
350351
$field_id_to_column_name_map = Fields::getFieldColByFieldId($form_id, $field_ids);
351352

352353
foreach ($field_id_to_column_name_map as $field_id => $col_name) {
354+
355+
// used to convert Client Map placeholders (user data + Extended Client Fields data)
356+
$value = General::evalSmartyString($field_id_to_value_map[$field_id], $account_placeholders);
357+
353358
$default_insert_pairs[] = array(
354359
"placeholder" => ":{$col_name}",
355360
"col_name" => $col_name,
356-
"value" => $field_id_to_value_map[$field_id]
361+
"value" => $value
357362
);
358363
}
359364
}

0 commit comments

Comments
 (0)