From 2501a7522b4343bc358ab46abcd5a06325bc4fe5 Mon Sep 17 00:00:00 2001 From: Mihail Date: Mon, 31 Aug 2015 15:28:04 +0300 Subject: [PATCH] add value filter class --- backend/components/parsers/CsvParser.php | 29 +++++++++++++++-------------- backend/components/parsers/Encoder.php | 2 +- backend/components/parsers/ParserHandler.php | 2 +- backend/components/parsers/ValueFilter.php | 45 +++++++++++++++++++++++++++++++++++++++++++++ backend/controllers/SiteController.php | 2 +- backend/models/UploadFileParsingForm.php | 4 ++-- 6 files changed, 65 insertions(+), 19 deletions(-) create mode 100644 backend/components/parsers/ValueFilter.php diff --git a/backend/components/parsers/CsvParser.php b/backend/components/parsers/CsvParser.php index 01c07a4..eed728a 100644 --- a/backend/components/parsers/CsvParser.php +++ b/backend/components/parsers/CsvParser.php @@ -6,10 +6,12 @@ * Time: 17:00 */ -namespace backend\components\parsers; +namespace backend\components; + use Yii; use yii\base\ErrorException; +use common\components\debug\CustomVarDamp; class CsvParser implements \IteratorAggregate { @@ -30,6 +32,9 @@ class CsvParser implements \IteratorAggregate { /** @var int - first column for parsing */ private $first_column; + /** @var array - array of headers values */ + private $keys; + public function setup( $file, $first_line, $first_column, $hasHeaderRow = TRUE, $delimiter = ';') { @@ -72,23 +77,23 @@ class CsvParser implements \IteratorAggregate { $return = []; $line = 0; - $keys = NULL; + $this->keys = NULL; while (($row = $this->readRow()) !== FALSE) { $line++; if ($this->hasHeaderRow) { - if ($keys === NULL) { - $keys = array_values($row); + if ($this->keys === NULL) { + $this->keys = array_values($row); } else { - if (count($keys) !== count($row)) { + if (count($this->keys) !== count($row)) { // Yii::warning("Invalid columns detected on line #$line ."); return $return; } - $return[] = array_combine($keys, $row); + $return[] = array_combine($this->keys, $row); } } else { $return[] = $row; @@ -112,17 +117,13 @@ class CsvParser implements \IteratorAggregate { $dirt_value_arr = $this->file->fgetcsv( ); $dirt_value_arr = array_slice( $dirt_value_arr, $this->first_column ); $clear_arr = Encoder::encodeArray( $this->in_charset, $this->out_charset, $dirt_value_arr ); + +// if ($this->keys !== NULL) +// @$clear_arr[3] = ValueFilter::pricefilter($clear_arr[3]); + return $clear_arr; } -// private function encodeArray( $array_to_encode ) -// { -// return array_map(function($array_to_encode) { -// return iconv( $this->in_charset, $this->out_charset, $array_to_encode ); -// }, $array_to_encode); -// -// } - } \ No newline at end of file diff --git a/backend/components/parsers/Encoder.php b/backend/components/parsers/Encoder.php index 94fc76e..2e284ab 100644 --- a/backend/components/parsers/Encoder.php +++ b/backend/components/parsers/Encoder.php @@ -6,7 +6,7 @@ * Time: 13:36 */ -namespace backend\components\parsers; +namespace backend\components; // @todo add comments class Encoder diff --git a/backend/components/parsers/ParserHandler.php b/backend/components/parsers/ParserHandler.php index d244361..222e7d4 100644 --- a/backend/components/parsers/ParserHandler.php +++ b/backend/components/parsers/ParserHandler.php @@ -1,5 +1,5 @@ ['csv', 'xml'] ], + [['file'], 'file', 'extensions' => ['csv', 'xml'] ], ['first_line', 'integer'], ['first_column', 'integer'] ]; -- libgit2 0.21.4