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

📄 serendipity_plugin_shoutbox.php

📁 中国源码站下载
💻 PHP
字号:
<?php # $Id: serendipity_plugin_shoutbox.php,v 1.5.4.2 2004/05/03 11:55:19 garvinhicking Exp $

/* Contributed by Matthias Lange (http://blog.dinnri.de/ml/) */

/*******************************************************汉化作者:youngong(http://youngong.blogbus.com)       **官方主页:http://www.s9y.corg                        **我的信箱:youngong@163.com                           **如果有问题,欢迎和作者及汉化作者联系。                ********************************************************/

switch ($serendipity['lang']) {
    case 'de':
        @define('PLUGIN_SHOUTBOX_NAME', 'Shoutbox');
        @define('PLUGIN_SHOUTBOX_BLAHBLAH', 'Zeigt eine Shoutbox f黵 beliebige Kommentare');
        @define('PLUGIN_SHOUTBOX_DELETE', 'L鰏chen');
        @define('PLUGIN_SHOUTBOX_SUBMIT', 'Abschicken');
        @define('PLUGIN_SHOUTBOX_WORDWRAP', 'Zeilenumbruch');
        @define('PLUGIN_SHOUTBOX_WORDWRAP_BLAHBLAH', 'Nach wievielen Zeichen soll ein Zeilenumbruch eingef黦t werden?');
        @define('PLUGIN_SHOUTBOX_MAXCHARS', 'Zeichen pro Kommentar');
        @define('PLUGIN_SHOUTBOX_MAXCHARS_BLAHBLAH', 'Wieviele Zeichen sollen pro Kommentar gezeigt werden? (Standard: 120)');
        @define('PLUGIN_SHOUTBOX_MAXENTRIES', 'Anzahl an Kommentaren');
        @define('PLUGIN_SHOUTBOX_MAXENTRIES_BLAHBLAH', 'Wieviele Kommentare sollen gezeigt werden? (Standard: 15)');
        break;
    
    case 'cn':
        @define('PLUGIN_SHOUTBOX_NAME', '我有话说');
        @define('PLUGIN_SHOUTBOX_DELETE', '删除');
        @define('PLUGIN_SHOUTBOX_SUBMIT', '提交');
        @define('PLUGIN_SHOUTBOX_BLAHBLAH', '显示一个不相干的评论窗口');
        @define('PLUGIN_SHOUTBOX_WORDWRAP', '字数限制');
        @define('PLUGIN_SHOUTBOX_WORDWRAP_BLAHBLAH', '至多多少字符? (默认: 30)');
        @define('PLUGIN_SHOUTBOX_MAXCHARS', '最多评论字数');
        @define('PLUGIN_SHOUTBOX_MAXCHARS_BLAHBLAH', '显示每个评论中的多少字符? (默认: 120)');
        @define('PLUGIN_SHOUTBOX_MAXENTRIES', '最多评论数');
        @define('PLUGIN_SHOUTBOX_MAXENTRIES_BLAHBLAH', '显示多少评论? (默认: 15)');
        break;
        
    case 'en':
    case 'es':
    default:
        @define('PLUGIN_SHOUTBOX_NAME', 'Shoutbox');
        @define('PLUGIN_SHOUTBOX_DELETE', 'Delete');
        @define('PLUGIN_SHOUTBOX_SUBMIT', 'Shout it out');
        @define('PLUGIN_SHOUTBOX_BLAHBLAH', 'Displays a shoutbox for unrelated comments');
        @define('PLUGIN_SHOUTBOX_WORDWRAP', 'Wordwrap');
        @define('PLUGIN_SHOUTBOX_WORDWRAP_BLAHBLAH', 'How many chars until a wordwrap will occur? (Default: 30)');
        @define('PLUGIN_SHOUTBOX_MAXCHARS', 'Maximum chars per comment');
        @define('PLUGIN_SHOUTBOX_MAXCHARS_BLAHBLAH', 'How many chars will be displayed for each comment? (Default: 120)');
        @define('PLUGIN_SHOUTBOX_MAXENTRIES', 'Maximum number of comments');
        @define('PLUGIN_SHOUTBOX_MAXENTRIES_BLAHBLAH', 'How many comments will be shown? (Default: 15)');
        break;
}

class serendipity_plugin_shoutbox extends serendipity_plugin
{
    function introspect(&$propbag)
    {
        global $serendipity;
        
        $propbag->add('name',          PLUGIN_SHOUTBOX_NAME);
        $propbag->add('description',   PLUGIN_SHOUTBOX_BLAHBLAH);
        
        $propbag->add('configuration', array(
                                             'wordwrap',
                                             'max_chars',
                                             'max_entries',
                                             'dateformat'));
    }

    function introspect_config_item($name, &$propbag)
    {
        switch($name) {
            case 'wordwrap':
                $propbag->add('type', 'string');
                $propbag->add('name', PLUGIN_SHOUTBOX_WORDWRAP);
                $propbag->add('description', PLUGIN_SHOUTBOX_WORDWRAP_BLAHBLAH);
                break;

            case 'max_chars':
                $propbag->add('type', 'string');
                $propbag->add('name', PLUGIN_SHOUTBOX_MAXCHARS);
                $propbag->add('description', PLUGIN_SHOUTBOX_MAXCHARS_BLAHBLAH);
                break;

            case 'max_entries':
                $propbag->add('type', 'string');
                $propbag->add('name', PLUGIN_SHOUTBOX_MAXENTRIES);
                $propbag->add('description', PLUGIN_SHOUTBOX_MAXENTRIES_BLAHBLAH);
                break;

            case 'dateformat':
                $propbag->add('type', 'string');
                $propbag->add('name', GENERAL_PLUGIN_DATEFORMAT);
                $propbag->add('description', sprintf(GENERAL_PLUGIN_DATEFORMAT_BLAHBLAH, '%a, %m.%m.%Y %H:%M'));
                break;

            default:
                    return false;
        }
        return true;
    }

    function generate_content(&$title)
    {
        global $serendipity;

        $title       = PLUGIN_SHOUTBOX_NAME;
        $max_entries = $this->get_config('max_entries');
        $max_chars   = $this->get_config('max_chars');
        $wordwrap    = $this->get_config('wordwrap');
        $dateformat  = $this->get_config('dateformat');
        
        //Put new shout into the database if necessary
        if ($_REQUEST['action'] == 'fillshoutbox' && $_REQUEST['serendipity']['shouttext'] != '') {

            // Create table, if not yet existant
            if ($this->get_config('version') != '1.0') {
                $q   = "CREATE TABLE {$serendipity['dbPrefix']}shoutbox (
                            id {AUTOINCREMENT} {PRIMARY},
                            timestamp int(10) {UNSIGNED} NULL,
                            ip varchar(15) default NULL,
                            body text
                        )";
                $sql = serendipity_db_schema_import($q);
                $this->set_config('version', '1.0');
            }

            $sql =  sprintf(
                      "INSERT INTO %sshoutbox (
                            timestamp, 
                            ip, 
                            body
                       ) VALUES (
                            %s,
                            '%s',
                            '%s'
                       )",

                    $serendipity['dbPrefix'],
                    time(),
                    $_SERVER['REMOTE_ADDR'],
                    serendipity_db_escape_string($_REQUEST['serendipity']['shouttext']));
            serendipity_db_query($sql);
        }
        if ( $serendipity['GET']['action'] == 'shoutboxdelete' 
          && $_SESSION['serendipityAuthedUser'] === true) {
            $sql  = sprintf("DELETE from %sshoutbox
                              WHERE id = %d
                              LIMIT 1",
                                    $serendipity['dbPrefix'],
                                    $serendipity['GET']['comment_id']);
            serendipity_db_query($sql);
         }

        if (!$max_entries || !is_numeric($max_entries) || $max_entries < 1) {
            $max_entries = 15;
        }
        
        if (!$max_chars || !is_numeric($max_chars) || $max_chars < 1) {
            $max_chars = 120;
        }
        
        if (!$wordwrap || !is_numeric($wordwrap) || $wordwrap < 1) {
            $wordwrap = 30;
        }
        
        if (!$dateformat || strlen($dateformat) < 1) {
            $dateformat = '%a, %d.%m.%Y %H:%M';
        }
       ?>
       <form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post">
            <div>
                <input type="hidden" name="action" value="fillshoutbox" />
                <textarea name="serendipity[shouttext]" rows="4" style="width: 90%"></textarea>
                <input name='submit' type='submit' value='<?php echo PLUGIN_SHOUTBOX_SUBMIT; ?>' />
            </div>
        </form><br />
<?php
        $q = 'SELECT    s.body              AS comment,
                        s.timestamp         AS stamp,
                        s.id                AS comment_id
                FROM    '.$serendipity['dbPrefix'].'shoutbox AS s
            ORDER BY    s.timestamp DESC
               LIMIT ' . $max_entries;
?>
<div style="margin: 0px; padding: 0px; text-align: left;">
<?php
        $sql = serendipity_db_query($q);
        if ($sql && is_array($sql)) {
            foreach($sql AS $key => $row) {
                $comments = wordwrap(strip_tags($row['comment']), $max_chars, '@@@', 1);
                $aComment = explode('@@@', $comments);
                $comment  = $aComment[0];
                if (count($aComment) > 1) {
                    $comment .= ' [...]';
                }
                
                $deleteLink = "";
                if ($_SESSION['serendipityAuthedUser'] === true) {
                    $deleteLink =  ' | <a href="' . $serendipity['baseURL']
                                  . '?serendipity[action]=shoutboxdelete&amp;serendipity[comment_id]=' 
                                  . $row['comment_id'] . '">' . PLUGIN_SHOUTBOX_DELETE . '</a>';                
                }
                $entry = array('comment' => wordwrap($comment, $wordwrap, "\n",1));
                serendipity_plugin_api::hook_event('frontend_display', $entry);

                echo "<b>" . htmlspecialchars(strftime($dateformat, $row['stamp'])) . '</b> <br />' . "\n"
                     . $entry['comment'] 
                     . $deleteLink
                     . '<br /><br /><br />' . "\n\n";
            }
        }
?>
</div>
<?php
    }
}

/* vim: set sts=4 ts=4 expandtab : */
?>

⌨️ 快捷键说明

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