extension.php
3.2 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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
<?php
/**
* @copyright Copyright (c) 2009-2017 Ryan Demmer. All rights reserved
* @license GNU/GPL 2 or later - http://www.gnu.org/licenses/old-licenses/gpl-2.0.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
*/
abstract class WFExtensionHelper
{
protected static $component = array();
protected static $plugin = array();
public static function getComponent($id = null, $option = 'com_jce')
{
if (!isset(self::$component)) {
self::$component = array();
}
$options = array($option);
if (isset($id)) {
$options[] = $id;
}
$signature = serialize($options);
if (!isset(self::$component[$signature])) {
if (defined('JPATH_PLATFORM')) {
// get component table
$component = JTable::getInstance('extension');
if (!$id) {
$id = $component->find(array('type' => 'component', 'element' => $option));
}
$component->load($id);
} else {
// get component table
$component = JTable::getInstance('component');
if ($id) {
$component->load($id);
} else {
$component->loadByOption($option);
}
}
self::$component[$signature] = $component;
}
return self::$component[$signature];
}
public static function getPlugin($id = null, $element = 'jce', $folder = 'editors')
{
if (!isset(self::$plugin)) {
self::$plugin = array();
}
$options = array($element, $folder);
if (isset($id)) {
$options[] = $id;
}
$signature = serialize($options);
if (!isset(self::$plugin[$signature])) {
if (defined('JPATH_PLATFORM')) {
// get component table
$plugin = JTable::getInstance('extension');
if (!$id) {
$id = $plugin->find(array('type' => 'plugin', 'folder' => $folder, 'element' => $element));
}
$plugin->load($id);
// map extension_id to id
$plugin->id = $plugin->extension_id;
// store result
self::$plugin[$signature] = $plugin;
} else {
$plugin = JTable::getInstance('plugin');
if (!$id) {
$db = JFactory::getDBO();
$query = 'SELECT id FROM #__plugins'.' WHERE folder = '.$db->Quote($folder);
if ($element) {
$query .= ' AND element = '.$db->Quote($element);
}
$db->setQuery($query);
$id = $db->loadResult();
}
$plugin->load($id);
// store result
self::$plugin[$signature] = $plugin;
}
}
return self::$plugin[$signature];
}
}