# fluentform/1.2.4/app/Modules/Entries/Entries.php

Fluent Forms – Customizable Contact Forms, Survey, Quiz, &amp; Conversational Form Builder, version 1.2.4. 321 lines.

- Page: https://pluginprobe.com/plugins/fluentform/1.2.4/code/app/Modules/Entries/Entries.php
- Raw: https://pluginprobe.com/plugins/fluentform/1.2.4/raw/app/Modules/Entries/Entries.php
- Modified: 2018-02-03T11:29:32+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/fluentform/1.2.4/code/app/Modules/Entries/Entries.php#L10-L20`.

```php
<?php 

namespace FluentForm\App\Modules\Entries;

use FluentForm\View;
use FluentForm\App\Modules\Acl\Acl;
use FluentForm\App\Modules\Form\FormDataParser;
use FluentForm\App\Modules\Form\FormFieldsParser;

class Entries extends EntryQuery
{
	protected $responseMetaModel;

    /**
     * Entries constructor.
     * @throws \Exception
     */
	public function __construct()
	{
        Acl::verify('fluentform_entries_viewer');

		parent::__construct();
		$this->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);
	}
	
}
```
