functions.inc 49.12 KiB
<?php
/*
  This code is part of FusionDirectory (http://www.fusiondirectory.org/)
  Copyright (C) 2003-2010  Cajus Pollmeier
  Copyright (C) 2011-2016  FusionDirectory
  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License 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.
  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
/*!
 * \file functions.inc
 *  Common functions and named definitions.
/* Define common locations and variables */
require_once('variables.inc');
/* Include required files */
require_once(CACHE_DIR.'/'.CLASS_CACHE);
require_once('functions_debug.inc');
require_once('accept-to-gettext.inc');
/* Define constants for debugging */
define('DEBUG_TRACE',    1); /*! Debug level for tracing of common actions (save, check, etc.) */
define('DEBUG_LDAP',     2); /*! Debug level for LDAP queries */
define('DEBUG_DB',       4); /*! Debug level for database operations */
define('DEBUG_SHELL',    8); /*! Debug level for shell commands */
define('DEBUG_POST',     16); /*! Debug level for POST content */
define('DEBUG_SESSION',  32); /*! Debug level for SESSION content */
define('DEBUG_CONFIG',   64); /*! Debug level for CONFIG information */
define('DEBUG_ACL',      128); /*! Debug level for ACL infos */
define('DEBUG_SI',       256); /*! Debug level for communication with Argonaut */
define('DEBUG_MAIL',     512); /*! Debug level for all about mail (mailAccounts, imap, sieve etc.) */
define('DEBUG_FAI',      1024); /* FAI (incomplete) */
/* Define constants for LDAP operations */
define('LDAP_READ',   1);
define('LDAP_ADD',    2);
define('LDAP_MOD',    3);
define('LDAP_DEL',    4);
define('LDAP_SEARCH', 5);
define('LDAP_AUTH',   6);
/*!
 * \brief Does autoloading for classes used in FusionDirectory.
 *  Takes the list generated by 'fusiondirectory-setup' and loads the
 *  file containing the requested class.
 *  \param array $class_name list of class name
function __fusiondirectory_autoload ($class_name)
  global $class_mapping, $BASE_DIR, $config;
  if ($class_mapping === NULL) {
    if (isset($config) && is_object($config) &&
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
$config->get_cfg_value('displayerrors') == 'TRUE') { list($trace, ) = html_trace(); echo $trace; echo "<br/>\n"; } echo sprintf(_("Fatal error: no class locations defined - please run '%s' to fix this"), "<b>fusiondirectory-setup --update-cache</b>"); exit; } /* Do not try to autoload smarty classes */ if (strpos($class_name, 'Smarty_') === 0) { return; } if (isset($class_mapping["$class_name"])) { require_once($BASE_DIR.'/'.$class_mapping["$class_name"]); } else { logging::debug(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $class_name, 'Could not load'); if (isset($config) && is_object($config) && $config->get_cfg_value('displayerrors') == 'TRUE') { list($trace, ) = html_trace(); echo $trace; echo "<br/>\n"; } echo sprintf(_("Fatal error: cannot instantiate class '%s' - try running '%s' to fix this"), $class_name, "<b>fusiondirectory-setup --update-cache</b>"); exit; } } spl_autoload_register('__fusiondirectory_autoload'); /*! * \brief Checks if a class is available. * * \param string $name The subject of the test * * \return boolean Return TRUE if successfull FALSE otherwise */ function class_available ($name) { global $class_mapping; return isset($class_mapping[$name]); } /*! * \brief Check if plugin is available * * Checks if a given plugin is available and readable. * * \param string $plugin the subject of the check * * \return boolean Return TRUE if successfull FALSE otherwise */ function plugin_available ($plugin) { global $class_mapping, $BASE_DIR; if (!isset($class_mapping[$plugin])) { return FALSE; } else { return is_readable($BASE_DIR.'/'.$class_mapping[$plugin]); } } /*! * \brief Debug level action * * Print a DEBUG level if specified debug level of the level matches the * the configured debug level.