31.08.2021, 15:10
Hallo zusammen,
ich bin neu in der Plugin Entwicklung für mybb und hab nun ein plugin geschrieben das mir Kopfschmerzen macht.
Das Plugin läuft mit dem Hook global_start und soll im Header einen täglichen Countdown anzeigen.
Das Plugin funktioniert soweit auch, das heisst die Info wird an der richtigen Stelle im Header angezeigt. Sobald ich aber das Plugin aktiviere funktioniert die Standard Funktion "Welche Beiträge hab ich noch nicht gesehen" nicht mehr, das heisst es werden mir alle Beiträge seit Aktivierung des Plugins als nicht gesehen angezeigt.
Es gibt keine Meldungen in der Konsolenansicht des Browsers.
Irgendwas mach ich falsch, aber was?
Code anbei....
ich bin neu in der Plugin Entwicklung für mybb und hab nun ein plugin geschrieben das mir Kopfschmerzen macht.
Das Plugin läuft mit dem Hook global_start und soll im Header einen täglichen Countdown anzeigen.
Das Plugin funktioniert soweit auch, das heisst die Info wird an der richtigen Stelle im Header angezeigt. Sobald ich aber das Plugin aktiviere funktioniert die Standard Funktion "Welche Beiträge hab ich noch nicht gesehen" nicht mehr, das heisst es werden mir alle Beiträge seit Aktivierung des Plugins als nicht gesehen angezeigt.
Es gibt keine Meldungen in der Konsolenansicht des Browsers.
Irgendwas mach ich falsch, aber was?
Code anbei....
PHP-Code:
<?php
// Disallow direct access to this file for security reasons
if(!defined("IN_MYBB"))
{
die("Direct initialization of this file is not allowed.");
}
$plugins->add_hook('global_start','countdown_run');
function countdown_info()
{
return array(
"name" => "CountDown for MyBB",
"description" => "CountDown for MYBB",
"website" => "",
"author" => "",
"authorsite" => "",
"version" => "1.0",
"guid" => "",
"compatibility" => "1*"
);
}
function countdown_activate()
{
global $db, $mybb;
$settingsgroup = array(
"name" => "countdown",
"title" => "Countdown Events",
"description" => "Countdown for oncoming events",
"disporder" => 1,
"isdefault" => 0);
$db->insert_query("settinggroups", $settingsgroup);
$gid = $db->insert_id();
$settings[] = array(
"name" => "countdown_active",
"title" => "Countdown Active?",
"description" => "Enable the Countdown",
"optionscode" => "onoff",
"value" => "off",
"disporder" => 1,
"gid" => $gid);
$settings[] = array(
"name" => "countdown_date",
"title" => "Countdown Date",
"description" => "Please enter the date for your countdown like (dd-mm-yyyy) e.g. 06-16-2022",
"optionscode" => "text",
"value" => "",
"disporder" => 2,
"gid" => $gid);
$settings[] = array(
"name" => "countdown_text",
"title" => "Countdown Text",
"description" => "What kind of text do you want to print on the page (XXX is placeholder for countdown) like -Just XXX days-",
"optionscode" => "text",
"value" => "",
"disporder" => 3,
"gid" => $gid);
$settings[] = array(
"name" => "countdown_link",
"title" => "Countdown Link",
"description" => "Any link for the Text?",
"optionscode" => "text",
"value" => "",
"disporder" => 4,
"gid" => $gid);
$settings[] = array(
"name" => "countdown_ende",
"title" => "Countdown End",
"description" => "Text if countdown ends?",
"optionscode" => "text",
"value" => "",
"disporder" => 5,
"gid" => $gid);
foreach($settings as $setting) {
$db->insert_query("settings", $setting);
}
rebuild_settings();
}
function countdown_deactivate()
{
global $db;
$db->query("DELETE FROM " . TABLE_PREFIX . "settinggroups WHERE name='countdown'");
$db->query("DELETE FROM " . TABLE_PREFIX . "settings WHERE name IN ('countdown_date', 'countdown_text', 'countdown_link', 'countdown_active', 'countdown_ende')");
rebuild_settings();
}
//RUN
function countdown_run() {
global $db;
global $countdown;
//A: RECORDS TODAY'S Date And Time
$today = time();
// erst mal schauen ob Event aktiv ist
$query= $db->simple_select("settings","*", "name='countdown_active'", array(
"order_by" => 'name',
"order_dir" => 'DESC',
"limit" => 1));
$countdown_active=$db->fetch_array($query)[value];
//wenn aktiv dann...
if ($countdown_active==1)
{
// Datum aufschlüsseln
$query= $db->simple_select("settings","*", "name='countdown_date'", array(
"order_by" => 'name',
"order_dir" => 'DESC',
"limit" => 1));
$countdown_date=$db->fetch_array($query)[value];
//$date=$countdown_date[value];
$day=substr($countdown_date,0,2);
$month=substr($countdown_date,3,2);
$year=substr($countdown_date,6,4);
$event = mktime(0,0,0,$day,$month,$year);
//Errechnen wann das Event ist
$countdown = round(($event - $today)/86400);
if ($countdown>0)
{
// Text des Events abholen
$query= $db->simple_select("settings","*", "name='countdown_text'", array(
"order_by" => 'name',
"order_dir" => 'DESC',
"limit" => 1));
$countdown_text=$db->fetch_array($query)[value];
//LInk des Events abholen
$query= $db->simple_select("settings","*", "name='countdown_link'", array(
"order_by" => 'name',
"order_dir" => 'DESC',
"limit" => 1));
$countdown_link=$db->fetch_array($query)[value];
//Daten in Variable auslagern zur Darstellung im Template
$countdown="<li><a href=\"".$countdown_link."\" class=\"merlintreffen\">".str_replace("XXX",$countdown, $countdown_text)."</a></li>";
}
// Wenn Countdown erreicht, dann nichts darstellen!
else
{
//LInk des Events abholen
$query= $db->simple_select("settings","*", "name='countdown_ende'", array(
"order_by" => 'name',
"order_dir" => 'DESC',
"limit" => 1));
$countdown_link=$db->fetch_array($query)[value];
$countdown="<li><a href=\"".$countdown_link."\" class=\"merlintreffen\">". $countdown_ende ."</a></li>";
}
}
//Wenn nicht aktiv dann nichts darstellen
else $countdown="";
}