#!/bin/bash
# Última modificación: [arturo@2020-4-1]
# Cierra y Elimina toda la información de los navegadores Web:

FICHFUNCS="/usr/bin/vx-funcs-bash"
[ -f "${FICHFUNCS}" ] && . "${FICHFUNCS}" "null"

# 1) Preparamos la auditoria del servicio:
LOG="vx-resetear-libreoffice.log"
vx-log_xsession -o "${LOG}"

vx-colorear_echo "magenta" "[$(vx-fecha)] Reseteamos libreoffice" | sudo vx-auditar-syslog

# 1) Comenzamos cerrando las posibles sesiones abiertas de libreoffice:
# Lista de procesos conocidos de LibreOffice
LO_PROCS=(
    soffice
    soffice.bin
    oosplash
)
# Matar procesos si existen
for APP in "${LO_PROCS[@]}"; do
    pkill -9 -f "${APP}" 2>/dev/null  && \
    echo "=> Se han cerrado las ventanas abiertas de ${APP} ..." || \
    echo "=> No había ninguna ventana abierta en ${APP} ..." || true
done

# Esperar un momento
sleep 1

# 2) Eliminamos los datos almacenados por los navegadores de los usuarios:
# 2.1) Si no se pasan parámetros y lo llama el usuario root se resetean los navegadores de todos los usuarios gráficos
# 2.2) Si no se pasan parámetros y no lo llama el usuario root se resetean los navegadores del usuario gráfico actual
# 2.3) Si se le pasan ususarios como parámetros resetea únicamente los de esos usuarios
# USUARIO="$(whoami)"
# if [[ ! -z "${1}" && "${USUARIO}" == "root" && "${1}" == "-ug" ]] ; then
#     LISTA_USUARIOS=("$(vx-usuario-grafico)")
#     elif [[ ! -z "${1}" && "${USUARIO}" == "root" && "${1}" == "-u" ]] ; then
#     # -u: Se pasa como segundo parámetro una lista de usuarios separados por comas:
#     LISTA_USUARIOS=(${2//,/ })
#     elif [[ ! -z "${1}" && "${USUARIO}" == "root" && "${1}" == "-g" ]] ; then
#     # -g: Se pasa como segundo parámetro una lista de grupos separados por comas:
#     LISTA_GRUPOS=(${2//,/ })
#     for GRUPO in ${LISTA_GRUPOS[@]} ; do
#         vx-funcs-users vx-check_exit_groups "${GRUPO}" && \
#         LISTA_USUARIOS+=($(members "${GRUPO}"))
#     done
#     elif [[ ! -z "${1}" && "${USUARIO}" == "root" ]] ; then
#     LISTA_USUARIOS=("${@}")
#     elif [[ "${USUARIO}" == "root" ]] ; then
#     LISTA_USUARIOS=($(vx-usuarios-graficos))
# else
#     LISTA_USUARIOS=("${USUARIO}")
# fi

# Los parámetros recibidos para determinar la lista de usuarios afectados puede ser:
# 1) -ug => devolvería el usuario gráfico actual
# 2) -u usu1,usu2,usu3,... => devolvería la lista de que usuarios indicados son reales
# 3) -g grupo1,grupo2,... => devolvería la lista de que usuarios forman parte de esos grupos
# 4) usu1 usu2 usu3 ... => devolvería la lista de usuarios indicados que son reales
# 5) [sin parámetros] => devolvería la lista de todos los usuarios gráficos si el ejecutor es root, o el usuario que ejecuta si no es root
LISTA_USUARIOS=($(vx-funcs-users vx-obtener_lista_usuarios "${@}"))

for USU in ${LISTA_USUARIOS[@]} ; do
    # Comprobamos que el usuario existe y cual es su HOME: (lo hace la función vx-obtener_lista_usuarios)
    # vx-funcs-users vx-check_exit_users "${USU}" && \
    # HOMEUSU="$(vx-home-usuario-grafico "${USU}")" || \
    # continue
    HOMEUSU="$(vx-home-usuario-grafico "${USU}")"
    # Directorios a resetear
    DIRS=(
        "$HOMEUSU/.cache/libreoffice"
        "$HOMEUSU/.local/share/libreoffice"
    )
    for DIR in "${DIRS[@]}"; do
        [[ -d "${DIR}" ]] && \
        rm -Rf "${DIR}" && \
        echo "#> {DIR} => Eliminado"
    done
    
    rsync -ah --delete --chown="${PROPIETARIO}" "/etc/skel/.config/libreoffice" "$HOMEUSU/.config/" &&
    vx-colorear_echo "verde" "=> OK: Se ha reseteado: /etc/skel/.config/libreoffice => $HOMEUSU/.config/"
done

# Mostramos una notificación al usuario gráfico:
TITULO="Resetear Libreoffice"
MENSAJE="Se ha limpiado toda la Suite Ofimática"
(( ${#AFECTADOS[@]} != 0 )) && \
vx-detectar_gui && \
notify-send -i vitalinux "${TITULO}" "${MENSAJE}"

exit 0