weight( $source['url'] ?? '' ), 4 ); return $source; } // ── Private helpers ───────────────────────────────────────────────── /** * Authority weight for a source URL. * * @param string $url Source URL. * @return float Weight in [0.40, 1.0]. */ private function weight( string $url ): float { $u = strtolower( $url ); if ( false !== strpos( $u, 'doi.org' ) || false !== strpos( $u, 'pubmed.ncbi' ) || false !== strpos( $u, 'ncbi.nlm.nih' ) ) { return 1.0; } if ( false !== strpos( $u, '.gov' ) || false !== strpos( $u, '.edu' ) || false !== strpos( $u, 'who.int' ) || false !== strpos( $u, 'fda.gov' ) ) { return 0.85; } if ( false !== strpos( $u, 'medrxiv' ) || false !== strpos( $u, 'biorxiv' ) || false !== strpos( $u, 'preprint' ) ) { return 0.70; } if ( 0 === strpos( $u, 'https://' ) ) { return 0.60; } return 0.40; } }