Your Own URL Shortener - Linkchecker Plugin

Lukas [php, Tricks und Tools]

Für eine eigene Short-Link Seite gibt es wie für vieles ein praktisches Open-Source Tool names YOURLS "Your Own URL Shortener". Dieses bietet auch einige Plugins. Eine praktische Erweiterung fehlt jedoch.

Es kann schon mal sein, dass die eigentliche Zielseite nicht mehr existiert. Schliesslich verwendet man eine Short-URL Seite auch, damit man Links hat, die ihre Gültikeit immer behalten, weil sie immer aufs richtige Ziel verweisen. Um sicher zu sein, dass das Ziel immer erreichbar ist, kann man nun entweder ab und zu alle Links anklicken, oder aber man schreibt ein Plugin, welches das prüft und anzeigt, wo ein Link zu reparieren ist.

Auf der YOURLS Seite findet man eine Beschreibung, wie ein eigenes Plugin aus zu sehen hat, sowie eine Liste aller Hooks, bei denen man sich in verschiedene Prozesse einhängen kann.

Plugin Howto
Hooklist

Als erstes erstellen wir einen Link im Admin-Menu, mit dem man den Linkchecker aktivieren kann.

yourls_add_action('admin_menu', 'linkchecker_menu');
function linkchecker_menu() {
    echo '<li><a href="'.yourls_add_query_arg(array(" linkchecker"=""> 1)).'"'.yourls__('Linkchecker').'</a></li>';
}

Ist denn der linkchecker Parameter gesetzt, hängen wir uns in den renderer der Tabelle ein und prüfen mit curl ob die URL existiert und Färben den Link entsprechend ein.

if ($_REQUEST["linkchecker"] == 1) {
    yourls_add_filter('table_add_row_cell_array', 'linkchecker_link');
}
 
function linkchecker_link($cells, $keyword, $url) {
    $handle = curl_init($url);
    curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
    curl_exec($handle);
    $httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
    if ($httpCode == 200) {
        $cells['url']['template'] = '<span class="success">'.$cells['url']['template'].'</span>';
    } elseif ($httpCode == 404) {
        $cells['url']['template'] = '<span class="error">'.$cells['url']['template'].'</span>';
        $cells['url']['title_html'] = $httpCode.' - '.$cells['url']['title_html'].'';
    } else {
        $cells['url']['template'] = '<span class="warning">'.$cells['url']['template'].'</span>';
        $cells['url']['title_html'] = $httpCode.' - '.$cells['url']['title_html'].'';
    }
    curl_close($handle);
 
    return $cells;
}

Das Plugin kann man fertig herunterladen und im Verzeichnis user/plugin entpacken.

YOURLS linkchecker plugin

zurück