cops/resources/epub-loader/BookExport.class.php

144 lines
4 KiB
PHP

<?php
/**
* BookExport class
*
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
* @author Didier Corbière <didier.corbiere@opale-concept.com>
*/
require_once(realpath(dirname(__FILE__)) . '/CsvExport.class.php');
class BookExport
{
private $mExport = null;
private $mNbBook = 0;
const eExportTypeCsv = 1;
const CsvSeparator = "\t";
/**
* Open an export file (or create if file does not exist)
*
* @param string Export file name
* @param enum Export type
* @param boolean Force file creation
* @throws Exception if error
*/
public function __construct($inFileName, $inExportType, $inCreate = false)
{
switch ($inExportType) {
case self::eExportTypeCsv:
$this->mExport = new CsvExport($inFileName, $inCreate);
break;
default:
$error = sprintf('Incorrect export type: %d', $inExportType);
throw new Exception($error);
}
}
/**
* Add an epub to the export
*
* @param string Epub file name
* @throws Exception if error
*
* @return string Empty string or error if any
*/
public function AddEpub($inFileName)
{
$error = '';
try {
// Load the book infos
$bookInfos = new BookInfos();
$bookInfos->LoadFromEpub($inFileName);
// Add the book
$this->AddBook($bookInfos);
}
catch (Exception $e) {
$error = $e->getMessage();
}
return $error;
}
/**
* Add a new book to the export
*
* @param object BookInfo object
* @throws Exception if error
*
* @return void
*/
private function AddBook($inBookInfo)
{
// Add export header
if ($this->mNbBook++ == 0) {
$i = 1;
$this->mExport->SetProperty($i++, 'Format');
$this->mExport->SetProperty($i++, 'Path');
$this->mExport->SetProperty($i++, 'Name');
$this->mExport->SetProperty($i++, 'Uuid');
$this->mExport->SetProperty($i++, 'Uri');
$this->mExport->SetProperty($i++, 'Title');
$this->mExport->SetProperty($i++, 'Authors');
$this->mExport->SetProperty($i++, 'AuthorsSort');
$this->mExport->SetProperty($i++, 'Language');
$this->mExport->SetProperty($i++, 'Description');
$this->mExport->SetProperty($i++, 'Subjects');
$this->mExport->SetProperty($i++, 'Cover');
$this->mExport->SetProperty($i++, 'Isbn');
$this->mExport->SetProperty($i++, 'Rights');
$this->mExport->SetProperty($i++, 'Publisher');
$this->mExport->SetProperty($i++, 'Serie');
$this->mExport->SetProperty($i++, 'SerieIndex');
$this->mExport->SetProperty($i++, 'CreationDate');
$this->mExport->SetProperty($i++, 'ModificationDate');
$this->mExport->AddContent();
}
// Add book infos to the export
$i = 1;
$this->mExport->SetProperty($i++, $inBookInfo->mFormat);
$this->mExport->SetProperty($i++, $inBookInfo->mPath);
$this->mExport->SetProperty($i++, $inBookInfo->mName);
$this->mExport->SetProperty($i++, $inBookInfo->mUuid);
$this->mExport->SetProperty($i++, $inBookInfo->mUri);
$this->mExport->SetProperty($i++, $inBookInfo->mTitle);
$this->mExport->SetProperty($i++, implode(' - ', $inBookInfo->mAuthors));
$this->mExport->SetProperty($i++, implode(' - ', array_keys($inBookInfo->mAuthors)));
$this->mExport->SetProperty($i++, $inBookInfo->mLanguage);
$this->mExport->SetProperty($i++, $inBookInfo->mDescription);
$this->mExport->SetProperty($i++, implode(' - ', $inBookInfo->mSubjects));
$this->mExport->SetProperty($i++, $inBookInfo->mCover);
$this->mExport->SetProperty($i++, $inBookInfo->mIsbn);
$this->mExport->SetProperty($i++, $inBookInfo->mRights);
$this->mExport->SetProperty($i++, $inBookInfo->mPublisher);
$this->mExport->SetProperty($i++, $inBookInfo->mSerie);
$this->mExport->SetProperty($i++, $inBookInfo->mSerieIndex);
$this->mExport->SetProperty($i++, $inBookInfo->mCreationDate);
$this->mExport->SetProperty($i++, $inBookInfo->mModificationDate);
$this->mExport->AddContent();
}
/**
* Download export and stop further script execution
*/
public function Download()
{
$this->mExport->Download();
}
/**
* Save export to file
*/
public function SaveToFile()
{
$this->mExport->SaveToFile();
}
}
?>