#!/bin/sh

#-------------------------------------------------------------------------------
# Write log messages in the log file
# Messages are written only if EFPLUGIN_NULLFILE
# is defined and is equal to a real file path
#
# Parameter 1: log level (application defined)
# Parameter 2: log message
#-------------------------------------------------------------------------------
efplugin_log() {
  _loglevel="${1}"
  _logmessage="${2}"
  _logtimestamp="`date '+%Y/%m/%d %H:%M:%S'`"
  echo "[${_logtimestamp}] [${_loglevel}] ${_logmessage}" >> "${EFPLUGIN_NULLFILE}"
  return 0
}


#-------------------------------------------------------------------------------
# Send a INFO message to plugin log
#
# Logs first parameter at INFO level
#-------------------------------------------------------------------------------
log_info() {
  msg="${EF_PLUGIN_NAME}"
  if [ -n "${EF_PLUGIN_ACTION}" ]
  then
    msg="${EF_PLUGIN_NAME} during ${EF_PLUGIN_ACTION}"
  fi
  efplugin_log "INFO" "(${msg}): $1"
}


#-------------------------------------------------------------------------------
# Send a WARN message to plugin log
#
# Logs first parameter at WARN level
#-------------------------------------------------------------------------------
log_warn() {
  msg="${EF_PLUGIN_NAME}"
  if [ -n "${EF_PLUGIN_ACTION}" ]
  then
    msg="${EF_PLUGIN_NAME} during ${EF_PLUGIN_ACTION}"
  fi
  efplugin_log "WARN" "(${msg}): $1"
}


#-------------------------------------------------------------------------------
# Send a ERROR message to plug-in log
#
# Logs first parameter at ERROR level
#-------------------------------------------------------------------------------

log_error() {
  msg="${EF_PLUGIN_NAME}"
  if [ -n "${EF_PLUGIN_ACTION}" ]
  then
    msg="${EF_PLUGIN_NAME} during ${EF_PLUGIN_ACTION}"
  fi
  efplugin_log "ERROR" "(${msg}): $1"
}


#-------------------------------------------------------------------------------
# Send a DEBUG message to plugin log
#
# Logs first parameter at DEBUG level
#-------------------------------------------------------------------------------
log_debug() {
  msg="${EF_PLUGIN_NAME}"
  if [ -n "${EF_PLUGIN_ACTION}" ]
  then
    msg="${EF_PLUGIN_NAME} during ${EF_PLUGIN_ACTION}"
  fi
  efplugin_log "DEBUG" "(${msg}): $1"
}

if [ -z "${EFPLUGIN_NULLFILE}" ]; then
    #-------------------------------------------------------------------------------
    # Define the plugin log file and set EFPLUGIN_NULLFILE variable
    #-------------------------------------------------------------------------------
    if [ -z "${EF_SESSION_TRACE_LOGFILE}" -a -n "${EF_PLUGIN_DEBUG}" -a "${EF_PLUGIN_DEBUG}" = "true" ]; then
        EFPLUGIN_DATETIME="`date '+%Y-%m-%d'`"
        if [ -n "${EF_PLUGIN_FILE}" ]; then
            LOG_PREFIX="${EF_PLUGIN_FILE}"
        else
            LOG_PREFIX="EFPlugin"
        fi
    
        if [ -n "${EF_PLUGIN_ROOT}" ]; then
            EF_USER_LOGS="${EF_PLUGIN_ROOT}/logs/${EF_USER}"
        else
            EF_USER_LOGS="/tmp/logs/${EF_USER}"
        fi
        EFPLUGIN_NULLFILE="${EF_USER_LOGS}/${LOG_PREFIX}_${EFPLUGIN_DATETIME}.log"
        if [ ! -d "${EF_USER_LOGS}" ]; then
            mkdir -p "${EF_USER_LOGS}"
            chmod 700 "${EF_USER_LOGS}"
            touch "${EFPLUGIN_NULLFILE}"
            chmod 600 "${EFPLUGIN_NULLFILE}"
        fi
    elif [ -f "${EF_SESSION_TRACE_LOGFILE}" ]; then
        EFPLUGIN_NULLFILE="${EF_SESSION_TRACE_LOGFILE}"
    else
        EFPLUGIN_NULLFILE="/dev/null"
    fi
    export EFPLUGIN_NULLFILE
fi
