/** * Test des CSV avec en-tête */ public function testCsvHeaded() { $csvFile = new CopixCsv(COPIX_TEMP_PATH . 'file.csv'); $itCsv = $csvFile->getIterator(CopixCSV::HEADED); $arInfo = $itCsv->current(); $arKeys = array_keys($arInfo); $this->assertEquals($arKeys[0], 'test'); $arInfo = $itCsv->next(); $arKeys = array_keys($arInfo); $this->assertEquals($arKeys[0], 'test'); }
/** * Retourne les logs sous forme d'itérateur */ public function getLog($pProfil, $pNbItems = 20) { $page = CopixSession::get('log|numpage') - 1; if (file_exists($this->_getFileName($pProfil))) { // Création d'un objet CopixCSV pour contenir le contenu du fichier $csvLog = new CopixCsv($this->_getFileName($pProfil)); // Récupération de l'itérateur et compte du nombre de ligne $csvLines = $csvLog->getIterator(); $csvNbLines = $csvLines->count(); // Calcul de la position et des offset $pPosition = $csvNbLines - $page * $pNbItems - $pNbItems; // Calcul de la position de départ pour parcourir la portion du fichier à afficher if ($pPosition < 0) { $pOffset = $pNbItems + $pPosition; $pPosition = 0; } else { $pOffset = $pNbItems; $pPosition -= 1; } $csvLines->seek($pPosition); $content = array(); for ($i = 0; $i < $pOffset; $i++) { $content[] = $csvLines->current(); $csvLines->next(); } $content = array_reverse($content); CopixSession::set('log|nbpage', ceil($csvNbLines / $pNbItems)); $arrayObject = new ArrayObject(array_map(array($this, 'toObject'), $content)); return $arrayObject->getIterator(); } return new ArrayObject(); }