当前位置: 首页>>代码示例>>PHP>>正文


PHP Typecho_Cookie::set方法代码示例

本文整理汇总了PHP中Typecho_Cookie::set方法的典型用法代码示例。如果您正苦于以下问题:PHP Typecho_Cookie::set方法的具体用法?PHP Typecho_Cookie::set怎么用?PHP Typecho_Cookie::set使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Typecho_Cookie的用法示例。


在下文中一共展示了Typecho_Cookie::set方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: action

 public function action()
 {
     $this->db = Typecho_Db::get();
     $this->prefix = $this->db->getPrefix();
     $this->options = Typecho_Widget::widget('Widget_Options');
     $cid = $this->request->cid;
     if (!$cid) {
         $this->response->throwJson(array('status' => 0, 'msg' => '请选择喜欢的文章!'));
     }
     $likes = Typecho_Cookie::get('__post_likes');
     if (empty($likes)) {
         $likes = array();
     } else {
         $likes = explode(',', $likes);
     }
     if (!in_array($cid, $likes)) {
         $row = $this->db->fetchRow($this->db->select('likesNum')->from('table.contents')->where('cid = ?', $cid)->limit(1));
         $this->db->query($this->db->update('table.contents')->rows(array('likesNum' => (int) $row['likesNum'] + 1))->where('cid = ?', $cid));
         array_push($likes, $cid);
         $likes = implode(',', $likes);
         Typecho_Cookie::set('__post_likes', $likes);
         //记录查看cookie
         $this->response->throwJson(array('status' => 1, 'msg' => '成功点赞!'));
     }
     $this->response->throwJson(array('status' => 0, 'msg' => '你已经点赞过了!'));
 }
开发者ID:jiangmuzi,项目名称:TeStat,代码行数:26,代码来源:Action.php

示例2: 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);
 }
开发者ID:duxiangfei,项目名称:plugins,代码行数:64,代码来源:Plugin.php

示例3: set

 /**
  * 设定堆栈每一行的值
  *
  * @param string $value 值对应的键值
  * @param string $type 提示类型
  * @param string $typeFix 兼容老插件
  * @return array
  */
 public function set($value, $type = 'notice', $typeFix = 'notice')
 {
     $notice = is_array($value) ? array_values($value) : array($value);
     if (empty($type) && $typeFix) {
         $type = $typeFix;
     }
     Typecho_Cookie::set('__typecho_notice', json_encode($notice), $this->widget('Widget_Options')->gmtTime + $this->widget('Widget_Options')->timezone + 86400, $this->widget('Widget_Options')->siteUrl);
     Typecho_Cookie::set('__typecho_notice_type', $type, $this->widget('Widget_Options')->gmtTime + $this->widget('Widget_Options')->timezone + 86400, $this->widget('Widget_Options')->siteUrl);
 }
开发者ID:menmenweiwei,项目名称:blog,代码行数:17,代码来源:Notice.php

示例4: action

 /**
  * 初始化函数
  *
  * @access public
  * @return void
  */
 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();
     }
     /** 先验证动态密码 **/
     $user = $this->db->fetchRow($this->select()->where('name = ?', $this->request->name)->limit(1));
     if ($user['twoFactorAuthKey']) {
         if ($this->request->twoFactAuth) {
             if (!$this->widget('Widget_GoogleAuthenticator')->verifyCode($user['twoFactorAuthKey'], $this->request->twoFactAuth, 2)) {
                 $this->widget('Widget_Notice')->set(_t('动态密码不正确'));
                 $this->response->goBack();
             }
         } else {
             Typecho_Cookie::set('__typecho_remember_name', $this->request->name);
             $this->response->redirect($this->options->adminUrl . 'login.php?requireTwoFactAuth=yes');
         }
     }
     /** 开始验证用户 **/
     $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);
         $this->pluginHandle()->loginFail($this->user, $this->request->name, $this->request->password, 1 == $this->request->remember);
         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->pluginHandle()->loginSucceed($this->user, $this->request->name, $this->request->password, 1 == $this->request->remember);
     /** 跳转验证后地址 */
     if (NULL != $this->request->referer) {
         $this->response->redirect($this->request->referer);
     } else {
         if (!$this->user->pass('contributor', true)) {
             /** 不允许普通用户直接跳转后台 */
             $this->response->redirect($this->options->profileUrl);
         } else {
             $this->response->redirect($this->options->adminUrl);
         }
     }
 }
开发者ID:doresu,项目名称:typecho,代码行数:63,代码来源:Login.php

示例5: 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);
 }
开发者ID:dccecc,项目名称:typecho,代码行数:62,代码来源:Feedback.php

示例6: 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);
 }
开发者ID:r0ker,项目名称:hctf2015-all-problems,代码行数:55,代码来源:Register.php

示例7: action

 /**
  * 初始化函数
  *
  * @access public
  * @return void
  */
 public function action()
 {
     /** 如果已经登录 */
     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);
         $this->pluginHandle()->loginFail($this->user, $this->request->name, $this->request->password, 1 == $this->request->remember);
         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->pluginHandle()->loginSucceed($this->user, $this->request->name, $this->request->password, 1 == $this->request->remember);
     /** 跳转验证后地址 */
     if (NULL != $this->request->referer) {
         $this->response->redirect($this->request->referer);
     } else {
         if (!$this->user->pass('contributor', true)) {
             /** 不允许普通用户直接跳转后台 */
             $this->response->redirect($this->options->siteUrl);
         } else {
             $this->response->redirect($this->options->adminUrl);
         }
     }
 }
开发者ID:menmenweiwei,项目名称:blog,代码行数:48,代码来源:Login.php

示例8: doLogin

 protected function doLogin()
 {
     // 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');
     //登录积分
     Forum_Common::credits('login');
     /** 跳转验证后地址 */
     $this->response->redirect($this->request->get('redir', $this->options->index));
 }
开发者ID:Jsechoo,项目名称:sisome,代码行数:36,代码来源:Login.php

示例9: like

 protected function like()
 {
     $cid = $this->request->cid;
     if (!$cid) {
         $this->response->throwJson(array('status' => 0, 'msg' => '请选择喜欢的文章!'));
     }
     $likes = Typecho_Cookie::get('__sis_pls');
     if (empty($likes)) {
         $likes = array();
     } else {
         $likes = explode(',', $likes);
     }
     if (!in_array($cid, $likes)) {
         $db = Typecho_Db::get();
         $row = $db->fetchRow($db->select('likesNum')->from('table.contents')->where('cid = ?', $cid)->limit(1));
         $db->query($db->update('table.contents')->rows(array('likesNum' => (int) $row['likesNum'] + 1))->where('cid = ?', $cid));
         array_push($likes, $cid);
         $likes = implode(',', $likes);
         Typecho_Cookie::set('__sis_pls', $likes);
         //记录查看cookie
         $this->response->throwJson(array('status' => 1, 'msg' => '成功点赞!'));
     }
     $this->response->throwJson(array('status' => 0, 'msg' => '你已经点赞过了!'));
 }
开发者ID:hongweipeng,项目名称:cool_blog,代码行数:24,代码来源:Action.php

示例10: feed

 /**
  * 远程请求代理
  *
  * @access public
  * @return void
  */
 public function feed()
 {
     $this->user->pass('subscriber');
     $client = Typecho_Http_Client::get();
     if ($client) {
         $client->setHeader('User-Agent', $this->options->generator)->send('http://typecho.org/feed/');
         /** 匹配内容体 */
         $response = $client->getResponseBody();
         preg_match_all("/<item>\\s*<title>([^>]*)<\\/title>\\s*<link>([^>]*)<\\/link>\\s*<guid>[^>]*<\\/guid>\\s*<pubDate>([^>]*)<\\/pubDate>/is", $response, $matches);
         $data = array();
         if ($matches) {
             foreach ($matches[0] as $key => $val) {
                 $data[] = array('title' => $matches[1][$key], 'link' => $matches[2][$key], 'date' => Typecho_I18n::dateWord(strtotime($matches[3][$key]), $this->options->gmtTime + $this->options->timezone));
                 if ($key > 3) {
                     break;
                 }
             }
         }
         if (!empty($data)) {
             Typecho_Cookie::set('__typecho_feed', Typecho_Json::encode($data));
         }
         $this->response->throwJson($data);
         return;
     }
     throw new Typecho_Widget_Exception(_t('禁止访问'), 403);
 }
开发者ID:raindali,项目名称:express,代码行数:32,代码来源:Ajax.php

示例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);
 }
开发者ID:rptec,项目名称:sisome,代码行数:95,代码来源:Feedback.php

示例12: singleHandle

 /**
  * 独立页处理
  *
  * @access private
  * @param Typecho_Db_Query $select 查询对象
  * @param boolean $hasPushed 是否已经压入队列
  * @return void
  * @throws Typecho_Widget_Exception
  */
 private function singleHandle(Typecho_Db_Query $select, &$hasPushed)
 {
     if ('comment_page' == $this->parameter->type) {
         $params = array();
         $matched = Typecho_Router::match($this->request->permalink);
         if ($matched && $matched instanceof Widget_Archive && $matched->is('single')) {
             $this->import($matched);
             $hasPushed = true;
             return;
         }
     }
     /** 将这两个设置提前是为了保证在调用query的plugin时可以在插件中使用is判断初步归档类型 */
     /** 如果需要更细判断,则可以使用singleHandle来实现 */
     $this->_archiveSingle = true;
     /** 默认归档类型 */
     $this->_archiveType = 'single';
     /** 匹配类型 */
     if ('single' != $this->parameter->type) {
         $select->where('table.contents.type = ?', $this->parameter->type);
     }
     /** 如果是单篇文章或独立页面 */
     if (isset($this->request->cid)) {
         $select->where('table.contents.cid = ?', $this->request->filter('int')->cid);
     }
     /** 匹配缩略名 */
     if (isset($this->request->slug)) {
         $select->where('table.contents.slug = ?', $this->request->slug);
     }
     /** 匹配时间 */
     if (isset($this->request->year)) {
         $year = $this->request->filter('int')->year;
         $fromMonth = 1;
         $toMonth = 12;
         $fromDay = 1;
         $toDay = 31;
         if (isset($this->request->month)) {
             $fromMonth = $this->request->filter('int')->month;
             $toMonth = $fromMonth;
             $fromDay = 1;
             $toDay = date('t', mktime(0, 0, 0, $toMonth, 1, $year));
             if (isset($this->request->day)) {
                 $fromDay = $this->request->filter('int')->day;
                 $toDay = $fromDay;
             }
         }
         /** 获取起始GMT时间的unix时间戳 */
         $from = mktime(0, 0, 0, $fromMonth, $fromDay, $year) - $this->options->timezone + $this->options->serverTimezone;
         $to = mktime(23, 59, 59, $toMonth, $toDay, $year) - $this->options->timezone + $this->options->serverTimezone;
         $select->where('table.contents.created > ? AND table.contents.created < ?', $from, $to);
     }
     /** 保存密码至cookie */
     if ($this->request->isPost() && isset($this->request->protectPassword)) {
         $this->security->protect();
         Typecho_Cookie::set('protectPassword', $this->request->protectPassword, 0);
     }
     /** 匹配类型 */
     $select->limit(1);
     $this->query($select);
     if (!$this->have() || isset($this->request->category) && $this->category != $this->request->category || isset($this->request->directory) && $this->request->directory != implode('/', $this->directory)) {
         if (!$this->_invokeFromOutside) {
             /** 对没有索引情况下的判断 */
             throw new Typecho_Widget_Exception(_t('请求的地址不存在'), 404);
         } else {
             $hasPushed = true;
             return;
         }
     }
     /** 设置模板 */
     if ($this->template) {
         /** 应用自定义模板 */
         $this->_themeFile = $this->template;
     }
     /** 设置头部feed */
     /** RSS 2.0 */
     //对自定义首页使用全局变量
     if (!$this->_makeSinglePageAsFrontPage) {
         $this->_feedUrl = $this->feedUrl;
         /** RSS 1.0 */
         $this->_feedRssUrl = $this->feedRssUrl;
         /** ATOM 1.0 */
         $this->_feedAtomUrl = $this->feedAtomUrl;
         /** 设置标题 */
         $this->_archiveTitle = $this->title;
         /** 设置关键词 */
         $this->_keywords = implode(',', Typecho_Common::arrayFlatten($this->tags, 'name'));
         /** 设置描述 */
         $this->_description = $this->description;
     }
     /** 设置归档类型 */
     $this->_archiveType = $this->type;
     /** 设置归档缩略名 */
//.........这里部分代码省略.........
开发者ID:BlueBreeze,项目名称:typecho,代码行数:101,代码来源:Archive.php

示例13: execute

 /**
  * 执行函数
  *
  * @access public
  * @return void
  */
 public function execute()
 {
     $select = $this->select();
     $this->parameter->setDefault('pageSize=20');
     $this->_currentPage = $this->request->get('page', 1);
     /** 过滤标题 */
     if (NULL != ($keywords = $this->request->filter('search')->keywords)) {
         $select->where('table.comments.text LIKE ?', '%' . $keywords . '%');
     }
     /** 如果具有贡献者以上权限,可以查看所有评论,反之只能查看自己的评论 */
     if (!$this->user->pass('editor', true)) {
         $select->where('table.comments.ownerId = ?', $this->user->uid);
     } else {
         if (!isset($this->request->cid)) {
             if ('on' == $this->request->__some_all_comments) {
                 Typecho_Cookie::set('__some_all_comments', 'on');
             } else {
                 if ('off' == $this->request->__some_all_comments) {
                     Typecho_Cookie::set('__some_all_comments', 'off');
                 }
                 if ('on' != Typecho_Cookie::get('__some_all_comments')) {
                     $select->where('table.comments.ownerId = ?', $this->user->uid);
                 }
             }
         }
     }
     if (in_array($this->request->status, array('approved', 'waiting', 'spam'))) {
         $select->where('table.comments.status = ?', $this->request->status);
     } else {
         if ('hold' == $this->request->status) {
             $select->where('table.comments.status <> ?', 'approved');
         } else {
             $select->where('table.comments.status = ?', 'approved');
         }
     }
     //增加按文章归档功能
     if (isset($this->request->cid)) {
         $select->where('table.comments.cid = ?', $this->request->filter('int')->cid);
     }
     $this->_countSql = clone $select;
     $select->order('table.comments.coid', Typecho_Db::SORT_DESC)->page($this->_currentPage, $this->parameter->pageSize);
     $this->db->fetchAll($select, array($this, 'push'));
 }
开发者ID:dccecc,项目名称:typecho,代码行数:49,代码来源:Admin.php

示例14: list

Typecho_Widget::widget('Widget_User')->to($user);
Typecho_Widget::widget('Widget_Security')->to($security);
Typecho_Widget::widget('Widget_Menu')->to($menu);
/** 初始化上下文 */
$request = $options->request;
$response = $options->response;
/** 检测是否是第一次登录 */
$currentMenu = $menu->getCurrentMenu();
list($prefixVersion, $suffixVersion) = explode('/', $options->version);
$params = parse_url($currentMenu[2]);
$adminFile = basename($params['path']);
if (!$user->logged && !Typecho_Cookie::get('__some_first_run') && !empty($currentMenu)) {
    if ('welcome.php' != $adminFile) {
        $response->redirect(Typecho_Common::url('welcome.php', $options->adminUrl));
    } else {
        Typecho_Cookie::set('__some_first_run', 1);
    }
} else {
    /** 检测版本是否升级 */
    if ($user->pass('administrator', true) && !empty($currentMenu)) {
        $mustUpgrade = !defined('Typecho_Common::VERSION') || version_compare(str_replace('/', '.', Typecho_Common::VERSION), str_replace('/', '.', $options->version), '>');
        if ($mustUpgrade && 'upgrade.php' != $adminFile) {
            $response->redirect(Typecho_Common::url('upgrade.php', $options->adminUrl));
        } else {
            if (!$mustUpgrade && 'upgrade.php' == $adminFile) {
                $response->redirect($options->adminUrl);
            } else {
                if (!$mustUpgrade && 'welcome.php' == $adminFile && $user->logged) {
                    $response->redirect($options->adminUrl);
                }
            }
开发者ID:dccecc,项目名称:typecho,代码行数:31,代码来源:common.php

示例15: viewCounter

 /**
  * 增加浏览量
  * @params Widget_Archive   $archive
  * @return void
  */
 public static function viewCounter($archive)
 {
     if ($archive->is('single')) {
         $cid = $archive->cid;
         $views = Typecho_Cookie::get('__post_views');
         if (empty($views)) {
             $views = array();
         } else {
             $views = explode(',', $views);
         }
         if (!in_array($cid, $views)) {
             $db = Typecho_Db::get();
             $db->query($db->update('table.contents')->rows(array('viewsNum' => (int) $archive->viewsNum + 1))->where('cid = ?', $cid));
             array_push($views, $cid);
             $views = implode(',', $views);
             Typecho_Cookie::set('__post_views', $views);
             //记录查看cookie
         }
     }
 }
开发者ID:jiangmuzi,项目名称:TeStat,代码行数:25,代码来源:Plugin.php


注:本文中的Typecho_Cookie::set方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。