install(); } public function install() { $file_name = ACYC_FOLDER.'tables.sql'; $queries = File::getInternalFileContents($file_name); if ($queries === false) { return; } if (is_multisite()) { $currentBlog = get_current_blog_id(); $sites = get_sites(); foreach ($sites as $site) { if (is_object($site)) { $site = get_object_vars($site); } switch_to_blog($site['blog_id']); $this->sampleData($queries); } switch_to_blog($currentBlog); } else { $this->sampleData($queries); } if (file_exists(ACYC_FOLDER.'update.php')) { wp_delete_file(ACYC_FOLDER.'update.php'); } } private function sampleData($queries) { global $wpdb; $prefix = Database::getPrefix(); $tables = str_replace('#__', $prefix, $queries); $tables = explode('CREATE TABLE IF NOT EXISTS', $tables); foreach ($tables as $oneTable) { $oneTable = trim($oneTable); if (empty($oneTable)) { continue; } // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.DirectDatabaseQuery.SchemaChange, WordPress.DB.PreparedSQL.NotPrepared, PluginCheck.Security.DirectDB.UnescapedDBParameter -- DDL schema creation during plugin install, caching and abstraction are not applicable here. $wpdb->query('CREATE TABLE IF NOT EXISTS'.$oneTable); } $this->update(); } public function update() { $configurationClass = ConfigurationClass::getConfiguration(); if (!file_exists(ACYC_FOLDER.'update.php') && $configurationClass->get('installcomplete', 0) != 0) { return; } $updateService = new UpdateService(); $updateService->addPref(); $updateService->updatePref(); $updateService->updateSQL(); $newConfig = new \stdClass(); $newConfig->installcomplete = 1; $configurationClass->save($newConfig); } }