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

📄 generic.inc.php

📁 Serendipity是一个php+mysql的blog程序
💻 PHP
字号:
<?php # $Id: generic.inc.php 1462 2006-10-27 09:18:19Z 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_Generic extends Serendipity_Import {    var $info        = array('software' => IMPORT_GENERIC_RSS);    var $data        = array();    var $inputFields = array();    var $force_recode = false;    function Serendipity_Import_Generic($data) {        $this->data = $data;        $this->inputFields = array(array('text'    => RSS . ' ' . URL,                                         'type'    => 'input',                                         'name'    => 'url'),                                   array('text'    => STATUS,                                         'type'    => 'list',                                         'name'    => 'type',                                         'value'   => 'publish',                                         'default' => array('draft' => DRAFT, 'publish' => PUBLISH)),                                   array('text'    => RSS_IMPORT_CATEGORY,                                         'type'    => 'list',                                         'name'    => 'category',                                         'value'   => 0,                                         'default' => $this->_getCategoryList()),                                   array('text'    => CHARSET,                                         'type'    => 'list',                                         'name'    => 'charset',                                         'value'   => 'UTF-8',                                         'default' => $this->getCharsets()),                                    array('text'   => RSS_IMPORT_BODYONLY,                                         'type'    => 'bool',                                         'name'    => 'bodyonly',                                         'value'   => 'false'));    }    function validateData() {        return sizeof($this->data);    }    function getInputFields() {        return $this->inputFields;    }    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 buildEntry($item, &$entry) {        global $serendipity;        $bodyonly = serendipity_get_bool($this->data['bodyonly']);        if ($item['description']) {            $entry['body'] = $this->decode($item['description']);        }        if ($item['content:encoded']) {            if (!isset($entry['body']) || $bodyonly) {                $data = &$entry['body'];            } else {                $data = &$entry['extended'];            }            // See if the 'description' element is a substring of the 'content:encoded' part. If it is,            // we will only fetch the full 'content:encoded' part. If it's not a substring, we append            // the 'content:encoded' part to either body or extended entry (respecting the 'bodyonly'            // switch). We substract 4 letters because of possible '...' additions to an entry.            $testbody = substr(trim(strip_tags($entry['body'])), 0, -4);            if ($testbody != substr(trim(strip_tags($item['content:encoded'])), 0, strlen($testbody))) {                $data .= $this->decode($item['content:encoded']);            } else {                $data = $this->decode($item['content:encoded']);            }        }        $entry['title'] = $this->decode($item['title']);        $entry['timestamp'] = $this->decode(strtotime(isset($item['pubdate']) ? $item['pubdate'] : $item['dc:date']));        if ($entry['timestamp'] == -1) {            // strtotime does not seem to parse ISO 8601 dates            if (preg_match('@^([0-9]{4})\-([0-9]{2})\-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})[\-\+]([0-9]{2}):([0-9]{2})$@', isset($item['pubdate']) ? $item['pubdate'] : $item['dc:date'], $timematch)) {                $entry['timestamp'] = mktime($timematch[4] - $timematch[7], $timematch[5] - $timematch[8], $timematch[6], $timematch[2], $timematch[3], $timematch[1]);            } else {                $entry['timestamp'] = time();            }        }        if ($this->data['type'] == 'draft') {            $entry['isdraft'] = 'true';        } else {            $entry['isdraft'] = 'false';        }        if (!empty($item['category'])) {            $cat = serendipity_fetchCategoryInfo(0, trim($this->decode($item['category'])));            if (is_array($cat) && isset($cat['categoryid'])) {                $entry['categories'][] = $cat['categoryid'];            }        }        if (!is_array($entry['categories'])) {            $entry['categories'][] = $this->data['category'];        }        if (!isset($entry['extended'])) {            $entry['extended'] = '';        }        $entry['allow_comments'] = true;        return true;    }    function import() {        global $serendipity;        $c = &new Onyx_RSS($this->data['charset']);        $c->parse($this->data['url']);        $this->data['encoding'] = $c->rss['encoding'];        $serendipity['noautodiscovery'] = 1;        while ($item = $c->getNextItem()) {            $entry    = array();            if ($this->buildEntry($item, $entry)) {                serendipity_updertEntry($entry);            }        }        return true;    }}return 'Serendipity_Import_Generic';/* vim: set sts=4 ts=4 expandtab : */?>

⌨️ 快捷键说明

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