zoukankan      html  css  js  c++  java
  • weiphp 投票插件的主控制器部分代码3

      1 <?php
      2 
      3 function show() {
      4         $vote_id = I ( 'id', 0, 'intval' );        //接受id传参
      5         $openid = get_openid ();    //获取当前用户的OpenId
      6         $token = get_token ();        //获取当前用户的Token
      7         
      8         $info = $this->_getVoteInfo ( $vote_id );    //获取投票插件的信息
      9         
     10         $canJoin = ! empty ( $openid ) && ! empty ( $token ) && ! ($this->_is_overtime ( $vote_id )) && ! ($this->_is_join ( $vote_id, $this->mid, $token ));
     11         $this->assign ( 'canJoin', $canJoin );
     12         // dump ( $canJoin );
     13         // dump(! empty ( $openid ));dump(! empty ( $token ));dump(! ($this->_is_overtime ( $vote_id )));dump(! ($this->_is_join ( $vote_id, $openid, $token )));
     14         
     15         $test_id = intval ( $_REQUEST ['test_id'] );    //转换全局变量的值
     16         $this->assign ( 'event_url', event_url ( '投票', $vote_id ) );        //提交到模版
     17         
     18         $this->display ( T ( 'Addons://Vote@Vote/show' ) );        //调用show模版显示
     19     }
     20     function _getVoteInfo($id) {        //获取投票插件的信息
     21         // 检查ID是否合法
     22         if (empty ( $id ) || 0 == $id) {
     23             $this->error ( "错误的投票ID" );
     24         }
     25         
     26         $map ['id'] = $map2 ['vote_id'] = intval ( $id );        //将参数id转换为整形,并赋值
     27         $info = M ( 'vote' )->where ( $map )->find ();        //查表获得信息
     28         // dump(M ( 'vote' )->getLastSql());
     29         $this->assign ( 'info', $info );        //将信息传给模版
     30         
     31         // dump($info);
     32         $opts = M ( 'vote_option' )->where ( $map2 )->order ( '`order` asc' )->select ();
     33         //查表获得结果集并按正序排列
     34         foreach ( $opts as $p ) {    //设置total
     35             $total += $p ['opt_count'];
     36 
     37         }
     38         foreach ( $opts as &$vo ) {        //设置数组¥vo
     39             $vo ['percent'] = round ( $vo ['opt_count'] * 100 / $total, 1 );    //
     40         }
     41         // dump($opts);
     42         $this->assign ( 'opts', $opts );
     43         $this->assign ( 'num_total', $total );
     44         return $info;
     45     }
     46     // 用户投票信息
     47     function join() {
     48         $token = get_token ();        //获取token
     49         $opts_ids = array_filter ( I ( 'post.optArr' ) );    //转换参数
     50         
     51         $vote_id = intval ( $_POST ["vote_id"] );    //设置转换参数为整形
     52         // 检查ID是否合法
     53         if (empty ( $vote_id ) || 0 == $vote_id) {
     54             $this->error ( "错误的投票ID" );
     55         }
     56         if ($this->_is_overtime ( $vote_id )) {
     57             $this->error ( "请在指定的时间内投票" );
     58         }
     59         if ($this->_is_join ( $vote_id, $this->mid, $token )) {
     60             $this->error ( "您已经投过,请不要重复投" );
     61         }
     62         if (empty ( $_POST ['optArr'] )) {
     63             $this->error ( "请先选择投票项" );
     64         }
     65         // 如果没投过,就添加
     66         $data ["user_id"] = $this->mid;
     67         $data ["vote_id"] = $vote_id;
     68         $data ["token"] = $token;
     69         $data ["options"] = implode ( ',', $opts_ids );
     70         $data ["cTime"] = time ();
     71         $addid = M ( "vote_log" )->add ( $data );
     72         // 投票选项信息的num+1
     73         foreach ( $opts_ids as $v ) {
     74             $v = intval ( $v );
     75             $res = M ( "vote_option" )->where ( 'id=' . $v )->setInc ( "opt_count" );
     76         }
     77         
     78         // 投票信息的vote_count+1
     79         $res = M ( "vote" )->where ( 'id=' . $vote_id )->setInc ( "vote_count" );
     80         
     81         // 增加积分
     82         add_credit ( 'vote' );
     83         
     84         // 连续投票
     85         $next_id = M ( "vote" )->where ( 'id=' . $vote_id )->getField ( "next_id" );
     86         if (! empty ( $next_id )) {
     87             $vote_id = $next_id;
     88         }
     89         
     90         redirect ( U ( 'show', 'id=' . $vote_id ) );
     91     }
     92     //已过期返回 true ,否则返回 false
     93     private function _is_overtime($vote_id) {
     94         // 先看看投票期限过期与否
     95         $the_vote = M ( "vote" )->where ( "id=$vote_id" )->find ();
     96         
     97         if(!empty($the_vote['start_date']) && $the_vote ['start_date'] > NOW_TIME) return ture;
     98         
     99         $deadline = $the_vote ['end_date'] + 86400;        //过期时间
    100         if(!empty($the_vote['end_date']) && $deadline <= NOW_TIME) return ture;        //判断
    101         
    102         return false;
    103     }
    104     private function _is_join($vote_id, $user_id, $token) {
    105         // $vote_limit = M ( 'vote' )->where ( 'id=' . $vote_id )->getField ( 'vote_limit' );
    106         $vote_limit = 1;
    107         $list = M ( "vote_log" )->where ( "vote_id=$vote_id AND user_id='$user_id' AND token='$token' AND options <>''" )->select ();        //查表
    108         $count = count ( $list );    //获取个数
    109         $info = array_pop ( $list );    //删除
    110         if ($info) {    //若info有值
    111             $joinData =  ( ',', $info ['options'] );    //设置$joinData
    112             $this->assign ( 'joinData', $joinData );    //赋值给模版
    113         }
    114         if ($count >= $vote_limit) {        //如果数量大于限制数量,并返回数true
    115             return true;
    116         }
    117         return false;
    118     }
  • 相关阅读:
    11前端css动画
    10前端css文本和字体
    09前端css3渐变
    08前端css3背景
    07前端css3边框和圆角
    06前端css3增加选择器
    堡垒机Teleport
    Sublime Text 3注册及中文乱码问题解决
    Linux部署KMS激活Windows 10和Office 2016
    服务器维护实施步骤
  • 原文地址:https://www.cnblogs.com/dennr/p/4615023.html
Copyright © 2011-2022 走看看