Merge pull request #8144 from open-sausages/pulls/3/the-big-shortcode

NEW: StringField exists() checks don't have to use RAW()
This commit is contained in:
Daniel Hensby 2018-06-06 15:51:49 +01:00 committed by GitHub
commit 3139b246d9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 9 deletions

View File

@ -258,12 +258,11 @@ 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()) {
return false;
}
$value = $this->RAW(); if (!$this->isPopulated($value)) {
return false;
}
// 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)) {

View File

@ -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) {

View File

@ -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
}
} }