Class representing a container.
Description
Source
File: src/db-objects/containers/container.php
class Container extends Model { use Sitewide_Model_Trait; /** * Container ID. * * @since 1.0.0 * @var int */ protected $id = 0; /** * ID of the form this container is part of. * * @since 1.0.0 * @var int */ protected $form_id = 0; /** * Container label. * * @since 1.0.0 * @var string */ protected $label = ''; /** * Index to sort containers by. * * @since 1.0.0 * @var int */ protected $sort = 0; /** * Returns the parent form for the container. * * @since 1.0.0 * * @return Form|null Parent form, or null if none set. */ public function get_form() { if ( empty( $this->form_id ) ) { return null; } return $this->manager->get_parent_manager( 'forms' )->get( $this->form_id ); } /** * Returns all elements that belong to the form. * * @since 1.0.0 * * @param array $args Optional. Additional query arguments. Default empty array. * @return awsmug\Torro_Forms\DB_Objects\Elements\Element_Collection List of elements. */ public function get_elements( $args = array() ) { if ( empty( $this->id ) ) { return $this->manager->get_child_manager( 'elements' )->get_collection( array(), 0, 'objects' ); } $args = wp_parse_args( $args, array( 'number' => -1, 'container_id' => $this->id, ) ); return $this->manager->get_child_manager( 'elements' )->query( $args ); } /** * Deletes the model from the database. * * @since 1.0.0 * * @return true|WP_Error True on success, or an error object on failure. */ public function delete() { $elements = $this->get_elements(); foreach ( $elements as $element ) { $element->delete(); } return parent::delete(); } /** * Returns an array representation of the model. * * @since 1.0.0 * @access public * * @param bool $include_meta Optional. Whether to include metadata for each model in the collection. * Default true. * @return array Array including all information for the model. */ public function to_json( $include_meta = true ) { $data = parent::to_json( $include_meta ); /* translators: %s: HTML code for required indicator */ $required_indicator_description = '<span aria-hidden="true">' . sprintf( __( 'Required fields are marked %s.', 'torro-forms' ), '<span class="torro-required-indicator">*</span>' ) . '</span>'; /** * Filters the required indicator description, which is displayed above or below each form. * * @since 1.0.0 * * @param string $required_indicator_description Indicator description HTML string. Default is a description hidden for screen reader users, * explaining the asterisk character to mark a required field. */ $data['required_description'] = apply_filters( "{$this->manager->get_prefix()}required_indicator_description", $required_indicator_description ); return $data; } /** * Duplicates the container including all of its contents. * * @since 1.0.0 * * @param int $form_id New parent form ID to use for the container. * @return Container|WP_Error New container object on success, error object on failure. */ public function duplicate( $form_id ) { $new_container = $this->manager->create(); foreach ( $this->to_json() as $key => $value ) { if ( 'id' === $key ) { continue; } if ( 'form_id' === $key ) { $new_container->form_id = $form_id; continue; } $new_container->$key = $value; } $status = $new_container->sync_upstream(); if ( is_wp_error( $status ) ) { return $status; } foreach ( $this->get_elements() as $element ) { $element->duplicate( $new_container->id ); } return $new_container; } }
Changelog
Version | Description |
---|---|
1.0.0 | Introduced. |
Methods
- delete — Deletes the model from the database.
- duplicate — Duplicates the container including all of its contents.
- get_elements — Returns all elements that belong to the form.
- get_form — Returns the parent form for the container.
- to_json — Returns an array representation of the model.