from the feed with one extracted from . * Author: Your Name * Version: 1.0 */ class TelegramLinkFixerExtension extends Minz_Extension { /** * Called automatically at extension load-time. Set up hooks here. */ #[\Override] public function init() { // Hook into FreshRSS just before each entry is saved to database: parent::init(); $this->registerHook('entry_before_insert', array($this, 'fixLink')); } /** * Our main function to rewrite the from . */ public function fixLink($entry) { try { // Check if it's a telegram link $link = $entry->link(); error_log('TelegramLinkFixer: Processing entry with link: ' . $link); if (strpos($link, 't.me') === false) { error_log('TelegramLinkFixer: Skipping - not a telegram link'); return $entry; // skip if not a telegram link } // The correct method is content() not description() $description = $entry->content(); if (empty($description)) { error_log('TelegramLinkFixer: Skipping - empty content'); return $entry; } // First try: Look for Telegraph link with "Telegraph" text if (preg_match('/href="(https:\/\/telegra\.ph\/[^"]+)"/i', $description, $matches)) { $telegraphLink = $matches[1]; } if (!empty($telegraphLink)) { error_log('TelegramLinkFixer: Found Telegraph link: ' . $telegraphLink); $entry->_link($telegraphLink); error_log('TelegramLinkFixer: Successfully updated link'); } else { error_log('TelegramLinkFixer: No Telegraph link found in content'); } return $entry; } catch (Exception $e) { error_log('TelegramLinkFixer: Error processing entry: ' . $e->getMessage()); return $entry; // Return the entry even if an exception occurs } } }