Beiträge: 1.136
Themen: 39
Registriert seit: 27.08.2014
29.01.2020, 22:46
(Dieser Beitrag wurde zuletzt bearbeitet: 29.01.2020, 23:39 von itsmeJAY.)
(29.01.2020, 18:28)Schnapsnase schrieb: @SvePu
In der Datenbanktabelle "datacache" ist tatsächlich "mybot_remember" enthalten und gefüllt.
Jetzt nicht mehr.
Soll es das wirklich gewesen sein? Ich lass mich überraschen.
Vielen Dank für Deinen Hinweis!!!
Das ist übrigens nicht bzw. nur indirekt der Fehler. Spätestens beim nächsten aufrufen des Forums (von wem auch immer) wird die Hook global_end ausgeführt und der Cache wieder gefüllt. Du hast mit dem Leeren des Caches nur bewirkt, dass das Plugin sich nicht mehr daran erinnert, wer bereits angeschrieben wurde. Man kann den Eintrag im Cache natürlich komplett rausnehmen, dann würde es klappen.. Ist allerdings trotzdem unsauber für die, die die Funktion (ähnlich wie Schnapsnase) schon einmal aktiviert hatten und der Fehler nun auftritt.
Ich würde es so machen, da dies zu keinerlei Beeinträchtigung des Plugins führt und das Setting wenigstens mal angesprochen wird...
Suche in inc/plugins/mybot.php in Zeile 145 nach
und ändere dies ab zu:
PHP-Code: if (count($diff) == 0 || $mybb->settings['mybot_remember'] == 0 || $mybb->settings['mybot_remember'] == 'no')
Grüße,
itsmeJAY
Edit nach nochmaliger Überlegung:
... meine oben gepostete Variante funktioniert zwar, führt allerdings dazu, dass im Hintergrund trotzdem Code ausgeführt wird weil er nie in die if-Abfrage hier springt und somit nie returnen kann:
PHP-Code: if ($last_run !== false) { $last['date'] = date("j", $last_run['timestamp']); $last['month'] = date("n", $last_run['timestamp']); $last['year'] = date("Y", $last_run['timestamp']);
$now['date'] = date("j"); $now['month'] = date("n"); $now['year'] = date("Y");
//Is it time? $diff = array_diff_assoc($last, $now);
if (count($diff) == 0) //Nothing to do return; }
Wenn im Datacache der Eintrag nicht existiert, wird $last_run also false sein und er springt nie in den Funktionsblock und kann somit nie returnen. Somit wird der weitere Code unterhalb der if Abfrage ausgeführt. Deshalb, mache es am besten so und füg direkt unter die Funktion in Zeile 127 folgende if-Bedingung ein:
PHP-Code: function mybot_remember() { global $cache, $mybb, $db; if ($mybb->settings['mybot_remember'] == 0 || $mybb->settings['mybot_remember'] == 'no') { return; }
Das führt dazu, dass PHP direkt "stoppt" sobald die Funktion deaktiviert ist und gar nicht irgendwelchen anderen Code ausführt für die E-Mail-Funktion (Remember Funktion). Da freut der Interpreter sich bestimmt das er keine Arbeit für Nüsse machen muss
Beiträge: 2.234
Themen: 33
Registriert seit: 25.05.2018
MyBB-Version: 1.8.38
(29.01.2020, 21:21)itsmeJAY schrieb: Du hast bestimmt die 1.5 von github (https://github.com/JN-Jones/MyBot/blob/master/inc/plugins/mybot.php) Hi JAY,
ich kann mich ehrlich gesagt nicht mehr erinnern, wo ich gedownloadet habe. Es wird aber Vers. 1.5 angezeigt. Somit wirst Du wohl Recht haben.
(29.01.2020, 22:46)itsmeJAY schrieb: .....Man kann den Eintrag im Cache natürlich komplett rausnehmen, dann würde es klappen.. Ist allerdings trotzdem unsauber......
....Deshalb, mache es am besten so und füg direkt unter die Funktion in Zeile 127 folgende if-Bedingung ein:
PHP-Code: function mybot_remember() { global $cache, $mybb, $db; if ($mybb->settings['mybot_remember'] == 0 || $mybb->settings['mybot_remember'] == 'no') { return; }
Ich habe gestern in einem ersten Wutanfall den Eintrag "mybot_remember" aus der Datacache-Tabelle komplett entfernt.
Genügt jetzt Dein o.g. Code in Zeile 127, oder muss ich wieder einen "leeren" Eintrag im Datacache machen?
Zumindest mal vielen Dank für Deine Arbeit und die Info`s!!
Grüße
Beiträge: 1.136
Themen: 39
Registriert seit: 27.08.2014
30.01.2020, 11:24
(Dieser Beitrag wurde zuletzt bearbeitet: 30.01.2020, 11:25 von itsmeJAY.)
(30.01.2020, 07:45)Schnapsnase schrieb: (29.01.2020, 21:21)itsmeJAY schrieb: Du hast bestimmt die 1.5 von github (https://github.com/JN-Jones/MyBot/blob/master/inc/plugins/mybot.php) Hi JAY,
ich kann mich ehrlich gesagt nicht mehr erinnern, wo ich gedownloadet habe. Es wird aber Vers. 1.5 angezeigt. Somit wirst Du wohl Recht haben.
(29.01.2020, 22:46)itsmeJAY schrieb: .....Man kann den Eintrag im Cache natürlich komplett rausnehmen, dann würde es klappen.. Ist allerdings trotzdem unsauber......
....Deshalb, mache es am besten so und füg direkt unter die Funktion in Zeile 127 folgende if-Bedingung ein:
PHP-Code: function mybot_remember() { global $cache, $mybb, $db; if ($mybb->settings['mybot_remember'] == 0 || $mybb->settings['mybot_remember'] == 'no') { return; }
Ich habe gestern in einem ersten Wutanfall den Eintrag "mybot_remember" aus der Datacache-Tabelle komplett entfernt.
Genügt jetzt Dein o.g. Code in Zeile 127, oder muss ich wieder einen "leeren" Eintrag im Datacache machen?
Zumindest mal vielen Dank für Deine Arbeit und die Info`s!!
Grüße
Durch das Löschen des Caches dürften jetzt erstmal keine Mails mehr versendet werden. Ich würde trotzdem die if Anweisung in Zeile 127 unter die Funktion einfügen (wie oben gepostet) damit auch kein Code mehr ausgeführt wird und er das Setting berücksichtigt. Somit könntest du die Funktion auch wieder aktivieren und deaktivieren ohne dir Sorgen um den Datacache zu machen. Gilt auch für andere die den Bot verwenden.
Grüße
Beiträge: 2.234
Themen: 33
Registriert seit: 25.05.2018
MyBB-Version: 1.8.38
Besten Dank dafür
Grüße
Beiträge: 1.136
Themen: 39
Registriert seit: 27.08.2014
(30.01.2020, 11:41)Schnapsnase schrieb: Besten Dank dafür
Grüße
No problemo
Beiträge: 226
Themen: 10
Registriert seit: 06.03.2020
MyBB-Version: 1.8.27
Hallo liebe Gemeinde , ich habe heute den Bot mal installiert, bekomme im ACP die Fehlermeldung
Warning [2] Use of undefined constant MODULE - assumed 'MODULE' (this will throw an Error in a future version of PHP) - Line: 11 - File: admin/modules/user/mybot.php PHP 7.4.14 (Linux)
File Line Function
/admin/modules/user/mybot.php 11 errorHandler->error
/admin/index.php 824 require
Kann mir da einer von euch bitte weiterhelfen
lg Tc4me
Danke selbergelöst
ändere in der /admin/modules/user/mybot.php Zeile 8-11
Code: if(function_exists("myplugins_info"))
define(MODULE, "myplugins-mybot");
else
define(MODULE, "user-mybot");
in
/admin/modules/user/mybot.php
Code: if(function_exists("myplugins_info"))
define("MODULE", "myplugins-mybot");
else
define("MODULE", "user-mybot");
Fertig
Hy Gemeinde , nochmals ein Problem das ihr ev auch schon mit dem Bot hattet, GeburtstagsThread bzw Thread bei neuer Registrierung, wird bei mir nicht gemacht, habt ihr ev Erfahrung damit und könnt mir helfen? lg Tc4me
Hallo Leute , so Danke nochmals an Schnapsnase, der mir mit seine Hilfe doch sehr sehr geholfen hat. Alle Tipps durchgearbeitet, der Erfolg : nachdem ich alle Plugins mal deaktiviert habe und nur mal den Mybot installiert habe, funktionierte dieser problemlos! Danach ein nach dem anderen wieder aktiviert und siehe da, es funktioniert alles perfekt! DANKE !!!!!!!!!!!!!!!
Schönen Sonntag lg Tc4me
Beiträge: 226
Themen: 10
Registriert seit: 06.03.2020
MyBB-Version: 1.8.27
Hy ItsmeJAY Hy Schnapsnase, sorry das ich euch nerve, also ich habe auch die Version 1.5 installiert und wollte den Rat von ItsmeJAY folgen und in der Zitat : direkt unter die Funktion in Zeile 127
das ein :
PHP-Code: function mybot_remember() { global $cache, $mybb, $db; if ($mybb->settings['mybot_remember'] == 0 || $mybb->settings['mybot_remember'] == 'no') { return; }
könntet ihr mit zeigen wie der fertige code aussieht ? Bitte
PHP-Code: function mybot_remember() { global $cache, $mybb, $db;
$last_run = $cache->read("mybot_remember"); if ($last_run !== false) { $last['date'] = date("j", $last_run['timestamp']); $last['month'] = date("n", $last_run['timestamp']); $last['year'] = date("Y", $last_run['timestamp']);
$now['date'] = date("j"); $now['month'] = date("n"); $now['year'] = date("Y");
//Is it time? $diff = array_diff_assoc($last, $now); if (count($diff) == 0 || $mybb->settings['mybot_remember'] == 0 || $mybb->settings['mybot_remember'] == 'no') //if (count($diff) == 0) //Nothing to do return; }
Ich komme nicht klar damit, wenn ich dass einfüge , ist das Forum Fehler 500 ...
Danke
Beiträge: 511
Themen: 101
Registriert seit: 07.03.2015
MyBB-Version: 1.8.33
15.06.2021, 14:25
(Dieser Beitrag wurde zuletzt bearbeitet: 15.06.2021, 14:37 von skrilaxrev.)
Also, zunächst einmal zu dem hier:
(17.01.2021, 15:44)tc4me schrieb: Danke selbergelöst
ändere in der /admin/modules/user/mybot.php Zeile 8-11
Code: if(function_exists("myplugins_info"))
define(MODULE, "myplugins-mybot");
else
define(MODULE, "user-mybot");
in
/admin/modules/user/mybot.php
Code: if(function_exists("myplugins_info"))
define("MODULE", "myplugins-mybot");
else
define("MODULE", "user-mybot");
Fertig
...hat bei mir geklappt! Vielen Dank! Der Fehler aus dem Admin-Bereich ist schon mal weg.
Und zu deinem letzten Post: Bei mir funktioniert der Code. Vor der Änderung hat sich meine Seite totgeladen, sobald ich das Plugin aktiviert habe, aber nach der Anpassung nicht mehr. Du musst einfach nur den untern Code mit dem oberen deines Beitrages ersetzen. So habe ich es zumindest gemacht und nun lädt die Seite wieder, was schon einmal ein gutes Zeichen ist...
Mir fällt aber gerade auf, dass dein Server mit PHP 7.4 läuft und meiner irgendwie noch auf PHP 7.3. Ich taste mich da ran, aber wer weiß. Wenn ich auf PHP 7.4 stelle, funktioniert es bei mir vielleicht auch nicht mehr. Ich werde das mal demnächst testen und dir Bescheid geben.
Bis dahin, mal sehen welches Abendteuer als nächstes auf mich wartet. Wie gesagt, ab PHP 7.x läuft vieles nicht mehr.
Gerade noch mal getestet, also Auto-PN bei Themeneröffnung funktioniert z.B. (habe auch die Github-Version 1.5 genommen, inklusive der in diesem Beitrag genannten Anpassungen).
Jetzt weiß ich übrigens wieso mein Forum vorhin solange geladen hat.
Ja, da gingen bereits einige Mails raus und ja, sie haben zur Uhrzeit der Änderung aufgehört.^^
Danke an itsmeJAY für diesen Code!
Beiträge: 93
Themen: 11
Registriert seit: 07.03.2020
MyBB-Version: 1.8.33
03.04.2023, 22:51
(Dieser Beitrag wurde zuletzt bearbeitet: 03.04.2023, 22:56 von Shorty.)
Hallo,
wen ich auf einen Beitrag über den Button Antworten (Nicht Schnellantwort), bekomme ich Folgenden Fehler.
Uncaught Error: Non-static method JB_Classes_StorableObject::getDefaultOptions() cannot be called statically in /var/www/vhosts/computer-fun-area.de/httpdocs/inc/plugins/jones/core/Classes/StorableObject.php:47\nStack trace:\n#0 /var/www/vhosts/computer-fun-area.de/httpdocs/inc/plugins/mybot.php(92): JB_Classes_StorableObject::getAll()\n#1 /var/www/vhosts/computer-fun-area.de/httpdocs/inc/plugins/jones/mybot/classes/Rule.php(63): mybot_cache_update()\n#2 /var/www/vhosts/computer-fun-area.de/httpdocs/inc/plugins/mybot.php(303): JB_MyBot_Rule::getFromCache()\n#3 /var/www/vhosts/computer-fun-area.de/httpdocs/inc/plugins/mybot.php(271): mybot_work()\n#4 /var/www/vhosts/computer-fun-area.de/httpdocs/inc/class_plugins.php(142): mybot_post()\n#5 /var/www/vhosts/computer-fun-area.de/httpdocs/newreply.php(600): pluginSystem->run_hooks()\n#6 {main}\n thrown in /var/www/vhosts/computer-fun-area.de/httpdocs/inc/plugins/jones/core/Classes/StorableObject.php on line 47', referer: https://computer-fun-area.de/newreply.php?tid=1
*EDIT*
Bitte im Plugin MyBot zusammenfügen, sorry habe eben erst festgestellt das der Fehler von diesem Plugin verursacht wird
Beiträge: 830
Themen: 8
Registriert seit: 08.02.2016
MyBB-Version: 1.8.38
Das Plug-In "MyBots" hat schon einen langen Bart und ist vor ca. 8 Jahren das letzte Mal aktualisiert worden.
Sofern der PHP-Code nicht aktualisiert und auf aktuelles PHP-Level gebracht wird, gehört es begraben.
Eventuell genügen schon ein paar Änderungen, um es wieder lauffähig zu bekommen. Da muss man selbst ran, denn auf den ursprünglichen Entwickler wird man nicht mehr zählen können.
[ETS]
|