seeddms-code/inc/inc.Extension.php

73 lines
2.3 KiB
PHP

<?php
/**
* Initialize extensions
*
* @category DMS
* @package SeedDMS
* @license GPL 2
* @version @version@
* @author Markus Westphal, Malcolm Cowe, Uwe Steinmann <uwe@steinmann.cx>
* @copyright Copyright (C) 2013 Uwe Steinmann
* @version Release: @package_version@
*/
require_once "inc.ClassExtensionMgr.php";
require_once "inc.ClassExtBase.php";
// Do not set a namespace until all extensions use that namespace
// or set the class name in the conf file to '\xxxx'
//namespace Seeddms\Seeddms;
use Seeddms\Seeddms\ExtensionMgr;
class_alias('Seeddms\Seeddms\ExtensionMgr', 'SeedDMS_Extension_Mgr');
/* Declare an alias as long as it used by extensions */
class_alias('Seeddms\Seeddms\ExtensionBase', 'SeedDMS_ExtBase');
$extmgr = new ExtensionMgr($settings->_rootDir."/ext", $settings->_cacheDir, $settings->_repositoryUrl, $settings->_proxyUrl, $settings->_proxyUser, $settings->_proxyPassword);
foreach($extmgr->getExtensionConfiguration() as $extname=>$extconf) {
if($extconf['disable']) {
$settings->disableExtension($extname);
continue;
}
if(!$settings->extensionIsDisabled($extname)) {
$disabled = false;
if($extmgr->checkExtensionByName($extname, $extconf)) {
$disabled = false;
$settings->enableExtension($extname);
} else {
$disabled = true;
$settings->disableExtension($extname);
// echo $extmgr->getErrorMsg();
}
if(!$disabled) {
if(isset($extconf['class']) && isset($extconf['class']['file']) && isset($extconf['class']['name'])) {
$classfile = $settings->_rootDir."/ext/".$extname."/".$extconf['class']['file'];
if(file_exists($classfile)) {
include($classfile);
$obj = new $extconf['class']['name']($settings, null, $logger);
if(method_exists($obj, 'init'))
$obj->init($extmgr);
}
}
if(isset($extconf['language']['file'])) {
$langfile = $settings->_rootDir."/ext/".$extname."/".$extconf['language']['file'];
if(file_exists($langfile)) {
unset($__lang);
include($langfile);
if(isset($__lang) && $__lang) {
foreach($__lang as $lang=>&$data) {
$translator->addPhrases($lang, $data);
}
}
}
}
}
} else {
// Ensure $settings->_extensions has an entry for the extension, even if
// the extension is disabled already.
$settings->disableExtension($extname);
}
}