1: <?php
2: /*************************************************************************************/
3: /* */
4: /* Thelia */
5: /* */
6: /* Copyright (c) OpenStudio */
7: /* email : info@thelia.net */
8: /* web : http://www.thelia.net */
9: /* */
10: /* This program is free software; you can redistribute it and/or modify */
11: /* it under the terms of the GNU General Public License as published by */
12: /* the Free Software Foundation; either version 3 of the License */
13: /* */
14: /* This program is distributed in the hope that it will be useful, */
15: /* but WITHOUT ANY WARRANTY; without even the implied warranty of */
16: /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
17: /* GNU General Public License for more details. */
18: /* */
19: /* You should have received a copy of the GNU General Public License */
20: /* along with this program. If not, see <http://www.gnu.org/licenses/>. */
21: /* */
22: /*************************************************************************************/
23:
24: namespace Thelia\Log;
25:
26: abstract class AbstractTlogDestination
27: {
28: //Tableau de TlogDestinationConfig paramétrant la destination
29: protected $_configs;
30:
31: //Tableau des lignes de logs stockés avant utilisation par ecrire()
32: protected $_logs;
33:
34: // Vaudra true si on est dans le back office.
35: protected $flag_back_office = false;
36:
37: public function __construct()
38: {
39: $this->_configs = array();
40: $this->_logs = array();
41:
42: // Initialiser les variables de configuration
43: $this->_configs = $this->getConfigs();
44:
45: // Appliquer la configuration
46: $this->configure();
47: }
48:
49: //Affecte une valeur à une configuration de la destination
50: public function setConfig($name, $value)
51: {
52: foreach ($this->_configs as $config) {
53: if ($config->name == $name) {
54: $config->value = $value;
55: // Appliquer les changements
56: $this->configure();
57:
58: return true;
59: }
60: }
61:
62: return false;
63: }
64:
65: //Récupère la valeur affectée à une configuration de la destination
66: public function getConfig($name)
67: {
68: foreach ($this->_configs as $config) {
69: if ($config->name == $name) {
70: return $config->value;
71: }
72: }
73:
74: return false;
75: }
76:
77: public function getConfigs()
78: {
79: return $this->_configs;
80: }
81:
82: public function SetBackOfficeMode($bool)
83: {
84: $this->flag_back_office = $bool;
85: }
86:
87: //Ajoute une ligne de logs à la destination
88: public function add($string)
89: {
90: $this->_logs[] = $string;
91: }
92:
93: protected function InsertAfterBody(&$res, $logdata)
94: {
95: $match = array();
96:
97: if (preg_match("/(<body[^>]*>)/i", $res, $match)) {
98: $res = str_replace($match[0], $match[0] . "\n" . $logdata, $res);
99: } else {
100: $res = $logdata . $res;
101: }
102: }
103:
104: // Demande à la destination de se configurer pour être prête
105: // a fonctionner. Si $config est != false, celà indique
106: // que seul le paramètre de configuration indiqué a été modifié.
107: protected function configure()
108: {
109: // Cette methode doit etre surchargée si nécessaire.
110: }
111:
112: //Lance l'écriture de tous les logs par la destination
113: //$res : contenu de la page html
114: abstract public function write(&$res);
115:
116: // Retourne le titre de cette destination, tel qu'affiché dans le menu de selection
117: abstract public function getTitle();
118:
119: // Retourne une brève description de la destination
120: abstract public function getDescription();
121: }
122: