Back to ModuleAdapter class

Method discover

public array
discover
()
Custom discover method
Returns
  • array Extension list of extensions available
Since
  • 3.1
Class: ModuleAdapter
Project: Joomla

Method discover - Source code

/**
 * Custom discover method
 *
 * @return  array  Extension list of extensions available
 *
 * @since   3.1
 */
public function discover()
{
    $results = array();
    $site_list = Folder::folders(JPATH_SITE . '/modules');
    $admin_list = Folder::folders(JPATH_ADMINISTRATOR . '/modules');
    $site_info = ApplicationHelper::getClientInfo('site', true);
    $admin_info = ApplicationHelper::getClientInfo('administrator', true);
    foreach ($site_list as $module) {
        if (file_exists(JPATH_SITE . "/modules/{$module}/{$module}.xml")) {
            $manifest_details = Installer::parseXMLInstallFile(JPATH_SITE . "/modules/{$module}/{$module}.xml");
            $extension = Table::getInstance('extension');
            $extension->set('type', 'module');
            $extension->set('client_id', $site_info->id);
            $extension->set('element', $module);
            $extension->set('folder', '');
            $extension->set('name', $module);
            $extension->set('state', -1);
            $extension->set('manifest_cache', json_encode($manifest_details));
            $extension->set('params', '{}');
            $results[] = clone $extension;
        }
    }
    foreach ($admin_list as $module) {
        if (file_exists(JPATH_ADMINISTRATOR . "/modules/{$module}/{$module}.xml")) {
            $manifest_details = Installer::parseXMLInstallFile(JPATH_ADMINISTRATOR . "/modules/{$module}/{$module}.xml");
            $extension = Table::getInstance('extension');
            $extension->set('type', 'module');
            $extension->set('client_id', $admin_info->id);
            $extension->set('element', $module);
            $extension->set('folder', '');
            $extension->set('name', $module);
            $extension->set('state', -1);
            $extension->set('manifest_cache', json_encode($manifest_details));
            $extension->set('params', '{}');
            $results[] = clone $extension;
        }
    }
    return $results;
}