Package - MokoSuite Insight
mokosuitesight
- 01.00.34
+ 01.00.29
2026-06-21
Moko Consulting
hello@mokoconsulting.tech
diff --git a/source/script.php b/source/script.php
deleted file mode 100644
index 58ada2a..0000000
--- a/source/script.php
+++ /dev/null
@@ -1,169 +0,0 @@
-missingChildExtensions($adapter);
-
- if (!empty($missing))
- {
- Factory::getApplication()->enqueueMessage(
- 'MokoSuiteInsight did not install correctly.
'
- . 'The following bundled extensions are missing: '
- . htmlspecialchars(implode(', ', $missing), ENT_QUOTES) . '
'
- . 'Please uninstall MokoSuiteInsight 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 = "type"; element =
- * "id" (for plugins, strip a leading plg__); plugins also match
- * folder = "group".
- *
- * FAILS OPEN: any error returns [] so a transient glitch never fakes a failure.
- */
- private function missingChildExtensions($adapter): array
- {
- try
- {
- $manifest = $adapter->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('%MokoSuiteInsight%')
- . ' OR ' . $db->quoteName('location') . ' LIKE ' . $db->quote('%MokoSuiteInsight%') . ')')
- ->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
- }
- }
-}