New isPopulated method to allow StringField subclasses to check existence without RAW

This commit is contained in:
Aaron Carlino 2018-06-06 23:26:07 +12:00
parent aecac871cf
commit c639ffa9ce
3 changed files with 18 additions and 9 deletions

View File

@ -258,12 +258,11 @@ class HTMLText extends Text {
* @return boolean
*/
public function exists() {
// If it's blank, it's blank
if(!parent::exists()) {
return false;
}
$value = $this->value;
$value = $this->RAW();
if (!$this->isPopulated($value)) {
return false;
}
// If it's got a content tag
if(preg_match('/<(img|embed|object|iframe|meta|source|link)[^>]*>/i', $value)) {

View File

@ -35,7 +35,7 @@ class HTMLVarchar extends Varchar {
}
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) {

View File

@ -85,9 +85,7 @@ abstract class StringField extends DBField {
*/
public function exists() {
$value = $this->RAW();
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
return $this->isPopulated($value);
}
/**
@ -229,4 +227,16 @@ abstract class StringField extends DBField {
public function NoHTML() {
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
}
}