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) . ' AND element = ' . $db->Quote($element); $db->setQuery($query); $id = $db->loadResult(); } $plugin->load($id); // store result self::$plugin[$signature] = $plugin; } } return self::$plugin[$signature]; }