Back to PluginAdapter class

Method discover

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

Method discover - Source code

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