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;
}
}