MyBB.de Forum

Normale Version: SIN - Online Today
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
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]
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! Big Grin ).

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
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: 
PHP-Code:
u.displaygroup 
ersetze 2x mit:
PHP-Code:
u.displaygroupu.lastactive 

suche 1x:
PHP-Code:
eval("\$onlinemembers .= \"".$templates->get("index_whosonline_memberbit"10)."\";"); 
ersetze 1x mit:
PHP-Code:
$user['lastactive'] = my_date($mybb->settings['timeformat'], $user['lastactive']);
                            eval(
"\$onlinemembers .= \"".$templates->get("index_whosonline_memberbit"10)."\";");
                            eval(
"\$onlinemembers .= \" (".$user['lastactive'].")\";"); 

und schon sollte die Darstellung "Userlink (letzteonlinezeit)" erreicht worden sein.

Liebe Grüße
Luna
hi Smile
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! Smile

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")."\";");
        }
}
?>
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  Big Grin Frage an andere hier: Wofür benutzen wir bei MyBB eigentlich eva();l? z. B. im oberen Bereich doch gar nichts notwendig oder?
(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" Smile

[ExiTuS]
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. Big Grin
@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?
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..  Big Grin 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:
PHP-Code:
{$onlinemembers

zu

PHP-Code:
{$onlinemembers_a
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 Big Grin 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 Blush also falls dich deine Erkältung zu weiteren Hilfestellungen beflügelt.. i am ready! Toungue
Seiten: 1 2