403Webshell
Server IP : 103.161.17.216  /  Your IP : 216.73.216.1
Web Server : nginx/1.18.0
System : Linux tipsysaigoncharming 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User : www-data ( 33)
PHP Version : 7.4.3-4ubuntu2.29
Disable Function : 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,
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /var/www/app.houseland.info/application/services/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/app.houseland.info/application/services//CustomerProfileBadges.php
<?php

namespace app\services;

defined('BASEPATH') or exit('No direct script access allowed');

class CustomerProfileBadges
{
    protected $customerId;

    protected $CI;

    protected $staffId;

    public function __construct($customerId)
    {
        $this->customerId = $customerId;
        $this->staffId    = get_staff_user_id();
        $this->CI         = &get_instance();
    }

    public function getBadge($feature)
    {
        $badge = [];

        if (method_exists($this, $feature)) {
            if ($count = $this->{$feature}()) {
                $badge = [
                    'value' => $count,
                    'color' => '',
                    'type'  => 'bg-default',
                ];
            }
        }

        $hook = hooks()->apply_filters('customers_profile_tab_badge', [
            'feature'     => $feature,
            'customer_id' => $this->customerId,
            'badge'       => $badge,
        ]);

        return $hook['badge'];
    }

    /**
     * Get the total contacts for the customer profile badge
     *
     * @return int
     */
    public function contacts()
    {
        $this->CI->db->where('userid', $this->customerId);

        return $this->CI->db->count_all_results('contacts');
    }

    /**
     * Get the total notes for the customer profile badge
     *
     * @return int
     */
    public function notes()
    {
        $this->CI->db->where('rel_type', 'customer');
        $this->CI->db->where('rel_id', $this->customerId);

        return $this->CI->db->count_all_results('notes');
    }

    public function invoices()
    {
        if (!class_exists('Invoices_model', false)) {
            $this->CI->load->model('invoices_model');
        }

        if (staff_cant('view', 'invoices')) {
            $where = get_invoices_where_sql_for_staff($this->staffId);
            $this->CI->db->where($where);
        }
        $this->CI->db->where_not_in('status', [\Invoices_model::STATUS_CANCELLED, \Invoices_model::STATUS_PAID]);
        $this->CI->db->where('clientid', $this->customerId);

        return $this->CI->db->count_all_results('invoices');
    }

    public function proposals()
    {
        if (staff_cant('view', 'proposals')) {
            $where = get_proposals_sql_where_staff($this->staffId);
            $this->CI->db->where($where);
        }
        $this->CI->db->where_in('status', [1, 4, 6]);
        $this->CI->db->where('rel_id', $this->customerId);
        $this->CI->db->where('rel_type', 'customer');

        return $this->CI->db->count_all_results('proposals');
    }

    public function subscriptions()
    {
        if (staff_cant('view', 'subscriptions')) {
            $this->CI->db->where('(' . db_prefix() . 'subscriptions.created_from=' . $this->staffId . ' AND ' . db_prefix() . 'subscriptions.created_from IN (SELECT staff_id FROM ' . db_prefix() . 'staff_permissions WHERE feature = "subscriptions" AND capability="view_own"))');
        }

        $this->CI->db->group_start();
        $this->CI->db->where_in('status', ['past_due', 'unpaid', 'incomplete']);
        // Not subscribed
        $this->CI->db->where('stripe_subscription_id IS NULL OR stripe_subscription_id = ""');
        $this->CI->db->group_end();
        $this->CI->db->where('clientid ', $this->customerId);

        return $this->CI->db->count_all_results('subscriptions');
    }

    public function estimates()
    {
        if (staff_cant('view', 'estimates')) {
            $where = get_estimates_where_sql_for_staff($this->staffId);
            $this->CI->db->where($where);
        }

        $this->CI->db->group_start();
        $this->CI->db->where_in('status', [1, 2]);
        $this->CI->db->or_where('status IN (1,2) AND sent=0');
        $this->CI->db->group_end();
        $this->CI->db->where('clientid', $this->customerId);

        return $this->CI->db->count_all_results('estimates');
    }

    public function credit_notes()
    {
        if (staff_cant('view', 'credit_notes')) {
            $this->CI->db->where('(' . db_prefix() . 'creditnotes.addedfrom=' . $this->staffId . ' AND ' . db_prefix() . 'creditnotes.addedfrom IN (SELECT staff_id FROM ' . db_prefix() . 'staff_permissions WHERE feature = "credit_notes" AND capability="view_own"))');
        }

        $this->CI->db->where('clientid', $this->customerId);
        $this->CI->db->where('status', 1);

        return $this->CI->db->count_all_results('creditnotes');
    }

    public function contracts()
    {
        if (staff_cant('view', 'contracts')) {
            $this->CI->db->where('(' . db_prefix() . 'contracts.addedfrom=' . $this->staffId . ' AND ' . db_prefix() . 'contracts.addedfrom IN (SELECT staff_id FROM ' . db_prefix() . 'staff_permissions WHERE feature = "contracts" AND capability="view_own"))');
        }

        $this->CI->db->where('client', $this->customerId);
        $this->CI->db->where('signed', 0);

        return $this->CI->db->count_all_results('contracts');
    }

    public function projects()
    {
        if (staff_cant('view', 'projects')) {
            $this->CI->db->where(db_prefix() . 'projects.id IN (SELECT project_id FROM ' . db_prefix() . 'project_members WHERE staff_id=' . $this->staffId . ')');
        }

        $this->CI->db->where('status', 2);
        $this->CI->db->where('clientid', $this->customerId);

        return $this->CI->db->count_all_results('projects');
    }

    public function tickets()
    {
        if (!is_admin()) {
            $departments_ids      = [];
            if (get_option('staff_access_only_assigned_departments') == 1) {
                $this->CI->load->model('departments_model');
                $staff_deparments_ids = $this->CI->departments_model->get_staff_departments($this->staffId, true);
                if (count($staff_deparments_ids) == 0) {
                    $departments = $this->CI->departments_model->get();
                    foreach ($departments as $department) {
                        array_push($departments_ids, $department['departmentid']);
                    }
                } else {
                    $departments_ids = $staff_deparments_ids;
                }

                if (count($departments_ids) > 0) {
                    $this->CI->db->group_start();
                    $this->CI->db->where('department IN (SELECT departmentid FROM ' . db_prefix() . 'staff_departments WHERE departmentid IN (' . implode(',', $departments_ids) . ') AND staffid="' . $this->staffId . '")');
                }
            }
            $this->CI->db->or_where('assigned', $this->staffId);
            if (count($departments_ids) > 0) {
                $this->CI->db->group_end();
            }
        }
        $this->CI->db->where('userid', $this->customerId);

        return $this->CI->db->count_all_results('tickets');
    }

    public function attachments()
    {
        $this->CI->db->where('rel_id', $this->customerId);
        $this->CI->db->where('rel_type', 'customer');

        return $this->CI->db->count_all_results('files');
    }

    public function vault()
    {
        $this->CI->db->where('customer_id', $this->customerId);

        return $this->CI->db->count_all_results('vault');
    }

    public function expenses()
    {
        $this->CI->db->where('clientid', $this->customerId);
        $this->CI->db->where('billable', 1);
        $this->CI->db->where('invoiceid IS NULL');

        return $this->CI->db->count_all_results('expenses');
    }

    public function reminders()
    {
        $this->CI->db->where('rel_id', $this->customerId);
        $this->CI->db->where('rel_type', 'customer');
        $this->CI->db->where('isnotified', 0);

        return $this->CI->db->count_all_results('reminders');
    }

    public function tasks()
    {
        $where = '(';
        $where .= '(rel_id IN (SELECT id FROM ' . db_prefix() . 'invoices WHERE clientid=' . $this->customerId . ') AND rel_type="invoice")';
        $where .= ' OR (rel_id IN (SELECT id FROM ' . db_prefix() . 'estimates WHERE clientid=' . $this->customerId . ') AND rel_type="estimate")';
        $where .= ' OR (rel_id IN (SELECT id FROM ' . db_prefix() . 'contracts WHERE client=' . $this->customerId . ') AND rel_type="contract")';
        $where .= ' OR (rel_id IN (SELECT ticketid FROM ' . db_prefix() . 'tickets WHERE userid=' . $this->customerId . ') AND rel_type="ticket")';
        $where .= ' OR (rel_id IN (SELECT id FROM ' . db_prefix() . 'expenses WHERE clientid=' . $this->customerId . ') AND rel_type="expense")';
        $where .= ' OR (rel_id IN (SELECT id FROM ' . db_prefix() . 'proposals WHERE rel_id=' . $this->customerId . ' AND rel_type="proposal") AND rel_type="proposal")';
        $where .= ' OR (rel_id IN (SELECT userid FROM ' . db_prefix() . 'clients WHERE userid=' . $this->customerId . ') AND rel_type="customer")';
        $where .= ' OR (rel_id IN (SELECT id FROM ' . db_prefix() . 'projects WHERE clientid=' . $this->customerId . ') AND rel_type="project")';
        $where .= ')';

        $this->CI->db->where($where);
        $this->CI->db->where('datefinished is NULL');

        if (staff_cant('view', 'tasks')) {
            $this->CI->db->where(get_tasks_where_string(false));
        }

        return $this->CI->db->count_all_results('tasks');
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit