$xoxodata = preg_replace('/<(img|meta|link|hr|br)([^<>]*?)([\\/]?)>/i', '<$1$2 />', $xoxodata); $xoxodata = preg_replace('/&([^;]{10})/i', '&$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']) {
$_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);
//$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 {