root/profile.lastvisitors/files/lib/system/event/listener/ProfilelastVisitorsListener.class.php @ 282

Revision 282, 3.0 kB (checked in by MDMAN, 5 years ago)

new version with extra side for all visitors

Line 
1<?php
2require_once(WCF_DIR.'lib/system/event/EventListener.class.php');
3
4class ProfilelastVisitorsListener implements EventListener {
5   
6    public $visitorCount = 0;
7    public $visitors = array();
8    public $profileID = 0;
9
10    /**
11    * @see EventListener::execute()
12    */
13    public function execute($eventObj, $className, $eventName){
14
15        //Mit dieser IF Abfrage wird geschaut, ob der Visitor ein GAST oder ob er INVISIBLE ist. Sollte eines zustreffen, wird die Eingabe in die Datenbank nicht ausgefᅵhrt
16        if (WCF::getUser()->userID != 0 && $eventObj->userID != WCF::getUser()->userID && WCF::getUser()->getPermission('admin.profile.lastvisitor.isinvisible') != 1){
17            $sql = "INSERT INTO wcf".WCF_N."_profile_lastvisitors (profileID, userID, username, time)
18            VALUES ('".$eventObj->userID."', '".WCF::getUser()->userID."', '".WCF::getUser()->username."', '".TIME_NOW."')
19            ON DUPLICATE KEY
20            UPDATE time = VALUES(time)";
21            WCF::getDB()->sendQuery($sql);
22        }
23        // Ab hier wird die Anzeige gemacht. Es werden keine Daten mehr in die Datenbank eingespielt
24        // Hier werden die Daten der Besucher des angeschauten Profils gesammelt
25
26        $sql = "SELECT userID, username, time FROM wcf".WCF_N."_profile_lastvisitors WHERE profileID = '".$eventObj->userID."' ORDER BY time DESC LIMIT 0,".SHOW_LASTVISITOR_AMOUNT."";
27        $result = WCF::getDB()->sendQuery($sql);
28
29        while ($row = WCF::getDB()->fetchArray($result)) {
30                $this->visitors[] = $row;
31        }
32        if(count($this->visitors) > 0) $this->visitorCount = count($this->visitors);
33
34        //Hier werden die Variablen in den Template-Variabeln registriert
35
36        WCF::getTPL()->assign(array(
37                'visitors' => $this->visitors,
38                'visitorCount' => $this->visitorCount,
39                                'profileID' => $eventObj->userID,
40                ));
41        //Datenbank wird hier aufgeraeumt... Hier werden alle Visitors geloescht, die nicht mehr angezeigt werden koennen (Visitors groesser 100)
42        $sql = "SELECT userID FROM wcf".WCF_N."_profile_lastvisitors WHERE profileID = '".$eventObj->userID."' ORDER BY time DESC";
43        $result = WCF::getDB()->sendQuery($sql);
44        $skipCount = 0;
45        $deleteIDs = array();
46        while ($row = WCF::getDB()->fetchArray($result)){
47            if($skipCount > 100) $deleteIDs[] = $row['userID'];
48            $skipCount++;
49        }
50        if(count($deleteIDs) > 0) {
51            $deleteIDString = implode(',', $deleteIDs);
52            $sql = "DELETE FROM wcf".WCF_N."_profile_lastvisitors WHERE userID IN (".$deleteIDString.") AND profileID = '".$eventObj->userID."'";
53            WCF::getDB()->sendQuery($sql);
54        }
55       
56        //Hier werden die Templates in die Platzhalter der userProfile.tpl geladen
57        WCF::getTPL()->append('additionalBoxes5', WCF::getTPL()->fetch('ProfilelastVisitorSmall'));
58        WCF::getTPL()->append('additionalContents3', WCF::getTPL()->fetch('ProfilelastVisitor'));
59       
60    }
61}
62?>
Note: See TracBrowser for help on using the browser.