Skip to content

Commit

Permalink
[4.0] Update help TOC and run (#29804)
Browse files Browse the repository at this point in the history
Thanks to @mbabker this PR replaces the existing script to generate the help toc.json file that is used to connect the help button in joomla to the help page on the docs site.

Other than a few comment changes it is the same code that @mbabker posted.

Before this PR then `php build\helpTOC.php` does not work

After applying this PR then it runs successfuly and generates the toc.json file

This PR includes an updated toc.json
  • Loading branch information
brianteeman committed Jun 29, 2020
1 parent 532c662 commit 8aebc3d
Show file tree
Hide file tree
Showing 2 changed files with 96 additions and 69 deletions.
2 changes: 1 addition & 1 deletion administrator/help/en-GB/toc.json
@@ -1 +1 @@
{ "COMPONENTS_ASSOCIATIONS": "COMPONENTS_ASSOCIATIONS", "COMPONENTS_ASSOCIATIONS_EDIT": "COMPONENTS_ASSOCIATIONS_EDIT", "COMPONENTS_BANNERS_BANNERS": "COMPONENTS_BANNERS_BANNERS", "COMPONENTS_BANNERS_BANNERS_EDIT": "COMPONENTS_BANNERS_BANNERS_EDIT", "COMPONENTS_BANNERS_CATEGORIES": "COMPONENTS_BANNERS_CATEGORIES", "COMPONENTS_BANNERS_CATEGORY_EDIT": "COMPONENTS_BANNERS_CATEGORIES_EDIT", "COMPONENTS_BANNERS_CLIENTS": "COMPONENTS_BANNERS_CLIENTS", "COMPONENTS_BANNERS_CLIENTS_EDIT": "COMPONENTS_BANNERS_CLIENTS_EDIT", "COMPONENTS_BANNERS_TRACKS": "COMPONENTS_BANNERS_TRACKS", "COMPONENTS_CONTACTS_CONTACTS": "COMPONENTS_CONTACTS_CONTACTS", "COMPONENTS_CONTACTS_CONTACTS_EDIT": "COMPONENTS_CONTACTS_CONTACTS_EDIT", "COMPONENTS_CONTACT_CATEGORIES": "COMPONENTS_CONTACT_CATEGORIES", "COMPONENTS_CONTACT_CATEGORY_EDIT": "COMPONENTS_CONTACT_CATEGORIES_EDIT", "COMPONENTS_CONTENT_CATEGORIES": "COMPONENTS_CONTENT_CATEGORIES", "COMPONENTS_CONTENT_CATEGORY_EDIT": "COMPONENTS_CONTENT_CATEGORIES_EDIT", "COMPONENTS_FIELDS_FIELDS": "COMPONENTS_FIELDS_FIELDS", "COMPONENTS_FIELDS_FIELDS_EDIT": "COMPONENTS_FIELDS_FIELDS_EDIT", "COMPONENTS_FIELDS_FIELD_GROUPS": "COMPONENTS_FIELDS_FIELD_GROUPS", "COMPONENTS_FIELDS_FIELD_GROUPS_EDIT": "COMPONENTS_FIELDS_FIELD_GROUPS_EDIT", "COMPONENTS_FINDER_MANAGE_CONTENT_MAPS": "COMPONENTS_FINDER_MANAGE_CONTENT_MAPS", "COMPONENTS_FINDER_MANAGE_INDEXED_CONTENT": "COMPONENTS_FINDER_MANAGE_INDEXED_CONTENT", "COMPONENTS_FINDER_MANAGE_SEARCH_FILTERS": "COMPONENTS_FINDER_MANAGE_SEARCH_FILTERS", "COMPONENTS_FINDER_MANAGE_SEARCH_FILTERS_EDIT": "COMPONENTS_FINDER_MANAGE_SEARCH_FILTERS_EDIT", "COMPONENTS_JOOMLA_UPDATE": "COMPONENTS_JOOMLA_UPDATE", "COMPONENTS_MESSAGING_INBOX": "COMPONENTS_MESSAGING_INBOX", "COMPONENTS_MESSAGING_READ": "COMPONENTS_MESSAGING_READ", "COMPONENTS_MESSAGING_WRITE": "COMPONENTS_MESSAGING_WRITE", "COMPONENTS_NEWSFEEDS_CATEGORIES": "COMPONENTS_NEWSFEEDS_CATEGORIES", "COMPONENTS_NEWSFEEDS_CATEGORY_EDIT": "COMPONENTS_NEWSFEEDS_CATEGORIES_EDIT", "COMPONENTS_NEWSFEEDS_FEEDS": "COMPONENTS_NEWSFEEDS_FEEDS", "COMPONENTS_NEWSFEEDS_FEEDS_EDIT": "COMPONENTS_NEWSFEEDS_FEEDS_EDIT", "COMPONENTS_POST_INSTALLATION_MESSAGES": "COMPONENTS_POST_INSTALLATION_MESSAGES", "COMPONENTS_REDIRECT_MANAGER": "COMPONENTS_REDIRECT_MANAGER", "COMPONENTS_REDIRECT_MANAGER_EDIT": "COMPONENTS_REDIRECT_MANAGER_EDIT", "COMPONENTS_SEARCH": "COMPONENTS_SEARCH", "COMPONENTS_TAGS_MANAGER": "COMPONENTS_TAGS_MANAGER", "COMPONENTS_TAGS_MANAGER_EDIT": "COMPONENTS_TAGS_MANAGER_EDIT", "CONTENT_ARTICLE_MANAGER": "CONTENT_ARTICLE_MANAGER", "CONTENT_ARTICLE_MANAGER_EDIT": "CONTENT_ARTICLE_MANAGER_EDIT", "CONTENT_FEATURED_ARTICLES": "CONTENT_FEATURED_ARTICLES", "CONTENT_MEDIA_MANAGER": "CONTENT_MEDIA_MANAGER", "EXTENSIONS_EXTENSION_MANAGER_DATABASE": "EXTENSIONS_EXTENSION_MANAGER_DATABASE", "EXTENSIONS_EXTENSION_MANAGER_DISCOVER": "EXTENSIONS_EXTENSION_MANAGER_DISCOVER", "EXTENSIONS_EXTENSION_MANAGER_INSTALL": "EXTENSIONS_EXTENSION_MANAGER_INSTALL", "EXTENSIONS_EXTENSION_MANAGER_MANAGE": "EXTENSIONS_EXTENSION_MANAGER_MANAGE", "EXTENSIONS_EXTENSION_MANAGER_UPDATE": "EXTENSIONS_EXTENSION_MANAGER_UPDATE", "EXTENSIONS_EXTENSION_MANAGER_WARNINGS": "EXTENSIONS_EXTENSION_MANAGER_WARNINGS", "EXTENSIONS_LANGUAGE_MANAGER_CONTENT": "EXTENSIONS_LANGUAGE_MANAGER_CONTENT", "EXTENSIONS_LANGUAGE_MANAGER_EDIT": "EXTENSIONS_LANGUAGE_MANAGER_EDIT", "EXTENSIONS_LANGUAGE_MANAGER_INSTALLED": "EXTENSIONS_LANGUAGE_MANAGER_INSTALLED", "EXTENSIONS_LANGUAGE_MANAGER_OVERRIDES": "EXTENSIONS_LANGUAGE_MANAGER_OVERRIDES", "EXTENSIONS_LANGUAGE_MANAGER_OVERRIDES_EDIT": "EXTENSIONS_LANGUAGE_MANAGER_OVERRIDES_EDIT", "EXTENSIONS_MODULE_MANAGER": "EXTENSIONS_MODULE_MANAGER", "EXTENSIONS_MODULE_MANAGER_EDIT": "EXTENSIONS_MODULE_MANAGER_EDIT", "EXTENSIONS_PLUGIN_MANAGER": "EXTENSIONS_PLUGIN_MANAGER", "EXTENSIONS_PLUGIN_MANAGER_EDIT": "EXTENSIONS_PLUGIN_MANAGER_EDIT", "EXTENSIONS_TEMPLATE_MANAGER_STYLES": "EXTENSIONS_TEMPLATE_MANAGER_STYLES", "EXTENSIONS_TEMPLATE_MANAGER_STYLES_EDIT": "EXTENSIONS_TEMPLATE_MANAGER_STYLES_EDIT", "EXTENSIONS_TEMPLATE_MANAGER_TEMPLATES": "EXTENSIONS_TEMPLATE_MANAGER_TEMPLATES", "EXTENSIONS_TEMPLATE_MANAGER_TEMPLATES_EDIT": "EXTENSIONS_TEMPLATE_MANAGER_TEMPLATES_EDIT", "EXTENSIONS_TEMPLATE_MANAGER_TEMPLATES_EDIT_SOURCE": "EXTENSIONS_TEMPLATE_MANAGER_TEMPLATES_EDIT_SOURCE", "MENUS_MENU_ITEM_MANAGER": "MENUS_MENU_ITEM_MANAGER", "MENUS_MENU_ITEM_MANAGER_EDIT": "MENUS_MENU_ITEM_MANAGER_EDIT", "MENUS_MENU_MANAGER": "MENUS_MENU_MANAGER", "MENUS_MENU_MANAGER_EDIT": "MENUS_MENU_MANAGER_EDIT", "SITE_GLOBAL_CONFIGURATION": "SITE_GLOBAL_CONFIGURATION", "SITE_MAINTENANCE_CLEAR_CACHE": "SITE_MAINTENANCE_CLEAR_CACHE", "SITE_MAINTENANCE_GLOBAL_CHECK-IN": "SITE_MAINTENANCE_GLOBAL_CHECK-IN", "SITE_MAINTENANCE_PURGE_EXPIRED_CACHE": "SITE_MAINTENANCE_PURGE_EXPIRED_CACHE", "SITE_SYSTEM_INFORMATION": "SITE_SYSTEM_INFORMATION", "START_HERE": "START_HERE", "USERS_ACCESS_LEVELS": "USERS_ACCESS_LEVELS", "USERS_ACCESS_LEVELS_EDIT": "USERS_ACCESS_LEVELS_EDIT", "USERS_DEBUG_USERS": "USERS_DEBUG_USER", "USERS_GROUPS": "USERS_GROUPS", "USERS_GROUPS_EDIT": "USERS_GROUPS_EDIT", "USERS_MASS_MAIL_USERS": "USERS_MASS_MAIL_USERS", "USERS_USER_MANAGER": "USERS_USER_MANAGER", "USERS_USER_MANAGER_EDIT": "USERS_USER_MANAGER_EDIT", "USERS_USER_NOTES": "USERS_USER_NOTES", "USERS_USER_NOTES_EDIT": "USERS_USER_NOTES_EDIT" }
{"COMPONENTS_ACTIONLOGS":"COMPONENTS_ACTIONLOGS","COMPONENTS_ASSOCIATIONS":"COMPONENTS_ASSOCIATIONS","COMPONENTS_ASSOCIATIONS_EDIT":"COMPONENTS_ASSOCIATIONS_EDIT","COMPONENTS_BANNERS_BANNERS":"COMPONENTS_BANNERS_BANNERS","COMPONENTS_BANNERS_BANNERS_EDIT":"COMPONENTS_BANNERS_BANNERS_EDIT","COMPONENTS_BANNERS_CATEGORIES":"COMPONENTS_BANNERS_CATEGORIES","COMPONENTS_BANNERS_CATEGORY_EDIT":"COMPONENTS_BANNERS_CATEGORIES_EDIT","COMPONENTS_BANNERS_CLIENTS":"COMPONENTS_BANNERS_CLIENTS","COMPONENTS_BANNERS_CLIENTS_EDIT":"COMPONENTS_BANNERS_CLIENTS_EDIT","COMPONENTS_BANNERS_TRACKS":"COMPONENTS_BANNERS_TRACKS","COMPONENTS_CONTACTS_CONTACTS":"COMPONENTS_CONTACTS_CONTACTS","COMPONENTS_CONTACTS_CONTACTS_EDIT":"COMPONENTS_CONTACTS_CONTACTS_EDIT","COMPONENTS_CONTACT_CATEGORIES":"COMPONENTS_CONTACT_CATEGORIES","COMPONENTS_CONTACT_CATEGORY_EDIT":"COMPONENTS_CONTACT_CATEGORIES_EDIT","COMPONENTS_CONTENT_CATEGORIES":"COMPONENTS_CONTENT_CATEGORIES","COMPONENTS_CONTENT_CATEGORY_EDIT":"COMPONENTS_CONTENT_CATEGORIES_EDIT","COMPONENTS_FIELDS_FIELDS":"COMPONENTS_FIELDS_FIELDS","COMPONENTS_FIELDS_FIELDS_EDIT":"COMPONENTS_FIELDS_FIELDS_EDIT","COMPONENTS_FIELDS_FIELD_GROUPS":"COMPONENTS_FIELDS_FIELD_GROUPS","COMPONENTS_FIELDS_FIELD_GROUPS_EDIT":"COMPONENTS_FIELDS_FIELD_GROUPS_EDIT","COMPONENTS_FINDER_MANAGE_CONTENT_MAPS":"COMPONENTS_FINDER_MANAGE_CONTENT_MAPS","COMPONENTS_FINDER_MANAGE_INDEXED_CONTENT":"COMPONENTS_FINDER_MANAGE_INDEXED_CONTENT","COMPONENTS_FINDER_MANAGE_SEARCH_FILTERS":"COMPONENTS_FINDER_MANAGE_SEARCH_FILTERS","COMPONENTS_FINDER_MANAGE_SEARCH_FILTERS_EDIT":"COMPONENTS_FINDER_MANAGE_SEARCH_FILTERS_EDIT","COMPONENTS_JOOMLA_UPDATE":"COMPONENTS_JOOMLA_UPDATE","COMPONENTS_MESSAGING_INBOX":"COMPONENTS_MESSAGING_INBOX","COMPONENTS_MESSAGING_READ":"COMPONENTS_MESSAGING_READ","COMPONENTS_MESSAGING_WRITE":"COMPONENTS_MESSAGING_WRITE","COMPONENTS_NEWSFEEDS_CATEGORIES":"COMPONENTS_NEWSFEEDS_CATEGORIES","COMPONENTS_NEWSFEEDS_CATEGORY_EDIT":"COMPONENTS_NEWSFEEDS_CATEGORIES_EDIT","COMPONENTS_NEWSFEEDS_FEEDS":"COMPONENTS_NEWSFEEDS_FEEDS","COMPONENTS_NEWSFEEDS_FEEDS_EDIT":"COMPONENTS_NEWSFEEDS_FEEDS_EDIT","COMPONENTS_POST_INSTALLATION_MESSAGES":"COMPONENTS_POST_INSTALLATION_MESSAGES","COMPONENTS_PRIVACY_CAPABILITIES":"COMPONENTS_PRIVACY_CAPABILITIES","COMPONENTS_PRIVACY_CONSENTS":"COMPONENTS_PRIVACY_CONSENTS","COMPONENTS_PRIVACY_DASHBOARD":"COMPONENTS_PRIVACY_DASHBOARD","COMPONENTS_PRIVACY_REQUEST":"COMPONENTS_PRIVACY_REQUEST","COMPONENTS_PRIVACY_REQUESTS":"COMPONENTS_PRIVACY_REQUESTS","COMPONENTS_PRIVACY_REQUEST_EDIT":"COMPONENTS_PRIVACY_REQUEST_EDIT","COMPONENTS_REDIRECT_MANAGER":"COMPONENTS_REDIRECT_MANAGER","COMPONENTS_REDIRECT_MANAGER_EDIT":"COMPONENTS_REDIRECT_MANAGER_EDIT","COMPONENTS_SEARCH":"COMPONENTS_SEARCH","COMPONENTS_TAGS_MANAGER":"COMPONENTS_TAGS_MANAGER","COMPONENTS_TAGS_MANAGER_EDIT":"COMPONENTS_TAGS_MANAGER_EDIT","CONTENT_ARTICLE_MANAGER":"CONTENT_ARTICLE_MANAGER","CONTENT_ARTICLE_MANAGER_EDIT":"CONTENT_ARTICLE_MANAGER_EDIT","CONTENT_FEATURED_ARTICLES":"CONTENT_FEATURED_ARTICLES","CONTENT_MEDIA_MANAGER":"CONTENT_MEDIA_MANAGER","EXTENSIONS_EXTENSION_MANAGER_DATABASE":"EXTENSIONS_EXTENSION_MANAGER_DATABASE","EXTENSIONS_EXTENSION_MANAGER_DISCOVER":"EXTENSIONS_EXTENSION_MANAGER_DISCOVER","EXTENSIONS_EXTENSION_MANAGER_INSTALL":"EXTENSIONS_EXTENSION_MANAGER_INSTALL","EXTENSIONS_EXTENSION_MANAGER_LANGUAGES":"EXTENSIONS_EXTENSION_MANAGER_LANGUAGES","EXTENSIONS_EXTENSION_MANAGER_MANAGE":"EXTENSIONS_EXTENSION_MANAGER_MANAGE","EXTENSIONS_EXTENSION_MANAGER_UPDATE":"EXTENSIONS_EXTENSION_MANAGER_UPDATE","EXTENSIONS_EXTENSION_MANAGER_WARNINGS":"EXTENSIONS_EXTENSION_MANAGER_WARNINGS","EXTENSIONS_LANGUAGE_MANAGER_CONTENT":"EXTENSIONS_LANGUAGE_MANAGER_CONTENT","EXTENSIONS_LANGUAGE_MANAGER_EDIT":"EXTENSIONS_LANGUAGE_MANAGER_EDIT","EXTENSIONS_LANGUAGE_MANAGER_INSTALLED":"EXTENSIONS_LANGUAGE_MANAGER_INSTALLED","EXTENSIONS_LANGUAGE_MANAGER_OVERRIDES":"EXTENSIONS_LANGUAGE_MANAGER_OVERRIDES","EXTENSIONS_LANGUAGE_MANAGER_OVERRIDES_EDIT":"EXTENSIONS_LANGUAGE_MANAGER_OVERRIDES_EDIT","EXTENSIONS_MODULE_MANAGER":"EXTENSIONS_MODULE_MANAGER","EXTENSIONS_MODULE_MANAGER_EDIT":"EXTENSIONS_MODULE_MANAGER_EDIT","EXTENSIONS_PLUGIN_MANAGER":"EXTENSIONS_PLUGIN_MANAGER","EXTENSIONS_PLUGIN_MANAGER_EDIT":"EXTENSIONS_PLUGIN_MANAGER_EDIT","EXTENSIONS_TEMPLATE_MANAGER_STYLES":"EXTENSIONS_TEMPLATE_MANAGER_STYLES","EXTENSIONS_TEMPLATE_MANAGER_STYLES_EDIT":"EXTENSIONS_TEMPLATE_MANAGER_STYLES_EDIT","EXTENSIONS_TEMPLATE_MANAGER_TEMPLATES":"EXTENSIONS_TEMPLATE_MANAGER_TEMPLATES","EXTENSIONS_TEMPLATE_MANAGER_TEMPLATES_EDIT":"EXTENSIONS_TEMPLATE_MANAGER_TEMPLATES_EDIT","EXTENSIONS_TEMPLATE_MANAGER_TEMPLATES_EDIT_SOURCE":"EXTENSIONS_TEMPLATE_MANAGER_TEMPLATES_EDIT_SOURCE","MENUS_MENU_ITEM_MANAGER":"MENUS_MENU_ITEM_MANAGER","MENUS_MENU_ITEM_MANAGER_EDIT":"MENUS_MENU_ITEM_MANAGER_EDIT","MENUS_MENU_MANAGER":"MENUS_MENU_MANAGER","MENUS_MENU_MANAGER_EDIT":"MENUS_MENU_MANAGER_EDIT","SITE_GLOBAL_CONFIGURATION":"SITE_GLOBAL_CONFIGURATION","SITE_MAINTENANCE_CLEAR_CACHE":"SITE_MAINTENANCE_CLEAR_CACHE","SITE_MAINTENANCE_GLOBAL_CHECK-IN":"SITE_MAINTENANCE_GLOBAL_CHECK-IN","SITE_MAINTENANCE_PURGE_EXPIRED_CACHE":"SITE_MAINTENANCE_PURGE_EXPIRED_CACHE","SITE_SYSTEM_INFORMATION":"SITE_SYSTEM_INFORMATION","START_HERE":"START_HERE","USERS_ACCESS_LEVELS":"USERS_ACCESS_LEVELS","USERS_ACCESS_LEVELS_EDIT":"USERS_ACCESS_LEVELS_EDIT","USERS_DEBUG_USERS":"USERS_DEBUG_USER","USERS_GROUPS":"USERS_GROUPS","USERS_GROUPS_EDIT":"USERS_GROUPS_EDIT","USERS_MASS_MAIL_USERS":"USERS_MASS_MAIL_USERS","USERS_USER_MANAGER":"USERS_USER_MANAGER","USERS_USER_MANAGER_EDIT":"USERS_USER_MANAGER_EDIT","USERS_USER_NOTES":"USERS_USER_NOTES","USERS_USER_NOTES_EDIT":"USERS_USER_NOTES_EDIT"}
163 changes: 95 additions & 68 deletions build/helpTOC.php
Expand Up @@ -6,21 +6,27 @@
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/

// Set flag that this is a parent file.
// We are a valid entry point.
const _JEXEC = 1;

// Import namespaced classes
use Joomla\CMS\Application\CliApplication;
use Joomla\CMS\Factory;
use Joomla\CMS\Http\HttpFactory;
use Joomla\CMS\Version;
use Joomla\Console\Application;
use Joomla\Console\Command\AbstractCommand;
use Joomla\Mediawiki\Http;
use Joomla\Mediawiki\Mediawiki;
use Joomla\Registry\Registry;
use Symfony\Component\Console\Input\ArrayInput;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Style\SymfonyStyle;

// Load system defines
if (file_exists(dirname(__DIR__) . '/defines.php'))
{
require_once dirname(__DIR__) . '/defines.php';
}
/**
* Define the application's minimum supported PHP version as a constant so it can be referenced within the application.
*/
const JOOMLA_MINIMUM_PHP = '7.2.5';

if (!defined('_JDEFINES'))
{
Expand All @@ -29,59 +35,68 @@
}

// Get the framework.
require_once JPATH_LIBRARIES . '/bootstrap.php';

// Configure error reporting to maximum for CLI output.
error_reporting(E_ALL);
ini_set('display_errors', 1);

// Load the admin en-GB.ini language file to get the JHELP language keys
Factory::getLanguage()->load('joomla', JPATH_ADMINISTRATOR, null, false, false);
require_once JPATH_BASE . '/includes/framework.php';

/**
* Utility CLI to retrieve the list of help screens from the docs wiki and create an index for the admin help view.
*
* @since 3.0
*/
class MediawikiCli extends CliApplication
$command = new class extends AbstractCommand
{
/**
* Entry point for CLI script
* The default command name
*
* @var string
*/
protected static $defaultName = 'build-help-toc';

/**
* Initialise the command.
*
* @return void
*/
protected function configure(): void
{
$this->setDescription('Generates the help system table of contents file');
}

/**
* Internal function to execute the command.
*
* @param InputInterface $input The input to inject into the command.
* @param OutputInterface $output The output to inject into the command.
*
* @since 3.0
* @return integer The command exit code
*/
public function doExecute()
protected function doExecute(InputInterface $input, OutputInterface $output): int
{
if (!class_exists(\Joomla\Mediawiki\Http::class))
$io = new SymfonyStyle($input, $output);

if (!class_exists(Http::class))
{
$this->out(
'The `joomla/mediawiki` package is not installed. To use this script, you must run `composer install` to install development'
$io->error(
'The `joomla/mediawiki` package is not installed. To use this script, you must run `composer install` to install development'
. ' dependencies not tracked in this repo.'
);

return;
return 1;
}

// Get the version data for the script
$minorVersion = Version::MAJOR_VERSION . '.' . Version::MINOR_VERSION;
$namespace = 'Help' . str_replace('.', '', $minorVersion) . ':';

// Set up HTTP driver for MediaWiki
$http = new \Joomla\Mediawiki\Http([], HttpFactory::getAvailableDriver());
$http = new Http([], HttpFactory::getAvailableDriver());

// Set up options for JMediawiki
// Set up options for the Mediawiki class
$options = new Registry;
$options->set('api.url', 'https://docs.joomla.org');

$mediawiki = new Joomla\Mediawiki\Mediawiki($options, $http);
$mediawiki = new Mediawiki($options, $http);

$io->comment('Fetching data from docs wiki');

// Get the category members (local hack)
$this->out('Fetching data from docs wiki', true);
$categoryMembers = $mediawiki->categories->getCategoryMembers('Category:Help_screen_' . $minorVersion, null, 'max');
$categoryMembers = $mediawiki->categories->getCategoryMembers(
sprintf('Category:Help_screen_%s.%s', Version::MAJOR_VERSION, Version::MINOR_VERSION),
null,
'max'
);

$members = array();
$members = [];

// Loop through the result objects to get every document
foreach ($categoryMembers->query->categorymembers as $catmembers)
Expand All @@ -95,6 +110,9 @@ public function doExecute()
// Get the language object
$language = Factory::getLanguage();

// Load the admin joomla.ini language file to get the JHELP language keys
$language->load('joomla', JPATH_ADMINISTRATOR, null, false, false);

// Get the language strings via Reflection as the property is protected
$refl = new ReflectionClass($language);
$property = $refl->getProperty('strings');
Expand All @@ -105,12 +123,14 @@ public function doExecute()
* Now we start fancy processing so we can get the language key for the titles
*/

$cleanMembers = array();
$cleanMembers = [];

// Strip the namespace prefix off the titles and replace spaces with underscores
$namespace = sprintf('Help%d.x:', Version::MAJOR_VERSION);

foreach ($members as $member)
{
$cleanMembers[] = str_replace(array($namespace, ' '), array('', '_'), $member);
$cleanMembers[] = str_replace([$namespace, ' '], ['', '_'], $member);
}

// Make sure we only have an array of unique values before continuing
Expand All @@ -120,7 +140,7 @@ public function doExecute()
* Loop through the cleaned up title array and the language strings array to match things up
*/

$matchedMembers = array();
$matchedMembers = [];

foreach ($cleanMembers as $member)
{
Expand All @@ -139,7 +159,7 @@ public function doExecute()
asort($matchedMembers);

// Now we strip off the JHELP_ prefix from the strings to get usable strings for both COM_ADMIN and JHELP
$stripped = array();
$stripped = [];

foreach ($matchedMembers as $member)
{
Expand All @@ -153,23 +173,23 @@ public function doExecute()
// Load the admin com_admin language file
$language->load('com_admin', JPATH_ADMINISTRATOR);

$toc = array();
$toc = [];

foreach ($stripped as $string)
{
// Validate the key exists
$this->out('Validating key COM_ADMIN_HELP_' . $string, true);
$io->comment(sprintf('Validating key COM_ADMIN_HELP_%s', $string));

if ($language->hasKey('COM_ADMIN_HELP_' . $string))
{
$this->out('Adding ' . $string, true);
$io->comment(sprintf('Adding %s', $string));

$toc[$string] = $string;
}
// We check if the string for words in singular/plural form and check again
// We check the string for words in singular/plural form and check again
else
{
$this->out('Inflecting ' . $string, true);
$io->comment(sprintf('Inflecting %s', $string));

if (strpos($string, '_CATEGORIES') !== false)
{
Expand All @@ -195,43 +215,50 @@ public function doExecute()
// Now try to validate the key
if ($inflected !== '')
{
$this->out('Validating key COM_ADMIN_HELP_' . $inflected, true);
$io->comment(sprintf('Validating key COM_ADMIN_HELP_%s', $inflected));

if ($language->hasKey('COM_ADMIN_HELP_' . $inflected))
{
$this->out('Adding ' . $inflected, true);
$io->comment(sprintf('Adding %s', $inflected));

$toc[$string] = $inflected;
}
}
}
}

$this->out('Number of strings: ' . count($toc), true);
$io->comment(sprintf('Number of strings: %d', count($toc)));

// JSON encode the file and write it to JPATH_ADMINISTRATOR/help/en-GB/toc.json
file_put_contents(JPATH_ADMINISTRATOR . '/help/en-GB/toc.json', json_encode($toc));

$this->out('Help Screen TOC written', true);
$io->success('Help Screen TOC written');

return 0;
}
}
};

// Set up the container
Factory::getContainer()->share(
'MediawikiCli',
function (\Joomla\DI\Container $container)
{
return new MediawikiCli(
null,
null,
null,
null,
$container->get(\Joomla\Event\DispatcherInterface::class),
$container
);
},
true
$input = new ArrayInput(
[
'command' => $command::getDefaultName(),
]
);
$app = Factory::getContainer()->get('MediawikiCli');

$app = new class($input) extends Application
{
/**
* Retrieve the application configuration object.
*
* @return Registry
*/
public function getConfig()
{
return $this->config;
}
};
$app->addCommand($command);

// Register the application to the factory
Factory::$application = $app;

$app->execute();

0 comments on commit 8aebc3d

Please sign in to comment.