minimumPhp, '<')) { Log::add( 'MokoJoomStoreLocator requires PHP ' . $this->minimumPhp . ' or later.', Log::WARNING, 'jerror' ); return false; } if (version_compare(JVERSION, $this->minimumJoomla, '<')) { Log::add( 'MokoJoomStoreLocator requires Joomla ' . $this->minimumJoomla . ' or later.', Log::WARNING, 'jerror' ); return false; } return true; } /** * Called after installation. * * @param string $type Installation type. * @param InstallerAdapter $parent The parent installer object. * * @return boolean True on success. * * @since 1.0.0 */ public function postflight($type, $parent) { if ($type === 'install') { $this->enableModules(); } return true; } /** * Called on uninstallation. * * @param InstallerAdapter $parent The parent installer object. * * @return void * * @since 1.0.0 */ public function uninstall($parent) { Log::add('MokoJoomStoreLocator package uninstalled.', Log::INFO, 'jerror'); } /** * Enable the bundled modules after first install. * * @return void * * @since 1.0.0 */ private function enableModules(): void { $db = Factory::getContainer()->get(\Joomla\Database\DatabaseInterface::class); $modules = [ 'mod_mokojoomstorelocator_map', 'mod_mokojoomstorelocator_search', ]; foreach ($modules as $module) { $query = $db->getQuery(true) ->update($db->quoteName('#__extensions')) ->set($db->quoteName('enabled') . ' = 1') ->where($db->quoteName('element') . ' = :element') ->where($db->quoteName('type') . ' = ' . $db->quote('module')) ->bind(':element', $module); $db->setQuery($query); try { $db->execute(); } catch (\Exception $e) { Log::add('Failed to enable ' . $module . ': ' . $e->getMessage(), Log::WARNING, 'jerror'); } } } }