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

📄 geeklog.inc.php

📁 Serendipity是一个php+mysql的blog程序
💻 PHP
字号:
<?php # $Id: geeklog.inc.php 50 2005-04-25 16:50:43Z garvinhicking $# Copyright (c) 2003-2005, Jannis Hermanns (on behalf the Serendipity Developer Team)# All rights reserved.  See LICENSE file for licensing details/***************************************************************** *  geeklog  Importer,    by Garvin Hicking * * ****************************************************************/class Serendipity_Import_geeklog extends Serendipity_Import {    var $info        = array('software' => 'Geeklog 1.3.11');    var $data        = array();    var $inputFields = array();    var $categories  = array();    function getImportNotes() {        return 'GeekLog has a granular control over access privileges which cannot be migrated to Serendipity. All Users will be migrated as Superusers, you may need to set them to editor or chief users manually after import.';    }    function Serendipity_Import_geeklog($data) {        $this->data = $data;        $this->inputFields = array(array('text' => INSTALL_DBHOST,                                         'type' => 'input',                                         'name' => 'host'),                                   array('text' => INSTALL_DBUSER,                                         'type' => 'input',                                         'name' => 'user'),                                   array('text' => INSTALL_DBPASS,                                         'type' => 'protected',                                         'name' => 'pass'),                                   array('text' => INSTALL_DBNAME,                                         'type' => 'input',                                         'name' => 'name'),                                   array('text' => INSTALL_DBPREFIX,                                         'type' => 'input',                                         'name' => 'prefix',                                         'default' => 'gl_'),                                   array('text'    => CHARSET,                                         'type'    => 'list',                                         'name'    => 'charset',                                         'value'   => 'native',                                         'default' => $this->getCharsets()),                                   array('text'    => CONVERT_HTMLENTITIES,                                         'type'    => 'bool',                                         'name'    => 'use_strtr',                                         'default' => 'true'),                                   array('text'    => ACTIVATE_AUTODISCOVERY,                                         'type'    => 'bool',                                         'name'    => 'autodiscovery',                                         'default' => 'false')                            );    }    function validateData() {        return sizeof($this->data);    }    function getInputFields() {        return $this->inputFields;    }    function import() {        global $serendipity;        // Save this so we can return it to its original value at the end of this method.        $noautodiscovery = isset($serendipity['noautodiscovery']) ? $serendipity['noautodiscovery'] : false;        if ($this->data['autodiscovery'] == 'false') {            $serendipity['noautodiscovery'] = 1;        }        $this->getTransTable();        $this->data['prefix'] = serendipity_db_escape_string($this->data['prefix']);        $users = array();        $entries = array();        if (!extension_loaded('mysql')) {            return MYSQL_REQUIRED;        }        $gdb = @mysql_connect($this->data['host'], $this->data['user'], $this->data['pass']);        if (!$gdb) {            return sprintf(COULDNT_CONNECT, $this->data['host']);        }        if (!@mysql_select_db($this->data['name'])) {            return sprintf(COULDNT_SELECT_DB, mysql_error($gdb));        }        /* Users */        $res = @$this->nativeQuery("SELECT uid        AS ID,                                    username   AS user_login,                                    passwd     AS user_pass,                                    email      AS user_email,                                    homepage   AS user_url                               FROM {$this->data['prefix']}users", $gdb);        if (!$res) {            return sprintf(COULDNT_SELECT_USER_INFO, mysql_error($gdb));        }        for ($x=0, $max_x = mysql_num_rows($res); $x < $max_x ; $x++ ) {            $users[$x] = mysql_fetch_assoc($res);            $data = array('right_publish' => 1,                          'realname'      => $users[$x]['user_login'],                          'username'      => $users[$x]['user_login'],                          'email'         => $users[$x]['user_email'],                          'userlevel'     => USERLEVEL_ADMIN,                          'password'      => $users[$x]['user_pass']); // MD5 compatible            if ($serendipity['serendipityUserlevel'] < $data['userlevel']) {                $data['userlevel'] = $serendipity['serendipityUserlevel'];            }            serendipity_db_insert('authors', $this->strtrRecursive($data));            echo mysql_error();            $users[$x]['authorid'] = serendipity_db_insert_id('authors', 'authorid');        }        /* Categories */        $res = @$this->nativeQuery("SELECT tid AS cat_ID, topic AS cat_name, topic AS category_description FROM {$this->data['prefix']}topics ORDER BY tid;", $gdb);        if (!$res) {            return sprintf(COULDNT_SELECT_CATEGORY_INFO, mysql_error($gdb));        }        // Get all the info we need        for ($x=0, $max_x = mysql_num_rows($res) ; $x < $max_x ; $x++) {            $categories[] = mysql_fetch_assoc($res);        }        // Insert all categories as top level (we need to know everyone's ID before we can represent the hierarchy).        for ($x=0, $max_x = sizeof($categories) ; $x < $max_x ; $x++ ) {            $cat = array('category_name'        => $categories[$x]['cat_name'],                         'category_description' => $categories[$x]['category_description'],                         'parentid'             => 0, // <---                         'category_left'        => 0,                         'category_right'       => 0);            serendipity_db_insert('category', $this->strtrRecursive($cat));            $categories[$x]['categoryid'] = serendipity_db_insert_id('category', 'categoryid');        }        serendipity_rebuildCategoryTree();        /* Entries */        $res = @$this->nativeQuery("SELECT * FROM {$this->data['prefix']}stories ORDER BY sid;", $gdb);        if (!$res) {            return sprintf(COULDNT_SELECT_ENTRY_INFO, mysql_error($gdb));        }        for ($x=0, $max_x = mysql_num_rows($res) ; $x < $max_x ; $x++ ) {            $entries[$x] = mysql_fetch_assoc($res);            $entry = array('title'          => $this->decode($entries[$x]['title']),                           'isdraft'        => ($entries[$x]['draft_flag'] == '0') ? 'false' : 'true',                           'allow_comments' => ($entries[$x]['comments'] == '1' ) ? 'true' : 'false',                           'timestamp'      => strtotime($entries[$x]['date']),                           'body'           => $this->strtr($entries[$x]['introtext']),                           'extended'       => $this->strtr($entries[$x]['bodytext']),                           );            $entry['authorid'] = '';            $entry['author']   = '';            foreach ($users as $user) {                if ($user['ID'] == $entries[$x]['uid']) {                    $entry['authorid'] = $user['authorid'];                    $entry['author']   = $user['user_login'];                    break;                }            }            if (!is_int($entries[$x]['entryid'] = serendipity_updertEntry($entry))) {                return $entries[$x]['entryid'];            }            /* Entry/category */            foreach ($categories as $category) {                if ($category['cat_ID'] == $entries[$x]['tid'] ) {                    $data = array('entryid'    => $entries[$x]['entryid'],                                  'categoryid' => $category['categoryid']);                    serendipity_db_insert('entrycat', $this->strtrRecursive($data));                    break;                }            }        }        /* Comments */        $res = @$this->nativeQuery("SELECT * FROM {$this->data['prefix']}comments;", $gdb);        if (!$res) {            return sprintf(COULDNT_SELECT_COMMENT_INFO, mysql_error($gdb));        }        while ($a = mysql_fetch_assoc($res)) {            foreach ($entries as $entry) {                if ($entry['sid'] == $a['sid'] ) {                    $author   = '';                    $mail     = '';                    $url      = '';                    foreach($users AS $user) {                        if ($user['ID'] == $a['uid']) {                            $author = $user['user_login'];                            $mail = $user['user_email'];                            $url  = $user['user_url'];                            break;                        }                    }                    $comment = array('entry_id ' => $entry['entryid'],                                     'parent_id' => 0,                                     'timestamp' => strtotime($a['date']),                                     'author'    => $author,                                     'email'     => $mail,                                     'url'       => $url,                                     'ip'        => $a['ip'],                                     'status'    => 'approved',                                     'body'      => $a['comment'],                                     'subscribed'=> 'false',                                     'type'      => 'NORMAL');                    serendipity_db_insert('comments', $this->strtrRecursive($comment));                    $cid = serendipity_db_insert_id('comments', 'id');                    serendipity_approveComment($cid, $entry['entryid'], true);                }            }        }        $serendipity['noautodiscovery'] = $noautodiscovery;        // That was fun.        return true;    }}return 'Serendipity_Import_geeklog';/* vim: set sts=4 ts=4 expandtab : */?>

⌨️ 快捷键说明

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