public function avatar() { $uid = $this->request->get('uid'); $size = $this->request->get('s'); if (!is_numeric($uid)) { Typecho_Common::error(404); exit; } $path = __TYPECHO_ROOT_DIR__ . Widget_Common::getAvatarPath($uid); $path .= $uid . '.jpg'; if (!is_file($path)) { $path = __TYPECHO_ROOT_DIR__ . '/usr/avatar/default.jpg'; } require_once __TYPECHO_ROOT_DIR__ . '/var/Util/Image.php'; $image = new Image(); $image->open($path); $type = $image->type(); if (is_numeric($size)) { $image->thumb($size, $size); } header('Content-Type:image/' . $type . ';'); //输出图像 if ('jpeg' == $type || 'jpg' == $type) { // 采用jpeg方式输出 imagejpeg($image->showImg()); } elseif ('gif' == $type) { imagegif($image->showImg()); } else { $fun = 'image' . $type; $fun($image->showImg()); } }
public function action() { // protect $this->security->protect(); /** 如果已经登录 */ if ($this->user->hasLogin()) { /** 直接返回 */ $this->response->redirect($this->options->index); } /** 初始化验证类 */ $validator = new Typecho_Validate(); $validator->addRule('name', 'required', _t('请输入用户名')); $validator->addRule('password', 'required', _t('请输入密码')); /** 截获验证异常 */ if ($error = $validator->run($this->request->from('name', 'password'))) { Typecho_Cookie::set('__typecho_remember_name', $this->request->name); /** 设置提示信息 */ $this->widget('Widget_Notice')->set($error); $this->response->goBack(); } /** 开始验证用户 **/ $valid = $this->user->login($this->request->name, $this->request->password, false, 1 == $this->request->remember ? $this->options->gmtTime + $this->options->timezone + 30 * 24 * 3600 : 0); /** 比对密码 */ if (!$valid) { /** 防止穷举,休眠3秒 */ sleep(3); Typecho_Cookie::set('__typecho_remember_name', $this->request->name); $this->widget('Widget_Notice')->set(_t('用户名或密码无效'), 'error'); $this->response->goBack('?referer=' . urlencode($this->request->referer)); } $this->widget('Widget_Notice')->set('已成功登录!', 'notice'); //登录积分 Widget_Common::credits('login'); /** 跳转验证后地址 */ $this->response->redirect($this->request->get('redir', $this->options->index)); }
public function sendForgotVerify() { $captcha = $this->request->get('captcha'); if (empty($captcha) || !$this->widget('Util_Captcha')->check($captcha)) { $this->widget('Widget_Notice')->set('验证码错误!', 'error'); $this->response->goBack(); } $name = $this->request->get('name'); $mail = $this->request->get('mail'); if (empty($name) || empty($mail)) { $this->widget('Widget_Notice')->set('用户名或邮箱不能为空!', 'error'); $this->response->goBack(); } $user = $this->db->fetchRow($this->db->select()->from('table.users')->where('name = ?', $name)->where('mail = ?', $mail)->limit(1)); if (empty($user)) { $this->widget('Widget_Notice')->set('用户不存在!', 'error'); $this->response->goBack(); } $params = array('uid' => $user['uid'], 'confirm' => $user['mail'], 'name' => $user['screenName'], 'type' => 'reset'); //发送验证码 Widget_Common::sendVerify($params); $this->widget('Widget_Notice')->set('验证邮件已发送,请注意查收!', 'success'); $this->response->goBack(); }
<div class="cell"> <form action="<?php $this->options->someAction('setting'); ?> " method="POST" enctype="multipart/form-data"> <div class="field"> <label>当前头像</label> <p class="m0"> <?php Widget_Common::avatar($this->user->uid, 96, null, 'avatar vab mr10'); ?> <?php Widget_Common::avatar($this->user->uid, 48, null, 'avatar vab mr10'); ?> <?php Widget_Common::avatar($this->user->uid, 24, null, 'avatar vab mr10'); ?> </p> </div> <div class="field"> <label>选择一个图片文件</label> <input class="field-ipt" type="file" name="avatar"> </div> <div class="field"> <label> </label> <p class="fade field-ipt">支持 2MB 以内的 PNG / JPG / GIF 文件</p> </div> <div class="field"> <label> </label> <button class="btn field-ipt" name="do" value="avatar"><?php _e('开始上传');
/** * 上传头像 * @param array $file * @return boolean|multitype:string unknown number Ambigous <string, unknown> Ambigous <Ambigous, string, mixed> */ private function uploadAvatar($file) { if (empty($file['name'])) { return false; } $ext = $this->getSafeName($file['name']); if (!Widget_Upload::checkFileType(strtolower($ext)) || Typecho_Common::isAppEngine()) { return false; } $options = Typecho_Widget::widget('Widget_Options'); $path = Widget_Common::getAvatarPath($this->user->uid); $realPath = Typecho_Common::url($path, defined('__TYPECHO_UPLOAD_ROOT_DIR__') ? __TYPECHO_UPLOAD_ROOT_DIR__ : __TYPECHO_ROOT_DIR__); //创建上传目录 if (!is_dir($realPath)) { if (!$this->makeAvatarDir($realPath)) { return false; } } //获取文件名 $fileName = $this->user->uid . '.tmp.' . $ext; $realPath = $realPath . '/' . $fileName; if (isset($file['tmp_name'])) { //移动上传文件 if (!@move_uploaded_file($file['tmp_name'], $realPath)) { return false; } } else { if (isset($file['bytes'])) { //直接写入文件 if (!file_put_contents($realPath, $file['bytes'])) { return false; } } else { return false; } } if (!isset($file['size'])) { $file['size'] = filesize($realPath); } //返回相对存储路径 return array('name' => $file['name'], 'path' => $path, 'file' => $path . $fileName, 'size' => $file['size'], 'type' => $ext, 'mime' => Typecho_Common::mimeContentType($realPath)); }
} else { ?> <!-- 页面为其他页时 --> <?php $this->archiveTitle(' » ', '', ''); ?> <?php } ?> </div> </div> <article class="cell post page" itemscope itemtype="http://schema.org/BlogPosting"> <h1 class="post-title"><?php $this->title(); ?> </h1> <div class="post-content"> <?php $this->content(); ?> </div> </article> <div class="inner"><?php _e('最后更新:'); echo Widget_Common::formatTime($this->modified, 'Y-m-d H:i:s'); ?> </div> </div> </div><!-- end #main--> <?php $this->need('footer.php');
<link rel="stylesheet" href="<?php $this->options->themeUrl('css/style.css'); ?> "> <!--[if lt IE 9]> <script src="//cdn.staticfile.org/html5shiv/r29/html5.min.js"></script> <script src="//cdn.staticfile.org/respond.js/1.3.0/respond.min.js"></script> <![endif]--> <!-- 通过自有函数输出HTML头部信息 --> <?php $this->header(); ?> <script> window.notice = <?php Widget_Common::getNotice(); ?> ; window.siteUrl = '<?php $this->options->siteUrl(); ?> '; </script> </head> <body> <!--[if lt IE 8]> <div class="browsehappy" role="dialog"><?php _e('当前网页 <strong>不支持</strong> 你正在使用的浏览器. 为了正常的访问, 请 <a href="http://browsehappy.com/">升级你的浏览器</a>'); ?> .</div> <![endif]-->
public function action() { // protect $this->security->protect(); /** 如果已经登录 */ if ($this->user->hasLogin()) { /** 直接返回 */ $this->response->redirect($this->options->index); } /** 如果未开启注册 */ if (!$this->options->allowRegister) { /** 直接返回 */ $this->widget('Widget_Notice')->set('未开启注册!', 'error'); $this->response->redirect($this->options->index); } /** 初始化验证类 */ $validator = new Typecho_Validate(); $validator->addRule('captcha', 'required', _t('必须填写验证码')); $validator->addRule('captcha', array($this, 'checkCaptcha'), _t('验证码错误')); $validator->addRule('name', 'required', _t('必须填写用户名称')); $validator->addRule('name', 'minLength', _t('用户名至少包含2个字符'), 2); $validator->addRule('name', 'maxLength', _t('用户名最多包含32个字符'), 32); $validator->addRule('name', 'xssCheck', _t('请不要在用户名中使用特殊字符')); $validator->addRule('name', array($this, 'nameExists'), _t('用户名已经存在')); $validator->addRule('mail', 'required', _t('必须填写电子邮箱')); $validator->addRule('mail', array($this, 'mailExists'), _t('电子邮箱地址已经存在')); $validator->addRule('mail', 'email', _t('电子邮箱格式错误')); $validator->addRule('mail', 'maxLength', _t('电子邮箱最多包含200个字符'), 200); /** 如果请求中有password */ $validator->addRule('password', 'required', _t('必须填写密码')); $validator->addRule('password', 'minLength', _t('为了保证账户安全, 请输入至少六位的密码'), 6); $validator->addRule('password', 'maxLength', _t('为了便于记忆, 密码长度请不要超过十八位'), 18); $validator->addRule('confirm', 'confirm', _t('两次输入的密码不一致'), 'password'); /** 截获验证异常 */ if ($error = $validator->run($this->request->from('captcha', 'name', 'password', 'mail', 'confirm'))) { Typecho_Cookie::set('__typecho_remember_name', $this->request->name); Typecho_Cookie::set('__typecho_remember_mail', $this->request->mail); /** 设置提示信息 */ $this->widget('Widget_Notice')->set($error, 'error'); $this->response->goBack(); } $hasher = new PasswordHash(8, true); //$generatedPassword = Typecho_Common::randString(7); $extend = array(); $inviter = Typecho_Cookie::get('__typecho_inviter'); if (!empty($inviter)) { $inviter = $this->widget('Widget_Users_Query@name_' . $inviter, 'name=' . $inviter); if ($inviter->have()) { $extend['inviter'] = $inviter->name; } Typecho_Cookie::delete('__typecho_inviter'); } $dataStruct = array('name' => $this->request->name, 'mail' => $this->request->mail, 'screenName' => $this->request->name, 'password' => $hasher->HashPassword($this->request->password), 'created' => $this->options->gmtTime, 'group' => 'subscriber', 'extend' => empty($extend) ? '' : serialize($extend)); $insertId = $this->insert($dataStruct); $this->db->fetchRow($this->select()->where('uid = ?', $insertId)->limit(1), array($this, 'push')); $this->user->login($this->request->name, $this->request->password); $params = array('uid' => $this->user->uid, 'confirm' => $this->user->mail, 'name' => $this->user->screenName, 'type' => 'register'); //发送验证信息 Widget_Common::sendVerify($params); //注册积分 Widget_Common::credits('register'); $this->widget('Widget_Notice')->set(_t('用户 <strong>%s</strong> 已经成功注册,请及时验证邮件', $this->screenName), 'success'); $this->response->redirect($this->options->index); }
/** * 通用过滤器 * * @access public * @param array $value 需要过滤的行数据 * @return array */ public function filter(array $value) { //生成静态链接 $routeExists = NULL != Typecho_Router::get('author'); $value['permalink'] = $routeExists ? Typecho_Router::url('author', $value, $this->options->index) : '#'; /** 生成聚合链接 */ /** RSS 2.0 */ $value['feedUrl'] = $routeExists ? Typecho_Router::url('author', $value, $this->options->feedUrl) : '#'; /** RSS 1.0 */ $value['feedRssUrl'] = $routeExists ? Typecho_Router::url('author', $value, $this->options->feedRssUrl) : '#'; /** ATOM 1.0 */ $value['feedAtomUrl'] = $routeExists ? Typecho_Router::url('author', $value, $this->options->feedAtomUrl) : '#'; // modified_by_jiangmuzi 2015.09.22 if (!empty($value['extend'])) { $value['extend'] = unserialize($value['extend']); } $avatar = Widget_Common::parseUserAvatar($value['uid']); $value = array_merge($value, $avatar); $value['ucenter'] = $this->options->someUrl('ucenter', array('u' => $value['name']), false); // end modified $value = $this->pluginHandle(__CLASS__)->filter($value, $this); return $value; }
<?php if (!defined('__TYPECHO_ROOT_DIR__')) { exit; } if ($this->user->hasLogin()) { ?> <div class="user-widget box"> <div class="head clearfix"> <a class="fl" href="<?php $this->options->index('u/' . $this->user->name); ?> "><?php Widget_Common::avatar($this->user->uid, 48, $this->user->screenName); ?> </a> <a class="user-nickname" href="<?php $this->options->index('u/' . $this->user->name); ?> "><?php $this->user->name(); ?> </a> </div> <?php $stat = $this->widget('Widget_Stat'); ?> <div class="cell user-stat aligncenter"> <a class="stat-item" href="<?php $this->options->someUrl('favorite_nodes'); ?>
/** * 评论处理函数 * * @throws Typecho_Widget_Exception * @throws Exception * @throws Typecho_Exception */ private function comment() { // modified_by_jiangmuzi 2015.09.23 // 必须登录后才可以回复 if (!$this->user->hasLogin()) { $this->widget('Widget_Notice')->set(_t('请先<a href="%s">登录</a>', $this->options->someUrl('login', null, false) . '?redir=' . $this->request->getRequestUrl()), NULL, 'success'); $this->response->goBack(); } // end modified // 使用安全模块保护 $this->security->protect(); $comment = array('cid' => $this->_content->cid, 'created' => $this->options->gmtTime, 'agent' => $this->request->getAgent(), 'ip' => $this->request->getIp(), 'ownerId' => $this->_content->author->uid, 'type' => 'comment', 'status' => !$this->_content->allow('edit') && $this->options->commentsRequireModeration ? 'waiting' : 'approved'); //检验格式 $validator = new Typecho_Validate(); $validator->addRule('text', 'required', _t('必须填写评论内容')); $comment['text'] = $this->request->text; /** 记录登录用户的id */ $comment['authorId'] = $this->user->uid; if ($error = $validator->run($comment)) { /** 记录文字 */ Typecho_Cookie::set('__some_remember_text', $comment['text']); throw new Typecho_Widget_Exception(implode("\n", $error)); } /** 生成过滤器 */ try { $comment = $this->pluginHandle()->comment($comment, $this->_content); } catch (Typecho_Exception $e) { Typecho_Cookie::set('__some_remember_text', $comment['text']); throw $e; } // modified_by_jiangmuzi 2015.09.23 // 解析@数据 $atArr = $this->searchAt($comment); // end modified /** 添加评论 */ $commentId = $this->insert($comment); Typecho_Cookie::delete('__some_remember_text'); $this->db->fetchRow($this->select()->where('coid = ?', $commentId)->limit(1), array($this, 'push')); //更新最后评论人及时间 $this->db->query($this->db->update('table.contents')->rows(array('lastUid' => $this->authorId, 'lastComment' => $this->created))->where('cid = ?', $this->cid)); //提醒主题作者 if ($comment['authorId'] != $comment['ownerId']) { $atArr[] = array('uid' => $comment['ownerId'], 'type' => 'comment'); } if (!empty($atArr)) { foreach ($atArr as $v) { $this->widget('Widget_Users_Messages')->addMessage($v['uid'], $commentId, $v['type']); } } //触发评论积分规则 Widget_Common::credits('reply', null, $commentId); /** 评论完成接口 */ $this->pluginHandle()->finishComment($this); $this->response->goBack('#' . $this->theId); }
/** * 评论处理函数 * * @throws Typecho_Widget_Exception * @throws Exception * @throws Typecho_Exception */ private function comment() { // modified_by_jiangmuzi 2015.09.23 // 必须登录后才可以回复 if (!$this->user->hasLogin()) { $this->widget('Widget_Notice')->set(_t('请先<a href="%s">登录</a>', $this->options->someUrl('login', null, false) . '?redir=' . $this->request->getRequestUrl()), NULL, 'success'); $this->response->goBack(); } // end modified // 使用安全模块保护 $this->security->protect(); $comment = array('cid' => $this->_content->cid, 'created' => $this->options->gmtTime, 'agent' => $this->request->getAgent(), 'ip' => $this->request->getIp(), 'ownerId' => $this->_content->author->uid, 'type' => 'comment', 'status' => !$this->_content->allow('edit') && $this->options->commentsRequireModeration ? 'waiting' : 'approved'); /** 判断父节点 */ /* if ($parentId = $this->request->filter('int')->get('parent')) { if ($this->options->commentsThreaded && ($parent = $this->db->fetchRow($this->db->select('coid', 'cid')->from('table.comments') ->where('coid = ?', $parentId))) && $this->_content->cid == $parent['cid']) { $comment['parent'] = $parentId; } else { throw new Typecho_Widget_Exception(_t('父级评论不存在')); } }*/ //检验格式 $validator = new Typecho_Validate(); $validator->addRule('text', 'required', _t('必须填写评论内容')); $comment['text'] = $this->request->text; /** 记录登录用户的id */ $comment['authorId'] = $this->user->uid; if ($error = $validator->run($comment)) { /** 记录文字 */ Typecho_Cookie::set('__some_remember_text', $comment['text']); throw new Typecho_Widget_Exception(implode("\n", $error)); } /** 生成过滤器 */ try { $comment = $this->pluginHandle()->comment($comment, $this->_content); } catch (Typecho_Exception $e) { Typecho_Cookie::set('__some_remember_text', $comment['text']); throw $e; } // modified_by_jiangmuzi 2015.09.23 // 解析@数据 $search = $replace = $atMsg = array(); $pattern = "/@([^@^\\s^:]{1,})([\\s\\:\\,\\;]{0,1})/"; preg_match_all($pattern, $comment['text'], $matches); if (!empty($matches[1])) { $matches[1] = array_unique($matches[1]); foreach ($matches[1] as $name) { if (empty($name)) { continue; } $atUser = $this->widget('Widget_Users_Query@name_' . $name, array('name' => $name)); if (!$atUser->have()) { continue; } $search[] = '@' . $name; $replace[] = '<a href="' . $atUser->ucenter . '" target="_blank">@' . $name . '</a>'; //提醒at用户 if ($comment['authorId'] != $atUser->uid && $atUser->uid != $comment['ownerId']) { $atMsg[] = array('uid' => $atUser->uid, 'type' => 'at'); } } if (!empty($search)) { $comment['text'] = str_replace(@$search, @$replace, $comment['text']); } } // end modified /** 添加评论 */ $commentId = $this->insert($comment); Typecho_Cookie::delete('__some_remember_text'); $this->db->fetchRow($this->select()->where('coid = ?', $commentId)->limit(1), array($this, 'push')); //更新最后评论人及时间 $this->db->query($this->db->update('table.contents')->rows(array('lastUid' => $this->authorId, 'lastComment' => $this->created))->where('cid = ?', $this->cid)); //提醒主题作者 if ($comment['authorId'] != $comment['ownerId']) { $atMsg[] = array('uid' => $comment['ownerId'], 'type' => 'comment'); } if (!empty($atMsg)) { foreach ($atMsg as $v) { $this->widget('Widget_Users_Messages')->addMessage($v['uid'], $commentId, $v['type']); } } //触发评论积分规则 Widget_Common::credits('reply'); /** 评论完成接口 */ $this->pluginHandle()->finishComment($this); $this->response->goBack('#' . $this->theId); }
public function footer() { $nodetags = Widget_Common::allNodeTags(); $topicNode = isset($this->currentTag['parent']) ? $this->currentTag['parent'] != 0 ? $this->currentTag['parent'] : $this->currentTag['mid'] : 0; $preview_url = Typecho_Common::url('action/publish', $this->options->index); $html = <<<EOT <script src="{$this->options->themeUrl('codemirror/codemirror.js', 'default')}"></script> <script src="{$this->options->themeUrl('codemirror/markdown.js', 'default')}"></script> <script src="{$this->options->themeUrl('js/jquery.tagsinput.min.js', 'default')}"></script> <script> //编辑器 var pubEditor = CodeMirror.fromTextArea(document.getElementById("topic_content"), { lineNumbers: true, mode: "markdown", theme: "neo", indentUnit: 4, lineWrapping: true }); //实时统计并控制内容字数 pubEditor.on('change', function(cm, change) { var text = cm.getValue(); var max = 20000; var remaining = max - text.length; var r = \$("#content_remaining"); r.html(remaining); }); //实时统计并控制标题字数 \$("#topic_title").keyup(function(e) { var s = \$("#topic_title"); var text = s.val() var max = 120; var remaining = max - text.length; var r = \$("#title_remaining"); r.html(remaining); }); //切换标签 \$('#topic-node').on('change',function(){ \tvar that = \$(this); mid = that.data('mid'),select = that.val(); \tif(select == mid){ \t return false; \t} \tthat.data('mid',select); \tsetRecTags(select); }); function setRecTags(mid){ \tvar nodes = {$nodetags},html='<strong>推荐标签:</strong>'; \tif(nodes[mid]!==undefined){ \t\t\$.each(nodes[mid] ,function(id,tags){ \t\t html += '<a class="tag" href="#'+tags.slug+'">'+tags.name+'</a>'; \t\t}); \t}else{ \t\t//html='<strong>暂无推荐</strong>' \t} \t\$('#topic-hot-tags').html(html); } //设置默认 \$('#topic-node').val({$topicNode}); setRecTags({$topicNode}); //标签 \$('#tagsInput').tagsInput({ \twidth:'auto', \theight:'auto', \tdefaultText : '请输入标签名' }); \$(document).on('click','#topic-hot-tags a',function(){ \tvar tag = \$(this).text(); \$('#tagsInput').addTag(tag); return false; }); function prevTopic(){ \tvar box = \$("#topic_preview_box"); \tvar preview = \$("#topic_preview"); \tif (preview.length == 0) { box.append('<div class="inner" id="topic_preview"></div>'); preview = \$("#topic_preview"); } \tvar md = pubEditor.getValue(); \tif(md=='') return false; \t\$.post("{$preview_url}", { 'do':'preview','text' : md }, function( data ) { preview.html('<div class="post-content">' + data + '</div>'); }); } </script> EOT; echo $html; }
public function writePost() { $this->security->protect(); $contents = $this->request->from('title', 'text', 'category', 'tags'); if (!empty($contents['text'])) { $contents['text'] = '<!--markdown-->' . $contents['text']; } if (!empty($contents['category'])) { $contents['category'] = array($contents['category']); } $contents['slug'] = NULL; $contents['created'] = $this->getCreated(); $contents['type'] = 'post'; $contents['allowComment'] = 1; $contents['allowPing'] = 1; $contents['allowFeed'] = 1; /** 发布内容, 检查是否具有直接发布的权限 */ if ($this->user->pass('editor', true)) { if (empty($contents['visibility'])) { $contents['status'] = 'publish'; } else { if ('password' == $contents['visibility'] || !in_array($contents['visibility'], array('private', 'waiting', 'publish', 'hidden'))) { if (empty($contents['password']) || 'password' != $contents['visibility']) { $contents['password'] = ''; } $contents['status'] = 'publish'; } else { $contents['status'] = $contents['visibility']; $contents['password'] = ''; } } } else { $contents['status'] = 'publish'; $contents['password'] = ''; } /** 真实的内容id */ $realId = 0; /** 是否是从草稿状态发布 */ $isDraftToPublish = 'post_draft' == $this->type; $isBeforePublish = 'publish' == $this->status; $isAfterPublish = 'publish' == $contents['status']; /** 重新发布现有内容 */ if ($this->have()) { /** 如果它本身不是草稿, 需要删除其草稿 */ if (!$isDraftToPublish && $this->draft) { $this->deleteDraft($this->draft['cid']); $this->deleteFields($this->draft['cid']); } /** 直接将草稿状态更改 */ if ($this->update($contents, $this->db->sql()->where('cid = ?', $this->cid))) { $realId = $this->cid; } } else { /** 发布一个新内容 */ $realId = $this->insert($contents); if ($realId > 0) { Widget_Common::credits('publish'); } } if ($realId > 0) { /** 插入分类 */ if (array_key_exists('category', $contents)) { $this->setCategories($realId, !empty($contents['category']) && is_array($contents['category']) ? $contents['category'] : array($this->options->defaultCategory), !$isDraftToPublish && $isBeforePublish, $isAfterPublish); } /** 插入标签 */ if (array_key_exists('tags', $contents)) { $this->setTags($realId, $contents['tags'], !$isDraftToPublish && $isBeforePublish, $isAfterPublish); } /** 同步附件 */ //$this->attach($realId); /** 保存自定义字段 */ //$this->applyFields($this->getFields(), $realId); $this->db->fetchRow($this->select()->where('table.contents.cid = ?', $realId)->limit(1), array($this, 'push')); } /** 设置提示信息 */ $this->widget('Widget_Notice')->set('post' == $this->type ? _t('文章 "<a href="%s">%s</a>" 已经发布', $this->permalink, $this->title) : _t('文章 "%s" 等待审核', $this->title), 'success'); if ($this->have()) { $this->response->redirect($this->permalink); } else { $this->response->goBack(); } }
private function activateHandle(Typecho_Db_Query $select, &$hasPushed) { $hasPushed = true; $this->setArchiveType($this->parameter->type); $this->setMetaTitle('激活帐号'); $token = $this->request->token; if (empty($token)) { throw new Typecho_Widget_Exception(_t('请求的地址不存在'), 404); } $verify = $this->widget('Util_Verify')->setParams('type=register')->check($token); if (!empty($verify) && $verify['status'] != 1) { $row['group'] = 'contributor'; $this->db->query($this->db->update('table.users')->rows($row)->where('uid = ?', $verify['uid'])); $this->widget('Util_Verify')->setParams('type=register')->delete($token); Widget_Common::credits('invite', $verify['uid']); } $this->setThemeFile('user/activate.php'); }
$this->options->someAction('setting'); ?> " method="POST" enctype="multipart/form-data"> <div class="field"> <label>当前头像</label> <p class="m0"> <img class="avatar vab mr10" width="96" src="<?php echo Widget_Common::avatar($this->user->uid, 96); ?> " align="default"> <img class="avatar vab mr10" width="48" src="<?php echo Widget_Common::avatar($this->user->uid, 48); ?> " align="default"> <img class="avatar vab mr10" width="24" src="<?php echo Widget_Common::avatar($this->user->uid, 24); ?> " align="default"> </p> </div> <div class="field"> <label>选择一个图片文件</label> <input class="field-ipt" type="file" name="avatar"> </div> <div class="field"> <label> </label> <p class="fade field-ipt">支持 2MB 以内的 PNG / JPG / GIF 文件</p> </div> <div class="field"> <label> </label> <button class="btn field-ipt" name="do" value="avatar"><?php
<div class="main"> <div class="body container"> <?php include 'page-title.php'; ?> <div class="row typecho-page-main"> <div class="col-mb-12 col-tb-3"> <p><a href="<?php echo Typecho_Common::url('/setting/avatar', $options->index); ?> " title="<?php _e('修改头像'); ?> "><?php Widget_Common::avatar($user->uid); ?> </a></p> <h2><?php $user->screenName(); ?> </h2> <p><?php $user->name(); ?> </p> <p><?php _e('目前有 <em>%s</em> 篇日志, 并有 <em>%s</em> 条关于你的评论在 <em>%s</em> 个分类中.', $stat->myPublishedPostsNum, $stat->myPublishedCommentsNum, $stat->categoriesNum); ?> </p> <p><?php
<li><?php $archives->tags(','); ?> • </li> <?php } ?> <li><a href="<?php $archives->author->ucenter(); ?> "><?php $archives->author->name(); ?> </a> • </li> <li><span><?php echo Widget_Common::formatTime($archives->created, 'Y-m-d H:i:s'); ?> </span></li> <?php if ($archives->lastUid) { ?> <li> • 最后回复来自:<strong><a href="<?php $archives->lastAuthor->ucenter(); ?> "><?php $archives->lastAuthor->name(); ?> </a></strong></li> <?php } ?>
/** * 输出用户头像 * * @access public * @param integer $size 头像尺寸 * @param string $rating 头像评级 * @param string $default 默认输出头像 * @param string $class 默认css class * @return void */ public function avatar($size = 48, $class = null) { echo Widget_Common::avatar($this->uid, $size, $this->screenName, $class, false); }