/** * Import match plan from text file * @param Tournament $tournament Import related to tournament * @param String $date Date of match * @param String $importStr Match plan - must follow this syntax: * - Match no * - Match date (local format - j-m-Y) * - Match time (local format - G.i) * - Category name * - Group name * - Playground no * - Home team * team name 'division' (country) * rank group name * - Away team * team name 'division' (country) * rank group name * * Examples: 385;10-7-2015;13.00;C;(A);7;1 A;2 B * 212;5-7-2015;9.15;C;A;7;AETNA MASCALUCIA (ITA);TVIS KFUM 'A' (DNK) * * Country is only used if team name is ambigious - however syntax must be maintained. * Division can be ommitted. */ public function import(UploadedFile $uploadedFile) { $keys = array("matchno", "date", "time", "category", "group", "playground", "teamA", "teamB"); $matches = array(); if ($uploadedFile->isValid() && $uploadedFile->isFile()) { /* @var $file SplFileObject */ $file = $uploadedFile->openFile(); while (!$file->eof()) { $csv = $file->fgetcsv(";"); $match = array(); foreach ($csv as $idx => $data) { if ($data) { if (array_key_exists($idx, $keys)) { if ($keys[$idx] == 'teamA' || $keys[$idx] == 'teamB') { $match[$keys[$idx]] = $this->parseImportTeam($data); } else { $match[$keys[$idx]] = $data; } } else { $match[] = $data; } } } if (count($match) > 0) { $matches[] = $match; } } } return $matches; }
public static function createFromUploadedFile(UploadedFile $uploadedFile) { $dto = new self(); $dto->setFilename($uploadedFile->getClientOriginalName()); $content = ''; $file = $uploadedFile->openFile(); $file->rewind(); while (false === $file->eof()) { $content .= $file->fgets(); } $dto->setContent($content); return $dto; }
/** * Extract stories from an XLS file * /!\ Not implemented * * @param UploadedFile $uploadedFile Jira File * @return void */ private function importFromXLS(UploadedFile $uploadedFile) { $file = $uploadedFile->openFile(); $objReader = \PHPExcel_IOFactory::createReader(\PHPExcel_IOFactory::identify($file->getRealPath())); $objReader->setReadDataOnly(true); $objPHPExcel = $objReader->load($file->getRealPath()); $sheetData = $objPHPExcel->getActiveSheet()->toArray(null, true, true, true); // Till false, we try to find all mandatory field Title in the row to // determinate in which row the data are $colsFound = false; // Rows foreach ($sheetData as $rowKey => $rowData) { // Try to in which columns data are if (!$colsFound) { // Fields coordonnate // Mandatory $key = null; $summary = null; $type = null; // Optionnal $effort = null; $project = null; $version = null; $epic = null; // Cols foreach ($rowData as $colKey => $colValue) { if ($colValue == self::KEY_NAME) { $key = $colKey; } if ($colValue == self::SUMMARY_NAME) { $summary = $colKey; } if ($colValue == self::ISSUE_NAME) { $type = $colKey; } if ($colValue == self::EFFORT_NAME) { $effort = $colKey; } if ($colValue == self::PROJECT_NAME) { $project = $colKey; } if ($colValue == self::VERSION_NAME) { $version = $colKey; } if ($colValue == self::EPIC_NAME) { $epic = $colKey; } } // Do we found all mandatory fields? if (!is_null($key) && !is_null($summary) && !is_null($type)) { $colsFound = true; } } elseif ('' != $rowData[$key] && '' != $rowData[$summary] && '' != $rowData[$type]) { $this->stories->addStory(new Story(array('key' => $rowData[$key], 'summary' => $rowData[$summary], 'type' => $rowData[$type], 'project' => !is_null($project) ? $rowData[$project] : null, 'effort' => !is_null($effort) ? $rowData[$effort] : null, 'link' => null, 'version' => !is_null($version) ? $rowData[$version] : null, 'epic' => !is_null($epic) ? $rowData[$epic] : null))); } } }