| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405 |
- <?php if ( ! defined( 'ABSPATH' ) ) exit;
- /**
- * Submission.
- * This class handles storing, retrieving, editing a submission.
- *
- * @package Ninja Forms
- * @subpackage Classes/Submissions
- * @copyright Copyright (c) 2014, WPNINJAS
- * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
- * @since 2.7
- */
- class NF_Sub {
- /**
- * @var $sub_id store our sub id
- */
- var $sub_id;
- /**
- * @var $seq_num store our sequential number
- */
- var $seq_num;
- /**
- * @var $form_id store our form_id
- */
- var $form_id;
- /**
- * @var $fields store our user values
- */
- var $fields;
- /**
- * @var $action store the action that created this sub
- */
- var $action;
- /**
- * @var $user_id store the user ID for this submission
- */
- var $user_id;
- /**
- * @var $meta store our non-field meta
- */
- var $meta;
- /**
- * @var $date_submitted store our submitted date
- */
- var $date_submitted;
- /**
- * @var $date_modified store our modified date
- */
- var $date_modified;
- /**
- * Get things started
- *
- * @access public
- * @since 2.7
- * @return void/
- */
- public function __construct( $sub_id ) {
- global $ninja_forms_fields;
- // Bail if the sub doesn't exist.
- $sub = get_post( $sub_id );
- if ( ! is_object( $sub ) )
- return false;
- // Set our sub id
- $this->sub_id = $sub_id;
- // Populate our fields
- $this->fields = array();
- $this->retrieve_fields();
- // Setup our form id var
- $this->form_id = $this->get_meta( '_form_id' );
- // Setup our action var
- $this->action = $this->get_meta( '_action' );
- // Setup our sequential id
- $this->seq_num = $this->get_meta( '_seq_num' );
- // Setup our user_id var
- $this->user_id = $sub->post_author;
- // Setup our date submitted var
- $this->date_submitted = get_the_time( 'Y-m-d G:i:s', $sub_id );
- // Setup our date modified var
- $this->date_modified = get_post_modified_time( 'Y-m-d G:i:s', false, $sub_id );
- }
- private function retrieve_fields() {
- global $ninja_forms_fields;
- // Setup our fields and meta vars.
- $post_meta = get_post_custom( $this->sub_id );
- foreach ( $post_meta as $key => $array ) {
- if ( is_serialized( $array[0] ) ) {
- $meta_value = unserialize( $array[0] );
- } else {
- $meta_value = $array[0];
- }
- if ( strpos( $key, '_field_' ) !== false ) {
- $field_id = str_replace( '_field_', '', $key );
- $field = ninja_forms_get_field_by_id( $field_id );
- $field_type = $field['type'];
- // Check to see if our field type has been set as a "process_field".
- if ( isset ( $ninja_forms_fields[ $field_type ] ) ) {
- $reg_field = $ninja_forms_fields[ $field_type ];
- $process_field = $reg_field['process_field'];
- } else {
- $process_field = false;
- }
- if ( $process_field ) {
- $this->fields[ $field_id ] = $meta_value;
- }
- } else if ( $key != '_form_id' && $key != '_action' ) {
- $this->meta[ $key ] = $meta_value;
- }
- }
- }
- /**
- * Update our form id
- *
- * @access public
- * @since 2.7
- * @return bool
- */
- public function update_form_id( $form_id ) {
- if ( update_post_meta( $this->sub_id, '_form_id', $form_id ) ) {
- $this->form_id = $form_id;
- return true;
- } else {
- return false;
- }
- }
- /**
- * Update our action
- *
- * @access public
- * @since 2.7
- * @return bool
- */
- public function update_action( $action ) {
- if ( update_post_meta( $this->sub_id, '_action', $action ) ) {
- $this->action = $action;
- return true;
- } else {
- return false;
- }
- }
- /**
- * Update our sequential id
- *
- * @access public
- * @since 2.7
- * @return bool
- */
- public function update_seq_num( $seq_num ) {
- if ( update_post_meta( $this->sub_id, '_seq_num', $seq_num ) ) {
- $this->seq_num = $seq_num;
- return true;
- } else {
- return false;
- }
- }
- /**
- * Update our user id
- *
- * @access public
- * @since 2.7
- * @return bool
- */
- public function update_user_id( $user_id ) {
- $args = array(
- 'ID' => $this->sub_id,
- 'post_author' => $user_id,
- );
- // Update the post into the database
- if ( wp_update_post( $args ) ) {
- $this->user_id = $user_id;
- return true;
- } else {
- return false;
- }
- }
- /**
- * Update our date submitted
- *
- * @access public
- * @since 2.7
- * @return bool
- */
- public function update_date_submitted( $date ) {
- $args = array(
- 'ID' => $this->sub_id,
- 'post_date' => $date,
- 'post_date_gmt' => get_gmt_from_date( $date ),
- );
- // Update the post into the database
- if ( wp_update_post( $args ) ) {
- $this->date_submitted = $date;
- return true;
- } else {
- return false;
- }
- }
- /**
- * Update our date modified
- *
- * @access public
- * @since 2.7
- * @return bool
- */
- public function update_date_modified( $date ) {
- $args = array(
- 'ID' => $this->sub_id,
- 'post_modified' => $date,
- 'post_modified_gmt' => get_gmt_from_date( $date ),
- );
- // Update the post into the database
- if ( wp_update_post( $args ) ) {
- $this->date_modified = $date;
- return true;
- } else {
- return false;
- }
- }
- /**
- * Add a meta value to our submission.
- *
- * @access public
- * @since 2.7
- * @return bool
- */
- public function add_meta( $meta_key, $value ) {
- if ( update_post_meta( $this->sub_id, $meta_key, $value ) ) {
- $this->meta[ $meta_key ] = $value;
- return true;
- } else {
- return false;
- }
- }
- /**
- * Update a meta value.
- * Wrapper for add_field().
- *
- * @access public
- * @since 2.7
- * @return bool
- */
- public function update_meta( $meta_key, $value ) {
- return $this->add_meta( $meta_key, $value );
- }
- /**
- * Delete a meta value.
- *
- * @access public
- * @since 2.9
- * @return bool
- */
- public function delete_meta( $meta_key, $value = '' ) {
- if ( empty( $value ) ) {
- return delete_post_meta( $this->sub_id, $meta_key );
- } else {
- return delete_post_meta( $this->sub_id, $meta_key, $value );
- }
-
- }
- /**
- * Add a field value to our submission.
- *
- * @access public
- * @since 2.7
- * @return bool
- */
- public function add_field( $field_id, $value ) {
- $meta_key = '_field_' . $field_id;
- if ( update_post_meta( $this->sub_id, $meta_key, $value ) ) {
- $this->field[ $field_id ] = $value;
- return true;
- } else {
- return false;
- }
- }
- /**
- * Update a field value
- *
- * @access public
- * @since 2.7
- * @return bool
- */
- public function update_field( $field_id, $value ) {
- return $this->add_field( $field_id, $value );
- }
- /**
- * Get a meta value from our submission by meta key
- *
- * @access public
- * @since 2.7
- * @return array|bool
- */
- public function get_meta( $meta_key ) {
- if ( ! isset ( $this->meta[ $meta_key ] ) ) {
- $this->meta[ $meta_key ] = get_post_meta( $this->sub_id, $meta_key, true );
- }
- return $this->meta[ $meta_key ];
- }
- /**
- * Get a field value from our submission by field id
- *
- * @access public
- * @since 2.7
- * @return array|bool
- */
- public function get_field( $field_id ) {
- if ( isset ( $this->fields[ $field_id ] ) ) {
- return $this->fields[ $field_id ];
- } else {
- return get_post_meta( $this->sub_id, '_field_' . $field_id, true );
- }
- }
- /**
- * Get a submission from the database, returning all the field data.
- *
- * @access public
- * @since 2.7
- * @return array $sub
- */
- public function get_all_fields() {
- if ( empty ( $this->fields ) ) {
- $this->retrieve_fields();
- }
- return $this->fields;
- }
- /**
- * Get a submission sequential ID by the post ID.
- * This function puts together the prefix, sequential number, and postfix
- *
- * @access public
- * @since 2.7
- * @return string $seq_num
- */
- public function get_seq_num() {
- return apply_filters( 'nf_subs_seq_num', $this->seq_num, $this->sub_id );
- }
- /**
- * Export our current submission.
- *
- * @access public
- * @param array $sub_ids
- * @param bool @return
- * @since 2.7
- * @return void
- */
- public function export( $return = false ){
- if ( $return ) {
- return Ninja_Forms()->subs()->export( $this->sub_id, $return );
- } else {
- Ninja_Forms()->subs()->export( $this->sub_id, $return );
- }
- }
- /**
- * Delete this submission
- *
- * @access public
- * @since 2.7
- * @return void
- */
- public function delete() {
- wp_delete_post( $this->sub_id, true );
- }
- }
|