Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

YCom-spezifische Artikel ignorieren #38

Merged
merged 1 commit into from
Nov 24, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 42 additions & 30 deletions lib/speed_up.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public function __construct($profile = 'auto')
}
$mount_id = rex_yrewrite::getCurrentDomain()->getMountId();
$category_mount_children = [];

if (rex_category::get($mount_id)) {
$category_mount_children = rex_category::get($mount_id)->getChildren(true);
}
Expand All @@ -35,20 +35,21 @@ public function __construct($profile = 'auto')

$category_neighbours = [];

if (null != $category_parent && $category_current->getId() != $mount_id) {
if ($category_parent != null && $category_current->getId() != $mount_id) {
// Nur wenn wir uns nicht in Root befinden oder überhalb eines Mount-Points - andere YRewrite-Domains möchten wir nicht prefetchen.
$category_neighbours = $category_parent->getChildren(true);
}

// Manuelle Einstellungen
$article_prefetch_config = explode(',', self::getConfig('prefetch_articles') ?? '');
$article_prefetch_config = explode(",", speed_up::getConfig('prefetch_articles') ?? "");

if (self::getConfig('profile') === 'auto') {

if ('auto' === self::getConfig('profile')) {
// Mount-Point = oberste Navigationsebene (Startseite könnte auch in einer Unterkategorie sein)
foreach ($category_mount_children as $category) {
$urls[$category->getId()] = $category->getUrl();
}

// Nur das erste Kind-Element
foreach ($category_children as $category) {
$urls[$category->getId()] = $category->getUrl();
Expand All @@ -63,9 +64,9 @@ public function __construct($profile = 'auto')
}
$urls[$category->getId()] = $category->getUrl();
// Nach 2 gefundenen Nachbarn aussteigen
if (2 == ++$neighbours) {
if (++$neighbours == 2) {
break;
}
};
}

$neighbours = 0;
Expand All @@ -75,32 +76,36 @@ public function __construct($profile = 'auto')
continue;
}
$urls[$article->getId()] = $article->getUrl();
if (2 == ++$neighbours) {
if (++$neighbours == 2) {
break;
}
};
}

if ($category_current && $category_current->getId() != $start_id) {
// Startseite hinzufügen
$urls[$start_id] = rex_article::get($start_id)->getUrl();
}
} elseif ('aggressive' === self::getConfig('profile')) {
} elseif (self::getConfig('profile') === 'aggressive') {

// Mount-Point = oberste Navigationsebene (Startseite könnte auch in einer Unterkategorie sein)
foreach ($category_mount_children as $category) {
$urls[$category->getId()] = $category->getUrl();
}

foreach ($category_children as $category) {
$urls[$category->getId()] = $category->getUrl();
}

foreach ($category_articles as $article) {
$urls[$article->getId()] = $article->getUrl();
}



foreach ($category_neighbours as $category) {
$urls[$category->getId()] = $category->getUrl();
}


if ($category_current && $category_current->getId() != $start_id) {
// Startseite hinzufügen
Expand All @@ -118,7 +123,7 @@ public function __construct($profile = 'auto')

$urls = rex_extension::registerPoint(new rex_extension_point(
'PREFETCH_URLS',
$urls,
$urls
));

/*
Expand All @@ -128,52 +133,59 @@ public function __construct($profile = 'auto')
}
*/
if (rex_addon::get('ycom')->isAvailable()) {
// YCom-spezifische Seiten wie Logout sollten keinesfalls geladen werden.
unset($urls[rex_config::get('ycom', 'article_id_jump_ok')]);
unset($urls[rex_config::get('ycom', 'article_id_jump_not_ok')]);
unset($urls[rex_config::get('ycom', 'article_id_jump_logout')]);
// YCom-spezifische Seiten wie Logout sollten keinesfalls eigenständig aufgerufen werden. */
unset($urls[rex_config::get('ycom', 'article_id_jump_denied')]);
unset($urls[rex_config::get('ycom', 'article_id_jump_logout')]);
unset($urls[rex_config::get('ycom', 'article_id_jump_not_ok')]);
unset($urls[rex_config::get('ycom', 'article_id_jump_ok')]);
unset($urls[rex_config::get('ycom', 'article_id_jump_password')]);
unset($urls[rex_config::get('ycom', 'article_id_jump_termsofuse')]);
unset($urls[rex_config::get('ycom', 'article_id_login')]);
unset($urls[rex_config::get('ycom', 'article_id_logout')]);
unset($urls[rex_config::get('ycom', 'article_id_register')]);
unset($urls[rex_config::get('ycom', 'article_id_password')]);
unset($urls[rex_config::get('ycom', 'otp_article_id')]);

// Reicht das? Wie verhält sich das prefetching zwischen einem ein- und ausgeloggten Nutzer?
}

unset($urls[rex_yrewrite::getCurrentDomain()->getNotfoundId()]);

$this->urls = $urls;

return $this;
}


public function showOutput()
{
echo $this->getOutput();
return;
}

public function show() /* Alias, BC */
{
return $this->showOutput();
}


public function getOutput()
{
if ('disabled' === self::getConfig('profile')) {
if (self::getConfig('profile') === 'disabled') {
return;
}
$output = PHP_EOL;
$output .= self::getConfig('preload') . PHP_EOL;
$output .= self::getConfig('prefetch') . PHP_EOL;

$preload_media_config = explode(',', self::getConfig('preload_media') ?? '');

$output = PHP_EOL;
$output .= self::getConfig('preload').PHP_EOL;
$output .= self::getConfig('prefetch').PHP_EOL;
$preload_media_config = explode(",", speed_up::getConfig('preload_media') ?? "");
foreach ($preload_media_config as $file) {
if ($media = rex_media::get($file)) {
$output .= '<link rel="preload" href="' . $media->getUrl() . '" as="image" type="' . $media->getType() . '">' . PHP_EOL;
$output .= '<link rel="preload" href="'. $media->getUrl() .'" as="image" type="'.$media->getType().'">'.PHP_EOL;
}
}

if ('custom' === self::getConfig('profile')) {
if (self::getConfig('profile') === "custom") {
return;
}

Expand All @@ -182,7 +194,7 @@ public function getOutput()
if (isset($parsedUrl['scheme']) && !in_array($parsedUrl['scheme'], ['http', 'https'])) {
continue;
}
$output .= '<link rel="prefetch" href="' . $url . '">' . PHP_EOL;
$output .= '<link rel="prefetch" href="'. $url .'">'.PHP_EOL;
}
return $output;
}
Expand Down
Loading