weiphp 投票插件的主控制器部分代码3
2015-07-02 02:02
591 查看
<?php function show() { $vote_id = I ( 'id', 0, 'intval' ); //接受id传参 $openid = get_openid (); //获取当前用户的OpenId $token = get_token (); //获取当前用户的Token $info = $this->_getVoteInfo ( $vote_id ); //获取投票插件的信息 $canJoin = ! empty ( $openid ) && ! empty ( $token ) && ! ($this->_is_overtime ( $vote_id )) && ! ($this->_is_join ( $vote_id, $this->mid, $token )); $this->assign ( 'canJoin', $canJoin ); // dump ( $canJoin ); // dump(! empty ( $openid ));dump(! empty ( $token ));dump(! ($this->_is_overtime ( $vote_id )));dump(! ($this->_is_join ( $vote_id, $openid, $token ))); $test_id = intval ( $_REQUEST ['test_id'] ); //转换全局变量的值 $this->assign ( 'event_url', event_url ( '投票', $vote_id ) ); //提交到模版 $this->display ( T ( 'Addons://Vote@Vote/show' ) ); //调用show模版显示 } function _getVoteInfo($id) { //获取投票插件的信息 // 检查ID是否合法 if (empty ( $id ) || 0 == $id) { $this->error ( "错误的投票ID" ); } $map ['id'] = $map2 ['vote_id'] = intval ( $id ); //将参数id转换为整形,并赋值 $info = M ( 'vote' )->where ( $map )->find (); //查表获得信息 // dump(M ( 'vote' )->getLastSql()); $this->assign ( 'info', $info ); //将信息传给模版 // dump($info); $opts = M ( 'vote_option' )->where ( $map2 )->order ( '`order` asc' )->select (); //查表获得结果集并按正序排列 foreach ( $opts as $p ) { //设置total $total += $p ['opt_count']; } foreach ( $opts as &$vo ) { //设置数组¥vo $vo ['percent'] = round ( $vo ['opt_count'] * 100 / $total, 1 ); // } // dump($opts); $this->assign ( 'opts', $opts ); $this->assign ( 'num_total', $total ); return $info; } // 用户投票信息 function join() { $token = get_token (); //获取token $opts_ids = array_filter ( I ( 'post.optArr' ) ); //转换参数 $vote_id = intval ( $_POST ["vote_id"] ); //设置转换参数为整形 // 检查ID是否合法 if (empty ( $vote_id ) || 0 == $vote_id) { $this->error ( "错误的投票ID" ); } if ($this->_is_overtime ( $vote_id )) { $this->error ( "请在指定的时间内投票" ); } if ($this->_is_join ( $vote_id, $this->mid, $token )) { $this->error ( "您已经投过,请不要重复投" ); } if (empty ( $_POST ['optArr'] )) { $this->error ( "请先选择投票项" ); } // 如果没投过,就添加 $data ["user_id"] = $this->mid; $data ["vote_id"] = $vote_id; $data ["token"] = $token; $data ["options"] = implode ( ',', $opts_ids ); $data ["cTime"] = time (); $addid = M ( "vote_log" )->add ( $data ); // 投票选项信息的num+1 foreach ( $opts_ids as $v ) { $v = intval ( $v ); $res = M ( "vote_option" )->where ( 'id=' . $v )->setInc ( "opt_count" ); } // 投票信息的vote_count+1 $res = M ( "vote" )->where ( 'id=' . $vote_id )->setInc ( "vote_count" ); // 增加积分 add_credit ( 'vote' ); // 连续投票 $next_id = M ( "vote" )->where ( 'id=' . $vote_id )->getField ( "next_id" ); if (! empty ( $next_id )) { $vote_id = $next_id; } redirect ( U ( 'show', 'id=' . $vote_id ) ); } //已过期返回 true ,否则返回 false private function _is_overtime($vote_id) { // 先看看投票期限过期与否 $the_vote = M ( "vote" )->where ( "id=$vote_id" )->find (); if(!empty($the_vote['start_date']) && $the_vote ['start_date'] > NOW_TIME) return ture; $deadline = $the_vote ['end_date'] + 86400; //过期时间 if(!empty($the_vote['end_date']) && $deadline <= NOW_TIME) return ture; //判断 return false; } private function _is_join($vote_id, $user_id, $token) { // $vote_limit = M ( 'vote' )->where ( 'id=' . $vote_id )->getField ( 'vote_limit' ); $vote_limit = 1; $list = M ( "vote_log" )->where ( "vote_id=$vote_id AND user_id='$user_id' AND token='$token' AND options <>''" )->select (); //查表 $count = count ( $list ); //获取个数 $info = array_pop ( $list ); //删除 if ($info) { //若info有值 $joinData = ( ',', $info ['options'] ); //设置$joinData $this->assign ( 'joinData', $joinData ); //赋值给模版 } if ($count >= $vote_limit) { //如果数量大于限制数量,并返回数true return true; } return false; }
相关文章推荐
- PHP 字符串操作的 printf() 内置函数用法
- PHP开发笔记
- php函数—addslashes和mysql_real_escape_string
- php采集淘宝商品价格,促销价格
- php函数— strip_tags() 函数
- php函数—截断函数mb_substr()详细介绍
- PHPCMS V9模板设计常用变量
- PHP 错误与异常 笔记与总结(12 )异常
- PHP开发环境搭建
- PHP中使用curl入门教程
- PHP curl使用实例
- PHP中的流(streams)浅析
- mod_php、FastCGI、PHP-FPM等PHP运行方式对比
- php统计数组元素个数的方法
- PHP中iconv函数知识汇总
- PHP+JS实现大规模数据提交的方法
- PHP中的命名空间详细介绍
- PHP输出缓冲控制Output Control系列函数详解
- PHP.ini安全配置检测工具pcc简单介绍
- PHP中foreach()用法汇总