silverstripe-userforms/code/Model/Submission/SubmittedFormField.php

117 lines
2.6 KiB
PHP
Raw Normal View History

<?php
namespace SilverStripe\UserForms\Model\Submission;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\FieldType\DBField;
use SilverStripe\Security\Member;
use SilverStripe\UserForms\Model\EditableFormField;
/**
* Data received from a UserDefinedForm submission
*
* @package userforms
* @property string $Name
* @property string $Value
*/
2016-07-21 07:53:59 +02:00
class SubmittedFormField extends DataObject
{
private static $db = [
'Name' => 'Varchar',
'Value' => 'Text',
'Title' => 'Varchar(255)',
'Displayed' => 'Boolean',
];
2015-09-11 00:20:06 +02:00
private static $has_one = [
'Parent' => SubmittedForm::class
];
private static $summary_fields = [
2016-07-21 07:53:59 +02:00
'Title' => 'Title',
'FormattedValue' => 'Value'
];
private static $table_name = 'SubmittedFormField';
2016-07-21 07:53:59 +02:00
/**
* @param Member $member
* @param array $context
2016-07-21 07:53:59 +02:00
* @return boolean
*/
public function canCreate($member = null, $context = [])
2016-07-21 07:53:59 +02:00
{
return $this->Parent()->canCreate();
}
2016-07-21 07:53:59 +02:00
/**
* @param Member $member
2016-07-21 07:53:59 +02:00
*
* @return boolean
*/
public function canView($member = null)
{
return $this->Parent()->canView();
}
2016-07-21 07:53:59 +02:00
/**
* @param Member $member
2016-07-21 07:53:59 +02:00
*
* @return boolean
*/
public function canEdit($member = null)
{
return $this->Parent()->canEdit();
}
2016-07-21 07:53:59 +02:00
/**
* @param Member $member
2016-07-21 07:53:59 +02:00
*
* @return boolean
*/
public function canDelete($member = null)
{
return $this->Parent()->canDelete();
}
2016-07-21 07:53:59 +02:00
/**
* Generate a formatted value for the reports and email notifications.
* Converts new lines (which are stored in the database text field) as
* <brs> so they will output as newlines in the reports.
2016-07-21 07:53:59 +02:00
*
* @return DBField
2016-07-21 07:53:59 +02:00
*/
public function getFormattedValue()
{
return $this->dbObject('Value');
2016-07-21 07:53:59 +02:00
}
2015-09-11 00:20:06 +02:00
2016-07-21 07:53:59 +02:00
/**
* Return the value of this submitted form field suitable for inclusion
* into the CSV
*
* @return DBField
2016-07-21 07:53:59 +02:00
*/
public function getExportValue()
{
return $this->Value;
}
2014-08-11 01:12:00 +02:00
2016-07-21 07:53:59 +02:00
/**
* Find equivalent editable field for this submission.
*
* Note the field may have been modified or deleted from the original form
* so this may not always return the data you expect. If you need to save
* a particular state of editable form field at time of submission, copy
* that value to the submission.
*
* @return EditableFormField
*/
public function getEditableField()
{
return $this->Parent()->Parent()->Fields()->filter([
2016-07-21 07:53:59 +02:00
'Name' => $this->Name
])->First();
2016-07-21 07:53:59 +02:00
}
}