⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 livejournal.inc.php

📁 Serendipity是一个php+mysql的blog程序
💻 PHP
字号:
<?php # $Id: generic.inc.php 717 2005-11-21 09:56:25Z garvinhicking $# Copyright (c) 2003-2005, Jannis Hermanns (on behalf the Serendipity Developer Team)# All rights reserved.  See LICENSE file for licensing detailsrequire_once S9Y_PEAR_PATH . 'Onyx/RSS.php';class Serendipity_Import_LiveJournalXML extends Serendipity_Import {    var $info        = array('software' => 'LiveJournal XML');    var $data        = array();    var $inputFields = array();    var $force_recode = false;    function Serendipity_Import_LiveJournalXML($data) {        global $serendipity;        $this->data = $data;        $this->inputFields = array(array('text'    => 'LiveJournal XML',                                         'type'    => 'input',                                         'name'    => 'url',                                         'default'   => $serendipity['serendipityPath'] . $serendipity['uploadPath'] . 'EVbackup.xml'),                                   array('text'    => RSS_IMPORT_CATEGORY,                                         'type'    => 'list',                                         'name'    => 'category',                                         'value'   => 0,                                         'default' => $this->_getCategoryList()),                                   array('text'    => STATUS,                                         'type'    => 'list',                                         'name'    => 'type',                                         'value'   => 'publish',                                         'default' => array('publish' => PUBLISH, 'draft' => DRAFT)),        );    }    function _getCategoryList() {        $res = serendipity_fetchCategories('all');        $ret = array(0 => NO_CATEGORY);        if (is_array($res)) {            foreach ($res as $v) {                $ret[$v['categoryid']] = $v['category_name'];            }        }        return $ret;    }    function GetChildren(&$vals, &$i) {        $children = array();        $cnt = sizeof($vals);        while (++$i < $cnt) {            // compare type            switch ($vals[$i]['type']) {                case 'cdata':                    $children[] = $vals[$i]['value'];                    break;                case 'complete':                    $children[] = array(                        'tag'        => $vals[$i]['tag'],                        'attributes' => $vals[$i]['attributes'],                        'value'      => $vals[$i]['value']                    );                    break;                case 'open':                    $children[] = array(                        'tag'        => $vals[$i]['tag'],                        'attributes' => $vals[$i]['attributes'],                        'value'      => $vals[$i]['value'],                        'children'   => $this->GetChildren($vals, $i)                    );                    break;                case 'close':                    return $children;            }        }    }    function &parseXML(&$xml) {        // XML functions        $xml_string = '<?xml version="1.0" encoding="UTF-8" ?>';        if (preg_match('@(<\?xml.+\?>)@imsU', $xml, $xml_head)) {            $xml_string = $xml_head[1];        }        $encoding = 'UTF-8';        if (preg_match('@encoding="([^"]+)"@', $xml_string, $xml_encoding)) {            $encoding = $xml_encoding[1];        }        preg_match_all('@(<entry>.*</entry>)@imsU', $xml, $xml_matches);        if (!is_array($xml_matches)) {            return false;        }        $i = 0;        $tree = array();        $tree[$i] = array(            'tag'        => 'entries',            'attributes' => '',            'value'      => '',            'children'   => array()        );        foreach($xml_matches[0] as $xml_index => $xml_package) {            $i = 0;            switch(strtolower($encoding)) {                case 'iso-8859-1':                case 'utf-8':                    $p = xml_parser_create($encoding);                    break;                default:                    $p = xml_parser_create('');            }            xml_parser_set_option($p, XML_OPTION_CASE_FOLDING, 0);            @xml_parser_set_option($p, XML_OPTION_TARGET_ENCODING, LANG_CHARSET);            $xml_package = $xml_string . "\n" . $xml_package;            xml_parse_into_struct($p, $xml_package, $vals);            xml_parser_free($p);            $tree[0]['children'][] = array(                'tag'        => $vals[$i]['tag'],                'attributes' => $vals[$i]['attributes'],                'value'      => $vals[$i]['value'],                'children'   => $this->GetChildren($vals, $i)            );            unset($vals);        }                return $tree;    }    function validateData() {        return sizeof($this->data);    }    function getInputFields() {        return $this->inputFields;    }    function getTimestamp($string) {        if (preg_match('@(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})@', $string, $match)) {            return mktime($match[4], $match[5], $match[6], $match[2], $match[3], $match[1]);        } else {            return time();        }    }    function import() {        global $serendipity;        if (!file_exists($this->data['url'])) {            printf(FILE_NOT_FOUND, htmlspecialchars($this->data['url']));            return false;        }                $file = file_get_contents($this->data['url']);        $tree =& $this->parseXML($file);        $serendipity['noautodiscovery'] = 1;                foreach($tree[0]['children'] AS $idx => $entry) {            if (!is_array($entry)) continue;            if ($entry['tag'] != 'entry') {                continue;            }                        $new_entry = array(                'allow_comments' => true,                'extended'       => '',                'categories'     => array(),                'isdraft'        => ($this->data['type'] == 'draft' ? 'true' : 'false'),                'categories'     => array($this->data['category'] => $this->data['category'])            );                        if (!is_array($entry['children'])) continue;            foreach($entry['children'] AS $idx2 => $entrydata) {                if (!is_array($entrydata)) {                    continue;                }                switch($entrydata['tag']) {                    case 'eventtime':                        $new_entry['timestamp'] = $this->getTimestamp($entrydata['value']);                        break;                                        case 'subject':                        $new_entry['title']     = $entrydata['value'];                        break;                                        case 'event':                        $new_entry['body']      = $entrydata['value'];                        break;                }            }            $id = serendipity_updertEntry($new_entry);            echo 'Inserted entry #' . $id . ', "' . htmlspecialchars($new_entry['title']) . '"<br />' . "\n";                        if (function_exists('ob_flush')) {                @ob_flush();            }            if (function_exists('flush')) {                @flush();            }        }        return true;    }}return 'Serendipity_Import_LiveJournalXML';/* vim: set sts=4 ts=4 expandtab : */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -