本文整理汇总了PHP中Typecho_Cookie::delete方法的典型用法代码示例。如果您正苦于以下问题:PHP Typecho_Cookie::delete方法的具体用法?PHP Typecho_Cookie::delete怎么用?PHP Typecho_Cookie::delete使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Typecho_Cookie
的用法示例。
在下文中一共展示了Typecho_Cookie::delete方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: comment
/**
* 评论处理函数
*
* @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);
}
示例2: getNotice
/**
* 获取提示消息
*/
function getNotice()
{
$notice = Typecho_Cookie::get('__typecho_notice');
if (empty($notice)) {
echo "''";
return;
}
$notice = json_decode($notice, true);
$rs = array('msg' => $notice[0], 'type' => Typecho_Cookie::get('__typecho_notice_type'));
Typecho_Cookie::delete('__typecho_notice');
Typecho_Cookie::delete('__typecho_notice_type');
echo json_encode($rs);
}
示例3: execute
/**
* 执行函数
*
* @access public
* @return void
*/
public function execute()
{
if (NULL !== Typecho_Cookie::get('__typecho_notice')) {
$this->noticeType = Typecho_Cookie::get('__typecho_notice_type');
$this->push(Typecho_Cookie::get('__typecho_notice'));
Typecho_Cookie::delete('__typecho_notice', $this->widget('Widget_Options')->siteUrl);
Typecho_Cookie::delete('__typecho_notice_type', $this->widget('Widget_Options')->siteUrl);
}
if (NULL !== Typecho_Cookie::get('__typecho_notice_highlight')) {
$this->highlight = Typecho_Cookie::get('__typecho_notice_highlight');
Typecho_Cookie::delete('__typecho_notice_highlight', $this->widget('Widget_Options')->siteUrl);
}
}
示例4: action
/**
* 初始化函数
*
* @access public
* @return void
*/
public function action()
{
// protect
$this->security->protect();
/** 如果已经登录 */
if ($this->user->hasLogin() || !$this->options->allowRegister) {
/** 直接返回 */
$this->response->redirect($this->options->index);
}
/** 初始化验证类 */
$validator = new Typecho_Validate();
$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 */
if (array_key_exists('password', $_REQUEST)) {
$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('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);
$this->response->goBack();
}
$hasher = new PasswordHash(8, true);
$generatedPassword = Typecho_Common::randString(7);
$dataStruct = array('name' => $this->request->name, 'mail' => $this->request->mail, 'screenName' => $this->request->name, 'password' => $hasher->HashPassword($generatedPassword), 'created' => $this->options->gmtTime, 'group' => 'subscriber');
$dataStruct = $this->pluginHandle()->register($dataStruct);
$insertId = $this->insert($dataStruct);
$this->db->fetchRow($this->select()->where('uid = ?', $insertId)->limit(1), array($this, 'push'));
$this->pluginHandle()->finishRegister($this);
$this->user->login($this->request->name, $generatedPassword);
Typecho_Cookie::delete('__typecho_first_run');
Typecho_Cookie::delete('__typecho_remember_name');
Typecho_Cookie::delete('__typecho_remember_mail');
$this->widget('Widget_Notice')->set(_t('用户 <strong>%s</strong> 已经成功注册, 密码为 <strong>%s</strong>', $this->screenName, $generatedPassword), 'success');
$this->response->redirect($this->options->adminUrl);
}
示例5: htmlspecialchars
if (!defined('__TYPECHO_ROOT_DIR__')) {
exit;
}
$this->need('header.php');
?>
<style>.user-page .page-title,.user-page footer{display:none;}</style>
<?php
$rememberName = htmlspecialchars(Typecho_Cookie::get('__some_remember_name'));
$rememberMail = htmlspecialchars(Typecho_Cookie::get('__some_remember_mail'));
$notice = Typecho_Cookie::get('__some_notice');
if (!empty($notice)) {
$notice = json_decode($notice, true);
}
Typecho_Cookie::delete('__some_remember_name');
Typecho_Cookie::delete('__some_remember_mail');
?>
<div id="sidebar">
<?php
$this->need('user/widget_login.php');
?>
</div>
<div class="box" id="main">
<div class="head">
<div class="location">
<a href="<?php
$this->options->siteUrl();
?>
"><?php
$this->options->title();
?>
示例6: foreach
foreach ($tableArray as $table) {
if ($type == 'Mysql') {
$installDb->query("DROP TABLE IF EXISTS `{$table}`");
} elseif ($type == 'Pgsql') {
$installDb->query("DROP TABLE {$table}");
} elseif ($type == 'SQLite') {
$installDb->query("DROP TABLE {$table}");
}
}
echo '<p class="message success">' . _t('已经删除完原有数据') . '<br /><br /><button type="submit" class="primary">' . _t('继续安装 »') . '</button></p>';
} elseif (_r('goahead')) {
//使用原有数据
//但是要更新用户网站
$installDb->query($installDb->update('table.options')->rows(array('value' => $config['siteUrl']))->where('name = ?', 'siteUrl'));
unset($_SESSION['typecho']);
Typecho_Cookie::delete('__typecho_config');
header('Location: ./install.php?finish&use_old');
exit;
} else {
echo '<p class="message error">' . _t('安装程序检查到原有数据表已经存在.') . '<br /><br />' . '<button type="submit" name="delete" value="1" class="btn-warn">' . _t('删除原有数据') . '</button> ' . _t('或者') . ' <button type="submit" name="goahead" value="1" class="primary">' . _t('使用原有数据') . '</button></p>';
}
} else {
echo '<p class="message error">' . _t('安装程序捕捉到以下错误: "%s". 程序被终止, 请检查您的配置信息.', $e->getMessage()) . '</p>';
}
?>
</form>
</div>
<?php
}
?>
<?php
示例7: comment
//.........这里部分代码省略.........
if ($this->options->commentsRequireMail && !$this->user->hasLogin()) {
$validator->addRule('mail', 'required', _t('必须填写电子邮箱地址'));
}
$validator->addRule('mail', 'email', _t('邮箱地址不合法'));
$validator->addRule('mail', 'maxLength', _t('电子邮箱最多包含200个字符'), 200);
if ($this->options->commentsRequireUrl && !$this->user->hasLogin()) {
$validator->addRule('url', 'required', _t('必须填写个人主页'));
}
$validator->addRule('url', 'url', _t('个人主页地址格式错误'));
$validator->addRule('url', 'maxLength', _t('个人主页地址最多包含200个字符'), 200);
$validator->addRule('text', 'required', _t('必须填写评论内容'));
$comment['text'] = $this->request->text;
/** 对一般匿名访问者,将用户数据保存一个月 */
if (!$this->user->hasLogin()) {
/** Anti-XSS */
$comment['author'] = $this->request->filter('trim')->author;
$comment['mail'] = $this->request->filter('trim')->mail;
$comment['url'] = $this->request->filter('trim')->url;
/** 修正用户提交的url */
if (!empty($comment['url'])) {
$urlParams = parse_url($comment['url']);
if (!isset($urlParams['scheme'])) {
$comment['url'] = 'http://' . $comment['url'];
}
}
$expire = $this->options->gmtTime + $this->options->timezone + 30 * 24 * 3600;
Typecho_Cookie::set('__typecho_remember_author', $comment['author'], $expire);
Typecho_Cookie::set('__typecho_remember_mail', $comment['mail'], $expire);
Typecho_Cookie::set('__typecho_remember_url', $comment['url'], $expire);
} else {
$comment['author'] = $this->user->screenName;
$comment['mail'] = $this->user->mail;
$comment['url'] = $this->user->url;
/** 记录登录用户的id */
$comment['authorId'] = $this->user->uid;
}
/** 评论者之前须有评论通过了审核 */
if (!$this->options->commentsRequireModeration && $this->options->commentsWhitelist) {
if ($commentApprovedNum = $this->size($this->select()->where('author = ? AND mail = ? AND status = ?', $comment['author'], $comment['mail'], 'approved'))) {
$comment['status'] = 'approved';
} else {
$comment['status'] = 'waiting';
}
}
if ($error = $validator->run($comment)) {
/** 记录文字 */
Typecho_Cookie::set('__typecho_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('__typecho_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('Forum_Query_User@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('__typecho_remember_text');
$this->db->fetchRow($this->select()->where('coid = ?', $commentId)->limit(1), array($this, 'push'));
//提醒主题作者
if ($comment['authorId'] != $comment['ownerId']) {
$atMsg[] = array('uid' => $comment['ownerId'], 'type' => 'comment');
}
if (!empty($atMsg)) {
foreach ($atMsg as $v) {
$this->widget('Forum_Messages')->addMessage($v['uid'], $commentId, $v['type']);
}
}
/** 评论完成接口 */
$this->pluginHandle()->finishComment($this);
$this->response->goBack('#' . $this->theId);
}
示例8: logout
/**
* 用户登出函数
*
* @access public
* @return void
*/
public function logout()
{
$this->pluginHandle()->trigger($logoutPluggable)->logout();
if ($logoutPluggable) {
return;
}
Typecho_Cookie::delete('__typecho_uid');
Typecho_Cookie::delete('__typecho_authCode');
}
示例9: htmlspecialchars
<?php
include 'common.php';
if ($user->hasLogin() || !$options->allowRegister) {
$response->redirect($options->siteUrl);
}
$rememberName = htmlspecialchars(Typecho_Cookie::get('__typecho_remember_name'));
$rememberMail = htmlspecialchars(Typecho_Cookie::get('__typecho_remember_mail'));
Typecho_Cookie::delete('__typecho_remember_name');
Typecho_Cookie::delete('__typecho_remember_mail');
$bodyClass = 'body-100';
include 'header.php';
?>
<div class="typecho-login-wrap">
<div class="typecho-login">
<form action="<?php
$options->registerAction();
?>
" method="post" name="register" role="form">
<p>
<label for="name" class="sr-only"><?php
_e('用户名');
?>
</label>
<input type="text" id="name" name="name" placeholder="<?php
_e('用户名');
?>
" value="<?php
echo $rememberName;
?>
示例10: setTheme
/**
* 插件实现方法
*
* @access public
* @return void
*/
public static function setTheme($widget)
{
$cookie = array('name' => '__typecho_theme', 'expire' => 86400);
$options = Typecho_Widget::widget('Widget_Options');
if (isset($widget->request->theme) && $widget->request->isGet()) {
if ($widget->request->theme) {
$theme = $widget->request->theme;
if (static::check($theme)) {
Typecho_Cookie::set($cookie['name'], $widget->request->theme, $options->gmtTime + $cookie['expire'], $options->siteUrl);
} else {
$widget->response->redirect(Typecho_Common::url($widget->request->getPathInfo(), $options->siteUrl));
}
} else {
Typecho_Cookie::delete($cookie['name']);
//直接提交?theme将删除cookie,恢复默认主题
return;
}
} else {
$theme = Typecho_Cookie::get($cookie['name']);
if (!$theme) {
return;
}
if (!static::check($theme)) {
Typecho_Cookie::delete($cookie['name']);
return;
}
}
/** 删除旧主题的相关设置 */
$themeRow = 'theme:' . $options->theme;
if (isset($options->{$themeRow})) {
$config = unserialize($options->{$themeRow});
$options->{$themeRow} = '';
foreach ($config as $row => $value) {
$options->{$row} = '';
}
}
/** 载入新主题的相关设置 参考var/Widget/Themes/Edit.php */
$themeDir = __TYPECHO_ROOT_DIR__ . __TYPECHO_THEME_DIR__ . DIRECTORY_SEPARATOR . $theme . DIRECTORY_SEPARATOR;
$configFile = $themeDir . 'functions.php';
if (file_exists($configFile)) {
require_once $configFile;
if (function_exists('themeConfig')) {
$form = new Typecho_Widget_Helper_Form();
themeConfig($form);
$config = $form->getValues();
if ($config) {
$options->{'theme:' . $theme} = serialize($config);
foreach ($config as $row => $value) {
$options->{$row} = $value;
}
}
}
}
/** 修改$this->options->theme */
$options->theme = $theme;
/** 修改$this->_themeDir */
$widget->setThemeDir($themeDir);
}
示例11: comment
/**
* 评论处理函数
*
* @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);
}
示例12: upgrade
/**
* 执行升级程序
*
* @access public
* @return void
*/
public function upgrade()
{
list($prefix, $this->_currentVersion) = explode('/', $this->options->generator);
$packages = get_class_methods('Upgrade');
$packages = array_filter($packages, array($this, 'filterPackage'));
usort($packages, array($this, 'sortPackage'));
$message = array();
foreach ($packages as $package) {
$options = $this->widget('Widget_Options@' . $package);
/** 执行升级脚本 */
try {
$result = call_user_func(array('Upgrade', $package), $this->db, $options);
if (!empty($result)) {
$message[] = $result;
}
} catch (Typecho_Exception $e) {
$this->widget('Widget_Notice')->set($e->getMessage(), 'error');
$this->response->goBack();
return;
}
list($ver, $rev) = explode('r', $package);
$ver = substr(str_replace('_', '.', $ver), 1);
$rev = str_replace('_', '.', $rev);
/** 更新版本号 */
$this->update(array('value' => 'Typecho ' . $ver . '/' . $rev), $this->db->sql()->where('name = ?', 'generator'));
$this->destory('Widget_Options@' . $package);
}
/** 更新版本号 */
$this->update(array('value' => 'Typecho ' . Typecho_Common::VERSION), $this->db->sql()->where('name = ?', 'generator'));
/** 删除更新cookie */
Typecho_Cookie::delete('__typecho_check_version');
$this->widget('Widget_Notice')->set(empty($message) ? _t("升级已经完成") : $message, empty($message) ? 'success' : 'notice');
}
示例13: render
/**
* 显示表单
*
* @access public
* @return void
*/
public function render()
{
$id = md5(implode('"', array_keys($this->_inputs)));
/** 恢复表单值 */
if ($record = Typecho_Cookie::get('__typecho_form_record_' . $id)) {
$message = Typecho_Cookie::get('__typecho_form_message_' . $id);
foreach ($this->_inputs as $name => $input) {
$input->value(isset($record[$name]) ? $record[$name] : $input->value);
/** 显示错误消息 */
if (isset($message[$name])) {
$input->message($message[$name]);
}
}
Typecho_Cookie::delete('__typecho_form_record_' . $id);
}
parent::render();
Typecho_Cookie::delete('__typecho_form_message_' . $id);
}
示例14: comment
/**
* 评论处理函数
*
* @throws Typecho_Widget_Exception
* @throws Exception
* @throws Typecho_Exception
*/
private function comment()
{
// 使用安全模块保护
$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('author', 'required', _t('必须填写用户名'));
$validator->addRule('author', 'xssCheck', _t('请不要在用户名中使用特殊字符'));
$validator->addRule('author', array($this, 'requireUserLogin'), _t('您所使用的用户名已经被注册,请登录后再次提交'));
$validator->addRule('author', 'maxLength', _t('用户名最多包含200个字符'), 200);
if ($this->options->commentsRequireMail && !$this->user->hasLogin()) {
$validator->addRule('mail', 'required', _t('必须填写电子邮箱地址'));
}
$validator->addRule('mail', 'email', _t('邮箱地址不合法'));
$validator->addRule('mail', 'maxLength', _t('电子邮箱最多包含200个字符'), 200);
if ($this->options->commentsRequireUrl && !$this->user->hasLogin()) {
$validator->addRule('url', 'required', _t('必须填写个人主页'));
}
$validator->addRule('url', 'url', _t('个人主页地址格式错误'));
$validator->addRule('url', 'maxLength', _t('个人主页地址最多包含200个字符'), 200);
$validator->addRule('text', 'required', _t('必须填写评论内容'));
$comment['text'] = $this->request->text;
/** 对一般匿名访问者,将用户数据保存一个月 */
if (!$this->user->hasLogin()) {
/** Anti-XSS */
$comment['author'] = $this->request->filter('trim')->author;
$comment['mail'] = $this->request->filter('trim')->mail;
$comment['url'] = $this->request->filter('trim')->url;
/** 修正用户提交的url */
if (!empty($comment['url'])) {
$urlParams = parse_url($comment['url']);
if (!isset($urlParams['scheme'])) {
$comment['url'] = 'http://' . $comment['url'];
}
}
$expire = $this->options->gmtTime + $this->options->timezone + 30 * 24 * 3600;
Typecho_Cookie::set('__typecho_remember_author', $comment['author'], $expire);
Typecho_Cookie::set('__typecho_remember_mail', $comment['mail'], $expire);
Typecho_Cookie::set('__typecho_remember_url', $comment['url'], $expire);
} else {
$comment['author'] = $this->user->screenName;
$comment['mail'] = $this->user->mail;
$comment['url'] = $this->user->url;
/** 记录登录用户的id */
$comment['authorId'] = $this->user->uid;
}
/** 评论者之前须有评论通过了审核 */
if (!$this->options->commentsRequireModeration && $this->options->commentsWhitelist) {
if ($this->size($this->select()->where('author = ? AND mail = ? AND status = ?', $comment['author'], $comment['mail'], 'approved'))) {
$comment['status'] = 'approved';
} else {
$comment['status'] = 'waiting';
}
}
if ($error = $validator->run($comment)) {
/** 记录文字 */
Typecho_Cookie::set('__typecho_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('__typecho_remember_text', $comment['text']);
throw $e;
}
/** 添加评论 */
$commentId = $this->insert($comment);
Typecho_Cookie::delete('__typecho_remember_text');
$this->db->fetchRow($this->select()->where('coid = ?', $commentId)->limit(1), array($this, 'push'));
/** 评论完成接口 */
$this->pluginHandle()->finishComment($this);
$this->response->goBack('#' . $this->theId);
}
示例15: logout
/**
* 用户登出函数
*
* @access public
* @return void
*/
public function logout()
{
$this->pluginHandle()->trigger($logoutPluggable)->logout();
if ($logoutPluggable) {
return;
}
Typecho_Cookie::delete('__typecho_uid', $this->options->siteUrl);
Typecho_Cookie::delete('__typecho_authCode', $this->options->siteUrl);
Typecho_Cookie::delete('__typecho_feed');
Typecho_Cookie::delete('__typecho_check_version');
}