Merge from sanmadjack:develop

This commit is contained in:
Shish
2019-06-14 13:46:55 +01:00
33 changed files with 2032 additions and 430 deletions

View File

@ -244,8 +244,11 @@ class CronUploader extends Extension
*/
public function process_upload(int $upload_count = 0): bool
{
global $config;
global $config, $database;
set_time_limit(0);
$output_subdir = date('Ymd-His', time())."/";
$this->set_dir();
$this->generate_image_queue();
@ -262,24 +265,50 @@ class CronUploader extends Extension
}
// Randomize Images
shuffle($this->image_queue);
//shuffle($this->image_queue);
$merged = 0;
$added = 0;
$failed = 0;
$failedItems = [];
// Upload the file(s)
for ($i = 0; $i < $upload_count && sizeof($this->image_queue)>0; $i++) {
$img = array_pop($this->image_queue);
try {
$this->add_image($img[0], $img[1], $img[2]);
$this->move_uploaded($img[0], $img[1], false);
$database->beginTransaction();
$result = $this->add_image($img[0], $img[1], $img[2]);
$database->commit();
$this->move_uploaded($img[0], $img[1], $output_subdir, false);
if($result==null) {
$merged++;
} else {
$added++;
}
} catch (Exception $e) {
$this->move_uploaded($img[0], $img[1], true);
$failed++;
$this->move_uploaded($img[0], $img[1], $output_subdir, true);
$msgNumber = $this->add_upload_info("(".gettype($e).") ".$e->getMessage());
$msgNumber = $this->add_upload_info($e->getTraceAsString());
if (strpos($e->getMessage(), 'SQLSTATE') !== false) {
// Postgres invalidates the transaction if there is an SQL error,
// so all subsequence transactions will fail.
break;
}
try {
$database->rollback();
} catch (Exception $e) {}
}
}
$msgNumber = $this->add_upload_info("Items added: $added");
$msgNumber = $this->add_upload_info("Items merged: $merged");
$msgNumber = $this->add_upload_info("Items failed: $failed");
// Display & save upload log
$this->handle_log();
@ -287,7 +316,7 @@ class CronUploader extends Extension
return true;
}
private function move_uploaded($path, $filename, $corrupt = false)
private function move_uploaded($path, $filename, $output_subdir, $corrupt = false)
{
global $config;
@ -296,16 +325,17 @@ class CronUploader extends Extension
$relativeDir = dirname(substr($path, strlen($this->root_dir) + 7));
// Determine which dir to move to
if ($corrupt) {
// Move to corrupt dir
$newDir .= "/failed_to_upload/".$relativeDir;
$info = "ERROR: Image was not uploaded.";
} else {
$newDir .= "/uploaded/".$relativeDir;
$info = "Image successfully uploaded. ";
}
$newDir = str_replace("//", "/", $newDir."/");
// Determine which dir to move to
if ($corrupt) {
// Move to corrupt dir
$newDir .= "/failed_to_upload/".$output_subdir.$relativeDir;
$info = "ERROR: Image was not uploaded.";
}
else {
$newDir .= "/uploaded/".$output_subdir.$relativeDir;
$info = "Image successfully uploaded. ";
}
$newDir = str_replace ( "//", "/", $newDir."/" );
if (!is_dir($newDir)) {
mkdir($newDir, 0775, true);
@ -328,9 +358,9 @@ class CronUploader extends Extension
$metadata = [];
$metadata ['filename'] = $pathinfo ['basename'];
if (array_key_exists('extension', $pathinfo)) {
$metadata['extension'] = $pathinfo['extension'];
$metadata ['extension'] = $pathinfo ['extension'];
}
$metadata ['tags'] = Tag::explode($tags);
$metadata ['tags'] = Tag::explode($tags);
$metadata ['source'] = null;
$event = new DataUploadEvent($tmpname, $metadata);
send_event($event);
@ -339,10 +369,13 @@ class CronUploader extends Extension
$infomsg = ""; // Will contain info message
if ($event->image_id == -1) {
throw new Exception("File type not recognised. Filename: {$filename}");
} else if ($event->image_id == null) {
$infomsg = "Image merged. Filename: {$filename}";
} else {
$infomsg = "Image uploaded. ID: {$event->image_id} - Filename: {$filename} - Tags: {$tags}";
$infomsg = "Image uploaded. ID: {$event->image_id} - Filename: {$filename}";
}
$msgNumber = $this->add_upload_info($infomsg);
return $event->image_id;
}
private function generate_image_queue(): void