public function read()
{
$entries = array();
if (file_exists($this->options['file'])) {
$handle = fopen($this->options['file'], 'r');
$columns = $this->readColumns($handle);
$this->checkColumns($columns);
$columnTotal = count($columns);
$entryCount = 0;
$hasModifier = is_callable($this->options['category_modifier']);
while (true) {
if ($this->options['limit'] && $this->options['limit'] < $entryCount) {
break;
}
if (($csvData = $this->readLine($handle)) === false) {
break;
}
if ($columnTotal !== count($csvData)) {
continue;
}
$document = array();
foreach ($this->options['document_columns'] as $column) {
$document[] = $csvData[$columns[$column]];
}
$category = $csvData[$columns[$this->options['category_column']]];
if ($hasModifier) {
$category = $this->options['category_modifier']($category);
}
$entries[] = array('document' => implode(' ', $document), 'category' => $category);
$entryCount++;
}
fclose($handle);
}
return $entries;
}