Package - MokoSuite Editor
mokosuiteeditor
- 01.00.30
+ 01.00.21
2026-06-21
Moko Consulting
hello@mokoconsulting.tech
diff --git a/source/script.php b/source/script.php
deleted file mode 100644
index 7554afe..0000000
--- a/source/script.php
+++ /dev/null
@@ -1,170 +0,0 @@
-missingChildExtensions($adapter);
-
- if (!empty($missing))
- {
- Factory::getApplication()->enqueueMessage(
- 'MokoSuite Editor did not install correctly.
'
- . 'The following bundled extensions are missing: '
- . htmlspecialchars(implode(', ', $missing), ENT_QUOTES) . '
'
- . 'Please uninstall MokoSuite Editor and reinstall the full package.
',
- 'error'
- );
-
- return;
- }
-
- $this->warnMissingLicenseKey();
- }
-
- /**
- * Verify every child extension declared in the package manifest actually landed
- * in #__extensions. Returns readable labels of any that are missing.
- *
- * Matching per Joomla's #__extensions uniqueness:
- * - type = the "type" attribute
- * - element = the "id" attribute, EXCEPT for plugins the manifest often
- * declares the full plg__ id, so strip a leading
- * plg__ to get the real element; components/modules use id as-is
- * - plugins ALSO match folder = the "group" attribute
- *
- * FAILS OPEN: any error (unreadable manifest, query failure) returns [] so a
- * transient glitch never turns a good install into a false failure.
- */
- private function missingChildExtensions($parent): array
- {
- try
- {
- $manifest = $parent->getParent()->getManifest();
-
- if (!$manifest || !isset($manifest->files) || !isset($manifest->files->file))
- {
- return [];
- }
-
- $db = Factory::getDbo();
- $missing = [];
-
- foreach ($manifest->files->file as $file)
- {
- $attrs = $file->attributes();
- $id = isset($attrs['id']) ? (string) $attrs['id'] : '';
- $exType = isset($attrs['type']) ? (string) $attrs['type'] : '';
-
- if ($id === '' || $exType === '')
- {
- continue;
- }
-
- $group = isset($attrs['group']) ? (string) $attrs['group'] : '';
- $element = $id;
-
- // Plugin element in #__extensions is the id minus any leading plg__.
- if ($exType === 'plugin' && $group !== '')
- {
- $prefix = 'plg_' . $group . '_';
-
- if (strpos($element, $prefix) === 0)
- {
- $element = substr($element, \strlen($prefix));
- }
- }
-
- $query = $db->getQuery(true)
- ->select('COUNT(*)')
- ->from($db->quoteName('#__extensions'))
- ->where($db->quoteName('element') . ' = ' . $db->quote($element))
- ->where($db->quoteName('type') . ' = ' . $db->quote($exType));
-
- if ($exType === 'plugin' && $group !== '')
- {
- $query->where($db->quoteName('folder') . ' = ' . $db->quote($group));
- }
-
- if ((int) $db->setQuery($query)->loadResult() === 0)
- {
- $label = trim((string) $file);
- $missing[] = $label !== '' ? preg_replace('/\.zip$/i', '', $label) : $id;
- }
- }
-
- return $missing;
- }
- catch (\Throwable $e)
- {
- // Fail open β never fake a failure on a glitch.
- return [];
- }
- }
-
- private function warnMissingLicenseKey(): void
- {
- try
- {
- $db = Factory::getDbo();
- $app = Factory::getApplication();
-
- $query = $db->getQuery(true)
- ->select([$db->quoteName('update_site_id'), $db->quoteName('extra_query')])
- ->from($db->quoteName('#__update_sites'))
- ->where('(' . $db->quoteName('name') . ' LIKE ' . $db->quote('%MokoSuiteEditor%')
- . ' OR ' . $db->quoteName('location') . ' LIKE ' . $db->quote('%MokoSuiteEditor%') . ')')
- ->setLimit(1);
- $db->setQuery($query);
- $site = $db->loadObject();
-
- if ($site)
- {
- $extraQuery = (string) ($site->extra_query ?? '');
-
- if (!empty($extraQuery) && strpos($extraQuery, 'dlid=') !== false)
- {
- parse_str($extraQuery, $parsed);
-
- if (!empty($parsed['dlid']))
- {
- return;
- }
- }
-
- $editUrl = 'index.php?option=com_installer&task=updatesite.edit&update_site_id=' . (int) $site->update_site_id;
- }
- else
- {
- $editUrl = 'index.php?option=com_installer&view=updatesites';
- }
-
- $app->enqueueMessage(
- 'Moko Consulting License Key Required β '
- . 'No download key is configured. Updates will not be available until a valid license key is entered. '
- . 'Enter License Key',
- 'warning'
- );
- }
- catch (\Throwable $e)
- {
- // Silent β avoid breaking install if update_sites query fails
- }
- }
-}