HEX
Server: Apache/2.4.59 (Debian)
System: Linux keymana 4.19.0-21-cloud-amd64 #1 SMP Debian 4.19.249-2 (2022-06-30) x86_64
User: lijunjie (1003)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/dk/wp-content/themes/food/Model/food_activity/FoodActivityVoteModel.php
<?php

//比赛排行

class FoodActivityVoteModel extends CommonModel
{
// `id`, `user_id`, `player_id`, `add_time`
    public $tableName = 'food_activity_vote';

    public function getCountActivityVote($tableName, $where, $wheredata, $where2, $whereData2, $where3, $whereData3, $debug = false)
    {
        global $wpdb;
        $sql = "SELECT COUNT(*) FROM {$tableName} WHERE {$where} = '%s' AND {$where2} = '%s' AND {$where3} = '%s'";
        $sql = $wpdb->prepare($sql, $wheredata, $whereData2, $whereData3);
        if ($debug) {
            echo '<br>' . $sql;
        }
        return $wpdb->get_var($sql);
    }

    public function setFoodActivityVote($action, $data, $debug = false)
    {
        global $wpdb;
        $result = 0;

        $args = [
            'activity_id',
            'user_id',
            'player_id',
        ];

        $form = [];

        foreach ($args as $arg) {
            if (isset($data[$arg])) {
                $form[$arg] = $data[$arg];
            }
        }
        $form['add_time'] = time();
//        $form['mtime2'] = date("Y-m-d H:i:s", time());

//        if (isset($form['title'])) {
//            $form['title'] = serialize($form['title']);
//        }

        if ($debug) {
            print_r($form);
        }

        if ($action == 'update') {
            $result = $wpdb->update($this->tableName, $form, [
                'id' => $data['id']
            ]);
        }

        if ($action == 'add') {
            $result = $wpdb->insert($this->tableName, $form);
            $result = $wpdb->insert_id;
        }

        if ($debug) {
            echo '<br>' . PHP_EOL . $wpdb->last_query;
        }

        return $result;
    }


    /**
     * 删除投票
     * @param $data
     * @param $debug
     * @return mixed
     */
    public function delFoodActivityVote($data, $debug = false)
    {
        $activity_id = $data['activity_id'];
        $user_id = $data['user_id'];
        $player_id = $data['player_id'];

        global $wpdb;
        $sql = "DELETE FROM {$this->tableName} WHERE `activity_id` = '%d' AND `user_id` = '%d' AND `player_id` = '%d'";
        $sql = $wpdb->prepare($sql, $activity_id, $user_id, $player_id);
        if ($debug) {
            echo '<br>' . $sql;
        }
        return $wpdb->query($sql);
    }

    /**
     * 课程系列分页
     * @param $where
     * @param $data
     * @param false $debug
     * @return mixed
     */
    public function getCountByPage($where, $data, $debug = false)
    {
        $sql = $this->getSqlForPage($where, false, $debug);

        if ($debug) {
            echo '<br>' . $sql;
        }
        global $wpdb;
        return $wpdb->get_var($sql);
    }

    public function getInfoByPage($where, $data, $debug = false)
    {
        $sql = $this->getSqlForPage($where, true, $debug);

//        $where = $data;
        $startpoint = ($where['pageSize'] * ($where['pageNum'] - 1));
        $order = $where['order'];
        $sql = $sql . " ORDER BY {$order} LIMIT {$startpoint},{$where['pageSize']}";

        if ($debug) {
            echo 'getInfoByPage -> ' . $sql;
        }
        global $wpdb;
        return $wpdb->get_results($sql); //, 'ARRAY_A'
    }

    private function getSqlForPage($data, $forPage = false, $debug = false)
    {
        unset($data['order']);
        unset($data['pageNum']);
        unset($data['pageSize']);

        if ($debug) {
            echo 'getCountByPage -> ';
            print_r($data);
        }

        $sql = "SELECT COUNT(*) FROM {$this->tableName}";

        if ($forPage) {
            $sql = "SELECT * FROM {$this->tableName}";
        }

        $inData = [];
//        if (key_exists('is_admin', $data)) {
//            $inData['user_id'] = $data['user_id'];
//            unset($data['user_id']);
//            unset($data['is_admin']);
//        }

        $likeArr = $this->sqlStrLike($sql, $data, $debug);
        $sql = $this->sqlStrByPage($likeArr[0], $likeArr[1], $debug);
        if (count($inData) > 0) {
            $sql = $this->sqlStrIN($sql, $inData, $debug);
        }

        return $sql;
    }

    public function sqlStrLike($sql, $data, $debug = false)
    {
        $outArr = $data;
        $outStr = '';
        $index = 0;
        $sqlData = [];
        if (is_array($data)) {
            if (isset($data['title'])) {
                $sqlData['title'] = $data['title'];
                unset($outArr['title']);
            }
        }

//        if ($debug) {
//            print_r($sqlData);
//        }

        if (is_array($sqlData)) {
            if (count($sqlData) > 0) {
                foreach ($sqlData as $item => $value) {
                    if ($index == 0) {
                        $outStr .= " WHERE $item LIKE '%$value%'";
                    } else {
                        $outStr .= " AND $item LIKE '%$value%'";
                    }
                    $index++;
                }
            }

        }
        return [
            0 => $sql . $outStr,
            1 => $outArr
        ];
    }

    public function sqlStrByPage($sql, $data, $debug = false)
    {
        $outStr = '';
        $index = 0;
        if (is_array($data)) {
            foreach ($data as $item => $value) {
                if ($index == 0) {
                    if (check_str($sql, 'WHERE')) {
                        $outStr = $outStr . " AND ";
                    } else {
                        $outStr = $outStr . " WHERE ";
                    }
                    $outStr .= " $item = $value";
                } else {
                    $outStr .= " AND $item = $value";
                }
                $index++;
            }
        }

        $sql = $sql . $outStr;
//        if ($debug) {
//            print_r([]);
//            echo $sql;
//        }

        $outStr2 = '';
        if (check_str($sql, 'WHERE')) {
            $outStr2 = " AND ";
        } else {
            $outStr2 = " WHERE ";
        }
        $outStr2 = $outStr2 . "1 = 1"; //"`status` != 99";
        return $sql . $outStr2;
    }

    public function sqlStrIN($sql, $data, $debug = false)
    {
        $outSql = $sql;
        if (is_array($data)) {
            if (isset($data['user_id'])) {
                //author
                //{$where} IN ({$idlist})
                $author = $data['user_id'];
                $outSql = $sql . " AND `user_id` IN ({$author}) ";
            }
        }

        return $outSql;
    }


}