Beiträge: 7.004
Themen: 4.703
Registriert seit: 06.12.2006
21.03.2016, 13:50
(Dieser Beitrag wurde zuletzt bearbeitet: 07.11.2024, 11:35 von MyBB.de Bot.)
Eine neue Erweiterung wurde veröffentlicht: SIN - Online Today
Zitat:This plugin was originally created by CraKteR, he made the default functions and all.
I modernized, fixed and changed the compatibility to 1.8.7.
Inside the file are 2 readme's, CraK's one and my one, an inc file with plugins and languages.
And screenshots.
Any queries? Contact me: [email protected]
Beiträge: 32
Themen: 4
Registriert seit: 13.05.2017
MyBB-Version: 1.8.19
16.05.2017, 20:16
(Dieser Beitrag wurde zuletzt bearbeitet: 16.05.2017, 20:17 von Luna.)
Dieses Plugin ist suuuper <3
Allerdings würde ich es gerne noch an meine Bedürfnisse anpassen. Habe nun gestern sehr lange und heute den ganzen Tag versucht es alleine hin zu bekommen, aber ich weis einfach noch zu wenig um das zu schaffen (aber mein Verständnis wird beständig besser! ).
Ich würde gerne auf der Index in der alphabetisch sortierten Liste unter dem "Normalen WiO" hinter den Benutzernamen in Klammern anzeigen lassen, wann sie das letzte mal online waren. Habe versucht die onlinezeit mit in $onlinemembers zu speichern oder in die index_whosonline_memberbit noch $onlinetime dran zu hängen, allerdings führte alles nur zu wirren Ergebnissen (ja ich habe versucht die Funktionen aus der online.php einzufügen und anzupassen x3 zu hoch für mich). Einmal stand hinter allen Usern eine Zeit, nur leider bei allen die selbe, deswegen bitte ich, nachdem ich die Datei so zerschossen habe, dass gar nichts mehr davon angezeigt und ich sie auf Original zurückgesetzt habe um Hilfe.
Liebe Grüße
Luna
Beiträge: 32
Themen: 4
Registriert seit: 13.05.2017
MyBB-Version: 1.8.19
17.05.2017, 21:47
(Dieser Beitrag wurde zuletzt bearbeitet: 17.05.2017, 21:50 von Luna.)
So, ich habe mein 'Problemchen' nach langem suchen und ausprobieren selbst lösen können. Falls es Jemand genauso einbauen will, lasse ich hier mal meine Lösung da:
Anpassung der onlinetoday.php
suche 2x:
ersetze 2x mit:
PHP-Code: u.displaygroup, u.lastactive
suche 1x:
PHP-Code: eval("\$onlinemembers .= \"".$templates->get("index_whosonline_memberbit", 1, 0)."\";");
ersetze 1x mit:
PHP-Code: $user['lastactive'] = my_date($mybb->settings['timeformat'], $user['lastactive']); eval("\$onlinemembers .= \"".$templates->get("index_whosonline_memberbit", 1, 0)."\";"); eval("\$onlinemembers .= \" (".$user['lastactive'].")\";");
und schon sollte die Darstellung "Userlink (letzteonlinezeit)" erreicht worden sein.
Liebe Grüße
Luna
Beiträge: 103
Themen: 18
Registriert seit: 27.02.2012
10.07.2019, 08:08
(Dieser Beitrag wurde zuletzt bearbeitet: 10.07.2019, 08:31 von destrokk.)
hi
die Ändernungen von Luna funktionieren fabulös - aber wo genau muss ich das Komma definieren, damit es auch angezeigt wird? :/ momentan sieht es so aus:
test (06:37)test2 (06:01)noobtester (06:42)
ich hätte es gerne so:
test (06:37), test2 (06:01), noobtester (06:42), ..
also mit einem Komma nach der Klammer und dann wieder ein Leerzeichen~
Außerdem wäre es fabelhaft, wenn man die runden Klammern noch in Eckige umändern könnte; geht das, oder kollidiert das mit dem php-Code?
Danke schon mal!
Code: <?php
/**
* Copyright © 2006-2008 CraKteR, crakter [at] gmail [dot] com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* @version $Id: onlinetoday.php 29 2008-08-14 19:00:36Z CraKteR $
* @copyright $LastChangedDate: 2008-08-14 21:00:36 +0200 (to, 14 aug 2008) $
* @author CraKteR <crakter@gmail.com>
*/
if(!defined("IN_MYBB"))
{
die("This file cannot be accessed directly.");
}
$plugins->add_hook('index_start', 'add_onlinetoday', 1000000);
function onlinetoday_info()
{
return array(
"name" => "Show the users that has been online today",
"description" => "Shows the users that has been online within 24 hours.",
"website" => "www.realityforums.cf",
"author" => "CraKteR - Edited by Sinatra",
"authorsite" => "mailto:claustroagar@gmail.com",
"version" => "2.0",
"guid" => "c2f1dd8db9b4f3898cb58f5ed02f9b53",
"compatibility" => "18*",
);
}
function onlinetoday_activate()
{
global $db;
$template = array(
"tid" => NULL,
"title" => "online_today_index",
"template" => "<tr>
<td class=\"tcat\"><strong>{\$lang->whos_online_today}</strong> [<a href=\"online.php?action=today\">{\$lang->complete_list}</a>]</td>
</tr>
<tr>
<td class=\"trow1\"><span class=\"smalltext\">{\$lang->online_note_today}<br />{\$onlinemembers}</span></td>
</tr>",
"sid" => "-1"
);
$db->insert_query("templates", $template);
require MYBB_ROOT."/inc/adminfunctions_templates.php";
find_replace_templatesets('index_boardstats', '#{\$whosonline}#', "{\$whosonline}\n{\$online_today}");
}
function onlinetoday_deactivate()
{
global $db;
$db->query("DELETE FROM ".TABLE_PREFIX."templates WHERE title='online_today_index'");
require MYBB_ROOT."/inc/adminfunctions_templates.php";
find_replace_templatesets('index_boardstats', '#(\n?){\$online_today}#', '', 0);
}
function add_onlinetoday()
{
global $db, $mybb, $templates, $online_today, $lang, $theme;
$online_today = '';
if($mybb->settings['showwol'] != 0 && $mybb->usergroup['canviewonline'] != 0)
{
$lang->load("onlinetoday");
$lang->load("index");
$timesearch = time() - 24*60*60;
$queries = array();
$queries[] = $db->simple_select(
"users u LEFT JOIN ".TABLE_PREFIX."sessions s ON (u.uid=s.uid)",
"s.sid, s.ip, s.time, s.location, u.uid, u.username, u.invisible, u.usergroup, u.displaygroup, u.lastactive",
"u.lastactive > $timesearch ORDER BY u.username ASC, s.time DESC"
);
$queries[] = $db->simple_select(
"sessions s LEFT JOIN ".TABLE_PREFIX."users u ON (s.uid=u.uid)",
"s.sid, s.ip, s.uid, s.time, s.location, u.username, u.invisible, u.usergroup, u.displaygroup, u.lastactive",
"s.time>'$timesearch' ORDER BY u.username ASC, s.time DESC"
);
$comma = $onlinemembers = '';
$membercount = $guestcount = $anoncount = 0;
$doneusers = $ips = array();
foreach($queries as $query)
{
while($user = $db->fetch_array($query))
{
if(isset($user['sid']))
{
$botkey = strtolower(str_replace("bot=", '', $user['sid']));
}
if($user['uid'] > 0)
{
if($doneusers[$user['uid']] < $user['time'] || !$doneusers[$user['uid']])
{
if($user['invisible'] == 1)
{
++$anoncount;
}
++$membercount;
if($user['invisible'] != 1 || $mybb->usergroup['canviewwolinvis'] == 1 || $user['uid'] == $mybb->user['uid'])
{
$invisiblemark = ($user['invisible'] == 1) ? "*" : "";
$user['username'] = format_name($user['username'], $user['usergroup'], $user['displaygroup']);
$user['profilelink'] = build_profile_link($user['username'], $user['uid']);
$user['lastactive'] = my_date($mybb->settings['timeformat'], $user['lastactive']);
eval("\$onlinemembers .= \"".$templates->get("index_whosonline_memberbit", 1, 0)."\";");
eval("\$onlinemembers .= \" (".$user['lastactive'].")\";");
$comma = ", ";
}
if(isset($user['time']))
{
$doneusers[$user['uid']] = $user['time'];
}
else
{
$doneusers[$user['uid']] = $user['lastactive'];
}
}
}
else if(strstr($user['sid'], "bot=") !== false && $session->bots[$botkey] && !in_array($user['ip'], $ips))
{
$onlinemembers .= $comma.format_name($session->bots[$botkey], $session->botgroup);
$comma = ", ";
++$botcount;
}
else
{
++$guestcount;
$guests[] = $user['ip'];
}
}
}
$onlinecount = $membercount + $guestcount;
$onlinebit = ($onlinecount != 1) ? $lang->online_online_plural : $lang->online_online_singular;
$memberbit = ($membercount != 1) ? $lang->online_member_plural : $lang->online_member_singular;
$anonbit = ($anoncount != 1) ? $lang->online_anon_plural : $lang->online_anon_singular;
$guestbit = ($guestcount != 1) ? $lang->online_guest_plural : $lang->online_guest_singular;
$lang->online_note_today = $lang->sprintf($lang->online_note_today, my_number_format($onlinecount), $onlinebit, 24, my_number_format($membercount), $memberbit, my_number_format($anoncount), $anonbit, my_number_format($guestcount), $guestbit);
eval("\$online_today = \"".$templates->get("online_today_index")."\";");
}
}
?>
Beiträge: 1.136
Themen: 39
Registriert seit: 27.08.2014
10.07.2019, 15:19
(Dieser Beitrag wurde zuletzt bearbeitet: 10.07.2019, 15:22 von itsmeJAY.)
Suche (Zeile 114):
PHP-Code: eval("\$onlinemembers .= \" (" . $user['lastactive'] . ")\";");
ersetze mit:
PHP-Code: eval("\$onlinemembers .= \" (" . $user['lastactive'] . "), \";");
Ich weiß nicht wer den Code geschrieben hat (also das Plugin) - aber sauber ist was anderes Frage an andere hier: Wofür benutzen wir bei MyBB eigentlich eva();l? z. B. im oberen Bereich doch gar nichts notwendig oder?
Beiträge: 837
Themen: 8
Registriert seit: 08.02.2016
MyBB-Version: 1.8.38
(10.07.2019, 15:19)itsmeJAY schrieb: Frage an andere hier: Wofür benutzen wir bei MyBB eigentlich eva();l? z. B. im oberen Bereich doch gar nichts notwendig oder? Stimmt, dieses zweite eval() kann weg.
Übrigens sollte man eval() generell vermeiden, wenn möglich - zu volatil.
In diesem Sinne ein Zitat, sinngemäß: "eval() ist bloß die Antwort auf eine falsch gestellte Frage"
[ExiTuS]
Beiträge: 1.136
Themen: 39
Registriert seit: 27.08.2014
Ja, ich kenne keinen Programmierer der eval verwendet. Nachdem ich vor kurzem mal einen Programmierer gefragt habe, sagte er: Vergiss eval und benutz es niemals.
Beiträge: 103
Themen: 18
Registriert seit: 27.02.2012
10.07.2019, 17:14
(Dieser Beitrag wurde zuletzt bearbeitet: 10.07.2019, 17:15 von destrokk.)
@ itsmeJAY Dankesehr!
Ich hatte es mit Hilfe nun so geändert:
Code: $onlinemembers = $onlinemembers."(".$user['lastactive'].") , ";
also eval komplett rausgeschmissen.
Folgendes Problem: am Ende eines jeden Namens kommt dann ein Komma; wenn kein User mehr folgt, auch - kann man das ausklammern? Also, dass, wenn kein User mehr folgt, es auch kein Komma gibt?
Beiträge: 1.136
Themen: 39
Registriert seit: 27.08.2014
10.07.2019, 18:40
(Dieser Beitrag wurde zuletzt bearbeitet: 10.07.2019, 18:46 von itsmeJAY.)
jojo, das ist nen bisschen komplizierter weil der gute Herr Pluginentwickler kein Array genommen hat, sondern alles in einen String gepackt hat und innerhalb der foreach-Schleife gearbeitet hat. Ich bin weit entfernt jemand zu sein der sagt "anderer Quellcode ist scheiße" - aber der Quellcode wirft für mich einige Fragen auf.. Hast Glück, dass ich krank auf der Couch liege und gerade nichts zutun habe.. Kann sein, dass ich es umständlicher/komplizierter gemacht habe, als es eigentlich ist - aber egal...
Lass alles genau so wie es jetzt bei dir ist und füge unter
PHP-Code: $onlinemembers = $onlinemembers."(".$user['lastactive'].") , ";
folgendes ein:
PHP-Code: $onlinemembers_a = explode(",", $onlinemembers); $arraypop = array_pop($onlinemembers_a); $onlinemembers_a = implode(", ", $onlinemembers_a);
Anschließend wechsel im Adminbereich zu Templates & Styles -> Templates -> Global Templates -> online_today_index und ändere folgendes:
zu
Beiträge: 103
Themen: 18
Registriert seit: 27.02.2012
Yay! Ich preise deine Erkältung (oder was auch immer) ... wünsche dir aber trotzdem gute Besserung!
Es klappt alles ganz wunderbarst! Und schieben wir den "schrecklichen" Code einfach auf's Alter die anderen alternativen Plugins, die das selbe tun und auch noch aktualisiert werden, haben zu Fehlern geführt, wie in meinem anderen Hilfegesuch zum Thankyoulike-System zu sehen ist also falls dich deine Erkältung zu weiteren Hilfestellungen beflügelt.. i am ready!
|