Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/IvBanzaga/Refugio/llms.txt

Use this file to discover all available pages before exploring further.

Overview

User management functions handle CRUD operations for users, including listing, creating, updating, deleting, and exporting user data.

Core Functions

listar_usuarios

Retrieve all users from the database.
conexion
PDO
required
Database connection object
return
array
Array of user objects, ordered by ID. Returns empty array on error.

SQL Query

SELECT id, num_socio, dni, telf, email, nombre, apellido1, apellido2, rol 
FROM usuarios 
ORDER BY id

obtener_usuario

Get a specific user by their ID.
conexion
PDO
required
Database connection object
id
int
required
User ID
return
array|false
User data array on success, false on failure

Code Example

$user = obtener_usuario($conexion, 5);
if ($user) {
    echo $user['nombre'] . ' ' . $user['apellido1'];
}

crear_usuario

Create a new user account with hashed password.
conexion
PDO
required
Database connection object
datos
array
required
User data array containing:
  • num_socio - Member number
  • dni - National ID
  • telf - Phone number
  • email - Email address
  • nombre - First name
  • apellido1 - First surname
  • apellido2 - Second surname
  • password - Plain text password (will be hashed)
  • rol - User role (admin/socio)
return
bool
True on success, false on failure

Code Example

$datos = [
    'num_socio' => '12345',
    'dni' => '12345678A',
    'telf' => '600123456',
    'email' => 'nuevo@example.com',
    'nombre' => 'Juan',
    'apellido1' => 'García',
    'apellido2' => 'López',
    'password' => 'securePassword123',
    'rol' => 'socio'
];

if (crear_usuario($conexion, $datos)) {
    echo "Usuario creado exitosamente";
}

Password Hashing

$password_hash = password_hash($datos['password'], PASSWORD_BCRYPT);

actualizar_usuario

Update an existing user’s information.
conexion
PDO
required
Database connection object
id
int
required
User ID to update
datos
array
required
User data array (same fields as crear_usuario). Password is optional - if empty, it won’t be updated.
return
bool
True on success, false on failure

Code Example

// Update without changing password
$datos = [
    'num_socio' => '12345',
    'dni' => '12345678A',
    'telf' => '600999888',  // Updated phone
    'email' => 'updated@example.com',  // Updated email
    'nombre' => 'Juan',
    'apellido1' => 'García',
    'apellido2' => 'López',
    'password' => '',  // Empty - won't update password
    'rol' => 'socio'
];

actualizar_usuario($conexion, 5, $datos);

eliminar_usuario

Delete a user from the system.
conexion
PDO
required
Database connection object
id
int
required
User ID to delete
return
bool
True on success, false on failure
This operation is permanent and cannot be undone. Consider the impact on related reservations.

Advanced Functions

listar_usuarios_paginado

List users with pagination, search, and sorting capabilities.
conexion
PDO
required
Database connection object
filtros
array
default:"[]"
Filter options:
  • page (int) - Page number (default: 1)
  • limit (int) - Items per page (default: 10)
  • search (string) - Search term
  • order_by (string) - Column to sort by (num_socio, nombre, email, dni, rol)
  • order_dir (string) - Sort direction (ASC/DESC)
return
array
Array of filtered and paginated users

Code Example

$filtros = [
    'page' => 1,
    'limit' => 20,
    'search' => 'garcía',
    'order_by' => 'nombre',
    'order_dir' => 'ASC'
];

$usuarios = listar_usuarios_paginado($conexion, $filtros);
$total = contar_usuarios($conexion, ['search' => 'garcía']);

SQL Query Structure

SELECT id, num_socio, dni, telf, email, nombre, apellido1, apellido2, rol
FROM usuarios
WHERE 1=1
  AND (nombre LIKE :search OR apellido1 LIKE :search OR ...)
ORDER BY nombre ASC
LIMIT 20 OFFSET 0

contar_usuarios

Count total users matching the search criteria.
conexion
PDO
required
Database connection object
filtros
array
default:"[]"
Filter options:
  • search (string) - Search term
return
int
Total number of users matching the criteria

export_usuarios_csv

Export users to a CSV file with filtering and sorting.
conexion
PDO
required
Database connection object
filtros
array
default:"[]"
Filter options:
  • search (string) - Search term
  • order_by (string) - Column to sort by
  • order_dir (string) - Sort direction (ASC/DESC)
return
void
Outputs CSV file directly to browser and exits. File format includes UTF-8 BOM and semicolon delimiters.

Code Example

$filtros = [
    'search' => '',
    'order_by' => 'num_socio',
    'order_dir' => 'ASC'
];

export_usuarios_csv($conexion, $filtros);
// Script execution ends here

CSV Output Headers

header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename="usuarios_' . date('Y-m-d_H-i-s') . '.csv"');

Profile Management

obtener_info_usuario

Get complete user information including profile photo.
conexion
PDO
required
Database connection object
id_usuario
int
required
User ID
return
array|false
User info array including foto_perfil field, or false on error

actualizar_perfil_usuario

Update user’s email and phone number.
conexion
PDO
required
Database connection object
id_usuario
int
required
User ID
email
string
required
New email address
telf
string
required
New phone number
return
array
Result array:
  • exito (bool) - Success status
  • mensaje (string) - Result message

Code Example

$resultado = actualizar_perfil_usuario($conexion, 5, 'new@example.com', '666777888');
if ($resultado['exito']) {
    echo $resultado['mensaje'];
}

Profile Photo Functions

subir_foto_perfil

Upload and validate a user profile photo.
conexion
PDO
required
Database connection object
id_usuario
int
required
User ID
file
array
required
$_FILES array from file upload
return
array
Result array:
  • exito (bool) - Success status
  • mensaje (string) - Result message
  • ruta (string|null) - File path if successful

Validation Rules

  • Maximum size: 5MB
  • Allowed formats: JPEG, JPG, PNG, GIF
  • File must pass getimagesize() validation

Code Example

if (isset($_FILES['foto'])) {
    $resultado = subir_foto_perfil($conexion, $_SESSION['user_id'], $_FILES['foto']);
    if ($resultado['exito']) {
        echo "Foto guardada en: " . $resultado['ruta'];
    } else {
        echo "Error: " . $resultado['mensaje'];
    }
}

obtener_foto_perfil

Get the profile photo path for a user.
conexion
PDO
required
Database connection object
id_usuario
int
required
User ID
return
string|null
Relative path to profile photo, or null if no photo exists

eliminar_foto_perfil

Delete a user’s profile photo.
conexion
PDO
required
Database connection object
id_usuario
int
required
User ID
return
array
Result array:
  • exito (bool) - Success status
  • mensaje (string) - Result message

Code Example

$resultado = eliminar_foto_perfil($conexion, 5);
if ($resultado['exito']) {
    echo "Foto eliminada correctamente";
}

Build docs developers (and LLMs) love