formatting

This commit is contained in:
Shish 2019-09-29 14:30:55 +01:00
parent 56e247faf5
commit a6bb15d859
108 changed files with 424 additions and 429 deletions

View file

@ -192,14 +192,14 @@ class Cache
$_tracer->begin("Cache Query", ["key"=>$key]);
$val = $this->engine->get($key);
if ($val !== false) {
$res = "hit";
$res = "hit";
$this->hits++;
} else {
$res = "miss";
$res = "miss";
$this->misses++;
}
$_tracer->end(null, ["result"=>$res]);
return $val;
return $val;
}
public function set(string $key, $val, int $time=0)

View file

@ -159,7 +159,7 @@ abstract class BaseConfig implements Config
public function set_array(string $name, ?array $value): void
{
if($value!=null) {
if ($value!=null) {
$this->values[$name] = implode(",", $value);
} else {
$this->values[$name] = null;
@ -313,16 +313,19 @@ class DatabaseConfig extends BaseConfig
private $sub_column;
private $sub_value;
public function __construct(Database $database, string $table_name = "config",
string $sub_column = null, string $sub_value = null)
{
public function __construct(
Database $database,
string $table_name = "config",
string $sub_column = null,
string $sub_value = null
) {
$this->database = $database;
$this->table_name = $table_name;
$this->sub_value = $sub_value;
$this->sub_column = $sub_column;
$cache_name = "config";
if(!empty($sub_value)) {
if (!empty($sub_value)) {
$cache_name .= "_".$sub_value;
}
@ -335,12 +338,12 @@ class DatabaseConfig extends BaseConfig
$query = "SELECT name, value FROM {$this->table_name}";
$args = [];
if(!empty($sub_column)&&!empty($sub_value)) {
if (!empty($sub_column)&&!empty($sub_value)) {
$query .= " WHERE $sub_column = :sub_value";
$args["sub_value"] = $sub_value;
}
foreach ($this->database->get_all($query, $args ) as $row) {
foreach ($this->database->get_all($query, $args) as $row) {
$this->values[$row["name"]] = $row["value"];
}
$this->database->cache->set($cache_name, $this->values);
@ -359,7 +362,7 @@ class DatabaseConfig extends BaseConfig
$args = ["name"=>$name];
$cols = ["name","value"];
$params = [":name",":value"];
if(!empty($this->sub_column)&&!empty($this->sub_value)) {
if (!empty($this->sub_column)&&!empty($this->sub_value)) {
$query .= " AND $this->sub_column = :sub_value";
$args["sub_value"] = $this->sub_value;
$cols[] = $this->sub_column;
@ -370,8 +373,9 @@ class DatabaseConfig extends BaseConfig
$args["value"] =$this->values[$name];
$this->database->Execute(
"INSERT INTO {$this->table_name} (".join(",",$cols).") VALUES (".join(",",$params).")",
$args);
"INSERT INTO {$this->table_name} (".join(",", $cols).") VALUES (".join(",", $params).")",
$args
);
}
// rather than deleting and having some other request(s) do a thundering
// herd of race-conditioned updates, just save the updated version once here

View file

@ -172,9 +172,9 @@ class Database
if (is_null($this->engine)) {
$this->connect_engine();
}
if($input===true) {
if ($input===true) {
return $this->engine->BOOL_Y;
} else if ($input===false) {
} elseif ($input===false) {
return $this->engine->BOOL_N;
}
return $input;
@ -190,13 +190,13 @@ class Database
private function count_time(string $method, float $start, string $query, ?array $args): void
{
global $_tracer, $tracer_enabled;
$dur = microtime(true) - $start;
if($tracer_enabled) {
global $_tracer, $tracer_enabled;
$dur = microtime(true) - $start;
if ($tracer_enabled) {
$query = trim(preg_replace('/^[\t ]+/m', '', $query)); // trim leading whitespace
$_tracer->complete($start * 1000000, $dur * 1000000, "DB Query", ["query"=>$query, "args"=>$args, "method"=>$method]);
}
$this->query_count++;
$this->query_count++;
$this->dbtime += $dur;
}
@ -226,7 +226,7 @@ class Database
return $stmt;
} catch (PDOException $pdoe) {
throw new SCoreException($pdoe->getMessage()."<p><b>Query:</b> ".$query);
}
}
}
/**

View file

@ -1,5 +1,6 @@
<?php
abstract class SCORE {
abstract class SCORE
{
const AIPK = "SCORE_AIPK";
const INET = "SCORE_INET";
const BOOL_Y = "SCORE_BOOL_Y";

View file

@ -97,7 +97,7 @@ abstract class Extension
$class = $class ?? get_called_class();
$this->theme = $this->get_theme_object($class);
$this->info = ExtensionInfo::get_for_extension_class($class);
if($this->info===null) {
if ($this->info===null) {
throw new Exception("Info class not found for extension $class");
}
$this->key = $this->info->key;
@ -132,14 +132,16 @@ abstract class Extension
public static function determine_enabled_extensions()
{
self::$enabled_extensions = [];
foreach(array_merge(ExtensionInfo::get_core_extensions(),
explode(",", EXTRA_EXTS)) as $key) {
foreach (array_merge(
ExtensionInfo::get_core_extensions(),
explode(",", EXTRA_EXTS)
) as $key) {
$ext = ExtensionInfo::get_by_key($key);
if($ext===null) {
if ($ext===null) {
continue;
}
self::$enabled_extensions[] = $ext->key;
if(!empty($ext->dependencies)) {
if (!empty($ext->dependencies)) {
foreach ($ext->dependencies as $dep) {
self::$enabled_extensions[] = $dep;
}
@ -158,7 +160,7 @@ abstract class Extension
}
public static function get_enabled_extensions_as_string(): string
{
return implode(",",self::$enabled_extensions);
return implode(",", self::$enabled_extensions);
}
}
@ -202,7 +204,7 @@ abstract class ExtensionInfo
public function is_supported(): bool
{
if($this->supported===null) {
if ($this->supported===null) {
$this->check_support();
}
return $this->supported;
@ -210,7 +212,7 @@ abstract class ExtensionInfo
public function get_support_info(): string
{
if($this->supported===null) {
if ($this->supported===null) {
$this->check_support();
}
return $this->support_info;
@ -222,22 +224,22 @@ abstract class ExtensionInfo
protected function __construct()
{
if(empty($this->key)) {
if (empty($this->key)) {
throw new Exception("key field is required");
}
if(empty($this->name)) {
if (empty($this->name)) {
throw new Exception("name field is required for extension $this->key");
}
if(!empty($this->visibility)&&!in_array($this->visibility, self::VALID_VISIBILITY)) {
if (!empty($this->visibility)&&!in_array($this->visibility, self::VALID_VISIBILITY)) {
throw new Exception("Invalid visibility for extension $this->key");
}
if(!is_array($this->db_support)) {
if (!is_array($this->db_support)) {
throw new Exception("db_support has to be an array for extension $this->key");
}
if(!is_array($this->authors)) {
if (!is_array($this->authors)) {
throw new Exception("authors has to be an array for extension $this->key");
}
if(!is_array($this->dependencies)) {
if (!is_array($this->dependencies)) {
throw new Exception("dependencies has to be an array for extension $this->key");
}
}
@ -251,7 +253,7 @@ abstract class ExtensionInfo
{
global $database;
$this->support_info = "";
if(!empty($this->db_support)&&!in_array($database->get_driver_name(), $this->db_support)) {
if (!empty($this->db_support)&&!in_array($database->get_driver_name(), $this->db_support)) {
$this->support_info .= "Database not supported. ";
}
// Additional checks here as needed
@ -276,7 +278,7 @@ abstract class ExtensionInfo
public static function get_by_key(string $key): ?ExtensionInfo
{
if(array_key_exists($key, self::$all_info_by_key)) {
if (array_key_exists($key, self::$all_info_by_key)) {
return self::$all_info_by_key[$key];
} else {
return null;
@ -296,20 +298,19 @@ abstract class ExtensionInfo
public static function load_all_extension_info()
{
foreach (get_declared_classes() as $class) {
$rclass = new ReflectionClass($class);
if ($rclass->isAbstract()) {
// don't do anything
} elseif (is_subclass_of($class, "ExtensionInfo")) {
$extension_info = new $class();
if(array_key_exists($extension_info->key, self::$all_info_by_key)) {
if (array_key_exists($extension_info->key, self::$all_info_by_key)) {
throw new Exception("Extension Info $class with key $extension_info->key has already been loaded");
}
self::$all_info_by_key[$extension_info->key] = $extension_info;
self::$all_info_by_class[$class] = $extension_info;
if($extension_info->core===true) {
if ($extension_info->core===true) {
self::$core_extensions[] = $extension_info->key;
}
}

View file

@ -143,7 +143,7 @@ class Image
if (!$result) {
$querylet = Image::build_search_querylet($tag_conditions, $img_conditions);
$querylet->append(new Querylet(" ORDER BY ".(Image::$order_sql ?: "images.".$config->get_string("index_order"))));
if($limit!=null) {
if ($limit!=null) {
$querylet->append(new Querylet(" LIMIT :limit ", ["limit" => $limit]));
}
$querylet->append(new Querylet(" OFFSET :offset ", ["offset"=>$start]));
@ -231,7 +231,7 @@ class Image
$response = Image::query_accelerator($req);
if ($response) {
$list = implode(",", $response);
$list = implode(",", $response);
$result = $database->execute("SELECT * FROM images WHERE id IN ($list) ORDER BY images.id DESC");
} else {
$result = $database->execute("SELECT * FROM images WHERE 1=0 ORDER BY images.id DESC");
@ -256,19 +256,19 @@ class Image
public static function query_accelerator($req)
{
global $_tracer;
global $_tracer;
$fp = @fsockopen("127.0.0.1", 21212);
if (!$fp) {
return null;
}
$req_str = json_encode($req);
$_tracer->begin("Accelerator Query", ["req"=>$req_str]);
$req_str = json_encode($req);
$_tracer->begin("Accelerator Query", ["req"=>$req_str]);
fwrite($fp, $req_str);
$data = "";
while (($buffer = fgets($fp, 4096)) !== false) {
$data .= $buffer;
}
$_tracer->end();
$_tracer->end();
if (!feof($fp)) {
die("Error: unexpected fgets() fail in query_accelerator($req_str)\n");
}
@ -833,10 +833,9 @@ class Image
$opts = $matches[2];
$post = $matches[3];
if(isset($flexihashes[$opts])) {
if (isset($flexihashes[$opts])) {
$flexihash = $flexihashes[$opts];
}
else {
} else {
$flexihash = new Flexihash\Flexihash();
foreach (explode(",", $opts) as $opt) {
$parts = explode("=", $opt);
@ -968,7 +967,7 @@ class Image
FROM images
WHERE 1=0
");
} elseif($tag_count==1) {
} elseif ($tag_count==1) {
// All wildcard terms that qualify for a single tag can be treated the same as non-wildcards
$positive_tag_id_array[] = $tag_ids[0];
} else {
@ -985,14 +984,14 @@ class Image
$sql = "";
assert($positive_tag_id_array || $positive_wildcard_id_array || $negative_tag_id_array, @$_GET['q']);
if(!empty($positive_tag_id_array) || !empty($positive_wildcard_id_array)) {
if (!empty($positive_tag_id_array) || !empty($positive_wildcard_id_array)) {
$inner_joins = [];
if (!empty($positive_tag_id_array)) {
foreach($positive_tag_id_array as $tag) {
foreach ($positive_tag_id_array as $tag) {
$inner_joins[] = "= $tag";
}
}
if(!empty($positive_wildcard_id_array)) {
if (!empty($positive_wildcard_id_array)) {
foreach ($positive_wildcard_id_array as $tags) {
$positive_tag_id_list = join(', ', $tags);
$inner_joins[] = "IN ($positive_tag_id_list)";
@ -1006,12 +1005,12 @@ class Image
$i++;
$sub_query .= " INNER JOIN image_tags it$i ON it$i.image_id = it.image_id AND it$i.tag_id $inner_join ";
}
if(!empty($negative_tag_id_array)) {
if (!empty($negative_tag_id_array)) {
$negative_tag_id_list = join(', ', $negative_tag_id_array);
$sub_query .= " LEFT JOIN image_tags negative ON negative.image_id = it.image_id AND negative.tag_id IN ($negative_tag_id_list) ";
}
$sub_query .= "WHERE it.tag_id $first ";
if(!empty($negative_tag_id_array)) {
if (!empty($negative_tag_id_array)) {
$sub_query .= " AND negative.image_id IS NULL";
}
$sub_query .= " GROUP BY it.image_id ";
@ -1022,7 +1021,7 @@ class Image
$sub_query
) a on a.image_id = images.id
";
} elseif(!empty($negative_tag_id_array)) {
} elseif (!empty($negative_tag_id_array)) {
$negative_tag_id_list = join(', ', $negative_tag_id_array);
$sql = "
SELECT images.*

View file

@ -124,7 +124,7 @@ function get_thumbnail_size(int $orig_width, int $orig_height, bool $use_dpi_sca
}
if($use_dpi_scaling) {
if ($use_dpi_scaling) {
list($max_width, $max_height) = get_thumbnail_max_size_scaled();
} else {
$max_width = $config->get_int(ImageConfig::THUMB_WIDTH);
@ -138,7 +138,6 @@ function get_thumbnail_size(int $orig_width, int $orig_height, bool $use_dpi_sca
} else {
return $output;
}
}
function get_scaled_by_aspect_ratio(int $original_width, int $original_height, int $max_width, int $max_height) : array
@ -167,19 +166,20 @@ function get_thumbnail_max_size_scaled(): array
}
function create_image_thumb(string $hash, string $type, string $engine = null) {
function create_image_thumb(string $hash, string $type, string $engine = null)
{
global $config;
$inname = warehouse_path(Image::IMAGE_DIR, $hash);
$outname = warehouse_path(Image::THUMBNAIL_DIR, $hash);
$tsize = get_thumbnail_max_size_scaled();
if(empty($engine)) {
if (empty($engine)) {
$engine = $config->get_string(ImageConfig::THUMB_ENGINE);
}
$output_format = $config->get_string(ImageConfig::THUMB_TYPE);
if($output_format=="webp") {
if ($output_format=="webp") {
$output_format = Media::WEBP_LOSSY;
}
@ -206,14 +206,14 @@ function format_milliseconds(int $input): string
$remainder = floor($input / 1000);
foreach (TIME_UNITS AS $unit=>$conversion) {
foreach (TIME_UNITS as $unit=>$conversion) {
$count = $remainder % $conversion;
$remainder = floor($remainder / $conversion);
if($count==0&&$remainder<1) {
if ($count==0&&$remainder<1) {
break;
}
$output = "$count".$unit." ".$output;
}
return trim($output);
}
}

View file

@ -307,14 +307,14 @@ class Page
$active_link = null;
// To save on event calls, we check if one of the top-level links has already been marked as active
foreach ($nav_links as $link) {
if($link->active===true) {
if ($link->active===true) {
$active_link = $link;
break;
}
}
$sub_links = null;
// If one is, we just query for sub-menu options under that one tab
if($active_link!==null) {
if ($active_link!==null) {
$psnbe = new PageSubNavBuildingEvent($active_link->name);
send_event($psnbe);
$sub_links = $psnbe->links;
@ -326,13 +326,13 @@ class Page
// Now we check for a current link so we can identify the sub-links to show
foreach ($psnbe->links as $sub_link) {
if($sub_link->active===true) {
if ($sub_link->active===true) {
$sub_links = $psnbe->links;
break;
}
}
// If the active link has been detected, we break out
if($sub_links!==null) {
if ($sub_links!==null) {
$link->active = true;
break;
}
@ -372,7 +372,6 @@ class Page
header('Accept-Ranges: bytes');
if (isset($_SERVER['HTTP_RANGE'])) {
$c_start = $start;
$c_end = $end;
list(, $range) = explode('=', $_SERVER['HTTP_RANGE'], 2);
@ -418,8 +417,9 @@ class Page
// After flush, we can tell if the client browser has disconnected.
// This means we can start sending a large file, and if we detect they disappeared
// then we can just stop and not waste any more resources or bandwidth.
if (connection_status() != 0)
if (connection_status() != 0) {
break;
}
}
} finally {
fclose($fp);
@ -541,7 +541,7 @@ class PageSubNavBuildingEvent extends Event
public function add_nav_link(string $name, Link $link, string $desc, ?bool $active = null, int $order = 50)
{
$this->links[] = new NavLink($name, $link, $desc, $active,$order);
$this->links[] = new NavLink($name, $link, $desc, $active, $order);
}
}
@ -553,7 +553,7 @@ class NavLink
public $order;
public $active = false;
public function __construct(String $name, Link $link, String $description, ?bool $active = null, int $order = 50)
public function __construct(String $name, Link $link, String $description, ?bool $active = null, int $order = 50)
{
global $config;
@ -561,7 +561,7 @@ class NavLink
$this->link = $link;
$this->description = $description;
$this->order = $order;
if($active==null) {
if ($active==null) {
$query = ltrim(_get_query(), "/");
if ($query === "") {
// This indicates the front page, so we check what's set as the front page
@ -572,15 +572,14 @@ class NavLink
} else {
$this->active = self::is_active([$link->page], $front_page);
}
} elseif($query===$link->page) {
} elseif ($query===$link->page) {
$this->active = true;
}else {
} else {
$this->active = self::is_active([$link->page]);
}
} else {
$this->active = $active;
}
}
public static function is_active(array $pages_matched, string $url = null): bool

View file

@ -66,5 +66,4 @@ abstract class Permissions
public const VIEW_TRASH = "view_trash";
public const PERFORM_BULK_ACTIONS = "perform_bulk_actions";
}
}

View file

@ -759,7 +759,7 @@ function validate_input(array $inputs): array
*/
function sanitize_path(string $path): string
{
return preg_replace('|[\\\\/]+|S',DIRECTORY_SEPARATOR,$path);
return preg_replace('|[\\\\/]+|S', DIRECTORY_SEPARATOR, $path);
}
/**
@ -770,11 +770,11 @@ function join_path(string ...$paths): string
{
$output = "";
foreach ($paths as $path) {
if(empty($path)) {
if (empty($path)) {
continue;
}
$path = sanitize_path($path);
if(empty($output)) {
if (empty($output)) {
$output = $path;
} else {
$output = rtrim($output, DIRECTORY_SEPARATOR);
@ -790,8 +790,8 @@ function join_path(string ...$paths): string
*/
function iterator_map(callable $callback, iterator $iter): Generator
{
foreach($iter as $i) {
yield call_user_func($callback,$i);
foreach ($iter as $i) {
yield call_user_func($callback, $i);
}
}
@ -810,12 +810,16 @@ function get_class_from_file(string $file): string
$class = $buffer = '';
$i = 0;
while (!$class) {
if (feof($fp)) break;
if (feof($fp)) {
break;
}
$buffer .= fread($fp, 512);
$tokens = token_get_all($buffer);
if (strpos($buffer, '{') === false) continue;
if (strpos($buffer, '{') === false) {
continue;
}
for (;$i<count($tokens);$i++) {
if ($tokens[$i][0] === T_CLASS) {
@ -828,4 +832,4 @@ function get_class_from_file(string $file): string
}
}
return $class;
}
}

View file

@ -26,7 +26,7 @@ function _load_event_listeners(): void
function _clear_cached_event_listeners(): void
{
if (file_exists(data_path("cache/shm_event_listeners.php"))) {
unlink(data_path("cache/shm_event_listeners.php"));
unlink(data_path("cache/shm_event_listeners.php"));
}
}
@ -108,21 +108,29 @@ function send_event(Event $event): void
// send_event() is performance sensitive, and with the number
// of times tracer gets called the time starts to add up
if ($tracer_enabled) $_tracer->begin(get_class($event));
if ($tracer_enabled) {
$_tracer->begin(get_class($event));
}
// SHIT: http://bugs.php.net/bug.php?id=35106
$my_event_listeners = $_shm_event_listeners[get_class($event)];
ksort($my_event_listeners);
foreach ($my_event_listeners as $listener) {
if ($tracer_enabled) $_tracer->begin(get_class($listener));
if ($tracer_enabled) {
$_tracer->begin(get_class($listener));
}
if (method_exists($listener, $method_name)) {
$listener->$method_name($event);
}
if ($tracer_enabled) $_tracer->end();
if($event->stop_processing===true) {
if ($tracer_enabled) {
$_tracer->end();
}
if ($event->stop_processing===true) {
break;
}
}
$_shm_event_count++;
if ($tracer_enabled) $_tracer->end();
if ($tracer_enabled) {
$_tracer->end();
}
}

View file

@ -48,7 +48,6 @@ class PolyfillsTest extends \PHPUnit\Framework\TestCase
public function test_sanitize_path()
{
$this->assertEquals(
"one",
sanitize_path("one")
@ -88,7 +87,6 @@ class PolyfillsTest extends \PHPUnit\Framework\TestCase
DIRECTORY_SEPARATOR."one".DIRECTORY_SEPARATOR."two".DIRECTORY_SEPARATOR,
sanitize_path("\\/one/\\/\\/two\\/")
);
}
public function test_join_path()
@ -100,22 +98,22 @@ class PolyfillsTest extends \PHPUnit\Framework\TestCase
$this->assertEquals(
"one".DIRECTORY_SEPARATOR."two",
join_path("one","two")
join_path("one", "two")
);
$this->assertEquals(
"one".DIRECTORY_SEPARATOR."two".DIRECTORY_SEPARATOR."three",
join_path("one","two","three")
join_path("one", "two", "three")
);
$this->assertEquals(
"one".DIRECTORY_SEPARATOR."two".DIRECTORY_SEPARATOR."three",
join_path("one/two","three")
join_path("one/two", "three")
);
$this->assertEquals(
DIRECTORY_SEPARATOR."one".DIRECTORY_SEPARATOR."two".DIRECTORY_SEPARATOR."three".DIRECTORY_SEPARATOR,
join_path("\\/////\\\\one/\///"."\\//two\/\\//\\//","//\/\\\/three/\\/\/")
join_path("\\/////\\\\one/\///"."\\//two\/\\//\\//", "//\/\\\/three/\\/\/")
);
}
}

View file

@ -3,65 +3,63 @@ require_once "core/util.php";
class UtilTest extends \PHPUnit\Framework\TestCase
{
public function test_warehouse_path()
{
$hash = "7ac19c10d6859415";
$this->assertEquals(
join_path(DATA_DIR,"base",$hash),
warehouse_path("base",$hash,false, 0)
join_path(DATA_DIR, "base", $hash),
warehouse_path("base", $hash, false, 0)
);
$this->assertEquals(
join_path(DATA_DIR,"base","7a",$hash),
warehouse_path("base",$hash,false, 1)
join_path(DATA_DIR, "base", "7a", $hash),
warehouse_path("base", $hash, false, 1)
);
$this->assertEquals(
join_path(DATA_DIR,"base","7a","c1",$hash),
warehouse_path("base",$hash,false, 2)
join_path(DATA_DIR, "base", "7a", "c1", $hash),
warehouse_path("base", $hash, false, 2)
);
$this->assertEquals(
join_path(DATA_DIR,"base","7a","c1","9c",$hash),
warehouse_path("base",$hash,false, 3)
join_path(DATA_DIR, "base", "7a", "c1", "9c", $hash),
warehouse_path("base", $hash, false, 3)
);
$this->assertEquals(
join_path(DATA_DIR,"base","7a","c1","9c","10",$hash),
warehouse_path("base",$hash,false, 4)
join_path(DATA_DIR, "base", "7a", "c1", "9c", "10", $hash),
warehouse_path("base", $hash, false, 4)
);
$this->assertEquals(
join_path(DATA_DIR,"base","7a","c1","9c","10","d6",$hash),
warehouse_path("base",$hash,false, 5)
join_path(DATA_DIR, "base", "7a", "c1", "9c", "10", "d6", $hash),
warehouse_path("base", $hash, false, 5)
);
$this->assertEquals(
join_path(DATA_DIR,"base","7a","c1","9c","10","d6","85",$hash),
warehouse_path("base",$hash,false, 6)
join_path(DATA_DIR, "base", "7a", "c1", "9c", "10", "d6", "85", $hash),
warehouse_path("base", $hash, false, 6)
);
$this->assertEquals(
join_path(DATA_DIR,"base","7a","c1","9c","10","d6","85","94",$hash),
warehouse_path("base",$hash,false, 7)
join_path(DATA_DIR, "base", "7a", "c1", "9c", "10", "d6", "85", "94", $hash),
warehouse_path("base", $hash, false, 7)
);
$this->assertEquals(
join_path(DATA_DIR,"base","7a","c1","9c","10","d6","85","94","15",$hash),
warehouse_path("base",$hash,false, 8)
join_path(DATA_DIR, "base", "7a", "c1", "9c", "10", "d6", "85", "94", "15", $hash),
warehouse_path("base", $hash, false, 8)
);
$this->assertEquals(
join_path(DATA_DIR,"base","7a","c1","9c","10","d6","85","94","15",$hash),
warehouse_path("base",$hash,false, 9)
join_path(DATA_DIR, "base", "7a", "c1", "9c", "10", "d6", "85", "94", "15", $hash),
warehouse_path("base", $hash, false, 9)
);
$this->assertEquals(
join_path(DATA_DIR,"base","7a","c1","9c","10","d6","85","94","15",$hash),
warehouse_path("base",$hash,false, 10)
join_path(DATA_DIR, "base", "7a", "c1", "9c", "10", "d6", "85", "94", "15", $hash),
warehouse_path("base", $hash, false, 10)
);
}
}

View file

@ -174,7 +174,7 @@ function warehouse_path(string $base, string $hash, bool $create=true, int $spli
{
$dirs =[DATA_DIR, $base];
$splits = min($splits, strlen($hash) / 2);
for($i = 0; $i < $splits; $i++) {
for ($i = 0; $i < $splits; $i++) {
$dirs[] = substr($hash, $i * 2, 2);
}
$dirs[] = $hash;
@ -343,7 +343,7 @@ function join_url(string $base, string ...$paths)
{
$output = $base;
foreach ($paths as $path) {
$output = rtrim($output,"/");
$output = rtrim($output, "/");
$path = ltrim($path, "/");
$output .= "/".$path;
}

View file

@ -91,7 +91,7 @@ class AdminPage extends Extension
public function onPageSubNavBuilding(PageSubNavBuildingEvent $event)
{
global $user;
if($event->parent==="system") {
if ($event->parent==="system") {
if ($user->can(Permissions::MANAGE_ADMINTOOLS)) {
$event->add_nav_link("admin", new Link('admin'), "Board Admin");
}

View file

@ -55,12 +55,11 @@ class AdminPageTheme extends Themelet
$html .= "<input type='submit' value='Set Tag Case'>";
$html .= "</form>\n";
$page->add_block(new Block("Set Tag Case", $html));
}
public function dbq_html($terms)
{
if(Extension::is_enabled(TrashInfo::KEY)) {
if (Extension::is_enabled(TrashInfo::KEY)) {
$warning = "This delete method will bypass the trash<br/>";
}
if (class_exists("ImageBan")) {
@ -75,6 +74,4 @@ class AdminPageTheme extends Themelet
";
return $html;
}
}

View file

@ -109,7 +109,7 @@ class AliasEditor extends Extension
public function onPageSubNavBuilding(PageSubNavBuildingEvent $event)
{
if($event->parent=="tags") {
if ($event->parent=="tags") {
$event->add_nav_link("aliases", new Link('alias/list'), "Aliases", NavLink::is_active(["alias"]));
}
}

View file

@ -47,7 +47,7 @@ class Artists extends Extension
public function onHelpPageBuilding(HelpPageBuildingEvent $event)
{
if($event->key===HelpPages::SEARCH) {
if ($event->key===HelpPages::SEARCH) {
$block = new Block();
$block->header = "Artist";
$block->body = $this->theme->get_help_html();

View file

@ -33,8 +33,8 @@ class AutoComplete extends Extension
//$limit = 0;
$cache_key = "autocomplete-$s";
$limitSQL = "";
$s = str_replace('_','\_', $s);
$s = str_replace('%','\%', $s);
$s = str_replace('_', '\_', $s);
$s = str_replace('%', '\%', $s);
$SQLarr = ["search"=>"$s%"]; #, "cat_search"=>"%:$s%"];
if (isset($_GET["limit"]) && $_GET["limit"] !== 0) {
$limitSQL = "LIMIT :limit";

View file

@ -22,7 +22,7 @@ class Blocks extends Extension
public function onPageSubNavBuilding(PageSubNavBuildingEvent $event)
{
global $user;
if($event->parent==="system") {
if ($event->parent==="system") {
if ($user->can(Permissions::MANAGE_BLOCKS)) {
$event->add_nav_link("blocks", new Link('blocks/list'), "Blocks Editor");
}

View file

@ -51,7 +51,7 @@ class Blotter extends Extension
public function onPageSubNavBuilding(PageSubNavBuildingEvent $event)
{
global $user;
if($event->parent==="system") {
if ($event->parent==="system") {
if ($user->is_admin()) {
$event->add_nav_link("blotter", new Link('blotter/editor'), "Blotter Editor");
}

View file

@ -13,10 +13,10 @@ class BulkActionBlockBuildingEvent extends Event
$block = "";
}
if(!empty($access_key)) {
if (!empty($access_key)) {
assert(strlen($access_key)==1);
foreach ($this->actions as $existing) {
if($existing["access_key"]==$access_key) {
if ($existing["access_key"]==$access_key) {
throw new SCoreException("Access key $access_key is already in use");
}
}
@ -81,18 +81,18 @@ class BulkActions extends Extension
}
if ($user->can(Permissions::BULK_EDIT_IMAGE_TAG)) {
$event->add_action(
"bulk_tag",
"Tag",
"t",
"",
$this->theme->render_tag_input(),
10);
10
);
}
if ($user->can(Permissions::BULK_EDIT_IMAGE_SOURCE)) {
$event->add_action("bulk_source", "Set (S)ource", "s","", $this->theme->render_source_input(), 10);
$event->add_action("bulk_source", "Set (S)ource", "s", "", $this->theme->render_source_input(), 10);
}
}
@ -177,7 +177,7 @@ class BulkActions extends Extension
foreach ($data as $id) {
if (is_numeric($id)) {
$image = Image::by_id($id);
if($image!=null) {
if ($image!=null) {
yield $image;
}
}
@ -237,10 +237,10 @@ class BulkActions extends Extension
}
} else {
foreach ($items as $image) {
$img_tags = array_map("strtolower",$image->get_tag_array());
$img_tags = array_map("strtolower", $image->get_tag_array());
if (!empty($neg_tag_array)) {
$neg_tag_array = array_map("strtolower",$neg_tag_array);
$neg_tag_array = array_map("strtolower", $neg_tag_array);
$img_tags = array_merge($pos_tag_array, $img_tags);
$img_tags = array_diff($img_tags, $neg_tag_array);

View file

@ -157,7 +157,7 @@ class CommentList extends Extension
public function onPageSubNavBuilding(PageSubNavBuildingEvent $event)
{
if($event->parent=="comment") {
if ($event->parent=="comment") {
$event->add_nav_link("comment_list", new Link('comment/list'), "All");
$event->add_nav_link("comment_help", new Link('ext_doc/comment'), "Help");
}
@ -359,7 +359,7 @@ class CommentList extends Extension
public function onHelpPageBuilding(HelpPageBuildingEvent $event)
{
if($event->key===HelpPages::SEARCH) {
if ($event->key===HelpPages::SEARCH) {
$block = new Block();
$block->header = "Comments";
$block->body = $this->theme->get_help_html();

View file

@ -312,6 +312,5 @@ class CommentListTheme extends Themelet
<p>Returns images that have been commented on by user 123. </p>
</div>
';
}
}

View file

@ -28,4 +28,3 @@ becomes a link to smile.gif
<p>Images are stored in /ext/emoticons/default/, and you can
add more emoticons by uploading images into that folder.";
}

View file

@ -18,4 +18,3 @@ class Emoticons extends FormatterExtension
return $text;
}
}

View file

@ -16,7 +16,7 @@ class ET extends Extension
public function onPageSubNavBuilding(PageSubNavBuildingEvent $event)
{
global $user;
if($event->parent==="system") {
if ($event->parent==="system") {
if ($user->can(Permissions::VIEW_SYSINTO)) {
$event->add_nav_link("system_info", new Link('system_info'), "System Info", null, 10);
}

View file

@ -3,10 +3,12 @@
function __extman_extcmp(ExtensionInfo $a, ExtensionInfo $b): int
{
if($a->beta===true&&$b->beta===false)
if ($a->beta===true&&$b->beta===false) {
return 1;
if($a->beta===false&&$b->beta===true)
}
if ($a->beta===false&&$b->beta===true) {
return -1;
}
return strcmp($a->name, $b->name);
}
@ -82,7 +84,7 @@ class ExtManager extends Extension
public function onPageSubNavBuilding(PageSubNavBuildingEvent $event)
{
global $user;
if($event->parent==="system") {
if ($event->parent==="system") {
if ($user->can(Permissions::MANAGE_EXTENSION_LIST)) {
$event->add_nav_link("ext_manager", new Link('ext_manager'), "Extension Manager");
} else {
@ -108,7 +110,7 @@ class ExtManager extends Extension
{
$extensions = ExtensionInfo::get_all();
if (!$all) {
$extensions = array_filter($extensions,"__extman_extactive");
$extensions = array_filter($extensions, "__extman_extactive");
}
usort($extensions, "__extman_extcmp");
return $extensions;

View file

@ -32,7 +32,7 @@ class ExtManagerTheme extends Themelet
$h_link = make_link("ext_doc/" . url_escape($extension->key));
$h_enabled = ($extension->is_enabled() === true ? " checked='checked'" : "");
$h_disabled = ($extension->is_supported()===false || $extension->core===true? " disabled ": " " );
$h_disabled = ($extension->is_supported()===false || $extension->core===true? " disabled ": " ");
//baseline_open_in_new_black_18dp.png

View file

@ -144,7 +144,7 @@ class Favorites extends Extension
public function onHelpPageBuilding(HelpPageBuildingEvent $event)
{
if($event->key===HelpPages::SEARCH) {
if ($event->key===HelpPages::SEARCH) {
$block = new Block();
$block->header = "Favorites";
$block->body = $this->theme->get_help_html();
@ -155,11 +155,11 @@ class Favorites extends Extension
public function onPageSubNavBuilding(PageSubNavBuildingEvent $event)
{
global $user;
if($event->parent=="posts") {
if ($event->parent=="posts") {
$event->add_nav_link("posts_favorites", new Link("post/list/favorited_by={$user->name}/1"), "My Favorites");
}
if($event->parent==="user") {
if ($event->parent==="user") {
if ($user->can(Permissions::MANAGE_ADMINTOOLS)) {
$username = url_escape($user->name);
$event->add_nav_link("favorites", new Link("post/list/favorited_by=$username/1"), "My Favorites");

View file

@ -56,6 +56,5 @@ class FavoritesTheme extends Themelet
<p>Returns images that have been favorited by user 123. </p>
</div>
';
}
}

View file

@ -2,7 +2,6 @@
class FlashFileHandler extends DataHandlerExtension
{
public function onMediaCheckProperties(MediaCheckPropertiesEvent $event)
{
switch ($event->ext) {

View file

@ -7,7 +7,7 @@ class IcoFileHandler extends DataHandlerExtension
public function onMediaCheckProperties(MediaCheckPropertiesEvent $event)
{
if(in_array($event->ext, self::SUPPORTED_EXTENSIONS)) {
if (in_array($event->ext, self::SUPPORTED_EXTENSIONS)) {
$event->lossless = true;
$event->video = false;
$event->audio = false;

View file

@ -12,7 +12,6 @@ class MP3FileHandler extends DataHandlerExtension
break;
}
// TODO: Buff out audio format support, length scanning
}
protected function create_thumb(string $hash, string $type): bool

View file

@ -7,14 +7,14 @@ class PixelFileHandler extends DataHandlerExtension
public function onMediaCheckProperties(MediaCheckPropertiesEvent $event)
{
if(in_array($event->ext, Media::LOSSLESS_FORMATS)) {
if (in_array($event->ext, Media::LOSSLESS_FORMATS)) {
$event->lossless = true;
} elseif($event->ext=="webp") {
} elseif ($event->ext=="webp") {
$event->lossless = Media::is_lossless_webp($event->file_name);
}
if(in_array($event->ext,self::SUPPORTED_EXTENSIONS)) {
if($event->lossless==null) {
if (in_array($event->ext, self::SUPPORTED_EXTENSIONS)) {
if ($event->lossless==null) {
$event->lossless = false;
}
$event->audio = false;
@ -111,5 +111,4 @@ class PixelFileHandler extends DataHandlerExtension
</form>
", 20);
}
}

View file

@ -4,7 +4,6 @@ use enshrined\svgSanitize\Sanitizer;
class SVGFileHandler extends DataHandlerExtension
{
public function onMediaCheckProperties(MediaCheckPropertiesEvent $event)
{
switch ($event->ext) {

View file

@ -36,19 +36,19 @@ class VideoFileHandler extends DataHandlerExtension
public function onMediaCheckProperties(MediaCheckPropertiesEvent $event)
{
if(in_array($event->ext, self::SUPPORTED_EXT)) {
if (in_array($event->ext, self::SUPPORTED_EXT)) {
$event->video = true;
try {
$data = Media::get_ffprobe_data($event->file_name);
if(is_array($data)) {
if(array_key_exists("streams", $data)) {
if (is_array($data)) {
if (array_key_exists("streams", $data)) {
$video = false;
$audio = true;
$streams = $data["streams"];
if (is_array($streams)) {
foreach ($streams as $stream) {
if(is_array($stream)) {
if (is_array($stream)) {
if (array_key_exists("codec_type", $stream)) {
$type = $stream["codec_type"];
switch ($type) {
@ -68,22 +68,20 @@ class VideoFileHandler extends DataHandlerExtension
&& is_numeric($stream["height"]) && intval($stream["height"]) > ($event->height) ?? 0) {
$event->height = intval($stream["height"]);
}
}
}
$event->video = $video;
$event->audio = $audio;
}
}
if(array_key_exists("format", $data)&& is_array($data["format"])) {
if (array_key_exists("format", $data)&& is_array($data["format"])) {
$format = $data["format"];
if(array_key_exists("duration", $format) && is_numeric($format["duration"])) {
$event->length = floor(floatval($format["duration"]) * 1000);
if (array_key_exists("duration", $format) && is_numeric($format["duration"])) {
$event->length = floor(floatval($format["duration"]) * 1000);
}
}
}
} catch(MediaException $e) {
} catch (MediaException $e) {
}
}
}

View file

@ -14,11 +14,11 @@ class VideoFileHandlerTheme extends Themelet
$player = make_link('vendor/bower-asset/mediaelement/build/flashmediaelement.swf');
$width="auto";
if($image->width>1) {
if ($image->width>1) {
$width = $image->width."px";
}
$height="auto";
if($image->height>1) {
if ($image->height>1) {
$height = $image->height."px";
}

View file

@ -8,7 +8,6 @@ class HelpPageListBuildingEvent extends Event
{
$this->pages[$key] = $name;
}
}
class HelpPageBuildingEvent extends Event
@ -21,10 +20,9 @@ class HelpPageBuildingEvent extends Event
$this->key = $key;
}
function add_block(Block $block, int $position = 50)
public function add_block(Block $block, int $position = 50)
{
if(!array_key_exists("$position",$this->blocks))
{
if (!array_key_exists("$position", $this->blocks)) {
$this->blocks["$position"] = [];
}
$this->blocks["$position"][] = $block;
@ -49,7 +47,7 @@ class HelpPages extends Extension
} else {
$name = $event->get_arg(0);
$title = $name;
if(array_key_exists($name, $e->pages)) {
if (array_key_exists($name, $e->pages)) {
$title = $e->pages[$name];
}
@ -60,7 +58,7 @@ class HelpPages extends Extension
asort($hpbe->blocks);
foreach ($hpbe->blocks as $key=>$value) {
foreach($value as $block) {
foreach ($value as $block) {
$page->add_block($block);
}
}
@ -85,15 +83,15 @@ class HelpPages extends Extension
$event->add_link("Help", make_link("help"));
}
public function onHelpPageBuilding(HelpPageBuildingEvent $event) {
public function onHelpPageBuilding(HelpPageBuildingEvent $event)
{
if ($event->key=="licenses") {
$block = new Block("Software Licenses");
$block->body = "The code in Shimmie is contributed by numerous authors under multiple licenses. For reference, these licenses are listed below. The base software is in general licensed under the GPLv2 license.";
$event->add_block($block);
if($event->key=="licenses"){
$block = new Block("Software Licenses");
$block->body = "The code in Shimmie is contributed by numerous authors under multiple licenses. For reference, these licenses are listed below. The base software is in general licensed under the GPLv2 license.";
$event->add_block($block);
$block = new Block(ExtensionInfo::LICENSE_GPLV2);
$block->body = "<pre> GNU GENERAL PUBLIC LICENSE
$block = new Block(ExtensionInfo::LICENSE_GPLV2);
$block->body = "<pre> GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
@ -432,10 +430,10 @@ proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.</pre>";
$event->add_block($block);
$event->add_block($block);
$block = new Block(ExtensionInfo::LICENSE_MIT);
$block->body = "<pre>Permission is hereby granted, free of charge, to any person obtaining a copy
$block = new Block(ExtensionInfo::LICENSE_MIT);
$block->body = "<pre>Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the \"Software\"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
@ -452,11 +450,11 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.</pre>";
$event->add_block($block);
$event->add_block($block);
$block = new Block(ExtensionInfo::LICENSE_WTFPL);
$block->body = "<pre> DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
$block = new Block(ExtensionInfo::LICENSE_WTFPL);
$block->body = "<pre> DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
@ -471,9 +469,7 @@ SOFTWARE.</pre>";
0. You just DO WHAT THE FUCK YOU WANT TO.
</pre>";
$event->add_block($block);
$event->add_block($block);
}
}
}
}

View file

@ -2,7 +2,6 @@
class HelpPagesTheme extends Themelet
{
public function display_list_page(array $pages)
{
global $page;
@ -27,5 +26,4 @@ class HelpPagesTheme extends Themelet
$page->set_title("Help - $title");
$page->set_heading("Help - $title");
}
}

View file

@ -1,6 +1,7 @@
<?php
abstract class ImageConfig {
abstract class ImageConfig
{
const THUMB_ENGINE = 'thumb_engine';
const THUMB_WIDTH = 'thumb_width';
const THUMB_HEIGHT = 'thumb_height';
@ -17,5 +18,4 @@ abstract class ImageConfig {
const COLLISION_MERGE = 'merge';
const COLLISION_ERROR = 'error';
}

View file

@ -7,7 +7,6 @@ require_once "config.php";
*/
class ImageIO extends Extension
{
const COLLISION_OPTIONS = ['Error'=>ImageConfig::COLLISION_ERROR, 'Merge'=>ImageConfig::COLLISION_MERGE];
const EXIF_READ_FUNCTION = "exif_read_data";
@ -240,10 +239,9 @@ class ImageIO extends Extension
try {
Media::update_image_media_properties($image->hash, strtolower($image->ext));
} catch(MediaException $e) {
log_warning("add_image","Error while running update_image_media_properties: ".$e->getMessage());
} catch (MediaException $e) {
log_warning("add_image", "Error while running update_image_media_properties: ".$e->getMessage());
}
}
// }}} end add
@ -322,7 +320,7 @@ class ImageIO extends Extension
$duplicate = Image::by_hash($image->hash);
if(!is_null($duplicate) && $duplicate->id!=$id) {
if (!is_null($duplicate) && $duplicate->id!=$id) {
$error = "Image <a href='" . make_link("post/view/{$duplicate->id}") . "'>{$duplicate->id}</a> " .
"already has hash {$image->hash}:<p>" . $this->theme->build_thumb_html($duplicate);
throw new ImageReplaceException($error);
@ -361,8 +359,8 @@ class ImageIO extends Extension
try {
Media::update_image_media_properties($image->hash, $image->ext);
} catch(MediaException $e) {
log_warning("image_replace","Error while running update_image_media_properties: ".$e->getMessage());
} catch (MediaException $e) {
log_warning("image_replace", "Error while running update_image_media_properties: ".$e->getMessage());
}
/* Generate new thumbnail */

View file

@ -97,7 +97,7 @@ class ImageBan extends Extension
public function onPageSubNavBuilding(PageSubNavBuildingEvent $event)
{
global $user;
if($event->parent==="system") {
if ($event->parent==="system") {
if ($user->can(Permissions::BAN_IMAGE)) {
$event->add_nav_link("image_bans", new Link('image_hash_ban/list/1'), "Image Bans", NavLink::is_active(["image_hash_ban"]));
}

View file

@ -108,10 +108,13 @@ class Index extends Extension
if (SPEED_HAX) {
if (!$user->can("big_search")) {
$fast_page_limit = 500;
if ($total_pages > $fast_page_limit) $total_pages = $fast_page_limit;
if ($total_pages > $fast_page_limit) {
$total_pages = $fast_page_limit;
}
if ($page_number > $fast_page_limit) {
$this->theme->display_error(
404, "Search limit hit",
404,
"Search limit hit",
"Only $fast_page_limit pages of results are searchable - " .
"if you want to find older results, use more specific search terms"
);
@ -180,19 +183,19 @@ class Index extends Extension
public function onPageNavBuilding(PageNavBuildingEvent $event)
{
$event->add_nav_link("posts", new Link('post/list'), "Posts", NavLink::is_active(["post","view"]),20);
$event->add_nav_link("posts", new Link('post/list'), "Posts", NavLink::is_active(["post","view"]), 20);
}
public function onPageSubNavBuilding(PageSubNavBuildingEvent $event)
{
if($event->parent=="posts") {
if ($event->parent=="posts") {
$event->add_nav_link("posts_all", new Link('post/list'), "All");
}
}
public function onHelpPageBuilding(HelpPageBuildingEvent $event)
{
if($event->key===HelpPages::SEARCH) {
if ($event->key===HelpPages::SEARCH) {
$block = new Block();
$block->header = "General";
$block->body = $this->theme->get_help_html();

View file

@ -339,6 +339,5 @@ and of course start organising your images :-)
</ul>
</p>
';
}
}

View file

@ -96,7 +96,7 @@ class IPBan extends Extension
public function onPageSubNavBuilding(PageSubNavBuildingEvent $event)
{
global $user;
if($event->parent==="system") {
if ($event->parent==="system") {
if ($user->can(Permissions::BAN_IP)) {
$event->add_nav_link("ip_bans", new Link('ip_ban/list'), "IP Bans", NavLink::is_active(["ip_ban"]));
}

View file

@ -116,7 +116,7 @@ class LogDatabase extends Extension
public function onPageSubNavBuilding(PageSubNavBuildingEvent $event)
{
global $user;
if($event->parent==="system") {
if ($event->parent==="system") {
if ($user->can(Permissions::VIEW_EVENTLOG)) {
$event->add_nav_link("event_log", new Link('log/view'), "Event Log");
}

View file

@ -11,7 +11,6 @@ abstract class MediaConfig
const CONVERT_PATH = "media_convert_path";
const VERSION = "ext_media_version";
const MEM_LIMIT = 'media_mem_limit';
}
abstract class MediaEngine
@ -98,14 +97,19 @@ class MediaResizeEvent extends Event
public $ignore_aspect_ratio;
public $allow_upscale;
public function __construct(String $engine, string $input_path, string $input_type, string $output_path,
int $target_width, int $target_height,
bool $ignore_aspect_ratio = false,
string $target_format = null,
int $target_quality = 80,
bool $minimize = false,
bool $allow_upscale = true)
{
public function __construct(
String $engine,
string $input_path,
string $input_type,
string $output_path,
int $target_width,
int $target_height,
bool $ignore_aspect_ratio = false,
string $target_format = null,
int $target_quality = 80,
bool $minimize = false,
bool $allow_upscale = true
) {
assert(in_array($engine, MediaEngine::ALL));
$this->engine = $engine;
$this->input_path = $input_path;
@ -137,7 +141,6 @@ class MediaCheckPropertiesEvent extends Event
$this->file_name = $file_name;
$this->ext = $ext;
}
}
@ -186,7 +189,7 @@ class Media extends Extension
[0x52, 0x49, 0x46, 0x46, null, null, null, null, 0x57, 0x45, 0x42, 0x50, 0x56, 0x50, 0x38, 0x4C];
static function imagick_available(): bool
public static function imagick_available(): bool
{
return extension_loaded("imagick");
}
@ -286,7 +289,6 @@ class Media extends Extension
$sb->end_table();
$event->panel->add_block($sb);
}
public function onAdminBuilding(AdminBuildingEvent $event)
@ -368,7 +370,8 @@ class Media extends Extension
$event->target_format,
$event->ignore_aspect_ratio,
$event->target_quality,
$event->allow_upscale);
$event->allow_upscale
);
break;
case MediaEngine::IMAGICK:
@ -384,7 +387,8 @@ class Media extends Extension
$event->ignore_aspect_ratio,
$event->target_quality,
$event->minimize,
$event->allow_upscale);
$event->allow_upscale
);
//}
break;
default:
@ -414,7 +418,7 @@ class Media extends Extension
public function onHelpPageBuilding(HelpPageBuildingEvent $event)
{
if($event->key===HelpPages::SEARCH) {
if ($event->key===HelpPages::SEARCH) {
$block = new Block();
$block->header = "Media";
$block->body = $this->theme->get_help_html();
@ -473,7 +477,8 @@ class Media extends Extension
"video" => $database->scoresql_value_prepare($mcpe->video),
"audio" => $database->scoresql_value_prepare($mcpe->audio),
"length" => $mcpe->length
]);
]
);
}
public function get_images(String $ext = null)
@ -729,11 +734,12 @@ class Media extends Extension
// }
// }
public static function is_lossless(string $filename, string $format) {
if(in_array($format, self::LOSSLESS_FORMATS)) {
public static function is_lossless(string $filename, string $format)
{
if (in_array($format, self::LOSSLESS_FORMATS)) {
return true;
}
switch($format) {
switch ($format) {
case "webp":
return self::is_lossless_webp($filename);
break;
@ -752,8 +758,7 @@ class Media extends Extension
int $output_quality = 80,
bool $minimize = false,
bool $allow_upscale = true
): void
{
): void {
global $config;
$convert = $config->get_string(MediaConfig::CONVERT_PATH);
@ -766,7 +771,7 @@ class Media extends Extension
$output_type = $input_type;
}
if($output_type=="webp" && self::is_lossless($input_path, $input_type)) {
if ($output_type=="webp" && self::is_lossless($input_path, $input_type)) {
$output_type = self::WEBP_LOSSLESS;
}
@ -840,8 +845,7 @@ class Media extends Extension
bool $ignore_aspect_ratio = false,
int $output_quality = 80,
bool $allow_upscale = true
)
{
) {
$width = $info[0];
$height = $info[1];
@ -942,16 +946,16 @@ class Media extends Extension
// Actually resize the image.
if (imagecopyresampled(
$image_resized,
$image,
0,
0,
0,
0,
$new_width,
$new_height,
$width,
$height
$image_resized,
$image,
0,
0,
0,
0,
$new_width,
$new_height,
$width,
$height
) === false) {
throw new MediaException("Unable to copy resized image data to new image");
}
@ -1040,7 +1044,6 @@ class Media extends Extension
} else {
throw new MediaException("Unable to open file for byte check: $file_name");
}
}
public static function is_animated_webp(String $image_filename): bool
@ -1084,7 +1087,7 @@ class Media extends Extension
* @param $format
* @return string|null The format name that the media extension will recognize.
*/
static public function normalize_format(string $format, ?bool $lossless = null): ?string
public static function normalize_format(string $format, ?bool $lossless = null): ?string
{
if ($format == "webp") {
if ($lossless === true) {
@ -1107,7 +1110,7 @@ class Media extends Extension
* @param string $filename
* @return array [width, height]
*/
static public function video_size(string $filename): array
public static function video_size(string $filename): array
{
global $config;
$ffmpeg = $config->get_string(MediaConfig::FFMPEG_PATH);
@ -1132,5 +1135,4 @@ class Media extends Extension
log_debug('Media', "Getting video size with `$cmd`, returns $output -- $size[0], $size[1]");
return $size;
}
}

View file

@ -42,6 +42,5 @@ class MediaTheme extends Themelet
</div>
<p>These search terms depend on the items being scanned for media content. Automatic scanning was implemented in mid-2019, so items uploaded before, or items uploaded on a system without ffmpeg, will require additional scanning before this will work.</p>
';
}
}

View file

@ -55,7 +55,7 @@ class NotATag extends Extension
public function onPageSubNavBuilding(PageSubNavBuildingEvent $event)
{
global $user;
if($event->parent==="tags") {
if ($event->parent==="tags") {
if ($user->can(Permissions::BAN_IMAGE)) {
$event->add_nav_link("untags", new Link('untag/list/1'), "UnTags");
}

View file

@ -211,7 +211,7 @@ class Notes extends Extension
public function onHelpPageBuilding(HelpPageBuildingEvent $event)
{
if($event->key===HelpPages::SEARCH) {
if ($event->key===HelpPages::SEARCH) {
$block = new Block();
$block->header = "Notes";
$block->body = $this->theme->get_help_html();

View file

@ -269,7 +269,5 @@ class NotesTheme extends Themelet
<p>Returns images with note(s) by user 123.</p>
</div>
';
}
}

View file

@ -220,7 +220,7 @@ class NumericScore extends Extension
public function onHelpPageBuilding(HelpPageBuildingEvent $event)
{
if($event->key===HelpPages::SEARCH) {
if ($event->key===HelpPages::SEARCH) {
$block = new Block();
$block->header = "Numeric Score";
$block->body = $this->theme->get_help_html();
@ -296,11 +296,10 @@ class NumericScore extends Extension
public function onPageSubNavBuilding(PageSubNavBuildingEvent $event)
{
if($event->parent=="posts") {
if ($event->parent=="posts") {
$event->add_nav_link("numeric_score_day", new Link('popular_by_day'), "Popular by Day");
$event->add_nav_link("numeric_score_month", new Link('popular_by_month'), "Popular by Month");
$event->add_nav_link("numeric_score_year", new Link('popular_by_year'), "Popular by Year");
}
}

View file

@ -132,6 +132,5 @@ class NumericScoreTheme extends Themelet
<p>Sorts the search results by score, ascending.</p>
</div>
';
}
}

View file

@ -86,7 +86,7 @@ class PrivMsg extends Extension
public function onPageSubNavBuilding(PageSubNavBuildingEvent $event)
{
global $user;
if($event->parent==="user") {
if ($event->parent==="user") {
if (!$user->is_anonymous()) {
$count = $this->count_pms($user);
$h_count = $count > 0 ? " <span class='unread'>($count)</span>" : "";

View file

@ -37,7 +37,6 @@ class PoolAddPostsEvent extends Event
$this->pool_id = $pool_id;
$this->posts = $posts;
}
}
class PoolCreationEvent extends Event
@ -58,7 +57,6 @@ class PoolCreationEvent extends Event
$this->public = $public;
$this->description = $description;
}
}
class Pools extends Extension
@ -143,7 +141,7 @@ class Pools extends Extension
public function onPageSubNavBuilding(PageSubNavBuildingEvent $event)
{
if($event->parent=="pool") {
if ($event->parent=="pool") {
$event->add_nav_link("pool_list", new Link('pool/list'), "List");
$event->add_nav_link("pool_new", new Link('pool/new'), "Create");
$event->add_nav_link("pool_updated", new Link('pool/updated'), "Changes");
@ -189,7 +187,8 @@ class Pools extends Extension
$title,
$user,
$_POST["public"] === "Y",
$_POST["description"]);
$_POST["description"]
);
send_event($event);
$page->set_mode(PageMode::REDIRECT);
@ -365,7 +364,7 @@ class Pools extends Extension
public function onHelpPageBuilding(HelpPageBuildingEvent $event)
{
if($event->key===HelpPages::SEARCH) {
if ($event->key===HelpPages::SEARCH) {
$block = new Block();
$block->header = "Pools";
$block->body = $this->theme->get_help_html();
@ -434,8 +433,8 @@ class Pools extends Extension
$pools = $database->get_all("SELECT * FROM pools ORDER BY title ");
$event->add_action("bulk_pool_add_existing", "Add To (P)ool", "p","", $this->theme->get_bulk_pool_selector($pools));
$event->add_action("bulk_pool_add_new", "Create Pool", "","", $this->theme->get_bulk_pool_input($event->search_terms));
$event->add_action("bulk_pool_add_existing", "Add To (P)ool", "p", "", $this->theme->get_bulk_pool_selector($pools));
$event->add_action("bulk_pool_add_new", "Create Pool", "", "", $this->theme->get_bulk_pool_input($event->search_terms));
}
public function onBulkAction(BulkActionEvent $event)
@ -452,7 +451,8 @@ class Pools extends Extension
if ($this->have_permission($user, $pool)) {
send_event(
new PoolAddPostsEvent($pool_id,iterator_map_to_array("image_to_id", $event->items)));
new PoolAddPostsEvent($pool_id, iterator_map_to_array("image_to_id", $event->items))
);
}
break;
case "bulk_pool_add_new":
@ -800,7 +800,7 @@ class Pools extends Extension
if (Extension::is_enabled(RatingsInfo::KEY)) {
$query .= "AND i.rating IN (".Ratings::privs_to_sql(Ratings::get_user_privs($user)).")";
}
if(Extension::is_enabled(TrashInfo::KEY)) {
if (Extension::is_enabled(TrashInfo::KEY)) {
$query .= $database->scoreql_to_sql(" AND trash = SCORE_BOOL_N ");
}
@ -814,10 +814,10 @@ class Pools extends Extension
);
$totalPages = ceil($database->get_one(
"
"
SELECT COUNT(*) FROM pool_images p
$query",
["pid" => $poolID]
["pid" => $poolID]
) / $imagesPerPage);

View file

@ -401,7 +401,7 @@ class PoolsTheme extends Themelet
public function get_bulk_pool_input(array $search_terms)
{
return "<input type='text' name='bulk_pool_new' placeholder='New pool' required='required' value='".(implode(" ",$search_terms))."' />";
return "<input type='text' name='bulk_pool_new' placeholder='New pool' required='required' value='".(implode(" ", $search_terms))."' />";
}
@ -429,6 +429,5 @@ class PoolsTheme extends Themelet
<p>Returns images in the "swimming pool" pool. Note that the underscore becomes a space</p>
</div>
';
}
}

View file

@ -6,4 +6,4 @@ abstract class PostTitlesConfig
public const VERSION = "ext_post_titles_version";
public const DEFAULT_TO_FILENAME = "post_titles_default_to_filename";
public const SHOW_IN_WINDOW_TITLE = "post_titles_show_in_window_title";
}
}

View file

@ -10,4 +10,4 @@ class PostTitleSetEvent extends Event
$this->image = $image;
$this->title = $title;
}
}
}

View file

@ -36,7 +36,7 @@ class PostTitles extends Extension
{
global $config;
if($config->get_bool(PostTitlesConfig::SHOW_IN_WINDOW_TITLE)) {
if ($config->get_bool(PostTitlesConfig::SHOW_IN_WINDOW_TITLE)) {
$event->set_title(self::get_title($event->get_image()));
}
}
@ -67,8 +67,8 @@ class PostTitles extends Extension
{
$sb = new SetupBlock("Post Titles");
$sb->start_table();
$sb->add_bool_option(PostTitlesConfig::DEFAULT_TO_FILENAME,"Default to filename", true);
$sb->add_bool_option(PostTitlesConfig::SHOW_IN_WINDOW_TITLE,"Show in window title", true);
$sb->add_bool_option(PostTitlesConfig::DEFAULT_TO_FILENAME, "Default to filename", true);
$sb->add_bool_option(PostTitlesConfig::SHOW_IN_WINDOW_TITLE, "Show in window title", true);
$sb->end_table();
$event->panel->add_block($sb);
@ -88,9 +88,9 @@ class PostTitles extends Extension
global $config;
$title = $image->title??"";
if(empty($title) && $config->get_bool(PostTitlesConfig::DEFAULT_TO_FILENAME)) {
if (empty($title) && $config->get_bool(PostTitlesConfig::DEFAULT_TO_FILENAME)) {
$info = pathinfo($image->filename);
if(array_key_exists("extension",$info)) {
if (array_key_exists("extension", $info)) {
$title = basename($image->filename, '.' . $info['extension']);
} else {
$title = $image->filename;

View file

@ -3,8 +3,6 @@ class PostTitlesTheme extends Themelet
{
public function get_title_set_html(string $title, bool $can_set): string
{
$html = "
<tr>
<th>Title</th>

View file

@ -58,7 +58,7 @@ class RandomImage extends Extension
public function onPageSubNavBuilding(PageSubNavBuildingEvent $event)
{
if($event->parent=="posts") {
if ($event->parent=="posts") {
$event->add_nav_link("posts_random", new Link('random_image/view'), "Random Image");
}
}

View file

@ -67,7 +67,7 @@ class RandomList extends Extension
public function onPageSubNavBuilding(PageSubNavBuildingEvent $event)
{
if($event->parent=="posts") {
if ($event->parent=="posts") {
$event->add_nav_link("posts_random", new Link('random'), "Shuffle");
}
}

View file

@ -109,7 +109,7 @@ class Ratings extends Extension
{
global $user;
if($event->key===HelpPages::SEARCH) {
if ($event->key===HelpPages::SEARCH) {
$block = new Block();
$block->header = "Ratings";
@ -164,7 +164,7 @@ class Ratings extends Extension
global $user;
if ($user->can(Permissions::BULK_EDIT_IMAGE_RATING)) {
$event->add_action("bulk_rate","Set (R)ating", "r","",$this->theme->get_selection_rater_html("u","bulk_rating"));
$event->add_action("bulk_rate", "Set (R)ating", "r", "", $this->theme->get_selection_rater_html("u", "bulk_rating"));
}
}

View file

@ -57,7 +57,7 @@ class RegenThumb extends Extension
global $user;
if ($user->can(Permissions::DELETE_IMAGE)) {
$event->add_action("bulk_regen", "Regen Thumbnails", "","", $this->theme->bulk_html());
$event->add_action("bulk_regen", "Regen Thumbnails", "", "", $this->theme->bulk_html());
}
}

View file

@ -6,7 +6,7 @@ class ImageRelationshipSetEvent extends Event
public $parent_id;
public function __construct(int $child_id, int $parent_id)
public function __construct(int $child_id, int $parent_id)
{
$this->child_id = $child_id;
$this->parent_id = $parent_id;
@ -44,7 +44,7 @@ class Relationships extends Extension
{
if (isset($_POST['tag_edit__tags']) ? !preg_match('/parent[=|:]/', $_POST["tag_edit__tags"]) : true) { //Ignore tag_edit__parent if tags contain parent metatag
if (isset($_POST["tag_edit__parent"]) ? ctype_digit($_POST["tag_edit__parent"]) : false) {
send_event(new ImageRelationshipSetEvent($event->image->id,(int) $_POST["tag_edit__parent"]));
send_event(new ImageRelationshipSetEvent($event->image->id, (int) $_POST["tag_edit__parent"]));
} else {
$this->remove_parent($event->image->id);
}
@ -76,7 +76,7 @@ class Relationships extends Extension
public function onHelpPageBuilding(HelpPageBuildingEvent $event)
{
if($event->key===HelpPages::SEARCH) {
if ($event->key===HelpPages::SEARCH) {
$block = new Block();
$block->header = "Relationships";
$block->body = $this->theme->get_help_html();
@ -132,15 +132,14 @@ class Relationships extends Extension
$old_parent = $database->get_one("SELECT parent_id FROM images WHERE id = :cid", ["cid"=>$event->child_id]);
if($old_parent!=$event->parent_id) {
if ($old_parent!=$event->parent_id) {
if ($database->get_row("SELECT 1 FROM images WHERE id = :pid", ["pid" => $event->parent_id])) {
$result = $database->execute("UPDATE images SET parent_id = :pid WHERE id = :cid", ["pid" => $event->parent_id, "cid" => $event->child_id]);
if ($result->rowCount() > 0) {
$database->execute("UPDATE images SET has_children = TRUE WHERE id = :pid", ["pid" => $event->parent_id]);
if($old_parent!=null) {
if ($old_parent!=null) {
$this->set_has_children($old_parent);
}
}
@ -155,7 +154,7 @@ class Relationships extends Extension
$results = $database->get_all_iterable("SELECT * FROM images WHERE parent_id = :pid ", ["pid"=>$image->id]);
$output = [];
foreach ($results as $result) {
if($result["id"]==$omit) {
if ($result["id"]==$omit) {
continue;
}
$output[] = new Image($result);
@ -180,13 +179,11 @@ class Relationships extends Extension
// Doesn't work on pgsql
// $database->execute("UPDATE images SET has_children = (SELECT * FROM (SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END FROM images WHERE parent_id = :pid) AS sub)
// WHERE id = :pid", ["pid"=>$parentID]);
// WHERE id = :pid", ["pid"=>$parentID]);
$database->execute(
"UPDATE images SET has_children = EXISTS (SELECT 1 FROM images WHERE parent_id = :pid) WHERE id = :pid",
["pid"=>$parent_id]);
["pid"=>$parent_id]
);
}
}

View file

@ -34,7 +34,7 @@ class RelationshipTest extends ShimmiePHPUnitTestCase
$image_3 = Image::by_id($image_id_3);
$this->assertNull($image_1->parent_id);
$this->assertEquals($image_id_1,$image_2->parent_id);
$this->assertEquals($image_id_1, $image_2->parent_id);
$this->assertNull($image_3->parent_id);
$this->assertTrue($image_1->has_children);
$this->assertFalse($image_2->has_children);
@ -56,7 +56,7 @@ class RelationshipTest extends ShimmiePHPUnitTestCase
$image_3 = Image::by_id($image_id_3);
$this->assertNull($image_1->parent_id);
$this->assertEquals($image_id_3,$image_2->parent_id);
$this->assertEquals($image_id_3, $image_2->parent_id);
$this->assertNull($image_3->parent_id);
$this->assertFalse($image_2->has_children);
$this->assertFalse($image_2->has_children);
@ -129,7 +129,7 @@ class RelationshipTest extends ShimmiePHPUnitTestCase
$image_3 = Image::by_id($image_id_3);
$this->assertNull($image_1->parent_id);
$this->assertEquals($image_id_1,$image_2->parent_id);
$this->assertEquals($image_id_1, $image_2->parent_id);
$this->assertNull($image_3->parent_id);
$this->assertTrue($image_1->has_children);
$this->assertFalse($image_2->has_children);
@ -151,8 +151,8 @@ class RelationshipTest extends ShimmiePHPUnitTestCase
$image_2 = Image::by_id($image_id_2);
$image_3 = Image::by_id($image_id_3);
$this->assertEquals($image_id_3,$image_1->parent_id);
$this->assertEquals($image_id_1,$image_2->parent_id);
$this->assertEquals($image_id_3, $image_1->parent_id);
$this->assertEquals($image_id_1, $image_2->parent_id);
$this->assertNull($image_3->parent_id);
$this->assertTrue($image_1->has_children);
$this->assertFalse($image_2->has_children);
@ -175,7 +175,7 @@ class RelationshipTest extends ShimmiePHPUnitTestCase
$image_3 = Image::by_id($image_id_3);
$this->assertNull($image_1->parent_id);
$this->assertEquals($image_id_1,$image_2->parent_id);
$this->assertEquals($image_id_1, $image_2->parent_id);
$this->assertNull($image_3->parent_id);
$this->assertTrue($image_1->has_children);
$this->assertFalse($image_2->has_children);

View file

@ -72,6 +72,5 @@ class RelationshipsTheme extends Themelet
<p>Returns images that have no children.</p>
</div>
';
}
}

View file

@ -127,7 +127,7 @@ class ReportImage extends Extension
public function onPageSubNavBuilding(PageSubNavBuildingEvent $event)
{
global $user;
if($event->parent==="system") {
if ($event->parent==="system") {
if ($user->can(Permissions::VIEW_IMAGE_REPORT)) {
$count = $this->count_reported_images();
$h_count = $count > 0 ? " ($count)" : "";

View file

@ -47,7 +47,7 @@ class ResizeImage extends Extension
{
$sb = new SetupBlock("Image Resize");
$sb->start_table();
$sb->add_choice_option(ResizeConfig::ENGINE, Media::IMAGE_MEDIA_ENGINES, "Engine: ", true);
$sb->add_choice_option(ResizeConfig::ENGINE, Media::IMAGE_MEDIA_ENGINES, "Engine: ", true);
$sb->add_bool_option(ResizeConfig::ENABLED, "Allow resizing images: ", true);
$sb->add_bool_option(ResizeConfig::UPLOAD, "Resize on upload: ", true);
$sb->end_table();
@ -180,7 +180,7 @@ class ResizeImage extends Extension
$engine = $config->get_string(ResizeConfig::ENGINE);
if(!$this->can_resize_format($image_obj->ext, $image_obj->lossless)) {
if (!$this->can_resize_format($image_obj->ext, $image_obj->lossless)) {
throw new ImageResizeException("Engine $engine cannot resize selected image");
}

View file

@ -19,5 +19,4 @@ class RSS_CommentsInfo extends ExtensionInfo
public $license = self::LICENSE_GPLV2;
public $description = "Self explanatory";
public $db_support = [DatabaseDriver::MYSQL, DatabaseDriver::SQLITE]; // pgsql has no UNIX_TIMESTAMP
}

View file

@ -73,9 +73,8 @@ EOD;
public function onPageSubNavBuilding(PageSubNavBuildingEvent $event)
{
if($event->parent=="comment") {
if ($event->parent=="comment") {
$event->add_nav_link("comment_rss", new Link('rss/comments'), "Feed");
}
}
}

View file

@ -113,7 +113,7 @@ class RSS_Images extends Extension
public function onPageSubNavBuilding(PageSubNavBuildingEvent $event)
{
if($event->parent=="posts") {
if ($event->parent=="posts") {
$event->add_nav_link("posts_rss", new Link('rss/images'), "Feed");
}
}

View file

@ -9,7 +9,6 @@ if ( // kill these glitched requests immediately
class Rule34 extends Extension
{
public function onImageDeletion(ImageDeletionEvent $event)
{
global $database;

View file

@ -9,4 +9,4 @@ class SetupConfig
public const THEME = "theme";
public const WORD_WRAP = "word_wrap";
public const COMMENT_CAPTCHA = "comment_captcha";
}
}

View file

@ -136,20 +136,33 @@ class SetupBlock extends Block
private function format_option(string $name, $html, ?string $label, bool $table_row) {
private function format_option(string $name, $html, ?string $label, bool $table_row)
{
global $config;
if($table_row) $this->start_table_row();
if($table_row) $this->start_table_header_cell();
if ($table_row) {
$this->start_table_row();
}
if ($table_row) {
$this->start_table_header_cell();
}
if (!is_null($label)) {
$this->body .= "<label for='{$name}'>{$label}</label>";
}
if($table_row) $this->end_table_header_cell();
if ($table_row) {
$this->end_table_header_cell();
}
if($table_row) $this->start_table_cell();
if ($table_row) {
$this->start_table_cell();
}
$this->body .= $html;
if($table_row) $this->end_table_cell();
if($table_row) $this->end_table_row();
if ($table_row) {
$this->end_table_cell();
}
if ($table_row) {
$this->end_table_row();
}
}
public function add_text_option(string $name, string $label=null, bool $table_row = false)
@ -181,7 +194,7 @@ class SetupBlock extends Block
$checked = $config->get_bool($name) ? " checked" : "";
$html = "";
if(!$table_row&&!is_null($label)) {
if (!$table_row&&!is_null($label)) {
$html .= "<label for='{$name}'>{$label}</label>";
}
@ -210,7 +223,6 @@ class SetupBlock extends Block
$html .= "<input type='hidden' name='_type_$name' value='int'>\n";
$this->format_option($name, $html, $label, $table_row);
}
public function add_shorthand_int_option(string $name, string $label=null, bool $table_row = false)
@ -408,7 +420,7 @@ class Setup extends Extension
public function onPageSubNavBuilding(PageSubNavBuildingEvent $event)
{
global $user;
if($event->parent==="system") {
if ($event->parent==="system") {
if ($user->can(Permissions::CHANGE_SETTING)) {
$event->add_nav_link("setup", new Link('setup'), "Board Config", null, 0);
}

View file

@ -80,7 +80,7 @@ class Source_History extends Extension
public function onPageSubNavBuilding(PageSubNavBuildingEvent $event)
{
global $user;
if($event->parent==="system") {
if ($event->parent==="system") {
if ($user->can(Permissions::BULK_EDIT_IMAGE_TAG)) {
$event->add_nav_link("source_history", new Link('source_history/all/1'), "Source Changes", NavLink::is_active(["source_history"]));
}

View file

@ -20,6 +20,4 @@ class System extends Extension
{
$event->add_nav_link("system", new Link('system'), "System");
}
}

View file

@ -5,4 +5,4 @@ abstract class TagCategoriesConfig
public const VERSION = "ext_tag_categories_version";
public const SPLIT_ON_VIEW = "tag_categories_split_on_view";
}
}

View file

@ -70,7 +70,8 @@ class TagCategories extends Extension
$count = $matches[3];
$types = $database->get_col(
$database->scoreql_to_sql('SELECT SCORE_STRNORM(category) FROM image_tag_categories'));
$database->scoreql_to_sql('SELECT SCORE_STRNORM(category) FROM image_tag_categories')
);
if (in_array($type, $types)) {
$event->add_querylet(
new Querylet($database->scoreql_to_sql("EXISTS (
@ -88,7 +89,7 @@ class TagCategories extends Extension
public function onHelpPageBuilding(HelpPageBuildingEvent $event)
{
if($event->key===HelpPages::SEARCH) {
if ($event->key===HelpPages::SEARCH) {
$block = new Block();
$block->header = "Tag Categories";
$block->body = $this->theme->get_help_html();

View file

@ -113,6 +113,5 @@ class TagCategoriesTheme extends Themelet
<p>Can use &lt;, &lt;=, &gt;, &gt;=, or =.</p>
<p>Category name is not case sensitive, category must exist for search to work.</p>
';
}
}

View file

@ -218,7 +218,7 @@ class TagEdit extends Extension
public function onPageSubNavBuilding(PageSubNavBuildingEvent $event)
{
if($event->parent=="tags") {
if ($event->parent=="tags") {
$event->add_nav_link("tags_help", new Link('ext_doc/tag_edit'), "Help");
}
}

View file

@ -80,7 +80,7 @@ class Tag_History extends Extension
public function onPageSubNavBuilding(PageSubNavBuildingEvent $event)
{
global $user;
if($event->parent==="system") {
if ($event->parent==="system") {
if ($user->can(Permissions::BULK_EDIT_IMAGE_TAG)) {
$event->add_nav_link("tag_history", new Link('tag_history/all/1'), "Tag Changes", NavLink::is_active(["tag_history"]));
}

View file

@ -5,7 +5,7 @@ class TagListConfig
{
public const LENGTH = "tag_list_length";
public const POPULAR_TAG_LIST_LENGTH = "popular_tag_list_length";
public CONSt TAGS_MIN = "tags_min";
public const TAGS_MIN = "tags_min";
public const INFO_LINK = "info_link";
public const IMAGE_TYPE = "tag_list_image_type";
public const RELATED_SORT = "tag_list_related_sort";
@ -28,4 +28,4 @@ class TagListConfig
"Tag Count" => TagListConfig::SORT_TAG_COUNT,
"Alphabetical" => TagListConfig::SORT_ALPHABETICAL
];
}
}

View file

@ -97,7 +97,7 @@ class TagList extends Extension
public function onPageSubNavBuilding(PageSubNavBuildingEvent $event)
{
if($event->parent=="tags") {
if ($event->parent=="tags") {
$event->add_nav_link("tags_map", new Link('tags/map'), "Map");
$event->add_nav_link("tags_alphabetic", new Link('tags/alphabetic'), "Alphabetic");
$event->add_nav_link("tags_popularity", new Link('tags/popularity'), "Popularity");
@ -137,15 +137,24 @@ class TagList extends Extension
$sb->start_table();
$sb->add_text_option(TagListConfig::INFO_LINK, "Tag info link", true);
$sb->add_text_option(TagListConfig::OMIT_TAGS, "Omit tags", true);
$sb->add_choice_option(TagListConfig::IMAGE_TYPE,
$sb->add_choice_option(
TagListConfig::IMAGE_TYPE,
TagListConfig::TYPE_CHOICES,
"Image tag list", true);
$sb->add_choice_option(TagListConfig::RELATED_SORT,
"Image tag list",
true
);
$sb->add_choice_option(
TagListConfig::RELATED_SORT,
TagListConfig::SORT_CHOICES,
"Sort related list by", true);
$sb->add_choice_option(TagListConfig::POPULAR_SORT,
"Sort related list by",
true
);
$sb->add_choice_option(
TagListConfig::POPULAR_SORT,
TagListConfig::SORT_CHOICES,
"Sort popular list by", true);
"Sort popular list by",
true
);
$sb->add_bool_option("tag_list_numbers", "Show tag counts", true);
$sb->end_table();
$event->panel->add_block($sb);
@ -179,7 +188,7 @@ class TagList extends Extension
$results = $database->cache->get("tag_list_omitted_tags:".$tags_config);
if($results==null) {
if ($results==null) {
$results = [];
$tags = explode(" ", $tags_config);
@ -200,13 +209,11 @@ class TagList extends Extension
} else {
$where[] = " tag LIKE :$arg ";
}
}
$results = $database->get_col("SELECT id FROM tags WHERE " . implode(" OR ", $where), $args);
$database->cache->set("tag_list_omitted_tags:" . $tags_config, $results, 600);
}
return $results;
}
@ -454,11 +461,11 @@ class TagList extends Extension
global $database, $config;
$omitted_tags = self::get_omitted_tags();
$starting_tags = $database->get_col("SELECT tag_id FROM image_tags WHERE image_id = :image_id",["image_id" => $image->id]);
$starting_tags = $database->get_col("SELECT tag_id FROM image_tags WHERE image_id = :image_id", ["image_id" => $image->id]);
$starting_tags = array_diff($starting_tags,$omitted_tags);
$starting_tags = array_diff($starting_tags, $omitted_tags);
if(count($starting_tags) === 0) {
if (count($starting_tags) === 0) {
// No valid starting tags, so can't look anything up
return;
}
@ -467,9 +474,9 @@ class TagList extends Extension
SELECT it2.tag_id
FROM image_tags AS it1
INNER JOIN image_tags AS it2 ON it1.image_id=it2.image_id
AND it2.tag_id NOT IN (".implode(",",array_merge($omitted_tags,$starting_tags)).")
AND it2.tag_id NOT IN (".implode(",", array_merge($omitted_tags, $starting_tags)).")
WHERE
it1.tag_id IN (".implode(",",$starting_tags).")
it1.tag_id IN (".implode(",", $starting_tags).")
GROUP BY it2.tag_id
) A ON A.tag_id = tags.id
ORDER BY count DESC
@ -530,7 +537,7 @@ class TagList extends Extension
if (empty($tags)) {
$omitted_tags = self::get_omitted_tags();
if(empty($omitted_tags)) {
if (empty($omitted_tags)) {
$query = "
SELECT tag, count
FROM tags
@ -538,7 +545,6 @@ class TagList extends Extension
ORDER BY count DESC
LIMIT :popular_tag_list_length
";
} else {
$query = "
SELECT tag, count
@ -618,9 +624,9 @@ class TagList extends Extension
$omitted_tags = self::get_omitted_tags();
$starting_tags = array_diff($starting_tags,$omitted_tags);
$starting_tags = array_diff($starting_tags, $omitted_tags);
if(count($starting_tags) === 0) {
if (count($starting_tags) === 0) {
// No valid starting tags, so can't look anything up
return [];
}
@ -631,9 +637,9 @@ class TagList extends Extension
FROM image_tags AS it1 -- Got other images with the same tags
INNER JOIN image_tags AS it2 ON it1.image_id=it2.image_id
-- And filter out unwanted tags
AND it2.tag_id NOT IN (".implode(",",array_merge($omitted_tags,$starting_tags)).")
AND it2.tag_id NOT IN (".implode(",", array_merge($omitted_tags, $starting_tags)).")
WHERE
it1.tag_id IN (".implode(",",$starting_tags).")
it1.tag_id IN (".implode(",", $starting_tags).")
GROUP BY it2.tag_id) A ON A.tag_id = t.id
ORDER BY A.calc_count
DESC LIMIT :limit
@ -643,14 +649,12 @@ class TagList extends Extension
$related_tags = $database->get_all($query, $args);
$database->cache->set("related_tags:$str_search", $related_tags, 60 * 60);
}
}
if ($related_tags === false) {
return [];
} else {
return $related_tags;
}
}

View file

@ -117,12 +117,12 @@ class TagListTheme extends Themelet
$page->add_block(new Block($category_display_name, $tag_categories_html[$category], "left", 9));
}
if ($main_html != null) {
if ($config->get_string(TagListConfig::IMAGE_TYPE)==TagListConfig::TYPE_TAGS) {
$page->add_block(new Block("Tags", $main_html, "left", 10));
} else {
$page->add_block(new Block("Related Tags", $main_html, "left", 10));
}
if ($main_html != null) {
if ($config->get_string(TagListConfig::IMAGE_TYPE)==TagListConfig::TYPE_TAGS) {
$page->add_block(new Block("Tags", $main_html, "left", 10));
} else {
$page->add_block(new Block("Related Tags", $main_html, "left", 10));
}
}
}

View file

@ -2,7 +2,6 @@
class Tips extends Extension
{
public function onInitExt(InitExtEvent $event)
{
global $config, $database;
@ -67,7 +66,7 @@ class Tips extends Extension
public function onPageSubNavBuilding(PageSubNavBuildingEvent $event)
{
global $user;
if($event->parent==="system") {
if ($event->parent==="system") {
if ($user->is_admin()) {
$event->add_nav_link("tips", new Link('tips/list'), "Tips Editor");
}

View file

@ -86,7 +86,7 @@ class TranscodeImage extends Extension
$sb->start_table();
$sb->add_bool_option(TranscodeConfig::ENABLED, "Allow transcoding images: ", true);
$sb->add_bool_option(TranscodeConfig::UPLOAD, "Transcode on upload: ", true);
$sb->add_choice_option(TranscodeConfig::ENGINE, Media::IMAGE_MEDIA_ENGINES, "Engine", true);
$sb->add_choice_option(TranscodeConfig::ENGINE, Media::IMAGE_MEDIA_ENGINES, "Engine", true);
foreach (self::INPUT_FORMATS as $display=>$format) {
if (in_array($format, MediaEngine::INPUT_SUPPORT[$engine])) {
$outputs = $this->get_supported_output_formats($engine, $format);
@ -169,7 +169,7 @@ class TranscodeImage extends Extension
$engine = $config->get_string(TranscodeConfig::ENGINE);
if ($user->is_admin()) {
$event->add_action(self::ACTION_BULK_TRANSCODE, "Transcode", null,"", $this->theme->get_transcode_picker_html($this->get_supported_output_formats($engine)));
$event->add_action(self::ACTION_BULK_TRANSCODE, "Transcode", null, "", $this->theme->get_transcode_picker_html($this->get_supported_output_formats($engine)));
}
}
@ -218,7 +218,7 @@ class TranscodeImage extends Extension
private function get_supported_output_formats($engine, ?String $omit_format = null, ?bool $lossless = null): array
{
if($omit_format!=null) {
if ($omit_format!=null) {
$omit_format = Media::normalize_format($omit_format, $lossless);
}
$output = [];
@ -229,7 +229,7 @@ class TranscodeImage extends Extension
$output[$key] = $value;
continue;
}
if(Media::is_output_supported($engine, $value)
if (Media::is_output_supported($engine, $value)
&&(empty($omit_format)||$omit_format!=$value)) {
$output[$key] = $value;
}

View file

@ -10,8 +10,13 @@ class TranscodeImageTheme extends Themelet
global $config;
$html = "
".make_form(make_link("transcode/{$image->id}"), 'POST', false, "",
"return transcodeSubmit()")."
".make_form(
make_link("transcode/{$image->id}"),
'POST',
false,
"",
"return transcodeSubmit()"
)."
<input type='hidden' name='image_id' value='{$image->id}'>
<input type='hidden' id='image_lossless' name='image_lossless' value='{$image->lossless}'>
".$this->get_transcode_picker_html($options)."

View file

@ -7,7 +7,6 @@ abstract class TrashConfig
class Trash extends Extension
{
public function get_priority(): int
{
// Needs to be early to intercept delete events
@ -50,7 +49,7 @@ class Trash extends Extension
{
global $user, $page;
if($event->image->trash===true && !$user->can(Permissions::VIEW_TRASH)) {
if ($event->image->trash===true && !$user->can(Permissions::VIEW_TRASH)) {
$page->set_mode(PageMode::REDIRECT);
$page->set_redirect(make_link("post/list"));
}
@ -58,7 +57,7 @@ class Trash extends Extension
public function onImageDeletion(ImageDeletionEvent $event)
{
if($event->force!==true && $event->image->trash!==true) {
if ($event->force!==true && $event->image->trash!==true) {
self::set_trash($event->image->id, true);
$event->stop_processing = true;
}
@ -78,7 +77,7 @@ class Trash extends Extension
if (preg_match(self::SEARCH_REGEXP, strtolower($event->term), $matches)) {
if($user->can(Permissions::VIEW_TRASH)) {
if ($user->can(Permissions::VIEW_TRASH)) {
$event->add_querylet(new Querylet($database->scoreql_to_sql("trash = SCORE_BOOL_Y ")));
}
}
@ -87,8 +86,8 @@ class Trash extends Extension
public function onHelpPageBuilding(HelpPageBuildingEvent $event)
{
global $user;
if($event->key===HelpPages::SEARCH) {
if($user->can(Permissions::VIEW_TRASH)) {
if ($event->key===HelpPages::SEARCH) {
if ($user->can(Permissions::VIEW_TRASH)) {
$block = new Block();
$block->header = "Trash";
$block->body = $this->theme->get_help_html();
@ -108,18 +107,19 @@ class Trash extends Extension
return true;
}
public static function set_trash($image_id, $trash) {
public static function set_trash($image_id, $trash)
{
global $database;
$database->execute("UPDATE images SET trash = :trash WHERE id = :id",
["trash"=>$database->scoresql_value_prepare($trash),"id"=>$image_id]);
$database->execute(
"UPDATE images SET trash = :trash WHERE id = :id",
["trash"=>$database->scoresql_value_prepare($trash),"id"=>$image_id]
);
}
public function onImageAdminBlockBuilding(ImageAdminBlockBuildingEvent $event)
{
global $config, $database, $user;
if($event->image->trash===true && $user->can(Permissions::VIEW_TRASH)) {
if ($event->image->trash===true && $user->can(Permissions::VIEW_TRASH)) {
$event->add_part($this->theme->get_image_admin_html($event->image->id));
}
}
@ -129,7 +129,7 @@ class Trash extends Extension
global $user;
if ($user->can(Permissions::VIEW_TRASH)&&in_array("in:trash", $event->search_terms)) {
$event->add_action("bulk_trash_restore","(U)ndelete", "u");
$event->add_action("bulk_trash_restore", "(U)ndelete", "u");
}
}
@ -163,7 +163,5 @@ class Trash extends Extension
$database->Execute("CREATE INDEX images_trash_idx ON images(trash)");
$config->set_int(TrashConfig::VERSION, 1);
}
}
}

View file

@ -2,7 +2,8 @@
class TrashTheme extends Themelet
{
function get_image_admin_html(int $image_id) {
public function get_image_admin_html(int $image_id)
{
$html = "
".make_form(make_link('trash_restore/'.$image_id), 'POST')."
<input type='hidden' name='image_id' value='$image_id'>
@ -10,7 +11,8 @@ class TrashTheme extends Themelet
</form>
";
return $html; }
return $html;
}
public function get_help_html()
@ -21,6 +23,5 @@ class TrashTheme extends Themelet
<p>Returns images that are in the trash.</p>
</div>
';
}
}

View file

@ -177,7 +177,7 @@ class Upgrade extends Extension
$database->execute("ALTER TABLE images ADD COLUMN length INTEGER NULL ");
log_info("upgrade", "Setting indexes for media columns");
switch($database->get_driver_name()) {
switch ($database->get_driver_name()) {
case DatabaseDriver::PGSQL:
case DatabaseDriver::SQLITE:
$database->execute('CREATE INDEX images_video_idx ON images(video) WHERE video IS NOT NULL');
@ -213,7 +213,6 @@ class Upgrade extends Extension
log_info("upgrade", "Database at version 17");
$config->set_bool("in_upgrade", false);
}
}
public function get_priority(): int

View file

@ -135,12 +135,12 @@ class Upload extends Extension
public function onPageNavBuilding(PageNavBuildingEvent $event)
{
$event->add_nav_link("upload",new Link('upload'), "Upload");
$event->add_nav_link("upload", new Link('upload'), "Upload");
}
public function onPageSubNavBuilding(PageSubNavBuildingEvent $event)
{
if($event->parent=="upload") {
if ($event->parent=="upload") {
if (class_exists("Wiki")) {
$event->add_nav_link("upload_guidelines", new Link('wiki/upload_guidelines'), "Guidelines");
}

View file

@ -270,7 +270,7 @@ class UserPage extends Extension
public function onPageSubNavBuilding(PageSubNavBuildingEvent $event)
{
global $user;
if($event->parent==="system") {
if ($event->parent==="system") {
if ($user->can(Permissions::EDIT_USER_CLASS)) {
$event->add_nav_link("user_admin", new Link('user_admin/list'), "User List", NavLink::is_active(["user_admin"]));
}
@ -317,7 +317,7 @@ class UserPage extends Extension
public function onHelpPageBuilding(HelpPageBuildingEvent $event)
{
if($event->key===HelpPages::SEARCH) {
if ($event->key===HelpPages::SEARCH) {
$block = new Block();
$block->header = "Users";
$block->body = $this->theme->get_help_html();

View file

@ -242,7 +242,6 @@ class UserPageTheme extends Themelet
$page->set_heading(html_escape($duser->name)."'s Page");
$page->add_block(new NavBlock());
$page->add_block(new Block("Stats", join("<br>", $stats), "main", 10));
}
public function build_options(User $duser, UserOptionsBuildingEvent $event)
@ -337,7 +336,6 @@ class UserPageTheme extends Themelet
foreach ($event->parts as $part) {
$html .= $part;
}
}
return $html;
}

View file

@ -26,7 +26,7 @@ class UserConfig extends Extension
{
global $config;
if ($config->get_int(self::VERSION,0)<1) {
if ($config->get_int(self::VERSION, 0)<1) {
$this->install();
}
}
@ -43,8 +43,7 @@ class UserConfig extends Extension
{
global $config, $database;
if ($config->get_int(self::VERSION,0) < 1) {
if ($config->get_int(self::VERSION, 0) < 1) {
log_info("upgrade", "Adding user config table");
$database->create_table("user_config", "

View file

@ -26,7 +26,8 @@ class DisplayingImageEvent extends Event
return $this->image;
}
public function set_title(String $title) {
public function set_title(String $title)
{
$this->title = $title;
}
}

View file

@ -22,4 +22,4 @@ class ImageAdminBlockBuildingEvent extends Event
}
$this->parts[$position] = $html;
}
}
}

View file

@ -22,4 +22,4 @@ class ImageInfoBoxBuildingEvent extends Event
}
$this->parts[$position] = $html;
}
}
}

View file

@ -9,4 +9,4 @@ class ImageInfoSetEvent extends Event
{
$this->image = $image;
}
}
}

Some files were not shown because too many files have changed in this diff Show more