mirror of
https://github.com/EGroupware/egroupware.git
synced 2025-01-19 12:28:38 +01:00
133 lines
3.4 KiB
PHP
133 lines
3.4 KiB
PHP
<?php
|
|
/**
|
|
* EGroupware API - Applications
|
|
*
|
|
* @link http://www.egroupware.org
|
|
* This file was originaly written by Dan Kuykendall and Joseph Engo
|
|
* Copyright (C) 2000, 2001 Dan Kuykendall
|
|
* Parts Copyright (C) 2003 Free Software Foundation
|
|
* @author RalfBecker@outdoor-training.de
|
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
|
* @package api
|
|
* @subpackage egw
|
|
* @version $Id$
|
|
*/
|
|
|
|
namespace EGroupware\Api\Egw;
|
|
|
|
use EGroupware\Api;
|
|
|
|
/**
|
|
* Base object used in setup, does not instanciate anything by default
|
|
*
|
|
* Extending Egw\Base which uses now a getter method to create the usual subobject on demand,
|
|
* to allow a quicker header include on sites not using php4-restore.
|
|
* This also makes a lot of application code, like the following, unnecessary:
|
|
* if (!is_object($GLOBALS['egw']->ldap)
|
|
* {
|
|
* $GLOBALS['egw']->ldap = Api\Ldap::factory();
|
|
* }
|
|
* You can now simply use $GLOBALS['egw']->ldap, and the egw class instanciates it for you on demand.
|
|
*/
|
|
class Base
|
|
{
|
|
/**
|
|
* Instance of the db-object
|
|
*
|
|
* @var Api\Db
|
|
*/
|
|
var $db;
|
|
/**
|
|
* Current app at the instancation of the class
|
|
*
|
|
* @var string
|
|
*/
|
|
var $currentapp;
|
|
/**
|
|
* Global ADOdb object, need to be defined here, to not call magic __get method
|
|
*
|
|
* @var \ADOConnection
|
|
*/
|
|
var $ADOdb;
|
|
|
|
var $system_charset = 'utf-8';
|
|
|
|
/**
|
|
* Classes which get instanciated in a different name
|
|
*
|
|
* @var array
|
|
*/
|
|
static $sub_objects = array(
|
|
'log' => 'errorlog',
|
|
'link' => 'bolink', // depricated use static egw_link methods
|
|
'datetime' => 'egw_datetime',
|
|
// classes moved to new api dir
|
|
'template' => true,
|
|
'applications' => 'EGroupware\\Api\\Egw\\Applications',
|
|
'framework' => true, // special handling in __get()
|
|
'ldap' => true,
|
|
);
|
|
|
|
/**
|
|
* Magic function to check if a sub-object is set
|
|
*
|
|
* @param string $name
|
|
* @return boolean
|
|
*/
|
|
function __isset($name)
|
|
{
|
|
//error_log(__METHOD__."($name)");
|
|
return isset($this->$name);
|
|
}
|
|
|
|
/**
|
|
* Magic function to return a sub-object
|
|
*
|
|
* @param string $name
|
|
* @return mixed
|
|
*/
|
|
function __get($name)
|
|
{
|
|
//error_log(__METHOD__."($name)".function_backtrace());
|
|
|
|
if ($name == 'js') $name = 'framework'; // javascript class is integrated now into framework
|
|
|
|
if (isset($this->$name))
|
|
{
|
|
return $this->$name;
|
|
}
|
|
|
|
if (!isset(self::$sub_objects[$name]) && !class_exists('EGroupware\\Api\\'.ucfirst($name)) && !class_exists($name))
|
|
{
|
|
if ($name != 'ADOdb') error_log(__METHOD__.": There's NO $name object! ".function_backtrace());
|
|
return null;
|
|
}
|
|
switch($name)
|
|
{
|
|
case 'framework':
|
|
return $this->framework = Api\Framework::factory();
|
|
case 'template': // need to be instancated for the current app
|
|
try {
|
|
return $this->template = new Api\Framework\Template(Api\Framework\Template::get_dir($this->currentapp));
|
|
}
|
|
catch (Api\Exception\WrongParameter $e) {
|
|
unset($e);
|
|
return null;
|
|
}
|
|
case 'session':
|
|
$class = file_exists(EGW_SERVER_ROOT.'/phpgwapi') ? 'egw_session' : 'EGroupware\\Api\\Session';
|
|
break;
|
|
case 'accounts':
|
|
$class = file_exists(EGW_SERVER_ROOT.'/phpgwapi') ? 'accounts' : 'EGroupware\\Api\\Accounts';
|
|
break;
|
|
case 'ldap':
|
|
return $this->ldap = Api\Ldap::factory(false);
|
|
default:
|
|
$class = isset(self::$sub_objects[$name]) ? self::$sub_objects[$name] : 'EGroupware\\Api\\'.ucfirst($name);
|
|
if (!class_exists($class)) $class = $name;
|
|
break;
|
|
}
|
|
return $this->$name = new $class();
|
|
}
|
|
}
|