Init actions and db

This commit is contained in:
Didier Corbière 2013-09-25 07:28:20 +01:00
parent acd9b72097
commit 1acce6509c
6 changed files with 124 additions and 52 deletions

View file

@ -7,3 +7,11 @@ epub-loader is a utility ressource for ebooks.
- CalibreDbLoader class allows create Calibre databases and add ebooks - CalibreDbLoader class allows create Calibre databases and add ebooks
- BookExport class allows to export ebooks metadata in csv files - BookExport class allows to export ebooks metadata in csv files
- The app directory contains samples and allows to run actions - The app directory contains samples and allows to run actions
## Installation
## -----------------------------------------------------------------------------
- If a first-time install, copy app/config.php.example to app/config.php
- Edit config.php to match your config
- Open the app directory url

View file

@ -6,25 +6,23 @@
* @author Didier Corbière <didier.corbiere@opale-concept.com> * @author Didier Corbière <didier.corbiere@opale-concept.com>
*/ */
foreach ($gConfig['databases'] as $dbConfig) { // Init csv file
// Init csv file $fileName = $dbConfig['db_path'] . DIRECTORY_SEPARATOR . basename($dbConfig['db_path']) . '_metadata.csv';
$fileName = $dbConfig['db_path'] . DIRECTORY_SEPARATOR . basename($dbConfig['db_path']) . '_metadata.csv'; try {
try { // Open or create the export file
// Open or create the export file $export = new BookExport($fileName, BookExport::eExportTypeCsv, true);
$export = new BookExport($fileName, BookExport::eExportTypeCsv, true); echo sprintf('Export ebooks to %s', $fileName) . '<br />';
echo sprintf('Export ebooks to %s', $fileName) . '<br />'; // Add the epub files into the export file
// Add the epub files into the export file if (!empty($dbConfig['epub_path'])) {
if (!empty($dbConfig['epub_path'])) { $fileList = glob($dbConfig['epub_path'] . DIRECTORY_SEPARATOR . '*.epub');
$fileList = glob($dbConfig['epub_path'] . DIRECTORY_SEPARATOR . '*.epub'); foreach ($fileList as $fileName) {
foreach ($fileList as $fileName) { $export->AddEpub($fileName);
$export->AddEpub($fileName);
}
} }
$export->SaveToFile();
}
catch (Exception $e) {
$gErrorArray[$fileName] = $e->getMessage();
} }
$export->SaveToFile();
}
catch (Exception $e) {
$gErrorArray[$fileName] = $e->getMessage();
} }
?> ?>

View file

@ -6,24 +6,22 @@
* @author Didier Corbière <didier.corbiere@opale-concept.com> * @author Didier Corbière <didier.corbiere@opale-concept.com>
*/ */
foreach ($gConfig['databases'] as $dbConfig) { // Init database file
// Init database file $fileName = $dbConfig['db_path'] . DIRECTORY_SEPARATOR . 'metadata.db';
$fileName = $dbConfig['db_path'] . DIRECTORY_SEPARATOR . 'metadata.db'; try {
try { // Open or create the database
// Open or create the database $db = new CalibreDbLoader($fileName, $gConfig['create_db']);
$db = new CalibreDbLoader($fileName, $gConfig['create_db']); echo sprintf('Load database %s', $fileName) . '<br />';
echo sprintf('Load database %s', $fileName) . '<br />'; // Add the epub files into the database
// Add the epub files into the database if (!empty($dbConfig['epub_path'])) {
if (!empty($dbConfig['epub_path'])) { $fileList = glob($dbConfig['epub_path'] . DIRECTORY_SEPARATOR . '*.epub');
$fileList = glob($dbConfig['epub_path'] . DIRECTORY_SEPARATOR . '*.epub'); foreach ($fileList as $fileName) {
foreach ($fileList as $fileName) { $db->AddEpub($fileName);
$db->AddEpub($fileName);
}
} }
} }
catch (Exception $e) { }
$gErrorArray[$fileName] = $e->getMessage(); catch (Exception $e) {
} $gErrorArray[$fileName] = $e->getMessage();
} }
?> ?>

View file

@ -42,4 +42,4 @@ $gConfig['databases'][] = array('name' => 'La Bibliothèque électronique du Qu
*/ */
$gConfig['actions'] = array(); $gConfig['actions'] = array();
$gConfig['actions']['cvs_export'] = 'Cvs export'; $gConfig['actions']['cvs_export'] = 'Cvs export';
$gConfig['actions']['db_load'] = 'Calibre database load'; $gConfig['actions']['db_load'] = 'Create database';

View file

@ -14,12 +14,12 @@ header('Content-type: text/html; charset=utf-8');
body { body {
font-family: "Times New Roman", Times, serif; font-family: "Times New Roman", Times, serif;
background-color: #ffffff; background-color: #ffffff;
color: #2F4769; color: #333333;
margin: 20px; margin: 20px;
} }
a { a {
color: #CC9966; color: #096DD1;
text-decoration: none; text-decoration: none;
} }
a:hover { a:hover {
color: #DF7800; color: #DF7800;
@ -70,7 +70,7 @@ header('Content-type: text/html; charset=utf-8');
.footer { .footer {
border-top: solid #2F4769 1px; border-top: solid #2F4769 1px;
margin-top: 15px; margin-top: 15px;
padding-top: 5px; padding-top: 10px;
font-size: 80%; font-size: 80%;
font-style: italic; font-style: italic;
} }

View file

@ -22,9 +22,31 @@ define('DEF_AppAdminMail', 'didier.corbiere@opale-concept.com');
// Include files // Include files
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
require_once(__DIR__ . DIRECTORY_SEPARATOR . 'config.php'); // Include config file
require_once($gConfig['cops_directory'] . '/resources/epub-loader/CalibreDbLoader.class.php'); $fileName = __DIR__ . DIRECTORY_SEPARATOR . 'config.php';
require_once($gConfig['cops_directory'] . '/resources/epub-loader/BookExport.class.php'); if (!file_exists($fileName)) {
die ('Missing configuration file: ' . $fileName);
}
require_once($fileName);
// Check Cops directory
if (!is_dir($gConfig['cops_directory'])) {
die ('Incorrect Cops directory: ' . $gConfig['cops_directory']);
}
// Include Calibre database loader class
$fileName = $gConfig['cops_directory'] . '/resources/epub-loader/CalibreDbLoader.class.php';
if (!file_exists($fileName)) {
die ('Incorrect include file: ' . $gConfig['cops_directory']);
}
require_once($fileName);
// Include book export class
$fileName = $gConfig['cops_directory'] . '/resources/epub-loader/BookExport.class.php';
if (!file_exists($fileName)) {
die ('Incorrect include file: ' . $gConfig['cops_directory']);
}
require_once($fileName);
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// Start application // Start application
@ -33,24 +55,70 @@ require_once($gConfig['cops_directory'] . '/resources/epub-loader/BookExport.cla
// Global vars // Global vars
$gErrorArray = array(); $gErrorArray = array();
// Get the action to execute // Get the url parameters
$action = isset($_GET['action']) ? $_GET['action'] : null; $action = isset($_GET['action']) ? $_GET['action'] : null;
$dbNum = isset($_GET['dbnum']) ? (int)$_GET['dbnum'] : null;
// Include html header
require_once(__DIR__ . DIRECTORY_SEPARATOR . 'header.php'); require_once(__DIR__ . DIRECTORY_SEPARATOR . 'header.php');
if (isset($action)) {
$phpFile = sprintf('%s%saction_%s.php', realpath(dirname(__FILE__)), DIRECTORY_SEPARATOR, $action); // Html content
require_once($phpFile); if (isset($action) && isset($dbNum)) {
if (!isset($gConfig['databases'][$dbNum])) {
die ('Incorrect database num: ' . $dbNum);
}
$dbConfig = $gConfig['databases'][$dbNum];
$fileName = sprintf('%s%saction_%s.php', __DIR__, DIRECTORY_SEPARATOR, $action);
if (!file_exists($fileName)) {
die ('Incorrect action file: ' . $fileName);
}
require_once($fileName);
} }
else { else {
// Display the available actions if (!isset($action)) {
echo ' <ul>' . "\n"; // Display the available actions
foreach ($gConfig['actions'] as $action => $actionInfo) { $str = '';
echo ' <li>' . "\n"; $str .= '<div><b>' . 'Select action' . '</b></div>' . "\n";
echo ' <a href="./index.php?action=' . $action . '">' . $actionInfo . '</a>' . "\n"; $str .= ' <ul>' . "\n";
echo ' </li>' . "\n"; foreach ($gConfig['actions'] as $action => $actionInfo) {
$str .= ' <li>' . "\n";
$str .= ' <a href="./index.php?action=' . $action . '">' . $actionInfo . '</a>' . "\n";
$str .= ' </li>' . "\n";
}
$str .= ' </ul>' . "\n";
echo $str;
}
else {
// Display databases
$str = '';
$str .= '<table width="100%">' . "\n";
$str .= '<tr>' . "\n";
$str .= '<th>' . 'Db num' . '</th>' . "\n";
$str .= '<th>' . 'Db name' . '</th>' . "\n";
$str .= '<th>' . 'Action' . '</th>' . "\n";
$str .= '<th>' . 'Db Path' . '</th>' . "\n";
$str .= '<th>' . 'Epub path' . '</th>' . "\n";
$str .= '<th>' . 'Nb Files' . '</th>' . "\n";
$str .= '</tr>' . "\n";
$actionTitle = $gConfig['actions'][$action];
foreach ($gConfig['databases'] as $dbNum => $dbConfig) {
$fileList = glob($dbConfig['epub_path'] . DIRECTORY_SEPARATOR . '*.epub');
$str .= '<tr>' . "\n";
$str .= '<td>' . $dbNum . '</td>' . "\n";
$str .= '<td>' . $dbConfig['name'] . '</td>' . "\n";
$str .= '<td>' . '<a href="./index.php?action=' . $action . '&dbnum=' . $dbNum . '">' . $actionTitle . '</a>' . '</td>' . "\n";
$str .= '<td>' . $dbConfig['db_path'] . '</td>' . "\n";
$str .= '<td>' . $dbConfig['epub_path'] . '</td>' . "\n";
$str .= '<td>' . count($fileList) . '</td>' . "\n";
$str .= '</tr>' . "\n";
$numWork++;
}
$str .= '</table>' . "\n";
echo $str;
} }
echo ' </ul>' . "\n";
} }
// Include html footer
require_once(__DIR__ . DIRECTORY_SEPARATOR . 'footer.php'); require_once(__DIR__ . DIRECTORY_SEPARATOR . 'footer.php');
?> ?>