diff --git a/serendipity_event_freetag/ChangeLog b/serendipity_event_freetag/ChangeLog index f6b268a6f..028ba3d6d 100644 --- a/serendipity_event_freetag/ChangeLog +++ b/serendipity_event_freetag/ChangeLog @@ -1,3 +1,5 @@ +4.1: Match related entries by amount of shared tags + 4.0: * Avoid more warnings under PHP 8.x * Drop outdated option to create a technorati link diff --git a/serendipity_event_freetag/serendipity_event_freetag.php b/serendipity_event_freetag/serendipity_event_freetag.php index 71f2beb81..e56157b62 100644 --- a/serendipity_event_freetag/serendipity_event_freetag.php +++ b/serendipity_event_freetag/serendipity_event_freetag.php @@ -67,7 +67,7 @@ function introspect(&$propbag) 'smarty' => '2.6.7', 'php' => '7.0' )); - $propbag->add('version', '4.0'); + $propbag->add('version', '4.1'); $propbag->add('event_hooks', array( 'frontend_fetchentries' => true, 'frontend_fetchentry' => true, @@ -415,9 +415,10 @@ function getRelatedEntries($tags, $postID) { $tags[$idx] = serendipity_db_escape_string($tag); } - $q = "SELECT DISTINCT e1.entryid, + $q = "SELECT e1.entryid, e2.title, - e2.timestamp + e2.timestamp, + COUNT(e2.id) AS shared_tags FROM {$serendipity['dbPrefix']}entrytags AS e1 LEFT JOIN {$serendipity['dbPrefix']}entries AS e2 ON e1.entryid = e2.id @@ -425,7 +426,8 @@ function getRelatedEntries($tags, $postID) { AND e1.entryid != " . (int)$postID . " AND e2.isdraft = 'false' " . (!serendipity_db_bool($serendipity['showFutureEntries']) ? " AND e2.timestamp <= " . time() : '') . " - ORDER BY e2.timestamp DESC + GROUP BY e1.entryid, e2.title, e2.timestamp + ORDER BY shared_tags DESC, e2.timestamp DESC LIMIT " . $this->get_config('show_related_count', 10); $result = serendipity_db_query($q, false, 'assoc', false, 'entryid', 'title');