<?php /* $Id: m_mysql.php,v 1.35 2005/12/18 09:51:32 cam.lafit Exp $ ---------------------------------------------------------------------- AlternC - Web Hosting System Copyright (C) 2002 - 2010 by the AlternC Development Team. http://alternc.org/ ---------------------------------------------------------------------- Based on: Valentin Lacambre's web hosting softwares: http://altern.org/ ---------------------------------------------------------------------- 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: Camille Lafitte Purpose of file: Manage hook system. ---------------------------------------------------------------------- */ /** * MySQL user database management for AlternC. * This class manage user's databases in MySQL, and user's MySQL accounts. * * @copyright AlternC-Team 2002-2005 http://alternc.org/ */ class hooks { private $dir_hook = '/var/alternc/bureau/hooks/'; private $plugins = array(); /*---------------------------------------------------------------------------*/ /** Constructor * hooks([$mid]) Constructeur de la classe hooks, ne fait rien pour le moment */ function hooks() { } /** * execute un hook determiné */ function invoke() { $args = func_get_args(); $name = $args[0]; $data = $args[1]; $this->load_hooks(); return $this->run_hook($name,$data); } /* * charge l'ensemble des hooks disponibles * pas de gestion de cache, on charge tout à l'invocation */ private function load_hooks() { $numargs = func_num_args(); if ($numargs <> 0) return false; $args = func_get_args(); if (!is_dir($this->dir_hook)) return false; foreach(scandir($this->dir_hook) as $file) { if ($file === '.' || $file === '..') continue; $this->plugins[] = basename($file,'.php'); include($this->dir_hook.$file); } } /* * charge l'ensemble des fonctions disponible pour un hook donné */ private function run_hook() { $output = ''; $numargs = func_num_args(); if ($numargs <> 2) return false; $args = func_get_args(); $hook = $args[0]; foreach($this->plugins as $plugin) { if (function_exists($plugin."_".$hook)) $output .= call_user_func_array($plugin."_".$hook,array($args[1])); } return $output; } } /* Class hooks */ ?>