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; } }
} 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> 输出失败 - 没有指定会员昵称');";
$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); }
public function vxFormatUBB($text) { $text = format_ubb($text); return $text; }
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> > ' . make_plaintext($Section->nod_title) . ' > ' . 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 ' <a href="/t/' . $topic_id . '/' . ($_p + 1) . '">下一页</a>'; } if (!$_p_first) { echo ' <a href="/t/' . $topic_id . '/' . ($_p - 1) . '">上一页</a>'; } echo ' ' . $_p . '/' . $_pages . ' 共 ' . $_total . ' 篇回复'; } echo ' <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> 回复不能超过 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> 回复不能超过 1000 字</small>'; echo '</form></div>'; } } $this->vxBottom(); $this->vxBodyEnd(); $this->vxHTMLEnd(); } else { mysql_free_result($rs); $this->vxHome(); } } else { $this->vxHome(); } }
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> > <a href="/u/' . $User->usr_nick_url . '">' . $User->usr_nick_plain . '</a> > 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(' <a href="/fav/ing">' . _vo_ico_silk('heart') . '</a>'); }*/ echo ' <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 .= '» <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 .= '» <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 .= '» <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'); } }
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;" /> ' . 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" /> <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" /> <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"> © 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>
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; }
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>