responseMetaModel = wpFluent()->table( 'fluentform_submission_meta' ); } public function renderEntries($form_id) { wp_enqueue_script('fluentform_form_entries', fluentformMix("js/form_entries.js")); $forms = wpFluent() ->select(array('id', 'title')) ->table('fluentform_forms') ->get(); $form = wpFluent()->table('fluentform_forms')->find($form_id); wp_localize_script('fluentform_form_entries', 'fluent_form_entries_vars', array( 'all_forms_url' => admin_url('admin.php?page=fluent_forms'), 'forms' => $forms, 'form_id' => $form->id, 'current_form_title' => $form->title, 'entries_url_base' => admin_url('admin.php?page=fluent_forms&route=entries&form_id='), 'no_found_text' => __('Sorry! No entries found. All your entries will be shown here once you start getting form submissions', 'fluentform') )); View::render('admin.form.entries', array( 'form_id' => $form_id )); } public function getEntriesGroup() { $formId = intval($this->request->get('form_id')); $counts = $this->groupCount($formId); wp_send_json_success([ 'counts' => $counts ], 200); } public function getEntries() { $formId = intval($this->request->get('form_id')); $currentPage = intval($this->request->get('current_page', 1)); $perPage = intval($this->request->get('per_page', 10)); $sortBy = sanitize_text_field($this->request->get('sort_by', 'ASC')); $entry_type = sanitize_text_field($this->request->get('entry_type', 'all')); $search = sanitize_text_field($this->request->get('search')); $this->formId = $formId; $this->per_page = $perPage; $this->sort_by = $sortBy; $this->page_number = $currentPage; $this->search = $search; if($entry_type == 'favorite') { $this->is_favourite = true; } else if($entry_type != 'all') { $this->status = $entry_type; } $form = $this->formModel->find($formId); $formMeta = $this->getFormInputsAndLabels($form); $submissions = $this->getResponses(); $submissions['data'] = FormDataParser::parseFormEntries($submissions['data'], $form); wp_send_json_success([ 'submissions' => $submissions, 'labels' => $formMeta['labels'] ], 200); exit(); } public function getEntry() { $formId = intval($this->request->get('form_id')); $entryId = intval($this->request->get('entry_id')); $entry_type = sanitize_text_field($this->request->get('entry_type', 'all')); $operator = sanitize_text_field($this->request->get('operator')); // Ensures the next operator is in recognized format. $operator = in_array($operator, ['+', '-']) ? $operator : null; $currentSerialNo = sanitize_text_field($this->request->get('currentSerialNo')); $this->formId = $formId; $this->sort_by = sanitize_text_field($this->request->get('sort_by', 'ASC')); $this->search = sanitize_text_field($this->request->get('search')); if ($entry_type === 'favorite') { $this->is_favourite = true; } else if ($entry_type !== 'all') { $this->status = $entry_type; } $form = $this->formModel->find($formId); $formMeta = $this->getFormInputsAndLabels($form); $submission = $this->getResponse($entryId, $operator, $currentSerialNo); $submission = FormDataParser::parseFormEntry($submission, $form, $formMeta['inputs']); if($submission->user_id) { $user = get_user_by('ID', $submission->user_id); $user_data = array( 'name' => $user->display_name, 'email' => $user->user_email, 'ID' => $user->ID, 'permalink' => get_edit_user_link($user->ID) ); $submission->user = $user_data; } $submission = apply_filters('fluentform_single_response_data', $submission, $this->formId); wp_send_json_success(array( 'submission' => $submission, 'labels' => $formMeta['labels'], 'fields' => $formMeta['inputs'] ), 200); } /** * @param $formId * @todo: Implement Caching mechanism so we don't have to parse these things for every request * @return array */ private function getFormInputsAndLabels($form) { $formInputs = FormFieldsParser::getEntryInputs($form); $inputLabels = FormFieldsParser::getAdminLabels($form, $formInputs); return array( 'inputs' => $formInputs, 'labels' => $inputLabels ); } public function getNotes() { $formId = intval($this->request->get('form_id')); $entry_id = intval($this->request->get('entry_id')); $notes = $this->responseMetaModel ->where('form_id', $formId) ->where('response_id', $entry_id) ->where('meta_key','_notes') ->get(); foreach ( $notes as $note ) { if($note->user_id) { $note->pemalink = get_edit_user_link($note->user_id); } else { $note->pemalink = false; } } $notes = apply_filters('fluentform_entry_notes', $notes, $entry_id, $formId); wp_send_json_success([ 'notes' => $notes ], 200); } public function addNote() { $entryId = intval($this->request->get('entry_id')); $formId = intval($this->request->get('form_id')); $note = $this->request->get('note'); $note_content = sanitize_textarea_field($note['content']); $note_status = sanitize_text_field($note['status']); $user = get_user_by('ID', get_current_user_id()); $response_note = array( 'response_id' => $entryId, 'form_id' => $formId, 'meta_key' => '_notes', 'value' => $note_content, 'status' => $note_status, 'user_id' => $user->ID, 'name' => $user->display_name, 'created_at' => date('Y-m-d H:i:s'), 'updated_at' => date('Y-m-d H:i:s') ); $response_note = apply_filters('fluentform_add_response_note', $response_note); $insertId = $this->responseMetaModel->insert($response_note); $added_note = $this->responseMetaModel->find($insertId); do_action('fluentform_new_response_note_added', $insertId, $added_note); wp_send_json_success([ 'message' => __('Note has been successfully added', 'fluentform'), 'note' => $added_note, 'insert_id' => $insertId ], 200); } public function changeEntryStatus() { $formId = intval($this->request->get('form_id')); $entryId = intval($this->request->get('entry_id')); $newStatus = sanitize_text_field($this->request->get('status')); $this->responseModel ->where('form_id', $formId) ->where('id', $entryId) ->update(array('status' => $newStatus)); wp_send_json_success(array( 'message' => __('Item has been marked as '.$newStatus, 'fluentform'), 'status' => $newStatus ), 200); } public function deleteEntry() { $formId = intval($this->request->get('form_id')); $entryId = intval($this->request->get('entry_id')); $newStatus = sanitize_text_field($this->request->get('status')); $this->responseModel ->where('form_id', $formId) ->where('id', $entryId) ->delete(); wp_send_json_success(array( 'message' => __('Item Successfully deleted', 'fluentform'), 'status' => $newStatus ), 200); } public function favoriteChange() { $formId = intval($this->request->get('form_id')); $entryId = intval($this->request->get('entry_id')); $newStatus = intval($this->request->get('is_favourite')); if($newStatus) { $message = __('Item has been added to favorites', 'fluentform'); } else { $message = __('Item has been removed from favorites', 'fluentform'); } $this->responseModel ->where('form_id', $formId) ->where('id', $entryId) ->update(array('is_favourite' => $newStatus)); wp_send_json_success(array( 'message' => $message, 'is_favourite' => $newStatus ), 200); } public function handleBulkAction() { $formId = intval($this->request->get('form_id')); $entries = fluentFormSanitizer($this->request->get('entries', array())); $actionType = sanitize_text_field($this->request->get('action_type')); if(!$formId || !count($entries)) { wp_send_json_error(array( 'message' => __('Please select entries first', 'fluentform') ), 400); } $message = __('Action Successfully executed', 'fluentform'); $bulkQuery = wpFluent()->table('fluentform_submissions') ->where('form_id', $formId) ->whereIn('id', $entries); if($actionType == 'trashed') { $updateData = array( 'status' => 'trashed' ); $bulkQuery->update($updateData); $message = __('Selected entries successfully trashed', 'fluentform'); } else if($actionType == 'delete') { $bulkQuery->delete(); $message = __('Selected entries successfully deleted', 'fluentform'); } else if($actionType == 'read') { $updateData = array( 'status' => 'read' ); $bulkQuery->update($updateData); $message = __('Selected entries successfully marked as read', 'fluentform'); } else if($actionType == 'unread') { $updateData = array( 'status' => 'unread' ); $bulkQuery->update($updateData); $message = __('Selected entries successfully marked as unread', 'fluentform'); } else if($actionType == 'favorite') { $updateData = array( 'is_favourite' => 1 ); $bulkQuery->update($updateData); $message = __('Selected entries successfully marked as Favorite', 'fluentform'); } else if($actionType == 'remove-favorite') { $updateData = array( 'is_favourite' => 0 ); $bulkQuery->update($updateData); $message = __('Selected entries successfully remove from favorite', 'fluentform'); } wp_send_json_success(array( 'message' => $message ), 200); } }