public function vxSent() { if ($this->User->vxIsLogin()) { $this->vxHead($msgSiteTitle = '已发送'); $this->vxBodyStart(); $this->vxToolbar(); $p = array(); $p['base'] = '/message/sent/'; $p['ext'] = '.vx'; $sql = "SELECT COUNT(msg_id) FROM babel_message WHERE msg_sid = {$this->User->usr_id} AND msg_draft = 0 AND msg_sdeleted = 0"; $rs = mysql_query($sql, $this->db); $p['items'] = mysql_result($rs, 0, 0); mysql_free_result($rs); if ($p['items'] > 0) { $p['size'] = BABEL_MSG_PAGE; $p['span'] = BABEL_PG_SPAN - 2; if ($p['items'] % $p['size'] == 0) { $p['total'] = $p['items'] / $p['size']; } else { $p['total'] = floor($p['items'] / $p['size']) + 1; } if (isset($_GET['p'])) { $p['cur'] = intval($_GET['p']); } else { $p['cur'] = 1; } if ($p['cur'] < 1) { $p['cur'] = 1; } if ($p['cur'] > $p['total']) { $p['cur'] = $p['total']; } if ($p['cur'] - $p['span'] >= 1) { $p['start'] = $p['cur'] - $p['span']; } else { $p['start'] = 1; } if ($p['cur'] + $p['span'] <= $p['total']) { $p['end'] = $p['cur'] + $p['span']; } else { $p['end'] = $p['total']; } $_SESSION['babel_page_message'] = $p['cur']; $p['sql'] = ($p['cur'] - 1) * $p['size']; $sql = "SELECT msg_id, msg_body, msg_created, msg_opened, usr_nick FROM babel_message, babel_user WHERE msg_sid = {$this->User->usr_id} AND msg_draft = 0 AND msg_sdeleted = 0 AND msg_rid = usr_id ORDER BY msg_created DESC LIMIT " . $p['sql'] . "," . BABEL_MSG_PAGE; $rs = mysql_query($sql, $this->db); echo '<div id="main">'; echo '<div id="tool">'; if ($p['total'] > 1) { $this->vxDrawPages($p, ' sent'); } else { echo '<span class="tip">已发送短消息 ' . $p['items'] . ' 条</span>'; } echo '</div>'; echo '<div id="msg"><span class="text"><table cellpadding="0" cellspacing="0" border="0" class="items">'; while ($Message = mysql_fetch_object($rs)) { echo '<tr>'; echo '<td width="100" height="20" class="recv" align="right">' . make_plaintext($Message->usr_nick) . ' </td><td width="190" height="20"> <a href="/message/view/' . $Message->msg_id . '.vx">'; $msg_excerpt = mb_substr($Message->msg_body, 0, 12, 'UTF-8'); if ($Message->msg_opened == 0) { echo '<strong>' . $msg_excerpt . '</strong>'; } else { echo $msg_excerpt; } if (mb_strlen($Message->msg_body, 'UTF-8') > mb_strlen($msg_excerpt, 'UTF-8')) { echo '...'; } echo '</a></td><td width="90" height="20">'; echo '<small>' . make_desc_time($Message->msg_created) . '</small>'; if ($Message->msg_opened == 0) { echo ' *'; } echo '</td>'; echo '</tr>'; } echo '</table></span></div>'; echo '</div>'; } else { echo '<div id="main"><div id="msg"><span class="text">你还没有向任何人发送过短消息,<a href="/message/compose.vx">现在写一条?</a></span></div></div>'; } $this->vxBottom(); $this->vxBodyEnd(); } else { $this->vxDenied(); } }
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> 输出失败 - 没有指定会员昵称');"; }
public function vxFriend() { if (isset($_GET['user_nick'])) { $user_nick = make_single_safe($_GET['user_nick']); if (get_magic_quotes_gpc()) { $user_nick = stripslashes($user_nick); } $user_id = $this->Validator->vxExistUserNick($user_nick); if ($user_id) { $_u = $this->User->vxGetUserInfo($user_id); } else { $_u = false; } } else { $_u = false; } if ($_u) { $this->vxHeader(make_plaintext($_u->usr_nick) . ' 的朋友'); } else { $this->vxHeader('用户不存在'); } $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>'; if ($_u) { $sql = "SELECT COUNT(frd_id) FROM babel_friend WHERE frd_uid = {$_u->usr_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_user_friend_mobile'] = $_p; $_p_start = ($_p - 1) * $_per; echo '<div class="content"><small><a href="/">V2EX</a> > <a href="/u/' . urlencode($_u->usr_nick) . '">' . $_u->usr_nick . '</a> > ' . $_total . ' 个朋友</small></div>'; echo '<div class="content"><small><a href="/u/' . $_u->usr_nick . '" target="_blank">' . $_u->usr_nick . '</a> 共有 ' . $_total . ' 个朋友</small></div>'; if ($o = $this->cl->get('babel_user_friend_mobile_' . $_u->usr_id . '_' . $_p)) { echo $o; } else { $_o = ''; $sql = "SELECT usr_id, usr_gender, usr_nick, usr_portrait, usr_hits, frd_created FROM babel_user, babel_friend WHERE usr_id = frd_fid AND frd_uid = {$_u->usr_id} ORDER BY frd_created ASC LIMIT {$_p_start}, {$_per}"; $rs = mysql_query($sql, $this->db); while ($Friend = mysql_fetch_array($rs)) { if ($Friend['usr_portrait'] == '') { $Friend['usr_portrait_img'] = '/img/p_' . $Friend['usr_gender'] . '_n.gif'; } else { $Friend['usr_portrait_img'] = '/img/p/' . $Friend['usr_portrait'] . '_n.' . BABEL_PORTRAIT_EXT; } $_o .= '<div class="content"><small>'; $sql = "SELECT tpc_id, tpc_title, tpc_lasttouched FROM babel_topic WHERE tpc_uid = {$Friend['usr_id']} ORDER BY tpc_created DESC LIMIT 1"; $rs_topic = mysql_query($sql, $this->db); if ($Topic = mysql_fetch_object($rs_topic)) { $_o .= '<img src="' . $Friend['usr_portrait_img'] . '" align="absmiddle" class="p" /> <a href="/u/' . $Friend['usr_nick'] . '">' . $Friend['usr_nick'] . '</a> - <a href="/t/' . $Topic->tpc_id . '">' . make_plaintext($Topic->tpc_title) . '</a> - ' . make_desc_time($Topic->tpc_lasttouched) . ' ago</small>'; } else { $_o .= '<img src="' . $Friend['usr_portrait_img'] . '" align="absmiddle" class="p" /> <a href="/u/' . $Friend['usr_nick'] . '">' . $Friend['usr_nick'] . '</a></small>'; } unset($Topic); mysql_free_result($rs_topic); $_o .= '</div>'; } mysql_free_result($rs); echo $_o; $this->cl->save($_o, 'babel_user_friend_mobile_' . $_u->usr_id . '_' . $_p); } if ($_pages > 1) { echo '<div class="content"><small>'; if (!$_p_last) { echo ' <a href="/f/' . urlencode($_u->usr_nick) . '/' . ($_p + 1) . '">下一页</a>'; } if (!$_p_first) { echo ' <a href="/f/' . urlencode($_u->usr_nick) . '/' . ($_p - 1) . '">上一页</a>'; } echo ' - ' . $_p . '/' . $_pages; echo '</small></div>'; } } else { echo '<div class="content">用户不存在</div>'; } $this->vxBottom(); $this->vxBodyEnd(); $this->vxHTMLEnd(); }
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 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 vxLoadProjectsDone() { $user_id = 0; if (isset($_GET['user_id'])) { $user_id = intval($_GET['user_id']); if (!$this->Validator->vxExistUser($user_id)) { $user_id = 0; } } else { if ($this->User->usr_id != 0) { $user_id = $this->User->usr_id; } } if ($user_id == 0) { echo $this->r_failed; } else { $sql = "SELECT zpr_id, zpr_uid, zpr_title, zpr_private, zpr_type, zpr_tasks, zpr_notes, zpr_dbs, zpr_created FROM babel_zen_project WHERE zpr_progress = 1 AND zpr_uid = {$user_id} ORDER BY zpr_completed DESC"; $rs = mysql_query($sql); $i = 0; $tasks = 0; $notes = 0; $dbs = 0; $o = ''; while ($_p = mysql_fetch_array($rs)) { $i++; $tasks += $_p['zpr_tasks']; $notes += $_p['zpr_notes']; $dbs += $_p['zpr_dbs']; $_p['zpr_type_grid'] = 'zen2_grid_' . $_p['zpr_type'] . '_s'; $o .= '<div class="zen2_project"><div class="' . $_p['zpr_type_grid'] . '"></div><div class="zen2_project_toolbar"><span class="tip_i"><small>' . Zen::vxIconTask($_p['zpr_tasks']) . ' / ' . Zen::vxIconNote($_p['zpr_notes']) . ' / ' . Zen::vxIconDB($_p['zpr_dbs']) . ' </small></span>'; if ($_p['zpr_uid'] == $this->User->usr_id) { $o .= Zen::vxUndoneButton($_p['zpr_id']); $o .= Zen::vxDeleteButton($_p['zpr_id'], 'done'); } $o .= '</div><div class="zen2_project_main"> <a href="/project/view/' . $_p['zpr_id'] . '.html">' . make_plaintext($_p['zpr_title']) . '</a><span class="tip_i"> ... <small>created ' . make_desc_time($_p['zpr_created']) . ' ago</small></span></div></div>'; unset($_p); } mysql_free_result($rs); $o .= '<div class="conclude">' . $i . ' 个完成了的项目 - ' . $tasks . ' 项任务 - ' . $notes . ' 则笔记 - ' . $dbs . ' 个数据库</div>'; return $o; } }