/**
* Discover existing but uninstalled templates
*
* @return array Extension list
*/
public function discover()
{
$results = array();
$site_list = Folder::folders(JPATH_SITE . '/templates');
$admin_list = Folder::folders(JPATH_ADMINISTRATOR . '/templates');
$site_info = ApplicationHelper::getClientInfo('site', true);
$admin_info = ApplicationHelper::getClientInfo('administrator', true);
foreach ($site_list as $template) {
if (file_exists(JPATH_SITE . "/templates/{$template}/templateDetails.xml")) {
if ($template === 'system') {
// Ignore special system template
continue;
}
$manifest_details = Installer::parseXMLInstallFile(JPATH_SITE . "/templates/{$template}/templateDetails.xml");
$extension = Table::getInstance('extension');
$extension->set('type', 'template');
$extension->set('client_id', $site_info->id);
$extension->set('element', $template);
$extension->set('folder', '');
$extension->set('name', $template);
$extension->set('state', -1);
$extension->set('manifest_cache', json_encode($manifest_details));
$extension->set('params', '{}');
$results[] = $extension;
}
}
foreach ($admin_list as $template) {
if (file_exists(JPATH_ADMINISTRATOR . "/templates/{$template}/templateDetails.xml")) {
if ($template === 'system') {
// Ignore special system template
continue;
}
$manifest_details = Installer::parseXMLInstallFile(JPATH_ADMINISTRATOR . "/templates/{$template}/templateDetails.xml");
$extension = Table::getInstance('extension');
$extension->set('type', 'template');
$extension->set('client_id', $admin_info->id);
$extension->set('element', $template);
$extension->set('folder', '');
$extension->set('name', $template);
$extension->set('state', -1);
$extension->set('manifest_cache', json_encode($manifest_details));
$extension->set('params', '{}');
$results[] = $extension;
}
}
return $results;
}