Gravatar Hovercards – samt Easter Egg

Gravatar dürfte den meisten mittlerweile ein Begriff sein – schließlich verbreiten sich die Bildchen sowohl bei Blog-Kommentatoren als auch in den Themes der Blogger immer weiter. Seit einiger Zeit bietet Gravatar aber nicht nur Bilder zu E-Mail-Adressen, sondern auch Nutzerprofile, die auch als „Hovercards“ angezeigt werden können, wenn man mit dem Cursor über dem Gravatar-Bild schwebt. Das kann dann so aussehen:

meine Gravatar-Hovercard

Nun hat Hans ein Easter Egg, also eine versteckte, meist lustige Programmfunktion, entdeckt: Wenn man mit der rechten Maustaste auf das Gravatar-Icon (das liegende G mit blauem Hintergrund) rechts oben in der Hovercard klickt, beginnen sich die Gravatare (und eventuell vorhandene weitere Bilder des Nutzers) zu drehen. Nett. :) (Auch wenn der Rahmen je nach Theme dabei etwas komisch aussieht…)

Wie man im Gravatar-Quellcode sehen kann, geht anstelle der rechten Maustaste auch die linke, wenn man gleichzeitig die Strg-, Alt- oder Meta-Taste drückt (letztere gibt’s auf PCs üblicherweise nicht, auf Macs sollte das alle 3 Zusatztasten abdecken). Dieses Osterei funktioniert bei mir unter Windows 7 mit Firefox, Chrome und Safari1, nicht aber mit Opera oder IE 8.

Hans‘ heutigen und des Chaosweibs gestrigen Beitrag hab ich auch zum Anlass genommen, zum einen mein Gravatar-Profil endlich mit Inhalt zu bestücken – das geht naheliegenderweise bei Gravatar, wenn man sich dort einloggt –, zum anderen die Hovercards auch bei mir einzubinden.

Beide haben dazu schon dieses Plugin verlinkt sowie Hans diese Selbstbau-Anleitung, die nur eine einzige Codezeile erfordert, mit der ein JavaScript2 von Gravatar nachgeladen wird.

Es sei denn, man will es etwas differenzierter: Da Gravatare nur unter einem Beitrag oder unter einer Seite zu sehen sind (wenn man sie nicht auch in der Sidebar z.B. bei den neuesten Kommentaren verwendet), braucht man die Datei auf der Start- oder den Archivseiten nicht, deswegen hab ich das hier in eine Funktion, die von header.php aus aufgerufen wird, eingebaut:

//Gravatar Hovercards:
if (is_singular()) { 
    echo '<script type="text/javascript">var description = \'\';</script>'."\n";
    wp_enqueue_script( 'gprofiles', 'http://s.gravatar.com/js/gprofiles.js', array( 'jquery' ), '', true );
}

(Geht auch direkt in header.php; muss halt wie üblich an einer passenden Stelle innerhalb eines <?php?>-Blocks stehen.)

Und da is_singular(), das die Ausgabe eben auf Beiträge, Seiten oder Attachments beschränkt, erst funktioniert, wenn WordPress sich ordentlich initialisiert hat, kann dieser Code nicht direkt (d.h. außerhalb einer Funktion) in der functions.php stehen.

Die echo-Zeile sorgt dafür, dass die Hovercard (wenn auch nicht die Easter-Egg-Rotation) im Internet Explorer funktioniert, denn dort gibt es bei manchen Themes (so auch meinem) sonst Probleme – das wird in diesem Forenthread am Ende beschrieben.

So, was haltet ihr von der Hovercard – brauchbar? nett? nervig? Ressourcenverschwendung?

  1. Auf dem iPad fehlen allerdings die Tasten; getippt halten bringt nichts. Aber immerhin geht die Hovercard an sich. ↺
  2. Klar, noch ein Skript nachzuladen, kostet auch wieder etwas Ladezeit, aber sei’s drum… ↺

Weißmag Scharman?

Wieder mal eine Kleinanzeige aus einem der Anzeigenblätter (noch vom Dezember, da ich sie zeitweilig vergessen hatte):

Weißmag.-Scharman. Ritual zum nachmachen um Geld, Gesundheit und Wohlstand anzuziehen erh. Sie für 20,-€ postalisch bei G.H., Postfach...

Was genau mag das bedeuten? Bezieht sich „Scharman.“ auf einen Schamanen des ehemaligen Autobauers Karmann? Der scheint angesichts deren Insolvenz keinen allzu großen Erfolg mit Geld und Wohlstand gehabt zu haben.^^ Aber selbst mit korrekter Rechtschreibung: Wozu wird überhaupt beides genannt? Die Gier ansprechen, um nicht groß nachzudenken?

Nun ist es ja so, dass sehr viele Esoterikanbieter tatsächlich an den Mumpitz glauben, den sie den Leuten anbieten – irgendwie macht diese Anzeige auf mich jedoch eher einen auch in diesem Sinne unseriösen Eindruck, so mit abgekürztem Nachnamen und einer Postfachadresse…

Und ob die Anbieterin danach noch mehr Dinge oder Rituale anbietet, wenn der Kunde schon mal an der Leine ist? Muss ja nicht gleich der Hinweis sein, dass „weißmag.“ gar nicht „weißmagisch“ heißen sollte, sondern dass man einen weißen Magneten fürs Ritual bräuchte und der jetzt im Sonderangebot erhältlich wäre. Oh, Mist, hab ich jetzt jemandem einen Geschäftstip gegeben…?

Wenn so ein Anbieter besonders dreist sein will, könnte das als Antwort verschickte „Ritual“ ja so lauten: Schalte Kleinanzeigen, in denen du Rituale für was auch immer für 20 € anbietest. (Aber kein weißmag.-scharman., da hab ich das Monopol drauf.)

Wäre wahrscheinlich sogar das am meisten Erfolg Versprechende – gerade für die besonders Verzweifelten unter denen, die auf so einen Quatsch hereinfallen.

Bilderrätsel 59

Heute etwas später, da ich’s am Nachmittag vor lauter Arbeit vergessen hatte… nun, vielleicht freuen sich so auch Rater, die sonst nachmittags nicht können. Also: Was zeigt dieser Ausschnitt?

br59a

Wie immer gibt’s bei Bedarf Tips und neue Ausschnitte.

(21:57) Neuer Ausschnitt:

br59b

Gelöst von Ruthie: „Liebesschlösser“ an einem Gitter (an der Götzenturmbrücke in Heilbronn):

br59s

Ausgabe mehrfacher Spammer

Nach längerer Zeit wieder ein kleiner WordPress-Codeschnipsel von mir, diesmal nicht für eure Besucher, sondern für diejenigen von euch, die ein Spam­erkennungs­plugin wie Akismet einsetzen und im Backend immer wieder mal auf die Liste der aufgelaufenen Spams schauen (um zu sehen, ob nicht doch ein false positive, ein falsch erkannter echter Kommentar dabei ist) – und dabei Muster erkennen wollen, etwa ob besonders viele Spams von einem bestimmten Server oder für eine bestimmte Site kommen und dafür ggf. besondere Maßnahmen ergreifen wollen: z.B. bestimmte Server gleich per .htaccess sperren oder die Blacklist von WordPress zu füllen. Oder einfach neugierig sind.

Dieser Codeschnipsel gibt über der Spam-Tabelle eine zusätzliche Tabelle aus, in der mehrfache IPs, Namen, Emails und URLs aufgelistet werden:

Spam-Statistik

Wobei ein Klick auf jeden Eintrag die Suchfunktion startet, also alle zugehörigen Spam-Kommentare anzeigt.

Der folgende Code kann z.B. in ein eigenes kleines Plugin geschrieben werden (ich hab für solche Kleinigkeiten ein eigenes Sammel-Plugin); die functions.php des Themes geht genauso. (Auf jeden Fall, wie üblich, innerhalb von <?php?>.)

//Infos auf Kommentar/Spam-Seite
$ag_comment_page_counter = 0;

function ag_comment_page ($comment_status) {
    global $wpdb,$ag_comment_page_counter;
    if (!is_admin()) return;
    if ($ag_comment_page_counter>0) return;
    $ag_comment_page_counter++;
    if ($comment_status=='spam') {
        echo '<div id="ag-comment-stats">';
        echo '<table class="widefat" cellspacing="0"><thead><tr><th>Mehrfache IPs</th><th>Mehrfache Namen</th><th>Mehrfache Emails</th><th>Mehrfache URLs</th></tr></thead>'."\n<tbody><tr>";
        foreach (array('comment_author_IP','comment_author','comment_author_email','comment_author_url') as $item) {
            $stuffs = $wpdb->get_results("
                SELECT * FROM (
                    SELECT $item AS stuff,COUNT(*) AS count
                    FROM $wpdb->comments
                    WHERE comment_approved='spam'
                    GROUP BY stuff
                    ORDER BY count DESC, stuff ASC) AS allspam
                WHERE count>1");
            echo "<td>";
            if (count($stuffs)==0) echo "-"; else
            foreach ($stuffs as $stuff) {
                if ($item=='comment_author_url') $stuff->stuff=esc_url($stuff->stuff);
                if ($stuff->stuff!='')
                    echo '<a href="edit-comments.php?s='.htmlentities($stuff->stuff).'&mode=detail&comment_status=spam">'.
                        htmlentities($stuff->stuff)."</a> (".$stuff->count.")<br/>";
            }
            echo "</td>";
        }

        echo '</tr></tbody></table></div>'."\n";
        echo '<script type="text/javascript">
            jQuery(\'.search-box\').after(jQuery(\'#ag-comment-stats\'));
            </script>';
        //echo '</div></a>'."\n";
    }
}
add_action ('manage_comments_nav',ag_comment_page);

Eingebunden wird das ganze über die Aktion manage_comments_nav, die anscheinend die einzige Möglichkeit ist, einfach etwas in die Kommentar-Seiten einzubinden; da die Aktion für die Navigation sowohl vor als auch nach der Liste aufgerufen wird, verwende ich einen kleinen Zähler, um die Daten nur einmal auszugeben. Und das auch nur dann, wenn es sich um die Ansicht der Spam-Kommentare handelt (if ($comment_status=='spam')) und nicht um die anderer Kommentare.

Es wird dann erstmal der Tabellenkopf ausgegeben, bevor eine Schleife über die vier interessanten Punkte diese dann jeweils aus der Tabelle wp_comments liest (innere SELECT-Abfrage, aus der die äußere dann die nur 1x vorkommenden verwirft) und ausgibt. Am Schluss kommt noch ein bisschen JavaScript, um die Tabelle an eine schönere Stelle als zwischen Buttons und Seitenzahlen zu verschieben.

Nun, ich weiß nicht, wie nützlich dieser Code im Endeffekt wirklich ist, aber zumindest die Statistikverliebten werden ein paar Minuten damit unterhalten werden.^^

Dieser Code funktioniert übrigens nicht nur mit Akismet, sondern auch mit anderen Antispamplugins, die die Spams abspeichern und nicht sofort löschen/blockieren – Antispam Bee mit entsprechender Einstellung etwa. Und ich werde künftig wohl auch auf die Biene setzen – sie summt schon testweise in meiner Esoterik-Shop-Satire, und das Kommentar­vorschau­plugin hab ich auch schon schnell angepasst (mehr dazu ein anderes Mal) – und Akismet in Rente schicken. Es macht seine Arbeit an sich nicht schlecht, von wenigen false positives und false negatives pro Monat abgesehen (von Datenschutzbedenken will ich hier gar nicht anfangen), aber mit den zusätzlichen Informationen, die Version 2.5 eingeführt hat, begann Akismet auch, die wp_commentmeta-Tabelle mit Statistik-/History-Einträgen (akismet_as_submitted, akismet_history, akismet_result) zuzumüllen, die anscheinend auch für schon lange gelöschte Kommentare (noch?) nicht bereinigt werden.

Links und Videos der Woche (2011/2)