/** * Finalize module install * * @param string $module * @param string $folder * @param string $modulesPath * @param \Pop\Service\Locator $services * @return void */ protected function finalizeInstall($module, $folder, $modulesPath, $services) { // Get module config and module info from config file $config = (include $modulesPath . '/' . $folder . '/config/module.php'); $info = $this->getInfo(file_get_contents($modulesPath . '/' . $folder . '/config/module.php')); $name = key($config); $descName = ''; if (isset($info['name'])) { $descName = $info['name']; } else { if (isset($info['Name'])) { $descName = $info['Name']; } else { if (isset($info['NAME'])) { $descName = $info['NAME']; } else { if (isset($info['module name'])) { $descName = $info['module name']; } else { if (isset($info['Module Name'])) { $descName = $info['Module Name']; } else { if (isset($info['MODULE NAME'])) { $descName = $info['MODULE NAME']; } } } } } } $info['Desc Name'] = $descName; if (isset($info['version'])) { $version = $info['version']; } else { if (isset($info['Version'])) { $version = $info['Version']; } else { if (isset($info['VERSION'])) { $version = $info['VERSION']; } else { $version = 'N/A'; } } } // Get SQL, if exists $sqlType = strtolower(DB_INTERFACE == 'pdo' ? DB_TYPE : DB_INTERFACE); $sqlFile = $modulesPath . '/' . $folder . '/data/' . $name . '.' . $sqlType . '.sql'; if (!file_exists($sqlFile)) { $sqlFile = null; } $tables = null !== $sqlFile ? $this->getTables(file_get_contents($sqlFile)) : []; // Save module in the database $mod = new Table\Modules(['file' => $module, 'folder' => $folder, 'name' => $name, 'prefix' => isset($config[$name]['prefix']) ? $config[$name]['prefix'] : '', 'version' => $version, 'active' => 1, 'order' => (int) Table\Modules::findAll()->count() + 1, 'assets' => serialize(['tables' => $tables, 'info' => $info]), 'installed_on' => date('Y-m-d H:i:s')]); $mod->save(); $this->sendStats($name, $version); // Execute any SQL that came with the module if (null !== $sqlFile) { Db::install($sqlFile, ['database' => DB_NAME, 'username' => DB_USER, 'password' => DB_PASS, 'host' => DB_HOST, 'prefix' => DB_PREFIX, 'type' => DB_TYPE], ucfirst(strtolower(DB_INTERFACE))); } // Run any install functions if (isset($config[$name]) && isset($config[$name]['install']) && !empty($config[$name]['install'])) { call_user_func_array($config[$name]['install'], [$services]); } }