$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);
Esempio n. 2
0
 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]);
     }
 }
Esempio n. 3
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) {