Blame view

vendor/yiisoft/multiparser/CsvParser.php 1.44 KB
1e991822   Mihail   csv parser with e...
1
2
  <?php
  /**
1e991822   Mihail   csv parser with e...
3
  
40ff24a1   Mihail   refactor CsvParse...
4
   */
036717a1   Mihail   add error excepti...
5
  namespace yii\multiparser;
93e39994   Mihail   fixed parser and ...
6
  use common\components\CustomVarDamp;
dc10d651   Mihail   add value filter ...
7
  
1e991822   Mihail   csv parser with e...
8
  
474f35bf   Mihail   add DynamicFormHe...
9
10
11
  /**
   * Class CsvParser
   * @package yii\multiparser
6215a30d   Mihail   add converter int...
12
   * @todo - перевести на анг. яз.
474f35bf   Mihail   add DynamicFormHe...
13
   */
08aff3b4   Mihail   add TableParser a...
14
  class CsvParser extends TableParser
999b9326   Mihail   add detectStartPo...
15
  {
40ff24a1   Mihail   refactor CsvParse...
16
      /** @var string - разделитель csv */
e55d56cc   Mihail   add draft version...
17
      public $delimiter = ';';
40ff24a1   Mihail   refactor CsvParse...
18
  
5c710262   Mihail   edit csv parser -...
19
  
474f35bf   Mihail   add DynamicFormHe...
20
  
40ff24a1   Mihail   refactor CsvParse...
21
      /**
74072a2a   Mihail   add first version...
22
       * метод устанвливает нужные настройки объекта SplFileObject, для работы с csv
40ff24a1   Mihail   refactor CsvParse...
23
       */
e55d56cc   Mihail   add draft version...
24
25
      public function setup()
      {
08aff3b4   Mihail   add TableParser a...
26
  
999b9326   Mihail   add detectStartPo...
27
28
29
          $this->file->setCsvControl($this->delimiter);
          $this->file->setFlags(\SplFileObject::READ_CSV);
          $this->file->setFlags(\SplFileObject::SKIP_EMPTY);
aa518ad3   Mihail   finishing with co...
30
  
6215a30d   Mihail   add converter int...
31
          parent::setup();
74072a2a   Mihail   add first version...
32
  
6215a30d   Mihail   add converter int...
33
      }
1e991822   Mihail   csv parser with e...
34
  
1e991822   Mihail   csv parser with e...
35
36
      public function read()
      {
08aff3b4   Mihail   add TableParser a...
37
          parent::read();
aa518ad3   Mihail   finishing with co...
38
  
08aff3b4   Mihail   add TableParser a...
39
          return $this->result;
1e991822   Mihail   csv parser with e...
40
      }
1e991822   Mihail   csv parser with e...
41
  
08aff3b4   Mihail   add TableParser a...
42
  
d3cf6647   Mihail   add multiply pric...
43
      protected function readRow(  )
1e991822   Mihail   csv parser with e...
44
      {
08aff3b4   Mihail   add TableParser a...
45
46
          $this->row = $this->file->fgetcsv();
      }
706a1491   Mihail   add form, model a...
47
  
08aff3b4   Mihail   add TableParser a...
48
      protected  function isEmptyRow(){
93e39994   Mihail   fixed parser and ...
49
  
08aff3b4   Mihail   add TableParser a...
50
          $is_empty = false;
93e39994   Mihail   fixed parser and ...
51
  
08aff3b4   Mihail   add TableParser a...
52
53
54
          if ($this->row === false || $this->row === NULL ) {
              return true;
          }
40ff24a1   Mihail   refactor CsvParse...
55
  
08aff3b4   Mihail   add TableParser a...
56
57
          $j = 0;
          for ($i = 1; $i <= count( $this->row ); $i++) {
40ff24a1   Mihail   refactor CsvParse...
58
  
08aff3b4   Mihail   add TableParser a...
59
60
              if ( $this->isEmptyColumn( $this->row[$i - 1] ) ) {
                  $j++;
74072a2a   Mihail   add first version...
61
              }
dc10d651   Mihail   add value filter ...
62
  
08aff3b4   Mihail   add TableParser a...
63
64
65
66
67
              if ( $j >= $this->min_column_quantity ) {
                  $is_empty = true;
                  break;
              }
          }
1e991822   Mihail   csv parser with e...
68
  
08aff3b4   Mihail   add TableParser a...
69
          return $is_empty;
1e991822   Mihail   csv parser with e...
70
71
      }
  
08aff3b4   Mihail   add TableParser a...
72
73
74
      protected  function isEmptyColumn( $val ){
          return $val == '';
      }
1e991822   Mihail   csv parser with e...
75
  }