File: /var/www/uileague/wp-content/themes/uileague/helper/banners.php
<?php
class BannersHelper
{
public static $pb_table = "orm_banners";
public static function getList($args)
{
global $wpdb;
$keyword = htmlspecialchars($args['keyword']);
$keyword = empty($keyword) ? '' : trim($keyword);
$page = intval($args['cpage']) > 1 ? intval($args['cpage']) : 1;
$all = intval($args['pageLimit']) == -1;
$pageLimit = intval($args['pageLimit']) > 1 ? intval($args['pageLimit']) : 10;
$status = $args['status'];
$filterSql = "";
if ($status != null && is_numeric($status)) {
$filterSql .= $wpdb->prepare(" and status = %d ", $status);
}
$table = self::$pb_table;
$total = intval($wpdb->get_var("SELECT count(id) FROM `{$table}` WHERE 1=1 " . $filterSql));
if ($all) {
$results = $wpdb->get_results("SELECT * FROM `{$table}` WHERE 1=1 " . $filterSql . " order by id desc");
} else {
$results = $wpdb->get_results("SELECT * FROM `{$table}` WHERE 1=1 " . $filterSql . $wpdb->prepare(" order by id desc LIMIT %d,%d", ($page - 1) * $pageLimit, $pageLimit));
}
$dataList = array_map(function ($item) {
return BannersHelper::map_item($item);
}, $results);
$result = new stdClass();
$result->rc = ApiStatus::SUCCESS[0];
$result->msg = ApiStatus::SUCCESS[1];
$result->currentPage = $page;
$result->total = $total;
$result->data = $dataList;
return $result;
}
public static function get_by_id($id)
{
if (empty($id)) return null;
global $wpdb;
$row = $wpdb->get_row($wpdb->prepare("select * from `" . self::$pb_table . "` where id = %d", $id));
return self::map_item($row);
}
public static function map_item($row)
{
if (empty($row)) return null;
$row->banner_obj = UploadFileHelper::get_by_id($row->banner);
return $row;
}
public static function add($args, $uid = 0, $wpuid = 0)
{
global $wpdb;
$banner = intval($args['banner']);
$status = intval($args['status']);
$result = new stdClass();
if (empty($banner)) {
$result->rc = ApiStatus::ERR_PARAMS[0];
$result->msg = ApiStatus::ERR_PARAMS[1];
} else {
if (BannersHelper::banner_exists($banner)) {
$result->rc = ApiStatus::ERR_BANNER_EXISTS[0];
$result->msg = ApiStatus::ERR_BANNER_EXISTS[1];
} else {
$new_data = array(
'banner' => $banner,
'status' => $status,
'created' => current_time('mysql'),
'updated' => current_time('mysql'),
);
$res = $wpdb->insert(
self::$pb_table,
$new_data,
array('%d', '%d', '%s', '%s')
);
if ($res === false) {
$result->rc = ApiStatus::ERR_BANNER_ADD[0];
$result->msg = ApiStatus::ERR_BANNER_ADD[1];
} else {
$insert_id = $wpdb->insert_id;
Logger::log("添加了Banner", self::$pb_table, $insert_id, null, $new_data, $uid, $wpuid);
$result->rc = ApiStatus::SUCCESS[0];
$result->msg = ApiStatus::SUCCESS[1];
$result->data = $insert_id;
}
}
}
return $result;
}
public static function update($args, $uid = 0, $wpuid = 0)
{
global $wpdb;
$id = intval($args['id']);
$banner = intval($args['banner']);
$status = intval($args['status']);
$result = new stdClass();
if (empty($banner) || empty($id)) {
$result->rc = ApiStatus::ERR_PARAMS[0];
$result->msg = ApiStatus::ERR_PARAMS[1];
} else {
global $wpdb;
$row = BannersHelper::get_by_id($id);
if ($row == null) {
$result->rc = ApiStatus::ERR_BANNER_NONE[0];
$result->msg = ApiStatus::ERR_BANNER_NONE[1];
} else {
if (BannersHelper::banner_exists($banner, $id)) {
$result->rc = ApiStatus::ERR_BANNER_EXISTS[0];
$result->msg = ApiStatus::ERR_BANNER_EXISTS[1];
} else {
$new_data = array(
'banner' => $banner,
'status' => $status,
'updated' => current_time('mysql'),
);
$res = $wpdb->update(
self::$pb_table,
$new_data,
array('id' => $id),
array('%d', '%d', '%s'),
array('%d')
);
if ($res === false) {
$result->rc = ApiStatus::ERR_BANNER_UPDATE[0];
$result->msg = ApiStatus::ERR_BANNER_UPDATE[1];
} else {
Logger::log("更新了Banner", self::$pb_table, $id, $row, $new_data, $uid, $wpuid);
// 刪除文件
if (!empty($banner) && $banner != $row->banner && !empty($row->banner)) {
wp_delete_attachment($row->banner);
}
$result->rc = ApiStatus::SUCCESS[0];
$result->msg = ApiStatus::SUCCESS[1];
}
}
}
}
return $result;
}
public static function delete($args, $uid = 0, $wpuid = 0)
{
$id = intval($args['id']);
$row = BannersHelper::get_by_id($id);
$result = new stdClass();
if ($row == null) {
$result->rc = ApiStatus::ERR_BANNER_NONE[0];
$result->msg = ApiStatus::ERR_BANNER_NONE[1];
} else {
global $wpdb;
$res = $wpdb->delete(self::$pb_table, array('id' => $id), array('%d'));
if ($res === false) {
$result->rc = ApiStatus::ERR_BANNER_DELETE[0];
$result->msg = ApiStatus::ERR_BANNER_DELETE[1];
} else {
Logger::log("刪除了Banner", self::$pb_table, $id, $row, null, $uid, $wpuid);
// 刪除文件
if (!empty($row->banner)) {
wp_delete_attachment($row->banner);
}
$result->rc = ApiStatus::SUCCESS[0];
$result->msg = ApiStatus::SUCCESS[1];
}
}
return $result;
}
public static function banner_exists($banner, $excludeId = 0)
{
global $wpdb;
if ($excludeId > 0) {
$var = $wpdb->get_var($wpdb->prepare("select id from `" . self::$pb_table . "` where banner = %d and id <> %d", $banner, $excludeId));
} else {
$var = $wpdb->get_var($wpdb->prepare("select id from `" . self::$pb_table . "` where banner = %d", $banner));
}
return !empty($var);
}
}