Permalink
Browse files

Merge remote-tracking branch 'origin/3.0'

Conflicts:
	.travis.yml
  • Loading branch information...
2 parents f6a9046 + be8ab2e commit 1181ba089af7a88c1ec07fa5b01d367d4b1efe30 @chillu chillu committed Oct 16, 2012
Showing with 61 additions and 21 deletions.
  1. +5 −1 .travis.yml
  2. +4 −4 model/DB.php
  3. +33 −11 model/HTMLValue.php
  4. +19 −5 tests/integration/HTMLValueTest.php
View
@@ -26,8 +26,12 @@ script:
branches:
except:
- - translation-staging
+ - 2.1
+ - 2.2
+ - 2.3
- 2.4
+ - post-2.4
+ - translation-staging
notifications:
irc:
View
@@ -65,14 +65,14 @@ public static function getConn($name = 'default') {
* Set it to null to revert to the main database.
*/
public static function set_alternative_database_name($dbname) {
- $_SESSION["alternativeDatabaseName"] = $dbname;
+ Session::set("alternativeDatabaseName", $dbname);
}
/**
* Get the name of the database in use
*/
public static function get_alternative_database_name() {
- return $_SESSION["alternativeDatabaseName"];
+ return Session::get("alternativeDatabaseName");
}
/**
@@ -84,8 +84,8 @@ public static function get_alternative_database_name() {
*/
public static function connect($databaseConfig) {
// This is used by TestRunner::startsession() to test up a test session using an alt
- if(isset($_SESSION) && !empty($_SESSION['alternativeDatabaseName'])) {
- $databaseConfig['database'] = $_SESSION['alternativeDatabaseName'];
+ if($name = Session::get('alternativeDatabaseName')) {
+ $databaseConfig['database'] = $name;
}
if(!isset($databaseConfig['type']) || empty($databaseConfig['type'])) {
View
@@ -17,14 +17,30 @@ class SS_HTMLValue extends ViewableData {
* @param string $content
*/
public function __construct($content = null) {
- $this->document = new DOMDocument('1.0', 'UTF-8');
- $this->document->scrictErrorChecking = false;
-
+ $this->setDocument(new DOMDocument('1.0', 'UTF-8'));
+ $this->setScrictErrorChecking(false);
+ $this->setOutputFormatting(false);
$this->setContent($content);
-
+
parent::__construct();
}
-
+
+ /**
+ * Should strict error checking be used?
+ * @param boolean $bool
+ */
+ public function setScrictErrorChecking($bool) {
+ $this->getDocument()->scrictErrorChecking = $bool;
+ }
+
+ /**
+ * Should the output be formatted?
+ * @param boolean $bool
+ */
+ public function setOutputFormatting($bool) {
+ $this->getDocument()->formatOutput = $bool;
+ }
+
/**
* @return string
*/
@@ -35,16 +51,15 @@ public function getContent() {
return trim(
preg_replace(
array(
- '/^<!DOCTYPE.+?>/i',
- '/(.*)<body>/i',
- '/<\/body>(.*)/i',
+ '/(.*)<body>/is',
+ '/<\/body>(.*)/is',
),
'',
urldecode($this->getDocument()->saveHTML())
)
);
}
-
+
/**
* @param string $content
* @return bool
@@ -59,14 +74,21 @@ public function setContent($content) {
"<body>$content</body></html>"
);
}
-
+
/**
* @return DOMDocument
*/
public function getDocument() {
return $this->document;
}
-
+
+ /**
+ * @param DOMDocument $document
+ */
+ public function setDocument($document) {
+ $this->document = $document;
+ }
+
/**
* A simple convenience wrapper around DOMDocument::getElementsByTagName().
*
@@ -6,9 +6,10 @@
class SS_HTMLValueTest extends SapphireTest {
public function testInvalidHTMLSaving() {
- $value = new SS_HTMLValue();
+ $value = new SS_HTMLValue();
$invalid = array (
'<p>Enclosed Value</p></p>' => '<p>Enclosed Value</p>',
+ '<meta content="text/html"></meta>' => '<meta content="text/html">',
'<p><div class="example"></div></p>' => '<p></p><div class="example"></div>',
'<html><html><body><falsetag "attribute=""attribute""">' => '<falsetag></falsetag>',
'<body<body<body>/bodu>/body>' => '/bodu&gt;/body&gt;'
@@ -19,9 +20,22 @@ public function testInvalidHTMLSaving() {
$this->assertEquals($expected, $value->getContent(), 'Invalid HTML can be saved');
}
}
-
+
+ public function testUtf8Saving() {
+ $value = new SS_HTMLValue();
+ $value->setContent('<p>ö ß ā い 家</p>');
+ $this->assertEquals('<p>ö ß ā い 家</p>', $value->getContent());
+ }
+
+ public function testOutputFormatting() {
+ $value = new SS_HTMLValue();
+ $value->setOutputFormatting(true);
+ $value->setContent('<meta content="text/html">');
+ $this->assertEquals('<meta content="text/html">', $value->getContent(), 'Formatted output works');
+ }
+
public function testInvalidHTMLTagNames() {
- $value = new SS_HTMLValue();
+ $value = new SS_HTMLValue();
$invalid = array(
'<p><div><a href="test-link"></p></div>',
'<html><div><a href="test-link"></a></a></html_>',
@@ -30,7 +44,7 @@ public function testInvalidHTMLTagNames() {
foreach($invalid as $input) {
$value->setContent($input);
- $this->assertEquals (
+ $this->assertEquals(
'test-link',
$value->getElementsByTagName('a')->item(0)->getAttribute('href'),
'Link data can be extraced from malformed HTML'
@@ -47,5 +61,5 @@ public function testMixedNewlines() {
'Newlines get converted'
);
}
-
+
}

0 comments on commit 1181ba0

Please sign in to comment.