HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux Bradford-Sitios 6.14.0-1017-azure #17~24.04.1-Ubuntu SMP Mon Dec 1 20:10:50 UTC 2025 x86_64
User: www-data (33)
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/gestor-horarios.bradford/app/controllers/maintainers/UsersController.php
<?php

class UsersController extends CI_Controller
{
	function  __construct()
	{
		parent::__construct();
		$this->load->model('mantenedores/mantenedor_general_model');
		define('LAYOUT', 'shared/layout');
		valida_sesion($this->session->userdata('token_usuario'));
		define("STAFF_ID", '' . $this->session->userdata('rt_staff') . '');
	}

	function index()
	{
		$this->usuarios_listar(); //inicio
	}

	function usuarios_crear()
	{
		$post 	  = $this->input->post();
		if (!empty($post)) {
			$data   = $this->input->post('data');
			$data['rut'] = str_replace('.', '', $data['rut']);

			if (empty($data['password']) || empty($data['password_confirm'])) {
				$this->session->set_flashdata("mensaje_error", "Contraseñas es requerida");
				redirect('dashboard/usuarios/new');
			}

			if ($data['password'] != $data['password_confirm']) {
				$this->session->set_flashdata("mensaje_error", "Contraseñas no coinciden");
				redirect('dashboard/usuarios/new');
			}
			unset($data['password_confirm']);
			$validation_result = validate_password($data['password']);
			if ($validation_result === true) {
				$data['password'] = sha1($data['password']);
				$data['perfiles_id'] = 100;
				$id	 = $this->mantenedor_general_model->crear($data, 'usuarios');
				$error = $this->db->_error_number();
				if ($error == 1452) {
					$this->session->set_flashdata("mensaje_error", "No puede dejar en blanco la información de ");
					redirect('dashboard/usuarios/new');
				} else {
					redirect('dashboard/usuarios/' . $id . '/view');
				}
			} else {
				$this->session->set_flashdata("mensaje_error",  implode(", ", $validation_result));
				redirect('dashboard/usuarios/new');
			}
		}
		$data['button'] = array(
			'name'		 => 'continuar',
			'id' 		     => 'continuar',
			'value' 	     => 'Continuar',
			'class' 	     => 'btn-mant btn btn-small btn-primary',
			'type' 	     => 'submit',
			'content' 	 => ' Continuar '
		);

		//$data['perfiles_nombre'] = $this->prepara_dropdown($this->mantenedor_general_model->traer_tabla('perfiles', 'nombre'));
		$data['perfiles_nombre'] = $this->mantenedor_general_model->traer_todo('perfiles');

		$data['trabajadores_nombre'] = $this->prepara_dropdown($this->mantenedor_general_model->traer_tabla('trabajadores', 'nombres'));
		$data['rut'] = array(
			'name'        => 'data[rut]',
			'id'          => 'rut',
			'class'       => '',
			'maxlength'   => '45',
			'size'        => '45',
			'style'       => ''
		);

		$data['username'] = array(
			'name'        => 'data[username]',
			'id'          => 'username',
			'class'       => '',
			'maxlength'   => '145',
			'size'        => '145',
			'style'       => ''
		);

		$data['password'] = array(
			'name'        => 'data[password]',
			'id'          => 'password',
			'class'       => '',
			'maxlength'   => '145',
			'size'        => '145',
			'style'       => ''
		);

		$data['password_confirm'] = array(
			'name'        => 'data[password_confirm]',
			'id'          => 'password_confirm',
			'class'       => '',
			'maxlength'   => '145',
			'size'        => '145',
			'style'       => ''
		);

		$data['remember_token'] = array(
			'name'        => 'data[remember_token]',
			'id'          => 'remember_token',
			'class'       => '',
			'maxlength'   => '145',
			'size'        => '145',
			'style'       => ''
		);


		$data['form_open']     = array(
			'class' => 'form_mant form_usuarios',
			'id'    => 'form_usuarios'
		);
		$data['current_usuarios'] 	    = 'current';
		$data['title'] 			    = 'Gestión Usuarios - Crear';
		$data['breadcrumb'] 			= 'Crear Usuarios';
		$data["mensaje_error"]    	    = $this->session->flashdata("mensaje_error");
		$data['main_content']		    = 'mantenedores/mantenedor_usuarios_crear_view';
		$this->load->view(LAYOUT, $data);
	}

	function usuarios_editar($usuarios_id)
	{
		$post 	  = $this->input->post();
		if (!empty($post)) {
			$data        = $this->input->post('data');
			$data['rut'] = str_replace('.', '', $data['rut']);
			$id = $this->mantenedor_general_model->actualizar($data['id'], $data, 'usuarios');
			$error = $this->db->_error_number();
			if ($error == 1452) {
				$this->session->set_flashdata("mensaje_error", "No puede dejar en blanco la información de ");
				redirect('dashboard/usuarios/' . $data['id'] . '/edit');
			} else {
				redirect('dashboard/usuarios/' . $data['id'] . '/view');
			}
		}
		$data['button'] = array(
			'name'		 => 'continuar',
			'id' 		     => 'continuar',
			'value' 	     => 'Continuar',
			'class' 	     => 'btn-mant btn btn-small btn-primary',
			'type' 	     => 'submit',
			'content' 	 => ' Continuar '
		);
		//$data['perfiles_nombre'] = $this->prepara_dropdown($this->mantenedor_general_model->traer_tabla('perfiles', 'nombre'));
		$data['perfiles_nombre'] = $this->mantenedor_general_model->traer_todo('perfiles');


		$data['trabajadores_nombre'] = $this->prepara_dropdown($this->mantenedor_general_model->traer_tabla('trabajadores', 'nombres'));
		$data['rut'] = array(
			'name'        => 'data[rut]',
			'id'          => 'rut',
			'class'       => '',
			'maxlength'   => '45',
			'size'        => '45',
			'style'       => ''
		);

		$data['username'] = array(
			'name'        => 'data[username]',
			'id'          => 'username',
			'class'       => '',
			'maxlength'   => '145',
			'size'        => '145',
			'style'       => ''
		);

		$data['password'] = array(
			'name'        => 'data[password]',
			'id'          => 'password',
			'class'       => '',
			'maxlength'   => '145',
			'size'        => '145',
			'style'       => ''
		);

		$data['remember_token'] = array(
			'name'        => 'data[remember_token]',
			'id'          => 'remember_token',
			'class'       => '',
			'maxlength'   => '145',
			'size'        => '145',
			'style'       => ''
		);


		$data['ficha']    	 = $this->mantenedor_general_model->traer_ficha($usuarios_id, 'usuarios');

		$data['form_open']     = array(
			'class' => 'form_mant form_usuarios',
			'id'    => 'form_usuarios'
		);
		$data['hidden'] 	   = array('data[id]' => $usuarios_id);
		$data['current_usuarios'] 	= 'current';
		$data["mensaje_error"]    	 				= $this->session->flashdata("mensaje_error");
		$data['title'] 			 				= 'Gestión Usuarios - Editar';
		$data['breadcrumb'] 			            = 'Editar Usuarios';
		$data['main_content']		 				= 'mantenedores/mantenedor_usuarios_editar_view';
		$this->load->view(LAYOUT, $data);
	}

	function usuarios_ficha($usuarios_id)
	{
		$data['ficha']    	 = $this->mantenedor_general_model->traer_ficha($usuarios_id, 'usuarios');

		$data['ficha']->perfiles_nombre = $this->mantenedor_general_model->traer_nombre($data['ficha']->perfiles_id, 'perfiles', 'nombre');
		if (!empty($data['ficha']->trabajadores_id)) {
			$data['ficha']->trabajadores_nombre = $this->mantenedor_general_model->traer_nombre($data['ficha']->trabajadores_id, 'trabajadores', 'nombres');
		}


		$data['current_usuarios'] 	= 'current';
		$data["mensaje_error"]    	 = $this->session->flashdata("mensaje_error");
		$data['title'] 			 = 'Gestión Usuarios - Ficha';
		$data['breadcrumb'] 		 = 'Ficha Usuarios';
		$data['main_content']		 = 'mantenedores/mantenedor_usuarios_ficha_view';
		$this->load->view(LAYOUT, $data);
	}

	function usuarios_listar()
	{
		$data['buscar'] = array(
			'name'        => 'buscar',
			'id'          => 'buscar',
			'maxlength'   => '145',
			'size'        => '50',
		);
		$data['form_open']     = array(
			'class' => 'form_mant form_usuarios',
			'id'    => 'form_usuarios'
		);
		$data['ficha']         = $this->mantenedor_general_model->traer_todo('usuarios');

		foreach ($data['ficha'] as $key => $value) {

			$data['ficha'][$key]->perfiles_nombre = $this->mantenedor_general_model->traer_nombre($value->perfiles_id, 'perfiles', 'nombre');
			if (!empty($value->trabajadores_id)) {
				$data['ficha'][$key]->trabajadores_nombre = $this->mantenedor_general_model->traer_nombre($value->trabajadores_id, 'trabajadores', 'nombres');
			}
		}
		$data['current_usuarios'] 	= 'current';
		$data['hidden'] 	         = array('flag'     => 1);
		$data["mensaje_error"]    	 = $this->session->flashdata("mensaje_error");
		$data['title'] 			 = 'Gestión Usuarios - Listar';
		$data['breadcrumb'] 		 = 'Listar Usuarios';
		$data['main_content']		 = 'mantenedores/mantenedor_usuarios_listar_view';
		$this->load->view(LAYOUT, $data);
	}

	function eliminar_usuarios($usuarios_id)
	{
		$this->mantenedor_general_model->eliminar($usuarios_id, 'usuarios');
		$error = $this->db->_error_number();
		if ($error == 1451) {
			$this->session->set_flashdata("mensaje_error", "No se puede eliminar, hay referencias a este registro");
		}
		redirect('dashboard/usuarios/list');
	}

	function cambiar_password($usuarios_id)
	{
		$flag = $this->input->post('flag');
		if ($flag == 1) {
			$data = $this->input->post('data');

			if (empty($data['password']) && empty($data['password_confirm'])) {
				$this->session->set_flashdata("mensaje_error", "No puede dejar en blanco los campos.");
				redirect('dashboard/usuarios/password/' . $data['id']);
			}

			if ($data['password'] == $data['password_confirm']) {
				unset($data["password_confirm"]);
				$data["password"] = sha1($data["password"]);

				$this->mantenedor_general_model->actualizar($data['id'], $data, 'usuarios');

				$error = $this->db->_error_number();
				if (!$error) {
					redirect('dashboard/usuarios/' . $data['id'] . '/view');
				}
			} else {
				$this->session->set_flashdata("mensaje_error", "Las contraseñas no coinciden.");
				redirect('dashboard/usuarios/password/' . $data['id']);
			}
		}

		$data['button'] = array(
			'name'		 => 'continuar',
			'id' 		     => 'continuar',
			'value' 	     => 'Guardar',
			'class' 	     => 'btn-mant btn btn-small btn-primary',
			'type' 	     => 'submit',
			'content' 	 => ' Guardar '
		);

		$data['password'] = array(
			'name'        => 'data[password]',
			'id'          => 'password',
			'class'       => 'form-control',
			'maxlength'   => '45',
			'size'        => '45',
			'style'       => '',
			'type'		=> 'password'
		);

		$data['password_confirm'] = array(
			'name'        => 'data[password_confirm]',
			'id'          => 'password_confirm',
			'class'       => 'form-control',
			'maxlength'   => '45',
			'size'        => '45',
			'style'       => '',
			'type'		=> 'password'
		);

		$data['ficha']    	 = $this->mantenedor_general_model->traer_ficha($usuarios_id, 'usuarios');

		$data['form_open']     = array(
			'class' => 'form_mant form_staff',
			'id'    => 'form_staff'
		);
		$data['hidden'] 	   = array(
			'flag'     => 1,
			'data[id]' => $usuarios_id
		);

		$data['current_staff'] 					= 'active';
		$data["mensaje_error"]    	 			= $this->session->flashdata("mensaje_error");
		$data['title'] 			 				= 'Gestión Usuarios - Cambiar Contraseña';
		$data['breadcrumb'] 			        = 'Cambiar Contraseña';
		$data['main_content']					= 'mantenedores/mantenedor_usuarios_password_view';

		$this->load->view(LAYOUT, $data);
	}

	private function prepara_dropdown($data, $id = "id", $nombre = "nombres")
	{
		$result["seleccione"] = "Seleccione";
		foreach ($data as $key => $value) {
			$result[$value->$id] = $value->$nombre;
		}
		return $result;
	}
}