$xoxo->unsetNode(0); } $xoxo->reindexNodes(); $final = new Outline(); //the outline we're pushing to for ($i = 0; $i < $xoxo->getNumNodes(); $i++) { //loop through nodes and get data $node =& $xoxo->getNode($i); foreach ($node->getFields() as $name => $val) { $name = explode('#', $name); if ($name[0] != 'rel') { continue; } $dt = $node->getField('href#' . $name[1]); if (in_array('external', explode(' ', $val))) { $final->addNode(array('link' => $dt)); } } //end foreach getFields } //end for xoxo if (!isset($_REQUEST['raw']) && !$_REQUEST['callback']) { //output JSON(P) echo 'if(typeof(BloggerArchive) != "object") BloggerArchive = {};' . "\n"; echo 'BloggerArchive.posts = '; } //end if ! raw && ! callback if ($_REQUEST['callback']) { echo $_REQUEST['callback'] . '('; } echo $final->toJSON('posts', false, false);
function __construct($data = '', $options = array()) { $theParser = xml_parser_create(); if (!xml_parse_into_struct($theParser, $data, $vals)) { $errorcode = xml_get_error_code($theParser); if ($errorcode != XML_ERROR_NONE && $errorcode != 27) { $this->_errorcode = $errorcode; } } //end if ! parse xml_parser_free($theParser); $flattento = ''; $flattendat = ''; $flattentag = ''; $flattenattr = array(); $subflatten = 0; $options['rootel'] = $options['rootel'] ? strtoupper($options['rootel']) : ''; $options['itemel'] = $options['itemel'] ? strtolower($options['itemel']) : ''; $options['collapsels'] = $options['collapsels'] ? $options['collapsels'] : array(); foreach ($vals as $el) { if (!$options['rootel']) { $options['rootel'] = $el['tag']; } $isopen = $el['type'] == 'open' || $el['type'] == 'complete'; //for readability $isclose = $el['type'] == 'close' || $el['type'] == 'complete'; if ($options['rootel'] == $el['tag'] && $isclose) { continue; } if ($flattento) { //if flattening tags if ($isopen && $flattentag == $el['tag']) { $subflatten++; } if ($isclose && $flattentag == $el['tag']) { if ($subflatten) { $subflatten--; } else { if (!in_array($flattento, $options['collapsels'])) { $flattendat = '<OutlineFromXML>' . $flattendat . '</OutlineFromXML>'; $tmp = explode('>', $options['itemel']); if ($tmp[1]) { $flattendat = new OutlineFromXML($flattendat, array('rootel' => 'OutlineFromXML', 'itemel' => $tmp[1], 'collapsels' => $options['collapsels'])); } else { $flattendat = new OutlineFromXML($flattendat, array('rootel' => 'OutlineFromXML', 'itemel' => $options['itemel'], 'collapsels' => $options['collapsels'])); } foreach ($flattenattr as $name => $val) { $flattendat->addField($name, $val); } } //end if ! in_array if (!$this->getField($flattento)) { $this->addField($flattento, $flattendat); } else { $oldfield = $this->getField(strtolower($el['tag'])); if (!is_a($oldfield, 'Outline')) { $oldfield = new Outline(array(array('text' => $oldfield))); } if (count($oldfield->getFields())) { $oldfield = new Outline(array($oldfield)); } if (!is_a($flattendat, 'Outline')) { $flattendat = new Outline(array(array('text' => $flattendat))); } $oldfield->addNode($flattendat); $this->setField(strtolower($el['tag']), $oldfield); } //end if-else ! getField $flattendat = ''; $flattentag = ''; $subflatten = 0; $flattento = ''; $flattenattr = array(); continue; } //end if-else subflatten } //end if isclose && $emptytag = false; //assume not an empty tag if ($isopen) { //if opening tag $flattendat .= '<' . strtolower($el['tag']); //add open tag if ($el['attributes']) { //if attributes foreach ($el['attributes'] as $id => $val) { //loop through and add $flattendat .= ' ' . strtolower($id) . '="' . htmlspecialchars($val) . '"'; } //end foreach } //end if attributes $emptytag = $el['type'] == 'complete' && !$el['value']; //is emptytag? $flattendat .= $emptytag ? ' />' : '>'; //end tag if ($el['value']) { $flattendat .= htmlspecialchars($el['value']); } //add contents, if any } //end if isopen if ($el['type'] == 'cdata') { //if cdata $flattendat .= htmlspecialchars($el['value']); //add data } //end if cdata if ($isclose) { //if closing tag if (!$emptytag) { $flattendat .= '</' . strtolower($el['tag']) . '>'; } //if not emptytag, write out end tag } //end if isclose continue; } //end if flattento if ($el['type'] == 'complete') { if (!in_array(strtolower($el['tag']), $options['collapsels'])) { if ($el['attributes']) { if ($el['value']) { $el['value'] = new Outline(array('text' => $el['value'])); } else { $el['value'] = new Outline(); } foreach ($el['attributes'] as $id => $val) { $el['value']->addField(strtolower($id), $val); } //end foreach attributes } //end if attributes } //end if ! collapsels if (!$this->getField(strtolower($el['tag']))) { $this->addField(strtolower($el['tag']), $el['value']); } else { $oldfield = $this->getField(strtolower($el['tag'])); if (!is_a($oldfield, 'Outline')) { $oldfield = new Outline(array(array('text' => $oldfield))); } if (count($oldfield->getFields())) { $oldfield = new Outline(array($oldfield)); } if (!is_a($el['value'], 'Outline')) { $el['value'] = new Outline(array('text' => $el['value'])); } $oldfield->addNode($el['value']); $this->setField(strtolower($el['tag']), $oldfield); } //end if-else getField continue; } //end if type == complete if ($el['type'] == 'cdata') { if ($options['rootel'] == 'OUTLINEFROMXML') { $el['tag'] = 'TEXT'; } if (!$this->getField(strtolower($el['tag']))) { if (trim($el['value'])) { $this->addField(strtolower($el['tag']), $el['value']); } } else { $this->setField(strtolower($el['tag']), $this->getField(strtolower($el['tag'])) . $el['value']); } continue; } //end if type == complete if ($el['type'] == 'open') { if ($options['rootel'] == $el['tag']) { if ($options['rootel'] == 'OUTLINEFROMXML') { $el['tag'] = 'TEXT'; } if ($el['attributes']) { foreach ($el['attributes'] as $id => $val) { $this->addField(strtolower($id), $val); } } //end if attributes if (trim($el['value'])) { $this->addField(strtolower($el['tag']), $el['value']); } continue; } //end if rootel if ($el['attributes']) { foreach ($el['attributes'] as $id => $val) { $flattenattr[strtolower($id)] = $val; } } //end if attributes $flattento = strtolower($el['tag']); $flattentag = $el['tag']; $flattendat = $el['value']; continue; } //end if open } //end foreach vals $tmp = explode('>', $options['itemel']); if ($options['itemel'] !== false) { $this->nodesFromField($tmp[0]); } }
if (!$_REQUEST['id']) { die('NO ID SPECIFIED'); } require_once 'tagFunctions.php'; require_once 'XNC/Ajax.php'; $group = XN_Content::load(intval($_REQUEST['id'])); $grouptags = explode(' ', $group->my->grouptags); foreach ($grouptags as $id => $tag) { $grouptags[$id] = str_replace('+', ' ', $tag); } if ($_REQUEST['format']) { if (!class_exists('Outline')) { XN_Application::includeFile('xoxotools', '/OutlineClasses/Outline.php'); } $struct = new Outline(); $struct->addNode($grouptags); $struct->getNode(0)->setField('title', $group->title); $struct->getNode(0)->setField('relatedtags', new Outline(fetchTags($group))); if ($_REQUEST['format'] == 'xoxo') { header('Content-Type: application/xml;charset=utf-8'); $struct->getNode(0)->setField('text', $group->title); if ($_ITEMONLY) { echo $struct->getNode(0)->toXOXO('item'); } else { echo $struct->toXOXO(); } } //end if format == xoxo if ($_REQUEST['format'] == 'json') { header('Content-Type: text/javascript;charset=utf-8'); if (!isset($_REQUEST['raw']) && !$_ITEMONLY) {