Added getArchive to Album

This commit is contained in:
Tobias Reich 2014-04-04 17:18:59 +02:00
parent 9ab72f05f5
commit 6b4aaa6a23
3 changed files with 80 additions and 14 deletions

View File

@ -138,8 +138,9 @@ switch ($_POST['function']) {
echo getFeed($_GET['albumID']); echo getFeed($_GET['albumID']);
break; break;
case 'getAlbumArchive': if (isset($_GET['albumID'])) case 'getAlbumArchive': if (!isset($_GET['albumID'])) exit();
getAlbumArchive($_GET['albumID']); $album = new Album($database, $plugins, $settings, $_GET['albumID']);
$album->getArchive();
break; break;
case 'getPhotoArchive': if (isset($_GET['photoID'])) case 'getPhotoArchive': if (isset($_GET['photoID']))

View File

@ -85,21 +85,22 @@ switch ($_POST['function']) {
} }
break; break;
case 'getAlbumArchive': if (isset($_GET['albumID'], $_GET['password'])) { case 'getAlbumArchive': if (!isset($_GET['albumID'], $_GET['password'])) exit();
// Album Download // Album Download
if (isAlbumPublic($_GET['albumID'])) { if (isAlbumPublic($_GET['albumID'])) {
// Album Public // Album Public
if (checkAlbumPassword($_GET['albumID'], $_GET['password'])) if (checkAlbumPassword($_GET['albumID'], $_GET['password'])) {
getAlbumArchive($_GET['albumID']); $album = new Album($database, $plugins, $settings, $_GET['albumID']);
else $album->getArchive();
} else {
exit('Warning: Wrong password!'); exit('Warning: Wrong password!');
}
} else { } else {
// Album Private // Album Private
exit('Warning: Album private or not downloadable!'); exit('Warning: Album private or not downloadable!');
} }
}
break; break;
case 'getPhotoArchive': if (isset($_GET['photoID'], $_GET['password'])) { case 'getPhotoArchive': if (isset($_GET['photoID'], $_GET['password'])) {

View File

@ -32,7 +32,7 @@ class Album {
if (!isset($this->plugins, $action, $args)) return false; if (!isset($this->plugins, $action, $args)) return false;
# Call plugins # Call plugins
$this->plugins->activate("Albums:$action", $args); $this->plugins->activate("Album:$action", $args);
return true; return true;
@ -185,4 +185,68 @@ class Album {
} }
public function getArchive() {
if (!isset($this->database, $this->albumIDs)) return false;
# Photos query
switch($this->albumIDs) {
case 's':
$photos = "SELECT url FROM lychee_photos WHERE public = '1';";
$zipTitle = 'Public';
break;
case 'f':
$photos = "SELECT url FROM lychee_photos WHERE star = '1';";
$zipTitle = 'Starred';
break;
default:
$photos = "SELECT url FROM lychee_photos WHERE album = '$this->albumIDs';";
$zipTitle = 'Unsorted';
}
# Execute query
$photos = $this->database->query($photos);
# Init vars
$zip = new ZipArchive();
$files = array();
$i = 0;
# Parse each url
while ($photo = $photos->fetch_object()) {
$files[$i] = '../uploads/big/' . $photo->url;
$i++;
}
# Set title
$album = $this->database->query("SELECT title FROM lychee_albums WHERE id = '$this->albumIDs' LIMIT 1;");
if ($this->albumIDs!=0&&is_numeric($this->albumIDs)) $zipTitle = $album->fetch_object()->title;
# Create zip
$filename = "../data/$zipTitle.zip";
if ($zip->open($filename, ZIPARCHIVE::CREATE)!==TRUE) return false;
# Add each photo
foreach ($files AS $file) {
$newFile = explode('/', $file);
$newFile = array_reverse($newFile);
$zip->addFile($file, $zipTitle . '/' . $newFile[0]);
}
# Finish zip
$zip->close();
# Send zip
header("Content-Type: application/zip");
header("Content-Disposition: attachment; filename=\"$zipTitle.zip\"");
header("Content-Length: ".filesize($filename));
readfile($filename);
# Delete zip
unlink($filename);
return true;
}
} }