<?php
/*
Plugin Name: FOAF Output Add-on - seeAlso's
Plugin URI: http://www.wasab.dk/morten/blog/archives/2004/08/10/wordpress-plugin-seealsos
Description: Extend FOAF profile by adding rdfs:seeAlso statements (from a link category named "seeAlso") to external FOAF files (Personal Profile Documents).
Version: 1.1
Author: Morten Frederiksen
Author URI: http://purl.org/net/morten/

Changes since 1.0:
* Added generator information.

*/
  
function seealsos_rdf_document($text) {
    
$text.='
    <admin:generatorAgent rdf:resource="http://www.wasab.dk/morten/blog/archives/2004/08/10/wordpress-plugin-seealsos?version=1.1"/>'
;
    return 
$text;
}

function 
seealsos_rdf_person($text) {
    
# Add rdfs:seeAlso's.
    
$seealsos get_seealsos_seealsos();
    foreach (
$seealsos as $seealso) {
        
# Default type of resource is foaf:PPD.
        
$type 'PersonalProfileDocument';
        
$description '';
        
# Special type?
        
if (preg_match('|^\w+:\w+$|'$seealso['description']))
            
$type $seealso['description'];
        
# Explicit description of PPD?
        
elseif ('' != $seealso['description'])
            
$description "\n\t\t\t" '<dc:description>' htmlspecialchars($seealso['description']) . '</dc:description>';
        
$text .= "\n\t" '<rdfs:seeAlso>
        <' 
$type ' rdf:about="' htmlspecialchars($seealso['uri']) . '">
            <dc:title>' 
htmlspecialchars($seealso['title']) . '</dc:title>' $description '
        </' 
$type '>
    </rdfs:seeAlso>'
;
    }
    return 
$text;
}

function 
get_seealsos_seealsos() {
    global 
$authordata;
    
# Return array of rdfs:seeAlso'd resources (URIs).
    
$seealsos = array();
    
$links get_linkobjectsbyname('seeAlso');
    if (
$links) {
        
$cat_id 0;
        foreach (
$links as $link) {
            if(
$link->link_category == $cat_id
                    
|| !$cat_id && 'seeAlso' == get_linkcatname($link->link_category)
                    && 
$authordata->ID == $link->link_owner)
                
$seealsos[$link->link_name] = array(
                        
'title' => $link->link_name,
                        
'description' => $link->link_description,
                        
'uri' => $link->link_url);
        }
    }
    return 
$seealsos;
}

# Add filters for profile output.
add_filter('foaf_output_profile_rdf_document''seealsos_rdf_document');
add_filter('foaf_output_profile_rdf_person''seealsos_rdf_person');

?>