Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

BUGFIX Casting return values on text helper methods in StringField, T…

…ext, Varchar
  • Loading branch information...
commit 0085876495f0f8dda5dc58cb24a8f2220e7baf1e 1 parent 252e187
@chillu chillu authored
View
21 core/model/fieldtypes/HTMLText.php
@@ -28,6 +28,25 @@ function LimitCharacters($limit = 20, $add = "...") {
return (strlen($value) > $limit) ? substr($value, 0, $limit) . $add : $value;
}
+ static $casting = array(
+ "AbsoluteLinks" => "HTMLText",
+ "BigSummary" => "HTMLText",
+ "ContextSummary" => "HTMLText",
+ "FirstParagraph" => "HTMLText",
+ "FirstSentence" => "HTMLText",
+ "LimitCharacters" => "HTMLText",
+ "LimitSentences" => "HTMLText",
+ "Lower" => "HTMLText",
+ "LowerCase" => "HTMLText",
+ "Summary" => "HTMLText",
+ "Upper" => "HTMLText",
+ "UpperCase" => "HTMLText",
+ 'EscapeXML' => 'HTMLText',
+ 'LimitWordCount' => 'HTMLText',
+ 'LimitWordCountXML' => 'HTMLText',
+ 'NoHTML' => 'Text',
+ );
+
/**
* Create a summary of the content. This will be some section of the first paragraph, limited by
* $maxWords. All internal tags are stripped out - the return value is a string
@@ -133,4 +152,4 @@ public function scaffoldSearchField($title = null) {
}
-?>
+?>
View
6 core/model/fieldtypes/StringField.php
@@ -9,6 +9,12 @@
abstract class StringField extends DBField {
protected $nullifyEmpty = true;
+ static $casting = array(
+ "LimitCharacters" => "Text",
+ "Lower" => "Text",
+ "Upper" => "Text",
+ );
+
/**
* Construct a string type field with a set of optional parameters
* @param $name string The name of the field
View
14 core/model/fieldtypes/Text.php
@@ -17,8 +17,20 @@
* @subpackage model
*/
class Text extends StringField {
+
static $casting = array(
- "AbsoluteLinks" => "HTMLText",
+ "AbsoluteLinks" => "Text",
+ "BigSummary" => "Text",
+ "ContextSummary" => "Text",
+ "FirstParagraph" => "Text",
+ "FirstSentence" => "Text",
+ "LimitCharacters" => "Text",
+ "LimitSentences" => "Text",
+ "Summary" => "Text",
+ 'EscapeXML' => 'Text',
+ 'LimitWordCount' => 'Text',
+ 'LimitWordCountXML' => 'HTMLText',
+ 'NoHTML' => 'Text',
);
/**
View
5 core/model/fieldtypes/Varchar.php
@@ -10,6 +10,11 @@
* @subpackage model
*/
class Varchar extends StringField {
+
+ static $casting = array(
+ "Initial" => "Text",
+ "URL" => "Text",
+ );
protected $size;
View
28 tests/fieldtypes/HTMLTextTest.php
@@ -102,5 +102,33 @@ function testFirstSentence() {
$this->assertEquals($match, $textObj->FirstSentence());
}
}
+
+ public function testRAW() {
+ $data = DBField::create('HTMLText', 'This & This');
+ $this->assertEquals($data->RAW(), 'This & This');
+
+ $data = DBField::create('HTMLText', 'This & This');
+ $this->assertEquals($data->RAW(), 'This & This');
+ }
+
+ public function testXML() {
+ $data = DBField::create('HTMLText', 'This & This');
+ $this->assertEquals($data->XML(), 'This & This');
+ }
+
+ public function testHTML() {
+ $data = DBField::create('HTMLText', 'This & This');
+ $this->assertEquals($data->HTML(), 'This & This');
+ }
+
+ public function testJS() {
+ $data = DBField::create('HTMLText', '"this is a test"');
+ $this->assertEquals($data->JS(), '\"this is a test\"');
+ }
+
+ public function testATT() {
+ $data = DBField::create('HTMLText', '"this is a test"');
+ $this->assertEquals($data->ATT(), '"this is a test"');
+ }
}
?>
View
26 tests/fieldtypes/TextTest.php
@@ -142,6 +142,30 @@ function testContextSummary() {
'A dog <span class="highlight">ate</span> a cat while looking at a Foobar',
$textObj->ContextSummary(100, $testKeyword3a)
);
-
}
+
+ public function testRAW() {
+ $data = DBField::create('Text', 'This &amp; This');
+ $this->assertEquals($data->RAW(), 'This &amp; This');
+ }
+
+ public function testXML() {
+ $data = DBField::create('Text', 'This & This');
+ $this->assertEquals($data->XML(), 'This &amp; This');
+ }
+
+ public function testHTML() {
+ $data = DBField::create('Text', 'This & This');
+ $this->assertEquals($data->HTML(), 'This &amp; This');
+ }
+
+ public function testJS() {
+ $data = DBField::create('Text', '"this is a test"');
+ $this->assertEquals($data->JS(), '\"this is a test\"');
+ }
+
+ public function testATT() {
+ $data = DBField::create('Text', '"this is a test"');
+ $this->assertEquals($data->ATT(), '&quot;this is a test&quot;');
+ }
}

1 comment on commit 0085876

@sminnee
Owner

Adding casting is benign, so this is benign. The increased exec time should be okay, and if not, site devs should use partial caching! ;-)

Please sign in to comment.
Something went wrong with that request. Please try again.