Spread ParseLinkTemplate work across relevant extensions
This commit is contained in:
parent
41a205d24a
commit
3a57817fc2
1
SPEED.md
1
SPEED.md
@ -34,7 +34,6 @@ Notable behaviour changes:
|
|||||||
- We only show the first 500 pages of results for any query, except for
|
- We only show the first 500 pages of results for any query, except for
|
||||||
the most simple (no tags, or one positive tag)
|
the most simple (no tags, or one positive tag)
|
||||||
- We only ever show the first 5,000 results for complex queries
|
- We only ever show the first 5,000 results for complex queries
|
||||||
- `ParseLinkTemplateEvent` is disabled
|
|
||||||
- Only comments from the past 24 hours show up in /comment/list
|
- Only comments from the past 24 hours show up in /comment/list
|
||||||
- Web crawlers are blocked from creating too many nonsense searches
|
- Web crawlers are blocked from creating too many nonsense searches
|
||||||
- The first 10 pages in the index get extra caching
|
- The first 10 pages in the index get extra caching
|
||||||
|
@ -135,8 +135,10 @@ class ParseLinkTemplateEvent extends Event
|
|||||||
$this->image = $image;
|
$this->image = $image;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function replace(string $needle, string $replace): void
|
public function replace(string $needle, ?string $replace): void
|
||||||
{
|
{
|
||||||
$this->link = str_replace($needle, $replace, $this->link);
|
if(!is_null($replace)) {
|
||||||
|
$this->link = str_replace($needle, $replace, $this->link);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -763,47 +763,8 @@ class Image
|
|||||||
|
|
||||||
public function parse_link_template(string $tmpl, int $n=0): string
|
public function parse_link_template(string $tmpl, int $n=0): string
|
||||||
{
|
{
|
||||||
global $config;
|
$plte = send_event(new ParseLinkTemplateEvent($tmpl, $this));
|
||||||
|
$tmpl = $plte->link;
|
||||||
// don't bother hitting the database if it won't be used...
|
|
||||||
$tags = "";
|
|
||||||
if (strpos($tmpl, '$tags') !== false) { // * stabs dynamically typed languages with a rusty spoon *
|
|
||||||
$tags = $this->get_tag_list();
|
|
||||||
$tags = str_replace("/", "", $tags);
|
|
||||||
$tags = preg_replace("/^\.+/", "", $tags);
|
|
||||||
}
|
|
||||||
|
|
||||||
$base_href = $config->get_string('base_href');
|
|
||||||
$fname = $this->get_filename();
|
|
||||||
$base_fname = strpos($fname, '.') ? substr($fname, 0, strrpos($fname, '.')) : $fname;
|
|
||||||
|
|
||||||
$tmpl = str_replace('$id', $this->id, $tmpl);
|
|
||||||
$tmpl = str_replace('$hash_ab', substr($this->hash, 0, 2), $tmpl);
|
|
||||||
$tmpl = str_replace('$hash_cd', substr($this->hash, 2, 2), $tmpl);
|
|
||||||
$tmpl = str_replace('$hash', $this->hash, $tmpl);
|
|
||||||
$tmpl = str_replace('$tags', $tags, $tmpl);
|
|
||||||
$tmpl = str_replace('$base', $base_href, $tmpl);
|
|
||||||
$tmpl = str_replace('$ext', $this->ext, $tmpl);
|
|
||||||
if ($this->width && $this->height && $this->length) {
|
|
||||||
$s = ((int)($this->length / 100))/10;
|
|
||||||
$tmpl = str_replace('$size', "{$this->width}x{$this->height}, ${s}s", $tmpl);
|
|
||||||
} elseif ($this->width && $this->height) {
|
|
||||||
$tmpl = str_replace('$size', "{$this->width}x{$this->height}", $tmpl);
|
|
||||||
} elseif ($this->length) {
|
|
||||||
$s = ((int)($this->length / 100))/10;
|
|
||||||
$tmpl = str_replace('$size', "${s}s", $tmpl);
|
|
||||||
}
|
|
||||||
$tmpl = str_replace('$filesize', to_shorthand_int($this->filesize), $tmpl);
|
|
||||||
$tmpl = str_replace('$filename', $base_fname, $tmpl);
|
|
||||||
$tmpl = str_replace('$title', $config->get_string(SetupConfig::TITLE), $tmpl);
|
|
||||||
$tmpl = str_replace('$date', autodate($this->posted, false), $tmpl);
|
|
||||||
|
|
||||||
// nothing seems to use this, sending the event out to 50 exts is a lot of overhead
|
|
||||||
if (!SPEED_HAX) {
|
|
||||||
$plte = send_event(new ParseLinkTemplateEvent($tmpl, $this));
|
|
||||||
$tmpl = $plte->link;
|
|
||||||
}
|
|
||||||
|
|
||||||
return load_balance_url($tmpl, $this->hash, $n);
|
return load_balance_url($tmpl, $this->hash, $n);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -79,6 +79,5 @@ class UtilTest extends \PHPUnit\Framework\TestCase
|
|||||||
load_balance_url("https://{foo=10,bar=5,baz=5}.mycdn.com/$hash.$ext", $hash, 0),
|
load_balance_url("https://{foo=10,bar=5,baz=5}.mycdn.com/$hash.$ext", $hash, 0),
|
||||||
load_balance_url("https://{foo=10,bar=5,baz=5}.mycdn.com/$hash.$ext", $hash, 1)
|
load_balance_url("https://{foo=10,bar=5,baz=5}.mycdn.com/$hash.$ext", $hash, 1)
|
||||||
);
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -250,6 +250,20 @@ class ImageIO extends Extension
|
|||||||
$event->panel->add_block($sb);
|
$event->panel->add_block($sb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function onParseLinkTemplate(ParseLinkTemplateEvent $event)
|
||||||
|
{
|
||||||
|
$fname = $event->image->get_filename();
|
||||||
|
$base_fname = strpos($fname, '.') ? substr($fname, 0, strrpos($fname, '.')) : $fname;
|
||||||
|
|
||||||
|
$event->replace('$id', (string)$event->image->id);
|
||||||
|
$event->replace('$hash_ab', substr($event->image->hash, 0, 2));
|
||||||
|
$event->replace('$hash_cd', substr($event->image->hash, 2, 2));
|
||||||
|
$event->replace('$hash', $event->image->hash);
|
||||||
|
$event->replace('$filesize', to_shorthand_int($event->image->filesize));
|
||||||
|
$event->replace('$filename', $base_fname);
|
||||||
|
$event->replace('$date', autodate($event->image->posted, false));
|
||||||
|
}
|
||||||
|
|
||||||
private function send_file(int $image_id, string $type)
|
private function send_file(int $image_id, string $type)
|
||||||
{
|
{
|
||||||
global $config;
|
global $config;
|
||||||
|
@ -296,6 +296,21 @@ class Media extends Extension
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function onParseLinkTemplate(ParseLinkTemplateEvent $event)
|
||||||
|
{
|
||||||
|
if ($event->image->width && $event->image->height && $event->image->length) {
|
||||||
|
$s = ((int)($event->image->length / 100))/10;
|
||||||
|
$event->replace('$size', "{$event->image->width}x{$event->image->height}, ${s}s");
|
||||||
|
} elseif ($event->image->width && $event->image->height) {
|
||||||
|
$event->replace('$size', "{$event->image->width}x{$event->image->height}");
|
||||||
|
} elseif ($event->image->length) {
|
||||||
|
$s = ((int)($event->image->length / 100))/10;
|
||||||
|
$event->replace('$size', "${s}s");
|
||||||
|
}
|
||||||
|
|
||||||
|
$event->replace('$ext', $event->image->ext);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check Memory usage limits
|
* Check Memory usage limits
|
||||||
*
|
*
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
<?php declare(strict_types=1);
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
use function MicroHTML\{TR,TH,TD,A};
|
use function MicroHTML\TR;
|
||||||
|
use function MicroHTML\TH;
|
||||||
|
use function MicroHTML\TD;
|
||||||
|
use function MicroHTML\A;
|
||||||
|
|
||||||
if ( // kill these glitched requests immediately
|
if ( // kill these glitched requests immediately
|
||||||
!empty($_SERVER["REQUEST_URI"])
|
!empty($_SERVER["REQUEST_URI"])
|
||||||
|
@ -446,4 +446,11 @@ class Setup extends Extension
|
|||||||
$event->add_link("Board Config", make_link("setup"));
|
$event->add_link("Board Config", make_link("setup"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function onParseLinkTemplate(ParseLinkTemplateEvent $event)
|
||||||
|
{
|
||||||
|
global $config;
|
||||||
|
$event->replace('$base', $config->get_string('base_href'));
|
||||||
|
$event->replace('$title', $config->get_string(SetupConfig::TITLE));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -230,7 +230,6 @@ class TagEdit extends Extension
|
|||||||
$this->theme->display_mass_editor();
|
$this->theme->display_mass_editor();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function onPageSubNavBuilding(PageSubNavBuildingEvent $event)
|
public function onPageSubNavBuilding(PageSubNavBuildingEvent $event)
|
||||||
{
|
{
|
||||||
if ($event->parent=="tags") {
|
if ($event->parent=="tags") {
|
||||||
@ -238,7 +237,6 @@ class TagEdit extends Extension
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* When an alias is added, oldtag becomes inaccessible.
|
* When an alias is added, oldtag becomes inaccessible.
|
||||||
*/
|
*/
|
||||||
@ -270,6 +268,14 @@ class TagEdit extends Extension
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function onParseLinkTemplate(ParseLinkTemplateEvent $event)
|
||||||
|
{
|
||||||
|
$tags = $event->image->get_tag_list();
|
||||||
|
$tags = str_replace("/", "", $tags);
|
||||||
|
$tags = preg_replace("/^\.+/", "", $tags);
|
||||||
|
$event->replace('$tags', $tags);
|
||||||
|
}
|
||||||
|
|
||||||
private function mass_tag_edit(string $search, string $replace)
|
private function mass_tag_edit(string $search, string $replace)
|
||||||
{
|
{
|
||||||
global $database;
|
global $database;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user