263 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			263 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
<?php
 | 
						|
 | 
						|
/*
 | 
						|
  $Id: m_messages.php,v 1.4 2004/05/19 14:23:06 benjamin Exp $
 | 
						|
  ----------------------------------------------------------------------
 | 
						|
  LICENSE
 | 
						|
 | 
						|
  This program is free software; you can redistribute it and/or
 | 
						|
  modify it under the terms of the GNU General Public License (GPL)
 | 
						|
  as published by the Free Software Foundation; either version 2
 | 
						|
  of the License, or (at your option) any later version.
 | 
						|
 | 
						|
  This program is distributed in the hope that it will be useful,
 | 
						|
  but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
						|
  GNU General Public License for more details.
 | 
						|
 | 
						|
  To read the license please visit http://www.gnu.org/copyleft/gpl.html
 | 
						|
  ----------------------------------------------------------------------
 | 
						|
  Original Author of file: Benjamin Sonntag, Franck Missoum
 | 
						|
  ----------------------------------------------------------------------
 | 
						|
 */
 | 
						|
 | 
						|
/**
 | 
						|
 * Classe de gestion des messages apparaissant lors d'appels API.
 | 
						|
 *
 | 
						|
 * <p>Cette classe gère les messages qui peuvent apparaitre lors d'appels
 | 
						|
 * à l'API d'AlternC. Ces msgs sont stockées sous la forme d'1 nombre
 | 
						|
 * (Classe ID) ainsi que du msg en associé.
 | 
						|
 * Des messages localisés sont aussi disponibles.</p>
 | 
						|
 * <p>Cette classe se charge aussi d'insérer les appels à l'API d'AlternC
 | 
						|
 * dans les logs du système dans /var/log/alternc/bureau.log
 | 
						|
 * </p>
 | 
						|
 * Copyleft {@link http://alternc.net/ AlternC Team}
 | 
						|
 * 
 | 
						|
 * @copyright    AlternC-Team 2002-11-01 http://alternc.net/
 | 
						|
 */
 | 
						|
class m_messages {
 | 
						|
 | 
						|
    /** Tableau qui va contenir les messages et leur id */
 | 
						|
    var $arrMessages = array();
 | 
						|
 | 
						|
    /** Emplacement du fichier de logs d'AlternC */
 | 
						|
    var $logfile = "/var/log/alternc/bureau.log";
 | 
						|
 | 
						|
    /** Liste of possible type */
 | 
						|
    var $ARRTYPES = array("ERROR", "ALERT", "INFO", "OK");
 | 
						|
 | 
						|
    /** Associate css classes */
 | 
						|
    var $ARRCSS = array(
 | 
						|
	"ERROR" => "alert-danger",
 | 
						|
	"ALERT" => "alert-warning",
 | 
						|
	"INFO" => "alert-info",
 | 
						|
	"OK" => "alert-success"
 | 
						|
    );
 | 
						|
 | 
						|
    public function __construct() {
 | 
						|
	$this->init_msgs();
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Enregistre un message, signale celle-ci dans les logs
 | 
						|
     * 
 | 
						|
     * Cette fonction enregistre un message, l'ajoute dans les logs d'AlternC, 
 | 
						|
     * et la met à disposition pour le bureau virtuel pour affichage ultérieur.
 | 
						|
     *
 | 
						|
     * @param string $cat The category of the msg array to work with
 | 
						|
     * @param integer $clsid Classe qui lève le message
 | 
						|
     * @param mixed $msg Message
 | 
						|
     * @param string $param Paramètre chaine associé au message (facultatif)
 | 
						|
     * @return boolean TRUE si le msg est enregistré, FALSE sinon.
 | 
						|
     *
 | 
						|
     */
 | 
						|
    function raise($cat = "Error", $clsid, $msg, $param = "") {
 | 
						|
	$arrInfos  = array();
 | 
						|
 | 
						|
	$type = strtoupper($cat);
 | 
						|
	if (! in_array($type, $this->ARRTYPES)) {
 | 
						|
	    return false;
 | 
						|
	}
 | 
						|
 | 
						|
	$arrInfos['clsid'] = $clsid;
 | 
						|
	$arrInfos['msg'] = $msg;
 | 
						|
	$arrInfos['param'] = is_array($param)?$param:(empty($param)?"":array($param));
 | 
						|
 | 
						|
	$this->arrMessages[$type][] = $arrInfos;
 | 
						|
 | 
						|
        $this->logAlternC($cat);
 | 
						|
        return true;
 | 
						|
    }
 | 
						|
 | 
						|
    function init_msgs() {
 | 
						|
	// Initialisation du tableau des message
 | 
						|
	foreach ($this->ARRTYPES as $v) {
 | 
						|
	    $this->arrMessages[$v] = array();
 | 
						|
	}
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Indique s'il y a ds msgs enregistrés pour une catégorie si le param $cat contient une catégorie
 | 
						|
     * ou pour toutesl es catégories si $cat est vide
 | 
						|
     *
 | 
						|
     * @param string $cat The category of the msg array to work with
 | 
						|
     * @return boolean True if there is/are msg recorded.
 | 
						|
     *
 | 
						|
     */
 | 
						|
    function has_msgs($cat) {
 | 
						|
	$type = strtoupper($cat);
 | 
						|
	if (in_array($type, $this->ARRTYPES)) {
 | 
						|
	    return (count($this->arrMessages[$type]) > 0);
 | 
						|
	} else {
 | 
						|
	    foreach ($this->arrMessages as $v) {
 | 
						|
		if (count($v) > 0)
 | 
						|
		    return true;
 | 
						|
	    }
 | 
						|
	    return false;
 | 
						|
	}
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Retourne la chaine de message concaténés de l'ensemble des msgs enregistrés
 | 
						|
     * ou du dernièr message rencontré
 | 
						|
     *
 | 
						|
     * @param string $cat The category of the msg array to work with
 | 
						|
     * @param string $sep The separator used to concatenate msgs
 | 
						|
     * @param boolean $all show all the messages or only the last one
 | 
						|
     *
 | 
						|
     * @return string Message.
 | 
						|
     *
 | 
						|
     */
 | 
						|
    function msg_str($cat = "Error", $sep = "<li>", $all = true) {
 | 
						|
	$str = "";
 | 
						|
 | 
						|
	$type = strtoupper($cat);
 | 
						|
	if (! in_array($type, $this->ARRTYPES)) {
 | 
						|
	    return false;
 | 
						|
	}
 | 
						|
 | 
						|
	if (! $this->has_msgs($cat))
 | 
						|
	    return "";
 | 
						|
 | 
						|
	if ($all) {
 | 
						|
	    foreach ($this->arrMessages[$type] as $k => $arrMsg) {
 | 
						|
		$args = $arrMsg['param'];
 | 
						|
 | 
						|
		if (is_array($args) && count($args) > 0) {
 | 
						|
		    array_unshift($args, $arrMsg['msg']);
 | 
						|
		    if ($sep == "<li>")
 | 
						|
		        $str .= "<li>" . call_user_func_array("sprintf", $args) . "</li>";
 | 
						|
		    else
 | 
						|
			$str .= call_user_func_array("sprintf", $args) . $sep;
 | 
						|
		} else
 | 
						|
		    if ($sep == "<li>")
 | 
						|
		        $str .= "<li>" . $arrMsg['msg'] . "</li>";
 | 
						|
		    else
 | 
						|
			$str .= $arrMsg['msg'] . $sep;
 | 
						|
            }
 | 
						|
 | 
						|
	    if ($sep == "<li>") 
 | 
						|
		$str = "<ul>".$str."</ul>";
 | 
						|
 | 
						|
	} else {
 | 
						|
	    $i = count($this->arrMessages[$type]) - 1;
 | 
						|
	    if ($i > 0) {
 | 
						|
		$arr_msg=$this->arrMessages[$type][$i];
 | 
						|
		$args = $arr_msg['param'];
 | 
						|
		if (is_array($args) && count($args) > 0) {
 | 
						|
		    array_unshift($args, $arr_msg['msg']);
 | 
						|
		    $str = call_user_func_array("sprintf", $args);
 | 
						|
		} else
 | 
						|
		    $str = $arr_msg['msgId'];
 | 
						|
	    }
 | 
						|
	}
 | 
						|
 | 
						|
	return $str;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Retourn le message au format Html avec la class Css associée
 | 
						|
     *
 | 
						|
     * @param string $cat The category of the msg array to work with
 | 
						|
     * @param string $sep The separator used to concatenate msgs
 | 
						|
     * @param boolean $all show all the messages or only the last one
 | 
						|
     *
 | 
						|
     * @return string HTML message
 | 
						|
     */
 | 
						|
    function msg_html($cat = "Error", $sep = "<li>", $all = true) {
 | 
						|
	$type = strtoupper($cat);
 | 
						|
	if (! in_array($type, $this->ARRTYPES)) {
 | 
						|
	    return false;
 | 
						|
	}
 | 
						|
 | 
						|
	if (count($this->arrMessages[$type]) == 0)
 | 
						|
	    return "";
 | 
						|
 | 
						|
	$str = $this->msg_str($cat, $sep, $all);
 | 
						|
	$str = "<div class='alert " . $this->ARRCSS[$type] . "'>" . $str . "</div>";
 | 
						|
 | 
						|
	return $str;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Retourn le message de toutes les catégories au format Html avec la class Css associée
 | 
						|
     *
 | 
						|
     * @param string $sep The separator used to concatenate msgs
 | 
						|
     * @param boolean $all show all the messages or only the last one
 | 
						|
     *
 | 
						|
     * @return string HTML message
 | 
						|
     */
 | 
						|
    function msg_html_all($sep = "<li>", $all = true, $init = false) {
 | 
						|
	$msg="";
 | 
						|
 | 
						|
	$msg.=$this->msg_html("Error", $sep, $all);
 | 
						|
	$msg.=$this->msg_html("Ok", $sep, $all);
 | 
						|
	$msg.=$this->msg_html("Info", $sep, $all);
 | 
						|
	$msg.=$this->msg_html("Alert", $sep, $all);
 | 
						|
 | 
						|
	if ($init)
 | 
						|
		$this->init_msgs();
 | 
						|
 | 
						|
	return $msg;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Envoi un log dans /var/log/alternc/bureau.log
 | 
						|
     *
 | 
						|
     * Cette fonction Loggue le dernier msg dans /var/log sur la machine,
 | 
						|
     * permettant ainsi aux admins de savoir ce qu'il se passe...
 | 
						|
     * Elle est appelée automatiquement par error
 | 
						|
     * @access private
 | 
						|
     */
 | 
						|
    function logAlternC($cat = "Error") {
 | 
						|
        global $mem;
 | 
						|
 | 
						|
	$type = strtoupper($cat);
 | 
						|
	if (! in_array($type, $this->ARRTYPES)) {
 | 
						|
	    return false;
 | 
						|
	}
 | 
						|
 | 
						|
        @file_put_contents($this->logfile, date("d/m/Y H:i:s") . " - " . get_remote_ip() . " - $type - " . $mem->user["login"] . " - " . $this->msg_str($cat, "", false), FILE_APPEND);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Envoi un log d'appel d'API dans /var/log/alternc/bureau.log
 | 
						|
     *
 | 
						|
     * Cette fonction loggue dans /var/log l'appel à la fonction de l'API
 | 
						|
     * d'AlternC.
 | 
						|
     *
 | 
						|
     * @param integer $clsid Numéro de la classe dont on a appelé une fonction
 | 
						|
     * @param string $function Nom de la fonction appelée
 | 
						|
     * @param string $param Paramètre (facultatif) passés à la fonction de l'API.
 | 
						|
     * @return boolean TRUE si le log a été ajouté, FALSE sinon
 | 
						|
     *
 | 
						|
     */
 | 
						|
    function log($clsid, $function, $param = "") {
 | 
						|
        global $mem;
 | 
						|
        return @file_put_contents($this->logfile, date("d/m/Y H:i:s") . " - " . get_remote_ip() . " - CALL - " . $mem->user["login"] . " - $clsid - $function - $param\n", FILE_APPEND);
 | 
						|
    }
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
/* Classe m_messages */
 |