[Final] phpbb-ext-f1webtip ( F1 WebTipp ) 1.0.5

In diesem Forum können Extension-Autoren ihre Extensions vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 15430
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

[Final] phpbb-ext-f1webtip ( F1 WebTipp ) 1.0.5

Beitragvon Dr.Death » 13.05.2014 19:29

Hallo zusammen,

ich habe meinen Formel 1 WebTipp MOD für phpBB 3.1.x und phpBB 3.2.x portiert:

Stand 29.01.2017 ist er fertig für phpBB 3.1.x und 3.2.x

Folgende Features sind vorhanden:
  • Installation der Extension im ACP
  • ACP Module der Extension (Es können dediziert Berechtigungen im ACP vergeben werden)
  • Navigations Link auf der Foren Seite
  • Hinweise auf der "Wer ist online" Seite, wenn sich ein Benutzer im F1 WebTip aufhält
  • Darstellung des F1 WebTip Rankings auf der Profilansicht des Benutzers
  • Darstellung des F1 WebTip Rankings im View Topic Bereich des Benutzers
  • Der F1 WebTipp kann für Gäste sichtbar geschaltet werden, kann nur von registrierten Benutzern genutzt werden oder wird auf eine bestimmte Benutzergruppe beschränkt
  • Es können automatisch Erinnerungsmails per Mail versendet werden (nur wenn der F1 WebTipp auf eine Benutzergruppe beschränkt worden ist)
  • Moderatoren können Qualifying und Rennergebnisse eintragen
  • Dank Unimatrix_0 werden bereits gesetzte Fahrer aus den übrigen DropDown Boxen inaktiv, damit kein Fahrer versehentlich mehrfach getippt werden kann.
  • Es wird ein Countdown bis zum Tipp Ende angezeigt, danach ist keine Tipp Abgabe mehr möglich. (Zeit bis zur Deadline ist im ACP frei einstellbar)
  • Der F1 WebTipp unterstützt auch das Responsive Style, d.h. auf mobilen Endgeräten wird eine angepasste Darstellung aktiviert.
  • Version Check im ACP.
  • Vergabe von doppelter Punktzahl



  • Download (und Screenshots) der Mod: http://drdeath.github.io/phpbb-ext-f1webtip/
  • Installation: Entpacke die heruntergeladene ZIP Datei. Du wirst einen neuen Ordner finden. Kopiere den Inhalt des neuen Ordners in Dein Forumsverzeichnis unter ext/ und danach im Administrations-Bereich unter Anpassen --> Erweiterungen verwalten --> F1 Webtip aktivieren --> fertig
  • Es sind KEINE Veränderungen an irgendwelchen Dateien notwendig!


Anmerkungen von euch oder weitere Infos von mir, gibt es hier im Thema.
Zuletzt geändert von Dr.Death am 29.01.2017 13:05, insgesamt 26-mal geändert.

Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 15430
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Re: [DEV] phpbb-ext-f1webtip

Beitragvon Dr.Death » 18.05.2014 13:35

Update:

  • WebTip Frontend für die F1 WebTipp User und F1 WebTipp Moderatoren ist fertig
  • Darstellung der Tipp Punkte auf der User Profil Seite
  • Darstellung der Tipp Punkte im View Topic User Bereich.

Der WebTipp ist also im jetzigen Zustand schon komplett "spielbar".

Es fehlen momentan nur noch das "nice to have" Feature:
- Versenden von Erinnerungs-Mails 2 bis 3 Tage vor Rennbeginn

Allerdings beiße ich mir genau daran die Zähne aus.... die User Funktionen $user->format_date() und das versenden von Mails wollen einfach nicht klappen innerhalb des Cronjobs..... vielleicht sollte ich das einfach mal aussitzen, bis jemand anderes einen Geistesblitz hat :roll:

Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 15430
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Re: [DEV] phpbb-ext-f1webtip

Beitragvon Dr.Death » 20.05.2014 10:27

Ich komme tatsächlich nicht weiter..... vielleicht findet sich aber jemand, der mir auf die Sprünge hilt....

Ladet Euch die jetzige Extension herunter und tauscht noch folgende Dateien aus:

config / services.yml

Code: Alles auswählen

imports:
    - { resource: tables.yml }

services:
    drdeath.f1webtip.controller:
        class: drdeath\f1webtip\controller\main
        arguments:
            - @config
            - @controller.helper
            - @template
            - @user
    drdeath.f1webtip.listener:
        class: drdeath\f1webtip\event\main_listener
        arguments:
            - @controller.helper
            - @template
        tags:
            - { name: event.listener }
    cron.task.core.email_reminder:
        class: drdeath\f1webtip\cron\task\core\email_reminder
        arguments:
            - @config
            - @controller.helper
            - @template
            - @user
        calls:
            - [set_name, [cron.task.core.email_reminder]]
        tags:
            - { name: cron.task }


cron / task / core / email_reminder.php

Code: Alles auswählen

<?php
/**
*
* @package phpBB Extension - DrDeath F1WebTip
* @copyright (c) 2013 phpBB Group
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
*
*/

namespace drdeath\f1webtip\cron\task\core;

/**
* @ignore
*/
if (!defined('IN_PHPBB'))
{
    exit;
}

class email_reminder extends \phpbb\cron\task\base
{
    /* @var \phpbb\config\config */
    protected $config;

    /* @var \phpbb\controller\helper */
    protected $helper;

    /* @var \phpbb\template\template */
    protected $template;

    /* @var \phpbb\user */
    protected $user;

    /**
    * Constructor
    *
    * @param \phpbb\config\config        $config
    * @param \phpbb\controller\helper    $helper
    * @param \phpbb\template\template    $template
    * @param \phpbb\user                $user
    */
    public function __construct(\phpbb\config\config $config, \phpbb\controller\helper $helper, \phpbb\template\template $template, \phpbb\user $user)
    {
        $this->config = $config;
        $this->helper = $helper;
        $this->template = $template;
        $this->user = $user;
    }

    /**
    * Runs this cron task.
    *
    * @return null
    */
    public function run()
    {
        global $db, $user, $auth, $template, $cache, $request;
        global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;
        global $phpbb_container, $phpbb_extension_manager, $phpbb_path_helper, $phpbb_log, $datetime, $lang;

        // Update the last run timestamp to today (i.e. 6192013 --> 06.19.2013)
        $check_time = (int) gmdate('mdY',time());
        $this->config->set('drdeath_f1webtip_reminder_last_run', $check_time, true);


        
        
//Debug: Reset cron lock 
        $config->set('cron_lock', '0');
        $config->set('drdeath_f1webtip_reminder_last_run', '1', true);
        
        $race_time        
= time();

        $event_stop        = date($race_time - $config['drdeath_f1webtip_deadline_offset']);
            
        echo 
"<br/>Var event_stop = $event_stop <br/>";

        echo "<pre>";print_r($user);echo "</pre>";
        
        $b_day            
= $this->user->format_date($event_stop, 'd');
            


        

        
// Log the cronjob run
        add_log('admin', 'LOG_FORMEL_CRON');
        
        return
;
    }

    /**
    * Returns whether this cron task can run, given current board configuration.
    *
    * @return bool
    */
    public function is_runnable()
    {
        return true;
        // return (bool) $this->config['drdeath_f1webtip_reminder_enabled'];
    }

    /**
    * Returns whether this cron task should run now, because enough time
    * has passed since it was last run.
    *
    * @return bool
    */
    public function should_run()
    {
        //$check_time = (int) gmdate('mdY',time());
        //return $this->config['drdeath_f1webtip_reminder_last_run'] != $check_time;
        return true;
    }
}

?>


Dann aktiviert ihr die Extension im ACP und setzt folgende Option in
ACP / General / Server settings / Run periodic tasks from system cron: YES

Aktiviert in der config.php noch die DEBUG Ausgabe.


Wenn man jetzt sein lokales Forum mit
http:// localhost / dein_forum / cron.php
aufruft, erscheinen alle Cronjobs, die gerade verfügbar sind.

Beispielausgabe:
[phpBB cron] Running task 'cron.task.core.prune_all_forums' [phpBB cron] Running task 'cron.task.core.email_reminder'


Allerdings scheitere ich beim Versuch eines simplen Befehls:

Code: Alles auswählen

$b_day            = $this->user->format_date($event_stop, 'd');


$event_stop beinhaltet einen normalen Timestamp, mehr nicht

Fehlermeldung sind:
[phpBB Debug] PHP Warning: in file [ROOT]/phpbb/user.php on line 712: DateTime::setTimezone() expects parameter 1 to be DateTimeZone, null given
[phpBB Debug] PHP Notice: in file [ROOT]/phpbb/datetime.php on line 148: Undefined index: datetime
[phpBB Debug] PHP Warning: in file [ROOT]/phpbb/datetime.php on line 148: array_filter() expects parameter 1 to be array, null given
[phpBB Debug] PHP Warning: in file [ROOT]/phpbb/datetime.php on line 112: strtr(): The second argument is not an array


Anscheinen wird das $user array nicht komplett gefüllt (von mir aus nehme ich auch den User ANONYMOUS....)

Teile vom $user array sehen zu diesem Zeitpunkt so aus:

Code: Alles auswählen

phpbb\user Object
(
    [lang] => Array
        (
        )

    [help] => Array
        (
        )

    [style] => Array
        (
        )

    [date_format] =>
    [timezone] =>
    [lang_name] =>
    [lang_id] =>
    [lang_path] => ./language/
    [img_lang] =>


Was habe ich vergessen?
Ich sehe momentan den Wald vor lauter Bäumen nicht ;-(

Benutzeravatar
nickvergessen
Ehrenadmin
Beiträge: 11558
Registriert: 09.10.2006 21:56
Wohnort: Stuttgart, Germany
Kontaktdaten:

Re: [DEV] phpbb-ext-f1webtip

Beitragvon nickvergessen » 20.05.2014 13:38

Könnte daran liegen wenn das Sprachpaket nicht ganz aktuell ist.
Wenn es das nicht ist, werd ich nochmal nachsehen.
kein Support per PN

Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 15430
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Re: [DEV] phpbb-ext-f1webtip

Beitragvon Dr.Death » 20.05.2014 14:16

Hm,

für mich sieht es auch so aus, als wenn zum Zeitpunkt des Cron Aufrufs keinerlei Sprachpaket angezogen wurde..... das $user array ist zu diesem Zeitpunkt nicht komplett gefüllt, daher dann auch die "Folgefehler" mit dem $user->format_date()

Ziel ist es durch einen Cron Task, einmal täglich zu prüfen, ob ein Rennen in den nächsten 3 Tagen vorliegt.
Wenn ja, dann sollen alle User einer bestimmten Gruppe per Mail darüber informierten werden.
Anschliessend wird das betroffene Rennen "markiert", damit am nächsten Tag keine erneute Erinnerungsmail versendet wird.


Aber schon mal Danke für das Betrachten des Fehlers......


UPDATE:

  • Deutsches Sprachpaket für den F1 WebTipp hinzugefügt.
  • Viewonline Status auf der Seite "Wer ist online" hinzugefügt

Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 15430
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Re: [DEV] phpbb-ext-f1webtip

Beitragvon Dr.Death » 22.05.2014 16:58

Anscheinend habe ich das Problem mit dem leeren $user Objekt gefunden.

Zum Zeitpunkt des Cron Task ist das Objekt tatsächlich leer, da es noch nicht mit:

Code: Alles auswählen

        $user->setup();


gefüllt wurde!

Nach einfügen des Codes sollte der Rest auch klappen....

Edit:

Zu früh gefreut.... nun hänge ich am initiieren der Messenger Klasse fest :-(

Datei
cron / task / core / email_reminder.php

sieht zum Testen wie folgt aus:

Code: Alles auswählen

<?php
/**
*
* @package phpBB Extension - DrDeath F1WebTip
* @copyright (c) 2013 phpBB Group
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
*
*/

namespace drdeath\f1webtip\cron\task\core;

/**
* @ignore
*/
if (!defined('IN_PHPBB'))
{
    exit;
}

class email_reminder extends \phpbb\cron\task\base
{
    /* @var \phpbb\config\config */
    protected $config;

    /* @var \phpbb\controller\helper */
    protected $helper;

    /* @var \phpbb\template\template */
    protected $template;

    /* @var \phpbb\user */
    protected $user;

    /**
    * Constructor
    *
    * @param \phpbb\config\config        $config
    * @param \phpbb\controller\helper    $helper
    * @param \phpbb\template\template    $template
    * @param \phpbb\user                $user
    */
    public function __construct(\phpbb\config\config $config, \phpbb\controller\helper $helper, \phpbb\template\template $template, \phpbb\user $user)
    {
        $this->config = $config;
        $this->helper = $helper;
        $this->template = $template;
        $this->user = $user;
    }

    /**
    * Runs this cron task.
    *
    * @return null
    */
    public function run()
    {
        global $db, $user, $auth, $template, $cache, $request;
        global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;
        global $phpbb_container, $phpbb_extension_manager, $phpbb_path_helper, $phpbb_log, $datetime, $lang;

        // Update the last run timestamp to today (i.e. 6192013 --> 06.19.2013)
        $check_time = (int) gmdate('mdY',time());
        $this->config->set('drdeath_f1webtip_reminder_last_run', $check_time, true);


        
        
// Debug Start: Reset cron lock 
        $config->set('cron_lock', '0');
        $config->set('drdeath_f1webtip_reminder_last_run', '1', true);
        // Debug Ende
        
        $race_time        
= time();

        $event_stop        = date($race_time - $config['drdeath_f1webtip_deadline_offset']);
                    
        $b_day            
= $this->user->format_date($event_stop, 'd');
            

        
//Mail Settings
        $use_queue         = false;
        $used_method     = NOTIFY_EMAIL;
        $priority         = MAIL_NORMAL_PRIORITY;
        
        include_once
($phpbb_root_path . 'includes/functions_messenger.' . $phpEx);
        include_once($phpbb_root_path . 'includes/functions_user.' . $phpEx);
        $messenger = new messenger($use_queue);
        
        
// hier ist das Script schon gestorben //

        // Log the cronjob run
        add_log('admin', 'LOG_FORMEL_CRON');
        
        return
;
    }

    /**
    * Returns whether this cron task can run, given current board configuration.
    *
    * @return bool
    */
    public function is_runnable()
    {
        return true;
        // return (bool) $this->config['drdeath_f1webtip_reminder_enabled'];
    }

    /**
    * Returns whether this cron task should run now, because enough time
    * has passed since it was last run.
    *
    * @return bool
    */
    public function should_run()
    {
        //$check_time = (int) gmdate('mdY',time());
        //return $this->config['drdeath_f1webtip_reminder_last_run'] != $check_time;
        return true;
    }
}

?>


Fehlermeldung lautet:

Fatal error: Class 'drdeath\f1webtip\cron\task\core\messenger' not found in /..../phpbb31/ext/drdeath/f1webtip/cron/task/core/email_reminder.php


Nur warum findet er die Klasse nicht? Die Datei includes/functions_messenger.php wurde ja erfolgreich geladen..... irgendwie hab ich mittlerweile ein Brett vorm Kopf...oder ich werde alt ;-)

Habe dazu mal ein neuen Branch auf github angelegt:
https://github.com/DrDeath/phpbb-ext-f1webtip/tree/feature/Cron_reminder

Um den Fehler zu sehen einfach in der Datei cron / task / core / email_reminder.php
Zeile 144 von:
// $messenger = new messenger($use_queue);
in
$messenger = new messenger($use_queue);

ändern und die cron.php aufrufen.....
Zuletzt geändert von Dr.Death am 23.05.2014 23:56, insgesamt 1-mal geändert.

Benutzeravatar
nickvergessen
Ehrenadmin
Beiträge: 11558
Registriert: 09.10.2006 21:56
Wohnort: Stuttgart, Germany
Kontaktdaten:

Re: [DEV] phpbb-ext-f1webtip

Beitragvon nickvergessen » 23.05.2014 00:04

Du musst \messenger benutzen (mit Backslash am Anfang) um den Namespace zubeheben
kein Support per PN

Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 15430
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Re: [DEV] phpbb-ext-f1webtip

Beitragvon Dr.Death » 23.05.2014 08:08

whaaaaaa........ :o :oops: 8) :D


Danke !!!eins!!!111!!elf!!!!! :roll: :wink: :cookie:

Das ist die Rätsels Lösung!

Vielen Dank! Der letzte Stein ist beseitigt.....

Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 15430
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Re: [DEV] phpbb-ext-f1webtip

Beitragvon Dr.Death » 23.05.2014 20:19

Update:

Die phpBB Extension F1 WebTip ist nun mit allen alten, bekannten Features "phpBB 3.1 beta 3" ready !

Alles was Ihr vom momentan aktuellen phpBB 3 F1 WebTipp kennt ist nun auf phpBB 3.1 beta 3 portiert worden.


Bitte beachtet: phpBB 3.1 ist noch nicht für den produktiven Betrieb gedacht !

Sobald der erste Release Candidat von phpBB 3.1 verfügbar ist, werde ich die momentane Version 0.1.0 entfernen und eine neue 1.0.0 Version veröffentlichen.

Download der phpBB 3.1 beta 3 Extension phpbb-ext-f1webtip findet Ihr hier:
https://github.com/DrDeath/phpbb-ext-f1webtip


Nochmals Danke an alle, die mir in den letzten Tagen wertvolle Tipps und Hinweise gegeben haben.....


Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 15430
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Re: [DEV] phpbb-ext-f1webtip ( F1 WebTipp )

Beitragvon Dr.Death » 30.05.2014 17:47

Update: Siehe erster Beitrag

Die Extension ist nun phpBB 3.1 Beta 4 fertig.

Wer bisher die Version "0.1.0" installiert hatte, sollte bitte vor Installation der "1.0.0-dev" Version die Extension entfernen:
1. Deaktiviere die Erweiterung
2. Lösche die Daten der Erweiterung
3. Lösche die Dateien der Erweiterung aus dem Dateisystem


Erst danach bite die Version 1.0.0-dev installieren.
Die nachfolgenden Version werden einfach aktualisiert....


Zurück zu „Extensions in Entwicklung“