plugin.php
2.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<?php
/**
* @copyright Copyright (c) 2009-2020 Ryan Demmer. All rights reserved
* @license GNU/GPL 3 - http://www.gnu.org/copyleft/gpl.html
* JCE is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses
*/
defined('JPATH_PLATFORM') or die;
require_once JPATH_SITE . '/components/com_jce/editor/libraries/classes/application.php';
class JceControllerPlugin extends JControllerLegacy
{
private static $map = array(
'image' => 'imgmanager',
'imagepro' => 'imgmanager_ext'
);
public function execute($task)
{
$wf = WFApplication::getInstance();
// check a valid profile exists
$wf->getProfile() or jexit('Invalid Profile');
// load language files
$language = JFactory::getLanguage();
$language->load('com_jce', JPATH_ADMINISTRATOR);
if (WF_EDITOR_PRO) {
$language->load('com_jce_pro', JPATH_SITE);
}
$plugin = $this->input->get('plugin');
// get plugin name
if (strpos($plugin, '.') !== false) {
list($plugin, $caller) = explode('.', $plugin);
}
// map plugin name to internal / legacy name
if (array_key_exists($plugin, self::$map)) {
$plugin = self::$map[$plugin];
$mapped = $plugin;
if (!empty($caller)) {
$mapped = $plugin . '.' . $caller;
}
$this->input->set('plugin', $mapped);
}
$path = WF_EDITOR_PLUGINS . '/' . $plugin;
if (strpos($plugin, 'editor-') !== false) {
$path = JPATH_PLUGINS . '/jce/' . $plugin;
}
if (!file_exists($path . '/' . $plugin . '.php')) {
throw new InvalidArgumentException(ucfirst($plugin) . '" not found!');
}
include_once $path . '/' . $plugin . '.php';
$className = 'WF' . ucwords($plugin, '_') . 'Plugin';
if (class_exists($className)) {
$instance = new $className();
if (strpos($task, '.') !== false) {
list($name, $task) = explode('.', $task);
}
if ($task === 'display') {
$task = 'execute';
}
// default to execute if task is not available
if (is_callable(array($instance, $task)) === false) {
$task = 'execute';
}
$instance->$task();
}
jexit();
}
}