Back to LanguageAdapter class

Method discover

public \Joomla\CMS\Table\Extension[]
discover
()
Custom discover method Finds language files
Returns
  • \Joomla\CMS\Table\Extension[] Array of discovered extensions.
Since
  • 3.1

Method discover - Source code

/**
 * Custom discover method
 * Finds language files
 *
 * @return  \Joomla\CMS\Table\Extension[]  Array of discovered extensions.
 *
 * @since  3.1
 */
public function discover()
{
    $results = [];
    $clients = [0 => JPATH_SITE, 1 => JPATH_ADMINISTRATOR, 3 => JPATH_API];
    foreach ($clients as $clientId => $basePath) {
        $languages = Folder::folders($basePath . '/language');
        foreach ($languages as $language) {
            $manifestfile = $basePath . '/language/' . $language . '/langmetadata.xml';
            if (!is_file($manifestfile)) {
                $manifestfile = $basePath . '/language/' . $language . '/' . $language . '.xml';
                if (!is_file($manifestfile)) {
                    continue;
                }
            }
            $manifest_details = Installer::parseXMLInstallFile($manifestfile);
            $extension = Table::getInstance('extension');
            $extension->set('type', 'language');
            $extension->set('client_id', $clientId);
            $extension->set('element', $language);
            $extension->set('folder', '');
            $extension->set('name', $language);
            $extension->set('state', -1);
            $extension->set('manifest_cache', json_encode($manifest_details));
            $extension->set('params', '{}');
            $results[] = $extension;
        }
    }
    return $results;
}