formatting

This commit is contained in:
Shish 2019-09-29 14:32:51 +01:00
parent 4dce3a2f07
commit f5119b20a3
100 changed files with 406 additions and 409 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

@ -140,7 +140,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]));
@ -228,7 +228,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");
@ -253,19 +253,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");
}
@ -299,7 +299,7 @@ class Image
["tag"=>$tags[0]]
);
} else {
if(ext_is_live("Ratings")) {
if (ext_is_live("Ratings")) {
$tags[] = "rating:*";
}
list($tag_conditions, $img_conditions) = self::terms_to_conditions($tags);
@ -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);
@ -964,7 +963,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 {
@ -981,14 +980,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)";
@ -1002,12 +1001,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 ";
@ -1018,7 +1017,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);
}
}
@ -801,4 +801,4 @@ function iterator_map(callable $callback, iterator $iter): Generator
function iterator_map_to_array(callable $callback, iterator $iter): array
{
return iterator_to_array(iterator_map($callback, $iter));
}
}

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"));
}
}
@ -118,21 +118,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

@ -111,7 +111,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(ext_is_live("Trash")) {
if (ext_is_live("Trash")) {
$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

@ -119,7 +119,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

@ -55,7 +55,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

@ -38,8 +38,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

@ -29,7 +29,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

@ -59,7 +59,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

@ -22,10 +22,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");
}
}
@ -90,18 +90,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);
}
}
@ -186,7 +186,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;
}
}
@ -246,10 +246,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

@ -166,7 +166,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");
}
@ -368,7 +368,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,7 +28,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

@ -165,7 +165,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 {

View file

@ -157,7 +157,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();
@ -168,11 +168,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

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

View file

@ -12,7 +12,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

@ -17,7 +17,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

@ -13,14 +13,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;
@ -117,5 +117,4 @@ class PixelFileHandler extends DataHandlerExtension
</form>
", 20);
}
}

View file

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

View file

@ -50,19 +50,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) {
@ -82,22 +82,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

@ -14,7 +14,6 @@ class HelpPageListBuildingEvent extends Event
{
$this->pages[$key] = $name;
}
}
class HelpPageBuildingEvent extends Event
@ -27,10 +26,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;
@ -55,7 +53,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];
}
@ -66,7 +64,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);
}
}
@ -89,6 +87,4 @@ class HelpPages extends Extension
global $user;
$event->add_link("Help", make_link("help"));
}
}

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

@ -9,7 +9,8 @@
*/
abstract class ImageConfig {
abstract class ImageConfig
{
const THUMB_ENGINE = 'thumb_engine';
const THUMB_WIDTH = 'thumb_width';
const THUMB_HEIGHT = 'thumb_height';
@ -26,7 +27,6 @@ abstract class ImageConfig {
const COLLISION_MERGE = 'merge';
const COLLISION_ERROR = 'error';
}
/**
@ -34,7 +34,6 @@ abstract class ImageConfig {
*/
class ImageIO extends Extension
{
const COLLISION_OPTIONS = ['Error'=>ImageConfig::COLLISION_ERROR, 'Merge'=>ImageConfig::COLLISION_MERGE];
const EXIF_READ_FUNCTION = "exif_read_data";
@ -267,10 +266,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
@ -349,7 +347,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);
@ -388,8 +386,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

@ -106,7 +106,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

@ -262,10 +262,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"
);
@ -334,19 +337,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

@ -108,7 +108,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

@ -123,7 +123,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

@ -18,7 +18,6 @@ abstract class MediaConfig
const CONVERT_PATH = "media_convert_path";
const VERSION = "ext_media_version";
const MEM_LIMIT = 'media_mem_limit';
}
abstract class MediaEngine
@ -105,14 +104,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;
@ -144,7 +148,6 @@ class MediaCheckPropertiesEvent extends Event
$this->file_name = $file_name;
$this->ext = $ext;
}
}
@ -193,7 +196,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");
}
@ -293,7 +296,6 @@ class Media extends Extension
$sb->end_table();
$event->panel->add_block($sb);
}
public function onAdminBuilding(AdminBuildingEvent $event)
@ -375,7 +377,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:
@ -391,7 +394,8 @@ class Media extends Extension
$event->ignore_aspect_ratio,
$event->target_quality,
$event->minimize,
$event->allow_upscale);
$event->allow_upscale
);
//}
break;
default:
@ -421,7 +425,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();
@ -480,7 +484,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)
@ -736,11 +741,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;
@ -759,8 +765,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);
@ -773,7 +778,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;
}
@ -847,8 +852,7 @@ class Media extends Extension
bool $ignore_aspect_ratio = false,
int $output_quality = 80,
bool $allow_upscale = true
)
{
) {
$width = $info[0];
$height = $info[1];
@ -949,16 +953,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");
}
@ -1047,7 +1051,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
@ -1091,7 +1094,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) {
@ -1114,7 +1117,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);
@ -1139,5 +1142,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

@ -61,7 +61,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

@ -218,7 +218,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

@ -230,7 +230,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();
@ -306,11 +306,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

@ -96,7 +96,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

@ -46,7 +46,6 @@ class PoolAddPostsEvent extends Event
$this->pool_id = $pool_id;
$this->posts = $posts;
}
}
class PoolCreationEvent extends Event
@ -67,7 +66,6 @@ class PoolCreationEvent extends Event
$this->public = $public;
$this->description = $description;
}
}
class Pools extends Extension
@ -152,7 +150,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");
@ -198,7 +196,8 @@ class Pools extends Extension
$title,
$user,
$_POST["public"] === "Y",
$_POST["description"]);
$_POST["description"]
);
send_event($event);
$page->set_mode(PageMode::REDIRECT);
@ -374,7 +373,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();
@ -443,8 +442,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)
@ -461,7 +460,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":
@ -809,7 +809,7 @@ class Pools extends Extension
if (ext_is_live("Ratings")) {
$query .= "AND i.rating IN (".Ratings::privs_to_sql(Ratings::get_user_class_privs($user)).")";
}
if(ext_is_live("trash")) {
if (ext_is_live("trash")) {
$query .= $database->scoreql_to_sql(" AND trash = SCORE_BOOL_N ");
}
@ -823,10 +823,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

@ -42,7 +42,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()));
}
}
@ -73,8 +73,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);
@ -94,9 +94,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

@ -78,7 +78,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

@ -77,7 +77,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

@ -25,7 +25,8 @@
global $_shm_ratings;
$_shm_ratings = [];
class ImageRating {
class ImageRating
{
/**
* @var string
*/
@ -46,9 +47,9 @@ class ImageRating {
*/
public $order = 0;
public function __construct( string $code, string $name, string $search_term, int $order)
public function __construct(string $code, string $name, string $search_term, int $order)
{
if(strlen($code)!=1) {
if (strlen($code)!=1) {
throw new Exception("Rating code must be exactly one character");
}
@ -56,29 +57,30 @@ class ImageRating {
$this->code = $code;
$this->search_term = $search_term;
$this->order = $order;
}
}
function clear_ratings() {
function clear_ratings()
{
global $_shm_ratings;
$keys = array_keys($_shm_ratings);
foreach ($keys as $key){
if($key=="?") {
foreach ($keys as $key) {
if ($key=="?") {
continue;
}
unset($_shm_ratings[$key]);
}
}
function add_rating(ImageRating $rating) {
function add_rating(ImageRating $rating)
{
global $_shm_ratings;
if($rating->code=="?"&&array_key_exists("?",$_shm_ratings)) {
if ($rating->code=="?"&&array_key_exists("?", $_shm_ratings)) {
throw new Exception("? is a reserved rating code that cannot be overridden");
}
if($rating->code!="?"&&in_array(strtolower($rating->search_term), Ratings::UNRATED_KEYWORDS)) {
if ($rating->code!="?"&&in_array(strtolower($rating->search_term), Ratings::UNRATED_KEYWORDS)) {
throw new Exception("$rating->search_term is a reserved search term");
}
@ -110,7 +112,8 @@ class RatingSetEvent extends Event
}
}
abstract class RatingsConfig {
abstract class RatingsConfig
{
const VERSION = "ext_ratings2_version";
const USER_DEFAULTS = "ratings_default";
}
@ -136,7 +139,7 @@ class Ratings extends Extension
array_push($search_terms, $rating->search_term);
}
$this->search_regexp = "/^rating[=|:](?:(\*|[" . $codes . "]+)|(" .
implode("|", $search_terms) . "|".implode("|",self::UNRATED_KEYWORDS)."))$/D";
implode("|", $search_terms) . "|".implode("|", self::UNRATED_KEYWORDS)."))$/D";
}
public function get_priority(): int
@ -160,7 +163,8 @@ class Ratings extends Extension
}
}
public function onInitUserConfig(InitUserConfigEvent $event) {
public function onInitUserConfig(InitUserConfigEvent $event)
{
$event->user_config->set_default_array(RatingsConfig::USER_DEFAULTS, self::get_user_class_privs($event->user));
}
@ -169,9 +173,12 @@ class Ratings extends Extension
global $user, $user_config;
$event->add__html(
$this->theme->get_user_options($user,
$this->theme->get_user_options(
$user,
self::get_user_default_ratings($user),
self::get_user_class_privs($user)));
self::get_user_class_privs($user)
)
);
}
public function onSetupBuilding(SetupBuildingEvent $event)
@ -254,7 +261,7 @@ class Ratings extends Extension
{
global $user;
if($event->key===HelpPages::SEARCH) {
if ($event->key===HelpPages::SEARCH) {
$block = new Block();
$block->header = "Ratings";
@ -279,7 +286,7 @@ class Ratings extends Extension
if (preg_match($this->search_regexp, strtolower($event->term), $matches)) {
$ratings = $matches[1] ? $matches[1] : $matches[2][0];
if(count($matches)>2&&in_array($matches[2], self::UNRATED_KEYWORDS)) {
if (count($matches)>2&&in_array($matches[2], self::UNRATED_KEYWORDS)) {
$ratings = "?";
}
@ -302,7 +309,7 @@ class Ratings extends Extension
if (preg_match($this->search_regexp, strtolower($event->term), $matches) && $event->parse) {
$ratings = $matches[1] ? $matches[1] : $matches[2][0];
if(count($matches)>2&&in_array($matches[2], self::UNRATED_KEYWORDS)) {
if (count($matches)>2&&in_array($matches[2], self::UNRATED_KEYWORDS)) {
$ratings = "?";
}
@ -348,16 +355,16 @@ class Ratings extends Extension
switch ($action) {
case "update_ratings":
$event->redirect = true;
if(!array_key_exists("rating_old", $_POST) || empty($_POST["rating_old"])) {
if (!array_key_exists("rating_old", $_POST) || empty($_POST["rating_old"])) {
return;
}
if(!array_key_exists("rating_new", $_POST) || empty($_POST["rating_new"])) {
if (!array_key_exists("rating_new", $_POST) || empty($_POST["rating_new"])) {
return;
}
$old = $_POST["rating_old"];
$new = $_POST["rating_new"];
if($user->can("bulk_edit_image_rating")) {
if ($user->can("bulk_edit_image_rating")) {
$database->execute("UPDATE images SET rating = :new WHERE rating = :old", ["new"=>$new, "old"=>$old ]);
}
@ -371,7 +378,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(["?"]));
$event->add_action("bulk_rate", "Set (R)ating", "r", "", $this->theme->get_selection_rater_html(["?"]));
}
}
@ -455,7 +462,6 @@ class Ratings extends Extension
break;
}
}
}
public static function get_sorted_ratings(): array
@ -490,10 +496,10 @@ class Ratings extends Extension
public static function privs_to_sql(array $privs): string
{
$arr = [];
foreach($privs as $i) {
foreach ($privs as $i) {
$arr[] = "'" . $i . "'";
}
if(sizeof($arr)==0) {
if (sizeof($arr)==0) {
return "' '";
}
$set = join(', ', $arr);
@ -504,7 +510,7 @@ class Ratings extends Extension
{
global $_shm_ratings;
if(array_key_exists($rating, $_shm_ratings)) {
if (array_key_exists($rating, $_shm_ratings)) {
return $_shm_ratings[$rating]->name;
}
return "Unknown";
@ -557,7 +563,7 @@ class Ratings extends Extension
$config->set_int(RatingsConfig::VERSION, 2);
}
if($config->get_int(RatingsConfig::VERSION) < 3) {
if ($config->get_int(RatingsConfig::VERSION) < 3) {
$database->Execute("UPDATE images SET rating = 'u' WHERE rating is null");
switch ($database->get_driver_name()) {
case DatabaseDriver::MYSQL:
@ -568,20 +574,20 @@ class Ratings extends Extension
$database->Execute("ALTER TABLE images ALTER COLUMN rating SET NOT NULL");
break;
}
$config->set_int(RatingsConfig::VERSION, 3);
}
$config->set_int(RatingsConfig::VERSION, 3);
}
if ($config->get_int(RatingsConfig::VERSION) < 4) {
$value = $config->get_string("ext_rating_anon_privs");
if(!empty($value)) {
if (!empty($value)) {
$config->set_array("ext_rating_anonymous_privs", str_split($value));
}
$value = $config->get_string("ext_rating_user_privs");
if(!empty($value)) {
if (!empty($value)) {
$config->set_array("ext_rating_user_privs", str_split($value));
}
$value = $config->get_string("ext_rating_admin_privs");
if(!empty($value)) {
if (!empty($value)) {
$config->set_array("ext_rating_admin_privs", str_split($value));
}

View file

@ -30,9 +30,9 @@ class RatingsTheme extends Themelet
$html = make_form(make_link("admin/update_ratings"))."<table class='form'><tr>
<th>Change</th><td><select name='rating_old' required='required'><option></option>";
foreach ($current_ratings as $key=>$value) {
$html .= "<option value='$key'>$value</option>";
}
foreach ($current_ratings as $key=>$value) {
$html .= "<option value='$key'>$value</option>";
}
$html .= "</select></td></tr>
<tr><th>To</th><td><select name='rating_new' required='required'><option></option>";
foreach ($available_ratings as $value) {
@ -50,37 +50,38 @@ class RatingsTheme extends Themelet
// {
// global $page;
// $html = "
// ".make_form(make_link("admin/bulk_rate"))."
// <input type='hidden' name='query' value='".html_escape($terms)."'>
// <select name='rating'>
// <option value='s'>Safe</option>
// <option value='q'>Questionable</option>
// <option value='e'>Explicit</option>
// <option value='u'>Unrated</option>
// </select>
// <input type='submit' value='Go'>
// </form>
// ";
// ".make_form(make_link("admin/bulk_rate"))."
// <input type='hidden' name='query' value='".html_escape($terms)."'>
// <select name='rating'>
// <option value='s'>Safe</option>
// <option value='q'>Questionable</option>
// <option value='e'>Explicit</option>
// <option value='u'>Unrated</option>
// </select>
// <input type='submit' value='Go'>
// </form>
// ";
// $page->add_block(new Block("List Controls", $html, "left"));
// }
public function get_selection_rater_html(array $selected_options, bool $multiple = false, array $available_options = null) {
public function get_selection_rater_html(array $selected_options, bool $multiple = false, array $available_options = null)
{
global $_shm_ratings;
$output = "<select name='rating".($multiple ? "[]' multiple='multiple'" : "' ")." >";
$output = "<select name='rating".($multiple ? "[]' multiple='multiple'" : "' ")." >";
$options = Ratings::get_sorted_ratings();
foreach($options as $option) {
if($available_options!=null && !in_array($option->code, $available_options)) {
continue;
foreach ($options as $option) {
if ($available_options!=null && !in_array($option->code, $available_options)) {
continue;
}
$output .= "<option value='".$option->code."' ".
(in_array($option->code,$selected_options) ? "selected='selected'": "")
$output .= "<option value='".$option->code."' ".
(in_array($option->code, $selected_options) ? "selected='selected'": "")
.">".$option->name."</option>";
}
return $output."</select>";
}
return $output."</select>";
}
public function get_help_html(array $ratings)

View file

@ -69,7 +69,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

@ -12,7 +12,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;
@ -51,7 +51,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);
}
@ -83,7 +83,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();
@ -139,15 +139,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);
}
}
@ -162,7 +161,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);
@ -187,13 +186,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

@ -136,7 +136,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

@ -59,7 +59,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();
@ -192,7 +192,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

@ -82,9 +82,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

@ -119,7 +119,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,4 +9,4 @@ class SetupConfig
public const THEME = "theme";
public const WORD_WRAP = "word_wrap";
public const COMMENT_CAPTCHA = "comment_captcha";
}
}

View file

@ -142,20 +142,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)
@ -187,7 +200,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>";
}
@ -216,7 +229,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)
@ -414,7 +426,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

@ -85,7 +85,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

@ -26,6 +26,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

@ -75,7 +75,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 (
@ -93,7 +94,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

@ -258,7 +258,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

@ -85,7 +85,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

@ -100,7 +100,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");

View file

@ -76,7 +76,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

@ -98,7 +98,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);
@ -181,7 +181,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)));
}
}
@ -230,7 +230,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 = [];
@ -241,7 +241,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

@ -14,7 +14,6 @@ abstract class TrashConfig
class Trash extends Extension
{
protected $db_support = [DatabaseDriver::MYSQL, DatabaseDriver::PGSQL];
public function get_priority(): int
@ -59,7 +58,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"));
}
@ -67,7 +66,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;
}
@ -87,7 +86,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 ")));
}
}
@ -96,8 +95,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();
@ -117,18 +116,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));
}
}
@ -138,7 +138,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");
}
}
@ -172,7 +172,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

@ -187,7 +187,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');
@ -223,7 +223,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

@ -141,12 +141,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

@ -341,7 +341,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"]));
}
@ -388,7 +388,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

@ -27,12 +27,13 @@ class UserConfig extends Extension
{
global $config;
if ($config->get_int(self::VERSION,0)<1) {
if ($config->get_int(self::VERSION, 0)<1) {
$this->install();
}
}
public function onInitUserConfig(InitUserConfigEvent $event) {
public function onInitUserConfig(InitUserConfigEvent $event)
{
global $database, $user_config;
$user_config = new DatabaseConfig($database, "user_config", "user_id", $event->user->id);
@ -43,8 +44,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

@ -17,7 +17,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;
}
}
}

View file

@ -179,13 +179,13 @@ class Wiki extends Extension
public function onPageNavBuilding(PageNavBuildingEvent $event)
{
$event->add_nav_link("wiki",new Link('wiki'), "Wiki");
$event->add_nav_link("wiki", new Link('wiki'), "Wiki");
}
public function onPageSubNavBuilding(PageSubNavBuildingEvent $event)
{
if($event->parent=="wiki") {
if ($event->parent=="wiki") {
$event->add_nav_link("wiki_rules", new Link('wiki/rules'), "Rules");
$event->add_nav_link("wiki_help", new Link('ext_doc/wiki'), "Help");
}

View file

@ -100,7 +100,7 @@ try {
$page->display();
}
if($database->transaction===true) {
if ($database->transaction===true) {
$database->commit();
}
@ -117,7 +117,7 @@ try {
$_tracer->end();
if (TRACE_FILE) {
if((microtime(true) - $_shm_load_start) > TRACE_THRESHOLD) {
$_tracer->flush(TRACE_FILE);
}
if ((microtime(true) - $_shm_load_start) > TRACE_THRESHOLD) {
$_tracer->flush(TRACE_FILE);
}
}

View file

@ -101,7 +101,7 @@ class Layout
}
$custom_sublinks = "";
if(!empty($sub_links)) {
if (!empty($sub_links)) {
$custom_sublinks = "<div class='sbar'>";
foreach ($sub_links as $nav_link) {
$custom_sublinks .= "<li>".$this->navlinks($nav_link->link, $nav_link->description, $nav_link->active)."</li>";

View file

@ -33,7 +33,7 @@ class CustomViewImageTheme extends ViewImageTheme
<br>Filesize: $h_filesize
<br>Type: $h_type";
if($image->length!=null) {
if ($image->length!=null) {
$h_length = format_milliseconds($image->length);
$html .= "<br/>Length: $h_length";
}

View file

@ -101,7 +101,7 @@ class Layout
}
$custom_sublinks = "";
if(!empty($sub_links)) {
if (!empty($sub_links)) {
$custom_sublinks = "<div class='sbar'>";
foreach ($sub_links as $nav_link) {
$custom_sublinks .= "<li>".$this->navlinks($nav_link->link, $nav_link->description, $nav_link->active)."</li>";

View file

@ -33,7 +33,7 @@ class CustomViewImageTheme extends ViewImageTheme
<br>Type: $h_type
";
if($image->length!=null) {
if ($image->length!=null) {
$h_length = format_milliseconds($image->length);
$html .= "<br/>Length: $h_length";
}

View file

@ -57,7 +57,7 @@ class Layout
}
$custom_sublinks = "";
if(!empty($sub_links)) {
if (!empty($sub_links)) {
$custom_sublinks = "<div class='sbar'>";
foreach ($sub_links as $nav_link) {
$custom_sublinks .= $this->navlinks($nav_link->link, $nav_link->description, $nav_link->active);

View file

@ -33,7 +33,7 @@ class CustomViewImageTheme extends ViewImageTheme
<br>Filesize: $h_filesize
<br>Type: ".$h_type."
";
if($image->length!=null) {
if ($image->length!=null) {
$h_length = format_milliseconds($image->length);
$html .= "<br/>Length: $h_length";
}