Add basic application in order to perform the tasks
This commit is contained in:
parent
46d993d168
commit
8d5109d7de
|
@ -28,7 +28,7 @@ class BookExport
|
|||
{
|
||||
switch ($inExportType) {
|
||||
case self::eExportTypeCsv:
|
||||
$this->mExport = new CsvExport($inFileName);
|
||||
$this->mExport = new CsvExport($inFileName, $inCreate);
|
||||
break;
|
||||
default:
|
||||
$error = sprintf('Incorrect export type: %d', $inExportType);
|
||||
|
|
|
@ -30,7 +30,7 @@ class CalibreDbLoader
|
|||
*/
|
||||
public function __construct($inDbFileName, $inCreate = false)
|
||||
{
|
||||
if ($inCreate || !file_exists($inDbFileName)) {
|
||||
if ($inCreate) {
|
||||
$this->CreateDatabase($inDbFileName);
|
||||
}
|
||||
else {
|
||||
|
@ -51,7 +51,7 @@ class CalibreDbLoader
|
|||
// Read the sql file
|
||||
$content = file_get_contents(CalibreCreateDbSql);
|
||||
if ($content === false) {
|
||||
$error = sprintf('Cannot read sql file: %s', $inDbFileName);
|
||||
$error = sprintf('Cannot read sql file: %s', CalibreCreateDbSql);
|
||||
throw new Exception($error);
|
||||
}
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@ class CsvExport extends BaseExport
|
|||
* @param string Export file name
|
||||
* @param boolean Force file creation
|
||||
*/
|
||||
public function __construct($inFileName)
|
||||
public function __construct($inFileName, $inCreate = false)
|
||||
{
|
||||
$this->mSearch = array("\r", "\n", self::CsvSeparator);
|
||||
$this->mReplace = array('', '<br />', '');
|
||||
|
@ -28,7 +28,7 @@ class CsvExport extends BaseExport
|
|||
// Init container
|
||||
$this->mLines = array();
|
||||
|
||||
parent::__construct($inFileName);
|
||||
parent::__construct($inFileName, $inCreate);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
30
resources/epub-loader/app/action_cvs_export.php
Normal file
30
resources/epub-loader/app/action_cvs_export.php
Normal file
|
@ -0,0 +1,30 @@
|
|||
<?php
|
||||
/**
|
||||
* Epub loader action: export ebooks info in a csv files
|
||||
*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Didier Corbière <didier.corbiere@opale-concept.com>
|
||||
*/
|
||||
|
||||
foreach ($gConfig['databases'] as $dbConfig) {
|
||||
// Init csv file
|
||||
$fileName = $dbConfig['db_path'] . DIRECTORY_SEPARATOR . basename($dbConfig['db_path']) . '_metadata.csv';
|
||||
try {
|
||||
// Open or create the export file
|
||||
$export = new BookExport($fileName, BookExport::eExportTypeCsv, true);
|
||||
echo sprintf('Export ebooks to %s', $fileName) . '<br />';
|
||||
// Add the epub files into the export file
|
||||
if (!empty($dbConfig['epub_path'])) {
|
||||
$fileList = glob($dbConfig['epub_path'] . DIRECTORY_SEPARATOR . '*.epub');
|
||||
foreach ($fileList as $fileName) {
|
||||
$export->AddEpub($fileName);
|
||||
}
|
||||
}
|
||||
$export->SaveToFile();
|
||||
}
|
||||
catch (Exception $e) {
|
||||
$gErrorArray[$fileName] = $e->getMessage();
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
29
resources/epub-loader/app/action_db_load.php
Normal file
29
resources/epub-loader/app/action_db_load.php
Normal file
|
@ -0,0 +1,29 @@
|
|||
<?php
|
||||
/**
|
||||
* Epub loader action: load ebooks into calibre databases
|
||||
*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Didier Corbière <didier.corbiere@opale-concept.com>
|
||||
*/
|
||||
|
||||
foreach ($gConfig['databases'] as $dbConfig) {
|
||||
// Init database file
|
||||
$fileName = $dbConfig['db_path'] . DIRECTORY_SEPARATOR . 'metadata.db';
|
||||
try {
|
||||
// Open or create the database
|
||||
$db = new CalibreDbLoader($fileName, $gConfig['create_db']);
|
||||
echo sprintf('Load database %s', $fileName) . '<br />';
|
||||
// Add the epub files into the database
|
||||
if (!empty($dbConfig['epub_path'])) {
|
||||
$fileList = glob($dbConfig['epub_path'] . DIRECTORY_SEPARATOR . '*.epub');
|
||||
foreach ($fileList as $fileName) {
|
||||
$db->AddEpub($fileName);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception $e) {
|
||||
$gErrorArray[$fileName] = $e->getMessage();
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
45
resources/epub-loader/app/config.php
Normal file
45
resources/epub-loader/app/config.php
Normal file
|
@ -0,0 +1,45 @@
|
|||
<?php
|
||||
/**
|
||||
* Epub loader config
|
||||
*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Didier Corbière <didier.corbiere@opale-concept.com>
|
||||
*/
|
||||
|
||||
$gConfig = array();
|
||||
|
||||
/**
|
||||
* Cops directory
|
||||
*
|
||||
* This is the base path of Cops library
|
||||
*/
|
||||
$gConfig['cops_directory'] = dirname(dirname(dirname(__DIR__)));
|
||||
|
||||
/**
|
||||
* Create Calibre databases ?
|
||||
*
|
||||
* If true: databases are removed and recreated before loading ebooks
|
||||
* If false: append ebooks into databases
|
||||
*/
|
||||
$gConfig['create_db'] = true;
|
||||
|
||||
/**
|
||||
* Databases infos
|
||||
*
|
||||
* For each database:
|
||||
* name: The database name to display
|
||||
* db_path: The path where to create the database
|
||||
* epub_path: The path where to look for the epub files to load
|
||||
*/
|
||||
$gConfig['databases'] = array();
|
||||
$gConfig['databases'][] = array('name' => 'Littérature classique', 'db_path' => '/opt/atoll/opds/demo', 'epub_path' => '/opt/atoll/external/demo');
|
||||
$gConfig['databases'][] = array('name' => 'Bibliothèque numérique romande', 'db_path' => '/opt/atoll/opds/bnr', 'epub_path' => '/opt/atoll/external/bnr');
|
||||
$gConfig['databases'][] = array('name' => 'La Bibliothèque d\'Ebooks', 'db_path' => '/opt/atoll/opds/bibebook', 'epub_path' => '/opt/atoll/external/bibebook');
|
||||
$gConfig['databases'][] = array('name' => 'La Bibliothèque électronique du Québec', 'db_path' => '/opt/atoll/opds/beq', 'epub_path' => '/opt/atoll/external/beq');
|
||||
|
||||
/**
|
||||
* Available actions
|
||||
*/
|
||||
$gConfig['actions'] = array();
|
||||
$gConfig['actions']['cvs_export'] = 'Cvs export';
|
||||
$gConfig['actions']['db_load'] = 'Calibre database load';
|
41
resources/epub-loader/app/footer.php
Normal file
41
resources/epub-loader/app/footer.php
Normal file
|
@ -0,0 +1,41 @@
|
|||
</div>
|
||||
<!-- Content end -->
|
||||
|
||||
<?php
|
||||
if (count($gErrorArray)) {
|
||||
$str = '';
|
||||
$str .= ' <!-- Error begin -->' . "\n";
|
||||
$str .= ' <div class="error">' . "\n";
|
||||
$title = 'Errors (' . count($gErrorArray) . ')';
|
||||
$str .= ' <table width="100%">' . "\n";
|
||||
$str .= ' <tr>' . "\n";
|
||||
$str .= ' <th colspan="2">' . $title . '</th>' . "\n";
|
||||
$str .= ' </tr>' . "\n";
|
||||
foreach ($gErrorArray as $fileName => $error) {
|
||||
// Display error
|
||||
$str .= ' <tr>' . "\n";
|
||||
$str .= ' <td class="col_1">' . $fileName . '</td>' . "\n";
|
||||
$str .= ' <td class="col_2">' . $error . '</td>' . "\n";
|
||||
$str .= ' </tr>' . "\n";
|
||||
}
|
||||
$str .= ' </table>' . "\n";
|
||||
$str .= ' </div>' . "\n";
|
||||
$str .= ' <!-- Error end -->' . "\n";
|
||||
echo $str;
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
|
||||
<!-- Footer begin -->
|
||||
<div class="footer">
|
||||
<script type="text/javascript">
|
||||
/*<![CDATA[*/
|
||||
document.write("<n uers=\"znvygb:<?php echo str_rot13(DEF_AppAdminMail); ?>\">".replace(/[a-zA-Z]/g, function(c){return String.fromCharCode((c<="Z"?90:122)>=(c=c.charCodeAt(0)+13)?c:c-26);}));
|
||||
document.write("Contact<\/a>");
|
||||
/*]]>*/
|
||||
</script>
|
||||
</div>
|
||||
<!-- Footer end -->
|
||||
|
||||
</body>
|
||||
</html>
|
89
resources/epub-loader/app/header.php
Normal file
89
resources/epub-loader/app/header.php
Normal file
|
@ -0,0 +1,89 @@
|
|||
<?php
|
||||
// Spécifie l'encodage
|
||||
header('Content-type: text/html; charset=utf-8');
|
||||
?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title><?php echo DEF_AppName; ?></title>
|
||||
<meta name="author" content="opale-concept.com" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<style type="text/css">
|
||||
/*<![CDATA[*/
|
||||
body {
|
||||
font-family: "Times New Roman", Times, serif;
|
||||
background-color: #ffffff;
|
||||
color: #2F4769;
|
||||
margin: 20px;
|
||||
}
|
||||
a {
|
||||
color: #CC9966;
|
||||
text-decoration: none;
|
||||
}
|
||||
a:hover {
|
||||
color: #DF7800;
|
||||
}
|
||||
a:focus {
|
||||
color: #6E749F !important;
|
||||
}
|
||||
ul, li {
|
||||
margin: 0;
|
||||
}
|
||||
.header {
|
||||
color: #6E749F;
|
||||
font-style: bold;
|
||||
font-size: 120%;
|
||||
padding-bottom: 10px;
|
||||
border-bottom: solid #2F4769 1px;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
.part {
|
||||
border-top: solid #2F4769 1px;
|
||||
padding: 10px;
|
||||
}
|
||||
.title {
|
||||
padding-bottom: 5px;
|
||||
font-weight: bold;
|
||||
}
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-color: #ccc;
|
||||
}
|
||||
table th {
|
||||
text-align: left;
|
||||
}
|
||||
table td, table th {
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
}
|
||||
td.col_1, th.col_1 {
|
||||
width: 50%;
|
||||
}
|
||||
td.col_2, th.col_2 {
|
||||
width: 50%;
|
||||
}
|
||||
.error {
|
||||
color: #750000;
|
||||
margin-top: 15px;
|
||||
}
|
||||
.footer {
|
||||
border-top: solid #2F4769 1px;
|
||||
margin-top: 15px;
|
||||
padding-top: 5px;
|
||||
font-size: 80%;
|
||||
font-style: italic;
|
||||
}
|
||||
/*]]>*/
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- Header begin -->
|
||||
<div class="header">
|
||||
<?php echo ' <a href=".">' . DEF_AppName . '</a>' . "\n"; ?>
|
||||
</div>
|
||||
<!-- Header end -->
|
||||
|
||||
<!-- Content begin -->
|
||||
<div class="content">
|
56
resources/epub-loader/app/index.php
Normal file
56
resources/epub-loader/app/index.php
Normal file
|
@ -0,0 +1,56 @@
|
|||
<?php
|
||||
/**
|
||||
* Epub loader application
|
||||
*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Didier Corbière <didier.corbiere@opale-concept.com>
|
||||
*/
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Global defines
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
// Application version
|
||||
define('DEF_AppVersion', '1.0');
|
||||
// Application name
|
||||
define('DEF_AppName', 'epub loader');
|
||||
// Admin email
|
||||
define('DEF_AppAdminMail', 'didier.corbiere@opale-concept.com');
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Include files
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
require_once(__DIR__ . DIRECTORY_SEPARATOR . 'config.php');
|
||||
require_once($gConfig['cops_directory'] . '/resources/epub-loader/CalibreDbLoader.class.php');
|
||||
require_once($gConfig['cops_directory'] . '/resources/epub-loader/BookExport.class.php');
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Start application
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
// Global vars
|
||||
$gErrorArray = array();
|
||||
|
||||
// Get the action to execute
|
||||
$action = isset($_GET['action']) ? $_GET['action'] : null;
|
||||
|
||||
require_once(__DIR__ . DIRECTORY_SEPARATOR . 'header.php');
|
||||
if (isset($action)) {
|
||||
$phpFile = sprintf('%s%saction_%s.php', realpath(dirname(__FILE__)), DIRECTORY_SEPARATOR, $action);
|
||||
require_once($phpFile);
|
||||
}
|
||||
else {
|
||||
// Display the available actions
|
||||
echo ' <ul>' . "\n";
|
||||
foreach ($gConfig['actions'] as $action => $actionInfo) {
|
||||
echo ' <li>' . "\n";
|
||||
echo ' <a href="./index.php?action=' . $action . '">' . $actionInfo . '</a>' . "\n";
|
||||
echo ' </li>' . "\n";
|
||||
}
|
||||
echo ' </ul>' . "\n";
|
||||
}
|
||||
require_once(__DIR__ . DIRECTORY_SEPARATOR . 'footer.php');
|
||||
|
||||
?>
|
Loading…
Reference in a new issue