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/FoodActivityPlayerModel.php
<?php

//比赛排行

class FoodActivityPlayerModel extends CommonModel
{
//`id`, `aid`, `ref`, `nickname`, `declaration`, `avatar`, `score`, `add_time`, `update_time`
    public $tableName = 'food_activity_player';

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

        $args = [
            'user_id',

            'aid',
            'ref',
            'nickname',
            'title',
            'declaration',

            'video_file_id',
            'video_url',

            'img_id',
            'avatar',
            'score',
            'add_time',

            'review_remark',
            'status',
        ];

        $form = [];

        foreach ($args as $arg) {
            if (isset($data[$arg])) {
                $form[$arg] = $data[$arg];
            }
        }
        $form['update_time'] = time() + 3600 * 8;
//        $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') {
            $form['add_time'] = time() + 3600 * 8;
            $result = $wpdb->insert($this->tableName, $form);
            $result = $wpdb->insert_id;
        }

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

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

        return $result;
    }


//    public function delFoodActivity($data, $debug = false)
//    {
//        global $wpdb;
//        $sql = "DELETE FROM {$this->tableName}  WHERE `id` = '%d'  ";
//        $sql = $wpdb->prepare($sql, $data['id']);
//        if ($debug) {
//            echo '<br>' . $sql;
//        }
//        return $wpdb->query($sql);
//    }

    public function increasePlayerScore($aid, $player_id, $debug = false)
    {
        global $wpdb;
        $sql = "UPDATE `food_activity_player` SET `score` = `score` + 1,`update_time` = '%d' WHERE `aid` = '%d' AND `id` = '%d' ";
        $sql = $wpdb->prepare($sql, time(), $aid, $player_id);
        if ($debug) {
            echo '<br>' . $sql;
        }
        return $wpdb->query($sql);
    }

    /**
     * 减去用户投票 -1
     * @param $aid
     * @param $player_id
     * @param $debug
     * @return mixed
     */
    public function reducePlayerScore($aid, $player_id, $debug = false)
    {
        global $wpdb;
        $sql = "UPDATE `food_activity_player` SET `score` = `score` - 1,`update_time` = '%d' WHERE `aid` = '%d' AND `id` = '%d' ";
        $sql = $wpdb->prepare($sql, time(), $aid, $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;
    }


}