system\plugin.php
Plugin loader
- copyright
- (c) Cotonti Team
- license
- https://github.com/Cotonti/Cotonti/blob/master/License.txt
<?php
/**
* Plugin loader
*
* @package Cotonti
* @copyright (c) Cotonti Team
* @license https://github.com/Cotonti/Cotonti/blob/master/License.txt
*/
defined('COT_CODE') or die('Wrong URL');
// Input import
$e = cot_import('e', 'G', 'ALP');
$o = cot_import('o', 'G', 'ALP');
$r = (isset($_POST['r'])) ? cot_import('r','P','ALP') : cot_import('r','G','ALP');
$c1 = cot_import('c1', 'G', 'ALP');
$c2 = cot_import('c2', 'G', 'ALP');
if (!empty($o))
{
$extname = $o;
$exthook = 'popup';
$ext_display_header = false;
$path_skin = cot_tplfile(array('popup', $extname));
$autoassigntags = true;
}
elseif (!empty($r))
{
$extname = $r;
$exthook = 'ajax';
$ext_display_header = false;
$path_skin = '';
$autoassigntags = false;
}
elseif (!empty($e))
{
$extname = $e;
$exthook = 'standalone';
$ext_display_header = true;
$path_skin = cot_tplfile($extname, 'plug');
$autoassigntags = false;
if (!file_exists($path_skin))
{
$path_skin = cot_tplfile(array('plugin', $extname));
$autoassigntags = true;
}
}
else
{
cot_die_message(404);
}
if (!file_exists($cfg['plugins_dir'] . '/' . $extname))
{
cot_die_message(404);
}
// Initial permission check
list($usr['auth_read'], $usr['auth_write'], $usr['isadmin']) = cot_auth('plug', $env['ext']);
cot_block($usr['auth_read']);
// Plugin requirements autoloading
$req_files = array();
$req_files[] = cot_langfile($extname, 'plug');
$req_files[] = cot_incfile($extname, 'plug', 'resources');
$req_files[] = cot_incfile($extname, 'plug', 'functions');
foreach ($req_files as $req_file)
{
if (file_exists($req_file))
{
require_once $req_file;
}
}
// Display
$pltitle = array();
if (!empty($path_skin))
{
$t = new XTemplate($path_skin);
}
$empty = true;
if (is_array($cot_plugins[$exthook]))
{
foreach ($cot_plugins[$exthook] as $k)
{
if ($k['pl_code'] == $extname)
{
$out['plu_title'] = $k['pl_title'];
include $cfg['plugins_dir'] . '/' . $k['pl_file'];
$empty = false;
}
}
}
if ($empty)
{
cot_die_message(907, TRUE);
}
if (empty($out['subtitle']))
{
if (empty($L['plu_title']))
{
$L['plu_title'] = $L[$extname . '_title'];
}
$out['subtitle'] = empty($L['plu_title']) ? $out['plu_title'] : $L['plu_title'];
}
$sys['sublocation'] = $out['subtitle'];
if ($ext_display_header)
{
$t_plug = $t;
require_once $cfg['system_dir'] . '/header.php';
$t = $t_plug;
}
if ($autoassigntags)
{
array_unshift($pltitle, array(cot_url('plug', "e=$e"), $out['subtitle']));
if (empty($o))
{
$t->assign(array(
'PLUGIN_TITLE' => cot_breadcrumbs($pltitle, $cfg['homebreadcrumb']),
'PLUGIN_SUBTITLE' => $plugin_subtitle,
'PLUGIN_BODY' => $plugin_body
));
}
else
{
cot_sendheaders();
$t->assign(array(
'POPUP_C1' => $c1,
'POPUP_C2' => $c2,
'POPUP_BODY' => $popup_body
));
}
}
if (is_object($t))
{
$t->parse('MAIN');
$t->out('MAIN');
}
if ($ext_display_header)
{
require_once $cfg['system_dir'] . '/footer.php';
}