92 lines
2.5 KiB
PHP
92 lines
2.5 KiB
PHP
<?php
|
|
|
|
require '../header.php';
|
|
|
|
require_login();
|
|
|
|
if ( isset($_REQUEST['comic']) ) {
|
|
$comic = makePathSafe(base64_decode(urldecode(($_REQUEST['comic']))));
|
|
$comicfull = COMICSDIR . $comic;
|
|
$comicoutputurl = "comics" . str_replace("#", "", $comic) . "/";
|
|
$comicoutputfull = "../" . EXTRACTSDIR . str_replace("#", "", $comic) . "/";
|
|
} else {
|
|
exit();
|
|
}
|
|
|
|
$ext = strtolower(substr($comic, -3));
|
|
$_SESSION['comfile'] = basename($comic);
|
|
|
|
$data = array();
|
|
|
|
// Get the current page for this comic or 0 (zero) if never opened
|
|
$query = "SELECT currentpage FROM pagetracker WHERE username=:username AND issue=:issue";
|
|
$fields = array();
|
|
$fields[':username'] = $_SESSION['username'];
|
|
$fields[':issue'] = $_SESSION['comfile'];
|
|
$sth = $globaldbh->prepare($query);
|
|
$sth->execute($fields);
|
|
if ( $row = $sth->fetch(PDO::FETCH_ASSOC) ) {
|
|
$currentpage = intval($row['currentpage']);
|
|
} else {
|
|
$currentpage = 0;
|
|
}
|
|
$data["startindex"] = $currentpage;
|
|
|
|
if ( !is_dir($comicoutputfull) ) {
|
|
mkdir($comicoutputfull, 0755, true);
|
|
}
|
|
|
|
$files = array();
|
|
if ( $ext == "cbz" ) {
|
|
$zip = new ZipArchive();
|
|
$opened = $zip->open($comicfull);
|
|
for ( $i=0; $i<$zip->numFiles; $i++ ) {
|
|
$imgname = basename($zip->getNameIndex($i));
|
|
$myext = substr($imgname, -3);
|
|
if ( ($myext == "jpg") || ($myext == "png") ) {
|
|
$imgname = str_replace("#", "", $imgname);
|
|
$imgcontents = $zip->getFromIndex($i);
|
|
$written = file_put_contents($comicoutputfull . $imgname, $imgcontents);
|
|
if ( $written ) $files[] = $imgname;
|
|
}
|
|
}
|
|
} elseif ( $ext == "cbr" ) {
|
|
$junk = `/usr/local/bin/rar e -ep -o+ "$comicfull" "$comicoutputfull"`;
|
|
$fh = opendir($comicoutputfull);
|
|
while ( false !== ($file = readdir($fh)) ) {
|
|
$myfile = $comicoutputfull . $file;
|
|
$mynewfile = $comicoutputfull . str_replace("#", "", $file);
|
|
$myext = strtolower(substr($file, -3));
|
|
if ( ($myext == "jpg") || ($myext == "png") ) {
|
|
rename($myfile, $mynewfile);
|
|
$files[] = basename($mynewfile);
|
|
}
|
|
}
|
|
closedir($fh);
|
|
} else {
|
|
exit();
|
|
}
|
|
|
|
natsort($files);
|
|
|
|
$images = array();
|
|
$captions = array();
|
|
|
|
$last = count($files);
|
|
$count = 0;
|
|
foreach ( $files as $file ) {
|
|
$count++;
|
|
$images[] = $comicoutputurl . $file;
|
|
$captions[] = substr(basename($comicoutputurl), 0, -4) . ": {$count} of {$last}";
|
|
}
|
|
$debug = (DEBUG_SHOWCOMICAJAX || DEBUG_ALL);
|
|
|
|
$data["debug"] = $debug;
|
|
$data["images"] = $images;
|
|
$data["captions"] = $captions;
|
|
header('Content-Type: application/json');
|
|
echo json_encode($data);
|
|
exit();
|
|
|
|
// vim: set ts=3 sw=3 et:
|