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