/** * Parses a csv file into a DataTable. * * Pass in a filepath to a csv file and an array of column types: * ['date', 'number', 'number', 'number'] for example and a DataTable * will be built. * * @access public * @since 1.0.0 * @param string $filepath Path location to a csv file * @param array $columnTypes Array of column types to apply to the csv values * @throws \Khill\Lavacharts\Exceptions\InvalidFunctionParam * @return \Khill\Lavacharts\DataTable */ public function parseCsvFile($filepath, $columnTypes = null) { if (Utils::nonEmptyString($filepath) === false) { throw new InvalidFunctionParam($filepath, __FUNCTION__, 'string'); } $this->addNewColumns($columnTypes); $this->setReader(Reader::createFromPath($filepath)); $this->reader->setFlags(\SplFileObject::READ_AHEAD | \SplFileObject::SKIP_EMPTY); $csvColumns = $this->reader->fetchOne(); foreach ($this->newColumns as $index => $column) { if (in_array($column, $this->columnTypes, true) === false) { throw new InvalidColumnType($column, Utils::arrayToPipedString($this->columnTypes)); } $this->addColumnFromStrings($columnTypes[$index], $csvColumns[$index]); } $csvRows = $this->reader->setOffset(1)->fetchAll(function ($row) { return array_map(function ($cell) { if (is_numeric($cell)) { return $cell + 0; } else { return $cell; } }, $row); }); return $this->addRows($csvRows); }
protected function execute(InputInterface $input, OutputInterface $output) { $this->promptForCredentials($input, $output); $dstPath = $input->getArgument('dst_path'); $csvPath = $input->getArgument('csv_path'); $reader = new Reader($csvPath); $csv = $reader->setOffset(1)->fetchAll(); // Create destination folder. mkdir($dstPath, 0777, true); if (!is_writeable($dstPath)) { die("OMERGERD COULDN'T WRITE TO DIRECTORY!!!"); } foreach ($csv as $row) { list($sslId, $cn, $status) = array($row[0], $row[2], $row[4]); if ($status != 'Issued') { $output->writeln(sprintf("<info>%s is %s. Skipping...</info>", $cn, $status)); continue; } $output->writeln(sprintf("%s (%s): %s", $cn, $sslId, $status)); $response = $this->incommon->certs->collect($this->authData, $sslId, 1); // Get cert contents. $certData = $response->SSL->certificate; // Clean * out of CN $filename = str_replace('*', 'star', $cn); // Write file $filepath = "{$dstPath}/{$filename}.crt"; $fp = fopen($filepath, "w"); fwrite($fp, $certData); fclose($fp); } }
/** * Set the metadata from a file. * * @param string $file */ public function setDefaultsFromFile($file) { $file = new Reader($file); // Fetch columns $rows = $file->fetchOne(); $file->setOffset(1); // Fetch entries and set defaults $entries = $file->fetchAssoc($rows); foreach ($entries as $entry) { if (strpos(URL::current(), $entry['url']) !== false) { $this->defaults = $entry; } } }