/**
* Custom discover method
*
* @return array Extension) list of extensions available
*
* @since 3.1
*/
public function discover()
{
$results = array();
$folder_list = Folder::folders(JPATH_SITE . '/plugins');
foreach ($folder_list as $folder) {
$file_list = Folder::files(JPATH_SITE . '/plugins/' . $folder, '\\.xml$');
foreach ($file_list as $file) {
$manifest_details = Installer::parseXMLInstallFile(JPATH_SITE . '/plugins/' . $folder . '/' . $file);
$file = File::stripExt($file);
// Ignore example plugins
if ($file === 'example' || $manifest_details === false) {
continue;
}
$element = empty($manifest_details['filename']) ? $file : $manifest_details['filename'];
$extension = Table::getInstance('extension');
$extension->set('type', 'plugin');
$extension->set('client_id', 0);
$extension->set('element', $element);
$extension->set('folder', $folder);
$extension->set('name', $manifest_details['name']);
$extension->set('state', -1);
$extension->set('manifest_cache', json_encode($manifest_details));
$extension->set('params', '{}');
$results[] = $extension;
}
$folder_list = Folder::folders(JPATH_SITE . '/plugins/' . $folder);
foreach ($folder_list as $plugin_folder) {
$file_list = Folder::files(JPATH_SITE . '/plugins/' . $folder . '/' . $plugin_folder, '\\.xml$');
foreach ($file_list as $file) {
$manifest_details = Installer::parseXMLInstallFile(JPATH_SITE . '/plugins/' . $folder . '/' . $plugin_folder . '/' . $file);
$file = File::stripExt($file);
if ($file === 'example' || $manifest_details === false) {
continue;
}
$element = empty($manifest_details['filename']) ? $file : $manifest_details['filename'];
// Ignore example plugins
$extension = Table::getInstance('extension');
$extension->set('type', 'plugin');
$extension->set('client_id', 0);
$extension->set('element', $element);
$extension->set('folder', $folder);
$extension->set('name', $manifest_details['name']);
$extension->set('state', -1);
$extension->set('manifest_cache', json_encode($manifest_details));
$extension->set('params', '{}');
$results[] = $extension;
}
}
}
return $results;
}