xF 1.1 B2 / Beförderungen

DSF

Bekanntes Mitglied
Registriert
10. Dez. 2010
Beiträge
949
Punkte
93
Hat jemand schon Erfahrung mit den Beförderungen gemacht?
Funktioniert das fehlerfrei?
So ein wenig kommen mir da Zweifel.

Beispiel:
Registrierte habe keine Anhangberechtigung in Unterhaltungen.
Also eine 2. Benutzergruppe erstellt und dort dieses erlaubt.
Dann die Beförderung erstellt, das alle mit mehr als 200 Postings zusätzlich diese "Anhangsberechtigungsgruppe" als zusätzliche Gruppe erhalten sollen.

Soweit ok.

Nur ... es wurden weniger befördert als eigentlich dafür vorhanden wären. ???????
 
Kannst du denn Gemeinsamkeiten feststellen? Wann waren Personen, die nicht befördert wurden das letzte Mal Online? Sind Personen, die nicht befördert wurden. Mitglied in einer weiteren Gruppe? Solche Dinge meine ich
 
Kannst du denn Gemeinsamkeiten feststellen? ...
Ja, in der Tat.

Zunächstmal habe ich Stichprobenartig bei jenen nachgeschaut welche nicht befördert wurden.
Sie waren 3 oder mehr Tage nicht online.

Mein Testforum ist eine 1:1 Kopie und wurde angelegt/aktualisiert als xF1.1 Beta 1 rauskam und geupdatet auf B2.
Mit exakt der gleichen Beförderungsregel wurde NIEMAND befördert.
Das könnte insofern logisch sein, da auch keiner, ausser ich, dort online war.

Dann noch etwas:
Einem User hatte ich nach der erfolgreichen Beförderung das Häkchen zur Anhangsberechtigung Testweise wieder entzogen.
Ich wollte sehen ob er nach dem nächten Run wieder, was logisch wäre da er erst gestern online war, befördert wird.
Nein, das war erstaunlicherweise NICHT der Fall. Das Häkchen musste ich manuell wieder setzen.

Schon ein wenig kurios das Ganze.
 
PHP:
class XenForo_CronEntry_UserGroupPromotion
{
    /**
    * Runs the cron-based check for new promotions that users should be awarded.
    */
    public static function runPromotions()
    {
        /* @var $promotionModel XenForo_Model_UserGroupPromotion */
        $promotionModel = XenForo_Model::create('XenForo_Model_UserGroupPromotion');
        $promotions = $promotionModel->getPromotions(array(
            'active' => 1
        ));
        if (!$promotions)
        {
            return;
        }

/* @var $userModel XenForo_Model_User */
        $userModel = XenForo_Model::create('XenForo_Model_User');

        $users = $userModel->getUsers(array(
            'user_state' => 'valid',
            'is_banned' => 0,
            'last_activity' => array('>', XenForo_Application::$time - 86400)
        ), array(
            'join' => XenForo_Model_User::FETCH_USER_OPTION
        ));

wer entdeckt wieso es so ist?;)

'last_activity' => array('>', XenForo_Application::$time - 86400)

das heißt=>

es wurden nur die benutzer ausgewählt, die:

1. nicht gebannt sind
2. aktiiertes konto haben
3. in den letzen 24h aktiv waren

Wiedermal ein IMO Riesenschwachsinn............... wodurch man das Feature für viele Anwendungen nicht benutzen kann:(
 
Ragtek, das Elend ist ja das diese Beförderung ja nur alle 60 Minuten zur 20sten Minute läuft.
Wenn jemand online geht heisst das noch lange nicht das seine Beförderung für ihn bereits sofort aktiv ist.

Auf dem Testforum, auf welchem logischerweise niemand befördert wurde, hatte ich mich soeben mit manipuliertem Passwort angemeldet
und und "Cron"-Job manuell gestartet. Und siehe da ... das Häkchen war gesetzt resp. auf der DB die secondary_group_ids geändert.

4.png

Jetzt bleibt nur noch das Problem der manuellen Entfernung des Häkchens durch den Admin.
Wieso wird beim nächsten Run des Jobs die Beförderung nicht wiederholt obwohl er in den letzten 3 Std. online war?

Mist das diese ganze Logik allemal.
Darüber hinaus hat man selbst keine echte Kontrolle ob man selbst alles richtig gemacht hat.
 
/* @var $userModel XenForo_Model_User */
$userModel = XenForo_Model::create('XenForo_Model_User');

$users = $userModel->getUsers(array(
'user_state' => 'valid',
'is_banned' => 0,
'last_activity' => array('>', XenForo_Application::$time - 86400)
), array(
'join' => XenForo_Model_User::FETCH_USER_OPTION
));

Würde es Sinn machen diesen Queryteil zu entfernen?
und könnte man den "Cron"-Script" nicht deaktivieren und einen eigenen mit anderen Namen aktivieren?
 
Sinn => Jein.

Ich schätze die haben das Limit da reingebracht, damit der Cron nicht alle Benutzer durchgehen muss.
Könnte mir da vorstellen, dass es hier auch die Berühmte "Out of memory Meldung" geben könnte.

50 000 Benutzer * 10 verschiedene Beförderungen => 500 000 Schleifendurchgänge
 
Zurück
Oben