Back to ComponentAdapter class

Method discover

public array
discover
()
Discover unregistered extensions.
Returns
  • array A list of extensions.
Since
  • 3.1

Method discover - Source code

/**
 * 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;
}