PluginProbe ʕ •ᴥ•ʔ
WP All Export – Drag & Drop Export to Any Custom CSV, XML & Excel / 1.3.4
WP All Export – Drag & Drop Export to Any Custom CSV, XML & Excel v1.3.4
trunk 0.9.0 0.9.1 1.0.0 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.2.0 1.2.1 1.2.10 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 1.4.10 1.4.11 1.4.12 1.4.13 1.4.14 1.4.15 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.9 1.5.0
wp-all-export / src / Csv / CsvRfcWriteStreamFilter.php
wp-all-export / src / Csv Last commit date
CsvRcfWriter.php 8 years ago CsvRfcUtils.php 8 years ago CsvRfcWriteStreamFilter.php 8 years ago CsvWriter.php 6 years ago
CsvRfcWriteStreamFilter.php
80 lines
1 <?php
2
3 /*
4 * AJGL CSV RFC Component
5 *
6 * Copyright (C) Antonio J. García Lagar <aj@garcialagar.es>
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11
12 namespace Wpae\Csv;
13
14 class CsvRfcWriteStreamFilter extends \php_user_filter
15 {
16 const FILTERNAME_DEFAULT = 'csv.rfc.write';
17
18 private $filternameEnclosure = '"';
19
20 /**
21 * @param string $filtername
22 *
23 * @return bool
24 */
25 public static function register($filtername = self::FILTERNAME_DEFAULT)
26 {
27 return stream_filter_register($filtername, 'Ajgl\Csv\Rfc\CsvRfcWriteStreamFilter');
28 }
29
30 /**
31 * @return bool
32 */
33 public function onCreate()
34 {
35 $this->extractEnclosureFromFilternameIfAvailable();
36
37 return true;
38 }
39
40 private function extractEnclosureFromFilternameIfAvailable()
41 {
42 if (strlen($this->filtername) === strlen(self::FILTERNAME_DEFAULT) + 2 && strpos($this->filtername, self::FILTERNAME_DEFAULT.'.') === 0) {
43 $this->filternameEnclosure = substr($this->filtername, -1);
44 }
45 }
46
47 /**
48 * @param resource $in
49 * @param resource $out
50 * @param int $consumed
51 * @param bool $closing
52 *
53 * @return int
54 */
55 public function filter($in, $out, &$consumed, $closing)
56 {
57 $enclosure = $this->resolveEnclosure();
58
59 while ($bucket = stream_bucket_make_writeable($in)) {
60 $bucket->data = CsvRfcUtils::fixEnclosureEscape($enclosure, $bucket->data);
61 $consumed += $bucket->datalen;
62 stream_bucket_append($out, $bucket);
63 }
64
65 return PSFS_PASS_ON;
66 }
67
68 /**
69 * @return string
70 */
71 private function resolveEnclosure()
72 {
73 if (is_array($this->params) && isset($this->params['enclosure']) && strlen($this->params['enclosure']) === 1) {
74 return $this->params['enclosure'];
75 }
76
77 return $this->filternameEnclosure;
78 }
79 }
80