Your IP : 216.73.216.95


Current Path : /var/test/www/html/wp-content/plugins/give/src/Session/SessionDonation/SessionObjects/
Upload File :
Current File : /var/test/www/html/wp-content/plugins/give/src/Session/SessionDonation/SessionObjects/FormEntry.php

<?php

namespace Give\Session\SessionDonation\SessionObjects;

use Give\Helpers\ArrayDataSet;
use Give\Session\Objects;
use InvalidArgumentException;

/**
 * Class FormEntry
 *
 * This class use to represent donation form entries as object.
 *
 * @package Give\Session\SessionDonation\SessionObjects
 */
class FormEntry implements Objects {
	/**
	 * Form Id.
	 *
	 * @var string
	 */
	public $formId;

	/**
	 * Form Title.
	 *
	 * @var string
	 */
	public $formTitle;

	/**
	 * Page url on which donation page exist.
	 *
	 * @var string
	 */
	public $currentUrl;

	/**
	 * Donation level id.
	 *
	 * @var string
	 */
	public $priceId;

	/**
	 * Donation amount
	 *
	 * @var string
	 */
	public $totalAmount;

	/**
	 * First name
	 *
	 * @var string
	 */
	public $firstName;

	/**
	 * Last name.
	 *
	 * @var string
	 */
	public $lastName;

	/**
	 * Company name.
	 *
	 * @var string
	 */
	public $companyName;

	/**
	 * Donor email
	 *
	 * @var string
	 */
	public $donorEmail;

	/**
	 * WP user id.
	 *
	 * @var string
	 */
	public $wpUserId;

	/**
	 * Payment gateway.
	 *
	 * @var string
	 */
	public $paymentGateway;

	/**
	 * Take array and return object.
	 *
	 * @param $array
	 *
	 * @return FormEntry
	 */
	public static function fromArray( $array ) {
		$renameTo = [
			'amount'  => 'totalAmount',
			'first'   => 'firstName',
			'last'    => 'lastName',
			'email'   => 'donorEmail',
			'userId'  => 'wpUserId',
			'gateway' => 'paymentGateway',
		];

		$array        = ArrayDataSet::renameKeys( $array, $renameTo );
		$expectedKeys = [ 'formId', 'totalAmount', 'firstName', 'email', 'gateway' ];

		if ( ! ArrayDataSet::hasRequiredKeys( $array, $expectedKeys ) ) {
			throw new InvalidArgumentException(
				'Invalid FormEntries object, must have the exact following keys: ' . implode( ', ', $expectedKeys )
			);
		}

		$formEntries = new self();

		foreach ( $array as $key => $value ) {
			$formEntries->{$key} = $value;
		}

		return $formEntries;
	}
}