$pagedata = file_get_contents($_REQUEST['url']); preg_match('/<!-- START ARCHIVE XOXO -->[^\\f]*?<!-- END ARCHIVE XOXO -->/', $pagedata, $xoxodata); $xoxodata = $xoxodata[0]; $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 = ';
$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); if ($_REQUEST['callback']) { echo ')'; } if (!isset($_REQUEST['raw']) && !$_REQUEST['callback']) {
if (in_array('home', explode(' ', $xoxo->getNode(0)->getField('rel')))) { $site = $xoxo->getNode(0)->toArray(); $xoxo->unsetNode(0); $xoxo->reindexNodes(); } if (in_array('home', explode(' ', $hatom->getNode(0)->getField('rel')))) { $site = $hatom->getNode(0)->toArray(); $hatom->unsetNode(0); $hatom->reindexNodes(); } if (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 { if ($xoxo->getNumNodes()) { } else { if ($hatom->getNumNodes()) { $xoxo = $hatom; } else {
//$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 {
} elseif ($_GET['data']) { $data = $_GET['data']; } else { ?> <form method="get" action="<?php echo $_SERVER['PHP_SELF']; ?> "><div> Enter a<br /> URL: <input type="text" name="url" /><br /> or<br /> Data: <textarea name="data"></textarea><br /> <input type="submit" name="submit" value="Validate!" /> </div></form> <?php exit; } //end if-elseif-else $struct = new OutlineFromXOXO($data); if ($struct->getError()) { echo '<h2 style="text-align:center;"><a href="http://www.hcrc.ed.ac.uk/~richard/xml-check.cgi?url=' . urlencode($_GET['url']) . '">Not Valid XML!</a> -- ' . xml_error_string($struct->getError()) . ' -- Error #' . $struct->getError() . '</h2>'; $data = getTidy($_GET['url']); $struct = new OutlineFromXOXO($data); } //end if error if ($struct->getNumNodes() || count($struct->getFields())) { echo '<h2 style="text-align:center;">Valid <a href="http://microformats.org/wiki/xoxo">XOXO</a> data found!</h2>'; } else { echo '<h2 style="text-align:center;">No valid <a href="http://microformats.org/wiki/xoxo">XOXO</a> data found</h2>'; } //end if count || count