Permalink
Browse files

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

…ext, Varchar
  • Loading branch information...
1 parent 252e187 commit 0085876495f0f8dda5dc58cb24a8f2220e7baf1e @chillu chillu committed Jan 31, 2012
@@ -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) {
}
-?>
+?>
@@ -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
@@ -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',
);
/**
@@ -10,6 +10,11 @@
* @subpackage model
*/
class Varchar extends StringField {
+
+ static $casting = array(
+ "Initial" => "Text",
+ "URL" => "Text",
+ );
protected $size;
@@ -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"');
+ }
}
?>
@@ -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

Owner

sminnee commented on 0085876 Jan 31, 2012

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.