Meist gelesene Seiten [Topics, 2]
Wieder einmal habe ich auf dem Thema herumgekaut - und dann Google Bard gefragt. Die KI hatte tatsächliche eine überraschend einfache Antwort: Berechne einfach die durchschnittlichen Aufrufe pro Tag. Dann wird auch das Alter mitgerechnet.
Dafür brauche ich nur ein weiteres Feld: Den Zähler. Weil aber schon geraume Zeit in das Feld topic_score reingezählt wird, muss dieses umbenannt werden zu topic_score_counter und das Feld topic_score neu angelegt werden. Das passiert in upgrade.php. Ebendort werden dann auch gleich mal die ganzen Werte für topic_score neu berechnet und schwupp: passt.
Ab dann wird bei jedem Seitenaufruf in view.final.php ausgeführt:
if(!empty($_SERVER['HTTP_USER_AGENT']) and preg_match('~(bot|crawl)~i', $_SERVER['HTTP_USER_AGENT'])){ //Bot or Crawler: https://stackoverflow.com/questions/17515381/exclude-bots-and-spiders-from-a-view-counter-in-php } else { $topic_score_counter = (int) $topic['topic_score_counter']; $topic_score_counter ++; //Startzeit: $posted_first = (int) $topic['posted_first']; if ($posted_first == 0) {$posted_first =(int) $topic['published_when'];} //0 korrigieren $age = floor ( ($t - $posted_first) / (3600 * 24) ); $visitsPerDay = $topic_score_counter / $age; //Das ist meistens unter 1, dh score ist mal 1000 $topic_score = (int) floor(1000 * $visitsPerDay); if ($topic['title'] == '' OR $topic_score_counter < 10) {$topic_score = 0;} //neu angelegt $theq = "UPDATE ".TABLE_PREFIX."mod_".$tablename. " SET topic_score = $topic_score, topic_score_counter = $topic_score_counter, posted_first = $posted_first WHERE topic_id = ".TOPIC_ID.";"; $database->query($theq); }
Das könnte ich sicher noch verfeinern. Aber fürs erste wird es reichen. Kommt mit der nächsten Topics-Version 1.2.4
Für Tipps und Verbesserungsvorschläge bin ich natürlich offen!