file->setCsvControl($this->delimiter); $this->file->setFlags(\SplFileObject::READ_CSV); $this->file->setFlags(\SplFileObject::SKIP_EMPTY); // $this->file->setFlags(\SplFileObject::READ_AHEAD); if ($this->auto_detect_start_position) { $this->first_line = $this->detectStartPosition(); } // CustomVarDamp::dumpAndDie($this); // echo $this->file->key(); // $this->file->seek($this->first_line + 1); // echo $this->file->key(); } protected function detectStartPosition() { $first_line = 0; $find = false; while (!$find) { $j = 0; $row = $this->readRow(); if ($row === false) { continue; } $first_line++; for ($i = 1; $i <= count($row); $i++) { if ($row[$i - 1] <> '') { $j++; } if ($j >= $this->min_column_quantity) { $find = true; break; } } } return $first_line; } /** * @return array * @throws InvalidFileException */ public function read() { // @todo add comments $return = []; //CustomVarDamp::dump(debug_print_backtrace(1,2)); $line = 0; $this->keys = NULL; CustomVarDamp::dump($this->file->key()); while (($row = $this->readRow()) !== FALSE) { $line++; if ($this->hasHeaderRow) { if ($this->keys === NULL) { $this->keys = array_values($row); } else { if (count($this->keys) !== count($row)) { // Yii::warning("Invalid columns detected on line #$line ."); return $return; } $return[] = array_combine($this->keys, $row); } } else { $return[] = $row; } if(($this->last_line) && ($line > $this->last_line)){ // CustomVarDamp::dump($this->last_line); // CustomVarDamp::dump($line); break; } } $this->closeHandler(); //CustomVarDamp::dumpAndDie($return); return $return; } protected function closeHandler() { $this->file = NULL; } protected function readRow() // @todo add comments { $row = $this->file->fgetcsv(); // if (is_array($row)) { // $row = array_slice( $row, $this->first_column ); $row = Encoder::encodeArray($this->in_charset, $this->out_charset, $row); } if (is_null($row)) $row = false; // if ($this->keys !== NULL) // @$clear_arr[3] = ValueFilter::pricefilter($clear_arr[3]);{}{}{} return $row; } }