mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
New isPopulated method to allow StringField subclasses to check existence without RAW
This commit is contained in:
parent
aecac871cf
commit
c639ffa9ce
@ -258,13 +258,12 @@ class HTMLText extends Text {
|
|||||||
* @return boolean
|
* @return boolean
|
||||||
*/
|
*/
|
||||||
public function exists() {
|
public function exists() {
|
||||||
// If it's blank, it's blank
|
$value = $this->value;
|
||||||
if(!parent::exists()) {
|
|
||||||
|
if (!$this->isPopulated($value)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$value = $this->RAW();
|
|
||||||
|
|
||||||
// If it's got a content tag
|
// If it's got a content tag
|
||||||
if(preg_match('/<(img|embed|object|iframe|meta|source|link)[^>]*>/i', $value)) {
|
if(preg_match('/<(img|embed|object|iframe|meta|source|link)[^>]*>/i', $value)) {
|
||||||
return true;
|
return true;
|
||||||
|
@ -35,7 +35,7 @@ class HTMLVarchar extends Varchar {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function exists() {
|
public function exists() {
|
||||||
return parent::exists() && $this->RAW() != '<p></p>';
|
return $this->isPopulated($this->value) && $this->value != '<p></p>';
|
||||||
}
|
}
|
||||||
|
|
||||||
public function scaffoldFormField($title = null, $params = null) {
|
public function scaffoldFormField($title = null, $params = null) {
|
||||||
|
@ -85,9 +85,7 @@ abstract class StringField extends DBField {
|
|||||||
*/
|
*/
|
||||||
public function exists() {
|
public function exists() {
|
||||||
$value = $this->RAW();
|
$value = $this->RAW();
|
||||||
return $value // All truthy values exist
|
return $this->isPopulated($value);
|
||||||
|| (is_string($value) && strlen($value)) // non-empty strings exist ('0' but not (int)0)
|
|
||||||
|| (!$this->getNullifyEmpty() && $value === ''); // Remove this stupid exemption in 4.0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -229,4 +227,16 @@ abstract class StringField extends DBField {
|
|||||||
public function NoHTML() {
|
public function NoHTML() {
|
||||||
return strip_tags($this->RAW());
|
return strip_tags($this->RAW());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if the value meets all the criteria of not being empty, as defined by
|
||||||
|
* the class
|
||||||
|
* @param $value
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
protected function isPopulated($value) {
|
||||||
|
return $value // All truthy values exist
|
||||||
|
|| (is_string($value) && strlen($value)) // non-empty strings exist ('0' but not (int)0)
|
||||||
|
|| (!$this->getNullifyEmpty() && $value === ''); // Remove this stupid exemption in 4.0
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user