Example #1
0
 public function __construct($message_id, $db, $flag_format = 1)
 {
     $this->db = $db;
     $t = time();
     $sql = "SELECT msg_id, msg_sid, msg_rid, msg_body, msg_draft, msg_hits, msg_created, msg_sent, msg_opened, msg_sdeleted, msg_rdeleted, msg_lastaccessed, msg_lastupdated FROM babel_message WHERE msg_id = {$message_id}";
     $rs = mysql_query($sql, $this->db);
     if (mysql_num_rows($rs) == 1) {
         $O = mysql_fetch_object($rs);
         mysql_free_result($rs);
         $this->msg_id = $O->msg_id;
         $this->msg_sid = $O->msg_sid;
         $this->msg_rid = $O->msg_rid;
         if ($flag_format == 1) {
             $this->msg_body = format_ubb($O->msg_body);
         } else {
             $this->msg_body = $O->msg_body;
         }
         $this->msg_draft = $O->msg_draft;
         $this->msg_hits = $O->msg_hits;
         $this->msg_created = $O->msg_created;
         $this->msg_sent = $O->msg_sent;
         $this->msg_opened = $O->msg_opened;
         $this->msg_sdeleted = $O->msg_sdeleted;
         $this->msg_rdeleted = $O->msg_rdeleted;
         $this->msg_lastaccessed = $O->msg_lastaccessed;
         $this->msg_lastupdated = $O->msg_lastupdated;
         $O = null;
     } else {
         mysql_free_result($rs);
         $this->msg_id = 0;
         $this->msg_sid = 0;
         $this->msg_rid = 0;
         $this->msg_body = '';
         $this->msg_draft = 0;
         $this->msg_hits = 0;
         $this->msg_created = 0;
         $this->msg_sent = 0;
         $this->msg_opened = 0;
         $this->msg_sdeleted = 0;
         $this->msg_rdeleted = 0;
         $this->msg_lastaccessed = 0;
         $this->msg_lastupdated = 0;
     }
 }
Example #2
0
 }
 if ($rt['out_of_money']) {
     $p->vxHead($msgSiteTitle = Vocabulary::term_out_of_money);
     $p->vxBodyStart();
     $p->vxTop();
     $p->vxContainer('out_of_money');
 } else {
     if ($rt['errors'] == 0) {
         $p->Validator->vxPostCreateInsert($rt['topic_id'], $p->User->usr_id, $rt['pst_title_value'], $rt['pst_content_value'], $rt['exp_amount']);
         if (!isset($_SESSION['babel_page_topic'])) {
             $_SESSION['babel_page_topic'] = 1;
         }
         // $p->vxHead($msgSiteTitle = Vocabulary::action_replytopic, $return = '/topic/view/' . $topic_id . '/' . $_SESSION['babel_page_topic'] . '.html');
         $Topic->vxTouch();
         $Topic->vxUpdatePosts();
         $_pst_content_plain = htmlspecialchars_decode(strip_tags(format_ubb($rt['pst_content_value'])));
         // Start: Send a mail to topic owner
         if ($Topic->usr_sw_notify_reply == 1 && $Topic->tpc_uid != $p->User->usr_id) {
             $mail = array();
             $mail['subject'] = '[' . Vocabulary::site_name . ' 新回复] - ' . make_plaintext($Topic->tpc_title);
             $mail['body'] = "{$Topic->usr_nick},你好!\n\n你发表在 " . Vocabulary::site_name . " 的讨论主题 [ {$Topic->tpc_title} ] 被会员 {$p->User->usr_nick} 在北京时间 " . date('Y-n-j G:i:s', time()) . " 回复了,因此我们发送此邮件给你。\n\n-----------------------------------------------\n" . $_pst_content_plain . "\n-----------------------------------------------\n\n你可以点击下面的地址查看这篇新回复。\n\nhttp://" . BABEL_DNS_NAME . $p->URL->vxGetTopicView($rt['topic_id'], $_SESSION['babel_page_topic']) . "\n\n如果你不想再收到此类邮件,你可以在个人设置中关闭 [ 邮件通知自己的主题的新回复 ] 功能。" . BABEL_AM_SIGNATURE;
             if ($Topic->usr_email_notify != '') {
                 $_receiver = $Topic->usr_email_notify;
             } else {
                 $_receiver = $Topic->usr_email;
             }
             $am = new Airmail($_receiver, $mail['subject'], $mail['body'], $p->db);
             $am->vxSend();
             $am = null;
             if (BABEL_DEBUG) {
                 if (isset($_SESSION['babel_debug_log'])) {
        mysql_select_db(BABEL_DB_SCHEMATA, $db);
        mysql_query("SET NAMES utf8");
        mysql_query("SET CHARACTER SET utf8");
        mysql_query("SET COLLATION_CONNECTION='utf8_general_ci'");
        $user_nick = mysql_real_escape_string($user_nick);
        $sql = "SELECT usr_id FROM babel_user WHERE usr_nick = '{$user_nick}'";
        $rs = mysql_query($sql);
        if (mysql_num_rows($rs) == 1) {
            $user_id = mysql_result($rs, 0, 0);
            mysql_free_result($rs);
            $sql = "SELECT ing_doing, ing_created FROM babel_ing_update WHERE ing_uid = {$user_id} ORDER BY ing_created DESC LIMIT 1";
            $rs = mysql_query($sql);
            if (mysql_num_rows($rs) == 1) {
                $_up = mysql_fetch_array($rs);
                mysql_free_result($rs);
                $doing = format_ubb($_up['ing_doing']);
                $when = make_desc_time($_up['ing_created']) . ' ago';
            } else {
                mysql_free_result($rs);
                $doing = '(void)';
                $when = 'the moment';
            }
            $user_nick_url = urlencode($user_nick);
            $o = "document.writeln(\"<span style='color: \" + babel_ing_color_prefix + \";'>\" + babel_ing_prefix + \"</span> " . $doing . " <small style='font-size: 11px; color: \" + babel_ing_color_time + \";'>at " . $when . " via <a href='http://" . BABEL_DNS_NAME . "/ing/" . $user_nick_url . "' target='_blank'>" . Vocabulary::site_name . "::ING</a></small>\");";
        } else {
            mysql_free_result($rs);
            $o = "document.writeln('<small style=\"font-size: 11px;\"><a href=\"http://" . BABEL_DNS_NAME . "/ing\" target=\"_blank\">" . Vocabulary::site_name . "::ING</a></small> 输出失败 - 指定的会员没有找到');";
        }
    }
} else {
    $o = "document.writeln('<small style=\"font-size: 11px;\"><a href=\"http://" . BABEL_DNS_NAME . "/ing\" target=\"_blank\">" . Vocabulary::site_name . "::ING</a></small> 输出失败 - 没有指定会员昵称');";
Example #4
0
     $view->assign('edit', $logs_list);
     $view->display('edit.tpl');
     break;
 case 'tags':
     $tag = strval(trim($_GET['tag']));
     $tag = urldecode($tag);
     $view->assign('tags_name', $tag);
     if (!($tags_list = $content->load('tags_list'))) {
         $show = new Show();
         if (ROOT) {
             $tags_list = $show->getByTags($tag, true);
         } else {
             $tags_list = $show->getByTags($tag);
         }
         for ($i = 0; $i < count($tags_list); $i++) {
             $tags_list[$i][content] = format_ubb($tags_list[$i][content]);
             $view->assign('tags', $tags_list);
         }
         $content->save($tags_list, 'tags_list');
     } else {
         $view->assign('tags', $tags_list);
     }
     /* Flickr cache */
     require_once 'models/Flickr.class.php';
     if (!($flickr = $cache->load('flickr'))) {
         $flickr = Flickr::output("schema/Flickr.xml");
         $view->assign('flickr', $flickr);
         $cache->save($flickr, 'flickr');
     } else {
         $view->assign('flickr', $flickr);
     }
Example #5
0
 public function vxFormatUBB($text)
 {
     $text = format_ubb($text);
     return $text;
 }
Example #6
0
 public function vxTopic()
 {
     if (isset($_GET['topic_id'])) {
         $topic_id = intval($_GET['topic_id']);
         $sql = "SELECT tpc_id, tpc_uid, tpc_pid, tpc_title, tpc_content, tpc_posts, tpc_created, usr_id, usr_nick FROM babel_topic, babel_user WHERE tpc_uid = usr_id AND tpc_id = {$topic_id} AND tpc_flag IN (0, 2)";
         $rs = mysql_query($sql);
         if ($Topic = mysql_fetch_object($rs)) {
             mysql_free_result($rs);
             mysql_unbuffered_query("UPDATE babel_topic SET tpc_hits = tpc_hits + 1 WHERE tpc_id = {$topic_id}");
             $Board = new Node($Topic->tpc_pid, $this->db);
             $Section = $Board->vxGetNodeInfo($Board->nod_pid);
             $this->vxHeader(make_plaintext($Topic->tpc_title));
             $this->vxBodyStart();
             $this->vxH1();
             echo '<div class="content"><small>';
             if ($this->User->vxIsLogin()) {
                 echo '<a href="/u/' . urlencode($this->User->usr_nick) . '">' . $this->User->usr_nick . '</a> - ';
                 echo '<a href="/babel_mobile.php?m=logout">登出</a>';
             } else {
                 echo '<a href="/babel_mobile.php?m=login">登录</a>';
             }
             echo '</small></div>';
             echo '<div class="content"><small><a href="/' . $_SESSION['babel_page_home_mobile'] . '">' . Vocabulary::site_name . '</a> &gt; ' . make_plaintext($Section->nod_title) . ' &gt; ' . make_plaintext($Board->nod_title) . '</small></div>';
             echo '<h2>' . make_plaintext($Topic->tpc_title) . '</h2>';
             echo '<div class="author"><small class="author">by <a href="/u/' . urlencode(make_plaintext($Topic->usr_nick)) . '">' . make_plaintext($Topic->usr_nick) . '</a> at ' . date('Y-n-j H:i:s', $Topic->tpc_created) . '</small></div>';
             echo '<span class="text">' . format_ubb($Topic->tpc_content) . '</span>';
             $sql = "SELECT COUNT(pst_id) FROM babel_post WHERE pst_tid = {$topic_id}";
             $rs = mysql_query($sql);
             $_total = mysql_result($rs, 0, 0);
             mysql_free_result($rs);
             $_per = 10;
             if ($_total % $_per == 0) {
                 $_pages = $_total / $_per;
             } else {
                 $_pages = floor($_total / $_per) + 1;
             }
             if (isset($_GET['p'])) {
                 $_p = intval($_GET['p']);
                 if ($_p < 1) {
                     $_p = 1;
                 }
                 if ($_p > $_pages) {
                     $_p = $_pages;
                 }
             } else {
                 $_p = 1;
             }
             if ($_p == 1) {
                 $_p_first = true;
             } else {
                 $_p_first = false;
             }
             if ($_p == $_pages) {
                 $_p_last = true;
             } else {
                 $_p_last = false;
             }
             $_SESSION['babel_page_topic_mobile'] = $_p;
             $_SESSION['babel_page_topic_last_mobile'] = $_pages;
             $_p_start = ($_p - 1) * $_per;
             $sql = "SELECT pst_id, pst_title, pst_content, pst_created, usr_id, usr_nick FROM babel_post, babel_user WHERE pst_tid = {$topic_id} AND pst_uid = usr_id ORDER BY pst_created ASC LIMIT {$_p_start}, {$_per}";
             $rs = mysql_query($sql);
             $i = 0;
             while ($Post = mysql_fetch_object($rs)) {
                 $i++;
                 $j = $_p_start + $i;
                 echo '<div class="author"><small><strong>#' . $j . '</strong> - <a href="/u/' . urlencode(make_plaintext($Post->usr_nick)) . '">' . make_plaintext($Post->usr_nick) . '</a> at ' . date('Y-n-j H:i:s', $Post->pst_created) . ':</small></div><div class="content">' . format_ubb($Post->pst_content) . '</div>';
             }
             echo '<div class="content"><small>';
             if ($_pages > 1) {
                 if (!$_p_last) {
                     echo '&nbsp;&nbsp;<a href="/t/' . $topic_id . '/' . ($_p + 1) . '">下一页</a>';
                 }
                 if (!$_p_first) {
                     echo '&nbsp;&nbsp;<a href="/t/' . $topic_id . '/' . ($_p - 1) . '">上一页</a>';
                 }
                 echo '&nbsp;&nbsp;' . $_p . '/' . $_pages . '&nbsp;&nbsp;共 ' . $_total . ' 篇回复';
             }
             echo '&nbsp;&nbsp;<a href="/' . $_SESSION['babel_page_home_mobile'] . '">返回</a>';
             echo '</small></div>';
             if ($this->User->vxIsLogin()) {
                 if ($this->Validator->vxIsAutisticNode($Topic->tpc_pid, $this->cs)) {
                     if ($this->User->usr_id == $Topic->tpc_uid) {
                         echo '<div class="content"><form action="/post/create/mobile/' . $Topic->tpc_id . '.vx" method="post"><textarea name="reply" class="textbox" cols="30" rows="4" maxlength="1000"></textarea><br /><input type="submit" value="回 复" class="go" /><small> &nbsp; 回复不能超过 1000 字</small></form></div>';
                     } else {
                         echo '<div class="content"><small>你不能回复自闭模式讨论区中他人创建的主题</small></div>';
                     }
                 } else {
                     echo '<div class="content"><form action="/post/create/mobile/' . $Topic->tpc_id . '.vx" method="post"><textarea name="reply" class="textbox" cols="30" rows="4" maxlength="1000"></textarea><br /><input type="submit" value="回 复" class="go" /><small> &nbsp; 回复不能超过 1000 字</small>';
                     echo '</form></div>';
                 }
             }
             $this->vxBottom();
             $this->vxBodyEnd();
             $this->vxHTMLEnd();
         } else {
             mysql_free_result($rs);
             $this->vxHome();
         }
     } else {
         $this->vxHome();
     }
 }
Example #7
0
 public function vxIngPersonal($User)
 {
     /* start: how many pages */
     $sql = "SELECT COUNT(*) FROM babel_ing_update WHERE ing_uid = {$User->usr_id}";
     $count_total = mysql_result(mysql_query($sql), 0, 0);
     $size = BABEL_ING_PAGE;
     if ($count_total > BABEL_ING_PAGE) {
         if (isset($_GET['p'])) {
             $p = intval($_GET['p']);
             if ($p < 1) {
                 $p = 1;
             }
         } else {
             $p = 1;
         }
         $pages = $count_total % BABEL_ING_PAGE == 0 ? intval($count_total / BABEL_ING_PAGE) : floor($count_total / BABEL_ING_PAGE) + 1;
         if ($p > $pages) {
             $p = $pages;
         }
         $start = ($p - 1) * BABEL_ING_PAGE;
     } else {
         $pages = 1;
         $start = 0;
         $p = 1;
     }
     /* end: how many pages */
     if ($User->usr_id == $this->User->usr_id) {
         $flag_self = true;
     } else {
         $flag_self = false;
     }
     _v_ing_style_personal();
     _v_m_s();
     _v_b_l_s();
     _v_ico_map();
     echo ' <a href="/">' . Vocabulary::site_name . '</a> &gt <a href="/u/' . $User->usr_nick_url . '">' . $User->usr_nick_plain . '</a> &gt ING <span class="tip_i"><small>alpha</small></span>';
     _v_d_e();
     /* S: data here!!! */
     include BABEL_PREFIX . '/res/ing_sources.php';
     $t = time() - 86400;
     $sql = "SELECT ing_id, ing_uid, ing_doing, ing_doing, ing_source, ing_created, usr_id, usr_nick, usr_gender, usr_portrait FROM babel_ing_update, babel_user WHERE usr_id = ing_uid AND ing_uid = {$User->usr_id} ORDER BY ing_created DESC LIMIT {$start}, {$size}";
     $rs_updates = mysql_query($sql);
     $count = mysql_num_rows($rs_updates);
     if ($count == 0) {
         if ($flag_self) {
             $hack_height = 'height: 350px; ';
         } else {
             $hack_height = 'height: 240px; ';
         }
     } else {
         if ($count < 5) {
             $hack_height = 'height: 360px; ';
         } else {
             $hack_height = '';
         }
     }
     /* E: data here!!! */
     echo '<div class="blank" align="left" style="' . $hack_height . '">';
     echo '<div style="float: right; padding: 3px 10px 3px 10px; font-size: 10px; background-color: #F0F0F0; -moz-border-radius: 5px; color: #999;">';
     echo $User->usr_nick_plain . ' | <a href="/ing/' . $User->usr_nick_url . '/friends">With Friends</a> | <a href="/ing">Everyone</a>';
     /*if ($this->User->vxIsLogin()) {
     			echo('&nbsp;&nbsp;<a href="/fav/ing">' . _vo_ico_silk('heart') . '</a>');
     		}*/
     echo '&nbsp;&nbsp;<a href="/feed/ing/' . $User->usr_nick_url . '">' . _vo_ico_silk('feed') . '</a>';
     echo '</div>';
     echo '<span class="text_large">';
     _v_ico_silk('hourglass');
     echo ' ING</span>';
     if ($flag_self) {
         _v_hr();
         echo '<div align="center">';
         echo '<form action="/recv/ing.vx" id="ing_personal" method="POST" onsubmit="return checkIngForm();">';
         echo '<div style="background-image: url(' . "'/img/bg_ing.gif'" . '); padding-top: 3px; width: 320px; height: 35px;"><input onkeyup="checkIngType(' . "'doing', 'ing_status'" . ');" type="text" class="sll" id="doing" name="doing" maxlength="131" /></div> ';
         _v_btn_f($this->lang->update(), 'ing_personal');
         echo '<div id="ing_status" style="padding-top: 10px;"><span class="tip_i"><small>131 characters remaining</small></span></div>';
         echo '<input type="hidden" name="return" value="/ing/' . urlencode($this->User->usr_nick) . '" />';
         echo '</form>';
         echo '</div>';
     } else {
     }
     _v_hr();
     /* S: right user badge */
     echo '<div style="min-width: 170px; max-width: 180px; padding: 5px 0px 5px 0px; background-color: #FFF; float: right;"><img src="' . $User->img_p_s . '" align="left" style="margin-right: 10px;" class="portrait" /> <span class="tip_i">all about</span><h1 class="ititle" style="margin-bottom: 5px; display: block;"><a href="/u/' . $User->usr_nick_url . '">' . $User->usr_nick_plain . '</a></h1>';
     $sql = "SELECT ing_doing, ing_created FROM babel_ing_update WHERE ing_uid = {$User->usr_id} ORDER BY ing_created DESC LIMIT 1";
     $rs = mysql_query($sql);
     if ($_up = mysql_fetch_array($rs)) {
         _v_hr();
         echo '<span class="tip_i"><small>Currently:</small></span>';
         echo '<blockquote style="padding: 5px 5px 5px 20px; margin: 0px; border: none;">' . format_ubb($_up['ing_doing']) . '</blockquote>';
         echo '<div align="right"><small class="fade">Updated ' . make_desc_time($_up['ing_created']) . ' ago</small></div>';
     } else {
         _v_hr();
         echo '<span class="tip_i"><small>Currently:</small></span>';
         echo '<blockquote style="padding: 5px 5px 5px 20px; margin: 0px; border: none;">(void)</blockquote>';
     }
     mysql_free_result($rs);
     if ($User->usr_brief_plain != '') {
         _v_hr();
         echo '<span class="tip_i">' . $User->usr_brief_plain . '</span>';
     }
     _v_hr();
     if ($stats = $this->cl->load('babel_ing_stats_brief_' . $User->usr_id)) {
     } else {
         $stats = '';
         $stats .= '<span class="tip"><small>';
         $stats .= '&#187; <a href="/ing/' . $User->usr_nick_url . '" class="regular">' . $count_total . '</a> updates<br /><br />';
         $sql = 'SELECT COUNT(*) FROM babel_friend WHERE frd_uid = ' . $User->usr_id;
         $count_friends = mysql_result(mysql_query($sql), 0, 0);
         $stats .= '&#187; <a href="/u/' . $User->usr_nick_url . '#friends" class="regular">' . $count_friends . '</a> friends<br /><br />';
         $sql = 'SELECT COUNT(*) FROM babel_friend WHERE frd_fid = ' . $User->usr_id;
         $count_fans = mysql_result(mysql_query($sql), 0, 0);
         $stats .= '&#187; <a href="/who/connect/' . $User->usr_nick_url . '" class="regular">' . $count_fans . '</a> fans';
         $stats .= '</small></span>';
         $this->cl->save($stats, 'babel_ing_stats_brief_' . $User->usr_id);
     }
     echo $stats;
     _v_d_e();
     /* E: right user badge */
     echo '<div>';
     make_pages($pages, $p, '/ing/' . $User->usr_nick_url . '/page/', '');
     $i = 0;
     while ($_up = mysql_fetch_array($rs_updates)) {
         $i++;
         $css_class = $i % 2 == 0 ? 'even' : 'odd';
         $img_p = $_up['usr_portrait'] ? CDN_IMG . 'p/' . $_up['usr_portrait'] . '_s.jpg' : CDN_IMG . 'p_' . $_up['usr_gender'] . '_s.gif';
         echo '<div style="width: 61.8%; min-width: 200px; max-width: 800px;" class="entry_' . $css_class . '">';
         //echo('<img src="' . $img_p . '" align="absmiddle" alt="' . make_single_return($_up['usr_nick']) . '" class="portrait" /> ');
         //echo('<a href="/u/' . urlencode($_up['usr_nick']) . '" class="t">' . make_plaintext($_up['usr_nick']) . '</a> ');
         echo format_ubb(trim($_up['ing_doing'])) . ' <span class="tip_i">' . make_descriptive_time($_up['ing_created']) . '</span> <span class="tip"><small>from ' . $_sources[$_up['ing_source']] . '</small></span> ';
         if ($flag_self) {
             echo '<a href="/erase/ing/' . $_up['ing_id'] . '.vx"><img src="/img/ing_trash.gif" align="absmiddle" alt="del" border="0" /></a>';
         }
         /*
         			if ($this->User->vxIsLogin()) {
         				echo(' <a href="/fav/ing/' . $_up['ing_id'] . '.vx"><img src="/img/ing_fav.gif" align="absmiddle" alt="fav" border="0" /></a>');
         			}*/
         _v_d_e();
     }
     mysql_free_result($rs_updates);
     make_pages($pages, $p, '/ing/' . $User->usr_nick_url . '/page/', '');
     if ($i > 0) {
         _v_hr();
         echo '<span class="tip_i">';
         _v_ico_silk('feed');
         echo ' <a href="/feed/ing/' . $User->usr_nick_url . '">RSS / ' . $User->usr_nick_plain . ' 的最新状态</a>';
         echo ' | ';
         _v_ico_silk('html');
         echo ' <a href="#;" onclick="openOJSIngPersonal(' . "'{$this->User->usr_nick_url}'" . ')">JavaScript 输出到你的网站</a>';
         echo ' | ';
         _v_ico_silk('computer');
         echo ' <a href="http://code.google.com/p/ingc" target="_blank">通过 INGC 来更新 <img src="/img/ext.png" align="absmiddle" border="0" /></a>';
         echo '</span>';
     }
     _v_d_e();
     if ($i == 0) {
         _v_ico_silk('exclamation');
         echo ' <a href="/u/' . $User->usr_nick_url . '">' . $User->usr_nick_plain . '</a> 目前还没有任何更新 ...';
     }
     if ($flag_self) {
         echo '<img src="/img/spacer.gif" onload="getObj(' . "'doing'" . ').focus();" style="display: none;" />';
     }
     _v_d_e();
     Widget::vxIngAbout();
     _v_d_e();
 }
 public function vxJavaScriptIngPersonal()
 {
     if (isset($_GET['oe'])) {
         $oe = strtolower(fetch_single($_GET['oe']));
         if ($oe != 'gbk') {
             $oe = 'utf-8';
         }
     } else {
         $oe = "utf-8";
     }
     if ($oe != 'utf-8') {
         header('Content-type: text/javascript; charset=gbk');
     } else {
         header('Content-type: text/javascript; charset=utf-8');
     }
     header('Cache-control: no-cache, must-revalidate');
     if (isset($_GET['u'])) {
         $user_nick = fetch_single($_GET['u']);
         $user_nick_md5 = md5($user_nick);
         if ($o = $this->cs->get('babel_js_ing_' . $user_nick_md5)) {
             // nothing to do here
         } else {
             $User = $this->User->vxGetUserInfoByNick($user_nick);
             if ($User) {
                 $sql = "SELECT ing_doing, ing_created FROM babel_ing_update WHERE ing_uid = {$User->usr_id} ORDER BY ing_created DESC LIMIT 1";
                 $rs = mysql_query($sql);
                 if (mysql_num_rows($rs) == 1) {
                     $_up = mysql_fetch_array($rs);
                     $doing = format_ubb($_up['ing_doing']);
                     $when = make_desc_time($_up['ing_created']) . ' ago';
                 } else {
                     $doing = '(void)';
                     $when = 'the moment';
                 }
                 $o = "document.writeln(\"<span style='color: \" + babel_ing_color_prefix + \";'>\" + babel_ing_prefix + \"</span> " . $doing . " <small style='font-size: 11px; color: \" + babel_ing_color_time + \";'>at " . $when . " via <a href='http://" . BABEL_DNS_NAME . "/ing/" . $User->usr_nick_url . "' target='_blank'>" . Vocabulary::site_name . "::ING</a></small>\");";
             } else {
                 $o = "document.writeln('<small style=\"font-size: 11px;\"><a href=\"http://" . BABEL_DNS_NAME . "/ing\" target=\"_blank\">" . Vocabulary::site_name . "::ING</a></small> 输出失败 - 指定的会员没有找到');";
             }
             $this->cs->save($o, 'babel_js_ing_' . $user_nick_md5);
         }
     } else {
         $o = "document.writeln('<small style=\"font-size: 11px;\"><a href=\"http://" . BABEL_DNS_NAME . "/ing\" target=\"_blank\">" . Vocabulary::site_name . "::ING</a></small> 输出失败 - 没有指定会员昵称');";
     }
     if ($oe == 'utf-8') {
         echo $o;
     } else {
         echo mb_convert_encoding($o, 'gbk', 'utf-8');
     }
 }
Example #9
0
 public function vxFeedIngPersonal($User)
 {
     $this->s->assign('site_url', 'http://' . BABEL_DNS_NAME . '/ing/' . $User->usr_nick_url);
     $sql = "SELECT ing_id, ing_doing, ing_source, ing_created FROM babel_ing_update WHERE ing_uid = {$User->usr_id} ORDER BY ing_created DESC LIMIT 10";
     $rs = mysql_query($sql);
     $Updates = array();
     $i = 0;
     while ($Update = mysql_fetch_object($rs)) {
         $i++;
         $Updates[$i] = $Update;
         $Updates[$i]->ing_doing_title = htmlspecialchars(make_plaintext(format_ubb($Updates[$i]->ing_doing, false)), ENT_NOQUOTES);
         $Updates[$i]->ing_doing = htmlspecialchars('<img src="' . $User->img_p_n . '" align="left" style="background-color: #FFF; padding: 2px; margin: 0px 5px 5px 0px; border: 1px solid #CCC;" />&nbsp;' . format_ubb($Updates[$i]->ing_doing), ENT_NOQUOTES) . ' - ' . make_descriptive_time($Update->ing_created);
         $Updates[$i]->ing_pubdate = date('r', $Updates[$i]->ing_created);
         $Updates[$i]->entry_link = 'http://' . BABEL_DNS_NAME . '/ing-' . $Update->ing_id . '.html';
     }
     $this->s->assign('user', $User);
     $this->s->assign('feed_title', $User->usr_nick_plain . " 在做什么");
     $this->s->assign('feed_description', $User->usr_nick_plain . ' 的最新活动');
     $this->s->assign('feed_category', $User->usr_nick_plain);
     $this->s->assign('a_updates', $Updates);
     $this->s->display('feed/rss2_ing_personal.smarty');
 }
        $_timeline[$_ing['ing_created']]['img_p'] = $_ing['usr_portrait'] == '' ? '/img/p_' . $_ing['usr_gender'] . '_n.gif' : '/img/p/' . $_ing['usr_portrait'] . '_n.jpg';
    }
    /* Sort the timeline. */
    krsort($_timeline);
    $c->save(serialize($_timeline), $tag_cache);
}
foreach ($_timeline as $time => $event) {
    echo '<div class="object">';
    switch ($event['type']) {
        case 'topic':
            echo '<div class="head"><img src="' . $event['img_p'] . '" align="absmiddle" border="0" />&nbsp;&nbsp;<a href="/u/' . urlencode($event['usr_nick']) . '" class="var" style="color: ' . rand_color() . '; font-weight: bold;">' . make_plaintext($event['usr_nick']) . '</a><span class="tip"> ... ' . make_descriptive_time($time) . '在 <a href="/go/' . urlencode($event['nod_name']) . '" class="var" style="color: ' . rand_color() . '; font-weight: bold;">' . make_plaintext($event['nod_title']) . '</a> 发表了新主题:</span></div>';
            echo '<div class="body"><a href="' . $event['link'] . '" style="font-size: ' . $event['weight'] . 'px">' . make_plaintext($event['title']) . '</a></div>';
            break;
        case 'ing':
            echo '<div class="head"><img src="' . $event['img_p'] . '" align="absmiddle" border="0" />&nbsp;&nbsp;<a href="/u/' . urlencode($event['usr_nick']) . '" class="var" style="color: ' . rand_color() . '; font-weight: bold;">' . make_plaintext($event['usr_nick']) . '</a><span class="tip"> ... ' . make_descriptive_time($time) . '说:</span></div>';
            echo '<div class="body"><a href="' . $event['link'] . '" style="font-size: ' . $event['weight'] . 'px">' . format_ubb($event['title']) . '</a></div>';
            break;
    }
    echo '</div>';
}
?>
	</div>
</div>
</div>
<div id="bottom">
	<div id="bottom_inside">
		&copy; 2007 V2EX<br />
		<a href="http://www.v2ex.com/" class="white">V2EX</a> | <a href="http://www.livid.cn/" class="white">Blog</a> | <a href="http://labs.v2ex.com/" class="white">Labs</a> | <a href="http://code.google.com/" class="white">Developers</a><br />
		<small>V2EX Dashboard is a prototype design of future V2EX frontpage, it changes by time.</small>
	</div>
</div>
Example #11
0
function make_excerpt_topic($Topic, $keywords, $style)
{
    $len_content = strlen($Topic->tpc_content);
    $len_desc = strlen($Topic->tpc_description);
    $excerpt = '';
    $excerpt_c = '';
    $excerpt_d = '';
    if ($len_content > 0) {
        $excerpt_c = format_ubb($Topic->tpc_content);
        $excerpt_c = trim(strip_tags($excerpt_c));
    } else {
        $excerpt_d = format_ubb($Topic->tpc_description);
        $excerpt_d = trim(strip_tags($excerpt_d));
    }
    if (strlen($excerpt_c) > 0) {
        $stage = 1;
        $excerpt = $excerpt_c;
    } else {
        if (strlen($excerpt_d) > 0) {
            $stage = 2;
            $excerpt = $excerpt_d;
        } else {
            $stage = 3;
            $excerpt = $Topic->tpc_title;
        }
    }
    foreach ($keywords as $keyword) {
        $start = mb_strpos($excerpt, $keyword, 0, 'UTF-8');
        if ($start != false) {
            break;
        } else {
            $start = 0;
        }
    }
    if ($start != 0) {
        if ($start < 100) {
            $start = 0;
        } else {
            $start = $start - 100;
        }
    }
    $o = mb_substr($excerpt, $start, 300, 'UTF-8');
    $excerpt = make_highlight($o, $keywords, STR_HIGHLIGHT_SKIPLINKS, $style);
    if ($stage != 3) {
        if (strlen($excerpt) < $len_content) {
            $excerpt = $excerpt . ' ...';
        }
    }
    return $excerpt;
}
Example #12
0
 public static function vxBuild($user_id, $weblog_id)
 {
     $start = microtime(true);
     $Weblog = new Weblog($weblog_id);
     if ($start - $Weblog->blg_lastbuilt < BABEL_WEBLOG_BUILD_INTERVAL) {
         $_SESSION['babel_message_weblog'] = _vo_ico_silk('clock') . ' 距离上次构建时间尚不足 ' . BABEL_WEBLOG_BUILD_INTERVAL . ' 秒,本次操作取消,请等待 ' . (BABEL_WEBLOG_BUILD_INTERVAL - intval($start - $Weblog->blg_lastbuilt)) . ' 秒之后再试验';
     } else {
         require_once BABEL_PREFIX . '/libs/textile/classTextile.php';
         require_once BABEL_PREFIX . '/libs/markdown/markdown.php';
         require_once BABEL_PREFIX . '/libs/htmlpurifier/library/HTMLPurifier.auto.php';
         $purifier_config = HTMLPurifier_Config::createDefault();
         $purifier_config->set('Core', 'Encoding', 'UTF-8');
         $purifier_config->set('HTML', 'Doctype', 'XHTML 1.0 Transitional');
         $purifier = new HTMLPurifier($purifier_config);
         $Textile = new Textile();
         $bytes = 0;
         $files = 0;
         /* check user home directory */
         $usr_dir = BABEL_WEBLOG_PREFIX . '/' . BABEL_WEBLOG_WWWROOT . '/' . $Weblog->blg_name;
         if (!file_exists($usr_dir)) {
             mkdir($usr_dir);
         }
         /* clean old files */
         foreach (glob($usr_dir . '/*.html') as $filename) {
             unlink($filename);
         }
         foreach (glob($usr_dir . '/*.css') as $filename) {
             unlink($filename);
         }
         foreach (glob($usr_dir . '/*.rss') as $filename) {
             unlink($filename);
         }
         $s = new Smarty();
         $s->template_dir = BABEL_PREFIX . '/res/weblog/themes/' . $Weblog->blg_theme;
         if (!is_dir(BABEL_PREFIX . '/tplc/' . $Weblog->blg_theme)) {
             mkdir(BABEL_PREFIX . '/tplc/' . $Weblog->blg_theme);
         }
         $s->compile_dir = BABEL_PREFIX . '/tplc/' . $Weblog->blg_theme;
         $s->cache_dir = BABEL_PREFIX . '/cache/smarty';
         $s->config_dir = BABEL_PREFIX . '/cfg';
         $s->assign('ico_feed', 'http://' . BABEL_WEBLOG_SITE_STATIC . '/img/icons/silk/feed.png');
         $s->assign('site_theme', $Weblog->blg_theme);
         $s->assign('site_static', BABEL_WEBLOG_SITE_STATIC);
         $s->assign('site_babel', BABEL_DNS_NAME);
         $s->assign('site_weblog_root', 'http://' . BABEL_WEBLOG_SITE . '/' . $Weblog->blg_name . '/');
         $s->assign('site_url', 'http://' . BABEL_WEBLOG_SITE . '/' . $Weblog->blg_name . '/');
         $s->assign('site_title', make_plaintext($Weblog->blg_title));
         $s->assign('site_description', make_plaintext($Weblog->blg_description));
         $s->assign('site_category', make_plaintext(Vocabulary::site_name));
         $s->assign('site_lang', 'en');
         $s->assign('license_show', $Weblog->blg_license_show);
         $s->assign('license_code', Weblog::vxGetLicenseCode($Weblog->blg_license));
         $s->assign('built', date('Y-n-j G:i:s T', time()));
         $s->assign('user_nick', $Weblog->usr_nick);
         $s->assign('user_nick_plain', make_plaintext($Weblog->usr_nick));
         $s->assign('user_nick_url', urlencode($Weblog->usr_nick));
         $s->assign('user_brief_plain', make_plaintext($Weblog->usr_brief));
         $s->assign('user_created_plain_short', date('n/j/Y', $Weblog->usr_created));
         if ($Weblog->usr_portrait == '') {
             $s->assign('user_portrait', '/img/p_' . $Weblog->usr_gender . '.gif');
             $s->assign('user_portrait_s', '/img/p_' . $Weblog->usr_gender . '_s.gif');
             $s->assign('user_portrait_n', '/img/p_' . $Weblog->usr_gender . '_n.gif');
         } else {
             $s->assign('user_portrait', '/img/p/' . $Weblog->usr_portrait . '.' . BABEL_PORTRAIT_EXT);
             $s->assign('user_portrait_s', '/img/p/' . $Weblog->usr_portrait . '_s.' . BABEL_PORTRAIT_EXT);
             $s->assign('user_portrait_n', '/img/p/' . $Weblog->usr_portrait . '_n.' . BABEL_PORTRAIT_EXT);
         }
         $s->assign('user_ing', $Weblog->blg_ing);
         $s->assign('google_analytics', '<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script><script type="text/javascript">_uacct = "UA-841322-3"; urchinTracker();</script>');
         $sql = "SELECT DISTINCT bet_tag FROM babel_weblog_entry_tag WHERE bet_eid IN (SELECT bge_id FROM babel_weblog_entry WHERE bge_pid = {$Weblog->blg_id}) ORDER BY bet_tag ASC";
         $rs = mysql_query($sql);
         $_tags = array();
         while ($_tag = mysql_fetch_array($rs)) {
             $_tags[] = $_tag;
         }
         mysql_free_result($rs);
         $s->assign('tags', $_tags);
         $links = array();
         foreach ($Weblog->blg_links as $category) {
             $category['category'] = str_replace('\\|', '|', $category['category']);
             $category_md5 = md5($category['category']);
             if (count($category['links']) > 0) {
                 $links[$category_md5] = array();
                 $links[$category_md5]['category'] = make_plaintext($category['category']);
                 $links[$category_md5]['links'] = array();
                 foreach ($category['links'] as $link) {
                     $link['title'] = str_replace('\\|', '|', $link['title']);
                     $link_md5 = md5($link['url']);
                     $links[$category_md5]['links'][$link_md5] = array();
                     $links[$category_md5]['links'][$link_md5]['title'] = make_plaintext($link['title']);
                     $links[$category_md5]['links'][$link_md5]['url'] = make_plaintext($link['url']);
                 }
             }
         }
         $s->assign('links', $links);
         if ($Weblog->blg_theme == 'cloud') {
             $sql_order = "ASC";
             $sql_limit_index = "";
         } else {
             $sql_order = "DESC";
             $sql_limit_index = "LIMIT 10";
         }
         /* S: index.smarty */
         $sql = "SELECT bge_id, bge_title, bge_body, bge_mode, bge_tags, bge_comments, bge_trackbacks, bge_comment_permission, bge_published, usr_id, usr_nick FROM babel_weblog_entry, babel_user WHERE bge_uid = usr_id AND bge_uid = {$Weblog->usr_id} AND bge_pid = {$Weblog->blg_id} AND bge_status = 1 ORDER BY bge_published {$sql_order} {$sql_limit_index}";
         $rs = mysql_query($sql);
         $entries_count = mysql_num_rows($rs);
         $_entries = array();
         $_ids = array();
         $i = 0;
         while ($_entry = mysql_fetch_array($rs)) {
             $i++;
             $_entries[$_entry['bge_id']] = $_entry;
             $_ids[$i] = $_entry['bge_id'];
             if ($i == 1) {
                 $_entries[$_entry['bge_id']]['first'] = 1;
             } else {
                 $_entries[$_entry['bge_id']]['first'] = 0;
             }
             if ($i == $entries_count) {
                 $_entries[$_entry['bge_id']]['last'] = 1;
             } else {
                 $_entries[$_entry['bge_id']]['last'] = 0;
             }
             if ($_entries[$_entry['bge_id']]['first'] == 0 && $_entries[$_entry['bge_id']]['first'] == 1) {
                 $_entries[$_entry['bge_id']]['middle'] = 1;
             } else {
                 $_entries[$_entry['bge_id']]['middle'] = 0;
             }
             $_entries[$_entry['bge_id']]['url'] = 'http://' . BABEL_WEBLOG_SITE . '/' . $Weblog->blg_name . '/entry-' . $_entry['bge_id'] . '.html';
             $_entries[$_entry['bge_id']]['url_url'] = urlencode($_entries[$_entry['bge_id']]['url']);
             $_entries[$_entry['bge_id']]['bge_title_plain'] = make_plaintext($_entry['bge_title']);
             $_entries[$_entry['bge_id']]['bge_title_url'] = urlencode($_entry['bge_title']);
             $_entries[$_entry['bge_id']]['usr_nick_plain'] = make_plaintext($_entry['usr_nick']);
             $_entries[$_entry['bge_id']]['usr_nick_url'] = urlencode($_entry['usr_nick']);
             $_entries[$_entry['bge_id']]['bge_published_plain'] = date('Y-n-j G:i:s T', $_entry['bge_published']);
             switch (intval($_entry['bge_mode'])) {
                 case 0:
                     // plain text
                     $_entries[$_entry['bge_id']]['bge_body_plain'] = make_plaintext(trim($_entry['bge_body']));
                     break;
                 case 1:
                     // html
                     $_entries[$_entry['bge_id']]['bge_body_plain'] = $purifier->purify($_entry['bge_body']);
                     break;
                 case 2:
                     // ubb
                     $_entries[$_entry['bge_id']]['bge_body_plain'] = format_ubb($_entry['bge_body']);
                     break;
                 case 3:
                     // textile
                     $_entries[$_entry['bge_id']]['bge_body_plain'] = $purifier->purify($Textile->TextileThis($_entry['bge_body']));
                     break;
                 case 4:
                     //
                     $_entries[$_entry['bge_id']]['bge_body_plain'] = $purifier->purify(Markdown($_entry['bge_body']));
                     break;
             }
             $_entries[$_entry['bge_id']]['bge_body_plain_rss'] = htmlspecialchars($_entries[$_entry['bge_id']]['bge_body_plain']);
             if ($_entry['bge_tags'] == '') {
                 $_entries[$_entry['bge_id']]['bge_tags_plain'] = '';
                 $_entries[$_entry['bge_id']]['bge_tags_plain_comma'] = '';
             } else {
                 $_entries[$_entry['bge_id']]['bge_tags_plain'] = Weblog::vxMakeTagLink($_entry['bge_tags']);
                 $_entries[$_entry['bge_id']]['bge_tags_plain_comma'] = Weblog::vxMakeTagLinkComma($_entry['bge_tags']);
             }
             $_entries[$_entry['bge_id']]['bge_published_plain_short'] = date('m/d/Y', $_entry['bge_published']);
             $_entries[$_entry['bge_id']]['bge_published_plain_long'] = date('m/d/Y H:i:s T', $_entry['bge_published']);
         }
         mysql_free_result($rs);
         $i = 0;
         foreach ($_ids as $num => $id) {
             $i++;
             $next = $i + 1;
             $prev = $i - 1;
             if (isset($_ids[$next])) {
                 $_entries[$id]['next'] = $_ids[$next];
             } else {
                 $_entries[$id]['next'] = 0;
             }
             if (isset($_ids[$prev])) {
                 $_entries[$id]['prev'] = $_ids[$prev];
             } else {
                 $_entries[$id]['prev'] = 0;
             }
         }
         $s->assign('entries', $_entries);
         $file_index = $usr_dir . '/index.html';
         $o_index = $s->fetch('index.smarty');
         $files++;
         $bytes += file_put_contents($file_index, $o_index);
         $file_feed_main = $usr_dir . '/index.rss';
         $o_feed_main = $s->fetch('feed.smarty');
         $files++;
         $bytes += file_put_contents($file_feed_main, $o_feed_main);
         /* E: index.smarty */
         /* S: tag.smarty */
         foreach ($_tags as $tag) {
             $s->assign('tag_cur', $tag['bet_tag']);
             $tag_sql = mysql_real_escape_string($tag['bet_tag']);
             $sql = "SELECT bge_id, bge_title, bge_body, bge_tags, bge_comments, bge_trackbacks, bge_mode, bge_comment_permission, bge_published, usr_id, usr_nick FROM babel_weblog_entry, babel_user WHERE bge_uid = usr_id AND bge_uid = {$Weblog->usr_id} AND bge_pid = {$Weblog->blg_id} AND bge_status = 1 AND bge_id IN (SELECT bet_eid FROM babel_weblog_entry_tag WHERE bet_tag = '{$tag_sql}') ORDER BY bge_published {$sql_order}";
             $rs = mysql_query($sql);
             $_entries = array();
             $i = 0;
             while ($_entry = mysql_fetch_array($rs)) {
                 $i++;
                 $_entries[$_entry['bge_id']] = $_entry;
                 $_entries[$_entry['bge_id']]['url'] = 'http://' . BABEL_WEBLOG_SITE . '/' . $Weblog->blg_name . '/entry-' . $_entry['bge_id'] . '.html';
                 $_entries[$_entry['bge_id']]['url_url'] = urlencode($_entries[$_entry['bge_id']]['url']);
                 $_entries[$_entry['bge_id']]['bge_title_plain'] = make_plaintext($_entry['bge_title']);
                 $_entries[$_entry['bge_id']]['bge_title_url'] = urlencode($_entry['bge_title']);
                 $_entries[$_entry['bge_id']]['usr_nick_plain'] = make_plaintext($_entry['usr_nick']);
                 $_entries[$_entry['bge_id']]['usr_nick_url'] = urlencode($_entry['usr_nick']);
                 $_entries[$_entry['bge_id']]['bge_published_plain'] = date('Y-n-j G:i:s T', $_entry['bge_published']);
                 switch (intval($_entry['bge_mode'])) {
                     case 0:
                         // plain text
                         $_entries[$_entry['bge_id']]['bge_body_plain'] = make_plaintext(trim($_entry['bge_body']));
                         break;
                     case 1:
                         // html
                         $_entries[$_entry['bge_id']]['bge_body_plain'] = $purifier->purify($_entry['bge_body']);
                         break;
                     case 2:
                         // ubb
                         $_entries[$_entry['bge_id']]['bge_body_plain'] = format_ubb($_entry['bge_body']);
                         break;
                     case 3:
                         // textile
                         $_entries[$_entry['bge_id']]['bge_body_plain'] = $purifier->purify($Textile->TextileThis($_entry['bge_body']));
                         break;
                     case 4:
                         //
                         $_entries[$_entry['bge_id']]['bge_body_plain'] = $purifier->purify(Markdown($_entry['bge_body']));
                         break;
                 }
                 $_entries[$_entry['bge_id']]['bge_body_plain_rss'] = htmlspecialchars($_entries[$_entry['bge_id']]['bge_body_plain']);
                 if ($_entry['bge_tags'] == '') {
                     $_entries[$_entry['bge_id']]['bge_tags_plain'] = '';
                 } else {
                     $_entries[$_entry['bge_id']]['bge_tags_plain'] = Weblog::vxMakeTagLink($_entry['bge_tags']);
                 }
                 if ($_entry['bge_tags'] == '') {
                     $_entries[$_entry['bge_id']]['bge_tags_plain_comma'] = '';
                 } else {
                     $_entries[$_entry['bge_id']]['bge_tags_plain_comma'] = Weblog::vxMakeTagLinkComma($_entry['bge_tags']);
                 }
                 $_entries[$_entry['bge_id']]['bge_published_plain_short'] = date('m/d/Y', $_entry['bge_published']);
                 $_entries[$_entry['bge_id']]['bge_published_plain_long'] = date('m/d/Y H:i:s T', $_entry['bge_published']);
             }
             mysql_free_result($rs);
             $s->assign('entries', $_entries);
             $s->assign('count_tag_cur', $i);
             $file_tag = $usr_dir . '/tag-' . $tag['bet_tag'] . '.html';
             $o_tag = $s->fetch('tag.smarty');
             $files++;
             $bytes += file_put_contents($file_tag, $o_tag);
             $file_feed_tag = $usr_dir . '/tag-' . $tag['bet_tag'] . '.rss';
             $o_feed_tag = $s->fetch('feed_tag.smarty');
             $files++;
             $bytes += file_put_contents($file_feed_tag, $o_feed_tag);
         }
         /* E: tag.smarty */
         /* S: entry.smarty */
         $sql = "SELECT bge_id, bge_title, bge_body, bge_tags, bge_comments, bge_trackbacks, bge_mode, bge_comment_permission, bge_published, usr_id, usr_nick FROM babel_weblog_entry, babel_user WHERE bge_uid = usr_id AND bge_uid = {$Weblog->usr_id} AND bge_pid = {$Weblog->blg_id} AND bge_status = 1 ORDER BY bge_published {$sql_order}";
         $rs = mysql_query($sql);
         $i = 0;
         while ($_entry = mysql_fetch_array($rs)) {
             $i++;
             $next = $i + 1;
             $prev = $i - 1;
             if (isset($_ids[$next])) {
                 $_entry['next'] = $_ids[$next];
             } else {
                 $_entry['next'] = 0;
             }
             if (isset($_ids[$prev])) {
                 $_entry['prev'] = $_ids[$prev];
             } else {
                 $_entry['prev'] = 0;
             }
             $_entry['url'] = 'http://' . BABEL_WEBLOG_SITE . '/' . $Weblog->blg_name . '/entry-' . $_entry['bge_id'] . '.html';
             $_entry['url_url'] = urlencode($_entry['url']);
             $_entry['bge_title_plain'] = make_plaintext($_entry['bge_title']);
             $_entry['bge_title_url'] = urlencode($_entry['bge_title']);
             $_entry['usr_nick_plain'] = make_plaintext($_entry['usr_nick']);
             $_entry['usr_nick_url'] = urlencode($_entry['usr_nick']);
             $_entry['bge_body_plain'] = make_plaintext($_entry['bge_body']);
             $_entry['bge_published_plain'] = date('Y-n-j G:i:s T', $_entry['bge_published']);
             switch (intval($_entry['bge_mode'])) {
                 case 0:
                     // plain text
                     $_entry['bge_body_plain'] = make_plaintext(trim($_entry['bge_body']));
                     break;
                 case 1:
                     // html
                     $_entry['bge_body_plain'] = $purifier->purify($_entry['bge_body']);
                     break;
                 case 2:
                     // ubb
                     $_entry['bge_body_plain'] = format_ubb($_entry['bge_body']);
                     break;
                 case 3:
                     // textile
                     $_entry['bge_body_plain'] = $purifier->purify($Textile->TextileThis($_entry['bge_body']));
                     break;
                 case 4:
                     //
                     $_entry['bge_body_plain'] = $purifier->purify(Markdown($_entry['bge_body']));
                     break;
             }
             if ($_entry['bge_tags'] == '') {
                 $_entry['bge_tags_plain'] = '';
             } else {
                 $_entry['bge_tags_plain'] = Weblog::vxMakeTagLink($_entry['bge_tags']);
             }
             if ($_entry['bge_tags'] == '') {
                 $_entry['bge_tags_plain_comma'] = '';
             } else {
                 $_entry['bge_tags_plain_comma'] = Weblog::vxMakeTagLinkComma($_entry['bge_tags']);
             }
             $_entry['bge_published_plain_short'] = date('m/d/Y', $_entry['bge_published']);
             $_entry['bge_published_plain_long'] = date('m/d/Y H:i:s T', $_entry['bge_published']);
             $file_entry = $usr_dir . '/entry-' . $_entry['bge_id'] . '.html';
             $s->assign('entry', $_entry);
             $o_entry = $s->fetch('entry.smarty');
             $files++;
             $bytes += file_put_contents($file_entry, $o_entry);
         }
         /* style.smarty */
         $file_style = $usr_dir . '/style.css';
         $s->left_delimiter = '[';
         $s->right_delimiter = ']';
         $o_style = $s->fetch('style.smarty');
         $files++;
         $bytes += file_put_contents($file_style, $o_style);
         $s->left_delimiter = '{';
         $s->right_delimiter = '}';
         $Weblog->vxAddBuild();
         $Weblog->vxTouchBuild();
         $Weblog->vxUpdateComments();
         // Ping Ping-o-Matic
         /*
         require_once('Zend/Http/Client.php');
         $blg_url_url = urlencode('http://' . BABEL_WEBLOG_SITE . '/' . $Weblog->blg_name . '/');
         $blg_title_url = urlencode($Weblog->blg_title);
         $ping = 'http://pingomatic.com/ping/?title=' . $blg_title_url . '&blogurl=' . $blg_url_url . '&rssurl=&chk_weblogscom=on&chk_blogs=on&chk_technorati=on&chk_feedburner=on&chk_newsgator=on&chk_feedster=on&chk_myyahoo=on&chk_blogstreet=on&chk_icerocket=on';
         $client = new Zend_Http_Client($ping, array('timeout' => 15));
         try {
         	$client->request();
         } catch (Exception $e) {
         }
         */
         $end = microtime(true);
         $elapsed = $end - $start;
         $_SESSION['babel_message_weblog'] = _vo_ico_silk('tick') . ' 博客网站 ' . make_plaintext($Weblog->blg_title) . ' 基于 ' . $Weblog->blg_theme . ' 主题重新构建成功,' . $files . ' 个文件共写入了 ' . $bytes . ' 字节,共耗时 <small>' . $elapsed . '</small> 秒,<a href="http://' . BABEL_WEBLOG_SITE . '/' . $Weblog->blg_name . '/?.rand=' . rand(11, 99) . '" class="t" target="_blank">现在查看</a> <img src="/img/ext.png" align="absmiddle" />';
     }
 }
</head>
<body>
<table width="100%" height="99%">
<tr>
<td height="20%" colspan="3"></td>
</tr>
<tr>
<td width="200" height="60%"></td>
<td height="60%">
<div class="blank">
<?php 
if ($_ing) {
    include BABEL_PREFIX . '/res/ing_sources.php';
    echo '<span style="font-size: 14px;">';
    echo '<img src="' . $_ing['img_p'] . '" align="absmiddle" class="portrait" />';
    echo ' ' . format_ubb($_ing['ing_doing']) . '</span>';
    _v_hr();
    echo '<div align="right"><span class="tip_i">by <a href="/u/' . $_ing['usr_nick_url'] . '" class="t">' . $_ing['usr_nick_plain'] . '</a> at <small class="fade">' . date('Y-n-j G:i:s T', $_ing['ing_created']) . '</small><small> from ' . $_sources[$_ing['ing_source']] . ' | Powered by <a href="/ing">' . Vocabulary::site_name . '::ING</a></small></span></div>';
} else {
    echo '<span class="tip_i">';
    _v_ico_silk('hourglass');
    echo ' 指定的 <a href="/ing" class="t">' . Vocabulary::site_name . '::ING</a> 项目不存在 | ';
    _v_ico_silk('house');
    echo ' <a href="/" class="t">返回首页</a> | ';
    _v_ico_silk('user_go');
    echo ' <a href="/signup.html" class="t">注册</a> | ';
    _v_ico_silk('key');
    echo ' <a href="/login" class="t">登录</a></span>';
}
?>
</div>