diff --git a/core/config.php b/core/config.php index 8f5c9a06..695fa8f1 100644 --- a/core/config.php +++ b/core/config.php @@ -18,7 +18,7 @@ interface Config /** * Set a configuration option to a new value, regardless of what the value is at the moment. */ - public function set_int(string $name, ?int $value): void; + public function set_int(string $name, ?string $value): void; /** * Set a configuration option to a new value, regardless of what the value is at the moment. @@ -113,7 +113,7 @@ abstract class BaseConfig implements Config { public $values = []; - public function set_int(string $name, ?int $value): void + public function set_int(string $name, ?string $value): void { $this->values[$name] = parse_shorthand_int($value); $this->save($name); diff --git a/core/imageboard/image.php b/core/imageboard/image.php index a5d90979..5d31ff90 100644 --- a/core/imageboard/image.php +++ b/core/imageboard/image.php @@ -570,6 +570,8 @@ class Image { global $database; + $unfiltered_tags = array_unique($unfiltered_tags); + $tags = []; foreach ($unfiltered_tags as $tag) { if (mb_strlen($tag, 'UTF-8') > 255) { diff --git a/ext/cron_uploader/main.php b/ext/cron_uploader/main.php index be0b1c0c..5f67f909 100644 --- a/ext/cron_uploader/main.php +++ b/ext/cron_uploader/main.php @@ -142,7 +142,8 @@ class CronUploader extends Extension { global $config; // Set default values - if ($config->get_string("cron_uploader_key", "")) { + $this->upload_key = $config->get_string("cron_uploader_key", ""); + if (strlen($this->upload_key)<=0) { $this->upload_key = $this->generate_key(); $config->set_default_int('cron_uploader_count', 1); @@ -264,8 +265,8 @@ class CronUploader extends Extension shuffle($this->image_queue); // Upload the file(s) - for ($i = 0; $i < $upload_count && $i < sizeof($this->image_queue); $i++) { - $img = $this->image_queue[$i]; + 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]); @@ -273,9 +274,6 @@ class CronUploader extends Extension } catch (Exception $e) { $this->move_uploaded($img[0], $img[1], true); } - - // Remove img from queue array - unset($this->image_queue[$i]); } // Display & save upload log @@ -321,7 +319,7 @@ class CronUploader extends Extension $metadata = []; $metadata ['filename'] = $pathinfo ['basename']; $metadata ['extension'] = $pathinfo ['extension']; - $metadata ['tags'] = []; // = $tags; doesn't work when not logged in here + $metadata ['tags'] = Tag::explode($tags); $metadata ['source'] = null; $event = new DataUploadEvent($tmpname, $metadata); send_event($event); @@ -334,10 +332,7 @@ class CronUploader extends Extension $infomsg = "Image uploaded. ID: {$event->image_id} - Filename: {$filename} - Tags: {$tags}"; } $msgNumber = $this->add_upload_info($infomsg); - - // Set tags - $img = Image::by_id($event->image_id); - $img->set_tags(Tag::explode($tags)); + } private function generate_image_queue(): void @@ -353,20 +348,10 @@ class CronUploader extends Extension foreach (new RecursiveIteratorIterator($ite) as $fullpath=>$cur) { if (!is_link($fullpath) && !is_dir($fullpath)) { $pathinfo = pathinfo($fullpath); - $matches = []; - - if (preg_match("/\d+ - (.*)\.([a-zA-Z]+)/", $pathinfo ["basename"], $matches)) { - $tags = $matches [1]; - } else { - $tags = $subdir; - $tags = str_replace("/", " ", $tags); - $tags = str_replace("__", " ", $tags); - if ($tags == "") { - $tags = " "; - } - $tags = trim($tags); - } - + + $relativePath = substr($fullpath,strlen($base)); + $tags = path_to_tags($relativePath); + $img = [ 0 => $fullpath, 1 => $pathinfo ["basename"], diff --git a/themes/danbooru/themelet.class.php b/themes/danbooru/themelet.class.php index a00a75d4..9cdf2507 100644 --- a/themes/danbooru/themelet.class.php +++ b/themes/danbooru/themelet.class.php @@ -10,13 +10,13 @@ class Themelet extends BaseThemelet $page->add_block(new Block(null, $body, "main", 90)); } - private function gen_page_link(string $base_url, string $query, string $page, string $name): string + private function gen_page_link(string $base_url, ?string $query, string $page, string $name): string { $link = make_link("$base_url/$page", $query); return "$name"; } - private function gen_page_link_block(string $base_url, string $query, int $page, int $current_page, string $name): string + private function gen_page_link_block(string $base_url, ?string $query, int $page, int $current_page, string $name): string { $paginator = ""; if ($page == $current_page) { @@ -27,7 +27,7 @@ class Themelet extends BaseThemelet return $paginator; } - private function build_paginator(int $current_page, int $total_pages, string $base_url, string $query): string + private function build_paginator(int $current_page, int $total_pages, string $base_url, ?string $query): string { $next = $current_page + 1; $prev = $current_page - 1; diff --git a/themes/danbooru2/themelet.class.php b/themes/danbooru2/themelet.class.php index a00a75d4..9cdf2507 100644 --- a/themes/danbooru2/themelet.class.php +++ b/themes/danbooru2/themelet.class.php @@ -10,13 +10,13 @@ class Themelet extends BaseThemelet $page->add_block(new Block(null, $body, "main", 90)); } - private function gen_page_link(string $base_url, string $query, string $page, string $name): string + private function gen_page_link(string $base_url, ?string $query, string $page, string $name): string { $link = make_link("$base_url/$page", $query); return "$name"; } - private function gen_page_link_block(string $base_url, string $query, int $page, int $current_page, string $name): string + private function gen_page_link_block(string $base_url, ?string $query, int $page, int $current_page, string $name): string { $paginator = ""; if ($page == $current_page) { @@ -27,7 +27,7 @@ class Themelet extends BaseThemelet return $paginator; } - private function build_paginator(int $current_page, int $total_pages, string $base_url, string $query): string + private function build_paginator(int $current_page, int $total_pages, string $base_url, ?string $query): string { $next = $current_page + 1; $prev = $current_page - 1; diff --git a/themes/futaba/themelet.class.php b/themes/futaba/themelet.class.php index b84d3aae..219dbefb 100644 --- a/themes/futaba/themelet.class.php +++ b/themes/futaba/themelet.class.php @@ -17,13 +17,13 @@ class Themelet extends BaseThemelet /** * Generate a single HTML link. */ - public function futaba_gen_page_link(string $base_url, string $query, string $page, string $name): string + public function futaba_gen_page_link(string $base_url, ?string $query, string $page, string $name): string { $link = make_link("$base_url/$page", $query); return "[{$name}]"; } - public function futaba_gen_page_link_block(string $base_url, string $query, int $page, int $current_page, string $name): string + public function futaba_gen_page_link_block(string $base_url, ?string $query, int $page, int $current_page, string $name): string { $paginator = ""; if ($page == $current_page) { @@ -36,7 +36,7 @@ class Themelet extends BaseThemelet return $paginator; } - public function futaba_build_paginator(int $current_page, int $total_pages, string $base_url, string $query): string + public function futaba_build_paginator(int $current_page, int $total_pages, string $base_url, ?string $query): string { $next = $current_page + 1; $prev = $current_page - 1; diff --git a/themes/lite/themelet.class.php b/themes/lite/themelet.class.php index ef64903d..4e4ad20f 100644 --- a/themes/lite/themelet.class.php +++ b/themes/lite/themelet.class.php @@ -33,7 +33,7 @@ class Themelet extends BaseThemelet return "$name"; } - public function litetheme_gen_page_link_block(string $base_url, string $query, string $page, string $current_page, string $name): string + public function litetheme_gen_page_link_block(string $base_url, ?string $query, string $page, string $current_page, string $name): string { $paginator = ""; @@ -47,7 +47,7 @@ class Themelet extends BaseThemelet return $paginator; } - public function litetheme_build_paginator(int $current_page, int $total_pages, string $base_url, string $query, bool $show_random): string + public function litetheme_build_paginator(int $current_page, int $total_pages, string $base_url, ?string $query, bool $show_random): string { $next = $current_page + 1; $prev = $current_page - 1;