: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
namespace NinjaForms\Includes\Entities;
use NinjaForms\Includes\Entities\SubmissionField;
use NinjaForms\Includes\Entities\SimpleEntity;
* Entity defining Single Submission data structure
class SingleSubmission extends SimpleEntity
const TIMESTAMP_FORMAT = 'Y-m-d H:i:s';
protected $submissionRecordId = '';
protected $timestamp = '';
* Form Id to which the submission belongs
* Identifier of where submission is stored
* It is a programmatic name to uniquely identify any given storage
* location, such as NF post, CF table
protected $dataSource = '';
* Collection of submitted values stored as SubmissionField entities
* Keyed on field slug within the collection. The collection may be empty
* if the submission data has not been retrieved yet.
protected $submissionFieldCollection = [];
* Extra data values stored with submission
* Data structured as indexed array of MetaboxOutputEntity->toArray()
protected $extraValues=[];
* Associative array (string) of classes providing additional submission handling
protected $submissionHandlers=[];
* User ID of the submitter, "0" if user non logged-in
protected $submitterId = "";
* Get a field value by the field slug
* @param string $fieldSlug
public function getSubmissionFieldValue(string $fieldSlug)
if (isset($this->submissionFieldCollection[$fieldSlug])) {
$submissionField = $this->submissionFieldCollection[$fieldSlug];
$return = $submissionField->getValue();
* Construct entity from associative array
* @return SingleSubmission
public static function fromArray(array $items): SingleSubmission
foreach ($items as $property => $value) {
// Pass field value through entity to validate, then add, keyed on slug
if ('submissionFieldCollection' === $property) {
foreach ($value as $fieldValueArray) {
$fieldValueObject = SubmissionField::fromArray($fieldValueArray);
$obj->submissionFieldCollection[$fieldValueObject->getSlug()] = $fieldValueObject;
$obj = $obj->__set($property, $value);
* Constructs an array representation
public function toArray(): array
$vars = get_object_vars($this);
$array = ['submissionFieldCollection' => []];
foreach ($vars as $property => $value) {
if ('submissionFieldCollection' === $property) {
foreach ($value as $submissionField) {
$submissionFieldArray = $submissionField->toArray();
$array['submissionFieldCollection'][$submissionField->getSlug()] = $submissionFieldArray;
$array[$property] = $value;
public function getSubmissionRecordId(): string
return $this->submissionRecordId;
* @param string $submissionRecordId Submission Id
public function setSubmissionId(string $submissionRecordId): SingleSubmission
$this->submissionRecordId = $submissionRecordId;
* Get submission time stamp
public function getTimestamp(): string
* Set submission time stamp
* @param string $timestamp Submission time stamp
public function setTimestamp(string $timestamp)
$this->timestamp = date(self::TIMESTAMP_FORMAT, \strtotime($timestamp));
* Get form Id to which the submission belongs
public function getFormId(): string
* Set form Id to which the submission belongs
* @param string $formId Form Id to which the submission belongs
public function setFormId(string $formId): SingleSubmission
* Typical locations include NF post, CF table
public function getDataSource(): string
return $this->dataSource;
* Set submitted values as collection of SubmissionField entities
* @param array $submissionFieldCollection SubmissionField entities keyed on field slug
* @return SingleSubmission
public function setSubmissionFieldCollection(array $submissionFieldCollection): SingleSubmission
$this->submissionFieldCollection = $submissionFieldCollection;
* Get submitted values as collection of SubmissionField entities
public function getSubmissionFieldCollection(): array
return $this->submissionFieldCollection;
* Return array of field slugs for submissionFieldCollection
public function getFieldSlugs(): array
$return = \array_keys($this->submissionFieldCollection);
* Get extra data values stored with submission
public function getExtraValues():array
return $this->extraValues;
* Set extra data values stored with submission
* @param array $extraValues Extra data values stored with submission
* @return SingleSubmission
public function setExtraValues(array $extraValues):SingleSubmission
$this->extraValues = $extraValues;
* Get associative array (string) of classes providing additional submission handling
* [slug]=>(string)ClassName implements SubmissionHandler
public function getSubmissionHandlers():array
return $this->submissionHandlers;
* Set associative array (string) of classes providing additional submission handling
* @param array $submissionHandlers Associative array (string) of classes providing additional submission handling
* @return SingleSubmission
public function setSubmissionHandlers(array $submissionHandlers):SingleSubmission
$this->submissionHandlers = $submissionHandlers;
public function getStatus():array
* @param array $status Submission status
* @return SingleSubmission
public function setStatus(array $status):SingleSubmission