Location: PHPKode > projects > MyOWNSpace > MyOWNspace_v8.2/www/classes/getfoaf.php
<?
    # Retrieve FoaF from URI, possibly with autodiscovery.
    # Returns actual location and content.

    # (c) 2002-2005 Morten Frederiksen
    # License: http://www.gnu.org/licenses/gpl

function getFoaF($foaf)
{
    $blacklist=array(
        'http://www.ecademy.com/module.php?mod=network&op=foafrdf&uid=40645',
        'http://www.sentient.co.uk/foaf/thomas_power_foaf.xml',
        'http://www.sentient.co.uk/foaf/jonathan_greensted_foaf.xml',
        'http://jibbering.com/foaf/santa.rdf');
    if(preg_match('"^http://(www.)?(livejournal.com|tribe.net)/"',$foaf) || in_array($foaf,$blacklist)) {
        header('HTTP/1.1 400 Bad Request');
        header('Content-Type: text/plain');
        print("ETOOMANYFRIENDS: Sorry, that URI has been blacklisted, it's too heavy for this little service...");
        exit;
    }

    # Some security...
    if (!preg_match('|^http:|',$foaf))
    {
        header('HTTP/1.1 400 Bad Request');
        print('<head><title>Error</title></head><body><h1>Error</h1><p>Non-HTTP request denied ('.htmlspecialchars($foaf).').</p></body>');
        exit;
    };

    # Retrieve...
    $foafdata=getFoaF_curl($foaf);

    # Check for HTML link...
    if ($foafdata
            && (preg_match('|<head.+?(<link\s+[^>]+type="application/rdf\+xml"[^>]*>).*?</head>|is',$foafdata,$link)
            && preg_match('|\s+title="?[^">]*?foaf|i',$link[1])
            && preg_match('|\s+href="?([^"\s>]+)"?[\s>]|i',$link[1],$M)
            || preg_match('|<body.+?(<a\s+[^>]+foaf[^>]*>).+?</body>|i',$foafdata,$link)
            && preg_match('|\s+href="?([^"\s>]+)"?[\s>]|i',$link[1],$M)))
    {
        $link=$M[1];
        # Try to handle relative URIs...
        $htmluri=parse_url($foaf);
        if (!isset($htmluri['path'])) $htmluri['path']='/';
        $foafuri=parse_url($link);
        $foaf=(@$foafuri['scheme']!='')?$link:
                (preg_match('|^/|',$foafuri['path'])?$htmluri['scheme'].'://'.$htmluri['host'].$link:
                (preg_match('|^(/(.*/)?)[^/]*$|',$htmluri['path'],$M)?$htmluri['scheme'].'://'.$htmluri['host'].$M[1].$link:
                $foaf));
        $foafdata=getFoaF_curl($foaf);
    };
    return array($foaf,$foafdata);
};

function getFoaF_curl($uri) {
    $ch=curl_init();
    curl_setopt($ch,CURLOPT_USERAGENT,'CURL; http://xml.mfd-consult.dk/foaf/');
    curl_setopt($ch,CURLOPT_URL,str_replace(' ','%20',$uri));
    curl_setopt($ch,CURLOPT_HTTPHEADER,array('Accept: application/rdf+xml, */*'));
    curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
    curl_setopt($ch,CURLOPT_TIMEOUT,10);
    curl_setopt($ch,CURLOPT_HEADER,0);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    $data=curl_exec($ch);
    curl_close($ch);
    return $data;
}

?>
Return current item: MyOWNSpace