summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrederic Guillot <fred@kanboard.net>2015-11-20 20:39:43 -0500
committerFrederic Guillot <fred@kanboard.net>2015-11-20 20:39:43 -0500
commitf119cbd6be467b3832a4543045980dd0f1936275 (patch)
treede15caae64fbf5318ce67000356af4e47b531ec6
parent4c3e519fa98de57ce9aa78f808b62f462aeaa690 (diff)
Make CSV export compatible with PHP 5.3
-rw-r--r--ChangeLog1
-rw-r--r--app/Core/Csv.php13
-rw-r--r--tests/units/Core/CsvTest.php30
3 files changed, 39 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 833350fc..2b62304a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -29,6 +29,7 @@ Bug fixes:
* Fix PHP error when adding a new user with email notification enabled
* Add missing template for activity stream to show event "file.create"
* Fix wrong value for PLUGINS_DIR in config.default.php
+* Make CSV export compatible with PHP 5.3
Version 1.0.20
--------------
diff --git a/app/Core/Csv.php b/app/Core/Csv.php
index bec400ed..28c1997b 100644
--- a/app/Core/Csv.php
+++ b/app/Core/Csv.php
@@ -93,8 +93,7 @@ class Csv
{
if (! empty($value)) {
$value = trim(strtolower($value));
- return $value === '1' || $value{0}
- === 't' ? 1 : 0;
+ return $value === '1' || $value{0} === 't' ? 1 : 0;
}
return 0;
@@ -164,10 +163,14 @@ class Csv
*/
public function write($filename, array $rows)
{
- $file = new SplFileObject($filename, 'w');
+ $fp = fopen($filename, 'w');
- foreach ($rows as $row) {
- $file->fputcsv($row, $this->delimiter, $this->enclosure);
+ if (is_resource($fp)) {
+ foreach ($rows as $row) {
+ fputcsv($fp, $row, $this->delimiter, $this->enclosure);
+ }
+
+ fclose($fp);
}
return $this;
diff --git a/tests/units/Core/CsvTest.php b/tests/units/Core/CsvTest.php
index 71542c20..d34ccf76 100644
--- a/tests/units/Core/CsvTest.php
+++ b/tests/units/Core/CsvTest.php
@@ -19,4 +19,34 @@ class CsvTest extends Base
$this->assertEquals(0, Csv::getBooleanValue('123'));
$this->assertEquals(0, Csv::getBooleanValue('anything'));
}
+
+ public function testGetEnclosures()
+ {
+ $this->assertCount(3, Csv::getEnclosures());
+ $this->assertCount(4, Csv::getDelimiters());
+ }
+
+ public function testReadWrite()
+ {
+ $filename = tempnam(sys_get_temp_dir(), 'UT');
+ $rows = array(
+ array('Column A', 'Column B'),
+ array('value a', 'value b'),
+ );
+
+ $csv = new Csv;
+ $csv->write($filename, $rows);
+ $csv->setColumnMapping(array('A', 'B', 'C'));
+ $csv->read($filename, array($this, 'readRow'));
+
+ unlink($filename);
+
+ $this->expectOutputString('"Column A","Column B"'.PHP_EOL.'"value a","value b"'.PHP_EOL, $csv->output($rows));
+ }
+
+ public function readRow(array $row, $line)
+ {
+ $this->assertEquals(array('value a', 'value b', ''), $row);
+ $this->assertEquals(1, $line);
+ }
}