/**
* Discover unregistered extensions.
*
* @return array A list of extensions.
*
* @since 3.1
*/
public function discover()
{
$results = array();
$site_components = Folder::folders(JPATH_SITE . '/components');
$admin_components = Folder::folders(JPATH_ADMINISTRATOR . '/components');
$api_components = Folder::folders(JPATH_API . '/components');
foreach ($site_components as $component) {
if (file_exists(JPATH_SITE . '/components/' . $component . '/' . str_replace('com_', '', $component) . '.xml')) {
$manifest_details = Installer::parseXMLInstallFile(JPATH_SITE . '/components/' . $component . '/' . str_replace('com_', '', $component) . '.xml');
$extension = Table::getInstance('extension');
$extension->set('type', 'component');
$extension->set('client_id', 0);
$extension->set('element', $component);
$extension->set('folder', '');
$extension->set('name', $component);
$extension->set('state', -1);
$extension->set('manifest_cache', json_encode($manifest_details));
$extension->set('params', '{}');
$results[] = $extension;
}
}
foreach ($admin_components as $component) {
if (file_exists(JPATH_ADMINISTRATOR . '/components/' . $component . '/' . str_replace('com_', '', $component) . '.xml')) {
$manifest_details = Installer::parseXMLInstallFile(JPATH_ADMINISTRATOR . '/components/' . $component . '/' . str_replace('com_', '', $component) . '.xml');
$extension = Table::getInstance('extension');
$extension->set('type', 'component');
$extension->set('client_id', 1);
$extension->set('element', $component);
$extension->set('folder', '');
$extension->set('name', $component);
$extension->set('state', -1);
$extension->set('manifest_cache', json_encode($manifest_details));
$extension->set('params', '{}');
$results[] = $extension;
}
}
foreach ($api_components as $component) {
if (file_exists(JPATH_API . '/components/' . $component . '/' . str_replace('com_', '', $component) . '.xml')) {
$manifest_details = Installer::parseXMLInstallFile(JPATH_API . '/components/' . $component . '/' . str_replace('com_', '', $component) . '.xml');
$extension = Table::getInstance('extension');
$extension->set('type', 'component');
$extension->set('client_id', 3);
$extension->set('element', $component);
$extension->set('folder', '');
$extension->set('name', $component);
$extension->set('state', -1);
$extension->set('manifest_cache', json_encode($manifest_details));
$extension->set('params', '{}');
$results[] = $extension;
}
}
return $results;
}