$xoxodata = preg_replace('/<(img|meta|link|hr|br)([^<>]*?)([\\/]?)>/i', '<$1$2 />', $xoxodata);
$xoxodata = preg_replace('/&([^;]{10})/i', '&amp;$1', $xoxodata);
$xoxo = new OutlineFromXOXO($xoxodata, array('classes' => array('xoxo', 'posts')));
if (!$xoxo->getNumNodes()) {
    $xoxo = new OutlineFromXOXO($pagedata, array('classes' => array('xoxo', 'posts')));
}
if (!$xoxo->getNumNodes()) {
    $xoxo = new OutlineFromHATOM($pagedata);
}
if (!$xoxo->getNumNodes()) {
    $xoxo = new OutlineFromXOXO($pagedata, array('classes' => array()));
}
if (!$xoxo->getNumNodes()) {
    die('No valid XOXO data found!');
}
$tmp = $xoxo->getNode(0);
if ($tmp->getField('rel') == 'home') {
    $xoxo->unsetNode(0);
}
$xoxo->reindexNodes();
for ($i = 0; $i < $xoxo->getNumNodes(); $i++) {
    $node =& $xoxo->getNode($i);
    $node->unsetAllNodes();
}
//end for xoxo
if (!isset($_REQUEST['raw']) && !$_REQUEST['callback']) {
    echo 'if(typeof(BloggerArchive) != "object") BloggerArchive = {};' . "\n";
    echo 'BloggerArchive.posts = ';
}
//end if ! raw && ! callback
if ($_REQUEST['callback']) {
Example #2
0
    $_REQUEST['data'] = file_get_contents($_REQUEST['url']);
}
if ($_REQUEST['classes']) {
    $classes = explode(' ', $_REQUEST['classes']);
} else {
    $classes = array();
}
//if we were passed classes, explode via space into array, otherwise classes is an empty array
switch (TRUE) {
    //determine input format
    case stristr($_REQUEST['data'], '<opml'):
        $struct = new OutlineFromOPML($_REQUEST['data']);
        break;
    case stristr($_REQUEST['data'], '<ul') || stristr($_REQUEST['data'], '<ol'):
        $struct = new OutlineFromXOXO($_REQUEST['data'], array('classes' => $classes));
        $tmp = $struct->getNode(0);
        if (!$tmp->getField('href') && !$tmp->getField('contents') && count($tmp->getFields()) > 1) {
            $struct->fieldsFromFirstNode();
        }
        break;
    case stristr($_REQUEST['data'], '<rss'):
        $struct = new OutlineFromXML($_REQUEST['data'], array('rootel' => 'rss', 'itemel' => 'channel>item', 'collapsels' => array('title', 'description')));
        break;
    case stristr($_REQUEST['data'], '<rdf'):
        $struct = new OutlineFromXML($_REQUEST['data'], array('rootel' => 'rdf:RDF', 'itemel' => 'item', 'collapsels' => array('title', 'description')));
        break;
    case stristr($_REQUEST['data'], '<feed'):
        $struct = new OutlineFromXML($_REQUEST['data'], array('rootel' => 'feed', 'itemel' => 'entry', 'collapsels' => array('title', 'content', 'summary')));
        break;
    case !checkXML($_REQUEST['data']):
        $struct = new OutlineFromXML($_REQUEST['data']);
for ($i = 0; $i < $xoxo->getNumNodes(); $i++) {
    $node =& $xoxo->getNode($i);
    $archivepage = file_get_contents($node->getField('href'));
    preg_match('/<!-- START ARCHIVE XOXO -->[^\\f]*?<!-- END ARCHIVE XOXO -->/', $archivepage, $xoxodata);
    $xoxodata = $xoxodata[0];
    if ($xoxodata) {
        $archivepage = $xoxodata;
    }
    $archivestruct = new OutlineFromXOXO($archivepage, array('classes' => array('xoxo', 'posts')));
    if (!$archivestruct->getNumNodes()) {
        $archivestruct = new OutlineFromHATOM($archivepage);
    }
    if (!$archivestruct->getNumNodes()) {
        $archivestruct = new OutlineFromXOXO($archivepage, array('classes' => array()));
    }
    $tmp = $archivestruct->getNode(0);
    if ($tmp && is_a($tmp, 'Outline') && $tmp->getField('rel') == 'home') {
        $archivestruct->unsetNode(0);
    }
    $node->setField('count', $archivestruct->getNumNodes());
}
//end for getNumNodes
if (!isset($_REQUEST['raw']) && !$_REQUEST['callback']) {
    echo 'if(typeof(BloggerArchive) != "object") BloggerArchive = {};' . "\n";
    echo 'BloggerArchive.list = ';
}
//end if ! raw && ! callback
if ($_REQUEST['callback']) {
    echo $_REQUEST['callback'] . '(';
}
echo $xoxo->toJSON('BloggerArchive', false, false);
Example #4
0
//$data = str_replace('</HEAD>','</head>',$data);
$xoxo = new OutlineFromXOXO($data, array('classes' => array('xoxo', 'posts')));
$hatom = new OutlineFromHATOM($data, array('resolve' => $_GET['url']));
$raw = new OutlineFromXOXO($data, array('classes' => array()));
$site = false;
if ($xoxo->getNumNodes() && in_array('home', explode(' ', $xoxo->getNode(0)->getField('rel')))) {
    $site = $xoxo->getNode(0)->toArray();
    $xoxo->unsetNode(0);
    $xoxo->reindexNodes();
}
if ($hatom->getNumNodes() && in_array('home', explode(' ', $hatom->getNode(0)->getField('rel')))) {
    $site = $hatom->getNode(0)->toArray();
    $hatom->unsetNode(0);
    $hatom->reindexNodes();
}
if ($raw->getNumNodes() && in_array('home', explode(' ', $raw->getNode(0)->getField('rel')))) {
    $site = $raw->getNode(0)->toArray();
    $raw->unsetNode(0);
    $raw->reindexNodes();
}
if ($xoxo->getNumNodes() && $hatom->getNumNodes()) {
    //fill in XOXO with hAtom
    for ($i = 0; $i < $xoxo->getNumNodes(); $i++) {
        $node = $xoxo->getNode($i);
        foreach ($node->getFields() as $name => $value) {
            $hatom->_subnodes[$i]->setField($name, $value);
        }
    }
    //end for
    $xoxo = $hatom;
} else {