<?php
/*
Plugin Name: WP-Linklog
Version: 2.0.1
Plugin URI: http://www.jeremyhelms.com/index.php/wp-linklog/
Description: A linklog plugin for WordPress which uses all of the links already contained in your links list.
Author: Jeremy Helms
Author URI: http://www.jeremyhelms.com/

INSTRUCTIONS
------------
1. Upload this file into your wp-content/plugins directory.
2. Activate the Links Page plugin in your WordPress admin panel.
3. Create a new static page.
4. Add <!--linklogpage--> to the static page content where you want the links
to appear.


02/06/2006: MINOR VERSION UPDATE (2.0.1)
------------
The PHP addslashes() function was being called unnecessarily to format
the title of the link which was resulting in the slash "\" escape character
being placed in front of any apostrophe found in the title.
*/

function linklog_page_url($before=''$after=''$text='View Linklog'$title='View Linklog') {
    
$siteurl get_settings('siteurl');

    echo 
"$before<a href=\"$siteurl/index.php/linkspage/\" title=\"$alt\">$text</a>$after";
}

/* returns true if $user_id can edit links */
function user_can_edit_links($user_id) {
    
$author_data get_userdata($user_id);

    if (
$author_data->user_level >= 10)
        return 
true;
    else
        return 
false;
}

function 
linklog_page_callback($before=''$after='<br /><br />'$between='<br />'$sort='category,name'$sfbegin='<h2>'$sfend='</h2>'$rating=false$echo=false) {
    global 
$user_ID;
    
get_currentuserinfo();

    if (
user_can_edit_links($user_ID))
        
$can_edit_links true;

    global 
$wpdb;
    
$wpdb->show_errors();

    
$sql "SELECT
            $wpdb->links.link_id,
            $wpdb->links.link_url,
            $wpdb->links.link_name,
            $wpdb->links.link_target,
            $wpdb->links.link_description,
            $wpdb->links.link_category,
            $wpdb->links.link_rating,
            $wpdb->linkcategories.cat_name
        FROM $wpdb->links, $wpdb->linkcategories
        WHERE $wpdb->links.link_category = $wpdb->linkcategories.cat_id
        AND $wpdb->links.link_visible = 'Y'
        ORDER BY "
;

    switch (
$sort) {
    case 
'id':
        
$sql.= "$wpdb->links.link_id";
        break;
    case 
'category':
        
$sql.= "$wpdb->links.link_category";
        break;
    case 
'name':
        
$sql.= "$wpdb->links.link_name";
        break;
    case 
'desc':
        
$sql.= "$wpdb->links.link_description";
        break;
    case 
'category,rating':
        
$sql.= "$wpdb->links.link_category, $wpdb->links.link_rating DESC";
        break;
    case 
'category,name':
        
$sql.= "$wpdb->links.link_category, $wpdb->links.link_name";
        break;
    default:
        
$sql.= "$wpdb->links.link_id";
        break;
    }

    
$results $wpdb->get_results($sql);

    if (!
$results)
        return;

    
$output "";
    
$inc 0;

    foreach (
$results as $row) {
        
$the_link '#';
        if (!empty(
$row->link_url))
            
$the_link $row->link_url;

        
$title $row->link_name;
        
$category $row->cat_name;

        if (
$category != $lastcat) {
            if ( 
$inc ) {
                
$output.= "<br />";
            }
            if (
$after == "</li>")
                
$output.= "</ul>";
            
$output.= "$sfbegin" "$category" "$sfend";
            if (
$before == "<li>")
                
$output.= "<ul>";
        }

        if (
strlen($title) > 0) {
            
$alt "title=\"Click to visit $title\" alt=\"Click to visit $title\"";
        }

        
$target "target=\"$row->link_target\"";

        
$output.= "$before" "<a href=\"$the_link\" $alt $target>" $title "</a>";

        if (
$rating)
            
$output.= " ($row->link_rating)";

        if (
$can_edit_links) {
            
$location get_settings('siteurl') . "/wp-admin/link-manager.php?link_id=$row->link_id&action=linkedit";
            
$output.= " | <a href=\"$location\" target=\"_blank\">Edit</a>";
        }

        if (!empty(
$row->link_description))
            
$output.= "$between" $row->link_description;
        
        
$output.= "$after\n";

        
$lastcat $category;
    }

    if (
$results)
        
$output.= "</ul>";

    if (
$can_edit_links)
        
$output.= "$sfbegin" "<a href=\"/wp-admin/link-add.php\" target=\"_blank\">Add New Link</a>" "$sfend";

    if (
$echo)
        echo 
$output;
    else
        return 
$output;
}

function 
remove_p($text)
{
    
$text preg_replace("/^[\t|\n]?<p>(.*)/","\\1",$text); // opening <p>
    
$text preg_replace("/(.*)<\/p>[\t|\n]$/","\\1",$text); // closing </p>
    
return $text;
}

function 
linklog_page($content) {
    
$content str_replace('<!--linklogpage-->'linklog_page_callback('<li>','</li>'), $content);
    return 
remove_p($content);
}

add_filter('the_content''linklog_page');
?>